appproject-framework 1.0.19 → 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 {
@@ -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