appproject-framework 1.0.18 → 1.0.20

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.
@@ -1544,6 +1544,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImpor
1544
1544
  }]
1545
1545
  }], ctorParameters: () => [] });
1546
1546
 
1547
+ class MidiaService {
1548
+ constructor() { }
1549
+ /* * * * * * * * * * * * * Helpers * * * * * * * * * * * * * */
1550
+ async getCamera(cameraId, width, height) {
1551
+ // Use Max Width and Height
1552
+ /*
1553
+ return navigator.mediaDevices.getUserMedia({
1554
+ video: {
1555
+ width: { max: 1280 },
1556
+ height: { max: 720 }
1557
+ },
1558
+ audio: false
1559
+ });
1560
+ */
1561
+ const videoConstraints = {
1562
+ deviceId: cameraId ? { exact: cameraId } : null,
1563
+ width: {
1564
+ ideal: width ? width : 1280
1565
+ },
1566
+ height: {
1567
+ ideal: height ? height : 720
1568
+ },
1569
+ frameRate: 30,
1570
+ aspectRatio: { ideal: 1.777777778 } // Força proporção 16:9
1571
+ };
1572
+ //forçar ratio
1573
+ return navigator.mediaDevices.getUserMedia({
1574
+ video: videoConstraints,
1575
+ audio: false
1576
+ });
1577
+ }
1578
+ async getMic(audioId) {
1579
+ const audioConstraints = {
1580
+ deviceId: audioId ? { exact: audioId } : null
1581
+ };
1582
+ return navigator.mediaDevices.getUserMedia({
1583
+ video: false,
1584
+ audio: audioConstraints
1585
+ });
1586
+ }
1587
+ async getDevices() {
1588
+ // if (!await this.checkMediaPermissions()){
1589
+ // this.setError("Sem permissão");
1590
+ // }
1591
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
1592
+ const devices = await navigator.mediaDevices.enumerateDevices();
1593
+ const videoDevices = devices.filter((d) => d.kind === "videoinput");
1594
+ if (!videoDevices.length) {
1595
+ }
1596
+ const audioDevices = devices.filter((d) => d.kind === "audioinput");
1597
+ if (!audioDevices.length) {
1598
+ }
1599
+ stream.getTracks().forEach(track => track.stop());
1600
+ return { videoDevices, audioDevices };
1601
+ }
1602
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: MidiaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1603
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: MidiaService, providedIn: 'root' });
1604
+ }
1605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: MidiaService, decorators: [{
1606
+ type: Injectable,
1607
+ args: [{
1608
+ providedIn: 'root'
1609
+ }]
1610
+ }], ctorParameters: () => [] });
1611
+
1547
1612
  //import { AlertController, LoadingController, ModalController, ToastController } from '@ionic/angular/standalone';
1548
1613
  //import { PesquisaResultado } from '../page/pesquisa-resultado/pesquisa-resultado';
