appproject-framework 1.0.10 → 1.0.12

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.
@@ -8,18 +8,20 @@ import * as i1$1 from '@angular/common/http';
8
8
  import { HttpHeaders } from '@angular/common/http';
9
9
  import * as i1$2 from '@angular/router';
10
10
  import { BehaviorSubject, filter, Subject, debounceTime, switchMap, of, Observable } from 'rxjs';
11
- import * as i2 from '@ionic/angular/standalone';
12
- import { IonButton, IonIcon, IonItem, IonLabel, IonInput, ModalController, IonContent, IonButtons, IonTitle, IonToolbar, IonHeader, IonList, IonSpinner, IonTextarea, IonCheckbox, IonSelect, IonSelectOption, IonRadio, IonCol, IonRow, IonRadioGroup, IonListHeader } from '@ionic/angular/standalone';
11
+ import * as i2 from '@ionic/angular';
12
+ import { IonButton, IonIcon, IonItem, IonLabel, IonInput, ModalController, IonContent, IonButtons, IonTitle, IonToolbar, IonHeader, IonList, IonSpinner, IonTextarea, IonCheckbox, IonSelect, IonSelectOption, IonRadio, IonCol, IonRow, IonRadioGroup, IonListHeader } from '@ionic/angular';
13
13
  import { NgClass, DatePipe, DecimalPipe } from '@angular/common';
14
14
  import { ClassicEditor, AccessibilityHelp, Alignment, Autoformat, AutoImage, AutoLink, Autosave, BlockQuote, Bold, CloudServices, Code, CodeBlock, Essentials, FindAndReplace, FontBackgroundColor, FontColor, FontFamily, FontSize, GeneralHtmlSupport, Heading, Highlight, HorizontalLine, ImageBlock, ImageCaption, ImageInline, ImageInsertViaUrl, ImageResize, ImageStyle, ImageTextAlternative, ImageToolbar, ImageUpload, Indent, IndentBlock, Italic, Link, LinkImage, List, ListProperties, MediaEmbed, Paragraph, PasteFromOffice, RemoveFormat, SelectAll, SpecialCharacters, SpecialCharactersArrows, SpecialCharactersCurrency, SpecialCharactersEssentials, SpecialCharactersLatin, SpecialCharactersMathematical, SpecialCharactersText, Strikethrough, Style, Subscript, Superscript, Table, TableCaption, TableCellProperties, TableColumnResize, TableProperties, TableToolbar, TextTransformation, TodoList, Underline, Undo } from 'ckeditor5';
15
15
  import * as i1$4 from '@ckeditor/ckeditor5-angular';
16
16
  import { CKEditorModule } from '@ckeditor/ckeditor5-angular';
17
+ import { addIcons } from 'ionicons';
18
+ import { chevronForwardOutline, chevronBackOutline } from 'ionicons/icons';
17
19
 
18
20
  class AppprojectFramework {
19
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AppprojectFramework, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: AppprojectFramework, isStandalone: true, selector: "kb-appproject-framework", ngImport: i0, template: ` <p>appproject-framework works!</p> `, isInline: true, styles: [""] });
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AppprojectFramework, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: AppprojectFramework, isStandalone: true, selector: "kb-appproject-framework", ngImport: i0, template: ` <p>appproject-framework works!</p> `, isInline: true, styles: [""] });
21
23
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: AppprojectFramework, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AppprojectFramework, decorators: [{
23
25
  type: Component,
24
26
  args: [{ selector: 'kb-appproject-framework', imports: [], template: ` <p>appproject-framework works!</p> ` }]
25
27
  }] });
@@ -81,10 +83,10 @@ class LibService {
81
83
  else
82
84
  return null;
83
85
  }
