oxpi-nglib 0.0.51 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/cadastros/funcionarios/funcionario-add-dialog/funcionario-add-dialog.component.mjs +74 -0
- package/esm2020/lib/cadastros/funcionarios/funcionario-edit-dialog/funcionario-edit-dialog.component.mjs +68 -0
- package/esm2020/lib/cadastros/funcionarios/funcionario-form/funcionario-form.component.mjs +38 -0
- package/esm2020/lib/cadastros/funcionarios/funcionarios/funcionarios.component.mjs +157 -0
- package/esm2020/lib/cadastros/produtos/produto-add-dialog/produto-add-dialog.component.mjs +79 -0
- package/esm2020/lib/cadastros/produtos/produto-busca-filtros-dialog/produto-busca-filtros-dialog.component.mjs +56 -0
- package/esm2020/lib/cadastros/produtos/produto-edit-dialog/produto-edit-dialog.component.mjs +68 -0
- package/esm2020/lib/cadastros/produtos/produto-form/produto-form.component.mjs +343 -0
- package/esm2020/lib/cadastros/produtos/produtos/produtos.component.mjs +211 -0
- package/esm2020/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-add-dialog/produto-categoria-cardapio-add-dialog.component.mjs +69 -0
- package/esm2020/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-edit-dialog/produto-categoria-cardapio-edit-dialog.component.mjs +68 -0
- package/esm2020/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-selecao-dialog/produto-categoria-cardapio-selecao-dialog.component.mjs +106 -0
- package/esm2020/lib/cadastros/produtos-categoria-cardapio/produtos-categorias-cardapio/produtos-categorias-cardapio.component.mjs +156 -0
- package/esm2020/lib/cadastros/produtos-grupos/mover-grupo-dialog/mover-grupo-dialog.component.mjs +65 -0
- package/esm2020/lib/cadastros/produtos-grupos/produto-grupo-add-dialog/produto-grupo-add-dialog.component.mjs +69 -0
- package/esm2020/lib/cadastros/produtos-grupos/produto-grupo-edit-dialog/produto-grupo-edit-dialog.component.mjs +68 -0
- package/esm2020/lib/cadastros/produtos-grupos/produto-grupo-form/produto-grupo-form.component.mjs +18 -0
- package/esm2020/lib/cadastros/produtos-grupos/produto-grupo-selecao-dialog/produto-grupo-selecao-dialog.component.mjs +106 -0
- package/esm2020/lib/cadastros/produtos-grupos/produtos-grupos/produtos-grupos.component.mjs +179 -0
- package/esm2020/lib/cadastros/produtos-ncm-dialog/produtos-ncm-dialog.component.mjs +58 -0
- package/esm2020/lib/cadastros/produtos-subgrupos/produto-subgrupo-add-dialog/produto-subgrupo-add-dialog.component.mjs +71 -0
- package/esm2020/lib/cadastros/produtos-subgrupos/produto-subgrupo-edit-dialog/produto-subgrupo-edit-dialog.component.mjs +68 -0
- package/esm2020/lib/cadastros/produtos-subgrupos/produto-subgrupo-selecao-dialog/produto-subgrupo-selecao-dialog.component.mjs +106 -0
- package/esm2020/lib/cadastros/produtos-subgrupos/produtos-subgrupos/produtos-subgrupos.component.mjs +156 -0
- package/esm2020/lib/controls/alert-dialog/alert-dialog.component.mjs +4 -4
- package/esm2020/lib/controls/busy-indicator/busy-indicator.component.mjs +4 -4
- package/esm2020/lib/controls/check-button/check-button.component.mjs +3 -3
- package/esm2020/lib/controls/image-viewer/image-viewer.component.mjs +6 -6
- package/esm2020/lib/controls/item-card/item-card.component.mjs +3 -3
- package/esm2020/lib/controls/month-year-picker/month-year-picker.component.mjs +3 -3
- package/esm2020/lib/controls/numeric-picker/numeric-picker.component.mjs +6 -6
- package/esm2020/lib/controls/paginator/paginator.component.mjs +3 -3
- package/esm2020/lib/controls/radio-button-group/radio-button-group.component.mjs +5 -5
- package/esm2020/lib/models/entidades/funcionario.mjs +12 -0
- package/esm2020/lib/models/entidades/produto-grupo.mjs +9 -0
- package/esm2020/lib/models/entidades/produto-ncm.mjs +2 -0
- package/esm2020/lib/models/entidades/produto.mjs +106 -0
- package/esm2020/lib/models/entidades/setor-estoque.mjs +2 -0
- package/esm2020/lib/models/infra/number-parser.mjs +1 -1
- package/esm2020/lib/models/infra/selecao-utils.mjs +4 -2
- package/esm2020/lib/models/infra/validations.mjs +1 -1
- package/esm2020/lib/models/tuple.mjs +2 -0
- package/esm2020/lib/oxpi-nglib.module.mjs +100 -15
- package/esm2020/lib/providers/auth-data.service.mjs +219 -0
- package/esm2020/lib/providers/common-web-service.mjs +220 -0
- package/esm2020/lib/providers/export.file.service.mjs +3 -3
- package/esm2020/lib/providers/notification.service.mjs +29 -0
- package/esm2020/lib/providers/preference.service.mjs +3 -3
- package/esm2020/lib/providers/safe-html.pipe.mjs +3 -3
- package/esm2020/lib/providers/screen-helper.service.mjs +3 -3
- package/esm2020/public-api.mjs +8 -1
- package/fesm2015/oxpi-nglib.mjs +3623 -871
- package/fesm2015/oxpi-nglib.mjs.map +1 -1
- package/fesm2020/oxpi-nglib.mjs +3595 -868
- package/fesm2020/oxpi-nglib.mjs.map +1 -1
- package/{oxpi-nglib.d.ts → index.d.ts} +0 -0
- package/lib/cadastros/funcionarios/funcionario-add-dialog/funcionario-add-dialog.component.d.ts +27 -0
- package/lib/cadastros/funcionarios/funcionario-edit-dialog/funcionario-edit-dialog.component.d.ts +27 -0
- package/lib/cadastros/funcionarios/funcionario-form/funcionario-form.component.d.ts +15 -0
- package/lib/cadastros/funcionarios/funcionarios/funcionarios.component.d.ts +36 -0
- package/lib/cadastros/produtos/produto-add-dialog/produto-add-dialog.component.d.ts +28 -0
- package/lib/cadastros/produtos/produto-busca-filtros-dialog/produto-busca-filtros-dialog.component.d.ts +27 -0
- package/lib/cadastros/produtos/produto-edit-dialog/produto-edit-dialog.component.d.ts +27 -0
- package/lib/cadastros/produtos/produto-form/produto-form.component.d.ts +78 -0
- package/lib/cadastros/produtos/produtos/produtos.component.d.ts +44 -0
- package/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-add-dialog/produto-categoria-cardapio-add-dialog.component.d.ts +27 -0
- package/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-edit-dialog/produto-categoria-cardapio-edit-dialog.component.d.ts +27 -0
- package/lib/cadastros/produtos-categoria-cardapio/produto-categoria-cardapio-selecao-dialog/produto-categoria-cardapio-selecao-dialog.component.d.ts +35 -0
- package/lib/cadastros/produtos-categoria-cardapio/produtos-categorias-cardapio/produtos-categorias-cardapio.component.d.ts +36 -0
- package/lib/cadastros/produtos-grupos/mover-grupo-dialog/mover-grupo-dialog.component.d.ts +21 -0
- package/lib/cadastros/produtos-grupos/produto-grupo-add-dialog/produto-grupo-add-dialog.component.d.ts +27 -0
- package/lib/cadastros/produtos-grupos/produto-grupo-edit-dialog/produto-grupo-edit-dialog.component.d.ts +27 -0
- package/lib/cadastros/produtos-grupos/produto-grupo-form/produto-grupo-form.component.d.ts +10 -0
- package/lib/cadastros/produtos-grupos/produto-grupo-selecao-dialog/produto-grupo-selecao-dialog.component.d.ts +35 -0
- package/lib/cadastros/produtos-grupos/produtos-grupos/produtos-grupos.component.d.ts +37 -0
- package/lib/cadastros/produtos-ncm-dialog/produtos-ncm-dialog.component.d.ts +29 -0
- package/lib/cadastros/produtos-subgrupos/produto-subgrupo-add-dialog/produto-subgrupo-add-dialog.component.d.ts +27 -0
- package/lib/cadastros/produtos-subgrupos/produto-subgrupo-edit-dialog/produto-subgrupo-edit-dialog.component.d.ts +28 -0
- package/lib/cadastros/produtos-subgrupos/produto-subgrupo-selecao-dialog/produto-subgrupo-selecao-dialog.component.d.ts +35 -0
- package/lib/cadastros/produtos-subgrupos/produtos-subgrupos/produtos-subgrupos.component.d.ts +36 -0
- package/lib/controls/alert-dialog/alert-dialog.component.d.ts +1 -1
- package/lib/controls/busy-indicator/busy-indicator.component.d.ts +1 -1
- package/lib/controls/check-button/check-button.component.d.ts +1 -1
- package/lib/controls/image-viewer/image-viewer.component.d.ts +1 -1
- package/lib/controls/item-card/item-card.component.d.ts +1 -1
- package/lib/controls/month-year-picker/month-year-picker.component.d.ts +1 -1
- package/lib/controls/numeric-picker/numeric-picker.component.d.ts +1 -1
- package/lib/controls/paginator/paginator.component.d.ts +1 -1
- package/lib/controls/radio-button-group/radio-button-group.component.d.ts +1 -1
- package/lib/models/entidades/funcionario.d.ts +15 -0
- package/lib/models/entidades/produto-grupo.d.ts +20 -0
- package/lib/models/entidades/produto-ncm.d.ts +10 -0
- package/lib/models/entidades/produto.d.ts +74 -0
- package/lib/models/entidades/setor-estoque.d.ts +7 -0
- package/lib/models/infra/number-parser.d.ts +1 -1
- package/lib/models/infra/selecao-utils.d.ts +1 -1
- package/lib/models/infra/validations.d.ts +3 -3
- package/lib/models/tuple.d.ts +4 -0
- package/lib/oxpi-nglib.module.d.ts +34 -7
- package/lib/providers/auth-data.service.d.ts +20 -0
- package/lib/providers/common-web-service.d.ts +80 -0
- package/lib/providers/notification.service.d.ts +12 -0
- package/lib/providers/safe-html.pipe.d.ts +1 -1
- package/package.json +5 -10
- package/public-api.d.ts +7 -0
- package/styles/cadastros-listagens-form.scss +15 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import { valida } from '../../../models/entidades/produto-grupo';
|
|
4
|
+
import { FocusService } from '../../../providers/focus.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../providers/common-web-service";
|
|
7
|
+
import * as i2 from "../../../providers/notification.service";
|
|
8
|
+
import * as i3 from "@angular/material/dialog";
|
|
9
|
+
import * as i4 from "../../../providers/screen-helper.service";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
11
|
+
import * as i6 from "@angular/material/button";
|
|
12
|
+
import * as i7 from "@angular/material/icon";
|
|
13
|
+
import * as i8 from "../../../controls/busy-indicator/busy-indicator.component";
|
|
14
|
+
import * as i9 from "../../produtos-grupos/produto-grupo-form/produto-grupo-form.component";
|
|
15
|
+
export class ProdutoSubgrupoEditDialogComponent {
|
|
16
|
+
constructor(ws, notification, dataDialog, dialog, elRef, dialogRef, screenHelper) {
|
|
17
|
+
this.ws = ws;
|
|
18
|
+
this.notification = notification;
|
|
19
|
+
this.dataDialog = dataDialog;
|
|
20
|
+
this.dialog = dialog;
|
|
21
|
+
this.elRef = elRef;
|
|
22
|
+
this.dialogRef = dialogRef;
|
|
23
|
+
this.screenHelper = screenHelper;
|
|
24
|
+
this.isBusy = false;
|
|
25
|
+
this.focus = new FocusService();
|
|
26
|
+
if (dataDialog) {
|
|
27
|
+
this.model = dataDialog;
|
|
28
|
+
}
|
|
29
|
+
this.mobile = this.screenHelper.isMedium;
|
|
30
|
+
this.screenHelper.changedMediumScreen.subscribe(x => this.mobile = x);
|
|
31
|
+
}
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
this.focus.registerElement(this.elRef.nativeElement);
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.focus.unregisterElement(this.elRef.nativeElement);
|
|
37
|
+
}
|
|
38
|
+
salvar() {
|
|
39
|
+
if (!this.model)
|
|
40
|
+
return;
|
|
41
|
+
const valMsg = valida(this.model, this.focus);
|
|
42
|
+
if (valMsg) {
|
|
43
|
+
this.notification.showMsgError(valMsg);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.isBusy = true;
|
|
47
|
+
this.ws.saveProdutoSubgrupo(this.model)
|
|
48
|
+
.subscribe(r => {
|
|
49
|
+
this.isBusy = false;
|
|
50
|
+
this.notification.showMsg("Salvo com sucesso.");
|
|
51
|
+
if (this.dialogRef)
|
|
52
|
+
this.dialogRef.close(true);
|
|
53
|
+
}, err => {
|
|
54
|
+
this.isBusy = false;
|
|
55
|
+
this.notification.showMsg(err.error);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
ProdutoSubgrupoEditDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ProdutoSubgrupoEditDialogComponent, deps: [{ token: i1.CommonWebService }, { token: i2.NotificationService }, { token: MAT_DIALOG_DATA }, { token: i3.MatDialog }, { token: i0.ElementRef }, { token: i3.MatDialogRef }, { token: i4.ScreenHelperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
60
|
+
ProdutoSubgrupoEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: ProdutoSubgrupoEditDialogComponent, selector: "app-produto-subgrupo-edit-dialog", ngImport: i0, template: "<div class=\"ox-header\">\n <h2 class=\"titulo\">Editando Subgrupo</h2>\n <button mat-icon-button [mat-dialog-close]>\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<div class=\"dialog-content\">\n <app-produto-grupo-form [model]=\"model\" *ngIf=\"model\"></app-produto-grupo-form>\n</div>\n<div class=\"dialog-footer\">\n <button mat-button color=\"primary\" (click)=\"salvar()\" tabindex=\"9\">SALVAR</button>\n <button mat-button [mat-dialog-close]>VOLTAR</button>\n</div>\n<ox-busy-indicator [isBusy]=\"isBusy\"></ox-busy-indicator>", styles: [":host{background:#fafafa;display:flex;flex-direction:column;height:100%;max-height:99vh}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i8.BusyIndicatorComponent, selector: "ox-busy-indicator", inputs: ["isBusy"] }, { kind: "component", type: i9.ProdutoGrupoFormComponent, selector: "app-produto-grupo-form", inputs: ["model"] }] });
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ProdutoSubgrupoEditDialogComponent, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'app-produto-subgrupo-edit-dialog', template: "<div class=\"ox-header\">\n <h2 class=\"titulo\">Editando Subgrupo</h2>\n <button mat-icon-button [mat-dialog-close]>\n <mat-icon>close</mat-icon>\n </button>\n</div>\n<div class=\"dialog-content\">\n <app-produto-grupo-form [model]=\"model\" *ngIf=\"model\"></app-produto-grupo-form>\n</div>\n<div class=\"dialog-footer\">\n <button mat-button color=\"primary\" (click)=\"salvar()\" tabindex=\"9\">SALVAR</button>\n <button mat-button [mat-dialog-close]>VOLTAR</button>\n</div>\n<ox-busy-indicator [isBusy]=\"isBusy\"></ox-busy-indicator>", styles: [":host{background:#fafafa;display:flex;flex-direction:column;height:100%;max-height:99vh}\n"] }]
|
|
64
|
+
}], ctorParameters: function () { return [{ type: i1.CommonWebService }, { type: i2.NotificationService }, { type: undefined, decorators: [{
|
|
65
|
+
type: Inject,
|
|
66
|
+
args: [MAT_DIALOG_DATA]
|
|
67
|
+
}] }, { type: i3.MatDialog }, { type: i0.ElementRef }, { type: i3.MatDialogRef }, { type: i4.ScreenHelperService }]; } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHV0by1zdWJncnVwby1lZGl0LWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9veHBpLW5nbGliL3NyYy9saWIvY2FkYXN0cm9zL3Byb2R1dG9zLXN1YmdydXBvcy9wcm9kdXRvLXN1YmdydXBvLWVkaXQtZGlhbG9nL3Byb2R1dG8tc3ViZ3J1cG8tZWRpdC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3hwaS1uZ2xpYi9zcmMvbGliL2NhZGFzdHJvcy9wcm9kdXRvcy1zdWJncnVwb3MvcHJvZHV0by1zdWJncnVwby1lZGl0LWRpYWxvZy9wcm9kdXRvLXN1YmdydXBvLWVkaXQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBMkIsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFtQixNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7O0FBVWhFLE1BQU0sT0FBTyxrQ0FBa0M7SUFNN0MsWUFBb0IsRUFBb0IsRUFDOUIsWUFBaUMsRUFFbEMsVUFBMkIsRUFDM0IsTUFBaUIsRUFDaEIsS0FBaUIsRUFDakIsU0FBd0QsRUFDeEQsWUFBaUM7UUFQdkIsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBRWxDLGVBQVUsR0FBVixVQUFVLENBQWlCO1FBQzNCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUErQztRQUN4RCxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFWM0MsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixVQUFLLEdBQWtCLElBQUksWUFBWSxFQUFFLENBQUM7UUFVeEMsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFFekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFHRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDeEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksTUFBTSxFQUNWO1lBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDaEQsSUFBSSxJQUFJLENBQUMsU0FBUztnQkFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQzs7K0hBbERVLGtDQUFrQyxxRkFRbkMsZUFBZTttSEFSZCxrQ0FBa0Msd0VDZC9DLHNqQkFheUQ7MkZEQzVDLGtDQUFrQztrQkFMOUMsU0FBUzsrQkFDRSxrQ0FBa0M7OzBCQVl6QyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFByb2R1dG9TdWJncnVwbywgdmFsaWRhIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VudGlkYWRlcy9wcm9kdXRvLWdydXBvJztcbmltcG9ydCB7IENvbW1vbldlYlNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY29tbW9uLXdlYi1zZXJ2aWNlJztcbmltcG9ydCB7IEZvY3VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NyZWVuSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9zY3JlZW4taGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHV0b0dydXBvRWRpdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Byb2R1dG9zLWdydXBvcy9wcm9kdXRvLWdydXBvLWVkaXQtZGlhbG9nL3Byb2R1dG8tZ3J1cG8tZWRpdC1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb2R1dG8tc3ViZ3J1cG8tZWRpdC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHV0by1zdWJncnVwby1lZGl0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2R1dG8tc3ViZ3J1cG8tZWRpdC1kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdXRvU3ViZ3J1cG9FZGl0RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbW9kZWw6IFByb2R1dG9TdWJncnVwbyB8IHVuZGVmaW5lZDtcbiAgbW9iaWxlOiBib29sZWFuO1xuICBpc0J1c3k6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZm9jdXMgOiBGb2N1c1NlcnZpY2UgPSBuZXcgRm9jdXNTZXJ2aWNlKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3czogQ29tbW9uV2ViU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSlcbiAgICBwdWJsaWMgZGF0YURpYWxvZzogUHJvZHV0b1N1YmdydXBvLFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2R1dG9HcnVwb0VkaXREaWFsb2dDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgc2NyZWVuSGVscGVyOiBTY3JlZW5IZWxwZXJTZXJ2aWNlKSB7XG4gICAgaWYgKGRhdGFEaWFsb2cpIHtcbiAgICAgIHRoaXMubW9kZWwgPSBkYXRhRGlhbG9nO1xuICAgIH1cbiAgICB0aGlzLm1vYmlsZSA9IHRoaXMuc2NyZWVuSGVscGVyLmlzTWVkaXVtO1xuXG4gICAgdGhpcy5zY3JlZW5IZWxwZXIuY2hhbmdlZE1lZGl1bVNjcmVlbi5zdWJzY3JpYmUoeCA9PiB0aGlzLm1vYmlsZSA9IHgpO1xuICB9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzLnJlZ2lzdGVyRWxlbWVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXMudW5yZWdpc3RlckVsZW1lbnQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHNhbHZhcigpIHtcbiAgICBpZiAoIXRoaXMubW9kZWwpIHJldHVybjtcbiAgICBjb25zdCB2YWxNc2cgPSB2YWxpZGEodGhpcy5tb2RlbCwgdGhpcy5mb2N1cyk7XG4gICAgaWYgKHZhbE1zZylcbiAgICB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbi5zaG93TXNnRXJyb3IodmFsTXNnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzQnVzeSA9IHRydWU7XG4gICAgdGhpcy53cy5zYXZlUHJvZHV0b1N1YmdydXBvKHRoaXMubW9kZWwpXG4gICAgICAuc3Vic2NyaWJlKHIgPT4ge1xuICAgICAgICB0aGlzLmlzQnVzeSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5zaG93TXNnKFwiU2Fsdm8gY29tIHN1Y2Vzc28uXCIpO1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dSZWYpXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuaXNCdXN5ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uc2hvd01zZyhlcnIuZXJyb3IpO1xuICAgICAgICB9KTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwib3gtaGVhZGVyXCI+XG4gICAgPGgyIGNsYXNzPVwidGl0dWxvXCI+RWRpdGFuZG8gU3ViZ3J1cG88L2gyPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT5cbiAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XG4gICAgPGFwcC1wcm9kdXRvLWdydXBvLWZvcm0gW21vZGVsXT1cIm1vZGVsXCIgKm5nSWY9XCJtb2RlbFwiPjwvYXBwLXByb2R1dG8tZ3J1cG8tZm9ybT5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNhbHZhcigpXCIgdGFiaW5kZXg9XCI5XCI+U0FMVkFSPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT5WT0xUQVI8L2J1dHRvbj5cbjwvZGl2PlxuPG94LWJ1c3ktaW5kaWNhdG9yIFtpc0J1c3ldPVwiaXNCdXN5XCI+PC9veC1idXN5LWluZGljYXRvcj4iXX0=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { LazyTrigger } from '../../../models/infra/lazy-trigger';
|
|
3
|
+
import { NavegacaoSelecaoDialogUtil } from '../../../models/infra/selecao-utils';
|
|
4
|
+
import { SearchSetting } from '../../../models/settings/search-setting';
|
|
5
|
+
import { ProdutoSubgrupoAddDialogComponent } from '../produto-subgrupo-add-dialog/produto-subgrupo-add-dialog.component';
|
|
6
|
+
import { ProdutoSubgrupoEditDialogComponent } from '../produto-subgrupo-edit-dialog/produto-subgrupo-edit-dialog.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/dialog";
|
|
9
|
+
import * as i2 from "../../../providers/common-web-service";
|
|
10
|
+
import * as i3 from "../../../providers/notification.service";
|
|
11
|
+
import * as i4 from "../../../providers/auth-data.service";
|
|
12
|
+
import * as i5 from "../../../providers/screen-helper.service";
|
|
13
|
+
import * as i6 from "@angular/common";
|
|
14
|
+
import * as i7 from "@angular/forms";
|
|
15
|
+
import * as i8 from "@angular/material/button";
|
|
16
|
+
import * as i9 from "@angular/material/icon";
|
|
17
|
+
import * as i10 from "../../../controls/busy-indicator/busy-indicator.component";
|
|
18
|
+
import * as i11 from "../../../controls/item-card/item-card.component";
|
|
19
|
+
export class ProdutoSubgrupoSelecaoDialogComponent {
|
|
20
|
+
constructor(dialogRef, dialog, ws, notification, auth, screenHelper) {
|
|
21
|
+
this.dialogRef = dialogRef;
|
|
22
|
+
this.dialog = dialog;
|
|
23
|
+
this.ws = ws;
|
|
24
|
+
this.notification = notification;
|
|
25
|
+
this.screenHelper = screenHelper;
|
|
26
|
+
this.items = [];
|
|
27
|
+
this.selectedItem = null;
|
|
28
|
+
this.isBusy = false;
|
|
29
|
+
this.setting = new SearchSetting();
|
|
30
|
+
this.lazyTrigger = new LazyTrigger(() => { this.atualiza(); });
|
|
31
|
+
this.nav = new NavegacaoSelecaoDialogUtil(this);
|
|
32
|
+
this.mobile = this.screenHelper.isMedium;
|
|
33
|
+
this.allowAdd = auth.permissoes.adminProdutoGrupoAdd;
|
|
34
|
+
this.allowEdit = auth.permissoes.adminProdutoGrupoPesquisa;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.setting.ordem = "nome";
|
|
38
|
+
this.atualiza();
|
|
39
|
+
}
|
|
40
|
+
atualiza() {
|
|
41
|
+
this.isBusy = true;
|
|
42
|
+
this.ws.buscaProdutoSubgrupo(this.setting)
|
|
43
|
+
.subscribe(r => {
|
|
44
|
+
this.isBusy = false;
|
|
45
|
+
this.items = r;
|
|
46
|
+
console.info(r);
|
|
47
|
+
}, err => {
|
|
48
|
+
this.isBusy = false;
|
|
49
|
+
this.notification.showHttpError(err);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
selectItem(i) {
|
|
53
|
+
if (this.selectedItem === i) {
|
|
54
|
+
this.dialogRef.close(i);
|
|
55
|
+
}
|
|
56
|
+
this.selectedItem = i;
|
|
57
|
+
}
|
|
58
|
+
novo() {
|
|
59
|
+
let height = (window.innerHeight * 0.90) + 'px';
|
|
60
|
+
let width = 550 + 'px';
|
|
61
|
+
if (this.mobile) {
|
|
62
|
+
width = (window.innerWidth * 0.99) + 'px';
|
|
63
|
+
//height = (window.innerHeight * 0.98) + 'px';
|
|
64
|
+
}
|
|
65
|
+
const dialog = this.dialog.open(ProdutoSubgrupoAddDialogComponent, {
|
|
66
|
+
width: width,
|
|
67
|
+
height: height,
|
|
68
|
+
maxWidth: '100%',
|
|
69
|
+
panelClass: 'dialog-p0',
|
|
70
|
+
});
|
|
71
|
+
dialog.afterClosed().subscribe(result => {
|
|
72
|
+
if (result === undefined)
|
|
73
|
+
return;
|
|
74
|
+
this.notification.showMsg("Salvo com sucesso.");
|
|
75
|
+
this.atualiza();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
editar() {
|
|
79
|
+
let height = (window.innerHeight * 0.90) + 'px';
|
|
80
|
+
let width = 550 + 'px';
|
|
81
|
+
if (this.mobile) {
|
|
82
|
+
width = (window.innerWidth * 0.99) + 'px';
|
|
83
|
+
//height = (window.innerHeight * 0.98) + 'px';
|
|
84
|
+
}
|
|
85
|
+
const dialog = this.dialog.open(ProdutoSubgrupoEditDialogComponent, {
|
|
86
|
+
width: width,
|
|
87
|
+
height: height,
|
|
88
|
+
maxWidth: '100%',
|
|
89
|
+
panelClass: 'dialog-p0',
|
|
90
|
+
data: this.selectedItem
|
|
91
|
+
});
|
|
92
|
+
dialog.afterClosed().subscribe(result => {
|
|
93
|
+
if (result === undefined)
|
|
94
|
+
return;
|
|
95
|
+
this.notification.showMsg("Salvo com sucesso.");
|
|
96
|
+
this.atualiza();
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
ProdutoSubgrupoSelecaoDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ProdutoSubgrupoSelecaoDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i1.MatDialog }, { token: i2.CommonWebService }, { token: i3.NotificationService }, { token: i4.AuthDataService }, { token: i5.ScreenHelperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
+
ProdutoSubgrupoSelecaoDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: ProdutoSubgrupoSelecaoDialogComponent, selector: "app-produto-subgrupo-selecao-dialog", ngImport: i0, template: "<div class=\"dialog-header\">\n <h2>Sele\u00E7\u00E3o de Subgrupos</h2>\n </div>\n <div class=\"tool-panel\">\n <div class=\"tool-section\">\n <label>Pesquisa</label>\n <div class=\"search-input-container\">\n <input (keydown)=\"nav.onKeyDown($event)\" cdkFocusInitial [(ngModel)]=\"setting.frase\" placeholder=\"Digite um termo de busca...\" (input)=\"lazyTrigger.fire()\">\n </div>\n </div>\n <div class=\"tool-section\">\n <label>A\u00E7\u00F5es</label>\n <div class=\"tool-row\">\n <button mat-icon-button (click)=\"atualiza()\">\n <mat-icon aria-label=\"Atualizar\">refresh</mat-icon>\n </button>\n <button mat-icon-button (click)=\"novo()\" *ngIf=\"allowAdd\">\n <mat-icon aria-label=\"novo\">add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"editar()\" *ngIf=\"selectedItem && allowEdit\">\n <mat-icon aria-label=\"editar\">edit</mat-icon>\n </button>\n </div>\n </div>\n </div>\n <div class=\"dialog-content\">\n <ox-item-card [nome]=\"i.nome\" (click)=\"selectItem(i)\" *ngFor=\"let i of items\" [class.selected]=\"i === selectedItem\"></ox-item-card>\n </div>\n <div class=\"dialog-footer\">\n <button mat-button [disabled]=\"selectedItem == undefined\" color=\"primary\" [mat-dialog-close]=\"selectedItem\">CONFIRMAR</button>\n <button mat-button [mat-dialog-close]=\"undefined\">VOLTAR</button>\n </div>\n <ox-busy-indicator [isBusy]=\"isBusy\"></ox-busy-indicator>\n ", styles: [":host{background:#fafafa;display:flex;flex-direction:column;height:100%;max-height:99vh}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i10.BusyIndicatorComponent, selector: "ox-busy-indicator", inputs: ["isBusy"] }, { kind: "component", type: i11.ItemCardComponent, selector: "ox-item-card", inputs: ["nome", "codigo", "star", "cloud", "desativado"] }] });
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ProdutoSubgrupoSelecaoDialogComponent, decorators: [{
|
|
103
|
+
type: Component,
|
|
104
|
+
args: [{ selector: 'app-produto-subgrupo-selecao-dialog', template: "<div class=\"dialog-header\">\n <h2>Sele\u00E7\u00E3o de Subgrupos</h2>\n </div>\n <div class=\"tool-panel\">\n <div class=\"tool-section\">\n <label>Pesquisa</label>\n <div class=\"search-input-container\">\n <input (keydown)=\"nav.onKeyDown($event)\" cdkFocusInitial [(ngModel)]=\"setting.frase\" placeholder=\"Digite um termo de busca...\" (input)=\"lazyTrigger.fire()\">\n </div>\n </div>\n <div class=\"tool-section\">\n <label>A\u00E7\u00F5es</label>\n <div class=\"tool-row\">\n <button mat-icon-button (click)=\"atualiza()\">\n <mat-icon aria-label=\"Atualizar\">refresh</mat-icon>\n </button>\n <button mat-icon-button (click)=\"novo()\" *ngIf=\"allowAdd\">\n <mat-icon aria-label=\"novo\">add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"editar()\" *ngIf=\"selectedItem && allowEdit\">\n <mat-icon aria-label=\"editar\">edit</mat-icon>\n </button>\n </div>\n </div>\n </div>\n <div class=\"dialog-content\">\n <ox-item-card [nome]=\"i.nome\" (click)=\"selectItem(i)\" *ngFor=\"let i of items\" [class.selected]=\"i === selectedItem\"></ox-item-card>\n </div>\n <div class=\"dialog-footer\">\n <button mat-button [disabled]=\"selectedItem == undefined\" color=\"primary\" [mat-dialog-close]=\"selectedItem\">CONFIRMAR</button>\n <button mat-button [mat-dialog-close]=\"undefined\">VOLTAR</button>\n </div>\n <ox-busy-indicator [isBusy]=\"isBusy\"></ox-busy-indicator>\n ", styles: [":host{background:#fafafa;display:flex;flex-direction:column;height:100%;max-height:99vh}\n"] }]
|
|
105
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i1.MatDialog }, { type: i2.CommonWebService }, { type: i3.NotificationService }, { type: i4.AuthDataService }, { type: i5.ScreenHelperService }]; } });
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHV0by1zdWJncnVwby1zZWxlY2FvLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9veHBpLW5nbGliL3NyYy9saWIvY2FkYXN0cm9zL3Byb2R1dG9zLXN1YmdydXBvcy9wcm9kdXRvLXN1YmdydXBvLXNlbGVjYW8tZGlhbG9nL3Byb2R1dG8tc3ViZ3J1cG8tc2VsZWNhby1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3hwaS1uZ2xpYi9zcmMvbGliL2NhZGFzdHJvcy9wcm9kdXRvcy1zdWJncnVwb3MvcHJvZHV0by1zdWJncnVwby1zZWxlY2FvLWRpYWxvZy9wcm9kdXRvLXN1YmdydXBvLXNlbGVjYW8tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUt4RSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUN6SCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU81SCxNQUFNLE9BQU8scUNBQXFDO0lBV2hELFlBQW1CLFNBQThELEVBQ3hFLE1BQWlCLEVBQ2YsRUFBb0IsRUFDcEIsWUFBaUMsRUFDekMsSUFBcUIsRUFDYixZQUFpQztRQUx6QixjQUFTLEdBQVQsU0FBUyxDQUFxRDtRQUN4RSxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2YsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDcEIsaUJBQVksR0FB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Q0FBQyxHQUFHLElBQUksQ0FBQztRQUNoRCxJQUFJLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzFDLDhDQUE4QztTQUMvQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO1lBQ2xFLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsTUFBTTtZQUNoQixVQUFVLEVBQUUsV0FBVztZQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QyxJQUFJLE1BQU0sS0FBSyxTQUFTO2dCQUFFLE9BQU87WUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztrSUF6RlUscUNBQXFDO3NIQUFyQyxxQ0FBcUMsMkVDbEJsRCxpZ0RBaUNFOzJGRGZXLHFDQUFxQztrQkFMakQsU0FBUzsrQkFDRSxxQ0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgUHJvZHV0b1N1YmdydXBvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VudGlkYWRlcy9wcm9kdXRvLWdydXBvJztcbmltcG9ydCB7IExhenlUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2luZnJhL2xhenktdHJpZ2dlcic7XG5pbXBvcnQgeyBOYXZlZ2FjYW9TZWxlY2FvRGlhbG9nVXRpbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pbmZyYS9zZWxlY2FvLXV0aWxzJztcbmltcG9ydCB7IFNlYXJjaFNldHRpbmcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc2V0dGluZ3Mvc2VhcmNoLXNldHRpbmcnO1xuaW1wb3J0IHsgQXV0aERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2F1dGgtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbldlYlNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY29tbW9uLXdlYi1zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NyZWVuSGVscGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9zY3JlZW4taGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHV0b1N1YmdydXBvQWRkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vcHJvZHV0by1zdWJncnVwby1hZGQtZGlhbG9nL3Byb2R1dG8tc3ViZ3J1cG8tYWRkLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZHV0b1N1YmdydXBvRWRpdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3Byb2R1dG8tc3ViZ3J1cG8tZWRpdC1kaWFsb2cvcHJvZHV0by1zdWJncnVwby1lZGl0LWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHV0by1zdWJncnVwby1zZWxlY2FvLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdXRvLXN1YmdydXBvLXNlbGVjYW8tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHV0by1zdWJncnVwby1zZWxlY2FvLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1dG9TdWJncnVwb1NlbGVjYW9EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBpdGVtczogUHJvZHV0b1N1YmdydXBvW10gPSBbXTtcbiAgc2VsZWN0ZWRJdGVtOiBQcm9kdXRvU3ViZ3J1cG8gfCBudWxsID0gbnVsbDtcbiAgaXNCdXN5OiBib29sZWFuID0gZmFsc2U7XG4gIG1vYmlsZTogYm9vbGVhbjtcbiAgc2V0dGluZyA9IG5ldyBTZWFyY2hTZXR0aW5nKCk7XG4gIGFsbG93QWRkOiBib29sZWFuO1xuICBhbGxvd0VkaXQ6IGJvb2xlYW47XG4gIGxhenlUcmlnZ2VyID0gbmV3IExhenlUcmlnZ2VyKCgpID0+IHsgdGhpcy5hdHVhbGl6YSgpOyB9KTtcbiAgbmF2ID0gbmV3IE5hdmVnYWNhb1NlbGVjYW9EaWFsb2dVdGlsPFByb2R1dG9TdWJncnVwbywgUHJvZHV0b1N1YmdydXBvU2VsZWNhb0RpYWxvZ0NvbXBvbmVudD4odGhpcyk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2R1dG9TdWJncnVwb1NlbGVjYW9EaWFsb2dDb21wb25lbnQ+LFxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgcHJpdmF0ZSB3czogQ29tbW9uV2ViU2VydmljZSwgXG4gICAgIHByaXZhdGUgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgICBhdXRoOiBBdXRoRGF0YVNlcnZpY2UsXG4gICAgIHByaXZhdGUgc2NyZWVuSGVscGVyOiBTY3JlZW5IZWxwZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLm1vYmlsZSA9IHRoaXMuc2NyZWVuSGVscGVyLmlzTWVkaXVtOyAgXG4gICAgICB0aGlzLmFsbG93QWRkID0gYXV0aC5wZXJtaXNzb2VzLmFkbWluUHJvZHV0b0dydXBvQWRkO1xuICAgICAgdGhpcy5hbGxvd0VkaXQgPSBhdXRoLnBlcm1pc3NvZXMuYWRtaW5Qcm9kdXRvR3J1cG9QZXNxdWlzYTtcbiAgICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXR0aW5nLm9yZGVtID0gXCJub21lXCI7XG4gICAgdGhpcy5hdHVhbGl6YSgpO1xuICB9XG5cbiAgYXR1YWxpemEoKSB7XG4gICAgdGhpcy5pc0J1c3kgPSB0cnVlO1xuICAgIHRoaXMud3MuYnVzY2FQcm9kdXRvU3ViZ3J1cG8odGhpcy5zZXR0aW5nKVxuICAgICAgLnN1YnNjcmliZShyID0+IHtcbiAgICAgICAgdGhpcy5pc0J1c3kgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IHI7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhyKTtcbiAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5pc0J1c3kgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5zaG93SHR0cEVycm9yKGVycik7XG4gICAgICAgIH0pO1xuICB9XG4gIFxuICBzZWxlY3RJdGVtKGkgOiBQcm9kdXRvU3ViZ3J1cG8pIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0gPT09IGkpIHsgXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpO1xuICB9XG5cbiAgbm92bygpIHtcblxuICAgIGxldCBoZWlnaHQgPSAod2luZG93LmlubmVySGVpZ2h0ICogMC45MCkgKyAncHgnO1xuICAgIGxldCB3aWR0aCA9IDU1MCArICdweCc7XG4gICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICB3aWR0aCA9ICh3aW5kb3cuaW5uZXJXaWR0aCAqIDAuOTkpICsgJ3B4JztcbiAgICAgIC8vaGVpZ2h0ID0gKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuOTgpICsgJ3B4JztcbiAgICB9XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihQcm9kdXRvU3ViZ3J1cG9BZGREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdkaWFsb2ctcDAnLFxuICAgIH0pO1xuICAgIGRpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbi5zaG93TXNnKFwiU2Fsdm8gY29tIHN1Y2Vzc28uXCIpO1xuICAgICAgdGhpcy5hdHVhbGl6YSgpO1xuICAgIH0pO1xuICB9XG4gIFxuICBlZGl0YXIoKSB7XG5cbiAgICBsZXQgaGVpZ2h0ID0gKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuOTApICsgJ3B4JztcbiAgICBsZXQgd2lkdGggPSA1NTAgKyAncHgnO1xuICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgd2lkdGggPSAod2luZG93LmlubmVyV2lkdGggKiAwLjk5KSArICdweCc7XG4gICAgICAvL2hlaWdodCA9ICh3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjk4KSArICdweCc7XG4gICAgfVxuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oUHJvZHV0b1N1YmdydXBvRWRpdERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgcGFuZWxDbGFzczogJ2RpYWxvZy1wMCcsXG4gICAgICBkYXRhOiB0aGlzLnNlbGVjdGVkSXRlbVxuICAgIH0pO1xuICAgIGRpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbi5zaG93TXNnKFwiU2Fsdm8gY29tIHN1Y2Vzc28uXCIpO1xuICAgICAgdGhpcy5hdHVhbGl6YSgpO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyXCI+XG4gICAgPGgyPlNlbGXDp8OjbyBkZSBTdWJncnVwb3M8L2gyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRvb2wtcGFuZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwidG9vbC1zZWN0aW9uXCI+XG4gICAgICA8bGFiZWw+UGVzcXVpc2E8L2xhYmVsPlxuICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgICAgPGlucHV0IChrZXlkb3duKT1cIm5hdi5vbktleURvd24oJGV2ZW50KVwiIGNka0ZvY3VzSW5pdGlhbCBbKG5nTW9kZWwpXT1cInNldHRpbmcuZnJhc2VcIiBwbGFjZWhvbGRlcj1cIkRpZ2l0ZSB1bSB0ZXJtbyBkZSBidXNjYS4uLlwiIChpbnB1dCk9XCJsYXp5VHJpZ2dlci5maXJlKClcIj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0b29sLXNlY3Rpb25cIj5cbiAgICAgIDxsYWJlbD5Bw6fDtWVzPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sLXJvd1wiPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYXR1YWxpemEoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiQXR1YWxpemFyXCI+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibm92bygpXCIgKm5nSWY9XCJhbGxvd0FkZFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwibm92b1wiPmFkZDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZWRpdGFyKClcIiAqbmdJZj1cInNlbGVjdGVkSXRlbSAgJiYgYWxsb3dFZGl0XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJlZGl0YXJcIj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkaWFsb2ctY29udGVudFwiPlxuICAgICAgPG94LWl0ZW0tY2FyZCBbbm9tZV09XCJpLm5vbWVcIiAoY2xpY2spPVwic2VsZWN0SXRlbShpKVwiICpuZ0Zvcj1cImxldCBpIG9mIGl0ZW1zXCIgW2NsYXNzLnNlbGVjdGVkXT1cImkgPT09IHNlbGVjdGVkSXRlbVwiPjwvb3gtaXRlbS1jYXJkPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW2Rpc2FibGVkXT1cInNlbGVjdGVkSXRlbSA9PSB1bmRlZmluZWRcIiBjb2xvcj1cInByaW1hcnlcIiBbbWF0LWRpYWxvZy1jbG9zZV09XCJzZWxlY3RlZEl0ZW1cIj5DT05GSVJNQVI8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwidW5kZWZpbmVkXCI+Vk9MVEFSPC9idXR0b24+XG4gIDwvZGl2PlxuICA8b3gtYnVzeS1pbmRpY2F0b3IgW2lzQnVzeV09XCJpc0J1c3lcIj48L294LWJ1c3ktaW5kaWNhdG9yPlxuICAiXX0=
|
package/esm2020/lib/cadastros/produtos-subgrupos/produtos-subgrupos/produtos-subgrupos.component.mjs
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { fadeAnimation } from '../../../animations/animations';
|
|
3
|
+
import { valida } from '../../../models/entidades/produto-grupo';
|
|
4
|
+
import { LazyTrigger } from '../../../models/infra/lazy-trigger';
|
|
5
|
+
import { confirmaExclusao } from '../../../models/infra/selecao-utils';
|
|
6
|
+
import { SearchSetting } from '../../../models/settings/search-setting';
|
|
7
|
+
import { FocusService } from '../../../providers/focus.service';
|
|
8
|
+
import { ProdutoSubgrupoAddDialogComponent } from '../produto-subgrupo-add-dialog/produto-subgrupo-add-dialog.component';
|
|
9
|
+
import { ProdutoSubgrupoEditDialogComponent } from '../produto-subgrupo-edit-dialog/produto-subgrupo-edit-dialog.component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "../../../providers/common-web-service";
|
|
12
|
+
import * as i2 from "../../../providers/notification.service";
|
|
13
|
+
import * as i3 from "@angular/material/dialog";
|
|
14
|
+
import * as i4 from "../../../providers/auth-data.service";
|
|
15
|
+
import * as i5 from "../../../providers/screen-helper.service";
|
|
16
|
+
import * as i6 from "@angular/common";
|
|
17
|
+
import * as i7 from "@angular/forms";
|
|
18
|
+
import * as i8 from "@angular/material/button";
|
|
19
|
+
import * as i9 from "@angular/material/icon";
|
|
20
|
+
import * as i10 from "../../../controls/busy-indicator/busy-indicator.component";
|
|
21
|
+
import * as i11 from "../../../controls/item-card/item-card.component";
|
|
22
|
+
import * as i12 from "../../produtos-grupos/produto-grupo-form/produto-grupo-form.component";
|
|
23
|
+
export class ProdutosSubgruposComponent {
|
|
24
|
+
constructor(ws, notification, dialog, auth, screenHelper) {
|
|
25
|
+
this.ws = ws;
|
|
26
|
+
this.notification = notification;
|
|
27
|
+
this.dialog = dialog;
|
|
28
|
+
this.screenHelper = screenHelper;
|
|
29
|
+
this.isBusy = false;
|
|
30
|
+
this.items = [];
|
|
31
|
+
this.selectedItem = null;
|
|
32
|
+
this.lazyTrigger = new LazyTrigger(() => { this.atualiza(); });
|
|
33
|
+
this.setting = new SearchSetting();
|
|
34
|
+
this.focus = new FocusService();
|
|
35
|
+
this.allowAdd = auth.permissoes.adminProdutoGrupoAdd;
|
|
36
|
+
this.allowExcluir = auth.permissoes.adminProdutoGrupoDelete;
|
|
37
|
+
this.mobile = this.screenHelper.isMedium;
|
|
38
|
+
this.screenHelper.changedMediumScreen.subscribe(x => this.mobile = x);
|
|
39
|
+
}
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
this.setting.ordem = "nome";
|
|
42
|
+
this.atualiza();
|
|
43
|
+
}
|
|
44
|
+
onSelectItem() {
|
|
45
|
+
if (!this.focus.hasInit()) {
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
this.focus.registerElementById("form-column");
|
|
48
|
+
this.focus.setFirst();
|
|
49
|
+
}, 500);
|
|
50
|
+
//this._focus.registerElementById("form-column");
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.focus.setFirst();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
ngOnDestroy() {
|
|
57
|
+
this.focus.unregisterElementById("form-column");
|
|
58
|
+
}
|
|
59
|
+
atualiza() {
|
|
60
|
+
this.isBusy = true;
|
|
61
|
+
this.ws.buscaProdutoSubgrupo(this.setting)
|
|
62
|
+
.subscribe(r => {
|
|
63
|
+
this.items = r;
|
|
64
|
+
this.selectedItem = null;
|
|
65
|
+
console.info(r);
|
|
66
|
+
this.isBusy = false;
|
|
67
|
+
}, err => {
|
|
68
|
+
this.isBusy = false;
|
|
69
|
+
this.notification.showHttpError(err);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
excluir() {
|
|
73
|
+
const item = this.selectedItem;
|
|
74
|
+
if (!item)
|
|
75
|
+
return;
|
|
76
|
+
confirmaExclusao(this.dialog, `Deseja prosseguir com a exclusão do subgrupo ${item.nome}?`, () => {
|
|
77
|
+
this.isBusy = true;
|
|
78
|
+
this.ws.deleteProdutoSubgrupo(item.id)
|
|
79
|
+
.subscribe(r => {
|
|
80
|
+
this.notification.showMsg("O subgrupo foi excluído com sucesso.");
|
|
81
|
+
this.items.remove(item);
|
|
82
|
+
this.selectedItem = null;
|
|
83
|
+
this.isBusy = false;
|
|
84
|
+
}, err => {
|
|
85
|
+
this.isBusy = false;
|
|
86
|
+
this.notification.showMsg(err.error);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
novo() {
|
|
91
|
+
let height = (window.innerHeight * 0.90) + 'px';
|
|
92
|
+
let width = 550 + 'px';
|
|
93
|
+
if (this.mobile) {
|
|
94
|
+
width = (window.innerWidth * 0.99) + 'px';
|
|
95
|
+
//height = (window.innerHeight * 0.98) + 'px';
|
|
96
|
+
}
|
|
97
|
+
const dialog = this.dialog.open(ProdutoSubgrupoAddDialogComponent, {
|
|
98
|
+
width: width,
|
|
99
|
+
//height: height,
|
|
100
|
+
maxWidth: '100%',
|
|
101
|
+
panelClass: 'dialog-p0',
|
|
102
|
+
});
|
|
103
|
+
dialog.afterClosed().subscribe(result => {
|
|
104
|
+
if (result === undefined)
|
|
105
|
+
return;
|
|
106
|
+
this.notification.showMsg("Salvo com sucesso.");
|
|
107
|
+
this.atualiza();
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
abreCadastro(item) {
|
|
111
|
+
let height = undefined;
|
|
112
|
+
let width = 550 + 'px';
|
|
113
|
+
if (this.mobile) {
|
|
114
|
+
width = (window.innerWidth * 0.99) + 'px';
|
|
115
|
+
height = (window.innerHeight * 0.99) + 'px';
|
|
116
|
+
}
|
|
117
|
+
const dialog = this.dialog.open(ProdutoSubgrupoEditDialogComponent, {
|
|
118
|
+
data: item,
|
|
119
|
+
width: width,
|
|
120
|
+
//height: height,
|
|
121
|
+
maxWidth: '100%',
|
|
122
|
+
panelClass: 'dialog-p0',
|
|
123
|
+
});
|
|
124
|
+
dialog.afterClosed().subscribe(result => {
|
|
125
|
+
if (result !== true)
|
|
126
|
+
return;
|
|
127
|
+
this.notification.showMsg("Salvo com sucesso.");
|
|
128
|
+
this.atualiza();
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
salvar() {
|
|
132
|
+
if (!this.selectedItem)
|
|
133
|
+
return;
|
|
134
|
+
const valMsg = valida(this.selectedItem, this.focus);
|
|
135
|
+
if (valMsg) {
|
|
136
|
+
this.notification.showMsgError(valMsg);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
this.isBusy = true;
|
|
140
|
+
this.ws.saveProdutoSubgrupo(this.selectedItem)
|
|
141
|
+
.subscribe(r => {
|
|
142
|
+
this.notification.showMsg("Salvo com sucesso.");
|
|
143
|
+
this.isBusy = false;
|
|
144
|
+
}, err => {
|
|
145
|
+
this.isBusy = false;
|
|
146
|
+
this.notification.showMsg(err.error);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
ProdutosSubgruposComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ProdutosSubgruposComponent, deps: [{ token: i1.CommonWebService }, { token: i2.NotificationService }, { token: i3.MatDialog }, { token: i4.AuthDataService }, { token: i5.ScreenHelperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
151
|
+
ProdutosSubgruposComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: ProdutosSubgruposComponent, selector: "app-produtos-subgrupos", ngImport: i0, template: "<ox-busy-indicator [isBusy]=\"isBusy\"></ox-busy-indicator>\n<div class=\"tool-panel\" *ngIf=\"mobile\">\n <div class=\"tool-section\">\n <label>Pesquisa</label>\n <div class=\"search-input-container\">\n <input [(ngModel)]=\"setting.frase\" placeholder=\"Digite um termo de busca...\" (input)=\"lazyTrigger.fire()\">\n </div>\n </div>\n <div class=\"tool-section ordem-sm2\">\n <label>A\u00E7\u00F5es</label>\n <div class=\"tool-row\">\n <button mat-icon-button (click)=\"atualiza()\">\n <mat-icon aria-label=\"Atualizar\">refresh</mat-icon>\n </button>\n <button mat-icon-button (click)=\"novo()\" *ngIf=\"allowAdd\">\n <mat-icon aria-label=\"Novo Subgrupo\">add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"excluir()\" *ngIf=\"selectedItem && allowExcluir\" [@fade]>\n <mat-icon aria-label=\"Excluir Subgrupo\">delete</mat-icon>\n </button>\n </div>\n </div>\n</div>\n<div class=\"result-container\" *ngIf=\"items\">\n <div class=\"cards-container cards-container-shadow\" *ngIf=\"mobile\">\n <ox-item-card [cloud]=\"i.enviadoPC\" [nome]=\"i.nome\" *ngFor=\"let i of items\" (click)=\"abreCadastro(i)\"></ox-item-card>\n </div>\n <div class=\"listagem-desktop-grid\" *ngIf=\"!mobile\">\n <div class=\"listagem-column-container listagem-list-column\">\n <h3>Subgrupos de Produtos</h3>\n <div class=\"tool-panel tool-panel-float\">\n <div class=\"tool-section\">\n <label>Pesquisa</label>\n <div class=\"search-input-container\">\n <input [(ngModel)]=\"setting.frase\" placeholder=\"Digite um termo de busca...\" (input)=\"lazyTrigger.fire()\">\n </div>\n </div>\n <div class=\"tool-section ordem-sm2\">\n <label>A\u00E7\u00F5es</label>\n <div class=\"tool-row\">\n <button mat-icon-button (click)=\"atualiza()\">\n <mat-icon aria-label=\"Atualizar\">refresh</mat-icon>\n </button>\n <button mat-icon-button (click)=\"novo()\" *ngIf=\"allowAdd\">\n <mat-icon aria-label=\"Novo\">add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"excluir()\" *ngIf=\"selectedItem && allowExcluir\" [@fade]>\n <mat-icon aria-label=\"Excluir\">delete</mat-icon>\n </button>\n </div>\n </div>\n </div>\n <div class=\"listagem-list-container\">\n <h4 *ngIf=\"items.length === 0\" class=\"nenhum-item-msg\">A busca n\u00E3o retornou resultados</h4>\n\n <ox-item-card [cloud]=\"i.enviadoPC\" [nome]=\"i.nome\" *ngFor=\"let i of items\" [class.selected]=\"i === selectedItem\"\n (click)=\"selectedItem = i;\"></ox-item-card>\n\n </div>\n </div>\n <div class=\"listagem-column-container listagem-column-form\">\n <h3 *ngIf=\"!selectedItem\">Selecione um subgrupo no lado direito</h3>\n <h3 *ngIf=\"selectedItem\">{{selectedItem.nome | uppercase}}</h3>\n <div class=\"listagem-form-container\">\n <app-produto-grupo-form [@fade] [model]=\"selectedItem\" *ngIf=\"selectedItem\">\n </app-produto-grupo-form>\n </div>\n\n <div class=\"listagem-form-acoes\">\n <button (click)=\"salvar()\" mat-fab color=\"primary\" *ngIf=\"selectedItem\" tabindex=\"20\">\n <mat-icon>save</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [":host{height:calc(100% - 48px);display:flex;flex-grow:1;flex-direction:column;background:#F0F0F0}:host{background-color:#fdfdfd}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.BusyIndicatorComponent, selector: "ox-busy-indicator", inputs: ["isBusy"] }, { kind: "component", type: i11.ItemCardComponent, selector: "ox-item-card", inputs: ["nome", "codigo", "star", "cloud", "desativado"] }, { kind: "component", type: i12.ProdutoGrupoFormComponent, selector: "app-produto-grupo-form", inputs: ["model"] }, { kind: "pipe", type: i6.UpperCasePipe, name: "uppercase" }], animations: [fadeAnimation] });
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ProdutosSubgruposComponent, decorators: [{
|
|
153
|
+
type: Component,
|
|
154
|
+
args: [{ selector: 'app-produtos-subgrupos', animations: [fadeAnimation], template: "<ox-busy-indicator [isBusy]=\"isBusy\"></ox-busy-indicator>\n<div class=\"tool-panel\" *ngIf=\"mobile\">\n <div class=\"tool-section\">\n <label>Pesquisa</label>\n <div class=\"search-input-container\">\n <input [(ngModel)]=\"setting.frase\" placeholder=\"Digite um termo de busca...\" (input)=\"lazyTrigger.fire()\">\n </div>\n </div>\n <div class=\"tool-section ordem-sm2\">\n <label>A\u00E7\u00F5es</label>\n <div class=\"tool-row\">\n <button mat-icon-button (click)=\"atualiza()\">\n <mat-icon aria-label=\"Atualizar\">refresh</mat-icon>\n </button>\n <button mat-icon-button (click)=\"novo()\" *ngIf=\"allowAdd\">\n <mat-icon aria-label=\"Novo Subgrupo\">add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"excluir()\" *ngIf=\"selectedItem && allowExcluir\" [@fade]>\n <mat-icon aria-label=\"Excluir Subgrupo\">delete</mat-icon>\n </button>\n </div>\n </div>\n</div>\n<div class=\"result-container\" *ngIf=\"items\">\n <div class=\"cards-container cards-container-shadow\" *ngIf=\"mobile\">\n <ox-item-card [cloud]=\"i.enviadoPC\" [nome]=\"i.nome\" *ngFor=\"let i of items\" (click)=\"abreCadastro(i)\"></ox-item-card>\n </div>\n <div class=\"listagem-desktop-grid\" *ngIf=\"!mobile\">\n <div class=\"listagem-column-container listagem-list-column\">\n <h3>Subgrupos de Produtos</h3>\n <div class=\"tool-panel tool-panel-float\">\n <div class=\"tool-section\">\n <label>Pesquisa</label>\n <div class=\"search-input-container\">\n <input [(ngModel)]=\"setting.frase\" placeholder=\"Digite um termo de busca...\" (input)=\"lazyTrigger.fire()\">\n </div>\n </div>\n <div class=\"tool-section ordem-sm2\">\n <label>A\u00E7\u00F5es</label>\n <div class=\"tool-row\">\n <button mat-icon-button (click)=\"atualiza()\">\n <mat-icon aria-label=\"Atualizar\">refresh</mat-icon>\n </button>\n <button mat-icon-button (click)=\"novo()\" *ngIf=\"allowAdd\">\n <mat-icon aria-label=\"Novo\">add</mat-icon>\n </button>\n <button mat-icon-button (click)=\"excluir()\" *ngIf=\"selectedItem && allowExcluir\" [@fade]>\n <mat-icon aria-label=\"Excluir\">delete</mat-icon>\n </button>\n </div>\n </div>\n </div>\n <div class=\"listagem-list-container\">\n <h4 *ngIf=\"items.length === 0\" class=\"nenhum-item-msg\">A busca n\u00E3o retornou resultados</h4>\n\n <ox-item-card [cloud]=\"i.enviadoPC\" [nome]=\"i.nome\" *ngFor=\"let i of items\" [class.selected]=\"i === selectedItem\"\n (click)=\"selectedItem = i;\"></ox-item-card>\n\n </div>\n </div>\n <div class=\"listagem-column-container listagem-column-form\">\n <h3 *ngIf=\"!selectedItem\">Selecione um subgrupo no lado direito</h3>\n <h3 *ngIf=\"selectedItem\">{{selectedItem.nome | uppercase}}</h3>\n <div class=\"listagem-form-container\">\n <app-produto-grupo-form [@fade] [model]=\"selectedItem\" *ngIf=\"selectedItem\">\n </app-produto-grupo-form>\n </div>\n\n <div class=\"listagem-form-acoes\">\n <button (click)=\"salvar()\" mat-fab color=\"primary\" *ngIf=\"selectedItem\" tabindex=\"20\">\n <mat-icon>save</mat-icon>\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [":host{height:calc(100% - 48px);display:flex;flex-grow:1;flex-direction:column;background:#F0F0F0}:host{background-color:#fdfdfd}\n"] }]
|
|
155
|
+
}], ctorParameters: function () { return [{ type: i1.CommonWebService }, { type: i2.NotificationService }, { type: i3.MatDialog }, { type: i4.AuthDataService }, { type: i5.ScreenHelperService }]; } });
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHV0b3Mtc3ViZ3J1cG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL294cGktbmdsaWIvc3JjL2xpYi9jYWRhc3Ryb3MvcHJvZHV0b3Mtc3ViZ3J1cG9zL3Byb2R1dG9zLXN1YmdydXBvcy9wcm9kdXRvcy1zdWJncnVwb3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb3hwaS1uZ2xpYi9zcmMvbGliL2NhZGFzdHJvcy9wcm9kdXRvcy1zdWJncnVwb3MvcHJvZHV0b3Mtc3ViZ3J1cG9zL3Byb2R1dG9zLXN1YmdydXBvcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSWhFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHdFQUF3RSxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVE1SCxNQUFNLE9BQU8sMEJBQTBCO0lBWXJDLFlBQW9CLEVBQW9CLEVBQzlCLFlBQWlDLEVBQ2xDLE1BQWlCLEVBQ3hCLElBQXFCLEVBQ2IsWUFBaUM7UUFKdkIsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7UUFDOUIsaUJBQVks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QUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQzNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxFQUNDLEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQzs7dUhBaEpVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDhEQ3RCdkMsKzJHQTJFTSxxMUREdkRRLENBQUUsYUFBYSxDQUFFOzJGQUVsQiwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBR3RCLENBQUUsYUFBYSxDQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBmYWRlQW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vYW5pbWF0aW9ucy9hbmltYXRpb25zJztcbmltcG9ydCB7IFByb2R1dG9TdWJncnVwbywgdmFsaWRhIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2VudGlkYWRlcy9wcm9kdXRvLWdydXBvJztcbmltcG9ydCB7IExhenlUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2luZnJhL2xhenktdHJpZ2dlcic7XG5pbXBvcnQgeyBjb25maXJtYUV4Y2x1c2FvIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2luZnJhL3NlbGVjYW8tdXRpbHMnO1xuaW1wb3J0IHsgU2VhcmNoU2V0dGluZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zZXR0aW5ncy9zZWFyY2gtc2V0dGluZyc7XG5pbXBvcnQgeyBBdXRoRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvYXV0aC1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uV2ViU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9jb21tb24td2ViLXNlcnZpY2UnO1xuaW1wb3J0IHsgRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2ZvY3VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTY3JlZW5IZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL3NjcmVlbi1oZWxwZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IFByb2R1dG9TdWJncnVwb0FkZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3Byb2R1dG8tc3ViZ3J1cG8tYWRkLWRpYWxvZy9wcm9kdXRvLXN1YmdydXBvLWFkZC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFByb2R1dG9TdWJncnVwb0VkaXREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9wcm9kdXRvLXN1YmdydXBvLWVkaXQtZGlhbG9nL3Byb2R1dG8tc3ViZ3J1cG8tZWRpdC1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb2R1dG9zLXN1YmdydXBvcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdXRvcy1zdWJncnVwb3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9kdXRvcy1zdWJncnVwb3MuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogWyBmYWRlQW5pbWF0aW9uIF1cbn0pXG5leHBvcnQgY2xhc3MgUHJvZHV0b3NTdWJncnVwb3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIG1vYmlsZTogYm9vbGVhbjtcbiAgaXNCdXN5OiBib29sZWFuID0gZmFsc2U7XG4gIGl0ZW1zOiBQcm9kdXRvU3ViZ3J1cG9bXSA9IFtdO1xuICBzZWxlY3RlZEl0ZW06IFByb2R1dG9TdWJncnVwbyB8IG51bGwgPSBudWxsO1xuICBsYXp5VHJpZ2dlciA9IG5ldyBMYXp5VHJpZ2dlcigoKSA9PiB7IHRoaXMuYXR1YWxpemEoKTsgfSk7XG4gIGFsbG93QWRkOiBib29sZWFuO1xuICBhbGxvd0V4Y2x1aXI6IGJvb2xlYW47XG4gIHNldHRpbmcgPSBuZXcgU2VhcmNoU2V0dGluZygpO1xuICBwcml2YXRlIGZvY3VzOiBGb2N1c1NlcnZpY2UgPSBuZXcgRm9jdXNTZXJ2aWNlKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB3czogQ29tbW9uV2ViU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgYXV0aDogQXV0aERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2NyZWVuSGVscGVyOiBTY3JlZW5IZWxwZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy5hbGxvd0FkZCA9IGF1dGgucGVybWlzc29lcy5hZG1pblByb2R1dG9HcnVwb0FkZDtcbiAgICB0aGlzLmFsbG93RXhjbHVpciA9IGF1dGgucGVybWlzc29lcy5hZG1pblByb2R1dG9HcnVwb0RlbGV0ZTtcbiAgICB0aGlzLm1vYmlsZSA9IHRoaXMuc2NyZWVuSGVscGVyLmlzTWVkaXVtO1xuICAgIHRoaXMuc2NyZWVuSGVscGVyLmNoYW5nZWRNZWRpdW1TY3JlZW4uc3Vic2NyaWJlKHggPT4gdGhpcy5tb2JpbGUgPSB4KTtcblxuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldHRpbmcub3JkZW0gPSBcIm5vbWVcIjtcbiAgICB0aGlzLmF0dWFsaXphKCk7XG4gIH1cblxuICBvblNlbGVjdEl0ZW0oKTogdm9pZCB7XG5cbiAgICBpZiAoIXRoaXMuZm9jdXMuaGFzSW5pdCgpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1cy5yZWdpc3RlckVsZW1lbnRCeUlkKFwiZm9ybS1jb2x1bW5cIik7XG4gICAgICAgIHRoaXMuZm9jdXMuc2V0Rmlyc3QoKTtcbiAgICAgIH0sIDUwMCk7XG4gICAgICAvL3RoaXMuX2ZvY3VzLnJlZ2lzdGVyRWxlbWVudEJ5SWQoXCJmb3JtLWNvbHVtblwiKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzLnNldEZpcnN0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1cy51bnJlZ2lzdGVyRWxlbWVudEJ5SWQoXCJmb3JtLWNvbHVtblwiKTtcbiAgfVxuXG4gIGF0dWFsaXphKCkge1xuICAgIHRoaXMuaXNCdXN5ID0gdHJ1ZTtcbiAgICB0aGlzLndzLmJ1c2NhUHJvZHV0b1N1YmdydXBvKHRoaXMuc2V0dGluZylcbiAgICAgIC5zdWJzY3JpYmUociA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSByO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhyKTtcbiAgICAgICAgdGhpcy5pc0J1c3kgPSBmYWxzZTtcbiAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgIHRoaXMuaXNCdXN5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uLnNob3dIdHRwRXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICB9XG5cblxuICBleGNsdWlyKCkgeyAgIFxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbTtcbiAgICBpZiAoIWl0ZW0pIHJldHVybjtcbiAgICBjb25maXJtYUV4Y2x1c2FvKHRoaXMuZGlhbG9nLCBcbiAgICAgIGBEZXNlamEgcHJvc3NlZ3VpciBjb20gYSBleGNsdXPDo28gZG8gc3ViZ3J1cG8gJHtpdGVtLm5vbWV9P2AsXG4gICAgKCkgPT5cbiAgICAgIHtcbiAgICAgICAgdGhpcy5pc0J1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLndzLmRlbGV0ZVByb2R1dG9TdWJncnVwbyhpdGVtLmlkKVxuICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5zaG93TXNnKFwiTyBzdWJncnVwbyBmb2kgZXhjbHXDrWRvIGNvbSBzdWNlc3NvLlwiKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMucmVtb3ZlKGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5pc0J1c3kgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaXNCdXN5ID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLnNob3dNc2coZXJyLmVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbm92bygpIHtcbiAgICBsZXQgaGVpZ2h0ID0gKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuOTApICsgJ3B4JztcbiAgICBsZXQgd2lkdGggPSA1NTAgKyAncHgnO1xuICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgd2lkdGggPSAod2luZG93LmlubmVyV2lkdGggKiAwLjk5KSArICdweCc7XG4gICAgICAvL2hlaWdodCA9ICh3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjk4KSArICdweCc7XG4gICAgfVxuICAgIGNvbnN0IGRpYWxvZyA9IHRoaXMuZGlhbG9nLm9wZW4oUHJvZHV0b1N1YmdydXBvQWRkRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAvL2hlaWdodDogaGVpZ2h0LFxuICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgIHBhbmVsQ2xhc3M6ICdkaWFsb2ctcDAnLFxuICAgIH0pO1xuICAgIGRpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbi5zaG93TXNnKFwiU2Fsdm8gY29tIHN1Y2Vzc28uXCIpO1xuICAgICAgdGhpcy5hdHVhbGl6YSgpO1xuICAgIH0pO1xuICB9XG5cbiAgYWJyZUNhZGFzdHJvKGl0ZW06IFByb2R1dG9TdWJncnVwbykge1xuICAgIGxldCBoZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IHdpZHRoID0gNTUwICsgJ3B4JztcbiAgICBpZiAodGhpcy5tb2JpbGUpIHtcbiAgICAgIHdpZHRoID0gKHdpbmRvdy5pbm5lcldpZHRoICogMC45OSkgKyAncHgnO1xuICAgICAgaGVpZ2h0ID0gKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuOTkpICsgJ3B4JztcbiAgICB9XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kaWFsb2cub3BlbihQcm9kdXRvU3ViZ3J1cG9FZGl0RGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBpdGVtLFxuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgLy9oZWlnaHQ6IGhlaWdodCxcbiAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICBwYW5lbENsYXNzOiAnZGlhbG9nLXAwJyxcbiAgICB9KTtcbiAgICBkaWFsb2cuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHJldHVybjtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uLnNob3dNc2coXCJTYWx2byBjb20gc3VjZXNzby5cIik7XG4gICAgICB0aGlzLmF0dWFsaXphKCk7XG4gICAgfSk7XG4gIH1cblxuICBzYWx2YXIoKSB7ICAgIFxuICAgIGlmICghdGhpcy5zZWxlY3RlZEl0ZW0pIHJldHVybjtcbiAgICBjb25zdCB2YWxNc2cgPSB2YWxpZGEodGhpcy5zZWxlY3RlZEl0ZW0sIHRoaXMuZm9jdXMpO1xuICAgIGlmICh2YWxNc2cpXG4gICAge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb24uc2hvd01zZ0Vycm9yKHZhbE1zZyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNCdXN5ID0gdHJ1ZTtcbiAgICB0aGlzLndzLnNhdmVQcm9kdXRvU3ViZ3J1cG8odGhpcy5zZWxlY3RlZEl0ZW0pXG4gICAgICAuc3Vic2NyaWJlKHIgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5zaG93TXNnKFwiU2Fsdm8gY29tIHN1Y2Vzc28uXCIpO1xuICAgICAgICB0aGlzLmlzQnVzeSA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmlzQnVzeSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLnNob3dNc2coZXJyLmVycm9yKTtcbiAgICAgICAgfSk7XG4gIH1cblxufVxuIiwiPG94LWJ1c3ktaW5kaWNhdG9yIFtpc0J1c3ldPVwiaXNCdXN5XCI+PC9veC1idXN5LWluZGljYXRvcj5cbjxkaXYgY2xhc3M9XCJ0b29sLXBhbmVsXCIgKm5nSWY9XCJtb2JpbGVcIj5cbiAgPGRpdiBjbGFzcz1cInRvb2wtc2VjdGlvblwiPlxuICAgIDxsYWJlbD5QZXNxdWlzYTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dC1jb250YWluZXJcIj5cbiAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cInNldHRpbmcuZnJhc2VcIiBwbGFjZWhvbGRlcj1cIkRpZ2l0ZSB1bSB0ZXJtbyBkZSBidXNjYS4uLlwiIChpbnB1dCk9XCJsYXp5VHJpZ2dlci5maXJlKClcIj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0b29sLXNlY3Rpb24gb3JkZW0tc20yXCI+XG4gICAgPGxhYmVsPkHDp8O1ZXM8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJ0b29sLXJvd1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImF0dWFsaXphKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJBdHVhbGl6YXJcIj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm5vdm8oKVwiICpuZ0lmPVwiYWxsb3dBZGRcIj5cbiAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJOb3ZvIFN1YmdydXBvXCI+YWRkPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImV4Y2x1aXIoKVwiICpuZ0lmPVwic2VsZWN0ZWRJdGVtICYmIGFsbG93RXhjbHVpclwiIFtAZmFkZV0+XG4gICAgICAgIDxtYXQtaWNvbiBhcmlhLWxhYmVsPVwiRXhjbHVpciBTdWJncnVwb1wiPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJyZXN1bHQtY29udGFpbmVyXCIgKm5nSWY9XCJpdGVtc1wiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZHMtY29udGFpbmVyIGNhcmRzLWNvbnRhaW5lci1zaGFkb3dcIiAqbmdJZj1cIm1vYmlsZVwiPlxuICAgIDxveC1pdGVtLWNhcmQgW2Nsb3VkXT1cImkuZW52aWFkb1BDXCIgW25vbWVdPVwiaS5ub21lXCIgKm5nRm9yPVwibGV0IGkgb2YgaXRlbXNcIiAoY2xpY2spPVwiYWJyZUNhZGFzdHJvKGkpXCI+PC9veC1pdGVtLWNhcmQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwibGlzdGFnZW0tZGVza3RvcC1ncmlkXCIgKm5nSWY9XCIhbW9iaWxlXCI+XG4gICAgPGRpdiBjbGFzcz1cImxpc3RhZ2VtLWNvbHVtbi1jb250YWluZXIgbGlzdGFnZW0tbGlzdC1jb2x1bW5cIj5cbiAgICAgIDxoMz5TdWJncnVwb3MgZGUgUHJvZHV0b3M8L2gzPlxuICAgICAgPGRpdiBjbGFzcz1cInRvb2wtcGFuZWwgdG9vbC1wYW5lbC1mbG9hdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbC1zZWN0aW9uXCI+XG4gICAgICAgICAgPGxhYmVsPlBlc3F1aXNhPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwic2V0dGluZy5mcmFzZVwiIHBsYWNlaG9sZGVyPVwiRGlnaXRlIHVtIHRlcm1vIGRlIGJ1c2NhLi4uXCIgKGlucHV0KT1cImxhenlUcmlnZ2VyLmZpcmUoKVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvb2wtc2VjdGlvbiBvcmRlbS1zbTJcIj5cbiAgICAgICAgICA8bGFiZWw+QcOnw7VlczwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2wtcm93XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYXR1YWxpemEoKVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gYXJpYS1sYWJlbD1cIkF0dWFsaXphclwiPnJlZnJlc2g8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwibm92bygpXCIgKm5nSWY9XCJhbGxvd0FkZFwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gYXJpYS1sYWJlbD1cIk5vdm9cIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZXhjbHVpcigpXCIgKm5nSWY9XCJzZWxlY3RlZEl0ZW0gJiYgYWxsb3dFeGNsdWlyXCIgW0BmYWRlXT5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGFyaWEtbGFiZWw9XCJFeGNsdWlyXCI+ZGVsZXRlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImxpc3RhZ2VtLWxpc3QtY29udGFpbmVyXCI+XG4gICAgICAgIDxoNCAqbmdJZj1cIml0ZW1zLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibmVuaHVtLWl0ZW0tbXNnXCI+QSBidXNjYSBuw6NvIHJldG9ybm91IHJlc3VsdGFkb3M8L2g0PlxuXG4gICAgICAgIDxveC1pdGVtLWNhcmQgW2Nsb3VkXT1cImkuZW52aWFkb1BDXCIgW25vbWVdPVwiaS5ub21lXCIgKm5nRm9yPVwibGV0IGkgb2YgaXRlbXNcIiBbY2xhc3Muc2VsZWN0ZWRdPVwiaSA9PT0gc2VsZWN0ZWRJdGVtXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRJdGVtID0gaTtcIj48L294LWl0ZW0tY2FyZD5cblxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxpc3RhZ2VtLWNvbHVtbi1jb250YWluZXIgbGlzdGFnZW0tY29sdW1uLWZvcm1cIj5cbiAgICAgIDxoMyAqbmdJZj1cIiFzZWxlY3RlZEl0ZW1cIj5TZWxlY2lvbmUgdW0gc3ViZ3J1cG8gbm8gbGFkbyBkaXJlaXRvPC9oMz5cbiAgICAgIDxoMyAqbmdJZj1cInNlbGVjdGVkSXRlbVwiPnt7c2VsZWN0ZWRJdGVtLm5vbWUgfCB1cHBlcmNhc2V9fTwvaDM+XG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdGFnZW0tZm9ybS1jb250YWluZXJcIj5cbiAgICAgICAgPGFwcC1wcm9kdXRvLWdydXBvLWZvcm0gW0BmYWRlXSBbbW9kZWxdPVwic2VsZWN0ZWRJdGVtXCIgKm5nSWY9XCJzZWxlY3RlZEl0ZW1cIj5cbiAgICAgICAgPC9hcHAtcHJvZHV0by1ncnVwby1mb3JtPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0YWdlbS1mb3JtLWFjb2VzXCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNhbHZhcigpXCIgbWF0LWZhYiBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cInNlbGVjdGVkSXRlbVwiIHRhYmluZGV4PVwiMjBcIj5cbiAgICAgICAgICA8bWF0LWljb24+c2F2ZTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -11,11 +11,11 @@ export class AlertDialogComponent {
|
|
|
11
11
|
ngOnInit() {
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
AlertDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
15
|
-
AlertDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
14
|
+
AlertDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: AlertDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
AlertDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: AlertDialogComponent, selector: "app-alert-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{args.titulo}}</h1>\n<div mat-dialog-content>\n <p>{{args.msg}}</p>\n</div>\n<mat-dialog-actions align=\"end\">\n <button mat-button [mat-dialog-close]=\"false\">Cancelar</button>\n <button mat-button [mat-dialog-close]=\"true\" cdkFocusInitial>Continuar</button>\n</mat-dialog-actions>", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: AlertDialogComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
|
-
args: [{ selector: 'app-alert-dialog', template: "<h1 mat-dialog-title>{{args.titulo}}</h1>\n<div mat-dialog-content>\n <p>{{args.msg}}</p>\n</div>\n<mat-dialog-actions align=\"end\">\n <button mat-button [mat-dialog-close]=\"false\">Cancelar</button>\n <button mat-button [mat-dialog-close]=\"true\" cdkFocusInitial>Continuar</button>\n</mat-dialog-actions>"
|
|
18
|
+
args: [{ selector: 'app-alert-dialog', template: "<h1 mat-dialog-title>{{args.titulo}}</h1>\n<div mat-dialog-content>\n <p>{{args.msg}}</p>\n</div>\n<mat-dialog-actions align=\"end\">\n <button mat-button [mat-dialog-close]=\"false\">Cancelar</button>\n <button mat-button [mat-dialog-close]=\"true\" cdkFocusInitial>Continuar</button>\n</mat-dialog-actions>" }]
|
|
19
19
|
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
20
20
|
type: Inject,
|
|
21
21
|
args: [MAT_DIALOG_DATA]
|
|
@@ -8,11 +8,11 @@ export class BusyIndicatorComponent {
|
|
|
8
8
|
ngOnInit() {
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
BusyIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12
|
-
BusyIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11
|
+
BusyIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: BusyIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
BusyIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: BusyIndicatorComponent, selector: "ox-busy-indicator", inputs: { isBusy: "isBusy" }, ngImport: i0, template: "<div class=\"busy-indicator-container\" *ngIf=\"isBusy\">\n <div class=\"busy-indicator\"></div>\n</div>", styles: [".busy-indicator-container{position:fixed;left:50%;top:35%;text-align:center;z-index:1000;margin-left:-47px;background:rgb(255,255,255);border-radius:8px;padding:20px;border:solid 2px transparent;background-clip:padding-box;box-shadow:10px 10px 10px #2e364414}.busy-indicator{border:10px solid #e2e2e2;border-top:10px solid var(--app-color, black);border-radius:50%;width:50px;height:50px;animation:spin .5s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: BusyIndicatorComponent, decorators: [{
|
|
14
14
|
type: Component,
|
|
15
|
-
args: [{ selector: 'ox-busy-indicator', template: "<div class=\"busy-indicator-container\" *ngIf=\"isBusy\">\n <div class=\"busy-indicator\"></div>\n</div>", styles: [".busy-indicator-container{position:fixed;left:50%;top:35%;text-align:center;z-index:1000;margin-left:-47px;background:
|
|
15
|
+
args: [{ selector: 'ox-busy-indicator', template: "<div class=\"busy-indicator-container\" *ngIf=\"isBusy\">\n <div class=\"busy-indicator\"></div>\n</div>", styles: [".busy-indicator-container{position:fixed;left:50%;top:35%;text-align:center;z-index:1000;margin-left:-47px;background:rgb(255,255,255);border-radius:8px;padding:20px;border:solid 2px transparent;background-clip:padding-box;box-shadow:10px 10px 10px #2e364414}.busy-indicator{border:10px solid #e2e2e2;border-top:10px solid var(--app-color, black);border-radius:50%;width:50px;height:50px;animation:spin .5s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
|
|
16
16
|
}], ctorParameters: function () { return []; }, propDecorators: { isBusy: [{
|
|
17
17
|
type: Input
|
|
18
18
|
}] } });
|
|
@@ -15,9 +15,9 @@ export class CheckButtonComponent {
|
|
|
15
15
|
this.changed.emit(this.checked);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
CheckButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
19
|
-
CheckButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
18
|
+
CheckButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: CheckButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
+
CheckButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: CheckButtonComponent, selector: "ox-check-button", inputs: { checked: "checked", radioBehavior: "radioBehavior" }, outputs: { changed: "changed" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.checked": "checked" } }, ngImport: i0, template: "<ng-content></ng-content>", styles: [":host{padding:4px 8px;cursor:pointer;white-space:nowrap;color:#666;font-size:small;text-transform:uppercase;background-color:#ececec}:host:hover{background:rgba(0,0,0,.1)}:host(.checked){background:var(--app-tool-accent-color, black);color:#fff;box-shadow:0 8px 16px #0000001a}\n"] });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: CheckButtonComponent, decorators: [{
|
|
21
21
|
type: Component,
|
|
22
22
|
args: [{ selector: 'ox-check-button', host: {
|
|
23
23
|
'[class.checked]': "checked",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/
|
|
4
|
-
import * as i2 from "@angular/material/
|
|
5
|
-
import * as i3 from "@angular/
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/material/button";
|
|
5
|
+
import * as i3 from "@angular/material/icon";
|
|
6
6
|
export class ImageViewerComponent {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.infos = [];
|
|
@@ -53,9 +53,9 @@ export class ImageViewerComponent {
|
|
|
53
53
|
this.disableNext = this.paginaAtual == this.infos.length;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
ImageViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
57
|
-
ImageViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
56
|
+
ImageViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ImageViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
ImageViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: ImageViewerComponent, selector: "ox-image-viewer", inputs: { info: "info", infos: "infos", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0, template: "<div class=\"image-fullsize\" *ngIf=\"isOpen\">\n <div class=\"titulo\">\n {{info?.titulo}}\n </div>\n <div class=\"img-container\" (click)=\"isOpen = !isOpen\">\n <img class=\"image\" *ngIf=\"info\" [src]=\"info?.url\" />\n </div>\n <div class=\"action-bar\" *ngIf=\"infos\">\n <button (click)=\"goBack()\" [disabled]=\"disableBack\" mat-icon-button>\n <mat-icon>chevron_left</mat-icon>\n </button>\n <span class=\"picker-text\">\n {{paginaAtual}}/{{infos?.length}}\n </span>\n <button (click)=\"goNext()\" [disabled]=\"disableNext\" mat-icon-button>\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".image-fullsize{position:absolute;left:0;top:0;background:rgba(0,0,0,.8);width:100%;height:100%;display:flex;flex-flow:column}.titulo{color:#fff;text-align:center;padding:16px;font-size:large;font-weight:300}.action-bar{background:linear-gradient(135deg,rgba(0,0,0,.8) 0%,rgba(0,0,0,.9) 50%,rgba(0,0,0,.8) 100%);color:#fff;padding:8px}.img-container{flex-grow:1;display:flex;justify-content:center;align-items:center}.image{box-shadow:0 5px 35px #000000a6;max-width:100%;height:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ImageViewerComponent, decorators: [{
|
|
59
59
|
type: Component,
|
|
60
60
|
args: [{ selector: 'ox-image-viewer', template: "<div class=\"image-fullsize\" *ngIf=\"isOpen\">\n <div class=\"titulo\">\n {{info?.titulo}}\n </div>\n <div class=\"img-container\" (click)=\"isOpen = !isOpen\">\n <img class=\"image\" *ngIf=\"info\" [src]=\"info?.url\" />\n </div>\n <div class=\"action-bar\" *ngIf=\"infos\">\n <button (click)=\"goBack()\" [disabled]=\"disableBack\" mat-icon-button>\n <mat-icon>chevron_left</mat-icon>\n </button>\n <span class=\"picker-text\">\n {{paginaAtual}}/{{infos?.length}}\n </span>\n <button (click)=\"goNext()\" [disabled]=\"disableNext\" mat-icon-button>\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n</div>\n", styles: [".image-fullsize{position:absolute;left:0;top:0;background:rgba(0,0,0,.8);width:100%;height:100%;display:flex;flex-flow:column}.titulo{color:#fff;text-align:center;padding:16px;font-size:large;font-weight:300}.action-bar{background:linear-gradient(135deg,rgba(0,0,0,.8) 0%,rgba(0,0,0,.9) 50%,rgba(0,0,0,.8) 100%);color:#fff;padding:8px}.img-container{flex-grow:1;display:flex;justify-content:center;align-items:center}.image{box-shadow:0 5px 35px #000000a6;max-width:100%;height:auto}\n"] }]
|
|
61
61
|
}], ctorParameters: function () { return []; }, propDecorators: { info: [{
|
|
@@ -6,9 +6,9 @@ export class ItemCardComponent {
|
|
|
6
6
|
ngOnInit() {
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
ItemCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10
|
-
ItemCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
+
ItemCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ItemCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10
|
+
ItemCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.5", type: ItemCardComponent, selector: "ox-item-card", inputs: { nome: "nome", codigo: "codigo", star: "star", cloud: "cloud", desativado: "desativado" }, ngImport: i0, template: "<div class=\"nome-codigo-row\"><span class=\"codigo\" *ngIf=\"codigo\">{{codigo}}</span>{{nome}}</div>\n<div class=\"icons-row\">\n <span class=\"material-icons star\" *ngIf=\"star\">\n grade\n </span>\n <span class=\"material-icons desativado\" *ngIf=\"desativado === true\">\n dangerous\n </span>\n <span class=\"material-icons sync-pendente\" *ngIf=\"cloud === false\">\n cloud_queue\n </span>\n <span class=\"material-icons sync-concluido\" *ngIf=\"cloud === true\">\n cloud_done\n </span>\n</div>\n", styles: [":host{display:flex;flex-direction:row;border-bottom:1px solid #e6e9ec;border-left:3px solid #e6e9ec;padding:12px 16px;background:#fff;justify-content:space-between;cursor:pointer;flex-shrink:0;align-items:center;transition:border-left-color 1s;-webkit-user-select:none;user-select:none;font-size:small}:host:hover{box-shadow:0 0 16px #0000000f;background:transparent;z-index:1}:host(.selected){border-left-color:var(--app-color, black);z-index:1;box-shadow:0 0 8px 5px #00000008;flex-shrink:0;background:linear-gradient(45deg,var(--item-card-selected-bg, rgba(0, 0, 0, .05)),transparent)}.nome-codigo-row{display:flex;flex-direction:row;flex-grow:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-right:8px}.icons-row{display:flex;flex-direction:row;align-items:center;gap:8px}.codigo{color:#666;font-size:x-small;border-radius:4px;padding:0 4px;width:50px;min-width:50px;text-align:center;border:1px solid #eee;margin-right:16px;display:flex;align-items:center;justify-content:center}.sync-pendente{color:#141212;font-size:16px}.sync-concluido{color:#dbdbdb;font-size:16px}.star{color:#000}.desativado{color:#8f07bb;font-size:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.5", ngImport: i0, type: ItemCardComponent, decorators: [{
|
|
12
12
|
type: Component,
|
|
13
13
|
args: [{ selector: 'ox-item-card', template: "<div class=\"nome-codigo-row\"><span class=\"codigo\" *ngIf=\"codigo\">{{codigo}}</span>{{nome}}</div>\n<div class=\"icons-row\">\n <span class=\"material-icons star\" *ngIf=\"star\">\n grade\n </span>\n <span class=\"material-icons desativado\" *ngIf=\"desativado === true\">\n dangerous\n </span>\n <span class=\"material-icons sync-pendente\" *ngIf=\"cloud === false\">\n cloud_queue\n </span>\n <span class=\"material-icons sync-concluido\" *ngIf=\"cloud === true\">\n cloud_done\n </span>\n</div>\n", styles: [":host{display:flex;flex-direction:row;border-bottom:1px solid #e6e9ec;border-left:3px solid #e6e9ec;padding:12px 16px;background:#fff;justify-content:space-between;cursor:pointer;flex-shrink:0;align-items:center;transition:border-left-color 1s;-webkit-user-select:none;user-select:none;font-size:small}:host:hover{box-shadow:0 0 16px #0000000f;background:transparent;z-index:1}:host(.selected){border-left-color:var(--app-color, black);z-index:1;box-shadow:0 0 8px 5px #00000008;flex-shrink:0;background:linear-gradient(45deg,var(--item-card-selected-bg, rgba(0, 0, 0, .05)),transparent)}.nome-codigo-row{display:flex;flex-direction:row;flex-grow:1;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin-right:8px}.icons-row{display:flex;flex-direction:row;align-items:center;gap:8px}.codigo{color:#666;font-size:x-small;border-radius:4px;padding:0 4px;width:50px;min-width:50px;text-align:center;border:1px solid #eee;margin-right:16px;display:flex;align-items:center;justify-content:center}.sync-pendente{color:#141212;font-size:16px}.sync-concluido{color:#dbdbdb;font-size:16px}.star{color:#000}.desativado{color:#8f07bb;font-size:16px}\n"] }]
|
|
14
14
|
}], ctorParameters: function () { return []; }, propDecorators: { nome: [{
|