1549
1614
  class UtilsService {
@@ -2606,7 +2671,7 @@ class InputTextComponent extends BaseInputComponent {
2606
2671
  disabled = false;
2607
2672
  console = console;
2608
2673
  itemInput;
2609
- inputTextControl;
2674
+ inputText;
2610
2675
  constructor(renderer) {
2611
2676
  super();
2612
2677
  this.renderer = renderer;
@@ -2663,7 +2728,7 @@ class InputTextComponent extends BaseInputComponent {
2663
2728
  console.log('type:', this.type);
2664
2729
  }
2665
2730
  setFocus() {
2666
- this.inputTextControl.nativeElement.setFocus();
2731
+ this.inputText.setFocus();
2667
2732
  }
2668
2733
  copiarClick() {
2669
2734
  // console.log(this.inputTextEdit.nativeElement);
@@ -2695,7 +2760,7 @@ class InputTextComponent extends BaseInputComponent {
2695
2760
  useExisting: InputTextComponent,
2696
2761
  multi: true,
2697
2762
  },
2698
- ], viewQueries: [{ propertyName: "itemInput", first: true, predicate: ["itemInput"], descendants: true, read: ElementRef }, { propertyName: "inputTextControl", first: true, predicate: ["inputText"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<!-- \r\n se label position = floating colocar padding = 12px \r\n \r\n -->\r\n<div [class]=\"{ 'input-text-padding': !classic }\">\r\n <!-- [label]=\"label\"\r\n [labelPlacement]=\"labelPosition\" -->\r\n @if(classic) {\r\n <ion-item #itemInput lines=\"none\"\r\n style=\" --background: inherited; --background-focused: transparent; padding-right: 0px;\"\r\n [class]=\"itemClass + ' classic'\"\r\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\r\n\r\n <!--\r\n <ion-label class=\"label-focus\" [position]=\"labelPosition\">{{ label }}</ion-label>\r\n -->\r\n @if (label) {\r\n <ion-label style=\"color: var(--input-label-color);\" position=\"{{ labelPosition }}\">{{ label }}</ion-label>\r\n }\r\n\r\n <!-- \r\n <ion-icon slot=\"start\" name=\"lock-closed\" aria-hidden=\"true\"></ion-icon>\r\n -->\r\n\r\n <ion-input #inputText [type]=\"type\" [placeholder]=\"placeholder\" [readonly]=\"readonly\" [value]=\"data\"\r\n (ionInput)=\"onInputChange($event)\" (ionBlur)=\"onBlur()\" (ionFocus)=\"entered()\">\r\n </ion-input>\r\n\r\n\r\n @if (showSeePassword) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\r\n (click)=\"changeTypeOfInput()\">\r\n <ion-icon slot=\"icon-only\" [icon]=\"type == 'password' ? 'eye-outline' : 'eye-off-outline' \"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n\r\n @if (showSeeCopy) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\" (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\r\n </ion-item>\r\n }\r\n @else {\r\n <ion-input #inputText [type]=\"type\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\r\n [placeholder]=\"placeholder\" class=\"modern\" maxlength=\"{{ max }}\" [value]=\"data\" mode=\"md\"\r\n (ionInput)=\"onInputChange($event)\" (ionBlur)=\"onBlur()\"\r\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake-modern' : '' \"\r\n [disabled]=\"readonly\" [shape]=\"shape\">\r\n @if (icon || iconSrc) {\r\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\r\n }\r\n\r\n @if (showSeePassword) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\r\n (click)=\"changeTypeOfInput()\">\r\n <ion-icon slot=\"icon-only\" [icon]=\"type == 'password' ? 'eye-outline' : 'eye-off-outline' \"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n\r\n @if (showSeeCopy) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\" (click)=\"copiarClick()\">\r\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n </ion-input>\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\" [ngClass]=\"validationClass\">\r\n &#8226; {{ validation.message }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n </div>\r\n }\r\n\r\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 });
2763
+ ], viewQueries: [{ propertyName: "itemInput", first: true, predicate: ["itemInput"], descendants: true, read: ElementRef }, { propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- \r\n se label position = floating colocar padding = 12px \r\n \r\n -->\r\n<div [class]=\"{ 'input-text-padding': !classic }\">\r\n <!-- [label]=\"label\"\r\n [labelPlacement]=\"labelPosition\" -->\r\n @if(classic) {\r\n <ion-item #itemInput lines=\"none\"\r\n style=\" --background: inherited; --background-focused: transparent; padding-right: 0px;\"\r\n [class]=\"itemClass + ' classic'\"\r\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake' : '' \">\r\n\r\n <!--\r\n <ion-label class=\"label-focus\" [position]=\"labelPosition\">{{ label }}</ion-label>\r\n -->\r\n @if (label) {\r\n <ion-label style=\"color: var(--input-label-color);\" position=\"{{ labelPosition }}\">{{ label }}</ion-label>\r\n }\r\n\r\n <!-- \r\n <ion-icon slot=\"start\" name=\"lock-closed\" aria-hidden=\"true\"></ion-icon>\r\n -->\r\n\r\n <ion-input #inputText [type]=\"type\" [placeholder]=\"placeholder\" [readonly]=\"readonly\" [value]=\"data\"\r\n (ionInput)=\"onInputChange($event)\" (ionBlur)=\"onBlur()\" (ionFocus)=\"entered()\">\r\n </ion-input>\r\n\r\n\r\n @if (showSeePassword) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\r\n (click)=\"changeTypeOfInput()\">\r\n <ion-icon slot=\"icon-only\" [icon]=\"type == 'password' ? 'eye-outline' : 'eye-off-outline' \"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n\r\n @if (showSeeCopy) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\" (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\r\n </ion-item>\r\n }\r\n @else {\r\n <ion-input #inputText [type]=\"type\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\r\n [placeholder]=\"placeholder\" class=\"modern\" maxlength=\"{{ max }}\" [value]=\"data\" mode=\"md\"\r\n (ionInput)=\"onInputChange($event)\" (ionBlur)=\"onBlur()\"\r\n [ngClass]=\"form?.get(formControlName)?.errors && (form?.get(formControlName)?.dirty || form?.get(formControlName)?.touched) ? 'error-shake-modern' : '' \"\r\n [disabled]=\"readonly\" [shape]=\"shape\">\r\n @if (icon || iconSrc) {\r\n <ion-icon slot=\"start\" [icon]=\"icon\" [src]=\"iconSrc\" aria-hidden=\"true\"></ion-icon>\r\n }\r\n\r\n @if (showSeePassword) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\"\r\n (click)=\"changeTypeOfInput()\">\r\n <ion-icon slot=\"icon-only\" [icon]=\"type == 'password' ? 'eye-outline' : 'eye-off-outline' \"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n\r\n @if (showSeeCopy) {\r\n\r\n <ion-button fill=\"clear\" slot=\"end\" aria-label=\"Mostrar/esconder\" class=\"btn-show-password\" (click)=\"copiarClick()\">\r\n <ion-icon slot=\"icon-only\" icon=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n }\r\n </ion-input>\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\" [ngClass]=\"validationClass\">\r\n &#8226; {{ validation.message }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n\r\n </div>\r\n }\r\n\r\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 });
2699
2764
  }
2700
2765
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: InputTextComponent, decorators: [{
2701
2766
  type: Component,
@@ -2713,9 +2778,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImpor
2713
2778
  }], itemInput: [{
2714
2779
  type: ViewChild,
2715
2780
  args: ["itemInput", { read: ElementRef }]
2716
- }], inputTextControl: [{
2781
+ }], inputText: [{
2717
2782
  type: ViewChild,
2718
- args: ["inputText", { read: ElementRef, static: true }]
2783
+ args: ["inputText"]
2719
2784
  }] } });
2720
2785
 
2721
2786
  class TreeViewNivelComponent {
@@ -3021,6 +3086,8 @@ class InputPesquisaComponent extends BaseInputComponent {
3021
3086
  dataService;
3022
3087
  renderer;
3023
3088
  injector;
3089
+ zone;
3090
+ cdr;
3024
3091
  podePesquisar = true;
3025
3092
  textoPesquisa = '';
3026
3093
  filtro = '';
@@ -3060,7 +3127,6 @@ class InputPesquisaComponent extends BaseInputComponent {
3060
3127
  modelChangeSubscription;
3061
3128
  writeValue(value) {
3062
3129
  //console.log('write value', value);
3063
- this.onChange(value);
3064
3130
  this.data = value;
3065
3131
  if (value == null || value == 0) {
3066
3132
  this.writePesquisa('');
@@ -3102,11 +3168,13 @@ class InputPesquisaComponent extends BaseInputComponent {
3102
3168
  }
3103
3169
  constructor(dataService, renderer,
3104
3170
  //private modalCtrl: ModalController,
3105
- injector) {
3171
+ injector, zone, cdr) {
3106
3172
  super();
3107
3173
  this.dataService = dataService;
3108
3174
  this.renderer = renderer;
3109
3175
  this.injector = injector;
3176
+ this.zone = zone;
3177
+ this.cdr = cdr;
3110
3178
  this.modelChangeSubscription = this.modelChanged
3111
3179
  .pipe(debounceTime(1000))
3112
3180
  .subscribe(data => {
@@ -3322,6 +3390,11 @@ class InputPesquisaComponent extends BaseInputComponent {
3322
3390
  self.selectedItem = selected;
3323
3391
  self.textoPesquisa = selected[self.campoDisplay];
3324
3392
  self.writeValue(selected[self.campoId]);
3393
+ if (emitChange) {
3394
+ self.onChange(self.data);
3395
+ self.onTouch();
3396
+ }
3397
+ self.cdr.markForCheck();
3325
3398
  self.selectElementVisivel = false;
3326
3399
  //console.log('action', self.change);
3327
3400
  if (self.pesquisaChange != null && emitChange) {
@@ -3344,6 +3417,8 @@ class InputPesquisaComponent extends BaseInputComponent {
3344
3417
  self.selectedItem = this.listaPesquisa.find(i => i[this.campoId] == e);
3345
3418
  if (self.selectedItem != null) {
3346
3419
  self.writeValue(e);
3420
+ self.onChange(self.data);
3421
+ self.onTouch();
3347
3422
  self.textoPesquisa = self.selectedItem[self.campoDisplay];
3348
3423
  if (e != null) {
3349
3424
  self.selectElementVisivel = false;
@@ -3508,6 +3583,8 @@ class InputPesquisaComponent extends BaseInputComponent {
3508
3583
  }
3509
3584
  limparClick() {
3510
3585
  this.writeValue(null);
3586
+ this.onChange(null);
3587
+ this.onTouch();
3511
3588
  this.writePesquisa(null);
3512
3589
  this.listaPesquisa = [];
3513
3590
  this.dropDownPesquisa(0);
@@ -3539,7 +3616,7 @@ class InputPesquisaComponent extends BaseInputComponent {
3539
3616
  },
3540
3617
  cssClass: 'my-custom-modal-pesquisa my-custom-modal-background'
3541
3618
  });
3542
- modal.onDidDismiss().then(data => {
3619
+ modal.onDidDismiss().then(data => this.zone.run(() => {
3543
3620
  let result = data['data'];
3544
3621
  //console.log(result);
3545
3622
  if (result != null && result.Id > 0) {
@@ -3551,7 +3628,8 @@ class InputPesquisaComponent extends BaseInputComponent {
3551
3628
  }
3552
3629
  //this.carregaItemParaLista(result);
3553
3630
  }
3554
- });
3631
+ this.cdr.markForCheck();
3632
+ }));
3555
3633
  modal.present();
3556
3634
  }
3557
3635
  setFocus() {
@@ -3580,12 +3658,12 @@ class InputPesquisaComponent extends BaseInputComponent {
3580
3658
  }
3581
3659
  */
3582
3660
  }
3583
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: InputPesquisaComponent, deps: [{ token: DataService }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
3661
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: InputPesquisaComponent, deps: [{ token: DataService }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3584
3662
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.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: [{
3585
3663
  provide: NG_VALUE_ACCESSOR,
3586
3664
  useExisting: InputPesquisaComponent,
3587
3665
  multi: true,
3588
- }], 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 });
3666
+ }], 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 }\">\r\n @if (classic) {\r\n <ion-item lines=\"none\" [style.opacity]=\"readonly ? 0.5 : 1\"\r\n style=\"--background: inherited; --background-focused: transparent; margin-top: 2px;\"\r\n [class]=\"itemClass + ' classic'\" id=\"item-pesquisa\" #itemPesquisa>\r\n @if (label) {\r\n <ion-label style=\"color: var(--label-palavras);\" position=\"{{ labelPosition }}\">{{ label }}</ion-label>\r\n }\r\n <!-- formControlName=\"{{ campo }}\" -->\r\n @if (!podePesquisar) {\r\n <ion-spinner style=\"--min-height: 0px !important; margin-inline-end: 5px !important;\" class=\"botao-limpar\"\r\n slot=\"start\" name=\"lines\"></ion-spinner>\r\n }\r\n <!-- (ionBlur)=\"verificarPesquisa()\" -->\r\n <!-- conflito com click da lista -->\r\n <ion-input #inputPesquisa type=\"{{type}}\" [placeholder]=\"placeholder\" maxlength=\"{{ max }}\"\r\n (ionBlur)=\"onBlur($event)\" [value]=\"textoPesquisa\" (input)=\"writePesquisa(inputPesquisa.value)\"\r\n (keyup)=\"showPesquisa($event)\" autocomplete=\"off\"\r\n style=\"background-color: var(--input-color); color: var(--text-color);\" (click)=\"dropDownPesquisa(-1)\"\r\n [disabled]=\"readonly\" debounce=\"2000\" (ionFocus)=\"entered()\"></ion-input>\r\n <ion-button size=\"small\" slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" id=\"btnLimparPesquisa\" fill=\"clear\"\r\n color=\"medium\" (click)=\"limparClick()\">\r\n <ion-icon name=\"close-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button size=\"small\" slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" fill=\"clear\" color=\"medium\"\r\n (click)=\"pesquisarClick()\">\r\n <ion-icon color=\"primary\" name=\"search\"></ion-icon>\r\n </ion-button>\r\n\r\n @if (showSeeCopy) {\r\n <ion-button size=\"small\" slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\"\r\n color=\"dark\" (click)=\"copiarClick()\" [disabled]=\"!data\">\r\n <ion-icon name=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-item>\r\n } @else {\r\n <ion-input #inputPesquisa [type]=\"type\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\r\n [placeholder]=\"placeholder\" maxlength=\"{{ max }}\" (ionBlur)=\"onBlur($event)\" [value]=\"textoPesquisa\"\r\n (input)=\"writePesquisa(inputPesquisa.value)\" (keyup)=\"showPesquisa($event)\" autocomplete=\"off\" [mode]=\"mode\"\r\n style=\"background-color: var(--input-color); color: var(--text-color);\" (click)=\"dropDownPesquisa(-1)\"\r\n [disabled]=\"readonly\" debounce=\"2000\" class=\"modern\" (ionFocus)=\"entered()\">\r\n\r\n @if (!podePesquisar) {\r\n <ion-spinner slot=\"start\" name=\"lines\"></ion-spinner>\r\n }\r\n\r\n <ion-button slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" id=\"btnLimparPesquisa\" fill=\"clear\" color=\"medium\"\r\n (click)=\"limparClick()\">\r\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" fill=\"clear\" color=\"medium\" (click)=\"pesquisarClick()\">\r\n <ion-icon slot=\"icon-only\" color=\"primary\" name=\"search\"></ion-icon>\r\n </ion-button>\r\n\r\n @if (showSeeCopy) {\r\n <ion-button slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\" color=\"dark\"\r\n (click)=\"copiarClick()\" [disabled]=\"!data\">\r\n <ion-icon slot=\"icon-only\" name=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-input>\r\n }\r\n <ion-list tabindex=\"-1\" [hidden]=\"!selectElementVisivel || !listaPesquisa || listaPesquisa.length == 0\"\r\n class=\"pesquisa-list\" style=\"max-height: 250px; overflow-y: auto;\">\r\n\r\n @for (item of listaPesquisa; track $index) {\r\n <ion-item tabindex=\"0\" button (pointerdown)=\"$event.preventDefault()\" (click)=\"selecionarComboClick(item)\" [id]=\"selectId + 'IonItem' + item['Index']\"\r\n (keyup.enter)=\"selecionarComboClick(item)\" class=\"pesquisa-item\">\r\n <!-- {{ item | json}} -->\r\n <span [class]=\"{'selected-item': item['Selected'] === true}\" [innerHTML]=\"highlight(item[campoDisplay])\"></span>\r\n </ion-item>\r\n }\r\n </ion-list>\r\n\r\n <!--\r\n <ion-select interface=\"popover\" #selectElement tabindex=\"-1\" [hidden]=\"!selectElementVisivel\"\r\n (ionChange)=\"selecionarComboChange($event.target.value)\">\r\n <ion-select-option *ngFor=\"let item of listaPesquisa\" [value]=\"item[campoId]\" (click)=\"selecionarComboClick(item[campoId])\">\r\n {{ item[campoDisplay] }}\r\n </ion-select-option>\r\n </ion-select>\r\n -->\r\n\r\n <!--\r\n <select [id]=\"selectId\" #selectElement tabindex=\"-1\" [hidden]=\"!selectElementVisivel\"\r\n (change)=\"selecionarComboChange($event.target.value)\" class=\"pesquisa-select\">\r\n <option *ngFor=\"let item of listaPesquisa\" [value]=\"item[campoId]\" (click)=\"selecionarComboClick(item[campoId])\">\r\n {{ item[campoDisplay] }}\r\n </option>\r\n\r\n </select>\r\n -->\r\n\r\n @if(form) {\r\n <div class=\"validation-errors\">\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\" [ngClass]=\"validationClass\">\r\n &#8226; {{ validation.message }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", 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 });
3589
3667
  }
3590
3668
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: InputPesquisaComponent, decorators: [{
3591
3669
  type: Component,
@@ -3593,8 +3671,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImpor
3593
3671
  provide: NG_VALUE_ACCESSOR,
3594
3672
  useExisting: InputPesquisaComponent,
3595
3673
  multi: true,
3596
- }], 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"] }]
3597
- }], ctorParameters: () => [{ type: DataService }, { type: i0.Renderer2 }, { type: i0.Injector }], propDecorators: { textoPesquisa: [{
3674
+ }], template: "<div style=\"padding-inline-end: 0px;\" [class]=\"{ 'input-text-padding': !classic }\">\r\n @if (classic) {\r\n <ion-item lines=\"none\" [style.opacity]=\"readonly ? 0.5 : 1\"\r\n style=\"--background: inherited; --background-focused: transparent; margin-top: 2px;\"\r\n [class]=\"itemClass + ' classic'\" id=\"item-pesquisa\" #itemPesquisa>\r\n @if (label) {\r\n <ion-label style=\"color: var(--label-palavras);\" position=\"{{ labelPosition }}\">{{ label }}</ion-label>\r\n }\r\n <!-- formControlName=\"{{ campo }}\" -->\r\n @if (!podePesquisar) {\r\n <ion-spinner style=\"--min-height: 0px !important; margin-inline-end: 5px !important;\" class=\"botao-limpar\"\r\n slot=\"start\" name=\"lines\"></ion-spinner>\r\n }\r\n <!-- (ionBlur)=\"verificarPesquisa()\" -->\r\n <!-- conflito com click da lista -->\r\n <ion-input #inputPesquisa type=\"{{type}}\" [placeholder]=\"placeholder\" maxlength=\"{{ max }}\"\r\n (ionBlur)=\"onBlur($event)\" [value]=\"textoPesquisa\" (input)=\"writePesquisa(inputPesquisa.value)\"\r\n (keyup)=\"showPesquisa($event)\" autocomplete=\"off\"\r\n style=\"background-color: var(--input-color); color: var(--text-color);\" (click)=\"dropDownPesquisa(-1)\"\r\n [disabled]=\"readonly\" debounce=\"2000\" (ionFocus)=\"entered()\"></ion-input>\r\n <ion-button size=\"small\" slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" id=\"btnLimparPesquisa\" fill=\"clear\"\r\n color=\"medium\" (click)=\"limparClick()\">\r\n <ion-icon name=\"close-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button size=\"small\" slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" fill=\"clear\" color=\"medium\"\r\n (click)=\"pesquisarClick()\">\r\n <ion-icon color=\"primary\" name=\"search\"></ion-icon>\r\n </ion-button>\r\n\r\n @if (showSeeCopy) {\r\n <ion-button size=\"small\" slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\"\r\n color=\"dark\" (click)=\"copiarClick()\" [disabled]=\"!data\">\r\n <ion-icon name=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-item>\r\n } @else {\r\n <ion-input #inputPesquisa [type]=\"type\" [label]=\"label\" [labelPlacement]=\"labelPosition\" fill=\"outline\"\r\n [placeholder]=\"placeholder\" maxlength=\"{{ max }}\" (ionBlur)=\"onBlur($event)\" [value]=\"textoPesquisa\"\r\n (input)=\"writePesquisa(inputPesquisa.value)\" (keyup)=\"showPesquisa($event)\" autocomplete=\"off\" [mode]=\"mode\"\r\n style=\"background-color: var(--input-color); color: var(--text-color);\" (click)=\"dropDownPesquisa(-1)\"\r\n [disabled]=\"readonly\" debounce=\"2000\" class=\"modern\" (ionFocus)=\"entered()\">\r\n\r\n @if (!podePesquisar) {\r\n <ion-spinner slot=\"start\" name=\"lines\"></ion-spinner>\r\n }\r\n\r\n <ion-button slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" id=\"btnLimparPesquisa\" fill=\"clear\" color=\"medium\"\r\n (click)=\"limparClick()\">\r\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button slot=\"end\" tabindex=\"-1\" class=\"botao-limpar\" fill=\"clear\" color=\"medium\" (click)=\"pesquisarClick()\">\r\n <ion-icon slot=\"icon-only\" color=\"primary\" name=\"search\"></ion-icon>\r\n </ion-button>\r\n\r\n @if (showSeeCopy) {\r\n <ion-button slot=\"end\" style=\"margin-top: 27px; margin-inline-start: 4px !important;\" fill=\"clear\" color=\"dark\"\r\n (click)=\"copiarClick()\" [disabled]=\"!data\">\r\n <ion-icon slot=\"icon-only\" name=\"copy-outline\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-input>\r\n }\r\n <ion-list tabindex=\"-1\" [hidden]=\"!selectElementVisivel || !listaPesquisa || listaPesquisa.length == 0\"\r\n class=\"pesquisa-list\" style=\"max-height: 250px; overflow-y: auto;\">\r\n\r\n @for (item of listaPesquisa; track $index) {\r\n <ion-item tabindex=\"0\" button (pointerdown)=\"$event.preventDefault()\" (click)=\"selecionarComboClick(item)\" [id]=\"selectId + 'IonItem' + item['Index']\"\r\n (keyup.enter)=\"selecionarComboClick(item)\" class=\"pesquisa-item\">\r\n <!-- {{ item | json}} -->\r\n <span [class]=\"{'selected-item': item['Selected'] === true}\" [innerHTML]=\"highlight(item[campoDisplay])\"></span>\r\n </ion-item>\r\n }\r\n </ion-list>\r\n\r\n <!--\r\n <ion-select interface=\"popover\" #selectElement tabindex=\"-1\" [hidden]=\"!selectElementVisivel\"\r\n (ionChange)=\"selecionarComboChange($event.target.value)\">\r\n <ion-select-option *ngFor=\"let item of listaPesquisa\" [value]=\"item[campoId]\" (click)=\"selecionarComboClick(item[campoId])\">\r\n {{ item[campoDisplay] }}\r\n </ion-select-option>\r\n </ion-select>\r\n -->\r\n\r\n <!--\r\n <select [id]=\"selectId\" #selectElement tabindex=\"-1\" [hidden]=\"!selectElementVisivel\"\r\n (change)=\"selecionarComboChange($event.target.value)\" class=\"pesquisa-select\">\r\n <option *ngFor=\"let item of listaPesquisa\" [value]=\"item[campoId]\" (click)=\"selecionarComboClick(item[campoId])\">\r\n {{ item[campoDisplay] }}\r\n </option>\r\n\r\n </select>\r\n -->\r\n\r\n @if(form) {\r\n <div class=\"validation-errors\">\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\" [ngClass]=\"validationClass\">\r\n &#8226; {{ validation.message }}\r\n </div>\r\n }\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", 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"] }]
3675
+ }], ctorParameters: () => [{ type: DataService }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { textoPesquisa: [{
3598
3676
  type: Input
3599
3677
  }], max: [{
3600
3678
  type: Input
@@ -5948,5 +6026,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImpor
5948
6026
  * Generated bundle index. Do not edit.
5949
6027
  */
5950
6028
 
5951
- 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 };
6029
+ 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, MidiaService, 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 };
5952
6030
  //# sourceMappingURL=appproject-framework.mjs.map