84
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LibService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
85
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LibService, providedIn: 'root' });
86
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LibService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
87
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LibService, providedIn: 'root' });
86
88
  }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: LibService, decorators: [{
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LibService, decorators: [{
88
90
  type: Injectable,
89
91
  args: [{
90
92
  providedIn: 'root'
@@ -621,10 +623,10 @@ class NomePipe {
621
623
  return "";
622
624
  return value.split(' ')[0];
623
625
  }
624
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NomePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
625
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: NomePipe, isStandalone: true, name: "nome" });
626
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NomePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
627
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.4", ngImport: i0, type: NomePipe, isStandalone: true, name: "nome" });
626
628
  }
627
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: NomePipe, decorators: [{
629
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NomePipe, decorators: [{
628
630
  type: Pipe,
629
631
  args: [{
630
632
  name: 'nome',
@@ -650,10 +652,10 @@ class ValorFormatPipe {
650
652
  }
651
653
  return null;
652
654
  }
653
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ValorFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
654
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: ValorFormatPipe, isStandalone: true, name: "valorFormat" });
655
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ValorFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
656
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.4", ngImport: i0, type: ValorFormatPipe, isStandalone: true, name: "valorFormat" });
655
657
  }
656
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ValorFormatPipe, decorators: [{
658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ValorFormatPipe, decorators: [{
657
659
  type: Pipe,
658
660
  args: [{
659
661
  name: 'valorFormat',
@@ -669,10 +671,10 @@ class SafeHtmlPipe {
669
671
  transform(value, ...args) {
670
672
  return this.sanitized.bypassSecurityTrustHtml(value);
671
673
  }
672
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
673
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: SafeHtmlPipe, isStandalone: true, name: "safeHtml" });
674
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
675
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.4", ngImport: i0, type: SafeHtmlPipe, isStandalone: true, name: "safeHtml" });
674
676
  }
675
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: SafeHtmlPipe, decorators: [{
677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SafeHtmlPipe, decorators: [{
676
678
  type: Pipe,
677
679
  args: [{
678
680
  name: 'safeHtml',
@@ -1351,6 +1353,26 @@ class UtilsGeralService {
1351
1353
  });
1352
1354
  //console.log('getFormValues', entity);
1353
1355
  }
1356
+ getFormValidationErrors(form, messages) {
1357
+ let result = [];
1358
+ Object.keys(form.controls).forEach(key => {
1359
+ const controlErrors = form.get(key)?.errors;
1360
+ if (controlErrors != null) {
1361
+ Object.keys(controlErrors).forEach(keyError => {
1362
+ //console.log('Key control: ' + key + ', keyError: ' + keyError + ', err value: ', controlErrors[keyError]);
1363
+ if (messages[key]) {
1364
+ messages[key].forEach((msg) => {
1365
+ if (msg['type'] == keyError) {
1366
+ console.log(msg['message']);
1367
+ result.push(msg['message']);
1368
+ }
1369
+ });
1370
+ }
1371
+ });
1372
+ }
1373
+ });
1374
+ return result;
1375
+ }
1354
1376
  //data hora
1355
1377
  converterDataFromDB(data) {
1356
1378
  if (this.isEmpty(data))
@@ -1512,10 +1534,10 @@ class UtilsGeralService {
1512
1534
  return this.extractError(error);
1513
1535
  }
1514
1536
  }
1515
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: UtilsGeralService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1516
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: UtilsGeralService, providedIn: 'root' });
1537
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: UtilsGeralService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1538
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: UtilsGeralService, providedIn: 'root' });
1517
1539
  }
1518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: UtilsGeralService, decorators: [{
1540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: UtilsGeralService, decorators: [{
1519
1541
  type: Injectable,
1520
1542
  args: [{
1521
1543
  providedIn: 'root'
@@ -1672,10 +1694,10 @@ class UtilsService {
1672
1694
  });
1673
1695
  console.log('getFormValues', entity);
1674
1696
  }
1675
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1676
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: UtilsService, providedIn: 'root' });
1697
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1698
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: UtilsService, providedIn: 'root' });
1677
1699
  }
1678
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: UtilsService, decorators: [{
1700
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: UtilsService, decorators: [{
1679
1701
  type: Injectable,
1680
1702
  args: [{
1681
1703
  providedIn: 'root'
@@ -1806,10 +1828,10 @@ class DataService {
1806
1828
  return this.httpClient.delete(`${this.BASE_API}/${url}`);
1807
1829
  }
1808
1830
  }
1809
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DataService, deps: [{ token: LibConfigService }, { token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
1810
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DataService, providedIn: 'root' });
1831
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DataService, deps: [{ token: LibConfigService }, { token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
1832
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DataService, providedIn: 'root' });
1811
1833
  }
1812
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DataService, decorators: [{
1834
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DataService, decorators: [{
1813
1835
  type: Injectable,
1814
1836
  args: [{
1815
1837
  providedIn: 'root'
@@ -1882,10 +1904,10 @@ class BasePage {
1882
1904
  return extractError(error);
1883
1905
  }
1884
1906
  }
1885
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BasePage, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component });
1886
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: BasePage, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true });
1907
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BasePage, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component });
1908
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: BasePage, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true });
1887
1909
  }
1888
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BasePage, decorators: [{
1910
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BasePage, decorators: [{
1889
1911
  type: Component,
1890
1912
  args: [{
1891
1913
  template: ''
@@ -1898,10 +1920,10 @@ class CadastroService {
1898
1920
  novoMaster = new BehaviorSubject({ Cadastro: 'Cadastro', Id: 0 });
1899
1921
  novoRegistro = new BehaviorSubject({ Cadastro: 'Cadastro', Id: 0 });
1900
1922
  focoCampo = new BehaviorSubject({ Campo: 'input' });
1901
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: CadastroService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1902
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: CadastroService, providedIn: 'root' });
1923
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: CadastroService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1924
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: CadastroService, providedIn: 'root' });
1903
1925
  }
1904
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: CadastroService, decorators: [{
1926
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: CadastroService, decorators: [{
1905
1927
  type: Injectable,
1906
1928
  args: [{
1907
1929
  providedIn: 'root'
@@ -1922,6 +1944,10 @@ class BaseCadastro extends BasePage {
1922
1944
  salvando = false;
1923
1945
  cadastroServiceBase;
1924
1946
  novoAfterDelete = true;
1947
+ /**
1948
+ * Exibir alert com erros de validação
1949
+ */
1950
+ mostrarValidacao = false;
1925
1951
  //emiter para teste
1926
1952
  entidadePosted = new EventEmitter();
1927
1953
  //construtor
@@ -2028,8 +2054,20 @@ class BaseCadastro extends BasePage {
2028
2054
  }
2029
2055
  afterPesquisaEntidade() {
2030
2056
  }
2031
- validarRegistro() {
2032
- return true;
2057
+ async validarRegistro() {
2058
+ if (this.mostrarValidacao) {
2059
+ if (!this.entidadeForm.valid) {
2060
+ const mensagens = this.getFormValidationErrors(this.entidadeForm, this.validation_messages);
2061
+ const valid = await this.alertsBase.showConfirmPromise('Erro...', `Por favor, verifique o formulário.<br>${mensagens.join('<br>')}`, 'Continuar', 'Cancelar');
2062
+ return valid;
2063
+ }
2064
+ else {
2065
+ return true;
2066
+ }
2067
+ }
2068
+ else {
2069
+ return true;
2070
+ }
2033
2071
  }
2034
2072
  ngOnInit() {
2035
2073
  super.ngOnInit();
@@ -2371,10 +2409,30 @@ class BaseCadastro extends BasePage {
2371
2409
  });
2372
2410
  console.log('getFormValues', entity);
2373
2411
  }
2374
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseCadastro, deps: [{ token: 'type' }, { token: i1$2.ActivatedRoute }, { token: i1$2.Router }, { token: CadastroService }], target: i0.ɵɵFactoryTarget.Component });
2375
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: BaseCadastro, isStandalone: true, selector: "ng-component", inputs: { itensLista: "itensLista", masterId: "masterId" }, outputs: { entidadePosted: "entidadePosted", atualizarItensEvent: "atualizarItensEvent" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
2412
+ getFormValidationErrors(form, messages) {
2413
+ let result = [];
2414
+ Object.keys(form.controls).forEach(key => {
2415
+ const controlErrors = form.get(key)?.errors;
2416
+ if (controlErrors != null) {
2417
+ Object.keys(controlErrors).forEach(keyError => {
2418
+ //console.log('Key control: ' + key + ', keyError: ' + keyError + ', err value: ', controlErrors[keyError]);
2419
+ if (messages[key]) {
2420
+ messages[key].forEach((msg) => {
2421
+ if (msg['type'] == keyError) {
2422
+ console.log(msg['message']);
2423
+ result.push(msg['message']);
2424
+ }
2425
+ });
2426
+ }
2427
+ });
2428
+ }
2429
+ });
2430
+ return result;
2431
+ }
2432
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BaseCadastro, deps: [{ token: 'type' }, { token: i1$2.ActivatedRoute }, { token: i1$2.Router }, { token: CadastroService }], target: i0.ɵɵFactoryTarget.Component });
2433
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: BaseCadastro, isStandalone: true, selector: "ng-component", inputs: { itensLista: "itensLista", masterId: "masterId" }, outputs: { entidadePosted: "entidadePosted", atualizarItensEvent: "atualizarItensEvent" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
2376
2434
  }
2377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseCadastro, decorators: [{
2435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BaseCadastro, decorators: [{
2378
2436
  type: Component,
2379
2437
  args: [{
2380
2438
  template: ''
@@ -2466,10 +2524,10 @@ class BaseInputComponent {
2466
2524
  this.Obrigatorio = this.validation_messages.find(m => m.type == 'required');
2467
2525
  }
2468
2526
  }
2469
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2470
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: BaseInputComponent, isStandalone: true, selector: "ng-component", inputs: { label: "label", tabindex: "tabindex", labelPosition: "labelPosition", validationClass: "validationClass", debounce: "debounce", placeholder: "placeholder", form: "form", campo: "campo", formControlName: "formControlName", max: "max", validation_messages: "validation_messages", type: "type", readonly: "readonly", itemClass: "itemClass", botaoLimpar: "botaoLimpar", labelColor: "labelColor", inputBackgroungColor: "inputBackgroungColor", showObrigatorio: "showObrigatorio", fontSize: "fontSize", icon: "icon", iconSrc: "iconSrc", fill: "fill", mode: "mode", classic: "classic", blurArgs: "blurArgs", showSeeCopy: "showSeeCopy", focusField: "focusField", campoFoco: "campoFoco", shape: "shape" }, outputs: { blur: "blur" }, ngImport: i0, template: '', isInline: true });
2527
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BaseInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2528
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: BaseInputComponent, isStandalone: true, selector: "ng-component", inputs: { label: "label", tabindex: "tabindex", labelPosition: "labelPosition", validationClass: "validationClass", debounce: "debounce", placeholder: "placeholder", form: "form", campo: "campo", formControlName: "formControlName", max: "max", validation_messages: "validation_messages", type: "type", readonly: "readonly", itemClass: "itemClass", botaoLimpar: "botaoLimpar", labelColor: "labelColor", inputBackgroungColor: "inputBackgroungColor", showObrigatorio: "showObrigatorio", fontSize: "fontSize", icon: "icon", iconSrc: "iconSrc", fill: "fill", mode: "mode", classic: "classic", blurArgs: "blurArgs", showSeeCopy: "showSeeCopy", focusField: "focusField", campoFoco: "campoFoco", shape: "shape" }, outputs: { blur: "blur" }, ngImport: i0, template: '', isInline: true });
2471
2529
  }
2472
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseInputComponent, decorators: [{
2530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BaseInputComponent, decorators: [{
2473
2531
  type: Component,
2474
2532
  args: [{
2475
2533
  template: ''
@@ -2639,16 +2697,16 @@ class InputTextComponent extends BaseInputComponent {
2639
2697
  navigator.clipboard.writeText(texto);
2640
2698
  //this.utils.showToast('Copiado')
2641
2699
  }
2642
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputTextComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2643
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputTextComponent, isStandalone: true, selector: "kb-input-text", inputs: { showSeePassword: "showSeePassword" }, outputs: { inputChange: "inputChange" }, providers: [
2700
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputTextComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2701
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputTextComponent, isStandalone: true, selector: "kb-input-text", inputs: { showSeePassword: "showSeePassword" }, outputs: { inputChange: "inputChange" }, providers: [
2644
2702
  {
2645
2703
  provide: NG_VALUE_ACCESSOR,
2646
2704
  useExisting: InputTextComponent,
2647
2705
  multi: true,
2648
2706
  },
2649
- ], viewQueries: [{ propertyName: "itemInput", first: true, predicate: ["itemInput"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<!-- \n se label position = floating colocar padding = 12px \n \n -->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n <!-- [label]=\"label\"\n [labelPlacement]=\"labelPosition\" -->\n @if(classic) {\n <ion-item #itemInput lines=\"none\"\n style=\" --background: inherited; --background-focused: transparent; padding-right: 0px;\"\n [class]=\"itemClass + ' classic'\"\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n\n <!--\n <ion-label class=\"label-focus\" [position]=\"labelPosition\">{{ label }}</ion-label>\n -->\n @if (label) {\n <ion-label style=\"color: var(--input-label-color);\" position=\"{{ labelPosition }}\">{{ label }}</ion-label>\n }\n\n <!-- \n <ion-icon slot=\"start\" name=\"lock-closed\" aria-hidden=\"true\"></ion-icon>\n -->\n\n <ion-input #inputText [type]=\"type\" [placeholder]=\"placeholder\" [readonly]=\"readonly\" \n (input)=\"writeValue(inputText.value, type)\" [value]=\"data\" (ionBlur)=\"onBlur()\" (ionFocus)=\"entered()\">\n </ion-input>\n\n\n @if (showSeePassword) {\n\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\n (click)=\"changeTypeOfInput()\">\n <ion-icon slot=\"icon-only\" [icon]=\"type == 'password' ? 'eye-outline' : 'eye-off-outline' \"></ion-icon>\n </ion-button>\n\n }\n\n @if (showSeeCopy) {\n\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\" (click)=\"copiarClick()\">\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\n </ion-button>\n\n }\n\n\n </ion-item>\n }\n @else {\n <ion-input #inputText [type]=\"type\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\n [placeholder]=\"placeholder\" class=\"modern\" maxlength=\"{{ max }}\" \n [value]=\"data\" mode=\"md\"\n (input)=\"writeValue(inputText.value, type)\" \n (ionInput)=\"onInputChange($event)\" \n (ionBlur)=\"onBlur()\" \n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake-modern' : '' \"\n [disabled]=\"readonly\" [shape]=\"shape\">\n @if (icon || iconSrc) {\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\n }\n\n @if (showSeePassword) {\n\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\n (click)=\"changeTypeOfInput()\">\n <ion-icon slot=\"icon-only\" [icon]=\"type == 'password' ? 'eye-outline' : 'eye-off-outline' \"></ion-icon>\n </ion-button>\n\n }\n\n @if (showSeeCopy) {\n\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\" (click)=\"copiarClick()\">\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\n </ion-button>\n\n }\n </ion-input>\n }\n\n @if(form) {\n <div class=\"validation-errors\">\n\n @for(validation of validation_messages; track validation.type) {\n <ng-container>\n @if(form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\" [ngClass]=\"validationClass\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n\n </div>\n }\n\n</div>", styles: [".classic .btn-show-password{margin-top:auto;margin-bottom:calc((var(--input-min-height, 30px) - 30px) * .57142857 + 2px);margin-left:4px}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.Eager });
2707
+ ], viewQueries: [{ propertyName: "itemInput", first: true, predicate: ["itemInput"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<!-- \n se label position = floating colocar padding = 12px \n \n -->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n <!-- [label]=\"label\"\n [labelPlacement]=\"labelPosition\" -->\n @if(classic) {\n <ion-item #itemInput lines=\"none\"\n style=\" --background: inherited; --background-focused: transparent; padding-right: 0px;\"\n [class]=\"itemClass + ' classic'\"\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n\n <!--\n <ion-label class=\"label-focus\" [position]=\"labelPosition\">{{ label }}</ion-label>\n -->\n @if (label) {\n <ion-label style=\"color: var(--input-label-color);\" position=\"{{ labelPosition }}\">{{ label }}</ion-label>\n }\n\n <!-- \n <ion-icon slot=\"start\" name=\"lock-closed\" aria-hidden=\"true\"></ion-icon>\n -->\n\n <ion-input #inputText [type]=\"type\" [placeholder]=\"placeholder\" [readonly]=\"readonly\" \n (input)=\"writeValue(inputText.value, type)\" [value]=\"data\" (ionBlur)=\"onBlur()\" (ionFocus)=\"entered()\">\n </ion-input>\n\n\n @if (showSeePassword) {\n\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\n (click)=\"changeTypeOfInput()\">\n <ion-icon slot=\"icon-only\" [icon]=\"type == 'password' ? 'eye-outline' : 'eye-off-outline' \"></ion-icon>\n </ion-button>\n\n }\n\n @if (showSeeCopy) {\n\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\" (click)=\"copiarClick()\">\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\n </ion-button>\n\n }\n\n\n </ion-item>\n }\n @else {\n <ion-input #inputText [type]=\"type\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\n [placeholder]=\"placeholder\" class=\"modern\" maxlength=\"{{ max }}\" \n [value]=\"data\" mode=\"md\"\n (input)=\"writeValue(inputText.value, type)\" \n (ionInput)=\"onInputChange($event)\" \n (ionBlur)=\"onBlur()\" \n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake-modern' : '' \"\n [disabled]=\"readonly\" [shape]=\"shape\">\n @if (icon || iconSrc) {\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\n }\n\n @if (showSeePassword) {\n\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\n (click)=\"changeTypeOfInput()\">\n <ion-icon slot=\"icon-only\" [icon]=\"type == 'password' ? 'eye-outline' : 'eye-off-outline' \"></ion-icon>\n </ion-button>\n\n }\n\n @if (showSeeCopy) {\n\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\" (click)=\"copiarClick()\">\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\n </ion-button>\n\n }\n </ion-input>\n }\n\n @if(form) {\n <div class=\"validation-errors\">\n\n @for(validation of validation_messages; track validation.type) {\n <ng-container>\n @if(form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\" [ngClass]=\"validationClass\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n\n </div>\n }\n\n</div>", styles: [".classic .btn-show-password{margin-top:auto;margin-bottom:calc((var(--input-min-height, 30px) - 30px) * .57142857 + 2px);margin-left:4px}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.Eager });
2650
2708
  }
2651
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputTextComponent, decorators: [{
2709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputTextComponent, decorators: [{
2652
2710
  type: Component,
2653
2711
  args: [{ selector: 'kb-input-text', imports: [IonButton, IonIcon, IonItem, IonLabel, IonInput, NgClass, FormsModule], changeDetection: ChangeDetectionStrategy.Eager, providers: [
2654
2712
  {
@@ -2699,10 +2757,10 @@ class TreeViewNivelComponent {
2699
2757
  return texto;
2700
2758
  }
2701
2759
  }
2702
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: TreeViewNivelComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2703
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: TreeViewNivelComponent, isStandalone: true, selector: "kb-tree-view-nivel", inputs: { node: "node", nivel: "nivel", currentSearch: "currentSearch" }, outputs: { nivelClick: "nivelClick" }, ngImport: i0, template: "<span [innerHtml]=\"identacao\" class=\"node-link\"></span>\n<!-- mostrar a seta se tiver filhos ou se for raiz (nivel = 0)-->\n@if (!node.Expandido && (node.Filhos.length > 0 || nivel == 0)) {\n<span class=\"node-link\" (click)=\"node.Expandido = !node.Expandido\" class=\"boxSeta\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n</span>\n} \n@if (node.Expandido) {\n<span class=\"node-link\" (click)=\"node.Expandido = !node.Expandido\" class=\"boxSeta\">\n <ion-icon name=\"chevron-down-outline\"></ion-icon>\n</span>\n}\n<!--\n<span *ngIf=\"!node.Expandido\">&nbsp;&nbsp;&nbsp;</span>\n-->\n\n<!-- \n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\" title=\"{{ node.Label }}\"> {{ node.Label }}</span>\n-->\n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\"\n title=\"{{ node.Label }}\" [innerHTML]=\"highlight(node.Label)\"></span>", styles: [".node-link{cursor:pointer}.node-disabled{cursor:auto;color:#a9a9a9}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
2760
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TreeViewNivelComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2761
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: TreeViewNivelComponent, isStandalone: true, selector: "kb-tree-view-nivel", inputs: { node: "node", nivel: "nivel", currentSearch: "currentSearch" }, outputs: { nivelClick: "nivelClick" }, ngImport: i0, template: "<span [innerHtml]=\"identacao\" class=\"node-link\"></span>\n<!-- mostrar a seta se tiver filhos ou se for raiz (nivel = 0)-->\n@if (!node.Expandido && (node.Filhos.length > 0 || nivel == 0)) {\n<span class=\"node-link\" (click)=\"node.Expandido = !node.Expandido\" class=\"boxSeta\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n</span>\n} \n@if (node.Expandido) {\n<span class=\"node-link\" (click)=\"node.Expandido = !node.Expandido\" class=\"boxSeta\">\n <ion-icon name=\"chevron-down-outline\"></ion-icon>\n</span>\n}\n<!--\n<span *ngIf=\"!node.Expandido\">&nbsp;&nbsp;&nbsp;</span>\n-->\n\n<!-- \n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\" title=\"{{ node.Label }}\"> {{ node.Label }}</span>\n-->\n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\"\n title=\"{{ node.Label }}\" [innerHTML]=\"highlight(node.Label)\"></span>", styles: [".node-link{cursor:pointer}.node-disabled{cursor:auto;color:#a9a9a9}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
2704
2762
  }
2705
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: TreeViewNivelComponent, decorators: [{
2763
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TreeViewNivelComponent, decorators: [{
2706
2764
  type: Component,
2707
2765
  args: [{ selector: 'kb-tree-view-nivel', imports: [IonIcon,], changeDetection: ChangeDetectionStrategy.Eager, template: "<span [innerHtml]=\"identacao\" class=\"node-link\"></span>\n<!-- mostrar a seta se tiver filhos ou se for raiz (nivel = 0)-->\n@if (!node.Expandido && (node.Filhos.length > 0 || nivel == 0)) {\n<span class=\"node-link\" (click)=\"node.Expandido = !node.Expandido\" class=\"boxSeta\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n</span>\n} \n@if (node.Expandido) {\n<span class=\"node-link\" (click)=\"node.Expandido = !node.Expandido\" class=\"boxSeta\">\n <ion-icon name=\"chevron-down-outline\"></ion-icon>\n</span>\n}\n<!--\n<span *ngIf=\"!node.Expandido\">&nbsp;&nbsp;&nbsp;</span>\n-->\n\n<!-- \n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\" title=\"{{ node.Label }}\"> {{ node.Label }}</span>\n-->\n<span [class]=\"{ 'node-link' : node.Clicable === true, 'node-disabled': node.Clicable === false }\" (click)=\"nodeClick()\"\n title=\"{{ node.Label }}\" [innerHTML]=\"highlight(node.Label)\"></span>", styles: [".node-link{cursor:pointer}.node-disabled{cursor:auto;color:#a9a9a9}\n"] }]
2708
2766
  }], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { nivelClick: [{
@@ -2792,10 +2850,10 @@ class TreeViewComponent {
2792
2850
  console.log('carrega registro', node);
2793
2851
  this.selecionarRegistro.next({ Cadastro: this.cadastro, Id: node.Id });
2794
2852
  }
2795
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: TreeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2796
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: TreeViewComponent, isStandalone: true, selector: "kb-tree-view", inputs: { itens: "itens", campoId: "campoId", campoPai: "campoPai", campoLabel: "campoLabel", cadastro: "cadastro", caixaClass: "caixaClass", currentSearch: "currentSearch" }, outputs: { beforeUpdate: "beforeUpdate", selecionarRegistro: "selecionarRegistro" }, ngImport: i0, template: "<div style=\"position: relative; height: auto; padding-left: 2%; background-color: white;\">\n @if (arvore) {\n <div [class]=\"caixaClass\" style=\"padding-left: 6px; font-size: 12px;\">\n <!-- raiz --> \n @for (raiz of arvore; track raiz.Id) { \n <div class=\"coluna\">\n <kb-tree-view-nivel [nivel]=\"0\" [node]=\"raiz\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"raiz.Clicable === true ? carregarRegistro(raiz) : null\">\n </kb-tree-view-nivel>\n \n @if(raiz.Expandido) {\n <div class=\"filho\">\n @for (nivel1 of raiz.Filhos; track nivel1.Id) {\n <div draggable=\"true\">\n <kb-tree-view-nivel [nivel]=\"1\" [node]=\"nivel1\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel1.Clicable === true ? carregarRegistro(nivel1): null\">\n </kb-tree-view-nivel>\n\n @if (nivel1 && nivel1.Expandido) {\n <div class=\"filho\">\n @for(nivel2 of nivel1.Filhos; track nivel2.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"2\" [node]=\"nivel2\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel2.Clicable === true ? carregarRegistro(nivel2): null\">\n </kb-tree-view-nivel>\n\n @if(nivel2 && nivel2.Expandido) {\n <div class=\"filho\">\n @for (nivel3 of nivel2.Filhos; track nivel3.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"3\" [node]=\"nivel3\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel3.Clicable === true ? carregarRegistro(nivel3): null\">\n </kb-tree-view-nivel>\n @if (nivel3 && nivel3.Expandido) {\n <div class=\"filho\">\n @for (nivel4 of nivel3.Filhos; track nivel4.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"4\" [node]=\"nivel4\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel4.Clicable === true ? carregarRegistro(nivel4): null\">\n </kb-tree-view-nivel>\n @if (nivel4 && nivel4.Expandido) {\n <div class=\"filho\">\n @for (nivel5 of nivel4.Filhos; track nivel5.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"5\" [node]=\"nivel5\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel5.Clicable === true ? carregarRegistro(nivel5): null\"></kb-tree-view-nivel>\n @if (nivel5 && nivel5.Expandido) {\n <div class=\"filho\">\n @for(nivel6 of nivel5.Filhos; track nivel6.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"6\" [node]=\"nivel6\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel6.Clicable === true ? carregarRegistro(nivel6): null\"></kb-tree-view-nivel>\n @if (nivel6 && nivel6.Expandido) {\n <div class=\"filho\">\n @for (nivel7 of nivel6.Filhos; track nivel7.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"7\" [node]=\"nivel7\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel7.Clicable === true ? carregarRegistro(nivel7): null\"></kb-tree-view-nivel>\n @if (nivel7 && nivel7.Expandido) {\n <div class=\"filho\">\n @for (nivel8 of nivel7.Filhos; track nivel8.Id)\n {\n <div>\n <kb-tree-view-nivel [nivel]=\"8\"\n [node]=\"nivel8\"\n (nivelClick)=\"nivel8.Clicable === true ? carregarRegistro(nivel8): null\"></kb-tree-view-nivel>\n @if (nivel8 && nivel8.Expandido) {\n <div class=\"filho\">\n @for (nivel9 of nivel8.Filhos; track\n nivel9.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"9\"\n [node]=\"nivel9\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel9.Clicable === true ? carregarRegistro(nivel9): null\"></kb-tree-view-nivel>\n\n @if (nivel9 && nivel9.Filhos) {\n <div class=\"filho\">\n @for (nivel10 of nivel9.Filhos;\n track nivel10.Id) {\n <div>\n <kb-tree-view-nivel\n [nivel]=\"10\"\n [node]=\"nivel10\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel10.Clicable === true ? carregarRegistro(nivel10): null\"></kb-tree-view-nivel>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }", styles: [".boxSeta{margin:2px;font-size:large;color:#09459e;cursor:pointer}.caixa{border:2px transparent solid;padding:3px;width:100%;position:relative;overflow-y:auto;background-color:#fff;border-radius:5px;height:100%}.coluna{padding-bottom:10px}.filho{padding-top:6px}.node-link{cursor:pointer}.caixa-agrupado{border:2px transparent solid;padding:3px;height:701px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}.caixa-empresa{border:2px transparent solid;padding:3px;height:340px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}\n"], dependencies: [{ kind: "component", type: TreeViewNivelComponent, selector: "kb-tree-view-nivel", inputs: ["node", "nivel", "currentSearch"], outputs: ["nivelClick"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
2853
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TreeViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2854
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: TreeViewComponent, isStandalone: true, selector: "kb-tree-view", inputs: { itens: "itens", campoId: "campoId", campoPai: "campoPai", campoLabel: "campoLabel", cadastro: "cadastro", caixaClass: "caixaClass", currentSearch: "currentSearch" }, outputs: { beforeUpdate: "beforeUpdate", selecionarRegistro: "selecionarRegistro" }, ngImport: i0, template: "<div style=\"position: relative; height: auto; padding-left: 2%; background-color: white;\">\n @if (arvore) {\n <div [class]=\"caixaClass\" style=\"padding-left: 6px; font-size: 12px;\">\n <!-- raiz --> \n @for (raiz of arvore; track raiz.Id) { \n <div class=\"coluna\">\n <kb-tree-view-nivel [nivel]=\"0\" [node]=\"raiz\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"raiz.Clicable === true ? carregarRegistro(raiz) : null\">\n </kb-tree-view-nivel>\n \n @if(raiz.Expandido) {\n <div class=\"filho\">\n @for (nivel1 of raiz.Filhos; track nivel1.Id) {\n <div draggable=\"true\">\n <kb-tree-view-nivel [nivel]=\"1\" [node]=\"nivel1\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel1.Clicable === true ? carregarRegistro(nivel1): null\">\n </kb-tree-view-nivel>\n\n @if (nivel1 && nivel1.Expandido) {\n <div class=\"filho\">\n @for(nivel2 of nivel1.Filhos; track nivel2.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"2\" [node]=\"nivel2\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel2.Clicable === true ? carregarRegistro(nivel2): null\">\n </kb-tree-view-nivel>\n\n @if(nivel2 && nivel2.Expandido) {\n <div class=\"filho\">\n @for (nivel3 of nivel2.Filhos; track nivel3.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"3\" [node]=\"nivel3\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel3.Clicable === true ? carregarRegistro(nivel3): null\">\n </kb-tree-view-nivel>\n @if (nivel3 && nivel3.Expandido) {\n <div class=\"filho\">\n @for (nivel4 of nivel3.Filhos; track nivel4.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"4\" [node]=\"nivel4\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel4.Clicable === true ? carregarRegistro(nivel4): null\">\n </kb-tree-view-nivel>\n @if (nivel4 && nivel4.Expandido) {\n <div class=\"filho\">\n @for (nivel5 of nivel4.Filhos; track nivel5.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"5\" [node]=\"nivel5\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel5.Clicable === true ? carregarRegistro(nivel5): null\"></kb-tree-view-nivel>\n @if (nivel5 && nivel5.Expandido) {\n <div class=\"filho\">\n @for(nivel6 of nivel5.Filhos; track nivel6.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"6\" [node]=\"nivel6\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel6.Clicable === true ? carregarRegistro(nivel6): null\"></kb-tree-view-nivel>\n @if (nivel6 && nivel6.Expandido) {\n <div class=\"filho\">\n @for (nivel7 of nivel6.Filhos; track nivel7.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"7\" [node]=\"nivel7\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel7.Clicable === true ? carregarRegistro(nivel7): null\"></kb-tree-view-nivel>\n @if (nivel7 && nivel7.Expandido) {\n <div class=\"filho\">\n @for (nivel8 of nivel7.Filhos; track nivel8.Id)\n {\n <div>\n <kb-tree-view-nivel [nivel]=\"8\"\n [node]=\"nivel8\"\n (nivelClick)=\"nivel8.Clicable === true ? carregarRegistro(nivel8): null\"></kb-tree-view-nivel>\n @if (nivel8 && nivel8.Expandido) {\n <div class=\"filho\">\n @for (nivel9 of nivel8.Filhos; track\n nivel9.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"9\"\n [node]=\"nivel9\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel9.Clicable === true ? carregarRegistro(nivel9): null\"></kb-tree-view-nivel>\n\n @if (nivel9 && nivel9.Filhos) {\n <div class=\"filho\">\n @for (nivel10 of nivel9.Filhos;\n track nivel10.Id) {\n <div>\n <kb-tree-view-nivel\n [nivel]=\"10\"\n [node]=\"nivel10\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel10.Clicable === true ? carregarRegistro(nivel10): null\"></kb-tree-view-nivel>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }", styles: [".boxSeta{margin:2px;font-size:large;color:#09459e;cursor:pointer}.caixa{border:2px transparent solid;padding:3px;width:100%;position:relative;overflow-y:auto;background-color:#fff;border-radius:5px;height:100%}.coluna{padding-bottom:10px}.filho{padding-top:6px}.node-link{cursor:pointer}.caixa-agrupado{border:2px transparent solid;padding:3px;height:701px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}.caixa-empresa{border:2px transparent solid;padding:3px;height:340px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}\n"], dependencies: [{ kind: "component", type: TreeViewNivelComponent, selector: "kb-tree-view-nivel", inputs: ["node", "nivel", "currentSearch"], outputs: ["nivelClick"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
2797
2855
  }
2798
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: TreeViewComponent, decorators: [{
2856
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TreeViewComponent, decorators: [{
2799
2857
  type: Component,
2800
2858
  args: [{ selector: 'kb-tree-view', imports: [TreeViewNivelComponent], changeDetection: ChangeDetectionStrategy.Eager, template: "<div style=\"position: relative; height: auto; padding-left: 2%; background-color: white;\">\n @if (arvore) {\n <div [class]=\"caixaClass\" style=\"padding-left: 6px; font-size: 12px;\">\n <!-- raiz --> \n @for (raiz of arvore; track raiz.Id) { \n <div class=\"coluna\">\n <kb-tree-view-nivel [nivel]=\"0\" [node]=\"raiz\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"raiz.Clicable === true ? carregarRegistro(raiz) : null\">\n </kb-tree-view-nivel>\n \n @if(raiz.Expandido) {\n <div class=\"filho\">\n @for (nivel1 of raiz.Filhos; track nivel1.Id) {\n <div draggable=\"true\">\n <kb-tree-view-nivel [nivel]=\"1\" [node]=\"nivel1\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel1.Clicable === true ? carregarRegistro(nivel1): null\">\n </kb-tree-view-nivel>\n\n @if (nivel1 && nivel1.Expandido) {\n <div class=\"filho\">\n @for(nivel2 of nivel1.Filhos; track nivel2.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"2\" [node]=\"nivel2\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel2.Clicable === true ? carregarRegistro(nivel2): null\">\n </kb-tree-view-nivel>\n\n @if(nivel2 && nivel2.Expandido) {\n <div class=\"filho\">\n @for (nivel3 of nivel2.Filhos; track nivel3.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"3\" [node]=\"nivel3\" [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel3.Clicable === true ? carregarRegistro(nivel3): null\">\n </kb-tree-view-nivel>\n @if (nivel3 && nivel3.Expandido) {\n <div class=\"filho\">\n @for (nivel4 of nivel3.Filhos; track nivel4.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"4\" [node]=\"nivel4\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel4.Clicable === true ? carregarRegistro(nivel4): null\">\n </kb-tree-view-nivel>\n @if (nivel4 && nivel4.Expandido) {\n <div class=\"filho\">\n @for (nivel5 of nivel4.Filhos; track nivel5.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"5\" [node]=\"nivel5\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel5.Clicable === true ? carregarRegistro(nivel5): null\"></kb-tree-view-nivel>\n @if (nivel5 && nivel5.Expandido) {\n <div class=\"filho\">\n @for(nivel6 of nivel5.Filhos; track nivel6.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"6\" [node]=\"nivel6\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel6.Clicable === true ? carregarRegistro(nivel6): null\"></kb-tree-view-nivel>\n @if (nivel6 && nivel6.Expandido) {\n <div class=\"filho\">\n @for (nivel7 of nivel6.Filhos; track nivel7.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"7\" [node]=\"nivel7\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel7.Clicable === true ? carregarRegistro(nivel7): null\"></kb-tree-view-nivel>\n @if (nivel7 && nivel7.Expandido) {\n <div class=\"filho\">\n @for (nivel8 of nivel7.Filhos; track nivel8.Id)\n {\n <div>\n <kb-tree-view-nivel [nivel]=\"8\"\n [node]=\"nivel8\"\n (nivelClick)=\"nivel8.Clicable === true ? carregarRegistro(nivel8): null\"></kb-tree-view-nivel>\n @if (nivel8 && nivel8.Expandido) {\n <div class=\"filho\">\n @for (nivel9 of nivel8.Filhos; track\n nivel9.Id) {\n <div>\n <kb-tree-view-nivel [nivel]=\"9\"\n [node]=\"nivel9\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel9.Clicable === true ? carregarRegistro(nivel9): null\"></kb-tree-view-nivel>\n\n @if (nivel9 && nivel9.Filhos) {\n <div class=\"filho\">\n @for (nivel10 of nivel9.Filhos;\n track nivel10.Id) {\n <div>\n <kb-tree-view-nivel\n [nivel]=\"10\"\n [node]=\"nivel10\"\n [currentSearch]=\"currentSearch\"\n (nivelClick)=\"nivel10.Clicable === true ? carregarRegistro(nivel10): null\"></kb-tree-view-nivel>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }", styles: [".boxSeta{margin:2px;font-size:large;color:#09459e;cursor:pointer}.caixa{border:2px transparent solid;padding:3px;width:100%;position:relative;overflow-y:auto;background-color:#fff;border-radius:5px;height:100%}.coluna{padding-bottom:10px}.filho{padding-top:6px}.node-link{cursor:pointer}.caixa-agrupado{border:2px transparent solid;padding:3px;height:701px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}.caixa-empresa{border:2px transparent solid;padding:3px;height:340px;width:100%;position:relative;overflow-y:auto;border-radius:5px;background-color:#fff}\n"] }]
2801
2859
  }], propDecorators: { itens: [{
@@ -2948,10 +3006,10 @@ class ModalTreeviewComponent {
2948
3006
  const modalCtrl = this.injector.get(ModalController);
2949
3007
  modalCtrl.dismiss();
2950
3008
  }
2951
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ModalTreeviewComponent, deps: [{ token: DataService }, { token: i0.Injector }, { token: i2.LoadingController }], target: i0.ɵɵFactoryTarget.Component });
2952
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: ModalTreeviewComponent, isStandalone: true, selector: "kb-modal-treeview", inputs: { textoPesquisa: "textoPesquisa" }, viewQueries: [{ propertyName: "treeView", first: true, predicate: ["treeViewComp"], descendants: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-title>{{ titulo }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"atualizaArvoreEntidade(tipo)\">\n <ion-icon slot=\"icon-only\" name=\"refresh\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"fechar()\">Fechar</ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n \n <ion-content>\n <ion-item>\n <ion-button style=\"box-shadow: #4c8dff 0px 2px 2px 0.05px;\" fill=\"outline\" (click)=\"expandir()\">\n <ion-icon name=\"expand-outline\"></ion-icon>\n </ion-button> \n </ion-item>\n <kb-tree-view #treeViewComp [campoId]=\"campoId\" [campoPai]=\"campoPai\" [campoLabel]=\"'LabelTree'\" (selecionarRegistro)=\"clickRegistro($event)\"></kb-tree-view>\n </ion-content>", styles: [""], dependencies: [{ kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: TreeViewComponent, selector: "kb-tree-view", inputs: ["itens", "campoId", "campoPai", "campoLabel", "cadastro", "caixaClass", "currentSearch"], outputs: ["beforeUpdate", "selecionarRegistro"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
3009
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ModalTreeviewComponent, deps: [{ token: DataService }, { token: i0.Injector }, { token: i2.LoadingController }], target: i0.ɵɵFactoryTarget.Component });
3010
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: ModalTreeviewComponent, isStandalone: true, selector: "kb-modal-treeview", inputs: { textoPesquisa: "textoPesquisa" }, viewQueries: [{ propertyName: "treeView", first: true, predicate: ["treeViewComp"], descendants: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-title>{{ titulo }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"atualizaArvoreEntidade(tipo)\">\n <ion-icon slot=\"icon-only\" name=\"refresh\"></ion-icon>\n </ion-button>\n <ion-button (click)=\"fechar()\">Fechar</ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n \n <ion-content>\n <ion-item>\n <ion-button style=\"box-shadow: #4c8dff 0px 2px 2px 0.05px;\" fill=\"outline\" (click)=\"expandir()\">\n <ion-icon name=\"expand-outline\"></ion-icon>\n </ion-button> \n </ion-item>\n <kb-tree-view #treeViewComp [campoId]=\"campoId\" [campoPai]=\"campoPai\" [campoLabel]=\"'LabelTree'\" (selecionarRegistro)=\"clickRegistro($event)\"></kb-tree-view>\n </ion-content>", styles: [""], dependencies: [{ kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"], outputs: ["ionScrollStart", "ionScroll", "ionScrollEnd"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: TreeViewComponent, selector: "kb-tree-view", inputs: ["itens", "campoId", "campoPai", "campoLabel", "cadastro", "caixaClass", "currentSearch"], outputs: ["beforeUpdate", "selecionarRegistro"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
2953
3011
  }
2954
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: ModalTreeviewComponent, decorators: [{
3012
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: ModalTreeviewComponent, decorators: [{
2955
3013
  type: Component,
2956
3014
  args: [{ selector: 'kb-modal-treeview', imports: [IonItem, IonContent, IonIcon, IonButton, IonButtons, IonTitle, IonToolbar, IonHeader,
2957
3015
  TreeViewComponent
@@ -3526,14 +3584,14 @@ class InputPesquisaComponent extends BaseInputComponent {
3526
3584
  }
3527
3585
  */
3528
3586
  }
3529
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputPesquisaComponent, deps: [{ token: DataService }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
3530
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputPesquisaComponent, isStandalone: true, selector: "kb-input-pesquisa", inputs: { textoPesquisa: "textoPesquisa", max: "max", filterFunction: "filterFunction", selectId: "selectId", campoId: "campoId", campoPaiId: "campoPaiId", campoDisplay: "campoDisplay", tipo: "tipo", url: "url", urlItem: "urlItem", empresa: "empresa", loadInit: "loadInit", urlTree: "urlTree", treeTitulo: "treeTitulo" }, outputs: { pesquisaChange: "pesquisaChange", limpar: "limpar" }, providers: [{
3587
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputPesquisaComponent, deps: [{ token: DataService }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
3588
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputPesquisaComponent, isStandalone: true, selector: "kb-input-pesquisa", inputs: { textoPesquisa: "textoPesquisa", max: "max", filterFunction: "filterFunction", selectId: "selectId", campoId: "campoId", campoPaiId: "campoPaiId", campoDisplay: "campoDisplay", tipo: "tipo", url: "url", urlItem: "urlItem", empresa: "empresa", loadInit: "loadInit", urlTree: "urlTree", treeTitulo: "treeTitulo" }, outputs: { pesquisaChange: "pesquisaChange", limpar: "limpar" }, providers: [{
3531
3589
  provide: NG_VALUE_ACCESSOR,
3532
3590
  useExisting: InputPesquisaComponent,
3533
3591
  multi: true,
3534
- }], viewQueries: [{ propertyName: "selectElement", first: true, predicate: ["selectElement"], descendants: true }, { propertyName: "inputPesquisa", first: true, predicate: ["inputPesquisa"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div style=\"padding-inline-end: 0px;\" [class]=\"{ 'input-text-padding': !classic }\">\n @if (classic) {\n <ion-item lines=\"none\" [style.opacity]=\"readonly ? 0.5 : 1\"\n style=\"--background: inherited; --background-focused: transparent; margin-top: 2px;\"\n [class]=\"itemClass + ' classic'\" id=\"item-pesquisa\" #itemPesquisa>\n @if (label) {\n <ion-label style=\"color: var(--label-palavras);\" position=\"{{ labelPosition }}\">{{ label }}</ion-label>\n }\n <!-- formControlName=\"{{ campo }}\" -->\n @if (!podePesquisar) {\n <ion-spinner style=\"--min-height: 0px !important; margin-inline-end: 5px !important;\" class=\"botao-limpar\"\n slot=\"start\" name=\"lines\"></ion-spinner>\n }\n <!-- (ionBlur)=\"verificarPesquisa()\" -->\n <!-- conflito com click da lista -->\n <ion-input #inputPesquisa type=\"{{type}}\" [placeholder]=\"placeholder\" maxlength=\"{{ max }}\"\n (ionBlur)=\"onBlur($event)\" [value]=\"textoPesquisa\" (input)=\"writePesquisa(inputPesquisa.value)\"\n (keyup)=\"showPesquisa($event)\" autocomplete=\"off\"\n style=\"background-color: var(--input-color); color: var(--text-color);\" (click)=\"dropDownPesquisa(-1)\"\n [disabled]=\"readonly\" debounce=\"2000\" (ionFocus)=\"entered()\"></ion-input>\n <ion-button size=\"small\" slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" id=\"btnLimparPesquisa\" fill=\"clear\"\n color=\"medium\" (click)=\"limparClick()\">\n <ion-icon name=\"close-outline\"></ion-icon>\n </ion-button>\n\n <ion-button size=\"small\" slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" fill=\"clear\" color=\"medium\"\n (click)=\"pesquisarClick()\">\n <ion-icon color=\"primary\" name=\"search\"></ion-icon>\n </ion-button>\n\n @if (showSeeCopy) {\n <ion-button size=\"small\" slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\"\n color=\"dark\" (click)=\"copiarClick()\" [disabled]=\"!data\">\n <ion-icon name=\"copy-outline\"></ion-icon>\n </ion-button>\n }\n </ion-item>\n } @else {\n <ion-input #inputPesquisa [type]=\"type\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\n [placeholder]=\"placeholder\" maxlength=\"{{ max }}\" (ionBlur)=\"onBlur($event)\" [value]=\"textoPesquisa\"\n (input)=\"writePesquisa(inputPesquisa.value)\" (keyup)=\"showPesquisa($event)\" autocomplete=\"off\" [mode]=\"mode\"\n style=\"background-color: var(--input-color); color: var(--text-color);\" (click)=\"dropDownPesquisa(-1)\"\n [disabled]=\"readonly\" debounce=\"2000\" class=\"modern\" (ionFocus)=\"entered()\">\n\n @if (!podePesquisar) {\n <ion-spinner slot=\"start\" name=\"lines\"></ion-spinner>\n }\n\n <ion-button slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" id=\"btnLimparPesquisa\" fill=\"clear\" color=\"medium\"\n (click)=\"limparClick()\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n\n <ion-button slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" fill=\"clear\" color=\"medium\" (click)=\"pesquisarClick()\">\n <ion-icon slot=\"icon-only\" color=\"primary\" name=\"search\"></ion-icon>\n </ion-button>\n\n @if (showSeeCopy) {\n <ion-button slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\" color=\"dark\"\n (click)=\"copiarClick()\" [disabled]=\"!data\">\n <ion-icon slot=\"icon-only\" name=\"copy-outline\"></ion-icon>\n </ion-button>\n }\n </ion-input>\n }\n <ion-list tabindex=\"-1\" [hidden]=\"!selectElementVisivel || !listaPesquisa || listaPesquisa.length == 0\"\n class=\"pesquisa-list\" style=\"max-height: 250px; overflow-y: auto;\">\n\n @for (item of listaPesquisa; track $index) {\n <ion-item tabindex=\"-1\" button (click)=\"selecionarComboClick(item)\" [id]=\"selectId + 'IonItem' + item['Index']\"\n (keyup.enter)=\"selecionarComboClick(item)\" class=\"pesquisa-item\">\n <!-- {{ item | json}} -->\n <span [class]=\"{'selected-item': item['Selected'] === true}\" [innerHTML]=\"highlight(item[campoDisplay])\"></span>\n </ion-item>\n }\n </ion-list>\n\n <!--\n <ion-select interface=\"popover\" #selectElement tabindex=\"-1\" [hidden]=\"!selectElementVisivel\"\n (ionChange)=\"selecionarComboChange($event.target.value)\">\n <ion-select-option *ngFor=\"let item of listaPesquisa\" [value]=\"item[campoId]\" (click)=\"selecionarComboClick(item[campoId])\">\n {{ item[campoDisplay] }}\n </ion-select-option>\n </ion-select>\n -->\n\n <!--\n <select [id]=\"selectId\" #selectElement tabindex=\"-1\" [hidden]=\"!selectElementVisivel\"\n (change)=\"selecionarComboChange($event.target.value)\" class=\"pesquisa-select\">\n <option *ngFor=\"let item of listaPesquisa\" [value]=\"item[campoId]\" (click)=\"selecionarComboClick(item[campoId])\">\n {{ item[campoDisplay] }}\n </option>\n\n </select>\n -->\n\n @if(form) {\n <div class=\"validation-errors\">\n @for (validation of validation_messages; track validation.type) {\n <ng-container>\n @if(form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\" [ngClass]=\"validationClass\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: [".pesquisa-select{display:block;position:absolute;top:58px;left:20px;width:100%;z-index:800;font-size:16px;font-family:Roboto,Helvetica Neue,sans-serif;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.pesquisa-select option{overflow-y:hidden}.pesquisa-select option:hover,.pesquisa-select option:checked{background-color:#add8e6}.pesquisa-list{display:block;position:absolute;margin-block-start:-3px;margin-inline-start:14px;width:calc(100% - 50px);z-index:800;border:1px lightgrey solid;border-bottom-left-radius:5px;border-bottom-right-radius:5px;padding:0;max-width:380px}.pesquisa-item{--inner-padding-top: 0px;--inner-padding-bottom: 0px;--padding-top: 0px;--padding-bottom: 0px;--min-height: 30px !important;font-size:12px}.pesquisa-item button{padding:0}.selected-item{background-color:#add8e6}.classic .botao-limpar{margin-top:auto;margin-bottom:calc((var(--input-min-height, 30px) - 30px) * .57142857 + 2px);margin-inline-start:4px!important;--padding-start: 2px;--padding-end: 2px}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
3592
+ }], viewQueries: [{ propertyName: "selectElement", first: true, predicate: ["selectElement"], descendants: true }, { propertyName: "inputPesquisa", first: true, predicate: ["inputPesquisa"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<div style=\"padding-inline-end: 0px;\" [class]=\"{ 'input-text-padding': !classic }\">\n @if (classic) {\n <ion-item lines=\"none\" [style.opacity]=\"readonly ? 0.5 : 1\"\n style=\"--background: inherited; --background-focused: transparent; margin-top: 2px;\"\n [class]=\"itemClass + ' classic'\" id=\"item-pesquisa\" #itemPesquisa>\n @if (label) {\n <ion-label style=\"color: var(--label-palavras);\" position=\"{{ labelPosition }}\">{{ label }}</ion-label>\n }\n <!-- formControlName=\"{{ campo }}\" -->\n @if (!podePesquisar) {\n <ion-spinner style=\"--min-height: 0px !important; margin-inline-end: 5px !important;\" class=\"botao-limpar\"\n slot=\"start\" name=\"lines\"></ion-spinner>\n }\n <!-- (ionBlur)=\"verificarPesquisa()\" -->\n <!-- conflito com click da lista -->\n <ion-input #inputPesquisa type=\"{{type}}\" [placeholder]=\"placeholder\" maxlength=\"{{ max }}\"\n (ionBlur)=\"onBlur($event)\" [value]=\"textoPesquisa\" (input)=\"writePesquisa(inputPesquisa.value)\"\n (keyup)=\"showPesquisa($event)\" autocomplete=\"off\"\n style=\"background-color: var(--input-color); color: var(--text-color);\" (click)=\"dropDownPesquisa(-1)\"\n [disabled]=\"readonly\" debounce=\"2000\" (ionFocus)=\"entered()\"></ion-input>\n <ion-button size=\"small\" slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" id=\"btnLimparPesquisa\" fill=\"clear\"\n color=\"medium\" (click)=\"limparClick()\">\n <ion-icon name=\"close-outline\"></ion-icon>\n </ion-button>\n\n <ion-button size=\"small\" slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" fill=\"clear\" color=\"medium\"\n (click)=\"pesquisarClick()\">\n <ion-icon color=\"primary\" name=\"search\"></ion-icon>\n </ion-button>\n\n @if (showSeeCopy) {\n <ion-button size=\"small\" slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\"\n color=\"dark\" (click)=\"copiarClick()\" [disabled]=\"!data\">\n <ion-icon name=\"copy-outline\"></ion-icon>\n </ion-button>\n }\n </ion-item>\n } @else {\n <ion-input #inputPesquisa [type]=\"type\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\n [placeholder]=\"placeholder\" maxlength=\"{{ max }}\" (ionBlur)=\"onBlur($event)\" [value]=\"textoPesquisa\"\n (input)=\"writePesquisa(inputPesquisa.value)\" (keyup)=\"showPesquisa($event)\" autocomplete=\"off\" [mode]=\"mode\"\n style=\"background-color: var(--input-color); color: var(--text-color);\" (click)=\"dropDownPesquisa(-1)\"\n [disabled]=\"readonly\" debounce=\"2000\" class=\"modern\" (ionFocus)=\"entered()\">\n\n @if (!podePesquisar) {\n <ion-spinner slot=\"start\" name=\"lines\"></ion-spinner>\n }\n\n <ion-button slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" id=\"btnLimparPesquisa\" fill=\"clear\" color=\"medium\"\n (click)=\"limparClick()\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n\n <ion-button slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" fill=\"clear\" color=\"medium\" (click)=\"pesquisarClick()\">\n <ion-icon slot=\"icon-only\" color=\"primary\" name=\"search\"></ion-icon>\n </ion-button>\n\n @if (showSeeCopy) {\n <ion-button slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\" color=\"dark\"\n (click)=\"copiarClick()\" [disabled]=\"!data\">\n <ion-icon slot=\"icon-only\" name=\"copy-outline\"></ion-icon>\n </ion-button>\n }\n </ion-input>\n }\n <ion-list tabindex=\"-1\" [hidden]=\"!selectElementVisivel || !listaPesquisa || listaPesquisa.length == 0\"\n class=\"pesquisa-list\" style=\"max-height: 250px; overflow-y: auto;\">\n\n @for (item of listaPesquisa; track $index) {\n <ion-item tabindex=\"-1\" button (click)=\"selecionarComboClick(item)\" [id]=\"selectId + 'IonItem' + item['Index']\"\n (keyup.enter)=\"selecionarComboClick(item)\" class=\"pesquisa-item\">\n <!-- {{ item | json}} -->\n <span [class]=\"{'selected-item': item['Selected'] === true}\" [innerHTML]=\"highlight(item[campoDisplay])\"></span>\n </ion-item>\n }\n </ion-list>\n\n <!--\n <ion-select interface=\"popover\" #selectElement tabindex=\"-1\" [hidden]=\"!selectElementVisivel\"\n (ionChange)=\"selecionarComboChange($event.target.value)\">\n <ion-select-option *ngFor=\"let item of listaPesquisa\" [value]=\"item[campoId]\" (click)=\"selecionarComboClick(item[campoId])\">\n {{ item[campoDisplay] }}\n </ion-select-option>\n </ion-select>\n -->\n\n <!--\n <select [id]=\"selectId\" #selectElement tabindex=\"-1\" [hidden]=\"!selectElementVisivel\"\n (change)=\"selecionarComboChange($event.target.value)\" class=\"pesquisa-select\">\n <option *ngFor=\"let item of listaPesquisa\" [value]=\"item[campoId]\" (click)=\"selecionarComboClick(item[campoId])\">\n {{ item[campoDisplay] }}\n </option>\n\n </select>\n -->\n\n @if(form) {\n <div class=\"validation-errors\">\n @for (validation of validation_messages; track validation.type) {\n <ng-container>\n @if(form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\" [ngClass]=\"validationClass\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: [".pesquisa-select{display:block;position:absolute;top:58px;left:20px;width:100%;z-index:800;font-size:16px;font-family:Roboto,Helvetica Neue,sans-serif;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.pesquisa-select option{overflow-y:hidden}.pesquisa-select option:hover,.pesquisa-select option:checked{background-color:#add8e6}.pesquisa-list{display:block;position:absolute;margin-block-start:-3px;margin-inline-start:14px;width:calc(100% - 50px);z-index:800;border:1px lightgrey solid;border-bottom-left-radius:5px;border-bottom-right-radius:5px;padding:0;max-width:380px}.pesquisa-item{--inner-padding-top: 0px;--inner-padding-bottom: 0px;--padding-top: 0px;--padding-bottom: 0px;--min-height: 30px !important;font-size:12px}.pesquisa-item button{padding:0}.selected-item{background-color:#add8e6}.classic .botao-limpar{margin-top:auto;margin-bottom:calc((var(--input-min-height, 30px) - 30px) * .57142857 + 2px);margin-inline-start:4px!important;--padding-start: 2px;--padding-end: 2px}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
3535
3593
  }
3536
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputPesquisaComponent, decorators: [{
3594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputPesquisaComponent, decorators: [{
3537
3595
  type: Component,
3538
3596
  args: [{ selector: 'kb-input-pesquisa', imports: [IonList, IonIcon, IonButton, IonInput, IonSpinner, IonLabel, IonItem, NgClass], changeDetection: ChangeDetectionStrategy.Eager, providers: [{
3539
3597
  provide: NG_VALUE_ACCESSOR,
@@ -3646,20 +3704,20 @@ class InputAreaComponent extends BaseInputComponent {
3646
3704
  let texto = this.data;
3647
3705
  navigator.clipboard.writeText(texto);
3648
3706
  }
3649
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputAreaComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
3650
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputAreaComponent, isStandalone: true, selector: "kb-input-area", inputs: { linhas: "linhas", contador: "contador" }, outputs: { inputChange: "inputChange" }, providers: [{
3707
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputAreaComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
3708
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputAreaComponent, isStandalone: true, selector: "kb-input-area", inputs: { linhas: "linhas", contador: "contador" }, outputs: { inputChange: "inputChange" }, providers: [{
3651
3709
  provide: NG_VALUE_ACCESSOR,
3652
3710
  useExisting: InputAreaComponent,
3653
3711
  multi: true
3654
- }], viewQueries: [{ propertyName: "itemArea", first: true, predicate: ["itemArea"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"{ 'input-text-padding': !classic }\">\r\n @if (classic) {\r\n <ion-item lines=\"none\" style=\"--background-focused: transparent;\" [class]=\"itemClass\" #itemArea>\r\n <ion-label position=\"{{ labelPosition }}\">{{ label }}\r\n @if (showObrigatorio) {\r\n <span \r\n class=\"label-tip-obrigatorio\">{{\r\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\r\n </span>\r\n }\r\n </ion-label>\r\n <!-- formControlName=\"{{ formControlName }}\" -->\r\n <textarea #inputArea [placeholder]=\"placeholder\" [maxLength]=\"max\" (ionBlur)=\"onBlur()\" [value]=\"data\"\r\n [rows]=\"linhas\" (input)=\"writeValue(inputArea.value)\" [disabled]=\"readonly\" (focus)=\"entered()\"></textarea>\r\n </ion-item>\r\n } @else {\r\n\r\n <ion-textarea #inputArea [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\" [maxlength]=\"max\" class=\"modern\"\r\n [rows]=\"linhas\" (input)=\"writeValue(inputArea.value)\" (ionBlur)=\"onBlur()\" (ionInput)=\"onInputChange($event)\"\r\n [value]=\"data\" mode=\"md\" [counter]=\"contador\" [placeholder]=\"placeholder\">\r\n\r\n @if (icon || iconSrc) {\r\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\r\n }\r\n @if (showSeeCopy) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\r\n (click)=\"copiarClick()\">\r\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n\r\n </ion-textarea>\r\n\r\n }\r\n\r\n @if (form) {\r\n <div class=\"validation-errors\">\r\n\r\n @for (validation of validation_messages; track validation.type) {\r\n <ng-container>\r\n @if (form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\r\n form.get(formControlName)?.touched)) {\r\n <div class=\"error-message\">\r\n &#8226; {{ validation.message }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>", styles: ["@charset \"UTF-8\";ion-label{margin-bottom:4px!important}ion-textarea{padding:var(--input-padding)!important;border-radius:4px;width:100%;margin-top:2px}textarea{padding:var(--input-padding, 8px)!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;resize:none;background-color:#fff}textarea::-webkit-scrollbar{width:10px;height:10px}textarea::-webkit-scrollbar-track{background:#f1f1f1}textarea::-webkit-scrollbar-thumb{border-radius:12px;background:var(--scroll-color-thumb, #808080)}textarea::-webkit-scrollbar-thumb:hover{background:var(--scroll-color-hover, #5c5c5c)}textarea:focus{outline:none!important;border:1px solid lightblue!important}textarea:focus ion-label{color:var(--ion-color-label-focus, blue)!important}.item-has-focus ion-label{color:var(--ion-color-label-focus, blue)!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
3712
+ }], viewQueries: [{ propertyName: "itemArea", first: true, predicate: ["itemArea"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"{ 'input-text-padding': !classic }\">\r\n @if (classic) {\r\n <ion-item lines=\"none\" style=\"--background-focused: transparent;\" [class]=\"itemClass\" #itemArea>\r\n <ion-label position=\"{{ labelPosition }}\">{{ label }}\r\n @if (showObrigatorio) {\r\n <span class=\"label-tip-obrigatorio\">{{\r\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\r\n </span>\r\n }\r\n </ion-label>\r\n <!-- formControlName=\"{{ formControlName }}\" -->\r\n <textarea #inputArea [placeholder]=\"placeholder\" [maxLength]=\"max\" (ionBlur)=\"onBlur()\" [value]=\"data\"\r\n [rows]=\"linhas\" (input)=\"writeValue(inputArea.value)\" [disabled]=\"readonly\" (focus)=\"entered()\"></textarea>\r\n </ion-item>\r\n } @else {\r\n\r\n <ion-textarea #inputArea [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\" [maxlength]=\"max\"\r\n class=\"modern\" [rows]=\"linhas\" (input)=\"writeValue(inputArea.value)\" (ionBlur)=\"onBlur()\"\r\n (ionInput)=\"onInputChange($event)\" [value]=\"data\" mode=\"md\" [counter]=\"contador\" [placeholder]=\"placeholder\">\r\n\r\n @if (icon || iconSrc) {\r\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\r\n }\r\n @if (showSeeCopy) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\r\n (click)=\"copiarClick()\">\r\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n\r\n </ion-textarea>\r\n\r\n }\r\n\r\n @if (form) {\r\n <div class=\"validation-errors\">\r\n\r\n @for (validation of validation_messages; track validation.type) {\r\n <ng-container>\r\n @if (form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\r\n form.get(formControlName)?.touched)) {\r\n <div class=\"error-message\">\r\n &#8226; {{ validation.message }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>", styles: ["@charset \"UTF-8\";ion-label{margin-bottom:4px!important}ion-textarea{padding:var(--input-padding)!important;border-radius:4px;width:100%;margin-top:2px}textarea{padding:var(--input-padding, 8px)!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;resize:none;background-color:#fff}textarea::-webkit-scrollbar{width:10px;height:10px}textarea::-webkit-scrollbar-track{background:#f1f1f1}textarea::-webkit-scrollbar-thumb{border-radius:12px;background:var(--scroll-color-thumb, #808080)}textarea::-webkit-scrollbar-thumb:hover{background:var(--scroll-color-hover, #5c5c5c)}textarea:focus{outline:none!important;border:1px solid lightblue!important}textarea:focus ion-label{color:var(--ion-color-label-focus, blue)!important}.item-has-focus ion-label{color:var(--ion-color-label-focus, blue)!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
3655
3713
  }
3656
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputAreaComponent, decorators: [{
3714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputAreaComponent, decorators: [{
3657
3715
  type: Component,
3658
3716
  args: [{ selector: 'kb-input-area', imports: [IonButton, IonIcon, IonTextarea, IonLabel, IonItem,], changeDetection: ChangeDetectionStrategy.Eager, providers: [{
3659
3717
  provide: NG_VALUE_ACCESSOR,
3660
3718
  useExisting: InputAreaComponent,
3661
3719
  multi: true
3662
- }], template: "<div [class]=\"{ 'input-text-padding': !classic }\">\r\n @if (classic) {\r\n <ion-item lines=\"none\" style=\"--background-focused: transparent;\" [class]=\"itemClass\" #itemArea>\r\n <ion-label position=\"{{ labelPosition }}\">{{ label }}\r\n @if (showObrigatorio) {\r\n <span \r\n class=\"label-tip-obrigatorio\">{{\r\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\r\n </span>\r\n }\r\n </ion-label>\r\n <!-- formControlName=\"{{ formControlName }}\" -->\r\n <textarea #inputArea [placeholder]=\"placeholder\" [maxLength]=\"max\" (ionBlur)=\"onBlur()\" [value]=\"data\"\r\n [rows]=\"linhas\" (input)=\"writeValue(inputArea.value)\" [disabled]=\"readonly\" (focus)=\"entered()\"></textarea>\r\n </ion-item>\r\n } @else {\r\n\r\n <ion-textarea #inputArea [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\" [maxlength]=\"max\" class=\"modern\"\r\n [rows]=\"linhas\" (input)=\"writeValue(inputArea.value)\" (ionBlur)=\"onBlur()\" (ionInput)=\"onInputChange($event)\"\r\n [value]=\"data\" mode=\"md\" [counter]=\"contador\" [placeholder]=\"placeholder\">\r\n\r\n @if (icon || iconSrc) {\r\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\r\n }\r\n @if (showSeeCopy) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\r\n (click)=\"copiarClick()\">\r\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n\r\n </ion-textarea>\r\n\r\n }\r\n\r\n @if (form) {\r\n <div class=\"validation-errors\">\r\n\r\n @for (validation of validation_messages; track validation.type) {\r\n <ng-container>\r\n @if (form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\r\n form.get(formControlName)?.touched)) {\r\n <div class=\"error-message\">\r\n &#8226; {{ validation.message }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>", styles: ["@charset \"UTF-8\";ion-label{margin-bottom:4px!important}ion-textarea{padding:var(--input-padding)!important;border-radius:4px;width:100%;margin-top:2px}textarea{padding:var(--input-padding, 8px)!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;resize:none;background-color:#fff}textarea::-webkit-scrollbar{width:10px;height:10px}textarea::-webkit-scrollbar-track{background:#f1f1f1}textarea::-webkit-scrollbar-thumb{border-radius:12px;background:var(--scroll-color-thumb, #808080)}textarea::-webkit-scrollbar-thumb:hover{background:var(--scroll-color-hover, #5c5c5c)}textarea:focus{outline:none!important;border:1px solid lightblue!important}textarea:focus ion-label{color:var(--ion-color-label-focus, blue)!important}.item-has-focus ion-label{color:var(--ion-color-label-focus, blue)!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"] }]
3720
+ }], template: "<div [class]=\"{ 'input-text-padding': !classic }\">\r\n @if (classic) {\r\n <ion-item lines=\"none\" style=\"--background-focused: transparent;\" [class]=\"itemClass\" #itemArea>\r\n <ion-label position=\"{{ labelPosition }}\">{{ label }}\r\n @if (showObrigatorio) {\r\n <span class=\"label-tip-obrigatorio\">{{\r\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\r\n </span>\r\n }\r\n </ion-label>\r\n <!-- formControlName=\"{{ formControlName }}\" -->\r\n <textarea #inputArea [placeholder]=\"placeholder\" [maxLength]=\"max\" (ionBlur)=\"onBlur()\" [value]=\"data\"\r\n [rows]=\"linhas\" (input)=\"writeValue(inputArea.value)\" [disabled]=\"readonly\" (focus)=\"entered()\"></textarea>\r\n </ion-item>\r\n } @else {\r\n\r\n <ion-textarea #inputArea [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\" [maxlength]=\"max\"\r\n class=\"modern\" [rows]=\"linhas\" (input)=\"writeValue(inputArea.value)\" (ionBlur)=\"onBlur()\"\r\n (ionInput)=\"onInputChange($event)\" [value]=\"data\" mode=\"md\" [counter]=\"contador\" [placeholder]=\"placeholder\">\r\n\r\n @if (icon || iconSrc) {\r\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\r\n }\r\n @if (showSeeCopy) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\r\n (click)=\"copiarClick()\">\r\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n\r\n </ion-textarea>\r\n\r\n }\r\n\r\n @if (form) {\r\n <div class=\"validation-errors\">\r\n\r\n @for (validation of validation_messages; track validation.type) {\r\n <ng-container>\r\n @if (form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\r\n form.get(formControlName)?.touched)) {\r\n <div class=\"error-message\">\r\n &#8226; {{ validation.message }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>", styles: ["@charset \"UTF-8\";ion-label{margin-bottom:4px!important}ion-textarea{padding:var(--input-padding)!important;border-radius:4px;width:100%;margin-top:2px}textarea{padding:var(--input-padding, 8px)!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;resize:none;background-color:#fff}textarea::-webkit-scrollbar{width:10px;height:10px}textarea::-webkit-scrollbar-track{background:#f1f1f1}textarea::-webkit-scrollbar-thumb{border-radius:12px;background:var(--scroll-color-thumb, #808080)}textarea::-webkit-scrollbar-thumb:hover{background:var(--scroll-color-hover, #5c5c5c)}textarea:focus{outline:none!important;border:1px solid lightblue!important}textarea:focus ion-label{color:var(--ion-color-label-focus, blue)!important}.item-has-focus ion-label{color:var(--ion-color-label-focus, blue)!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"] }]
3663
3721
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { linhas: [{
3664
3722
  type: Input
3665
3723
  }], contador: [{
@@ -3830,14 +3888,14 @@ class InputCepComponent extends BaseInputComponent {
3830
3888
  };
3831
3889
  });
3832
3890
  }
3833
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputCepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3834
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputCepComponent, isStandalone: true, selector: "kb-input-cep", inputs: { formato: "formato", keyEnter: "keyEnter" }, outputs: { getResultados: "getResultados", inputChange: "inputChange" }, providers: [{
3891
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputCepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3892
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputCepComponent, isStandalone: true, selector: "kb-input-cep", inputs: { formato: "formato", keyEnter: "keyEnter" }, outputs: { getResultados: "getResultados", inputChange: "inputChange" }, providers: [{
3835
3893
  provide: NG_VALUE_ACCESSOR,
3836
3894
  useExisting: InputCepComponent,
3837
3895
  multi: true
3838
- }], usesInheritance: true, ngImport: i0, template: "<!--\n<div [formGroup]=\"form\">\n-->\n<!--comando --inner-padding-end: utilizado pra remover padding desnecess\u00E1rios-->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n @if (classic) {\n <ion-item lines=\"none\" style=\"--background: inherited;--background-focused: transparent;--inner-padding-end: 0px;\"\n [class]=\"itemClass + ' classic'\"\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n <ion-label [position]=\"labelPosition\">{{ label }}\n @if (showObrigatorio) {\n <span class=\"label-tip-obrigatorio\">{{\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\n </span>\n }\n </ion-label>\n <!-- formControlName={{formControlName}} -->\n <ion-input #inputCep type=\"tel\" [placeholder]=\"placeholder\" [maxlength]=\"max\"\n (keydown)=\"digitarFormatado($event)\" (keyup.enter)=\"onKeyEnter()\" (ionBlur)=\"onBlur()\" [value]=\"data\"\n (input)=\"writeValue(inputCep.value)\" [disabled]=\"readonly\"></ion-input>\n\n <ion-button fill=\"clear\" slot=\"end\" tabindex=\"-1\" color=\"medium\" class=\"btn-show-password\"\n (click)=\"pesquisarClick()\">\n <ion-icon color=\"primary\" name=\"search\"></ion-icon>\n </ion-button>\n\n </ion-item>\n } @else {\n <ion-input #inputCep type=\"tel\" [placeholder]=\"placeholder\" [maxlength]=\"max\" [label]=\"label\"\n [labelPlacement]=\"labelPosition\" fill=\"outline\" class=\"modern\" (keydown)=\"digitarFormatado($event)\"\n (keyup.enter)=\"onKeyEnter()\" (ionBlur)=\"onBlur()\" [value]=\"data\" (ionInput)=\"onInputChange($event)\"\n (input)=\"writeValue(inputCep.value)\" [disabled]=\"readonly\">\n\n <ion-button fill=\"clear\" slot=\"end\" tabindex=\"-1\" color=\"medium\" class=\"btn-show-password\"\n (click)=\"pesquisarClick()\">\n <ion-icon color=\"primary\" name=\"search\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-input>\n }\n @if (form) {\n <div class=\"validation-errors\">\n @for (validation of validation_messages; track validation.type) {\n <ng-container>\n @if (form && form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty\n || form.get(formControlName)?.touched)) {\n <div class=\"error-message\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: [".classic .btn-show-password{margin-top:auto;margin-bottom:calc((var(--input-min-height, 30px) - 30px) * .57142857 + 2px);margin-left:4px}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
3896
+ }], usesInheritance: true, ngImport: i0, template: "<!--\n<div [formGroup]=\"form\">\n-->\n<!--comando --inner-padding-end: utilizado pra remover padding desnecess\u00E1rios-->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n @if (classic) {\n <ion-item lines=\"none\" style=\"--background: inherited;--background-focused: transparent;--inner-padding-end: 0px;\"\n [class]=\"itemClass + ' classic'\"\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n <ion-label [position]=\"labelPosition\">{{ label }}\n @if (showObrigatorio) {\n <span class=\"label-tip-obrigatorio\">{{\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\n </span>\n }\n </ion-label>\n <!-- formControlName={{formControlName}} -->\n <ion-input #inputCep type=\"tel\" [placeholder]=\"placeholder\" [maxlength]=\"max\"\n (keydown)=\"digitarFormatado($event)\" (keyup.enter)=\"onKeyEnter()\" (ionBlur)=\"onBlur()\" [value]=\"data\"\n (input)=\"writeValue(inputCep.value)\" [disabled]=\"readonly\"></ion-input>\n\n <ion-button fill=\"clear\" slot=\"end\" tabindex=\"-1\" color=\"medium\" class=\"btn-show-password\"\n (click)=\"pesquisarClick()\">\n <ion-icon color=\"primary\" name=\"search\"></ion-icon>\n </ion-button>\n\n </ion-item>\n } @else {\n <ion-input #inputCep type=\"tel\" [placeholder]=\"placeholder\" [maxlength]=\"max\" [label]=\"label\"\n [labelPlacement]=\"labelPosition\" fill=\"outline\" class=\"modern\" (keydown)=\"digitarFormatado($event)\"\n (keyup.enter)=\"onKeyEnter()\" (ionBlur)=\"onBlur()\" [value]=\"data\" (ionInput)=\"onInputChange($event)\"\n (input)=\"writeValue(inputCep.value)\" [disabled]=\"readonly\">\n\n <ion-button fill=\"clear\" slot=\"end\" tabindex=\"-1\" color=\"medium\" class=\"btn-show-password\"\n (click)=\"pesquisarClick()\">\n <ion-icon color=\"primary\" name=\"search\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-input>\n }\n @if (form) {\n <div class=\"validation-errors\">\n @for (validation of validation_messages; track validation.type) {\n <ng-container>\n @if (form && form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty\n || form.get(formControlName)?.touched)) {\n <div class=\"error-message\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: [".classic .btn-show-password{margin-top:auto;margin-bottom:calc((var(--input-min-height, 30px) - 30px) * .57142857 + 2px);margin-left:4px}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
3839
3897
  }
3840
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputCepComponent, decorators: [{
3898
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputCepComponent, decorators: [{
3841
3899
  type: Component,
3842
3900
  args: [{ selector: 'kb-input-cep', imports: [IonIcon, IonButton, IonInput, IonLabel, IonItem, NgClass], changeDetection: ChangeDetectionStrategy.Eager, providers: [{
3843
3901
  provide: NG_VALUE_ACCESSOR,
@@ -4005,16 +4063,16 @@ class InputValorComponent extends BaseInputComponent {
4005
4063
  setFocus() {
4006
4064
  this.inputValorEdit.nativeElement.setFocus();
4007
4065
  }
4008
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputValorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4009
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputValorComponent, isStandalone: true, selector: "kb-input-valor", inputs: { maxValor: "maxValor" }, outputs: { inputChange: "inputChange" }, providers: [
4066
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputValorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4067
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputValorComponent, isStandalone: true, selector: "kb-input-valor", inputs: { maxValor: "maxValor" }, outputs: { inputChange: "inputChange" }, providers: [
4010
4068
  {
4011
4069
  provide: NG_VALUE_ACCESSOR,
4012
4070
  useExisting: InputValorComponent,
4013
4071
  multi: true,
4014
4072
  },
4015
- ], viewQueries: [{ propertyName: "inputValorEdit", first: true, predicate: ["inputValor"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<!--\n<div [formGroup]=\"form\">\n-->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n @if (classic) {\n <ion-item lines=\"none\" style=\"--background-focused: transparent;\" [class]=\"itemClass\"\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n <ion-label position=\"{{ labelPosition }}\">{{ label }}\n @if (showObrigatorio) {\n <span class=\"label-tip-obrigatorio\">{{\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\n </span>\n }\n </ion-label>\n <!-- formControlName=\"{{ formControlName }}\" -->\n <ion-input #inputValor type=\"text\" [placeholder]=\"placeholder\" maxlength=\"{{ max }}\" (ionBlur)=\"onBlur()\"\n [value]=\"data\" (input)=\"writeValue(inputValor.value)\" (keypress)=\"digitarValor($event)\"\n [clearInput]=\"botaoLimpar\" [disabled]=\"readonly\"></ion-input>\n </ion-item>\n } @else {\n <ion-input #inputValor type=\"text\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\n [placeholder]=\"placeholder\" class=\"modern\" [maxlength]=\"max\" (ionBlur)=\"onBlur()\" [value]=\"data\"\n (input)=\"writeValue(inputValor.value)\" (keypress)=\"digitarValor($event)\" (ionInput)=\"onInputChange($event)\"\n mode=\"md\" [clearInput]=\"botaoLimpar\" [disabled]=\"readonly\">\n @if (icon || iconSrc) {\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\n }\n @if (showSeeCopy) {\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\n (click)=\"copiarClick()\">\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\n </ion-button>\n\n }\n\n </ion-input>\n }\n\n @if (form) {\n <div class=\"validation-errors\">\n @for (validation of validation_messages; track validation.type) {\n <ng-container>\n @if (form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: ["", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4073
+ ], viewQueries: [{ propertyName: "inputValorEdit", first: true, predicate: ["inputValor"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<!--\n<div [formGroup]=\"form\">\n-->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n @if (classic) {\n <ion-item lines=\"none\" style=\"--background-focused: transparent;\" [class]=\"itemClass\"\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n <ion-label position=\"{{ labelPosition }}\">{{ label }}\n @if (showObrigatorio) {\n <span class=\"label-tip-obrigatorio\">{{\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\n </span>\n }\n </ion-label>\n <!-- formControlName=\"{{ formControlName }}\" -->\n <ion-input #inputValor type=\"text\" [placeholder]=\"placeholder\" maxlength=\"{{ max }}\" (ionBlur)=\"onBlur()\"\n [value]=\"data\" (input)=\"writeValue(inputValor.value)\" (keypress)=\"digitarValor($event)\"\n [clearInput]=\"botaoLimpar\" [disabled]=\"readonly\"></ion-input>\n </ion-item>\n } @else {\n <ion-input #inputValor type=\"text\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\n [placeholder]=\"placeholder\" class=\"modern\" [maxlength]=\"max\" (ionBlur)=\"onBlur()\" [value]=\"data\"\n (input)=\"writeValue(inputValor.value)\" (keypress)=\"digitarValor($event)\" (ionInput)=\"onInputChange($event)\"\n mode=\"md\" [clearInput]=\"botaoLimpar\" [disabled]=\"readonly\">\n @if (icon || iconSrc) {\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\n }\n @if (showSeeCopy) {\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\n (click)=\"copiarClick()\">\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\n </ion-button>\n\n }\n\n </ion-input>\n }\n\n @if (form) {\n <div class=\"validation-errors\">\n @for (validation of validation_messages; track validation.type) {\n <ng-container>\n @if (form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: ["", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4016
4074
  }
4017
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputValorComponent, decorators: [{
4075
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputValorComponent, decorators: [{
4018
4076
  type: Component,
4019
4077
  args: [{ selector: 'kb-input-valor', imports: [IonButton, IonIcon, IonInput, IonLabel, IonItem, NgClass], changeDetection: ChangeDetectionStrategy.Eager, providers: [
4020
4078
  {
@@ -4060,14 +4118,14 @@ class InputCheckboxComponent extends BaseInputComponent {
4060
4118
  }
4061
4119
  ngOnInit() {
4062
4120
  }
4063
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4064
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: InputCheckboxComponent, isStandalone: true, selector: "kb-input-checkbox", inputs: { justify: "justify", labelPlacement: "labelPlacement" }, providers: [{
4121
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4122
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: InputCheckboxComponent, isStandalone: true, selector: "kb-input-checkbox", inputs: { justify: "justify", labelPlacement: "labelPlacement" }, providers: [{
4065
4123
  provide: NG_VALUE_ACCESSOR,
4066
4124
  useExisting: InputCheckboxComponent,
4067
4125
  multi: true
4068
- }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"{ 'input-text-padding': !classic }\">\n <ion-item lines=\"none\" style=\"--background: inherited; --background-focused: transparent; padding-right: 0px; --background-hover: transparent\" [class]=\"itemClass\">\n <ion-checkbox #inputCheck\n [labelPlacement]=\"labelPlacement\" [justify]=\"justify\" \n [disabled]=\"readonly\"\n [checked]=\"data\"\n [color]=\"labelColor ?? 'primary'\" \n (ionChange)=\"writeValue(inputCheck.checked)\">\n <span [style.color]=\"labelColor ?? 'auto'\">{{ label }}</span> \n </ion-checkbox>\n </ion-item>\n</div>", styles: ["ion-item{--min-height: var(--checkbox-min-height, 48px) !important}ion-checkbox.checkbox-disabled{opacity:var(--item-disabled-opacity, .6)!important}span{color:var(--checkbox-text-color, \"inherit\")!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }] });
4126
+ }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"{ 'input-text-padding': !classic }\">\n <ion-item lines=\"none\" style=\"--background: inherited; --background-focused: transparent; padding-right: 0px; --background-hover: transparent\" [class]=\"itemClass\">\n <ion-checkbox #inputCheck\n [labelPlacement]=\"labelPlacement\" [justify]=\"justify\" \n [disabled]=\"readonly\"\n [checked]=\"data\"\n [color]=\"labelColor ?? 'primary'\" \n (ionChange)=\"writeValue(inputCheck.checked)\">\n <span [style.color]=\"labelColor ?? 'auto'\">{{ label }}</span> \n </ion-checkbox>\n </ion-item>\n</div>", styles: ["ion-item{--min-height: var(--checkbox-min-height, 48px) !important}ion-checkbox.checkbox-disabled{opacity:var(--item-disabled-opacity, .6)!important}span{color:var(--checkbox-text-color, \"inherit\")!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }] });
4069
4127
  }
4070
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputCheckboxComponent, decorators: [{
4128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputCheckboxComponent, decorators: [{
4071
4129
  type: Component,
4072
4130
  args: [{ selector: 'kb-input-checkbox', imports: [IonCheckbox, IonItem,], providers: [{
4073
4131
  provide: NG_VALUE_ACCESSOR,
@@ -4197,14 +4255,14 @@ class InputFormatComponent extends BaseInputComponent {
4197
4255
  return valor;
4198
4256
  }
4199
4257
  }
4200
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputFormatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4201
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputFormatComponent, isStandalone: true, selector: "kb-input-format", inputs: { formato: "formato", keyEnter: "keyEnter" }, outputs: { inputChange: "inputChange" }, providers: [{
4258
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputFormatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4259
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputFormatComponent, isStandalone: true, selector: "kb-input-format", inputs: { formato: "formato", keyEnter: "keyEnter" }, outputs: { inputChange: "inputChange" }, providers: [{
4202
4260
  provide: NG_VALUE_ACCESSOR,
4203
4261
  useExisting: InputFormatComponent,
4204
4262
  multi: true
4205
4263
  }], viewQueries: [{ propertyName: "inputFormatEdit", first: true, predicate: ["inputFormat"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<!--\n<div [formGroup]=\"form\">\n-->\n<!--comando --inner-padding-end: utilizado pra remover padding desnecess\u00E1rios-->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n @if (classic) {\n <ion-item lines=\"none\" style=\"--background: inherited;--background-focused: transparent;--inner-padding-end: 0px;\"\n [class]=\"itemClass + ' classic'\"\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n <ion-label [position]=\"labelPosition\">{{ label }}\n @if (showObrigatorio) {\n <span class=\"label-tip-obrigatorio\">{{\n form?.get(formControlName)?.hasError('required') ? ' \u25CF' : ''}}\n </span>\n }\n </ion-label>\n <!-- formControlName={{formControlName}} -->\n <ion-input #inputFormat type=\"tel\" [placeholder]=\"placeholder\" maxlength=\"{{ max }}\"\n (keydown)=\"digitarFormatado($event)\" (keyup.enter)=\"onKeyEnter()\" (ionBlur)=\"onBlur()\" [value]=\"data\"\n (input)=\"writeValue(inputFormat.value)\" [disabled]=\"readonly\"></ion-input>\n\n </ion-item>\n } @else {\n <ion-input #inputFormat type=\"tel\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\" \n [placeholder]=\"placeholder\" class=\"modern\" maxlength=\"{{ max }}\" \n [value]=\"data\" mode=\"md\"\n (input)=\"writeValue(inputFormat.value)\" \n (ionInput)=\"onInputChange($event)\" \n (ionBlur)=\"onBlur()\" \n (keydown)=\"digitarFormatado($event)\"\n (keyup.enter)=\"onKeyEnter()\" \n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake-modern' : '' \"\n [disabled]=\"readonly\" [shape]=\"shape\">\n\n @if (icon || iconSrc) {\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\n }\n </ion-input>\n\n }\n\n @if (form) {\n <div class=\"validation-errors\">\n @for (validation of validation_messages; track validation.type) {\n <ng-container>\n @if (form && form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: [".item-inner{padding-right:0!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4206
4264
  }
4207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputFormatComponent, decorators: [{
4265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputFormatComponent, decorators: [{
4208
4266
  type: Component,
4209
4267
  args: [{ selector: 'kb-input-format', imports: [IonIcon, IonInput, IonLabel, IonItem, NgClass], changeDetection: ChangeDetectionStrategy.Eager, providers: [{
4210
4268
  provide: NG_VALUE_ACCESSOR,
@@ -4305,16 +4363,16 @@ class InputSelectComponent extends BaseInputComponent {
4305
4363
  catch {
4306
4364
  }
4307
4365
  }
4308
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputSelectComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4309
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputSelectComponent, isStandalone: true, selector: "kb-input-select", inputs: { itens: "itens", itemId: "itemId", itemNome: "itemNome", showNovo: "showNovo", itemNull: "itemNull", opcaoDefault: "opcaoDefault", interface: "interface" }, outputs: { selectChange: "selectChange", selectChangeEntity: "selectChangeEntity" }, providers: [
4366
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputSelectComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
4367
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputSelectComponent, isStandalone: true, selector: "kb-input-select", inputs: { itens: "itens", itemId: "itemId", itemNome: "itemNome", showNovo: "showNovo", itemNull: "itemNull", opcaoDefault: "opcaoDefault", interface: "interface" }, outputs: { selectChange: "selectChange", selectChangeEntity: "selectChangeEntity" }, providers: [
4310
4368
  {
4311
4369
  provide: NG_VALUE_ACCESSOR,
4312
4370
  useExisting: InputSelectComponent,
4313
4371
  multi: true,
4314
4372
  }
4315
- ], viewQueries: [{ propertyName: "itemSelect", first: true, predicate: ["itemSelect"], descendants: true, read: ElementRef }, { propertyName: "inputSelect", first: true, predicate: ["inputSelect"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<!--\n<div [formGroup]=\"form\">\n [style.opacity]=\"readonly ? 0.5 : 1\"\n [color]=\"labelColor\"\n-->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n @if(classic) {\n <ion-item lines=\"none\" style=\"--background: inherited; --background-focused: transparent;\"\n [class]=\"itemClass + ' classic'\" id=\"item-select\" #itemSelect\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n @if (label) {\n <ion-label style=\"color: var(--input-label-color);\" [position]=\"labelPosition\" class=\"label-color\">{{ label\n }}</ion-label>\n }\n <!-- formControlName=\"{{ formControlName }}\" -->\n <select [tabindex]=\"tabindex\" #inputSelect\n style=\"background-color: var(--input-color); color: var(--input-text-color); width: 100%;\"\n (change)=\"onSelectChange(inputSelect.value)\" (blur)=\"onBlur()\" [disabled]=\"readonly\" (focus)=\"entered()\">\n @if (itemNull) {\n <option [value]=\"''\" selected=\"true\">{{ opcaoDefault }}</option>\n }\n @for(item of itens; track item[itemId]) {\n <option [value]=\"item[itemId]\" [selected]=\"item[itemId] == data\">{{ item[itemNome] }}\n </option>\n }\n </select>\n @if(showSeeCopy) {\n <ion-button size=\"small\" slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\"\n color=\"dark\" (click)=\"copiarClick()\" [disabled]=\"!data\">\n <ion-icon name=\"copy-outline\"></ion-icon>\n </ion-button>\n }\n </ion-item>\n } @else {\n\n <ion-select aria-label=\"Fruit\" [interface]=\"interface\" [placeholder]=\"placeholder\" [fill]=\"fill\"\n [labelPlacement]=\"labelPosition\" [label]=\"label\" [disabled]=\"readonly\" [value]=\"data\" [mode]=\"mode\"\n (ionChange)=\"onSelectChange($event.detail.value)\">\n @if (icon) {\n <ion-icon slot=\"start\" [icon]=\"icon\" aria-hidden=\"true\"></ion-icon>\n }\n @if (itemNull) {\n <ion-select-option [value]=\"''\" selected=\"true\">{{ opcaoDefault }}</ion-select-option>\n }\n @for(item of itens; track item[itemId]) {\n <ion-select-option [value]=\"item[itemId]\">{{ item[itemNome] }}\n </ion-select-option>\n }\n @if (showSeeCopy) {\n <ion-button fill=\"clear\" slot=\"end\" (click)=\"copiarClick()\">\n <ion-icon slot=\"icon-only\" name=\"copy-outline\" aria-hidden=\"true\"></ion-icon>\n </ion-button>\n }\n </ion-select>\n\n\n }\n\n @if (form) {\n <div class=\"validation-errors\">\n @for(validation of validation_messages; track validation.type) {\n <ng-container>\n @if(form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\" [ngClass]=\"validationClass\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: [".classic select{padding:2px;background-color:#fff;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;margin-left:0;transition:.2s ease}select:disabled{opacity:.6}select:disabled ion-label{opacity:.6!important}ion-label{--color: var(--focus-color, --color) !important}select:focus{outline:none!important;--focus-color: blue;border:1px solid lightblue!important}.item-has-focus ion-label{color:#00f!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4373
+ ], viewQueries: [{ propertyName: "itemSelect", first: true, predicate: ["itemSelect"], descendants: true, read: ElementRef }, { propertyName: "inputSelect", first: true, predicate: ["inputSelect"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<!--\n<div [formGroup]=\"form\">\n [style.opacity]=\"readonly ? 0.5 : 1\"\n [color]=\"labelColor\"\n-->\n<div [class]=\"{ 'input-text-padding': !classic }\">\n @if(classic) {\n <ion-item lines=\"none\" style=\"--background: inherited; --background-focused: transparent;\"\n [class]=\"itemClass + ' classic'\" id=\"item-select\" #itemSelect\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\n @if (label) {\n <ion-label style=\"color: var(--input-label-color);\" [position]=\"labelPosition\" class=\"label-color\">{{ label\n }}</ion-label>\n }\n <!-- formControlName=\"{{ formControlName }}\" -->\n <select [tabindex]=\"tabindex\" #inputSelect\n style=\"background-color: var(--input-color); color: var(--input-text-color); width: 100%;\"\n (change)=\"onSelectChange(inputSelect.value)\" (blur)=\"onBlur()\" [disabled]=\"readonly\" (focus)=\"entered()\">\n @if (itemNull) {\n <option [value]=\"''\" selected=\"true\">{{ opcaoDefault }}</option>\n }\n @for(item of itens; track item[itemId]) {\n <option [value]=\"item[itemId]\" [selected]=\"item[itemId] == data\">{{ item[itemNome] }}\n </option>\n }\n </select>\n @if(showSeeCopy) {\n <ion-button size=\"small\" slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\"\n color=\"dark\" (click)=\"copiarClick()\" [disabled]=\"!data\">\n <ion-icon name=\"copy-outline\"></ion-icon>\n </ion-button>\n }\n </ion-item>\n } @else {\n\n <ion-select aria-label=\"Fruit\" [interface]=\"interface\" [placeholder]=\"placeholder\" [fill]=\"fill\"\n [labelPlacement]=\"labelPosition\" [label]=\"label\" [disabled]=\"readonly\" [value]=\"data\" [mode]=\"mode\"\n (ionChange)=\"onSelectChange($event.detail.value)\">\n @if (icon) {\n <ion-icon slot=\"start\" [icon]=\"icon\" aria-hidden=\"true\"></ion-icon>\n }\n @if (itemNull) {\n <ion-select-option [value]=\"''\" selected=\"true\">{{ opcaoDefault }}</ion-select-option>\n }\n @for(item of itens; track item[itemId]) {\n <ion-select-option [value]=\"item[itemId]\">{{ item[itemNome] }}\n </ion-select-option>\n }\n @if (showSeeCopy) {\n <ion-button fill=\"clear\" slot=\"end\" (click)=\"copiarClick()\">\n <ion-icon slot=\"icon-only\" name=\"copy-outline\" aria-hidden=\"true\"></ion-icon>\n </ion-button>\n }\n </ion-select>\n\n\n }\n\n @if (form) {\n <div class=\"validation-errors\">\n @for(validation of validation_messages; track validation.type) {\n <ng-container>\n @if(form.get(formControlName)?.hasError(validation.type) && (form.get(formControlName)?.dirty ||\n form.get(formControlName)?.touched)) {\n <div class=\"error-message\" [ngClass]=\"validationClass\">\n &#8226; {{ validation.message }}\n </div>\n }\n </ng-container>\n }\n </div>\n }\n</div>", styles: [".classic select{padding:2px;background-color:#fff;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;margin-left:0;transition:.2s ease}select:disabled{opacity:.6}select:disabled ion-label{opacity:.6!important}ion-label{--color: var(--focus-color, --color) !important}select:focus{outline:none!important;--focus-color: blue;border:1px solid lightblue!important}.item-has-focus ion-label{color:#00f!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["description", "disabled", "justify", "labelPlacement", "mode", "value"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4316
4374
  }
4317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputSelectComponent, decorators: [{
4375
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputSelectComponent, decorators: [{
4318
4376
  type: Component,
4319
4377
  args: [{ selector: 'kb-input-select', imports: [IonIcon, IonButton, IonLabel, IonItem, IonSelect, IonSelectOption, NgClass], changeDetection: ChangeDetectionStrategy.Eager, providers: [
4320
4378
  {
@@ -4382,14 +4440,14 @@ class InputRadioComponent extends BaseInputComponent {
4382
4440
  }
4383
4441
  ngOnInit() {
4384
4442
  }
4385
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4386
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: InputRadioComponent, isStandalone: true, selector: "kb-input-radio", inputs: { itens: "itens", itemId: "itemId", itemNome: "itemNome", color: "color" }, providers: [{
4443
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4444
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: InputRadioComponent, isStandalone: true, selector: "kb-input-radio", inputs: { itens: "itens", itemId: "itemId", itemNome: "itemNome", color: "color" }, providers: [{
4387
4445
  provide: NG_VALUE_ACCESSOR,
4388
4446
  useExisting: InputRadioComponent,
4389
4447
  multi: true
4390
- }], usesInheritance: true, ngImport: i0, template: "<div>\n <ion-item lines=\"none\" style=\"--background: inherited; --background-focused: transparent; padding-right: 0px;\" [class]=\"itemClass\"\n [style.opacity]=\"readonly ? '0.5' : '1'\">\n <ion-radio-group #inputRadio \n [value]=\"data\"\n (ionChange)=\"writeValue(inputRadio.value)\">\n <span style=\"font-size: 13px\">\n {{ label }}\n </span>\n <ion-row>\n <ion-col *ngFor=\"let item of itens\">\n <ion-radio style=\"margin-right: 12px;\" [color]=\"color\" \n labelPlacement=\"end\" \n justify=\"start\"\n [disabled]=\"readonly\"\n [value]=\"item[itemId]\">\n {{ item[itemNome] }}</ion-radio><br />\n </ion-col>\n </ion-row>\n </ion-radio-group>\n </ion-item>\n</div>", styles: ["ion-item{--min-height: var(--checkbox-min-height, 48px) !important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "name", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4448
+ }], usesInheritance: true, ngImport: i0, template: "<div>\n <ion-item lines=\"none\" style=\"--background: inherited; --background-focused: transparent; padding-right: 0px;\" [class]=\"itemClass\"\n [style.opacity]=\"readonly ? '0.5' : '1'\">\n <ion-radio-group #inputRadio \n [value]=\"data\"\n (ionChange)=\"writeValue(inputRadio.value)\">\n <span style=\"font-size: 13px\">\n {{ label }}\n </span>\n <ion-row>\n <ion-col *ngFor=\"let item of itens\">\n <ion-radio style=\"margin-right: 12px;\" [color]=\"color\" \n labelPlacement=\"end\" \n justify=\"start\"\n [disabled]=\"readonly\"\n [value]=\"item[itemId]\">\n {{ item[itemNome] }}</ion-radio><br />\n </ion-col>\n </ion-row>\n </ion-radio-group>\n </ion-item>\n</div>", styles: ["ion-item{--min-height: var(--checkbox-min-height, 48px) !important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4391
4449
  }
4392
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputRadioComponent, decorators: [{
4450
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputRadioComponent, decorators: [{
4393
4451
  type: Component,
4394
4452
  args: [{ selector: 'kb-input-radio', imports: [IonRadio, IonCol, IonRow, IonRadioGroup, IonItem,], changeDetection: ChangeDetectionStrategy.Eager, providers: [{
4395
4453
  provide: NG_VALUE_ACCESSOR,
@@ -4422,10 +4480,10 @@ class EntityEditComponent {
4422
4480
  }
4423
4481
  emptyHandler() {
4424
4482
  }
4425
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: EntityEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4426
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: EntityEditComponent, isStandalone: true, selector: "kb-entidade-edit", inputs: { entidade: "entidade", campos: "campos", entidadeForm: "entidadeForm", validation_messages: "validation_messages", itemClass: "itemClass", rowClass: "rowClass", showObrigatorio: "showObrigatorio" }, ngImport: i0, template: "<div>\n @if (campos && campos.length) {\n <form [formGroup]=\"entidadeForm\" style=\"width: 100%;\">\n\n @for (linha of campos; track linha.Linha) {\n <ion-row [class]=\"rowClass\">\n @for (campo of linha.Linha; track campo.Nome) {\n <ng-container>\n <!-- {{ campo.Nome }} {{ campo.Tipo }} -->\n\n <!-- [showCustomAction]=\"campo.InputAction ?? false\" [customActionIcon]=\"campo.InputActionIcon ?? 'search-outline'\" -->\n @if (campo.Tipo == 'input-text') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-text label=\"{{campo.Label ?? campo.Nome}}\"\n [placeholder]=\"campo.PlaceHolderVisivel ? (campo.PlaceHolder ? campo.PlaceHolder : (campo.Label ?? campo.Nome + '...')) : ''\" \n [form]=\"entidadeForm\"\n [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\"\n [type]=\"campo.TipoInput ?? 'text'\" [showSeePassword]=\"campo.TipoInput == 'password'\" \n (customActionClick)=\"campo.click ? campo.click($event) : emptyHandler()\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\">\n </kb-input-text>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-date') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-text label=\"{{campo.Label ?? campo.Nome}}\"\n [form]=\"entidadeForm\"\n [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\"\n type=\"date\" \n (customActionClick)=\"campo.click ? campo.click($event) : emptyHandler()\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\">\n </kb-input-text>\n </ion-col> \n } \n @else if (campo.Tipo == 'input-number') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-text label=\"{{campo.Label ?? campo.Nome}}\"\n [placeholder]=\"campo.PlaceHolderVisivel ? (campo.PlaceHolder ? campo.PlaceHolder : (campo.Label ?? campo.Nome + '...')) : ''\" \n [form]=\"entidadeForm\"\n [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\"\n type=\"number\" \n (customActionClick)=\"campo.click ? campo.click($event) : emptyHandler()\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\">\n </kb-input-text>\n </ion-col>\n \n }\n @else if (campo.Tipo == 'input-area') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-area label=\"{{campo.Label ?? campo.Nome}}\"\n [placeholder]=\"campo.PlaceHolderVisivel ? (campo.PlaceHolder ? campo.PlaceHolder : (campo.Label ?? campo.Nome + '...')) : ''\" \n [form]=\"entidadeForm\"\n [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\"\n [linhas]=\"campo.Linhas ?? 5\" [itemClass]=\"itemClass\" [showObrigatorio]=\"showObrigatorio\">\n </kb-input-area>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-cep') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-cep label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\" (getResultados)=\"campo.change ? campo.change($event) : emptyHandler()\">\n </kb-input-cep>\n </ion-col>\n }\n @else if(campo.Tipo == 'input-valor') {\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"\" [hidden]=\"campo.Hidden === true\">\n <kb-input-valor label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\">\n </kb-input-valor>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-checkbox') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-checkbox label=\"{{ campo.Label }}\" [form]=\"entidadeForm\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\" [itemClass]=\"itemClass\"\n [labelColor]=\"campo.BtnColor ?? 'dark'\">\n\n </kb-input-checkbox>\n </ion-col>\n }\n @else if(campo.Tipo == 'input-format') {\n\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-format label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\" [formato]=\"campo.Formato ?? ''\"\n [itemClass]=\"itemClass\" [showObrigatorio]=\"showObrigatorio\">\n </kb-input-format>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-select') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-select [label]=\"campo.Label ?? campo.Nome\" [placeholder]=\"'Selecionar...'\"\n [formControlName]=\"campo.Nome\" [form]=\"entidadeForm\" [itens]=\"campo.Itens!\" [itemId]=\"campo.ItemId ?? 'Id'\"\n [itemNome]=\"campo.ItemNome ?? 'Nome'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n (selectChangeEntity)=\"campo.change ? campo.change($event) : emptyHandler()\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\" [showObrigatorio]=\"showObrigatorio\">\n </kb-input-select>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-radio') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-radio [label]=\"campo.Label ?? campo.Nome\" [formControlName]=\"campo.Nome\" [form]=\"entidadeForm\"\n [itens]=\"campo.Itens!\" [itemId]=\"campo.ItemId ?? 'Id'\" [itemNome]=\"campo.ItemNome ?? 'Nome'\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\">\n </kb-input-radio>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-pesquisa') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-pesquisa #pesquisaCentroCustoPai [label]=\"campo.Label ?? campo.Nome\" [campoId]=\"campo.ItemId ?? 'Id'\"\n [focusField]=\"campo.focusField ?? false\" [formControlName]=\"campo.Nome\" \n [placeholder]=\"campo.PlaceHolderVisivel ? (campo.PlaceHolder ? campo.PlaceHolder : ('Pesquisar...')) : ''\"\n [campoDisplay]=\"campo.ItemNome ?? 'Nome'\" [form]=\"entidadeForm\" [tipo]=\"campo.TipoPesquisa ?? ''\"\n [urlItem]=\"campo.UrlItem ?? ''\" [max]=\"campo.Tamanho ?? '50'\" [url]=\"campo.UrlPesquisa ?? ''\"\n [readonly]=\"campo.ReadOnly\" (pesquisaChange)=\"campo.change ? campo.change($event) : emptyHandler()\"\n [itemClass]=\"itemClass\" [showObrigatorio]=\"showObrigatorio\">\n </kb-input-pesquisa>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-button') {\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"\">\n <!-- \n <kb-btn-action [title]=\"campo.Label\" [icon]=\"campo.Icon\" [iconSrc]=\"campo.IconSrc\" [color]=\"campo.BtnColor ?? 'light'\" \n [expand]=\"campo.BtnExpand ?? 'block'\" style=\"margin-top: var(--btn-action-margin-top, auto);\">\n </kb-btn-action>\n -->\n <ion-button [expand]=\"campo.BtnExpand ?? 'block'\" [color]=\"campo.BtnColor ?? 'light'\"\n (click)=\"campo.click ? campo.click($event) : emptyHandler()\" [size]=\"campo.BtnSize ?? 'default'\"\n [disabled]=\"campo.ReadOnly\">\n <ion-icon *ngIf=\"campo.Icon || campo.IconSrc\" [name]=\"campo.Icon\" [src]=\"campo.IconSrc\"></ion-icon>\n {{ campo.Label }}\n </ion-button>\n </ion-col>\n }\n @else if (campo.Tipo == 'col') {\n <ion-col *ngIf=\"campo.Tipo == 'col'\" size-md=\"1\" size-xs=\"0\">\n\n </ion-col>\n }\n @else if (campo.Tipo == 'sub-titulo') {\n <ion-col *ngIf=\"\" size=\"12\">\n <ion-list lines=\"none\" class=\"ion-no-padding\">\n <ion-list-header color=\"primary\" [style]=\"campo.CampoStyle ?? ''\">\n <ion-label [style]=\"campo.LabelStyle ?? ''\">{{ campo.Label }}</ion-label>\n </ion-list-header>\n </ion-list>\n </ion-col>\n }\n </ng-container>\n }\n </ion-row>\n }\n <!--\n <ion-col class=\"select ion-no-margin ion-no-padding\">\n <ion-item lines=\"none\">\n <ion-label>Totalizador</ion-label>\n <ion-checkbox slot=\"start\" formControlName=\"Totalizador\"></ion-checkbox>\n </ion-item>\n </ion-col>\n <ion-col class=\"select ion-no-margin ion-no-padding\">\n <ion-item lines=\"none\">\n <ion-label>Inativo</ion-label>\n <ion-checkbox slot=\"start\" formControlName=\"Inativo\"></ion-checkbox>\n </ion-item>\n </ion-col>\n -->\n </form>\n }\n</div>", styles: ["ion-list-header{text-align:center;font-size:large}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: InputTextComponent, selector: "kb-input-text", inputs: ["showSeePassword"], outputs: ["inputChange"] }, { kind: "component", type: InputPesquisaComponent, selector: "kb-input-pesquisa", inputs: ["textoPesquisa", "max", "filterFunction", "selectId", "campoId", "campoPaiId", "campoDisplay", "tipo", "url", "urlItem", "empresa", "loadInit", "urlTree", "treeTitulo"], outputs: ["pesquisaChange", "limpar"] }, { kind: "component", type: InputAreaComponent, selector: "kb-input-area", inputs: ["linhas", "contador"], outputs: ["inputChange"] }, { kind: "component", type: InputCepComponent, selector: "kb-input-cep", inputs: ["formato", "keyEnter"], outputs: ["getResultados", "inputChange"] }, { kind: "component", type: InputValorComponent, selector: "kb-input-valor", inputs: ["maxValor"], outputs: ["inputChange"] }, { kind: "component", type: InputCheckboxComponent, selector: "kb-input-checkbox", inputs: ["justify", "labelPlacement"] }, { kind: "component", type: InputFormatComponent, selector: "kb-input-format", inputs: ["formato", "keyEnter"], outputs: ["inputChange"] }, { kind: "component", type: InputSelectComponent, selector: "kb-input-select", inputs: ["itens", "itemId", "itemNome", "showNovo", "itemNull", "opcaoDefault", "interface"], outputs: ["selectChange", "selectChangeEntity"] }, { kind: "component", type: InputRadioComponent, selector: "kb-input-radio", inputs: ["itens", "itemId", "itemNome", "color"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4483
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: EntityEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4484
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: EntityEditComponent, isStandalone: true, selector: "kb-entidade-edit", inputs: { entidade: "entidade", campos: "campos", entidadeForm: "entidadeForm", validation_messages: "validation_messages", itemClass: "itemClass", rowClass: "rowClass", showObrigatorio: "showObrigatorio" }, ngImport: i0, template: "<div>\n @if (campos && campos.length) {\n <form [formGroup]=\"entidadeForm\" style=\"width: 100%;\">\n\n @for (linha of campos; track linha.Linha) {\n <ion-row [class]=\"rowClass\">\n @for (campo of linha.Linha; track campo.Nome) {\n <ng-container>\n <!-- {{ campo.Nome }} {{ campo.Tipo }} -->\n\n <!-- [showCustomAction]=\"campo.InputAction ?? false\" [customActionIcon]=\"campo.InputActionIcon ?? 'search-outline'\" -->\n @if (campo.Tipo == 'input-text') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-text label=\"{{campo.Label ?? campo.Nome}}\"\n [placeholder]=\"campo.PlaceHolderVisivel ? (campo.PlaceHolder ? campo.PlaceHolder : (campo.Label ?? campo.Nome + '...')) : ''\" \n [form]=\"entidadeForm\"\n [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\"\n [type]=\"campo.TipoInput ?? 'text'\" [showSeePassword]=\"campo.TipoInput == 'password'\" \n (customActionClick)=\"campo.click ? campo.click($event) : emptyHandler()\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\">\n </kb-input-text>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-date') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-text label=\"{{campo.Label ?? campo.Nome}}\"\n [form]=\"entidadeForm\"\n [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\"\n type=\"date\" \n (customActionClick)=\"campo.click ? campo.click($event) : emptyHandler()\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\">\n </kb-input-text>\n </ion-col> \n } \n @else if (campo.Tipo == 'input-number') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-text label=\"{{campo.Label ?? campo.Nome}}\"\n [placeholder]=\"campo.PlaceHolderVisivel ? (campo.PlaceHolder ? campo.PlaceHolder : (campo.Label ?? campo.Nome + '...')) : ''\" \n [form]=\"entidadeForm\"\n [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\"\n type=\"number\" \n (customActionClick)=\"campo.click ? campo.click($event) : emptyHandler()\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\">\n </kb-input-text>\n </ion-col>\n \n }\n @else if (campo.Tipo == 'input-area') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-area label=\"{{campo.Label ?? campo.Nome}}\"\n [placeholder]=\"campo.PlaceHolderVisivel ? (campo.PlaceHolder ? campo.PlaceHolder : (campo.Label ?? campo.Nome + '...')) : ''\" \n [form]=\"entidadeForm\"\n [max]=\"campo.Tamanho ?? '50'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n [formControlName]=\"campo.Nome\" [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\"\n [linhas]=\"campo.Linhas ?? 5\" [itemClass]=\"itemClass\" [showObrigatorio]=\"showObrigatorio\">\n </kb-input-area>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-cep') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-cep label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\" (getResultados)=\"campo.change ? campo.change($event) : emptyHandler()\">\n </kb-input-cep>\n </ion-col>\n }\n @else if(campo.Tipo == 'input-valor') {\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"\" [hidden]=\"campo.Hidden === true\">\n <kb-input-valor label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\" [itemClass]=\"itemClass\"\n [showObrigatorio]=\"showObrigatorio\">\n </kb-input-valor>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-checkbox') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-checkbox label=\"{{ campo.Label }}\" [form]=\"entidadeForm\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\" [itemClass]=\"itemClass\"\n [labelColor]=\"campo.BtnColor ?? 'dark'\">\n\n </kb-input-checkbox>\n </ion-col>\n }\n @else if(campo.Tipo == 'input-format') {\n\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-format label=\"{{campo.Label ?? campo.Nome}}\" [form]=\"entidadeForm\" [max]=\"campo.Tamanho ?? '50'\"\n [validation_messages]=\"validation_messages[campo.Nome]\" [formControlName]=\"campo.Nome\"\n [campoFoco]=\"campo.CampoFoco ?? ''\" [readonly]=\"campo.ReadOnly\" [formato]=\"campo.Formato ?? ''\"\n [itemClass]=\"itemClass\" [showObrigatorio]=\"showObrigatorio\">\n </kb-input-format>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-select') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-select [label]=\"campo.Label ?? campo.Nome\" [placeholder]=\"'Selecionar...'\"\n [formControlName]=\"campo.Nome\" [form]=\"entidadeForm\" [itens]=\"campo.Itens!\" [itemId]=\"campo.ItemId ?? 'Id'\"\n [itemNome]=\"campo.ItemNome ?? 'Nome'\" [validation_messages]=\"validation_messages[campo.Nome]\"\n (selectChangeEntity)=\"campo.change ? campo.change($event) : emptyHandler()\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\" [showObrigatorio]=\"showObrigatorio\">\n </kb-input-select>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-radio') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-radio [label]=\"campo.Label ?? campo.Nome\" [formControlName]=\"campo.Nome\" [form]=\"entidadeForm\"\n [itens]=\"campo.Itens!\" [itemId]=\"campo.ItemId ?? 'Id'\" [itemNome]=\"campo.ItemNome ?? 'Nome'\" [readonly]=\"campo.ReadOnly\"\n [itemClass]=\"itemClass\">\n </kb-input-radio>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-pesquisa') {\n <ion-col [sizeMd]=\"campo.Size\" [hidden]=\"campo.Hidden === true\">\n <kb-input-pesquisa #pesquisaCentroCustoPai [label]=\"campo.Label ?? campo.Nome\" [campoId]=\"campo.ItemId ?? 'Id'\"\n [focusField]=\"campo.focusField ?? false\" [formControlName]=\"campo.Nome\" \n [placeholder]=\"campo.PlaceHolderVisivel ? (campo.PlaceHolder ? campo.PlaceHolder : ('Pesquisar...')) : ''\"\n [campoDisplay]=\"campo.ItemNome ?? 'Nome'\" [form]=\"entidadeForm\" [tipo]=\"campo.TipoPesquisa ?? ''\"\n [urlItem]=\"campo.UrlItem ?? ''\" [max]=\"campo.Tamanho ?? '50'\" [url]=\"campo.UrlPesquisa ?? ''\"\n [readonly]=\"campo.ReadOnly\" (pesquisaChange)=\"campo.change ? campo.change($event) : emptyHandler()\"\n [itemClass]=\"itemClass\" [showObrigatorio]=\"showObrigatorio\">\n </kb-input-pesquisa>\n </ion-col>\n }\n @else if (campo.Tipo == 'input-button') {\n <ion-col [sizeMd]=\"campo.Size\" *ngIf=\"\">\n <!-- \n <kb-btn-action [title]=\"campo.Label\" [icon]=\"campo.Icon\" [iconSrc]=\"campo.IconSrc\" [color]=\"campo.BtnColor ?? 'light'\" \n [expand]=\"campo.BtnExpand ?? 'block'\" style=\"margin-top: var(--btn-action-margin-top, auto);\">\n </kb-btn-action>\n -->\n <ion-button [expand]=\"campo.BtnExpand ?? 'block'\" [color]=\"campo.BtnColor ?? 'light'\"\n (click)=\"campo.click ? campo.click($event) : emptyHandler()\" [size]=\"campo.BtnSize ?? 'default'\"\n [disabled]=\"campo.ReadOnly\">\n <ion-icon *ngIf=\"campo.Icon || campo.IconSrc\" [name]=\"campo.Icon\" [src]=\"campo.IconSrc\"></ion-icon>\n {{ campo.Label }}\n </ion-button>\n </ion-col>\n }\n @else if (campo.Tipo == 'col') {\n <ion-col *ngIf=\"campo.Tipo == 'col'\" size-md=\"1\" size-xs=\"0\">\n\n </ion-col>\n }\n @else if (campo.Tipo == 'sub-titulo') {\n <ion-col *ngIf=\"\" size=\"12\">\n <ion-list lines=\"none\" class=\"ion-no-padding\">\n <ion-list-header color=\"primary\" [style]=\"campo.CampoStyle ?? ''\">\n <ion-label [style]=\"campo.LabelStyle ?? ''\">{{ campo.Label }}</ion-label>\n </ion-list-header>\n </ion-list>\n </ion-col>\n }\n </ng-container>\n }\n </ion-row>\n }\n <!--\n <ion-col class=\"select ion-no-margin ion-no-padding\">\n <ion-item lines=\"none\">\n <ion-label>Totalizador</ion-label>\n <ion-checkbox slot=\"start\" formControlName=\"Totalizador\"></ion-checkbox>\n </ion-item>\n </ion-col>\n <ion-col class=\"select ion-no-margin ion-no-padding\">\n <ion-item lines=\"none\">\n <ion-label>Inativo</ion-label>\n <ion-checkbox slot=\"start\" formControlName=\"Inativo\"></ion-checkbox>\n </ion-item>\n </ion-col>\n -->\n </form>\n }\n</div>", styles: ["ion-list-header{text-align:center;font-size:large}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: InputTextComponent, selector: "kb-input-text", inputs: ["showSeePassword"], outputs: ["inputChange"] }, { kind: "component", type: InputPesquisaComponent, selector: "kb-input-pesquisa", inputs: ["textoPesquisa", "max", "filterFunction", "selectId", "campoId", "campoPaiId", "campoDisplay", "tipo", "url", "urlItem", "empresa", "loadInit", "urlTree", "treeTitulo"], outputs: ["pesquisaChange", "limpar"] }, { kind: "component", type: InputAreaComponent, selector: "kb-input-area", inputs: ["linhas", "contador"], outputs: ["inputChange"] }, { kind: "component", type: InputCepComponent, selector: "kb-input-cep", inputs: ["formato", "keyEnter"], outputs: ["getResultados", "inputChange"] }, { kind: "component", type: InputValorComponent, selector: "kb-input-valor", inputs: ["maxValor"], outputs: ["inputChange"] }, { kind: "component", type: InputCheckboxComponent, selector: "kb-input-checkbox", inputs: ["justify", "labelPlacement"] }, { kind: "component", type: InputFormatComponent, selector: "kb-input-format", inputs: ["formato", "keyEnter"], outputs: ["inputChange"] }, { kind: "component", type: InputSelectComponent, selector: "kb-input-select", inputs: ["itens", "itemId", "itemNome", "showNovo", "itemNull", "opcaoDefault", "interface"], outputs: ["selectChange", "selectChangeEntity"] }, { kind: "component", type: InputRadioComponent, selector: "kb-input-radio", inputs: ["itens", "itemId", "itemNome", "color"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4427
4485
  }
4428
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: EntityEditComponent, decorators: [{
4486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: EntityEditComponent, decorators: [{
4429
4487
  type: Component,
4430
4488
  args: [{ selector: 'kb-entidade-edit', imports: [IonIcon, IonListHeader, IonList, IonButton, IonLabel, IonCol, IonRow, InputTextComponent,
4431
4489
  InputPesquisaComponent, InputAreaComponent, InputCepComponent, InputValorComponent, InputCheckboxComponent,
@@ -4754,10 +4812,10 @@ class GridViewComponent {
4754
4812
  selecionadoChecked() {
4755
4813
  this.selecionarChecked.emit();
4756
4814
  }
4757
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: GridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4758
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: GridViewComponent, isStandalone: true, selector: "kb-grid-view", inputs: { tabelaCampos: "tabelaCampos", dataSet: "dataSet", minHeight: "minHeight", maxHeight: "maxHeight", inMemoryPagination: "inMemoryPagination", apiPagination: "apiPagination", filteredDataSet: "filteredDataSet", pageOffset: "pageOffset", apiTotalRecords: "apiTotalRecords", apiPage: "apiPage", apiPagesTotal: "apiPagesTotal" }, outputs: { selecionarItem: "selecionarItem", excluirItem: "excluirItem", selecionarChecked: "selecionarChecked", apiProximoEvent: "apiProximoEvent", apiAnteriorEvent: "apiAnteriorEvent" }, usesOnChanges: true, ngImport: i0, template: "<div style=\"font-size: 14px;\">\n <div id=\"painelExportacao\">\n @if(inMemoryPagination || apiPagination) {\n <ion-row>\n <!--\n <ion-col size=\"2\">\n <ion-button *ngIf=\"tabelaCampos.Selecionar === true\" size=\"small\" fill=\"outline\" color=\"medium\"\n (click)=\"selecionarTodos()\">Selecionar Todos</ion-button>\n </ion-col>\n -->\n <ion-col size-md=\"5\" size-xs=\"12\">\n @if (inMemoryPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"bluetool\" (click)=\"anterior()\">\n <ion-icon name=\"chevron-back-outline\" slot=\"start\"></ion-icon>\n Anterior\n </ion-button>\n }\n @if (inMemoryPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"bluetool\" (click)=\"proximo()\">\n Pr\u00F3ximo\n <ion-icon name=\"chevron-forward-outline\" slot=\"end\"></ion-icon>\n </ion-button>\n }\n @if (apiPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"medium\" shape=\"round\" class=\"circle-button\"\n (click)=\"proximoApi(false)\" alt=\"Primeiro\">\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n @for (pag of pages; track pag) {\n <ion-button shape=\"round\" [fill]=\"pag == this.page ? 'solid' : 'outline'\" size=\"small\"\n class=\"circle-button\" [color]=\"pag == this.page ? 'verde' : 'medium'\"\n [class]=\"{ 'pageSelected': pag == this.page }\" (click)=\"proximoApi(false, pag)\">{{ pag\n }}</ion-button>\n }\n @if (apiPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"medium\" shape=\"round\" class=\"circle-button\"\n (click)=\"proximoApi(true)\" alt=\"\u00DAltimo\">\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n\n </ion-col>\n <ion-col size-md=\"5\" size-xs=\"12\" style=\"text-align: left;\">\n @if ((inMemoryPagination || apiPagination) && totalRec > 0) {\n <span style=\"display: block; margin-top: 10px;\">Exibindo {{ start + 1 }} - {{ (start +\n pageOffset) < totalRec ? (start + pageOffset) : totalRec }} total de {{ totalRec }} </span>\n }\n </ion-col>\n </ion-row>\n }\n </div>\n <div style=\"width: 100%; margin-top: 16px; overflow-y: auto;\" [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\" class=\"scroll-container\">\n <table class=\"grid\">\n <thead>\n <tr style=\"background-color: var(--ion-color-bluetool); color: white;\">\n @if (tabelaCampos.Selecionar === true) {\n <td style=\"width: 3%; text-align: center;\">\n <input type=\"checkbox\" [(ngModel)]=\"todosSelecionados\" (change)=\"selecionarTodos()\">\n </td>\n }\n @for (col of tabelaCampos.Colunas; track col) {\n <td [style.width]=\"col.Tamanho\">\n <div style=\"position: relative;\">\n <div style=\"display: flex; justify-content: space-between; align-items: end;\">\n <strong>{{ col.Titulo }}</strong>\n <div>\n @if (col.Ordem) {\n <ion-icon slot=\"end\" (click)=\"ordenar(col)\" style=\"cursor: pointer;\"\n [name]=\"col.OrdemStatus == 0 ? 'swap-vertical' : (col.OrdemStatus == 1 ? 'arrow-up': 'arrow-down')\">\n </ion-icon>\n }\n @if (col.Filtrar) {\n <ion-icon name=\"funnel\" (click)=\"setFiltroOpen(col)\" slot=\"end\">\n </ion-icon>\n }\n </div>\n </div>\n\n\n <div class=\"caixaGrande\" [hidden]=\"!col.FiltroVisivel\" tabindex=\"-1\"\n style=\"color: black; display: block; position: absolute; z-index: 800; width: 210px; left: 0px; opacity: 0.9; background-color: white; max-height: 200px;\">\n Filtrar:\n <div>\n <div style=\"display: flex; justify-content: space-between; align-items: start;\">\n <select style=\"width: 80px;\" [(ngModel)]=\"col.FiltroOperador\">\n <option>=</option>\n <option>&gt;=</option>\n <option>&lt;=</option>\n <option>tem</option>\n </select>\n <input style=\"width: 100px;\" type=\"text\" [(ngModel)]=\"col.FiltroValor\">\n </div>\n <ion-button size=\"small\" color=\"medium\" expand=\"block\"\n (click)=\"filtrar(col)\">Filtrar</ion-button>\n <ion-button size=\"small\" color=\"light\" expand=\"block\"\n (click)=\"limpar(col)\">Limpar</ion-button>\n </div>\n @if (col.Valores) {\n <div class=\"scroll-container\" style=\"height: 200px; overflow-y: scroll;\">\n @for (valor of col.Valores; track valor) {\n <div>\n <input type=\"checkbox\" [(ngModel)]=\"valor.Selecionado\">\n <span>{{ valor.Valor }}</span>\n </div>\n }\n </div>\n }\n </div>\n\n </div>\n </td>\n }\n @if (tabelaCampos.Excluir === true) {\n <td>\n\n </td>\n }\n </tr>\n </thead>\n <tbody>\n @for(item of pageDataSet; track item) {\n <tr [class]=\"item == selectedItem ? 'item-selecionado' : '' \">\n @if (tabelaCampos.Selecionar === true) {\n <td style=\"text-align: center; cursor: auto;\">\n <input type=\"checkbox\" [(ngModel)]=\"item[tabelaCampos.CampoSelecionar ?? 'Selecionado']\"\n (change)=\"selecionadoChecked()\">\n </td>\n }\n @for (col of tabelaCampos.Colunas; track col.Campo) {\n <td class=\"col\" [style.width]=\"col.Tamanho\"\n [style.text-align]=\"col.Tipo == 'number' ? 'right' : (col.Alinhamento ?? 'left')\"\n (click)=\"col.ClickFunction ? col.ClickFunction(item) : selecionarLinha(item)\">\n @if (col.Pipe == 'date') {\n <span>{{ item[col.Campo] | date: 'dd/MM/yyyy' }}</span>\n }\n @if (col.Pipe == 'datetime') {\n <span>{{ item[col.Campo] | date: 'dd/MM/yyyy HH:mm:ss' }}</span>\n }\n @if (col.Pipe == 'valor') {\n <span>{{ item[col.Campo] | number }}</span>\n }\n @if(col.RenderFunction) {\n <span [innerHtml]=\"col.RenderFunction(item) | safeHtml\"></span>\n }\n @if (!col.Pipe && !col.RenderFunction) {\n <span>{{ item[col.Campo] ?? col.Default }}</span>\n }\n </td>\n }\n @if (tabelaCampos.Excluir === true) {\n <td style=\"padding: 0px; text-align: center;\">\n <ion-button size=\"small\" color=\"danger\" fill=\"outline\" style=\"transform: scale(0.85);\"\n (click)=\"excluirLinha(item)\">\n <ion-icon name=\"trash\"></ion-icon>\n </ion-button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <!--\n <ion-modal [isOpen]=\"isFiltroOpen\" (didDismiss)=\"isFiltroOpen = false;\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <div class=\"caixaGrande\">\n Filtrar:\n <div *ngIf=\"selectedColuna.Valores\">\n <div *ngFor=\"let valor of selectedColuna.Valores\">\n <span>{{ valor }}</span>\n </div>\n </div>\n </div>\n </ion-content>\n </ng-template>\n </ion-modal>\n -->\n</div>", styles: [".grid{width:100%}.grid thead td{color:var(--text-cabecalho-color, black);border-bottom:1px solid gray;padding:6px 4px}.grid tbody{background-color:#fff}.grid tbody td{border-bottom:1px solid gray;padding:6px 4px}.grid tbody tr{cursor:pointer}.grid tbody tr:hover{background-color:#699ccc80;transition-duration:.5s}.grid tbody tr.item-selecionado{background-color:#699ccc33}.nth-table tr:nth-child(2n){background:var(--misto-tabela);color:var(--color-misto)}.circle-button{--border-radius: 50%;aspect-ratio:1/1;width:36px;height:36px}.circle-button ion-icon{transform:scale(2.5)}.pageSelected{--background: lightgreen}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1$3.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4815
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: GridViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4816
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: GridViewComponent, isStandalone: true, selector: "kb-grid-view", inputs: { tabelaCampos: "tabelaCampos", dataSet: "dataSet", minHeight: "minHeight", maxHeight: "maxHeight", inMemoryPagination: "inMemoryPagination", apiPagination: "apiPagination", filteredDataSet: "filteredDataSet", pageOffset: "pageOffset", apiTotalRecords: "apiTotalRecords", apiPage: "apiPage", apiPagesTotal: "apiPagesTotal" }, outputs: { selecionarItem: "selecionarItem", excluirItem: "excluirItem", selecionarChecked: "selecionarChecked", apiProximoEvent: "apiProximoEvent", apiAnteriorEvent: "apiAnteriorEvent" }, usesOnChanges: true, ngImport: i0, template: "<div style=\"font-size: 14px;\">\n <div id=\"painelExportacao\">\n @if(inMemoryPagination || apiPagination) {\n <ion-row>\n <!--\n <ion-col size=\"2\">\n <ion-button *ngIf=\"tabelaCampos.Selecionar === true\" size=\"small\" fill=\"outline\" color=\"medium\"\n (click)=\"selecionarTodos()\">Selecionar Todos</ion-button>\n </ion-col>\n -->\n <ion-col size-md=\"5\" size-xs=\"12\">\n @if (inMemoryPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"bluetool\" (click)=\"anterior()\">\n <ion-icon name=\"chevron-back-outline\" slot=\"start\"></ion-icon>\n Anterior\n </ion-button>\n }\n @if (inMemoryPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"bluetool\" (click)=\"proximo()\">\n Pr\u00F3ximo\n <ion-icon name=\"chevron-forward-outline\" slot=\"end\"></ion-icon>\n </ion-button>\n }\n @if (apiPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"medium\" shape=\"round\" class=\"circle-button\"\n (click)=\"proximoApi(false)\" alt=\"Primeiro\">\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n @for (pag of pages; track pag) {\n <ion-button shape=\"round\" [fill]=\"pag == this.page ? 'solid' : 'outline'\" size=\"small\"\n class=\"circle-button\" [color]=\"pag == this.page ? 'verde' : 'medium'\"\n [class]=\"{ 'pageSelected': pag == this.page }\" (click)=\"proximoApi(false, pag)\">{{ pag\n }}</ion-button>\n }\n @if (apiPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"medium\" shape=\"round\" class=\"circle-button\"\n (click)=\"proximoApi(true)\" alt=\"\u00DAltimo\">\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n\n </ion-col>\n <ion-col size-md=\"5\" size-xs=\"12\" style=\"text-align: left;\">\n @if ((inMemoryPagination || apiPagination) && totalRec > 0) {\n <span style=\"display: block; margin-top: 10px;\">Exibindo {{ start + 1 }} - {{ (start +\n pageOffset) < totalRec ? (start + pageOffset) : totalRec }} total de {{ totalRec }} </span>\n }\n </ion-col>\n </ion-row>\n }\n </div>\n <div style=\"width: 100%; margin-top: 16px; overflow-y: auto;\" [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\" class=\"scroll-container\">\n <table class=\"grid\">\n <thead>\n <tr style=\"background-color: var(--ion-color-bluetool); color: white;\">\n @if (tabelaCampos.Selecionar === true) {\n <td style=\"width: 3%; text-align: center;\">\n <input type=\"checkbox\" [(ngModel)]=\"todosSelecionados\" (change)=\"selecionarTodos()\">\n </td>\n }\n @for (col of tabelaCampos.Colunas; track col) {\n <td [style.width]=\"col.Tamanho\">\n <div style=\"position: relative;\">\n <div style=\"display: flex; justify-content: space-between; align-items: end;\">\n <strong>{{ col.Titulo }}</strong>\n <div>\n @if (col.Ordem) {\n <ion-icon slot=\"end\" (click)=\"ordenar(col)\" style=\"cursor: pointer;\"\n [name]=\"col.OrdemStatus == 0 ? 'swap-vertical' : (col.OrdemStatus == 1 ? 'arrow-up': 'arrow-down')\">\n </ion-icon>\n }\n @if (col.Filtrar) {\n <ion-icon name=\"funnel\" (click)=\"setFiltroOpen(col)\" slot=\"end\">\n </ion-icon>\n }\n </div>\n </div>\n\n\n <div class=\"caixaGrande\" [hidden]=\"!col.FiltroVisivel\" tabindex=\"-1\"\n style=\"color: black; display: block; position: absolute; z-index: 800; width: 210px; left: 0px; opacity: 0.9; background-color: white; max-height: 200px;\">\n Filtrar:\n <div>\n <div style=\"display: flex; justify-content: space-between; align-items: start;\">\n <select style=\"width: 80px;\" [(ngModel)]=\"col.FiltroOperador\">\n <option>=</option>\n <option>&gt;=</option>\n <option>&lt;=</option>\n <option>tem</option>\n </select>\n <input style=\"width: 100px;\" type=\"text\" [(ngModel)]=\"col.FiltroValor\">\n </div>\n <ion-button size=\"small\" color=\"medium\" expand=\"block\"\n (click)=\"filtrar(col)\">Filtrar</ion-button>\n <ion-button size=\"small\" color=\"light\" expand=\"block\"\n (click)=\"limpar(col)\">Limpar</ion-button>\n </div>\n @if (col.Valores) {\n <div class=\"scroll-container\" style=\"height: 200px; overflow-y: scroll;\">\n @for (valor of col.Valores; track valor) {\n <div>\n <input type=\"checkbox\" [(ngModel)]=\"valor.Selecionado\">\n <span>{{ valor.Valor }}</span>\n </div>\n }\n </div>\n }\n </div>\n\n </div>\n </td>\n }\n @if (tabelaCampos.Excluir === true) {\n <td>\n\n </td>\n }\n </tr>\n </thead>\n <tbody>\n @for(item of pageDataSet; track item) {\n <tr [class]=\"item == selectedItem ? 'item-selecionado' : '' \">\n @if (tabelaCampos.Selecionar === true) {\n <td style=\"text-align: center; cursor: auto;\">\n <input type=\"checkbox\" [(ngModel)]=\"item[tabelaCampos.CampoSelecionar ?? 'Selecionado']\"\n (change)=\"selecionadoChecked()\">\n </td>\n }\n @for (col of tabelaCampos.Colunas; track col.Campo) {\n <td class=\"col\" [style.width]=\"col.Tamanho\"\n [style.text-align]=\"col.Tipo == 'number' ? 'right' : (col.Alinhamento ?? 'left')\"\n (click)=\"col.ClickFunction ? col.ClickFunction(item) : selecionarLinha(item)\">\n @if (col.Pipe == 'date') {\n <span>{{ item[col.Campo] | date: 'dd/MM/yyyy' }}</span>\n }\n @if (col.Pipe == 'datetime') {\n <span>{{ item[col.Campo] | date: 'dd/MM/yyyy HH:mm:ss' }}</span>\n }\n @if (col.Pipe == 'valor') {\n <span>{{ item[col.Campo] | number }}</span>\n }\n @if(col.RenderFunction) {\n <span [innerHtml]=\"col.RenderFunction(item) | safeHtml\"></span>\n }\n @if (!col.Pipe && !col.RenderFunction) {\n <span>{{ item[col.Campo] ?? col.Default }}</span>\n }\n </td>\n }\n @if (tabelaCampos.Excluir === true) {\n <td style=\"padding: 0px; text-align: center;\">\n <ion-button size=\"small\" color=\"danger\" fill=\"outline\" style=\"transform: scale(0.85);\"\n (click)=\"excluirLinha(item)\">\n <ion-icon name=\"trash\"></ion-icon>\n </ion-button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <!--\n <ion-modal [isOpen]=\"isFiltroOpen\" (didDismiss)=\"isFiltroOpen = false;\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <div class=\"caixaGrande\">\n Filtrar:\n <div *ngIf=\"selectedColuna.Valores\">\n <div *ngFor=\"let valor of selectedColuna.Valores\">\n <span>{{ valor }}</span>\n </div>\n </div>\n </div>\n </ion-content>\n </ng-template>\n </ion-modal>\n -->\n</div>", styles: [".grid{width:100%}.grid thead td{color:var(--text-cabecalho-color, black);border-bottom:1px solid gray;padding:6px 4px}.grid tbody{background-color:#fff}.grid tbody td{border-bottom:1px solid gray;padding:6px 4px}.grid tbody tr{cursor:pointer}.grid tbody tr:hover{background-color:#699ccc80;transition-duration:.5s}.grid tbody tr.item-selecionado{background-color:#699ccc33}.nth-table tr:nth-child(2n){background:var(--misto-tabela);color:var(--color-misto)}.circle-button{--border-radius: 50%;aspect-ratio:1/1;width:36px;height:36px}.circle-button ion-icon{transform:scale(2.5)}.pageSelected{--background: lightgreen}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1$3.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "pipe", type: SafeHtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4759
4817
  }
4760
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: GridViewComponent, decorators: [{
4818
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: GridViewComponent, decorators: [{
4761
4819
  type: Component,
4762
4820
  args: [{ selector: 'kb-grid-view', imports: [IonIcon, IonButton, IonCol, IonRow, FormsModule, DatePipe, DecimalPipe, SafeHtmlPipe], changeDetection: ChangeDetectionStrategy.Eager, template: "<div style=\"font-size: 14px;\">\n <div id=\"painelExportacao\">\n @if(inMemoryPagination || apiPagination) {\n <ion-row>\n <!--\n <ion-col size=\"2\">\n <ion-button *ngIf=\"tabelaCampos.Selecionar === true\" size=\"small\" fill=\"outline\" color=\"medium\"\n (click)=\"selecionarTodos()\">Selecionar Todos</ion-button>\n </ion-col>\n -->\n <ion-col size-md=\"5\" size-xs=\"12\">\n @if (inMemoryPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"bluetool\" (click)=\"anterior()\">\n <ion-icon name=\"chevron-back-outline\" slot=\"start\"></ion-icon>\n Anterior\n </ion-button>\n }\n @if (inMemoryPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"bluetool\" (click)=\"proximo()\">\n Pr\u00F3ximo\n <ion-icon name=\"chevron-forward-outline\" slot=\"end\"></ion-icon>\n </ion-button>\n }\n @if (apiPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"medium\" shape=\"round\" class=\"circle-button\"\n (click)=\"proximoApi(false)\" alt=\"Primeiro\">\n <ion-icon name=\"chevron-back-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n @for (pag of pages; track pag) {\n <ion-button shape=\"round\" [fill]=\"pag == this.page ? 'solid' : 'outline'\" size=\"small\"\n class=\"circle-button\" [color]=\"pag == this.page ? 'verde' : 'medium'\"\n [class]=\"{ 'pageSelected': pag == this.page }\" (click)=\"proximoApi(false, pag)\">{{ pag\n }}</ion-button>\n }\n @if (apiPagination === true) {\n <ion-button size=\"small\" fill=\"outline\" color=\"medium\" shape=\"round\" class=\"circle-button\"\n (click)=\"proximoApi(true)\" alt=\"\u00DAltimo\">\n <ion-icon name=\"chevron-forward-outline\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n }\n\n </ion-col>\n <ion-col size-md=\"5\" size-xs=\"12\" style=\"text-align: left;\">\n @if ((inMemoryPagination || apiPagination) && totalRec > 0) {\n <span style=\"display: block; margin-top: 10px;\">Exibindo {{ start + 1 }} - {{ (start +\n pageOffset) < totalRec ? (start + pageOffset) : totalRec }} total de {{ totalRec }} </span>\n }\n </ion-col>\n </ion-row>\n }\n </div>\n <div style=\"width: 100%; margin-top: 16px; overflow-y: auto;\" [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\" class=\"scroll-container\">\n <table class=\"grid\">\n <thead>\n <tr style=\"background-color: var(--ion-color-bluetool); color: white;\">\n @if (tabelaCampos.Selecionar === true) {\n <td style=\"width: 3%; text-align: center;\">\n <input type=\"checkbox\" [(ngModel)]=\"todosSelecionados\" (change)=\"selecionarTodos()\">\n </td>\n }\n @for (col of tabelaCampos.Colunas; track col) {\n <td [style.width]=\"col.Tamanho\">\n <div style=\"position: relative;\">\n <div style=\"display: flex; justify-content: space-between; align-items: end;\">\n <strong>{{ col.Titulo }}</strong>\n <div>\n @if (col.Ordem) {\n <ion-icon slot=\"end\" (click)=\"ordenar(col)\" style=\"cursor: pointer;\"\n [name]=\"col.OrdemStatus == 0 ? 'swap-vertical' : (col.OrdemStatus == 1 ? 'arrow-up': 'arrow-down')\">\n </ion-icon>\n }\n @if (col.Filtrar) {\n <ion-icon name=\"funnel\" (click)=\"setFiltroOpen(col)\" slot=\"end\">\n </ion-icon>\n }\n </div>\n </div>\n\n\n <div class=\"caixaGrande\" [hidden]=\"!col.FiltroVisivel\" tabindex=\"-1\"\n style=\"color: black; display: block; position: absolute; z-index: 800; width: 210px; left: 0px; opacity: 0.9; background-color: white; max-height: 200px;\">\n Filtrar:\n <div>\n <div style=\"display: flex; justify-content: space-between; align-items: start;\">\n <select style=\"width: 80px;\" [(ngModel)]=\"col.FiltroOperador\">\n <option>=</option>\n <option>&gt;=</option>\n <option>&lt;=</option>\n <option>tem</option>\n </select>\n <input style=\"width: 100px;\" type=\"text\" [(ngModel)]=\"col.FiltroValor\">\n </div>\n <ion-button size=\"small\" color=\"medium\" expand=\"block\"\n (click)=\"filtrar(col)\">Filtrar</ion-button>\n <ion-button size=\"small\" color=\"light\" expand=\"block\"\n (click)=\"limpar(col)\">Limpar</ion-button>\n </div>\n @if (col.Valores) {\n <div class=\"scroll-container\" style=\"height: 200px; overflow-y: scroll;\">\n @for (valor of col.Valores; track valor) {\n <div>\n <input type=\"checkbox\" [(ngModel)]=\"valor.Selecionado\">\n <span>{{ valor.Valor }}</span>\n </div>\n }\n </div>\n }\n </div>\n\n </div>\n </td>\n }\n @if (tabelaCampos.Excluir === true) {\n <td>\n\n </td>\n }\n </tr>\n </thead>\n <tbody>\n @for(item of pageDataSet; track item) {\n <tr [class]=\"item == selectedItem ? 'item-selecionado' : '' \">\n @if (tabelaCampos.Selecionar === true) {\n <td style=\"text-align: center; cursor: auto;\">\n <input type=\"checkbox\" [(ngModel)]=\"item[tabelaCampos.CampoSelecionar ?? 'Selecionado']\"\n (change)=\"selecionadoChecked()\">\n </td>\n }\n @for (col of tabelaCampos.Colunas; track col.Campo) {\n <td class=\"col\" [style.width]=\"col.Tamanho\"\n [style.text-align]=\"col.Tipo == 'number' ? 'right' : (col.Alinhamento ?? 'left')\"\n (click)=\"col.ClickFunction ? col.ClickFunction(item) : selecionarLinha(item)\">\n @if (col.Pipe == 'date') {\n <span>{{ item[col.Campo] | date: 'dd/MM/yyyy' }}</span>\n }\n @if (col.Pipe == 'datetime') {\n <span>{{ item[col.Campo] | date: 'dd/MM/yyyy HH:mm:ss' }}</span>\n }\n @if (col.Pipe == 'valor') {\n <span>{{ item[col.Campo] | number }}</span>\n }\n @if(col.RenderFunction) {\n <span [innerHtml]=\"col.RenderFunction(item) | safeHtml\"></span>\n }\n @if (!col.Pipe && !col.RenderFunction) {\n <span>{{ item[col.Campo] ?? col.Default }}</span>\n }\n </td>\n }\n @if (tabelaCampos.Excluir === true) {\n <td style=\"padding: 0px; text-align: center;\">\n <ion-button size=\"small\" color=\"danger\" fill=\"outline\" style=\"transform: scale(0.85);\"\n (click)=\"excluirLinha(item)\">\n <ion-icon name=\"trash\"></ion-icon>\n </ion-button>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <!--\n <ion-modal [isOpen]=\"isFiltroOpen\" (didDismiss)=\"isFiltroOpen = false;\">\n <ng-template>\n <ion-content class=\"ion-padding\">\n <div class=\"caixaGrande\">\n Filtrar:\n <div *ngIf=\"selectedColuna.Valores\">\n <div *ngFor=\"let valor of selectedColuna.Valores\">\n <span>{{ valor }}</span>\n </div>\n </div>\n </div>\n </ion-content>\n </ng-template>\n </ion-modal>\n -->\n</div>", styles: [".grid{width:100%}.grid thead td{color:var(--text-cabecalho-color, black);border-bottom:1px solid gray;padding:6px 4px}.grid tbody{background-color:#fff}.grid tbody td{border-bottom:1px solid gray;padding:6px 4px}.grid tbody tr{cursor:pointer}.grid tbody tr:hover{background-color:#699ccc80;transition-duration:.5s}.grid tbody tr.item-selecionado{background-color:#699ccc33}.nth-table tr:nth-child(2n){background:var(--misto-tabela);color:var(--color-misto)}.circle-button{--border-radius: 50%;aspect-ratio:1/1;width:36px;height:36px}.circle-button ion-icon{transform:scale(2.5)}.pageSelected{--background: lightgreen}\n"] }]
4763
4821
  }], ctorParameters: () => [], propDecorators: { tabelaCampos: [{
@@ -4848,10 +4906,10 @@ class PeriodoIntervaloComponent {
4848
4906
  }
4849
4907
  this.visible = false;
4850
4908
  }
4851
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PeriodoIntervaloComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4852
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: PeriodoIntervaloComponent, isStandalone: true, selector: "kb-periodo-intervalo", inputs: { btnHeight: "btnHeight" }, outputs: { aceitarFunction: "aceitarFunction" }, ngImport: i0, template: "<div>\n <ion-button id=\"btnPeriodo\" size=\"small\" color=\"medium\" fill=\"outline\" (click)=\"visible = !visible;\"\n [style.min-height]=\"btnHeight\">\n <ion-icon slot=\"start\" name=\"calendar\"></ion-icon>\n Per\u00EDodo\n </ion-button>\n</div>\n<div [hidden]=\"!visible\" class=\"painel-intervalo\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Dias</strong></ion-col>\n <ion-col *ngFor=\"let dia of dias\" size=\"1.5\"\n [class]=\"dia.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(dia)\">{{ dia.valor\n }}</ion-col>\n <!--\n <ion-col size=\"1.5\" class=\"col-valor\">2</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">3</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">4</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">5</ion-col>\n -->\n </ion-row>\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Semanas</strong></ion-col>\n <ion-col *ngFor=\"let sem of semanas\" size=\"1.5\"\n [class]=\"sem.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(sem)\">{{ sem.valor\n }}</ion-col>\n <ion-col></ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Mes</strong></ion-col>\n <ion-col *ngFor=\"let mes of meses\" size=\"1.5\"\n [class]=\"mes.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(mes)\">{{ mes.valor\n }}</ion-col>\n\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-input #inputValor\n class=\"input-periodo\" \n type=\"number\" \n max=\"12\" \n (input)=\"setValor(inputValor.value)\" \n [value]=\"intervaloValor\"></ion-input>\n </ion-col>\n <ion-col>\n <ion-select #selectTipo\n class=\"input-periodo\" interface=\"popover\" \n [value]=\"intervaloTipo\"\n (ionChange)=\"setTipo(selectTipo.value)\"\n >\n <ion-select-option value=\"dia\">Dias</ion-select-option>\n <ion-select-option value=\"sem\">Semanas</ion-select-option>\n <ion-select-option value=\"mes\">Meses</ion-select-option>\n </ion-select>\n </ion-col>\n </ion-row>\n \n <ion-row class=\"ion-justify-content-end\">\n <ion-col style=\"text-align: end;\">\n <ion-button color=\"medium\" fill=\"outline\" (click)=\"visible=false;\">Cancelar</ion-button>\n <ion-button color=\"primary\" (click)=\"aceitar()\">Ok</ion-button>\n </ion-col>\n </ion-row>\n \n</div>\n", styles: [".painel-intervalo{background:#fff;display:block;position:absolute;padding:4px;border:1px solid darkgray;border-radius:1px;width:350px;margin-top:0;height:auto;margin-left:0}.painel-intervalo strong{font-size:small}.painel-intervalo{z-index:2000}.col-valor{cursor:pointer;border:1px solid gray;margin:4px;background-color:#fff;text-align:center}.col-valor-selecionado{cursor:pointer;border:1px solid lightblue;margin:4px;background-color:azure;text-align:center}.input-periodo{border:1px grey solid}\n"], dependencies: [{ kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }] });
4909
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: PeriodoIntervaloComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4910
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: PeriodoIntervaloComponent, isStandalone: true, selector: "kb-periodo-intervalo", inputs: { btnHeight: "btnHeight" }, outputs: { aceitarFunction: "aceitarFunction" }, ngImport: i0, template: "<div>\n <ion-button id=\"btnPeriodo\" size=\"small\" color=\"medium\" fill=\"outline\" (click)=\"visible = !visible;\"\n [style.min-height]=\"btnHeight\">\n <ion-icon slot=\"start\" name=\"calendar\"></ion-icon>\n Per\u00EDodo\n </ion-button>\n</div>\n<div [hidden]=\"!visible\" class=\"painel-intervalo\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Dias</strong></ion-col>\n <ion-col *ngFor=\"let dia of dias\" size=\"1.5\"\n [class]=\"dia.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(dia)\">{{ dia.valor\n }}</ion-col>\n <!--\n <ion-col size=\"1.5\" class=\"col-valor\">2</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">3</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">4</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">5</ion-col>\n -->\n </ion-row>\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Semanas</strong></ion-col>\n <ion-col *ngFor=\"let sem of semanas\" size=\"1.5\"\n [class]=\"sem.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(sem)\">{{ sem.valor\n }}</ion-col>\n <ion-col></ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Mes</strong></ion-col>\n <ion-col *ngFor=\"let mes of meses\" size=\"1.5\"\n [class]=\"mes.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(mes)\">{{ mes.valor\n }}</ion-col>\n\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-input #inputValor\n class=\"input-periodo\" \n type=\"number\" \n max=\"12\" \n (input)=\"setValor(inputValor.value)\" \n [value]=\"intervaloValor\"></ion-input>\n </ion-col>\n <ion-col>\n <ion-select #selectTipo\n class=\"input-periodo\" interface=\"popover\" \n [value]=\"intervaloTipo\"\n (ionChange)=\"setTipo(selectTipo.value)\"\n >\n <ion-select-option value=\"dia\">Dias</ion-select-option>\n <ion-select-option value=\"sem\">Semanas</ion-select-option>\n <ion-select-option value=\"mes\">Meses</ion-select-option>\n </ion-select>\n </ion-col>\n </ion-row>\n \n <ion-row class=\"ion-justify-content-end\">\n <ion-col style=\"text-align: end;\">\n <ion-button color=\"medium\" fill=\"outline\" (click)=\"visible=false;\">Cancelar</ion-button>\n <ion-button color=\"primary\" (click)=\"aceitar()\">Ok</ion-button>\n </ion-col>\n </ion-row>\n \n</div>\n", styles: [".painel-intervalo{background:#fff;display:block;position:absolute;padding:4px;border:1px solid darkgray;border-radius:1px;width:350px;margin-top:0;height:auto;margin-left:0}.painel-intervalo strong{font-size:small}.painel-intervalo{z-index:2000}.col-valor{cursor:pointer;border:1px solid gray;margin:4px;background-color:#fff;text-align:center}.col-valor-selecionado{cursor:pointer;border:1px solid lightblue;margin:4px;background-color:azure;text-align:center}.input-periodo{border:1px grey solid}\n"], dependencies: [{ kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["description", "disabled", "justify", "labelPlacement", "mode", "value"] }] });
4853
4911
  }
4854
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: PeriodoIntervaloComponent, decorators: [{
4912
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: PeriodoIntervaloComponent, decorators: [{
4855
4913
  type: Component,
4856
4914
  args: [{ selector: 'kb-periodo-intervalo', imports: [IonInput, IonCol, IonRow, IonIcon, IonButton, IonSelect, IonSelectOption], template: "<div>\n <ion-button id=\"btnPeriodo\" size=\"small\" color=\"medium\" fill=\"outline\" (click)=\"visible = !visible;\"\n [style.min-height]=\"btnHeight\">\n <ion-icon slot=\"start\" name=\"calendar\"></ion-icon>\n Per\u00EDodo\n </ion-button>\n</div>\n<div [hidden]=\"!visible\" class=\"painel-intervalo\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Dias</strong></ion-col>\n <ion-col *ngFor=\"let dia of dias\" size=\"1.5\"\n [class]=\"dia.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(dia)\">{{ dia.valor\n }}</ion-col>\n <!--\n <ion-col size=\"1.5\" class=\"col-valor\">2</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">3</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">4</ion-col>\n <ion-col size=\"1.5\" class=\"col-valor\">5</ion-col>\n -->\n </ion-row>\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Semanas</strong></ion-col>\n <ion-col *ngFor=\"let sem of semanas\" size=\"1.5\"\n [class]=\"sem.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(sem)\">{{ sem.valor\n }}</ion-col>\n <ion-col></ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col size=\"3\"><strong>Mes</strong></ion-col>\n <ion-col *ngFor=\"let mes of meses\" size=\"1.5\"\n [class]=\"mes.selecionado === true ? 'col-valor-selecionado' : 'col-valor'\" (click)=\"selecionar(mes)\">{{ mes.valor\n }}</ion-col>\n\n </ion-row>\n <ion-row>\n <ion-col>\n <ion-input #inputValor\n class=\"input-periodo\" \n type=\"number\" \n max=\"12\" \n (input)=\"setValor(inputValor.value)\" \n [value]=\"intervaloValor\"></ion-input>\n </ion-col>\n <ion-col>\n <ion-select #selectTipo\n class=\"input-periodo\" interface=\"popover\" \n [value]=\"intervaloTipo\"\n (ionChange)=\"setTipo(selectTipo.value)\"\n >\n <ion-select-option value=\"dia\">Dias</ion-select-option>\n <ion-select-option value=\"sem\">Semanas</ion-select-option>\n <ion-select-option value=\"mes\">Meses</ion-select-option>\n </ion-select>\n </ion-col>\n </ion-row>\n \n <ion-row class=\"ion-justify-content-end\">\n <ion-col style=\"text-align: end;\">\n <ion-button color=\"medium\" fill=\"outline\" (click)=\"visible=false;\">Cancelar</ion-button>\n <ion-button color=\"primary\" (click)=\"aceitar()\">Ok</ion-button>\n </ion-col>\n </ion-row>\n \n</div>\n", styles: [".painel-intervalo{background:#fff;display:block;position:absolute;padding:4px;border:1px solid darkgray;border-radius:1px;width:350px;margin-top:0;height:auto;margin-left:0}.painel-intervalo strong{font-size:small}.painel-intervalo{z-index:2000}.col-valor{cursor:pointer;border:1px solid gray;margin:4px;background-color:#fff;text-align:center}.col-valor-selecionado{cursor:pointer;border:1px solid lightblue;margin:4px;background-color:azure;text-align:center}.input-periodo{border:1px grey solid}\n"] }]
4857
4915
  }], ctorParameters: () => [], propDecorators: { aceitarFunction: [{
@@ -5204,8 +5262,8 @@ class InputHtmlComponent extends BaseInputComponent {
5204
5262
  }
5205
5263
  };
5206
5264
  }
5207
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputHtmlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5208
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputHtmlComponent, isStandalone: true, selector: "kb-input-html", providers: [
5265
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputHtmlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5266
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputHtmlComponent, isStandalone: true, selector: "kb-input-html", providers: [
5209
5267
  {
5210
5268
  provide: NG_VALUE_ACCESSOR,
5211
5269
  useExisting: InputHtmlComponent,
@@ -5213,7 +5271,7 @@ class InputHtmlComponent extends BaseInputComponent {
5213
5271
  },
5214
5272
  ], viewQueries: [{ propertyName: "inputEmail", first: true, predicate: ["inputEmail"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"{ 'input-text-padding': !classic }\">\r\n <!-- <ion-item #itemInput lines=\"none\" (ionBlur)=\"blurItem()\"\r\n style=\" --background: inherited; --background-focused: transparent; padding-right: 0px; overflow: visible;\"\r\n [class]=\"itemClass + ' classic' + ' item-text-wrap'\"\r\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \"> -->\r\n @if (label) {\r\n <ion-label style=\"color: var(--input-label-color); font-size: 13px;\">{{ label }}</ion-label>\r\n }\r\n @if (Editor) {\r\n <ckeditor #inputEmail class=\"ckeditor-form\" [data]=\"data\" [editor]=\"Editor\" [config]=\"config\" (change)=\"writeValue($event.editor.getData(), false)\" (blur)=\"blurEditor($event)\"></ckeditor>\r\n }\r\n <!-- </ion-item> -->\r\n</div>", styles: [".ckeditor-form{margin-top:8px;width:100%;z-index:800}.ck-editor__editable_inline{min-height:400px!important}.ck-editor__main{min-height:400px}.ck-editor__editable{min-height:400px!important;max-height:600px!important;overflow-y:auto!important}\n", "@charset \"UTF-8\";@keyframes shake{0%{transform:translate(20px)}20%{transform:translate(-20px)}40%{transform:translate(10px)}60%{transform:translate(-10px)}80%{transform:translate(4px)}to{transform:translate(0)}}.error-input ion-label,.error-shake ion-label{color:red!important}.error-input ion-input,.error-shake ion-input{border:1px solid red!important}.error-shake ion-input{animation:shake .4s 1 linear}.error-shake-modern{--border-color: var(--input-color-error, red) !important;--color: var(--input-color-error, red) !important;--highlight-color-focused: var(--input-color-error, red) !important;animation:shake .4s 1 linear}.validation-errors{margin-top:4px}ion-label{margin-bottom:var(--label-margin-bottom, 2px)!important;color:var(--label-color, initial)!important}ion-item ion-label{overflow:initial!important}ion-input{text-align:var(--input-text-align, start)}.classic ion-input{background:var(--input-color, white);padding-left:2px!important;border:1px solid darkgray;border-radius:4px;width:100%;margin-top:2px;max-height:30px;min-height:var(--input-min-height, 30px);transition:.2s ease;color:var(--input-font-color, black)}ion-input.modern{--border-color: var(--input-border-color, darkgray);--color: var(--input-font-color, black);--highlight-color-focused: var(--input-highlight-color, #537bc7)}ion-textarea.modern{--border-color: darkgray;--border-color-focused: #00ff00;--border-color-hover: yellow;--color: var(--input-font-color, black);--highlight-color-focused: var(--input-higlight-color, #537bc7);--input-focus-border-color: transparent}.input-text-padding{padding-bottom:var(--input-text-padding-bottom, var(--input-text-default-padding, 16px));padding-left:var(--input-text-padding-left, var(--input-text-default-padding, 16px));padding-right:var(--input-text-padding-right, var(--input-text-default-padding, 16px))}.classic .has-focus{border:1px solid var(--input-focus-border-color, skyblue)!important}.item-has-focus ion-label{color:var(--label-focus-color, blue)!important}.no-padding-end{--inner-padding-end: 0}.no-padding-start{--padding-start: 0px}.item-inner{padding-right:0!important}.padding{padding:auto;padding-left:0}.no-padding{--inner-padding-end: 0px;--padding-start: 0px !important;--padding-bottom: 0px;--inner-padding-bottom: 0px;height:auto!important;--min-height: auto !important}.no-padding-no-height{--inner-padding-end: 0px;--padding-start: 0px;--padding-bottom: 0px;--inner-padding-bottom: 0px}.padding-top{--padding-top: 0px}.input-login{height:36px}.modal-editar ion-label{min-width:80px}.modal-vldt-editar{margin-left:80px}.label-right ion-label{transform-origin:right top;align-self:flex-end;margin-bottom:4%!important}.align-to-right ion-label{position:relative;left:25%;text-align:end}.error-message{font-size:small;color:var(--input-color-error, rgb(212, 79, 79));margin-left:15px}.item-interactive-disabled ion-label{opacity:var(--item-disabled-opacity, .6)}.native-input[disabled]{opacity:.6!important;background-color:transparent}.item-label-stacked{--min-height: auto}.tipObrigatorio{opacity:.4}[hidden]{display:none!important}\n"], dependencies: [{ kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "ngmodule", type: CKEditorModule }, { kind: "component", type: i1$4.CKEditorComponent, selector: "ckeditor", inputs: ["editor", "config", "data", "tagName", "watchdog", "editorWatchdogConfig", "disableWatchdog", "disableTwoWayDataBinding", "disabled"], outputs: ["ready", "change", "blur", "focus", "error"] }] });
5215
5273
  }
5216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputHtmlComponent, decorators: [{
5274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputHtmlComponent, decorators: [{
5217
5275
  type: Component,
5218
5276
  args: [{ selector: 'kb-input-html', imports: [IonLabel, IonItem, NgClass, CKEditorModule], providers: [
5219
5277
  {
@@ -5335,10 +5393,10 @@ class InputArquivoComponent {
5335
5393
  reader.onerror = error => reject(error);
5336
5394
  });
5337
5395
  }
5338
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputArquivoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5339
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: InputArquivoComponent, isStandalone: true, selector: "kb-input-arquivo", inputs: { pasta: "pasta", nomeArquivo: "nomeArquivo", subir: "subir", callback: "callback", caption: "caption", tipoArquivo: "tipoArquivo", form: "form", showIcon: "showIcon", icon: "icon", iconSrc: "iconSrc", btnExpand: "btnExpand", btnColor: "btnColor", btnFill: "btnFill", iconSlot: "iconSlot", arquivoTipos: "arquivoTipos", readOnly: "readOnly" }, outputs: { fileSelected: "fileSelected" }, viewQueries: [{ propertyName: "myInput", first: true, predicate: ["inputNome"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div style=\"text-align:center;\">\r\n <ion-button [fill]=\"btnFill\" size=\"normal\" [color]=\"btnColor\" (click)=\"showImageBrowser()\" [expand]=\"btnExpand\"\r\n [disabled]=\"readOnly\">\r\n @if (showIcon) {\r\n <ion-icon class=\"ion-padding-end\" [slot]=\"iconSlot\" [src]=\"iconSrc\" [name]=\"icon\"></ion-icon>\r\n }\r\n {{ caption }}\r\n </ion-button>\r\n <input type=\"file\" id=\"upimgfile\" name=\"uploadfile\" #inputNome [accept]=\"arquivoTipos\" (change)=\"loadImagem()\"\r\n style=\"display: none;\" />\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] });
5396
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputArquivoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5397
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: InputArquivoComponent, isStandalone: true, selector: "kb-input-arquivo", inputs: { pasta: "pasta", nomeArquivo: "nomeArquivo", subir: "subir", callback: "callback", caption: "caption", tipoArquivo: "tipoArquivo", form: "form", showIcon: "showIcon", icon: "icon", iconSrc: "iconSrc", btnExpand: "btnExpand", btnColor: "btnColor", btnFill: "btnFill", iconSlot: "iconSlot", arquivoTipos: "arquivoTipos", readOnly: "readOnly" }, outputs: { fileSelected: "fileSelected" }, viewQueries: [{ propertyName: "myInput", first: true, predicate: ["inputNome"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div style=\"text-align:center;\">\r\n <ion-button [fill]=\"btnFill\" size=\"normal\" [color]=\"btnColor\" (click)=\"showImageBrowser()\" [expand]=\"btnExpand\"\r\n [disabled]=\"readOnly\">\r\n @if (showIcon) {\r\n <ion-icon class=\"ion-padding-end\" [slot]=\"iconSlot\" [src]=\"iconSrc\" [name]=\"icon\"></ion-icon>\r\n }\r\n {{ caption }}\r\n </ion-button>\r\n <input type=\"file\" id=\"upimgfile\" name=\"uploadfile\" #inputNome [accept]=\"arquivoTipos\" (change)=\"loadImagem()\"\r\n style=\"display: none;\" />\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }] });
5340
5398
  }
5341
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: InputArquivoComponent, decorators: [{
5399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: InputArquivoComponent, decorators: [{
5342
5400
  type: Component,
5343
5401
  args: [{ selector: 'kb-input-arquivo', imports: [IonIcon, IonButton,], template: "<div style=\"text-align:center;\">\r\n <ion-button [fill]=\"btnFill\" size=\"normal\" [color]=\"btnColor\" (click)=\"showImageBrowser()\" [expand]=\"btnExpand\"\r\n [disabled]=\"readOnly\">\r\n @if (showIcon) {\r\n <ion-icon class=\"ion-padding-end\" [slot]=\"iconSlot\" [src]=\"iconSrc\" [name]=\"icon\"></ion-icon>\r\n }\r\n {{ caption }}\r\n </ion-button>\r\n <input type=\"file\" id=\"upimgfile\" name=\"uploadfile\" #inputNome [accept]=\"arquivoTipos\" (change)=\"loadImagem()\"\r\n style=\"display: none;\" />\r\n</div>" }]
5344
5402
  }], ctorParameters: () => [], propDecorators: { pasta: [{
@@ -5380,6 +5438,237 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
5380
5438
  args: ['inputNome', { read: ElementRef, static: true }]
5381
5439
  }] } });
5382
5440
 
5441
+ class AgendaSemanalComponent {
5442
+ alertController;
5443
+ itens = [];
5444
+ legendas = [];
5445
+ textoAjuda = '';
5446
+ horaInicio = 6;
5447
+ horaFim = 23;
5448
+ intervaloMinutos = 30;
5449
+ horariosPadrao = [];
5450
+ horarioSelecionado = new EventEmitter();
5451
+ itemSelecionado = new EventEmitter();
5452
+ nomesMeses = [
5453
+ 'Janeiro',
5454
+ 'Fevereiro',
5455
+ 'Março',
5456
+ 'Abril',
5457
+ 'Maio',
5458
+ 'Junho',
5459
+ 'Julho',
5460
+ 'Agosto',
5461
+ 'Setembro',
5462
+ 'Outubro',
5463
+ 'Novembro',
5464
+ 'Dezembro'
5465
+ ];
5466
+ nomesDias = [
5467
+ 'Dom',
5468
+ 'Seg',
5469
+ 'Ter',
5470
+ 'Qua',
5471
+ 'Qui',
5472
+ 'Sex',
5473
+ 'Sáb'
5474
+ ];
5475
+ mesSelecionado = 0;
5476
+ anoSelecionado = 0;
5477
+ dataReferenciaSemana = new Date();
5478
+ diasSemana = [];
5479
+ horarios = [];
5480
+ constructor(alertController) {
5481
+ this.alertController = alertController;
5482
+ addIcons({
5483
+ chevronBackOutline,
5484
+ chevronForwardOutline
5485
+ });
5486
+ }
5487
+ ngOnInit() {
5488
+ const hoje = new Date();
5489
+ hoje.setHours(0, 0, 0, 0);
5490
+ this.dataReferenciaSemana = this.obterSegundaFeira(hoje);
5491
+ this.atualizarMesAno(this.dataReferenciaSemana);
5492
+ this.gerarHorarios();
5493
+ this.gerarSemana(this.dataReferenciaSemana);
5494
+ }
5495
+ get nomeMes() {
5496
+ return this.nomesMeses[this.mesSelecionado];
5497
+ }
5498
+ get numeroMes() {
5499
+ return (this.mesSelecionado + 1).toString().padStart(2, '0');
5500
+ }
5501
+ mesAnterior() {
5502
+ const novaData = new Date(this.dataReferenciaSemana);
5503
+ novaData.setDate(novaData.getDate() - 30);
5504
+ this.gerarSemana(novaData);
5505
+ this.atualizarMesAno(this.dataReferenciaSemana);
5506
+ }
5507
+ proximoMes() {
5508
+ const novaData = new Date(this.dataReferenciaSemana);
5509
+ novaData.setDate(novaData.getDate() + 30);
5510
+ this.gerarSemana(novaData);
5511
+ this.atualizarMesAno(this.dataReferenciaSemana);
5512
+ }
5513
+ semanaAnterior() {
5514
+ const novaData = new Date(this.dataReferenciaSemana);
5515
+ novaData.setDate(novaData.getDate() - 7);
5516
+ this.gerarSemana(novaData);
5517
+ this.atualizarMesAno(this.dataReferenciaSemana);
5518
+ }
5519
+ proximaSemana() {
5520
+ const novaData = new Date(this.dataReferenciaSemana);
5521
+ novaData.setDate(novaData.getDate() + 7);
5522
+ this.gerarSemana(novaData);
5523
+ this.atualizarMesAno(this.dataReferenciaSemana);
5524
+ }
5525
+ obterSegundaFeira(data) {
5526
+ const resultado = new Date(data);
5527
+ resultado.setHours(0, 0, 0, 0);
5528
+ const diaSemana = resultado.getDay();
5529
+ const diasVoltar = diaSemana === 0 ? 6 : diaSemana - 1;
5530
+ resultado.setDate(resultado.getDate() - diasVoltar);
5531
+ return resultado;
5532
+ }
5533
+ atualizarMesAno(data) {
5534
+ this.mesSelecionado = data.getMonth();
5535
+ this.anoSelecionado = data.getFullYear();
5536
+ }
5537
+ gerarSemana(dataReferencia) {
5538
+ const segunda = this.obterSegundaFeira(dataReferencia);
5539
+ this.dataReferenciaSemana = new Date(segunda);
5540
+ const domingo = new Date(segunda);
5541
+ domingo.setDate(domingo.getDate() - 1);
5542
+ this.diasSemana = [];
5543
+ for (let i = 0; i < 7; i++) {
5544
+ const data = new Date(domingo);
5545
+ data.setDate(domingo.getDate() + i);
5546
+ this.diasSemana.push({
5547
+ data,
5548
+ numero: data.getDate(),
5549
+ nome: this.nomesDias[data.getDay()],
5550
+ hoje: this.ehHoje(data)
5551
+ });
5552
+ }
5553
+ }
5554
+ gerarHorarios() {
5555
+ this.horarios = [];
5556
+ const minutoInicio = this.horaInicio * 60;
5557
+ const minutoFim = (this.horaFim * 60) + 30;
5558
+ for (let minutoAtual = minutoInicio; minutoAtual <= minutoFim; minutoAtual += this.intervaloMinutos) {
5559
+ const hora = Math.floor(minutoAtual / 60);
5560
+ const minuto = minutoAtual % 60;
5561
+ this.horarios.push(`${hora.toString().padStart(2, '0')}:${minuto.toString().padStart(2, '0')}`);
5562
+ }
5563
+ }
5564
+ ehHoje(data) {
5565
+ const hoje = new Date();
5566
+ return (data.getDate() === hoje.getDate() && data.getMonth() === hoje.getMonth() && data.getFullYear() === hoje.getFullYear());
5567
+ }
5568
+ getItem(dia, horario) {
5569
+ return this.itens.find(item => {
5570
+ if (!item.DataHora) {
5571
+ return false;
5572
+ }
5573
+ const dataHora = new Date(item.DataHora);
5574
+ return (this.mesmaData(dataHora, dia) && this.formatarHorario(dataHora) === horario);
5575
+ });
5576
+ }
5577
+ async aplicarHorariosPadrao(data) {
5578
+ if (!this.horariosPadrao.length) {
5579
+ const alert = await this.alertController.create({
5580
+ header: 'Horários Padrões',
5581
+ message: 'Nenhum horário padrão foi configurado.',
5582
+ buttons: ['OK']
5583
+ });
5584
+ await alert.present();
5585
+ return;
5586
+ }
5587
+ const dataFormatada = new Date(data).toLocaleDateString('pt-BR');
5588
+ const alert = await this.alertController.create({
5589
+ header: 'Horários Padrões',
5590
+ message: `Deseja adicionar os horários padrões no dia ${dataFormatada}?`,
5591
+ buttons: [{ text: 'Cancelar', role: 'cancel' }, { text: 'Adicionar', handler: () => { this.confirmarAplicacaoHorariosPadrao(data); } }]
5592
+ });
5593
+ await alert.present();
5594
+ }
5595
+ confirmarAplicacaoHorariosPadrao(data) {
5596
+ if (!this.horariosPadrao.length) {
5597
+ return;
5598
+ }
5599
+ const horariosExistentes = new Set();
5600
+ this.itens.forEach(item => {
5601
+ if (!item.DataHora) {
5602
+ return;
5603
+ }
5604
+ const dataHora = new Date(item.DataHora);
5605
+ if (!this.mesmaData(dataHora, data)) {
5606
+ return;
5607
+ }
5608
+ horariosExistentes.add(this.formatarHorario(dataHora));
5609
+ });
5610
+ this.horariosPadrao.forEach(horario => {
5611
+ if (!this.horarios.includes(horario)) {
5612
+ return;
5613
+ }
5614
+ if (horariosExistentes.has(horario)) {
5615
+ return;
5616
+ }
5617
+ const dataHora = this.criarDataHora(data, horario);
5618
+ this.horarioSelecionado.emit({ DataHora: dataHora });
5619
+ horariosExistentes.add(horario);
5620
+ });
5621
+ }
5622
+ duploCliqueHorario(dia, horario) {
5623
+ const item = this.getItem(dia, horario);
5624
+ if (item) {
5625
+ this.itemSelecionado.emit({
5626
+ ...item
5627
+ });
5628
+ return;
5629
+ }
5630
+ this.horarioSelecionado.emit({ DataHora: this.criarDataHora(dia, horario) });
5631
+ }
5632
+ criarDataHora(dia, horario) {
5633
+ const data = new Date(dia);
5634
+ const [hora, minuto] = horario.split(':');
5635
+ data.setHours(Number(hora), Number(minuto), 0, 0);
5636
+ return data;
5637
+ }
5638
+ mesmaData(data1, data2) {
5639
+ return (data1.getDate() === data2.getDate() && data1.getMonth() === data2.getMonth() && data1.getFullYear() === data2.getFullYear());
5640
+ }
5641
+ formatarHorario(data) {
5642
+ const hora = data.getHours().toString().padStart(2, '0');
5643
+ const minuto = data.getMinutes().toString().padStart(2, '0');
5644
+ return `${hora}:${minuto}`;
5645
+ }
5646
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AgendaSemanalComponent, deps: [{ token: i2.AlertController }], target: i0.ɵɵFactoryTarget.Component });
5647
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: AgendaSemanalComponent, isStandalone: true, selector: "kb-agenda-semanal", inputs: { itens: "itens", legendas: "legendas", textoAjuda: "textoAjuda", horaInicio: "horaInicio", horaFim: "horaFim", intervaloMinutos: "intervaloMinutos", horariosPadrao: "horariosPadrao" }, outputs: { horarioSelecionado: "horarioSelecionado", itemSelecionado: "itemSelecionado" }, ngImport: i0, template: "<div style=\"width:100%;box-sizing:border-box;\">\n <!-- LEGENDAS -->\n @if (legendas.length > 0 || textoAjuda) {\n <ion-row\n style=\"align-items:center;margin-bottom:8px;padding:6px 4px;min-height:70px;border-bottom:1px solid #cbd5e1;\">\n @for (legenda of legendas; track legenda.Texto) {\n <ion-col size=\"auto\">\n <div style=\"display:flex;align-items:center;gap:5px;\">\n <span [ngClass]=\"legenda.ClasseCss\"\n style=\"display:inline-block;width:18px;height:18px;border:1px solid #64748b;\">\n </span>\n <span style=\"font-size:18px;color:#475569;\">\n {{ legenda.Texto }}\n </span>\n </div>\n </ion-col>\n }\n\n @if (textoAjuda) {\n <ion-col style=\"display:flex;height:100%;justify-content:end;align-self:end;\">\n <div style=\"font-size:14px;color:#475569;\">\n {{ textoAjuda }}\n </div>\n </ion-col>\n }\n </ion-row>\n }\n\n <!-- GRADE -->\n <div style=\"width:100%;max-height:610px;overflow:auto;border:1px solid #475569;background:#ffffff;\">\n <table style=\"width:100%;min-width:900px;border-collapse:collapse;table-layout:fixed;font-size:12px;\">\n <!-- CABE\u00C7ALHO -->\n <thead style=\"position:sticky;top:0;z-index:10;background:#ffffff;\">\n <tr>\n <!-- M\u00CAS / ANO -->\n <th\n style=\"width:90px;height:64px;padding:2px;border-right:1px solid #475569;border-bottom:1px solid #475569;background:#ffffff;\">\n <div style=\"font-size:10px;font-weight:400;color:#475569;\">\n {{ anoSelecionado }}\n </div>\n\n <div style=\"display:flex;align-items:center;justify-content:space-between;padding:0 2px;\">\n <button type=\"button\" (click)=\"mesAnterior()\"\n style=\"border:0;background:transparent;padding:0;cursor:pointer;\">\n <ion-icon name=\"chevron-back-outline\" style=\"font-size:16px;color:#334155;\">\n </ion-icon>\n </button>\n\n <span style=\"font-size:25px;line-height:1;font-weight:700;color:#84cc16;\">\n {{ numeroMes }}\n </span>\n\n <button type=\"button\" (click)=\"proximoMes()\"\n style=\"border:0;background:transparent;padding:0;cursor:pointer;\">\n <ion-icon name=\"chevron-forward-outline\" style=\"font-size:16px;color:#334155;\">\n </ion-icon>\n </button>\n </div>\n\n <div style=\"font-size:9px;color:#475569;margin-top:2px;\">\n {{ nomeMes }}\n </div>\n </th>\n\n <!-- DIAS -->\n @for (dia of diasSemana; track dia.data.getTime(); let primeiro = $first; let ultimo = $last) {\n <th [style.background]=\"dia.hoje ? '#fff7ed' : '#ffffff'\"\n style=\"height:64px;padding:3px;border-right:1px solid #475569;border-bottom:1px solid #475569;text-align:center;position:relative;\">\n\n @if (primeiro) {\n <button type=\"button\" (click)=\"semanaAnterior()\"\n style=\"position:absolute;left:3px;top:22px;border:0;background:transparent;padding:0;cursor:pointer;\">\n <ion-icon name=\"chevron-back-outline\" style=\"font-size:15px;color:#334155;\">\n </ion-icon>\n </button>\n }\n\n <div (dblclick)=\"aplicarHorariosPadrao(dia.data)\"\n [style.color]=\"dia.hoje ? '#fb923c' : '#134e4a'\"\n title=\"Duplo clique para aplicar os hor\u00E1rios padr\u00F5es\"\n style=\"font-size:24px;font-weight:700;line-height:1.1;cursor:pointer;user-select:none;\">\n {{ dia.numero }}\n </div>\n\n <div [style.color]=\"dia.hoje ? '#fb923c' : '#111827'\"\n style=\"font-size:11px;font-weight:700;margin-top:3px;\">\n {{ dia.nome }}\n </div>\n\n @if (ultimo) {\n <button type=\"button\" (click)=\"proximaSemana()\"\n style=\"position:absolute;right:3px;top:22px;border:0;background:transparent;padding:0;cursor:pointer;\">\n <ion-icon name=\"chevron-forward-outline\" style=\"font-size:15px;color:#334155;\">\n </ion-icon>\n </button>\n }\n </th>\n }\n </tr>\n </thead>\n\n <!-- CORPO -->\n <tbody>\n @for (horario of horarios; track horario) {\n <tr>\n <!-- HOR\u00C1RIO -->\n <td\n style=\"width:90px;height:29px;padding:1px 4px;text-align:center;font-size:13px;color:#1e293b;background:#ffffff;border-right:1px solid #475569;border-bottom:1px solid #94a3b8;\">\n {{ horario }}\n </td>\n\n <!-- DIAS -->\n @for (dia of diasSemana; track dia.data.getTime()) {\n @let item = getItem(dia.data, horario);\n\n <td (dblclick)=\"duploCliqueHorario(dia.data, horario)\" [ngClass]=\"item?.ClasseCss || ''\"\n style=\"height:29px;padding:0;text-align:center;vertical-align:middle;cursor:pointer;border-right:1px solid #475569;border-bottom:1px solid #94a3b8;user-select:none;overflow:hidden;\">\n\n @if (item?.Texto) {\n <div\n style=\"width:100%;height:100%;min-height:27px;display:flex;align-items:center;justify-content:center;padding:1px 3px;box-sizing:border-box;overflow:hidden;\">\n <span\n style=\"font-size:9px;font-weight:600;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;\">\n {{ item?.Texto }}\n </span>\n </div>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n</div>", styles: [".status-disponivel{background:#8cc63f!important;color:#fff}.status-agendada{background:#f29a52!important;color:#fff}.status-nao-realizada{background:#aeb4b7!important;color:#fff}.status-nao-compareceu{background:#5f91c9!important;color:#fff}.status-sem-prontuario{background:#d00000!important;color:#fff}td:not([class*=status-]):hover{background:#f8fafc}.status-live-agendada,.status-agendada{background:#f29a52!important;color:#fff}.status-realizada{background:#07594f!important;color:#fff}.status-live-nao-realizada{background:#d00000!important;color:#fff}.status-live-realizada{background:#07594f!important;color:#fff}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
5648
+ }
5649
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AgendaSemanalComponent, decorators: [{
5650
+ type: Component,
5651
+ args: [{ imports: [IonIcon, IonCol, IonRow, NgClass], selector: 'kb-agenda-semanal', template: "<div style=\"width:100%;box-sizing:border-box;\">\n <!-- LEGENDAS -->\n @if (legendas.length > 0 || textoAjuda) {\n <ion-row\n style=\"align-items:center;margin-bottom:8px;padding:6px 4px;min-height:70px;border-bottom:1px solid #cbd5e1;\">\n @for (legenda of legendas; track legenda.Texto) {\n <ion-col size=\"auto\">\n <div style=\"display:flex;align-items:center;gap:5px;\">\n <span [ngClass]=\"legenda.ClasseCss\"\n style=\"display:inline-block;width:18px;height:18px;border:1px solid #64748b;\">\n </span>\n <span style=\"font-size:18px;color:#475569;\">\n {{ legenda.Texto }}\n </span>\n </div>\n </ion-col>\n }\n\n @if (textoAjuda) {\n <ion-col style=\"display:flex;height:100%;justify-content:end;align-self:end;\">\n <div style=\"font-size:14px;color:#475569;\">\n {{ textoAjuda }}\n </div>\n </ion-col>\n }\n </ion-row>\n }\n\n <!-- GRADE -->\n <div style=\"width:100%;max-height:610px;overflow:auto;border:1px solid #475569;background:#ffffff;\">\n <table style=\"width:100%;min-width:900px;border-collapse:collapse;table-layout:fixed;font-size:12px;\">\n <!-- CABE\u00C7ALHO -->\n <thead style=\"position:sticky;top:0;z-index:10;background:#ffffff;\">\n <tr>\n <!-- M\u00CAS / ANO -->\n <th\n style=\"width:90px;height:64px;padding:2px;border-right:1px solid #475569;border-bottom:1px solid #475569;background:#ffffff;\">\n <div style=\"font-size:10px;font-weight:400;color:#475569;\">\n {{ anoSelecionado }}\n </div>\n\n <div style=\"display:flex;align-items:center;justify-content:space-between;padding:0 2px;\">\n <button type=\"button\" (click)=\"mesAnterior()\"\n style=\"border:0;background:transparent;padding:0;cursor:pointer;\">\n <ion-icon name=\"chevron-back-outline\" style=\"font-size:16px;color:#334155;\">\n </ion-icon>\n </button>\n\n <span style=\"font-size:25px;line-height:1;font-weight:700;color:#84cc16;\">\n {{ numeroMes }}\n </span>\n\n <button type=\"button\" (click)=\"proximoMes()\"\n style=\"border:0;background:transparent;padding:0;cursor:pointer;\">\n <ion-icon name=\"chevron-forward-outline\" style=\"font-size:16px;color:#334155;\">\n </ion-icon>\n </button>\n </div>\n\n <div style=\"font-size:9px;color:#475569;margin-top:2px;\">\n {{ nomeMes }}\n </div>\n </th>\n\n <!-- DIAS -->\n @for (dia of diasSemana; track dia.data.getTime(); let primeiro = $first; let ultimo = $last) {\n <th [style.background]=\"dia.hoje ? '#fff7ed' : '#ffffff'\"\n style=\"height:64px;padding:3px;border-right:1px solid #475569;border-bottom:1px solid #475569;text-align:center;position:relative;\">\n\n @if (primeiro) {\n <button type=\"button\" (click)=\"semanaAnterior()\"\n style=\"position:absolute;left:3px;top:22px;border:0;background:transparent;padding:0;cursor:pointer;\">\n <ion-icon name=\"chevron-back-outline\" style=\"font-size:15px;color:#334155;\">\n </ion-icon>\n </button>\n }\n\n <div (dblclick)=\"aplicarHorariosPadrao(dia.data)\"\n [style.color]=\"dia.hoje ? '#fb923c' : '#134e4a'\"\n title=\"Duplo clique para aplicar os hor\u00E1rios padr\u00F5es\"\n style=\"font-size:24px;font-weight:700;line-height:1.1;cursor:pointer;user-select:none;\">\n {{ dia.numero }}\n </div>\n\n <div [style.color]=\"dia.hoje ? '#fb923c' : '#111827'\"\n style=\"font-size:11px;font-weight:700;margin-top:3px;\">\n {{ dia.nome }}\n </div>\n\n @if (ultimo) {\n <button type=\"button\" (click)=\"proximaSemana()\"\n style=\"position:absolute;right:3px;top:22px;border:0;background:transparent;padding:0;cursor:pointer;\">\n <ion-icon name=\"chevron-forward-outline\" style=\"font-size:15px;color:#334155;\">\n </ion-icon>\n </button>\n }\n </th>\n }\n </tr>\n </thead>\n\n <!-- CORPO -->\n <tbody>\n @for (horario of horarios; track horario) {\n <tr>\n <!-- HOR\u00C1RIO -->\n <td\n style=\"width:90px;height:29px;padding:1px 4px;text-align:center;font-size:13px;color:#1e293b;background:#ffffff;border-right:1px solid #475569;border-bottom:1px solid #94a3b8;\">\n {{ horario }}\n </td>\n\n <!-- DIAS -->\n @for (dia of diasSemana; track dia.data.getTime()) {\n @let item = getItem(dia.data, horario);\n\n <td (dblclick)=\"duploCliqueHorario(dia.data, horario)\" [ngClass]=\"item?.ClasseCss || ''\"\n style=\"height:29px;padding:0;text-align:center;vertical-align:middle;cursor:pointer;border-right:1px solid #475569;border-bottom:1px solid #94a3b8;user-select:none;overflow:hidden;\">\n\n @if (item?.Texto) {\n <div\n style=\"width:100%;height:100%;min-height:27px;display:flex;align-items:center;justify-content:center;padding:1px 3px;box-sizing:border-box;overflow:hidden;\">\n <span\n style=\"font-size:9px;font-weight:600;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;\">\n {{ item?.Texto }}\n </span>\n </div>\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n</div>", styles: [".status-disponivel{background:#8cc63f!important;color:#fff}.status-agendada{background:#f29a52!important;color:#fff}.status-nao-realizada{background:#aeb4b7!important;color:#fff}.status-nao-compareceu{background:#5f91c9!important;color:#fff}.status-sem-prontuario{background:#d00000!important;color:#fff}td:not([class*=status-]):hover{background:#f8fafc}.status-live-agendada,.status-agendada{background:#f29a52!important;color:#fff}.status-realizada{background:#07594f!important;color:#fff}.status-live-nao-realizada{background:#d00000!important;color:#fff}.status-live-realizada{background:#07594f!important;color:#fff}\n"] }]
5652
+ }], ctorParameters: () => [{ type: i2.AlertController }], propDecorators: { itens: [{
5653
+ type: Input
5654
+ }], legendas: [{
5655
+ type: Input
5656
+ }], textoAjuda: [{
5657
+ type: Input
5658
+ }], horaInicio: [{
5659
+ type: Input
5660
+ }], horaFim: [{
5661
+ type: Input
5662
+ }], intervaloMinutos: [{
5663
+ type: Input
5664
+ }], horariosPadrao: [{
5665
+ type: Input
5666
+ }], horarioSelecionado: [{
5667
+ type: Output
5668
+ }], itemSelecionado: [{
5669
+ type: Output
5670
+ }] } });
5671
+
5383
5672
  class BaseBtnComponent {
5384
5673
  disabled = false;
5385
5674
  type = 'submit';
@@ -5410,10 +5699,10 @@ class BaseBtnComponent {
5410
5699
  this.fill = 'solid';
5411
5700
  }
5412
5701
  }
5413
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5414
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: BaseBtnComponent, isStandalone: true, selector: "ng-component", inputs: { disabled: "disabled", type: "type", icon: "icon", iconSrc: "iconSrc", title: "title", fill: "fill", expand: "expand", size: "size", iconSlot: "iconSlot", color: "color" }, outputs: { btnClick: "btnClick" }, ngImport: i0, template: '', isInline: true });
5702
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BaseBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5703
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: BaseBtnComponent, isStandalone: true, selector: "ng-component", inputs: { disabled: "disabled", type: "type", icon: "icon", iconSrc: "iconSrc", title: "title", fill: "fill", expand: "expand", size: "size", iconSlot: "iconSlot", color: "color" }, outputs: { btnClick: "btnClick" }, ngImport: i0, template: '', isInline: true });
5415
5704
  }
5416
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BaseBtnComponent, decorators: [{
5705
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BaseBtnComponent, decorators: [{
5417
5706
  type: Component,
5418
5707
  args: [{
5419
5708
  template: ''
@@ -5462,10 +5751,10 @@ class BtnActionComponent extends BaseBtnComponent {
5462
5751
  ngOnInit() {
5463
5752
  this.buttonStyle = '';
5464
5753
  }
5465
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5466
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: BtnActionComponent, isStandalone: true, selector: "kb-btn-action", inputs: { title: "title", color: "color", hidden: "hidden", icon: "icon", iconSrc: "iconSrc", imgSrc: "imgSrc", boxColor: "boxColor", btnMargin: "btnMargin", expand: "expand", iconStyle: "iconStyle", titleStyle: "titleStyle" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n [hidden]=\"hidden\" (click)=\"onClick()\" class=\"kb-btn-action\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? iconSlot : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\" [style]=\"iconStyle\"></ion-icon>\n }\n <span [style]=\"titleStyle\">{{ title }}</span>\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? iconSlot : 'icon-only'\" />\n }\n</ion-button>", styles: ["img{width:24px;margin-right:6px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] });
5754
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5755
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: BtnActionComponent, isStandalone: true, selector: "kb-btn-action", inputs: { title: "title", color: "color", hidden: "hidden", icon: "icon", iconSrc: "iconSrc", imgSrc: "imgSrc", boxColor: "boxColor", btnMargin: "btnMargin", expand: "expand", iconStyle: "iconStyle", titleStyle: "titleStyle" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n [hidden]=\"hidden\" (click)=\"onClick()\" class=\"kb-btn-action\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? iconSlot : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\" [style]=\"iconStyle\"></ion-icon>\n }\n <span [style]=\"titleStyle\">{{ title }}</span>\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? iconSlot : 'icon-only'\" />\n }\n</ion-button>", styles: ["img{width:24px;margin-right:6px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }] });
5467
5756
  }
5468
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnActionComponent, decorators: [{
5757
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnActionComponent, decorators: [{
5469
5758
  type: Component,
5470
5759
  args: [{ selector: 'kb-btn-action', imports: [IonIcon, IonButton,], template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n [hidden]=\"hidden\" (click)=\"onClick()\" class=\"kb-btn-action\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? iconSlot : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\" [style]=\"iconStyle\"></ion-icon>\n }\n <span [style]=\"titleStyle\">{{ title }}</span>\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? iconSlot : 'icon-only'\" />\n }\n</ion-button>", styles: ["img{width:24px;margin-right:6px}\n"] }]
5471
5760
  }], ctorParameters: () => [], propDecorators: { title: [{
@@ -5502,10 +5791,10 @@ class BtnCancelarComponent extends BaseBtnComponent {
5502
5791
  super();
5503
5792
  this.type = 'button';
5504
5793
  }
5505
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnCancelarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5506
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: BtnCancelarComponent, isStandalone: true, selector: "kb-btn-cancelar", inputs: { icon: "icon", title: "title", color: "color" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" \n [size]=\"size\" class=\"kb-btn-cancelar\"\n (click)=\"onClick()\"\n > \n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [src]=\"iconSrc\" [name]=\"icon\"></ion-icon>\n {{ title }}\n</ion-button> \n<!-- \n<ion-button color=\"tertiary\" fill=\"outline\" (click)=\"cancelarContato()\" style=\"box-shadow: #6370ff 0px 3px 3px 0.05px\"\n [disabled]=\"!selectedContato\">\n <ion-icon src=\"/assets/icon/limpar_purple_24dp.svg\"></ion-icon>\n Cancelar\n</ion-button>\n-->", styles: ["ion-button{margin:4px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] });
5794
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnCancelarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5795
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: BtnCancelarComponent, isStandalone: true, selector: "kb-btn-cancelar", inputs: { icon: "icon", title: "title", color: "color" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" \n [size]=\"size\" class=\"kb-btn-cancelar\"\n (click)=\"onClick()\"\n > \n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [src]=\"iconSrc\" [name]=\"icon\"></ion-icon>\n {{ title }}\n</ion-button> \n<!-- \n<ion-button color=\"tertiary\" fill=\"outline\" (click)=\"cancelarContato()\" style=\"box-shadow: #6370ff 0px 3px 3px 0.05px\"\n [disabled]=\"!selectedContato\">\n <ion-icon src=\"/assets/icon/limpar_purple_24dp.svg\"></ion-icon>\n Cancelar\n</ion-button>\n-->", styles: ["ion-button{margin:4px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }] });
5507
5796
  }
5508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnCancelarComponent, decorators: [{
5797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnCancelarComponent, decorators: [{
5509
5798
  type: Component,
5510
5799
  args: [{ selector: 'kb-btn-cancelar', imports: [IonIcon, IonButton,], template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" \n [size]=\"size\" class=\"kb-btn-cancelar\"\n (click)=\"onClick()\"\n > \n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [src]=\"iconSrc\" [name]=\"icon\"></ion-icon>\n {{ title }}\n</ion-button> \n<!-- \n<ion-button color=\"tertiary\" fill=\"outline\" (click)=\"cancelarContato()\" style=\"box-shadow: #6370ff 0px 3px 3px 0.05px\"\n [disabled]=\"!selectedContato\">\n <ion-icon src=\"/assets/icon/limpar_purple_24dp.svg\"></ion-icon>\n Cancelar\n</ion-button>\n-->", styles: ["ion-button{margin:4px}\n"] }]
5511
5800
  }], ctorParameters: () => [], propDecorators: { icon: [{
@@ -5525,10 +5814,10 @@ class BtnExcluirComponent extends BaseBtnComponent {
5525
5814
  constructor() {
5526
5815
  super();
5527
5816
  }
5528
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnExcluirComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5529
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: BtnExcluirComponent, isStandalone: true, selector: "kb-btn-excluir", inputs: { type: "type", expand: "expand", icon: "icon", title: "title", color: "color" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\">\n @if (icon) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\"></ion-icon>\n }\n {{ title }}\n</ion-button>", styles: ["ion-button{margin:4px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] });
5817
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnExcluirComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5818
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: BtnExcluirComponent, isStandalone: true, selector: "kb-btn-excluir", inputs: { type: "type", expand: "expand", icon: "icon", title: "title", color: "color" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\">\n @if (icon) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\"></ion-icon>\n }\n {{ title }}\n</ion-button>", styles: ["ion-button{margin:4px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }] });
5530
5819
  }
5531
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnExcluirComponent, decorators: [{
5820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnExcluirComponent, decorators: [{
5532
5821
  type: Component,
5533
5822
  args: [{ selector: 'kb-btn-excluir', imports: [IonIcon, IonButton,], template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\">\n @if (icon) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\"></ion-icon>\n }\n {{ title }}\n</ion-button>", styles: ["ion-button{margin:4px}\n"] }]
5534
5823
  }], ctorParameters: () => [], propDecorators: { type: [{
@@ -5554,10 +5843,10 @@ class BtnNovoComponent extends BaseBtnComponent {
5554
5843
  super();
5555
5844
  this.type = 'button';
5556
5845
  }
5557
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnNovoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5558
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: BtnNovoComponent, isStandalone: true, selector: "kb-btn-novo", inputs: { title: "title", icon: "icon", iconSrc: "iconSrc", expand: "expand", imgSrc: "imgSrc", color: "color" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" class=\"kb-btn-novo\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\"></ion-icon>\n }\n {{ title }}\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? 'start' : 'icon-only'\" />\n }\n</ion-button>\n<!-- \n<ion-button (click)=\"novoContato()\" fill=\"outline\" style=\"box-shadow: #4c8dff 0px 3px 3px 0.05px\">\n <ion-icon slot=\"start\" name=\"person-add\"></ion-icon>\n Novo\n</ion-button>\n-->", styles: ["img{width:24px;margin-right:6px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] });
5846
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnNovoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5847
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: BtnNovoComponent, isStandalone: true, selector: "kb-btn-novo", inputs: { title: "title", icon: "icon", iconSrc: "iconSrc", expand: "expand", imgSrc: "imgSrc", color: "color" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" class=\"kb-btn-novo\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\"></ion-icon>\n }\n {{ title }}\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? 'start' : 'icon-only'\" />\n }\n</ion-button>\n<!-- \n<ion-button (click)=\"novoContato()\" fill=\"outline\" style=\"box-shadow: #4c8dff 0px 3px 3px 0.05px\">\n <ion-icon slot=\"start\" name=\"person-add\"></ion-icon>\n Novo\n</ion-button>\n-->", styles: ["img{width:24px;margin-right:6px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }] });
5559
5848
  }
5560
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnNovoComponent, decorators: [{
5849
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnNovoComponent, decorators: [{
5561
5850
  type: Component,
5562
5851
  args: [{ selector: 'kb-btn-novo', imports: [IonIcon, IonButton,], template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" class=\"kb-btn-novo\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\"></ion-icon>\n }\n {{ title }}\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? 'start' : 'icon-only'\" />\n }\n</ion-button>\n<!-- \n<ion-button (click)=\"novoContato()\" fill=\"outline\" style=\"box-shadow: #4c8dff 0px 3px 3px 0.05px\">\n <ion-icon slot=\"start\" name=\"person-add\"></ion-icon>\n Novo\n</ion-button>\n-->", styles: ["img{width:24px;margin-right:6px}\n"] }]
5563
5852
  }], ctorParameters: () => [], propDecorators: { title: [{
@@ -5580,10 +5869,10 @@ class BtnSalvarComponent extends BaseBtnComponent {
5580
5869
  constructor() {
5581
5870
  super();
5582
5871
  }
5583
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnSalvarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5584
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: BtnSalvarComponent, isStandalone: true, selector: "kb-btn-salvar", inputs: { btnMargin: "btnMargin", color: "color" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" [style.margin]=\"btnMargin\" class=\"kb-btn-salvar\">\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\"></ion-icon>\n {{ title }}\n</ion-button>", styles: [""], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] });
5872
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnSalvarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5873
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: BtnSalvarComponent, isStandalone: true, selector: "kb-btn-salvar", inputs: { btnMargin: "btnMargin", color: "color" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" [style.margin]=\"btnMargin\" class=\"kb-btn-salvar\">\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\"></ion-icon>\n {{ title }}\n</ion-button>", styles: [""], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }] });
5585
5874
  }
5586
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnSalvarComponent, decorators: [{
5875
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnSalvarComponent, decorators: [{
5587
5876
  type: Component,
5588
5877
  args: [{ selector: 'kb-btn-salvar', imports: [IonIcon, IonButton,], template: "<ion-button [color]=\"color\" [type]=\"type\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" [style.margin]=\"btnMargin\" class=\"kb-btn-salvar\">\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\"></ion-icon>\n {{ title }}\n</ion-button>" }]
5589
5878
  }], ctorParameters: () => [], propDecorators: { btnMargin: [{
@@ -5604,10 +5893,10 @@ class BtnRoundedComponent extends BaseBtnComponent {
5604
5893
  super();
5605
5894
  this.type = 'button';
5606
5895
  }
5607
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnRoundedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5608
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: BtnRoundedComponent, isStandalone: true, selector: "kb-btn-rounded", inputs: { title: "title", icon: "icon", iconSrc: "iconSrc", expand: "expand", imgSrc: "imgSrc", color: "color", fill: "fill" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" shape=\"round\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" class=\"kb-btn-rounded\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\"></ion-icon>\n }\n <!-- \n {{ title }}\n -->\n @if (title) {\n <span [innerHTML]=\"title\"></span>\n }\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? 'start' : 'icon-only'\" />\n }\n</ion-button>\n<!-- \n<ion-button (click)=\"novoContato()\" fill=\"outline\" style=\"box-shadow: #4c8dff 0px 3px 3px 0.05px\">\n <ion-icon slot=\"start\" name=\"person-add\"></ion-icon>\n Novo\n</ion-button>\n-->", styles: ["img{width:24px;margin-right:6px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }] });
5896
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnRoundedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5897
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: BtnRoundedComponent, isStandalone: true, selector: "kb-btn-rounded", inputs: { title: "title", icon: "icon", iconSrc: "iconSrc", expand: "expand", imgSrc: "imgSrc", color: "color", fill: "fill" }, usesInheritance: true, ngImport: i0, template: "<ion-button [color]=\"color\" [type]=\"type\" shape=\"round\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" class=\"kb-btn-rounded\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\"></ion-icon>\n }\n <!-- \n {{ title }}\n -->\n @if (title) {\n <span [innerHTML]=\"title\"></span>\n }\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? 'start' : 'icon-only'\" />\n }\n</ion-button>\n<!-- \n<ion-button (click)=\"novoContato()\" fill=\"outline\" style=\"box-shadow: #4c8dff 0px 3px 3px 0.05px\">\n <ion-icon slot=\"start\" name=\"person-add\"></ion-icon>\n Novo\n</ion-button>\n-->", styles: ["img{width:24px;margin-right:6px}\n"], dependencies: [{ kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"], outputs: ["ionFocus", "ionBlur"] }] });
5609
5898
  }
5610
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: BtnRoundedComponent, decorators: [{
5899
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: BtnRoundedComponent, decorators: [{
5611
5900
  type: Component,
5612
5901
  args: [{ selector: 'kb-btn-rounded', imports: [IonIcon, IonButton,], template: "<ion-button [color]=\"color\" [type]=\"type\" shape=\"round\" [disabled]=\"disabled\" [fill]=\"fill\" [expand]=\"expand\" [size]=\"size\"\n (click)=\"onClick()\" class=\"kb-btn-rounded\">\n @if (icon || iconSrc) {\n <ion-icon [slot]=\"title ? 'start' : 'icon-only'\" [name]=\"icon\" [src]=\"iconSrc\"></ion-icon>\n }\n <!-- \n {{ title }}\n -->\n @if (title) {\n <span [innerHTML]=\"title\"></span>\n }\n @if (imgSrc) {\n <img [src]=\"imgSrc\" [slot]=\"title ? 'start' : 'icon-only'\" />\n }\n</ion-button>\n<!-- \n<ion-button (click)=\"novoContato()\" fill=\"outline\" style=\"box-shadow: #4c8dff 0px 3px 3px 0.05px\">\n <ion-icon slot=\"start\" name=\"person-add\"></ion-icon>\n Novo\n</ion-button>\n-->", styles: ["img{width:24px;margin-right:6px}\n"] }]
5613
5902
  }], ctorParameters: () => [], propDecorators: { title: [{
@@ -5627,10 +5916,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
5627
5916
  }] } });
5628
5917
 
5629
5918
  class TituloComponent {
5630
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: TituloComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5631
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: TituloComponent, isStandalone: true, selector: "kb-titulo", ngImport: i0, template: "<div>\n <h4 class=\"kb-titulo\">\n <ng-content></ng-content>\n </h4>\n</div>", styles: ["h4{margin-top:8px!important;margin-bottom:4px!important}\n"] });
5919
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TituloComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5920
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: TituloComponent, isStandalone: true, selector: "kb-titulo", ngImport: i0, template: "<div>\n <h4 class=\"kb-titulo\">\n <ng-content></ng-content>\n </h4>\n</div>", styles: ["h4{margin-top:8px!important;margin-bottom:4px!important}\n"] });
5632
5921
  }
5633
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: TituloComponent, decorators: [{
5922
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: TituloComponent, decorators: [{
5634
5923
  type: Component,
5635
5924
  args: [{ selector: 'kb-titulo', imports: [], template: "<div>\n <h4 class=\"kb-titulo\">\n <ng-content></ng-content>\n </h4>\n</div>", styles: ["h4{margin-top:8px!important;margin-bottom:4px!important}\n"] }]
5636
5925
  }] });
@@ -5643,5 +5932,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImpor
5643
5932
  * Generated bundle index. Do not edit.
5644
5933
  */
5645
5934
 
5646
- export { AppprojectFramework, BaseCadastro, BaseInputComponent, BaseModel, BasePage, BtnActionComponent, BtnCancelarComponent, BtnExcluirComponent, BtnNovoComponent, BtnRoundedComponent, BtnSalvarComponent, CadastroService, DataService, Dominio, EntityEditComponent, EventoCadastro, EventoFoco, GridColuna, GridFiltroValor, GridTabela, GridViewComponent, HtmlCampo, HtmlRow, InputAreaComponent, InputArquivoComponent, InputCepComponent, InputCheckboxComponent, InputFormatComponent, InputHtmlComponent, InputPesquisaComponent, InputRadioComponent, InputSelectComponent, InputTextComponent, InputValorComponent, Intervalo, LibConfigService, LibService, NomePipe, PageResult, PeriodoIntervaloComponent, PesquisaCampo, SafeHtmlPipe, TituloComponent, Tree, UtilsGeralService, UtilsService, ValorFormatPipe, email, formatted, getEmail, getFormatted, getIgnore, getLabel, getMax, getMaxLength, getMin, getMinLength, getPattern, getPlaceholder, getPosicao, getReadOnly, getRequired, getTipo, ignore, label, max, maxLength, min, minLength, pattern, placeholder, posicao, readOnly, required, tipo };
5935
+ export { AgendaSemanalComponent, AppprojectFramework, BaseCadastro, BaseInputComponent, BaseModel, BasePage, BtnActionComponent, BtnCancelarComponent, BtnExcluirComponent, BtnNovoComponent, BtnRoundedComponent, BtnSalvarComponent, CadastroService, DataService, Dominio, EntityEditComponent, EventoCadastro, EventoFoco, GridColuna, GridFiltroValor, GridTabela, GridViewComponent, HtmlCampo, HtmlRow, InputAreaComponent, InputArquivoComponent, InputCepComponent, InputCheckboxComponent, InputFormatComponent, InputHtmlComponent, InputPesquisaComponent, InputRadioComponent, InputSelectComponent, InputTextComponent, InputValorComponent, Intervalo, LibConfigService, LibService, NomePipe, PageResult, PeriodoIntervaloComponent, PesquisaCampo, SafeHtmlPipe, TituloComponent, Tree, UtilsGeralService, UtilsService, ValorFormatPipe, email, formatted, getEmail, getFormatted, getIgnore, getLabel, getMax, getMaxLength, getMin, getMinLength, getPattern, getPlaceholder, getPosicao, getReadOnly, getRequired, getTipo, ignore, label, max, maxLength, min, minLength, pattern, placeholder, posicao, readOnly, required, tipo };
5647
5936
  //# sourceMappingURL=appproject-framework.mjs.map