structra-ui 0.1.15 → 0.1.17
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/esm2022/app/_utils/date-pt-br.utils.mjs +82 -0
- package/esm2022/app/_utils/decimal-br.utils.mjs +154 -0
- package/esm2022/app/_utils/estados-br.data.mjs +37 -0
- package/esm2022/app/_utils/integer-br.utils.mjs +48 -0
- package/esm2022/app/_utils/integer-value.utils.mjs +19 -0
- package/esm2022/app/_utils/scroll/body-scroll-lock.util.mjs +97 -0
- package/esm2022/app/app-shell/_models/breadcrumb-item.model.mjs +2 -0
- package/esm2022/app/app-shell/app-shell-sidebar-template.directive.mjs +29 -0
- package/esm2022/app/app-shell/app-shell.component.mjs +105 -0
- package/esm2022/app/app-shell/breadcrumb/breadcrumb.component.mjs +18 -0
- package/esm2022/app/app-shell/index.mjs +19 -0
- package/esm2022/app/app-shell/sidebar/app-sidebar-toolbar.directive.mjs +23 -0
- package/esm2022/app/app-shell/sidebar/shell-sidebar-toggle.component.mjs +36 -0
- package/esm2022/app/app-shell/sidebar/sidebar.component.mjs +84 -0
- package/esm2022/app/app-shell/sidebar-reveal.constants.mjs +9 -0
- package/esm2022/app/app-shell/topbar/topbar.component.mjs +14 -0
- package/esm2022/app/app-shell/user-menu/user-menu.component.mjs +52 -0
- package/esm2022/app/buttons/base-button/base-button.component.mjs +97 -0
- package/esm2022/app/buttons/index.mjs +2 -0
- package/esm2022/app/data-display/_models/card-item-view.model.mjs +2 -0
- package/esm2022/app/data-display/_models/data-display.models.mjs +2 -0
- package/esm2022/app/data-display/_models/data-grid-column.model.mjs +2 -0
- package/esm2022/app/data-display/_models/index.mjs +2 -0
- package/esm2022/app/data-display/adaptive-data-view/adaptive-data-view.component.mjs +124 -0
- package/esm2022/app/data-display/card-list/card-list.component.mjs +208 -0
- package/esm2022/app/data-display/dashboard-section/dashboard-section.component.mjs +25 -0
- package/esm2022/app/data-display/data-card/data-card.component.mjs +40 -0
- package/esm2022/app/data-display/data-grid/data-grid-actions-cell-renderer.component.mjs +41 -0
- package/esm2022/app/data-display/data-grid/data-grid.component.mjs +253 -0
- package/esm2022/app/data-display/data-list/data-list.component.mjs +40 -0
- package/esm2022/app/data-display/data-toolbar/data-toolbar.component.mjs +12 -0
- package/esm2022/app/data-display/details-field/details-field.component.mjs +21 -0
- package/esm2022/app/data-display/details-view/details-view.component.mjs +44 -0
- package/esm2022/app/data-display/empty-state/empty-state-overlay.util.mjs +19 -0
- package/esm2022/app/data-display/empty-state/empty-state.component.mjs +30 -0
- package/esm2022/app/data-display/index.mjs +19 -0
- package/esm2022/app/data-display/list-item/list-item.component.mjs +59 -0
- package/esm2022/app/data-display/stat-card/stat-card.component.mjs +59 -0
- package/esm2022/app/data-display/status-badge/status-badge.component.mjs +41 -0
- package/esm2022/app/data-display/table-empty-state/table-empty-state.component.mjs +31 -0
- package/esm2022/app/data-display/table-toolbar/table-toolbar.component.mjs +22 -0
- package/esm2022/app/dialogs/_models/lib-dialog-size.model.mjs +8 -0
- package/esm2022/app/dialogs/_utils/app-lib-light-block-scroll-strategy.mjs +22 -0
- package/esm2022/app/dialogs/_utils/lib-dialog-panel-classes.mjs +6 -0
- package/esm2022/app/dialogs/app-dialog/app-dialog.component.mjs +200 -0
- package/esm2022/app/dialogs/app-dialog/dialog-footer.directive.mjs +15 -0
- package/esm2022/app/dialogs/confirm-dialog/confirm-dialog-data.model.mjs +2 -0
- package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.component.mjs +36 -0
- package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.service.mjs +47 -0
- package/esm2022/app/dialogs/index.mjs +12 -0
- package/esm2022/app/dialogs/loading-dialog/loading-dialog-data.model.mjs +2 -0
- package/esm2022/app/dialogs/loading-dialog/loading-dialog.component.mjs +19 -0
- package/esm2022/app/dialogs/loading-dialog/loading-dialog.service.mjs +38 -0
- package/esm2022/app/dialogs/toast/toast-host.component.mjs +65 -0
- package/esm2022/app/dialogs/toast/toast.models.mjs +2 -0
- package/esm2022/app/dialogs/toast/toast.service.mjs +76 -0
- package/esm2022/app/fields/checkbox-fields/_base/boolean-field.directive.mjs +158 -0
- package/esm2022/app/fields/checkbox-fields/checkbox-field/checkbox-field.component.mjs +36 -0
- package/esm2022/app/fields/checkbox-fields/index.mjs +4 -0
- package/esm2022/app/fields/checkbox-fields/switch-field/switch-field.component.mjs +35 -0
- package/esm2022/app/fields/dropdown-fields/_base/dropdown-base/dropdown-base.component.mjs +117 -0
- package/esm2022/app/fields/dropdown-fields/_base/dropdown-multi-option-field.base.mjs +152 -0
- package/esm2022/app/fields/dropdown-fields/_base/dropdown-option-field.base.mjs +149 -0
- package/esm2022/app/fields/dropdown-fields/_base/dropdown-trigger-blur.util.mjs +32 -0
- package/esm2022/app/fields/dropdown-fields/_models/dropdown-list-bindings.model.mjs +2 -0
- package/esm2022/app/fields/dropdown-fields/_models/dropdown-search-page-requested.model.mjs +2 -0
- package/esm2022/app/fields/dropdown-fields/_models/index.mjs +2 -0
- package/esm2022/app/fields/dropdown-fields/_models/select-option.model.mjs +2 -0
- package/esm2022/app/fields/dropdown-fields/_models/select-pagination.model.mjs +2 -0
- package/esm2022/app/fields/dropdown-fields/dropdown-search-field/dropdown-search-field.component.mjs +520 -0
- package/esm2022/app/fields/dropdown-fields/index.mjs +7 -0
- package/esm2022/app/fields/dropdown-fields/multiselect-field/multiselect-field.component.mjs +379 -0
- package/esm2022/app/fields/dropdown-fields/select-field/select-field.component.mjs +359 -0
- package/esm2022/app/fields/input-fields/_base/base-field.component.mjs +151 -0
- package/esm2022/app/fields/input-fields/_base/base-field.directive.mjs +224 -0
- package/esm2022/app/fields/input-fields/_base/masked-text-field.base.mjs +135 -0
- package/esm2022/app/fields/input-fields/_base/ng-control-field.directive.mjs +127 -0
- package/esm2022/app/fields/input-fields/_models/field-common-inputs.model.mjs +2 -0
- package/esm2022/app/fields/input-fields/_models/index.mjs +2 -0
- package/esm2022/app/fields/input-fields/_utils/mask-complete.validators.mjs +61 -0
- package/esm2022/app/fields/input-fields/_utils/mask-format.utils.mjs +40 -0
- package/esm2022/app/fields/input-fields/cep-field/cep-field.component.mjs +48 -0
- package/esm2022/app/fields/input-fields/cpf-cnpj-field/cpf-cnpj-field.component.mjs +61 -0
- package/esm2022/app/fields/input-fields/date-field/date-field.component.mjs +147 -0
- package/esm2022/app/fields/input-fields/decimal-field/decimal-field.component.mjs +166 -0
- package/esm2022/app/fields/input-fields/index.mjs +22 -0
- package/esm2022/app/fields/input-fields/input-mask-field/input-mask-field.component.mjs +52 -0
- package/esm2022/app/fields/input-fields/integer-field/integer-field.component.mjs +143 -0
- package/esm2022/app/fields/input-fields/password-field/password-field.component.mjs +130 -0
- package/esm2022/app/fields/input-fields/phone-field/phone-field.component.mjs +66 -0
- package/esm2022/app/fields/input-fields/text-field/text-field.component.mjs +90 -0
- package/esm2022/app/fields/input-fields/textarea-field/textarea-field.component.mjs +125 -0
- package/esm2022/app/form-layout/_models/form-layout.model.mjs +48 -0
- package/esm2022/app/form-layout/_models/form-tabs.model.mjs +2 -0
- package/esm2022/app/form-layout/_models/index.mjs +2 -0
- package/esm2022/app/form-layout/_models/validation-summary.model.mjs +2 -0
- package/esm2022/app/form-layout/form-actions/form-actions.component.mjs +55 -0
- package/esm2022/app/form-layout/form-col/form-col.component.mjs +76 -0
- package/esm2022/app/form-layout/form-group/form-group.component.mjs +358 -0
- package/esm2022/app/form-layout/form-group/form-path.utils.mjs +65 -0
- package/esm2022/app/form-layout/form-group/form-root-invalid-ui-refresh.util.mjs +54 -0
- package/esm2022/app/form-layout/form-row/form-row.component.mjs +49 -0
- package/esm2022/app/form-layout/form-section/form-section.component.mjs +43 -0
- package/esm2022/app/form-layout/form-tab/form-tab.component.mjs +67 -0
- package/esm2022/app/form-layout/form-tabs/form-tabs.component.mjs +126 -0
- package/esm2022/app/form-layout/index.mjs +14 -0
- package/esm2022/app/form-layout/layout-stack/layout-stack.component.mjs +56 -0
- package/esm2022/app/form-layout/validation-summary/validation-summary.component.mjs +343 -0
- package/esm2022/app/loading/skeleton-loading/index.mjs +7 -0
- package/esm2022/app/loading/skeleton-loading/skeleton-block/skeleton-block.component.mjs +43 -0
- package/esm2022/app/loading/skeleton-loading/skeleton-card/skeleton-card.component.mjs +23 -0
- package/esm2022/app/loading/skeleton-loading/skeleton-field-shell/skeleton-field-shell.component.mjs +34 -0
- package/esm2022/app/loading/skeleton-loading/skeleton-list/skeleton-list.component.mjs +38 -0
- package/esm2022/app/loading/skeleton-loading/skeleton-table/skeleton-table.component.mjs +37 -0
- package/esm2022/app/loading/skeleton-loading/skeleton-text/skeleton-text.component.mjs +45 -0
- package/esm2022/app/menus/_models/drawer-side.model.mjs +8 -0
- package/esm2022/app/menus/_models/drawer-size.model.mjs +8 -0
- package/esm2022/app/menus/_models/menu-dropdown-placement.model.mjs +12 -0
- package/esm2022/app/menus/_models/menu-item.model.mjs +6 -0
- package/esm2022/app/menus/_utils/menu-connected-positions.util.mjs +41 -0
- package/esm2022/app/menus/_utils/menu-rows.util.mjs +39 -0
- package/esm2022/app/menus/_utils/submenu-connected-positions.util.mjs +23 -0
- package/esm2022/app/menus/action-menu/action-menu.component.mjs +48 -0
- package/esm2022/app/menus/context-menu/context-menu.component.mjs +112 -0
- package/esm2022/app/menus/drawer/drawer.component.mjs +142 -0
- package/esm2022/app/menus/dropdown-menu/dropdown-menu.component.mjs +99 -0
- package/esm2022/app/menus/index.mjs +11 -0
- package/esm2022/app/menus/menu-divider/menu-divider.component.mjs +14 -0
- package/esm2022/app/menus/menu-group/menu-group.component.mjs +32 -0
- package/esm2022/app/menus/menu-list/menu-list.component.mjs +399 -0
- package/esm2022/app/overlay/_models/overlay-placement.model.mjs +11 -0
- package/esm2022/app/overlay/_utils/anchored-overlay-positions.util.mjs +84 -0
- package/esm2022/app/overlay/anchored-overlay/anchored-overlay.component.mjs +121 -0
- package/esm2022/app/overlay/index.mjs +21 -0
- package/esm2022/app/overlay/popover/popover-body-template.directive.mjs +17 -0
- package/esm2022/app/overlay/popover/popover-footer-template.directive.mjs +17 -0
- package/esm2022/app/overlay/popover/popover-trigger.directive.mjs +15 -0
- package/esm2022/app/overlay/popover/popover.component.mjs +93 -0
- package/esm2022/app/overlay/tooltip/tooltip-panel-template.directive.mjs +20 -0
- package/esm2022/app/overlay/tooltip/tooltip.component.mjs +118 -0
- package/esm2022/app/theme/app-theme.service.mjs +49 -0
- package/esm2022/app/theme/index.mjs +2 -0
- package/esm2022/structra-public-api.mjs +18 -0
- package/esm2022/structra-ui.mjs +5 -0
- package/esm2022/structra-version.mjs +3 -0
- package/fesm2022/structra-ui.mjs +8971 -0
- package/fesm2022/structra-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +15 -6
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, HostListener, inject, Input, Output, booleanAttribute, } from '@angular/core';
|
|
2
|
+
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
3
|
+
import { lockPageScrollAppDialog, unlockPageScrollAppDialog, } from '../../_utils/scroll/body-scroll-lock.util';
|
|
4
|
+
import { LibDialogSize } from '../_models/lib-dialog-size.model';
|
|
5
|
+
import { AppThemeService } from '../../theme';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
let appDialogSeq = 0;
|
|
8
|
+
/**
|
|
9
|
+
* Diálogo modal declarativo com `[(open)]`, projeção de corpo e rodapé opcional (`[appDialogFooter]`).
|
|
10
|
+
* Bloqueio de scroll com {@link lockPageScrollAppDialog} (sem deslocar o `html` como o CDK),
|
|
11
|
+
* para o scrim `position: fixed` alinhar ao viewport em páginas com scroll no `body`.
|
|
12
|
+
*/
|
|
13
|
+
export class AppDialogComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.hostEl = inject((ElementRef));
|
|
16
|
+
this.appTheme = inject(AppThemeService);
|
|
17
|
+
/**
|
|
18
|
+
* Impede o tooltip nativo do browser: o `@Input('title')` alimenta só `dialogHeading`, mas o
|
|
19
|
+
* binding `title="…"` no host ainda podia definir `HTMLElement.title` no `<app-dialog>`.
|
|
20
|
+
*/
|
|
21
|
+
this.hostTitleAttr = null;
|
|
22
|
+
this.open = false;
|
|
23
|
+
this.openChange = new EventEmitter();
|
|
24
|
+
/**
|
|
25
|
+
* Título do cabeçalho (`<app-dialog title="…">`).
|
|
26
|
+
* O nome da propriedade **não** pode ser `title`: no host DOM isso colide com
|
|
27
|
+
* `HTMLElement.title` e o browser desenha o tooltip nativo por cima do overlay.
|
|
28
|
+
*/
|
|
29
|
+
this.dialogHeading = '';
|
|
30
|
+
/** Texto de apoio abaixo do título (opcional); liga `aria-describedby` no painel. */
|
|
31
|
+
this.description = '';
|
|
32
|
+
/**
|
|
33
|
+
* Rótulo acessível quando não há título (evita diálogo sem nome).
|
|
34
|
+
* Ignorado se `dialogHeading` tiver texto.
|
|
35
|
+
*/
|
|
36
|
+
this.ariaLabel = 'Diálogo';
|
|
37
|
+
this.size = LibDialogSize.Md;
|
|
38
|
+
/**
|
|
39
|
+
* Quando `false`, a tecla Escape e o clique no backdrop não fecham o diálogo
|
|
40
|
+
* (botão ✕, `[(open)]` e `requestClose()` continuam disponíveis).
|
|
41
|
+
* Omisso: `true`.
|
|
42
|
+
*/
|
|
43
|
+
this.allowOverlayDismiss = true;
|
|
44
|
+
this.showCloseButton = true;
|
|
45
|
+
this.LibDialogSize = LibDialogSize;
|
|
46
|
+
this.titleId = `app-dialog-title-${++appDialogSeq}`;
|
|
47
|
+
this.descriptionId = `app-dialog-desc-${appDialogSeq}`;
|
|
48
|
+
/**
|
|
49
|
+
* O modal fica no fim de `document.body` enquanto aberto, para o `backdrop-filter`
|
|
50
|
+
* não ficar «preso» a ancestrais com `overflow: auto` (ex.: `app-shell__content`).
|
|
51
|
+
*/
|
|
52
|
+
this.bodyRestoreParent = null;
|
|
53
|
+
this.bodyRestoreNext = null;
|
|
54
|
+
this.previousActive = null;
|
|
55
|
+
this.scrollLock = {
|
|
56
|
+
htmlOverflow: '',
|
|
57
|
+
scrollX: 0,
|
|
58
|
+
scrollY: 0,
|
|
59
|
+
bodyOverflow: '',
|
|
60
|
+
bodyTouchAction: '',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Com o host em `document.body`, sem isto os `--app-color-*` / `--ui-field-*` ficam só com
|
|
65
|
+
* valores de `:root` (azul); alinhamos ao CDK Dialog (`libDialogPanelClasses`).
|
|
66
|
+
*/
|
|
67
|
+
get hostThemeClasses() {
|
|
68
|
+
return `app-library-theme ${this.appTheme.themeClass()}`;
|
|
69
|
+
}
|
|
70
|
+
ngOnInit() {
|
|
71
|
+
this.stripHostNativeTitle();
|
|
72
|
+
}
|
|
73
|
+
ngOnChanges(changes) {
|
|
74
|
+
this.stripHostNativeTitle();
|
|
75
|
+
if (changes['open']) {
|
|
76
|
+
if (this.open) {
|
|
77
|
+
this.attachHostToBody();
|
|
78
|
+
const a = document.activeElement;
|
|
79
|
+
if (a instanceof HTMLElement && a !== document.body) {
|
|
80
|
+
this.previousActive = a;
|
|
81
|
+
}
|
|
82
|
+
this.scrollLock = lockPageScrollAppDialog();
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
unlockPageScrollAppDialog(this.scrollLock);
|
|
86
|
+
this.detachHostFromBody();
|
|
87
|
+
this.restoreFocus();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
ngOnDestroy() {
|
|
92
|
+
if (this.open) {
|
|
93
|
+
unlockPageScrollAppDialog(this.scrollLock);
|
|
94
|
+
}
|
|
95
|
+
this.detachHostFromBody();
|
|
96
|
+
}
|
|
97
|
+
attachHostToBody() {
|
|
98
|
+
const el = this.hostEl.nativeElement;
|
|
99
|
+
if (el.parentElement === document.body) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
this.bodyRestoreParent = el.parentElement;
|
|
103
|
+
this.bodyRestoreNext = el.nextSibling;
|
|
104
|
+
document.body.appendChild(el);
|
|
105
|
+
this.stripHostNativeTitle();
|
|
106
|
+
}
|
|
107
|
+
detachHostFromBody() {
|
|
108
|
+
const el = this.hostEl.nativeElement;
|
|
109
|
+
if (el.parentElement !== document.body) {
|
|
110
|
+
this.bodyRestoreParent = null;
|
|
111
|
+
this.bodyRestoreNext = null;
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const parent = this.bodyRestoreParent;
|
|
115
|
+
const next = this.bodyRestoreNext;
|
|
116
|
+
this.bodyRestoreParent = null;
|
|
117
|
+
this.bodyRestoreNext = null;
|
|
118
|
+
if (parent && document.body.contains(parent)) {
|
|
119
|
+
if (next && next.parentNode === parent) {
|
|
120
|
+
parent.insertBefore(el, next);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
parent.appendChild(el);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const appRoot = document.querySelector('app-root');
|
|
127
|
+
if (appRoot) {
|
|
128
|
+
appRoot.appendChild(el);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
onDocumentKeydown(ev) {
|
|
132
|
+
if (!this.open || ev.key !== 'Escape' || !this.allowOverlayDismiss) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
ev.preventDefault();
|
|
136
|
+
this.requestClose();
|
|
137
|
+
}
|
|
138
|
+
onBackdropClick() {
|
|
139
|
+
if (!this.allowOverlayDismiss) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this.requestClose();
|
|
143
|
+
}
|
|
144
|
+
requestClose() {
|
|
145
|
+
if (!this.open) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
this.open = false;
|
|
149
|
+
this.openChange.emit(false);
|
|
150
|
+
unlockPageScrollAppDialog(this.scrollLock);
|
|
151
|
+
this.restoreFocus();
|
|
152
|
+
}
|
|
153
|
+
restoreFocus() {
|
|
154
|
+
if (this.previousActive && document.contains(this.previousActive)) {
|
|
155
|
+
this.previousActive.focus({ preventScroll: true });
|
|
156
|
+
}
|
|
157
|
+
this.previousActive = null;
|
|
158
|
+
}
|
|
159
|
+
stripHostNativeTitle() {
|
|
160
|
+
const el = this.hostEl.nativeElement;
|
|
161
|
+
el.removeAttribute('title');
|
|
162
|
+
el.title = '';
|
|
163
|
+
}
|
|
164
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
165
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: AppDialogComponent, isStandalone: true, selector: "app-dialog", inputs: { open: ["open", "open", booleanAttribute], dialogHeading: ["title", "dialogHeading"], description: "description", ariaLabel: "ariaLabel", size: "size", allowOverlayDismiss: ["allowOverlayDismiss", "allowOverlayDismiss", booleanAttribute], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class": "this.hostThemeClasses", "attr.title": "this.hostTitleAttr" } }, usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media (prefers-reduced-motion: reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
166
|
+
}
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppDialogComponent, decorators: [{
|
|
168
|
+
type: Component,
|
|
169
|
+
args: [{ selector: 'app-dialog', standalone: true, imports: [CdkTrapFocus], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media (prefers-reduced-motion: reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"] }]
|
|
170
|
+
}], propDecorators: { hostThemeClasses: [{
|
|
171
|
+
type: HostBinding,
|
|
172
|
+
args: ['class']
|
|
173
|
+
}], hostTitleAttr: [{
|
|
174
|
+
type: HostBinding,
|
|
175
|
+
args: ['attr.title']
|
|
176
|
+
}], open: [{
|
|
177
|
+
type: Input,
|
|
178
|
+
args: [{ transform: booleanAttribute }]
|
|
179
|
+
}], openChange: [{
|
|
180
|
+
type: Output
|
|
181
|
+
}], dialogHeading: [{
|
|
182
|
+
type: Input,
|
|
183
|
+
args: ['title']
|
|
184
|
+
}], description: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], ariaLabel: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], size: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], allowOverlayDismiss: [{
|
|
191
|
+
type: Input,
|
|
192
|
+
args: [{ transform: booleanAttribute }]
|
|
193
|
+
}], showCloseButton: [{
|
|
194
|
+
type: Input,
|
|
195
|
+
args: [{ transform: booleanAttribute }]
|
|
196
|
+
}], onDocumentKeydown: [{
|
|
197
|
+
type: HostListener,
|
|
198
|
+
args: ['document:keydown', ['$event']]
|
|
199
|
+
}] } });
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpYWxvZ3MvYXBwLWRpYWxvZy9hcHAtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlhbG9ncy9hcHAtZGlhbG9nL2FwcC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUNMLHVCQUF1QixFQUN2Qix5QkFBeUIsR0FFMUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFOUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBRXJCOzs7O0dBSUc7QUFTSCxNQUFNLE9BQU8sa0JBQWtCO0lBUi9CO1FBU21CLFdBQU0sR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztRQUN6QyxhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBV3BEOzs7V0FHRztRQUVNLGtCQUFhLEdBQVMsSUFBSSxDQUFDO1FBRUksU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU1RDs7OztXQUlHO1FBQ2Esa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkMscUZBQXFGO1FBQzVFLGdCQUFXLEdBQUcs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QURyQixXQUFXO3VCQUFDLFlBQVk7Z0JBR2UsSUFBSTtzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDbkIsVUFBVTtzQkFBNUIsTUFBTTtnQkFPUyxhQUFhO3NCQUE1QixLQUFLO3VCQUFDLE9BQU87Z0JBR0wsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFPa0MsbUJBQW1CO3NCQUExRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUVFLGVBQWU7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBeUZ0QyxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtUcmFwRm9jdXMgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICBsb2NrUGFnZVNjcm9sbEFwcERpYWxvZyxcbiAgdW5sb2NrUGFnZVNjcm9sbEFwcERpYWxvZyxcbiAgdHlwZSBBcHBEaWFsb2dTY3JvbGxMb2NrU25hcHNob3QsXG59IGZyb20gJy4uLy4uL191dGlscy9zY3JvbGwvYm9keS1zY3JvbGwtbG9jay51dGlsJztcbmltcG9ydCB7IExpYkRpYWxvZ1NpemUgfSBmcm9tICcuLi9fbW9kZWxzL2xpYi1kaWFsb2ctc2l6ZS5tb2RlbCc7XG5pbXBvcnQgeyBBcHBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90aGVtZSc7XG5cbmxldCBhcHBEaWFsb2dTZXEgPSAwO1xuXG4vKipcbiAqIERpw6Fsb2dvIG1vZGFsIGRlY2xhcmF0aXZvIGNvbSBgWyhvcGVuKV1gLCBwcm9qZcOnw6NvIGRlIGNvcnBvIGUgcm9kYXDDqSBvcGNpb25hbCAoYFthcHBEaWFsb2dGb290ZXJdYCkuXG4gKiBCbG9xdWVpbyBkZSBzY3JvbGwgY29tIHtAbGluayBsb2NrUGFnZVNjcm9sbEFwcERpYWxvZ30gKHNlbSBkZXNsb2NhciBvIGBodG1sYCBjb21vIG8gQ0RLKSxcbiAqIHBhcmEgbyBzY3JpbSBgcG9zaXRpb246IGZpeGVkYCBhbGluaGFyIGFvIHZpZXdwb3J0IGVtIHDDoWdpbmFzIGNvbSBzY3JvbGwgbm8gYGJvZHlgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGlhbG9nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Nka1RyYXBGb2N1c10sXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2FwcC1kaWFsb2cuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXBwRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdEVsID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHBUaGVtZSA9IGluamVjdChBcHBUaGVtZVNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBDb20gbyBob3N0IGVtIGBkb2N1bWVudC5ib2R5YCwgc2VtIGlzdG8gb3MgYC0tYXBwLWNvbG9yLSpgIC8gYC0tdWktZmllbGQtKmAgZmljYW0gc8OzIGNvbVxuICAgKiB2YWxvcmVzIGRlIGA6cm9vdGAgKGF6dWwpOyBhbGluaGFtb3MgYW8gQ0RLIERpYWxvZyAoYGxpYkRpYWxvZ1BhbmVsQ2xhc3Nlc2ApLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0VGhlbWVDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBhcHAtbGlicmFyeS10aGVtZSAke3RoaXMuYXBwVGhlbWUudGhlbWVDbGFzcygpfWA7XG4gIH1cblxuICAvKipcbiAgICogSW1wZWRlIG8gdG9vbHRpcCBuYXRpdm8gZG8gYnJvd3NlcjogbyBgQElucHV0KCd0aXRsZScpYCBhbGltZW50YSBzw7MgYGRpYWxvZ0hlYWRpbmdgLCBtYXMgb1xuICAgKiBiaW5kaW5nIGB0aXRsZT1cIuKAplwiYCBubyBob3N0IGFpbmRhIHBvZGlhIGRlZmluaXIgYEhUTUxFbGVtZW50LnRpdGxlYCBubyBgPGFwcC1kaWFsb2c+YC5cbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci50aXRsZScpXG4gIHJlYWRvbmx5IGhvc3RUaXRsZUF0dHI6IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBvcGVuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSByZWFkb25seSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBUw610dWxvIGRvIGNhYmXDp2FsaG8gKGA8YXBwLWRpYWxvZyB0aXRsZT1cIuKAplwiPmApLlxuICAgKiBPIG5vbWUgZGEgcHJvcHJpZWRhZGUgKipuw6NvKiogcG9kZSBzZXIgYHRpdGxlYDogbm8gaG9zdCBET00gaXNzbyBjb2xpZGUgY29tXG4gICAqIGBIVE1MRWxlbWVudC50aXRsZWAgZSBvIGJyb3dzZXIgZGVzZW5oYSBvIHRvb2x0aXAgbmF0aXZvIHBvciBjaW1hIGRvIG92ZXJsYXkuXG4gICAqL1xuICBASW5wdXQoJ3RpdGxlJykgZGlhbG9nSGVhZGluZyA9ICcnO1xuXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBhYmFpeG8gZG8gdMOtdHVsbyAob3BjaW9uYWwpOyBsaWdhIGBhcmlhLWRlc2NyaWJlZGJ5YCBubyBwYWluZWwuICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uID0gJyc7XG5cbiAgLyoqXG4gICAqIFLDs3R1bG8gYWNlc3PDrXZlbCBxdWFuZG8gbsOjbyBow6EgdMOtdHVsbyAoZXZpdGEgZGnDoWxvZ28gc2VtIG5vbWUpLlxuICAgKiBJZ25vcmFkbyBzZSBgZGlhbG9nSGVhZGluZ2AgdGl2ZXIgdGV4dG8uXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWwgPSAnRGnDoWxvZ28nO1xuXG4gIEBJbnB1dCgpIHNpemU6IExpYkRpYWxvZ1NpemUgPSBMaWJEaWFsb2dTaXplLk1kO1xuXG4gIC8qKlxuICAgKiBRdWFuZG8gYGZhbHNlYCwgYSB0ZWNsYSBFc2NhcGUgZSBvIGNsaXF1ZSBubyBiYWNrZHJvcCBuw6NvIGZlY2hhbSBvIGRpw6Fsb2dvXG4gICAqIChib3TDo28g4pyVLCBgWyhvcGVuKV1gIGUgYHJlcXVlc3RDbG9zZSgpYCBjb250aW51YW0gZGlzcG9uw612ZWlzKS5cbiAgICogT21pc3NvOiBgdHJ1ZWAuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYWxsb3dPdmVybGF5RGlzbWlzcyA9IHRydWU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dDbG9zZUJ1dHRvbiA9IHRydWU7XG5cbiAgcmVhZG9ubHkgTGliRGlhbG9nU2l6ZSA9IExpYkRpYWxvZ1NpemU7XG5cbiAgcmVhZG9ubHkgdGl0bGVJZCA9IGBhcHAtZGlhbG9nLXRpdGxlLSR7KythcHBEaWFsb2dTZXF9YDtcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb25JZCA9IGBhcHAtZGlhbG9nLWRlc2MtJHthcHBEaWFsb2dTZXF9YDtcblxuICAvKipcbiAgICogTyBtb2RhbCBmaWNhIG5vIGZpbSBkZSBgZG9jdW1lbnQuYm9keWAgZW5xdWFudG8gYWJlcnRvLCBwYXJhIG8gYGJhY2tkcm9wLWZpbHRlcmBcbiAgICogbsOjbyBmaWNhciDCq3ByZXNvwrsgYSBhbmNlc3RyYWlzIGNvbSBgb3ZlcmZsb3c6IGF1dG9gIChleC46IGBhcHAtc2hlbGxfX2NvbnRlbnRgKS5cbiAgICovXG4gIHByaXZhdGUgYm9keVJlc3RvcmVQYXJlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgYm9keVJlc3RvcmVOZXh0OiBDaGlsZE5vZGUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIHByZXZpb3VzQWN0aXZlOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHNjcm9sbExvY2s6IEFwcERpYWxvZ1Njcm9sbExvY2tTbmFwc2hvdCA9IHtcbiAgICBodG1sT3ZlcmZsb3c6ICcnLFxuICAgIHNjcm9sbFg6IDAsXG4gICAgc2Nyb2xsWTogMCxcbiAgICBib2R5T3ZlcmZsb3c6ICcnLFxuICAgIGJvZHlUb3VjaEFjdGlvbjogJycsXG4gIH07XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdHJpcEhvc3ROYXRpdmVUaXRsZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuc3RyaXBIb3N0TmF0aXZlVGl0bGUoKTtcbiAgICBpZiAoY2hhbmdlc1snb3BlbiddKSB7XG4gICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgIHRoaXMuYXR0YWNoSG9zdFRvQm9keSgpO1xuICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBhICE9PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c0FjdGl2ZSA9IGE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY3JvbGxMb2NrID0gbG9ja1BhZ2VTY3JvbGxBcHBEaWFsb2coKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVubG9ja1BhZ2VTY3JvbGxBcHBEaWFsb2codGhpcy5zY3JvbGxMb2NrKTtcbiAgICAgICAgdGhpcy5kZXRhY2hIb3N0RnJvbUJvZHkoKTtcbiAgICAgICAgdGhpcy5yZXN0b3JlRm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICB1bmxvY2tQYWdlU2Nyb2xsQXBwRGlhbG9nKHRoaXMuc2Nyb2xsTG9jayk7XG4gICAgfVxuICAgIHRoaXMuZGV0YWNoSG9zdEZyb21Cb2R5KCk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaEhvc3RUb0JvZHkoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmhvc3RFbC5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChlbC5wYXJlbnRFbGVtZW50ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYm9keVJlc3RvcmVQYXJlbnQgPSBlbC5wYXJlbnRFbGVtZW50O1xuICAgIHRoaXMuYm9keVJlc3RvcmVOZXh0ID0gZWwubmV4dFNpYmxpbmc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbCk7XG4gICAgdGhpcy5zdHJpcEhvc3ROYXRpdmVUaXRsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRhY2hIb3N0RnJvbUJvZHkoKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmhvc3RFbC5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChlbC5wYXJlbnRFbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICB0aGlzLmJvZHlSZXN0b3JlUGFyZW50ID0gbnVsbDtcbiAgICAgIHRoaXMuYm9keVJlc3RvcmVOZXh0ID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5ib2R5UmVzdG9yZVBhcmVudDtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5ib2R5UmVzdG9yZU5leHQ7XG4gICAgdGhpcy5ib2R5UmVzdG9yZVBhcmVudCA9IG51bGw7XG4gICAgdGhpcy5ib2R5UmVzdG9yZU5leHQgPSBudWxsO1xuICAgIGlmIChwYXJlbnQgJiYgZG9jdW1lbnQuYm9keS5jb250YWlucyhwYXJlbnQpKSB7XG4gICAgICBpZiAobmV4dCAmJiBuZXh0LnBhcmVudE5vZGUgPT09IHBhcmVudCkge1xuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsLCBuZXh0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYXBwUm9vdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FwcC1yb290Jyk7XG4gICAgaWYgKGFwcFJvb3QpIHtcbiAgICAgIGFwcFJvb3QuYXBwZW5kQ2hpbGQoZWwpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50S2V5ZG93bihldjogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcGVuIHx8IGV2LmtleSAhPT0gJ0VzY2FwZScgfHwgIXRoaXMuYWxsb3dPdmVybGF5RGlzbWlzcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucmVxdWVzdENsb3NlKCk7XG4gIH1cblxuICBvbkJhY2tkcm9wQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFsbG93T3ZlcmxheURpc21pc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZXF1ZXN0Q2xvc2UoKTtcbiAgfVxuXG4gIHJlcXVlc3RDbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgdW5sb2NrUGFnZVNjcm9sbEFwcERpYWxvZyh0aGlzLnNjcm9sbExvY2spO1xuICAgIHRoaXMucmVzdG9yZUZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlc3RvcmVGb2N1cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmV2aW91c0FjdGl2ZSAmJiBkb2N1bWVudC5jb250YWlucyh0aGlzLnByZXZpb3VzQWN0aXZlKSkge1xuICAgICAgdGhpcy5wcmV2aW91c0FjdGl2ZS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNBY3RpdmUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpcEhvc3ROYXRpdmVUaXRsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuaG9zdEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgZWwucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpO1xuICAgIGVsLnRpdGxlID0gJyc7XG4gIH1cbn1cbiIsIkBpZiAob3Blbikge1xyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiYXBwLWRpYWxvZy1iYWNrZHJvcFwiXHJcbiAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcclxuICAgIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgKGNsaWNrKT1cIm9uQmFja2Ryb3BDbGljaygpXCJcclxuICA+PC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImFwcC1kaWFsb2ctc3RhZ2VcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiYXBwLWRpYWxvZy1wYW5lbFwiXHJcbiAgICAgIFtjbGFzcy5hcHAtZGlhbG9nLXBhbmVsLS1zbV09XCJzaXplID09PSBMaWJEaWFsb2dTaXplLlNtXCJcclxuICAgICAgW2NsYXNzLmFwcC1kaWFsb2ctcGFuZWwtLW1kXT1cInNpemUgPT09IExpYkRpYWxvZ1NpemUuTWRcIlxyXG4gICAgICBbY2xhc3MuYXBwLWRpYWxvZy1wYW5lbC0tbGddPVwic2l6ZSA9PT0gTGliRGlhbG9nU2l6ZS5MZ1wiXHJcbiAgICAgIHJvbGU9XCJkaWFsb2dcIlxyXG4gICAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXHJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJcclxuICAgICAgICBkaWFsb2dIZWFkaW5nLnRyaW0oKSA/IHRpdGxlSWQgOiBkZXNjcmlwdGlvbi50cmltKCkgPyBkZXNjcmlwdGlvbklkIDogbnVsbFxyXG4gICAgICBcIlxyXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIiFkaWFsb2dIZWFkaW5nLnRyaW0oKSAmJiAhZGVzY3JpcHRpb24udHJpbSgpID8gYXJpYUxhYmVsIDogbnVsbFwiXHJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiXHJcbiAgICAgICAgZGlhbG9nSGVhZGluZy50cmltKCkgJiYgZGVzY3JpcHRpb24udHJpbSgpID8gZGVzY3JpcHRpb25JZCA6IG51bGxcclxuICAgICAgXCJcclxuICAgICAgY2RrVHJhcEZvY3VzXHJcbiAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCJcclxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICA+XHJcbiAgICAgIEBpZiAoZGlhbG9nSGVhZGluZy50cmltKCkpIHtcclxuICAgICAgICA8aGVhZGVyIGNsYXNzPVwiYXBwLWRpYWxvZy1oZWFkZXJcIj5cclxuICAgICAgICAgIDxoMiBjbGFzcz1cImFwcC1kaWFsb2ctdGl0bGVcIiBbaWRdPVwidGl0bGVJZFwiPnt7IGRpYWxvZ0hlYWRpbmcgfX08L2gyPlxyXG4gICAgICAgICAgQGlmIChzaG93Q2xvc2VCdXR0b24pIHtcclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXBwLWRpYWxvZy1jbG9zZVwiXHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkZlY2hhciBkacOhbG9nb1wiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlcXVlc3RDbG9zZSgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvaGVhZGVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBpZiAoZGVzY3JpcHRpb24udHJpbSgpKSB7XHJcbiAgICAgICAgPHAgY2xhc3M9XCJhcHAtZGlhbG9nLWRlc2NyaXB0aW9uXCIgW2lkXT1cImRlc2NyaXB0aW9uSWRcIj57eyBkZXNjcmlwdGlvbiB9fTwvcD5cclxuICAgICAgfVxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwLWRpYWxvZy1ib2R5XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxmb290ZXIgY2xhc3M9XCJhcHAtZGlhbG9nLWZvb3RlclwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthcHBEaWFsb2dGb290ZXJdXCIgLz5cclxuICAgICAgPC9mb290ZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** Marca o conteúdo projectado no rodapé de `app-dialog`. */
|
|
4
|
+
export class DialogFooterDirective {
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DialogFooterDirective, isStandalone: true, selector: "[appDialogFooter]", ngImport: i0 }); }
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogFooterDirective, decorators: [{
|
|
9
|
+
type: Directive,
|
|
10
|
+
args: [{
|
|
11
|
+
selector: '[appDialogFooter]',
|
|
12
|
+
standalone: true,
|
|
13
|
+
}]
|
|
14
|
+
}] });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWZvb3Rlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpYWxvZ3MvYXBwLWRpYWxvZy9kaWFsb2ctZm9vdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxQyw2REFBNkQ7QUFLN0QsTUFBTSxPQUFPLHFCQUFxQjsrR0FBckIscUJBQXFCO21HQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKiogTWFyY2EgbyBjb250ZcO6ZG8gcHJvamVjdGFkbyBubyByb2RhcMOpIGRlIGBhcHAtZGlhbG9nYC4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXBwRGlhbG9nRm9vdGVyXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSB7fVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2ctZGF0YS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlhbG9ncy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDb25maXJtRGlhbG9nVmFyaWFudCA9ICdkZWZhdWx0JyB8ICdkYW5nZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtRGlhbG9nRGF0YSB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgY29uZmlybUxhYmVsPzogc3RyaW5nO1xyXG4gIGNhbmNlbExhYmVsPzogc3RyaW5nO1xyXG4gIHZhcmlhbnQ/OiBDb25maXJtRGlhbG9nVmFyaWFudDtcclxuICAvKipcclxuICAgKiBTZSBgdHJ1ZWAsIEVzY2FwZSBlIGNsaXF1ZSBmb3JhICoqbsOjbyoqIGZlY2hhbSBvIGRpw6Fsb2dvIChhcGVuYXMgYm90w7VlcyBkbyByb2RhcMOpKS5cclxuICAgKiBPbWlzc286IGBmYWxzZWAg4oCUIHBlcm1pdGUgZGlzcGVuc2FyIGNvbSBFc2Mgb3UgYmFja2Ryb3AgKGVtaXRlIGB1bmRlZmluZWRgIG5vIGBjbG9zZWRgKS5cclxuICAgKi9cclxuICBibG9ja092ZXJsYXlEaXNtaXNzPzogYm9vbGVhbjtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ViewChild, inject, } from '@angular/core';
|
|
2
|
+
import { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';
|
|
3
|
+
import { BaseButtonComponent, BaseButtonType, BaseButtonVariant } from '../../buttons';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ConfirmDialogComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.ref = inject((DialogRef));
|
|
8
|
+
this.data = inject(DIALOG_DATA);
|
|
9
|
+
this.BaseButtonType = BaseButtonType;
|
|
10
|
+
this.BaseButtonVariant = BaseButtonVariant;
|
|
11
|
+
this.titleId = `app-confirm-dlg-title-${++ConfirmDialogComponent.seq}`;
|
|
12
|
+
this.descId = `app-confirm-dlg-desc-${ConfirmDialogComponent.seq}`;
|
|
13
|
+
}
|
|
14
|
+
static { this.seq = 0; }
|
|
15
|
+
ngAfterViewInit() {
|
|
16
|
+
queueMicrotask(() => {
|
|
17
|
+
this.cancelBtn?.focusNative({ preventScroll: true });
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
onConfirm() {
|
|
21
|
+
this.ref.close(true);
|
|
22
|
+
}
|
|
23
|
+
onCancel() {
|
|
24
|
+
this.ref.close(false);
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfirmDialogComponent, isStandalone: true, selector: "app-confirm-dialog", viewQueries: [{ propertyName: "cancelBtn", first: true, predicate: ["cancelBtn"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"confirm-dialog\"\r\n role=\"alertdialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"descId\"\r\n>\r\n <header class=\"confirm-dialog__header\">\r\n <h2 class=\"confirm-dialog__title\" [id]=\"titleId\">{{ data.title }}</h2>\r\n </header>\r\n\r\n <div class=\"confirm-dialog__body\">\r\n <p class=\"confirm-dialog__message\" [id]=\"descId\">{{ data.message }}</p>\r\n </div>\r\n\r\n <footer class=\"confirm-dialog__footer\">\r\n <app-base-button\r\n #cancelBtn\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Secondary\"\r\n [fullWidth]=\"false\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ data.cancelLabel ?? 'Cancelar' }}\r\n </app-base-button>\r\n <app-base-button\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Primary\"\r\n [fullWidth]=\"false\"\r\n [class.confirm-dialog__confirm--danger]=\"data.variant === 'danger'\"\r\n (click)=\"onConfirm()\"\r\n >\r\n {{ data.confirmLabel ?? 'Confirmar' }}\r\n </app-base-button>\r\n </footer>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.confirm-dialog{box-sizing:border-box;display:flex;flex-direction:column;min-width:0;max-width:100%;min-height:0;overflow:hidden}.confirm-dialog__header{flex:0 0 auto;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.confirm-dialog__title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.confirm-dialog__body{flex:1 1 auto;min-height:0;padding:1rem;overflow:auto}.confirm-dialog__message{margin:0;font-size:.9rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3)}.confirm-dialog__footer{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native{border-color:var(--app-color-error-border, #dc2626);background:var(--app-color-error, #b91c1c);color:var(--app-color-error-contrast, #fff)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}\n"], dependencies: [{ kind: "component", type: BaseButtonComponent, selector: "app-base-button", inputs: ["type", "disabled", "readonly", "fullWidth", "loading", "variant", "appearance"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'app-confirm-dialog', standalone: true, imports: [BaseButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"confirm-dialog\"\r\n role=\"alertdialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-describedby]=\"descId\"\r\n>\r\n <header class=\"confirm-dialog__header\">\r\n <h2 class=\"confirm-dialog__title\" [id]=\"titleId\">{{ data.title }}</h2>\r\n </header>\r\n\r\n <div class=\"confirm-dialog__body\">\r\n <p class=\"confirm-dialog__message\" [id]=\"descId\">{{ data.message }}</p>\r\n </div>\r\n\r\n <footer class=\"confirm-dialog__footer\">\r\n <app-base-button\r\n #cancelBtn\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Secondary\"\r\n [fullWidth]=\"false\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ data.cancelLabel ?? 'Cancelar' }}\r\n </app-base-button>\r\n <app-base-button\r\n [type]=\"BaseButtonType.Button\"\r\n [variant]=\"BaseButtonVariant.Primary\"\r\n [fullWidth]=\"false\"\r\n [class.confirm-dialog__confirm--danger]=\"data.variant === 'danger'\"\r\n (click)=\"onConfirm()\"\r\n >\r\n {{ data.confirmLabel ?? 'Confirmar' }}\r\n </app-base-button>\r\n </footer>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.confirm-dialog{box-sizing:border-box;display:flex;flex-direction:column;min-width:0;max-width:100%;min-height:0;overflow:hidden}.confirm-dialog__header{flex:0 0 auto;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}.confirm-dialog__title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.confirm-dialog__body{flex:1 1 auto;min-height:0;padding:1rem;overflow:auto}.confirm-dialog__message{margin:0;font-size:.9rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3)}.confirm-dialog__footer{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09))}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native{border-color:var(--app-color-error-border, #dc2626);background:var(--app-color-error, #b91c1c);color:var(--app-color-error-contrast, #fff)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:hover:not(:disabled){filter:brightness(.95)}:host ::ng-deep app-base-button.confirm-dialog__confirm--danger.base-button--primary .base-button__native:focus-visible{outline:none;box-shadow:0 0 0 3px var(--app-color-error-focus-ring, rgba(220, 38, 38, .35))}\n"] }]
|
|
32
|
+
}], propDecorators: { cancelBtn: [{
|
|
33
|
+
type: ViewChild,
|
|
34
|
+
args: ['cancelBtn']
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlhbG9ncy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFXdkYsTUFBTSxPQUFPLHNCQUFzQjtJQVJuQztRQVNXLFFBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQSxTQUEwQyxDQUFBLENBQUMsQ0FBQztRQUN6RCxTQUFJLEdBQUcsTUFBTSxDQUFvQixXQUFXLENBQUMsQ0FBQztRQUU5QyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUV0QyxZQUFPLEdBQUcseUJBQXlCLEVBQUUsc0JBQXNCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbEUsV0FBTSxHQUFHLHdCQUF3QixzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQW1CeEU7YUFmZ0IsUUFBRyxHQUFHLENBQUMsQUFBSixDQUFLO0lBRXZCLGVBQWU7UUFDYixjQUFjLENBQUMsR0FBRyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQzsrR0ExQlUsc0JBQXNCO21HQUF0QixzQkFBc0Isc0xDbkJuQyx1b0NBb0NBLG85Q0R0QlksbUJBQW1COzs0RkFLbEIsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzhCQVlmLFNBQVM7c0JBQXhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRElBTE9HX0RBVEEsIERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xyXG5pbXBvcnQgeyBCYXNlQnV0dG9uQ29tcG9uZW50LCBCYXNlQnV0dG9uVHlwZSwgQmFzZUJ1dHRvblZhcmlhbnQgfSBmcm9tICcuLi8uLi9idXR0b25zJztcclxuaW1wb3J0IHR5cGUgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4vY29uZmlybS1kaWFsb2ctZGF0YS5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jb25maXJtLWRpYWxvZycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQmFzZUJ1dHRvbkNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG4gIHJlYWRvbmx5IHJlZiA9IGluamVjdChEaWFsb2dSZWY8Ym9vbGVhbiwgQ29uZmlybURpYWxvZ0NvbXBvbmVudD4pO1xyXG4gIHJlYWRvbmx5IGRhdGEgPSBpbmplY3Q8Q29uZmlybURpYWxvZ0RhdGE+KERJQUxPR19EQVRBKTtcclxuXHJcbiAgcmVhZG9ubHkgQmFzZUJ1dHRvblR5cGUgPSBCYXNlQnV0dG9uVHlwZTtcclxuICByZWFkb25seSBCYXNlQnV0dG9uVmFyaWFudCA9IEJhc2VCdXR0b25WYXJpYW50O1xyXG5cclxuICByZWFkb25seSB0aXRsZUlkID0gYGFwcC1jb25maXJtLWRsZy10aXRsZS0keysrQ29uZmlybURpYWxvZ0NvbXBvbmVudC5zZXF9YDtcclxuICByZWFkb25seSBkZXNjSWQgPSBgYXBwLWNvbmZpcm0tZGxnLWRlc2MtJHtDb25maXJtRGlhbG9nQ29tcG9uZW50LnNlcX1gO1xyXG5cclxuICBAVmlld0NoaWxkKCdjYW5jZWxCdG4nKSBwcml2YXRlIGNhbmNlbEJ0bj86IEJhc2VCdXR0b25Db21wb25lbnQ7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHNlcSA9IDA7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcclxuICAgICAgdGhpcy5jYW5jZWxCdG4/LmZvY3VzTmF0aXZlKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25Db25maXJtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWYuY2xvc2UodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVmLmNsb3NlKGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiY29uZmlybS1kaWFsb2dcIlxyXG4gIHJvbGU9XCJhbGVydGRpYWxvZ1wiXHJcbiAgYXJpYS1tb2RhbD1cInRydWVcIlxyXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0aXRsZUlkXCJcclxuICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImRlc2NJZFwiXHJcbj5cclxuICA8aGVhZGVyIGNsYXNzPVwiY29uZmlybS1kaWFsb2dfX2hlYWRlclwiPlxyXG4gICAgPGgyIGNsYXNzPVwiY29uZmlybS1kaWFsb2dfX3RpdGxlXCIgW2lkXT1cInRpdGxlSWRcIj57eyBkYXRhLnRpdGxlIH19PC9oMj5cclxuICA8L2hlYWRlcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbmZpcm0tZGlhbG9nX19ib2R5XCI+XHJcbiAgICA8cCBjbGFzcz1cImNvbmZpcm0tZGlhbG9nX19tZXNzYWdlXCIgW2lkXT1cImRlc2NJZFwiPnt7IGRhdGEubWVzc2FnZSB9fTwvcD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGZvb3RlciBjbGFzcz1cImNvbmZpcm0tZGlhbG9nX19mb290ZXJcIj5cclxuICAgIDxhcHAtYmFzZS1idXR0b25cclxuICAgICAgI2NhbmNlbEJ0blxyXG4gICAgICBbdHlwZV09XCJCYXNlQnV0dG9uVHlwZS5CdXR0b25cIlxyXG4gICAgICBbdmFyaWFudF09XCJCYXNlQnV0dG9uVmFyaWFudC5TZWNvbmRhcnlcIlxyXG4gICAgICBbZnVsbFdpZHRoXT1cImZhbHNlXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBkYXRhLmNhbmNlbExhYmVsID8/ICdDYW5jZWxhcicgfX1cclxuICAgIDwvYXBwLWJhc2UtYnV0dG9uPlxyXG4gICAgPGFwcC1iYXNlLWJ1dHRvblxyXG4gICAgICBbdHlwZV09XCJCYXNlQnV0dG9uVHlwZS5CdXR0b25cIlxyXG4gICAgICBbdmFyaWFudF09XCJCYXNlQnV0dG9uVmFyaWFudC5QcmltYXJ5XCJcclxuICAgICAgW2Z1bGxXaWR0aF09XCJmYWxzZVwiXHJcbiAgICAgIFtjbGFzcy5jb25maXJtLWRpYWxvZ19fY29uZmlybS0tZGFuZ2VyXT1cImRhdGEudmFyaWFudCA9PT0gJ2RhbmdlcidcIlxyXG4gICAgICAoY2xpY2spPVwib25Db25maXJtKClcIlxyXG4gICAgPlxyXG4gICAgICB7eyBkYXRhLmNvbmZpcm1MYWJlbCA/PyAnQ29uZmlybWFyJyB9fVxyXG4gICAgPC9hcHAtYmFzZS1idXR0b24+XHJcbiAgPC9mb290ZXI+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { Dialog } from '@angular/cdk/dialog';
|
|
3
|
+
import { firstValueFrom } from 'rxjs';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import { AppThemeService } from '../../theme';
|
|
6
|
+
import { AppLibLightBlockScrollStrategy } from '../_utils/app-lib-light-block-scroll-strategy';
|
|
7
|
+
import { libDialogPanelClasses } from '../_utils/lib-dialog-panel-classes';
|
|
8
|
+
import { ConfirmDialogComponent } from './confirm-dialog.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class ConfirmDialogService {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.dialog = inject(Dialog);
|
|
13
|
+
this.theme = inject(AppThemeService);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Abre o diálogo de confirmação (CDK Dialog + `ConfirmDialogComponent`).
|
|
17
|
+
* Emite `true` se confirmar, `false` se cancelar, `undefined` se fechar sem resultado (Esc/backdrop, quando permitido).
|
|
18
|
+
* Por defeito permite dispensar com Esc e clique fora; use `data.blockOverlayDismiss` para exigir só botões.
|
|
19
|
+
*/
|
|
20
|
+
open(data) {
|
|
21
|
+
return this.dialog
|
|
22
|
+
.open(ConfirmDialogComponent, {
|
|
23
|
+
data,
|
|
24
|
+
width: 'min(26rem, 92vw)',
|
|
25
|
+
maxWidth: '92vw',
|
|
26
|
+
disableClose: data.blockOverlayDismiss === true,
|
|
27
|
+
hasBackdrop: true,
|
|
28
|
+
backdropClass: 'app-lib-dialog-backdrop',
|
|
29
|
+
panelClass: libDialogPanelClasses(this.theme),
|
|
30
|
+
autoFocus: false,
|
|
31
|
+
ariaModal: true,
|
|
32
|
+
scrollStrategy: new AppLibLightBlockScrollStrategy(),
|
|
33
|
+
})
|
|
34
|
+
.closed.pipe(map((r) => r));
|
|
35
|
+
}
|
|
36
|
+
/** Confirmação como Promise (adequado a `async`/`await`). */
|
|
37
|
+
confirm(data) {
|
|
38
|
+
return firstValueFrom(this.open(data).pipe(map((r) => r === true)));
|
|
39
|
+
}
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
41
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogService, providedIn: 'root' }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogService, decorators: [{
|
|
44
|
+
type: Injectable,
|
|
45
|
+
args: [{ providedIn: 'root' }]
|
|
46
|
+
}] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlhbG9ncy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QyxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUlwRSxNQUFNLE9BQU8sb0JBQW9CO0lBRGpDO1FBRW1CLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQThCbEQ7SUE1QkM7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxJQUF1QjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNO2FBQ2YsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzVCLElBQUk7WUFDSixLQUFLLEVBQUUsa0JBQWtCO1lBQ3pCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFlBQVksRUFBRSxJQUFJLENBQUMsbUJBQW1CLEtBQUssSUFBSTtZQUMvQyxXQUFXLEVBQUUsSUFBSTtZQUNqQixhQUFhLEVBQUUseUJBQXlCO1lBQ3hDLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzdDLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUksOEJBQThCLEVBQUU7U0FDckQsQ0FBQzthQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUF3QixDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxJQUF1QjtRQUM3QixPQUFPLGNBQWMsQ0FDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FDN0MsQ0FBQztJQUNKLENBQUM7K0dBL0JVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7NEZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQXBwVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGhlbWUnO1xyXG5pbXBvcnQgeyBBcHBMaWJMaWdodEJsb2NrU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICcuLi9fdXRpbHMvYXBwLWxpYi1saWdodC1ibG9jay1zY3JvbGwtc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBsaWJEaWFsb2dQYW5lbENsYXNzZXMgfSBmcm9tICcuLi9fdXRpbHMvbGliLWRpYWxvZy1wYW5lbC1jbGFzc2VzJztcclxuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHR5cGUgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4vY29uZmlybS1kaWFsb2ctZGF0YS5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybURpYWxvZ1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nID0gaW5qZWN0KERpYWxvZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB0aGVtZSA9IGluamVjdChBcHBUaGVtZVNlcnZpY2UpO1xyXG5cclxuICAvKipcclxuICAgKiBBYnJlIG8gZGnDoWxvZ28gZGUgY29uZmlybWHDp8OjbyAoQ0RLIERpYWxvZyArIGBDb25maXJtRGlhbG9nQ29tcG9uZW50YCkuXHJcbiAgICogRW1pdGUgYHRydWVgIHNlIGNvbmZpcm1hciwgYGZhbHNlYCBzZSBjYW5jZWxhciwgYHVuZGVmaW5lZGAgc2UgZmVjaGFyIHNlbSByZXN1bHRhZG8gKEVzYy9iYWNrZHJvcCwgcXVhbmRvIHBlcm1pdGlkbykuXHJcbiAgICogUG9yIGRlZmVpdG8gcGVybWl0ZSBkaXNwZW5zYXIgY29tIEVzYyBlIGNsaXF1ZSBmb3JhOyB1c2UgYGRhdGEuYmxvY2tPdmVybGF5RGlzbWlzc2AgcGFyYSBleGlnaXIgc8OzIGJvdMO1ZXMuXHJcbiAgICovXHJcbiAgb3BlbihkYXRhOiBDb25maXJtRGlhbG9nRGF0YSk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nXHJcbiAgICAgIC5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIHdpZHRoOiAnbWluKDI2cmVtLCA5MnZ3KScsXHJcbiAgICAgICAgbWF4V2lkdGg6ICc5MnZ3JyxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IGRhdGEuYmxvY2tPdmVybGF5RGlzbWlzcyA9PT0gdHJ1ZSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICBiYWNrZHJvcENsYXNzOiAnYXBwLWxpYi1kaWFsb2ctYmFja2Ryb3AnLFxyXG4gICAgICAgIHBhbmVsQ2xhc3M6IGxpYkRpYWxvZ1BhbmVsQ2xhc3Nlcyh0aGlzLnRoZW1lKSxcclxuICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgIGFyaWFNb2RhbDogdHJ1ZSxcclxuICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFwcExpYkxpZ2h0QmxvY2tTY3JvbGxTdHJhdGVneSgpLFxyXG4gICAgICB9KVxyXG4gICAgICAuY2xvc2VkLnBpcGUobWFwKChyKSA9PiByIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQpKTtcclxuICB9XHJcblxyXG4gIC8qKiBDb25maXJtYcOnw6NvIGNvbW8gUHJvbWlzZSAoYWRlcXVhZG8gYSBgYXN5bmNgL2Bhd2FpdGApLiAqL1xyXG4gIGNvbmZpcm0oZGF0YTogQ29uZmlybURpYWxvZ0RhdGEpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgdGhpcy5vcGVuKGRhdGEpLnBpcGUobWFwKChyKSA9PiByID09PSB0cnVlKSksXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { AppDialogComponent } from './app-dialog/app-dialog.component';
|
|
2
|
+
export { DialogFooterDirective } from './app-dialog/dialog-footer.directive';
|
|
3
|
+
export { LibDialogSize } from './_models/lib-dialog-size.model';
|
|
4
|
+
export { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';
|
|
5
|
+
export { ConfirmDialogService } from './confirm-dialog/confirm-dialog.service';
|
|
6
|
+
export { libDialogPanelClasses } from './_utils/lib-dialog-panel-classes';
|
|
7
|
+
export { AppLibLightBlockScrollStrategy } from './_utils/app-lib-light-block-scroll-strategy';
|
|
8
|
+
export { ToastService } from './toast/toast.service';
|
|
9
|
+
export { ToastHostComponent } from './toast/toast-host.component';
|
|
10
|
+
export { LoadingDialogComponent } from './loading-dialog/loading-dialog.component';
|
|
11
|
+
export { LoadingDialogService } from './loading-dialog/loading-dialog.service';
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpYWxvZ3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBSy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQU9sRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFwcERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vYXBwLWRpYWxvZy9hcHAtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCB7IERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vYXBwLWRpYWxvZy9kaWFsb2ctZm9vdGVyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCB7IExpYkRpYWxvZ1NpemUgfSBmcm9tICcuL19tb2RlbHMvbGliLWRpYWxvZy1zaXplLm1vZGVsJztcclxuZXhwb3J0IHsgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0IHsgQ29uZmlybURpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLnNlcnZpY2UnO1xyXG5leHBvcnQgdHlwZSB7XHJcbiAgQ29uZmlybURpYWxvZ0RhdGEsXHJcbiAgQ29uZmlybURpYWxvZ1ZhcmlhbnQsXHJcbn0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLm1vZGVsJztcclxuZXhwb3J0IHsgbGliRGlhbG9nUGFuZWxDbGFzc2VzIH0gZnJvbSAnLi9fdXRpbHMvbGliLWRpYWxvZy1wYW5lbC1jbGFzc2VzJztcclxuZXhwb3J0IHsgQXBwTGliTGlnaHRCbG9ja1Njcm9sbFN0cmF0ZWd5IH0gZnJvbSAnLi9fdXRpbHMvYXBwLWxpYi1saWdodC1ibG9jay1zY3JvbGwtc3RyYXRlZ3knO1xyXG5leHBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0L3RvYXN0LnNlcnZpY2UnO1xyXG5leHBvcnQgeyBUb2FzdEhvc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0L3RvYXN0LWhvc3QuY29tcG9uZW50JztcclxuZXhwb3J0IHR5cGUge1xyXG4gIFRvYXN0SW5zdGFuY2UsXHJcbiAgVG9hc3RTaG93T3B0aW9ucyxcclxuICBUb2FzdFR5cGUsXHJcbiAgVG9hc3RWZXJ0aWNhbFBvc2l0aW9uLFxyXG59IGZyb20gJy4vdG9hc3QvdG9hc3QubW9kZWxzJztcclxuZXhwb3J0IHsgTG9hZGluZ0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy1kaWFsb2cvbG9hZGluZy1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0IHsgTG9hZGluZ0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2xvYWRpbmctZGlhbG9nL2xvYWRpbmctZGlhbG9nLnNlcnZpY2UnO1xyXG5leHBvcnQgdHlwZSB7IExvYWRpbmdEaWFsb2dEYXRhIH0gZnJvbSAnLi9sb2FkaW5nLWRpYWxvZy9sb2FkaW5nLWRpYWxvZy1kYXRhLm1vZGVsJztcclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1kaWFsb2ctZGF0YS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlhbG9ncy9sb2FkaW5nLWRpYWxvZy9sb2FkaW5nLWRpYWxvZy1kYXRhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIExvYWRpbmdEaWFsb2dEYXRhIHtcclxuICAvKipcclxuICAgKiBUZXh0byBzb2IgbyBpbmRpY2Fkb3IgZGUgcHJvZ3Jlc3NvLlxyXG4gICAqIE9taXNzbzogbWVuc2FnZW0gcG9yIGRlZmVpdG8gZGEgbGliIChgQSBjYXJyZWdhcuKApmApLlxyXG4gICAqL1xyXG4gIG1lc3NhZ2U/OiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
|
+
import { DIALOG_DATA } from '@angular/cdk/dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
const DEFAULT_MESSAGE = 'A carregar…';
|
|
5
|
+
export class LoadingDialogComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.data = inject(DIALOG_DATA);
|
|
8
|
+
this.titleId = `app-loading-dlg-${++LoadingDialogComponent.seq}`;
|
|
9
|
+
this.message = this.data?.message?.trim() || DEFAULT_MESSAGE;
|
|
10
|
+
}
|
|
11
|
+
static { this.seq = 0; }
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LoadingDialogComponent, isStandalone: true, selector: "app-loading-dialog", ngImport: i0, template: "<div\r\n class=\"loading-dialog\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-busy]=\"true\"\r\n>\r\n <div class=\"loading-dialog__content\">\r\n <div class=\"loading-dialog__spinner\" aria-hidden=\"true\"></div>\r\n <p class=\"loading-dialog__message\" [id]=\"titleId\">{{ message }}</p>\r\n </div>\r\n</div>\r\n", styles: [".loading-dialog{box-sizing:border-box;padding:1.75rem 2.25rem 2rem;outline:none}.loading-dialog__content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;text-align:center;min-width:min(17rem,78vw)}.loading-dialog__spinner{width:2.75rem;height:2.75rem;border-radius:50%;border:3px solid color-mix(in srgb,var(--app-color-primary, #2b7fd9) 22%,transparent);border-top-color:var(--app-color-primary, #2b7fd9);animation:loading-dialog-spin .75s linear infinite}@keyframes loading-dialog-spin{to{transform:rotate(360deg)}}.loading-dialog__message{margin:0;font-size:.95rem;font-weight:500;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{ selector: 'app-loading-dialog', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"loading-dialog\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"titleId\"\r\n [attr.aria-busy]=\"true\"\r\n>\r\n <div class=\"loading-dialog__content\">\r\n <div class=\"loading-dialog__spinner\" aria-hidden=\"true\"></div>\r\n <p class=\"loading-dialog__message\" [id]=\"titleId\">{{ message }}</p>\r\n </div>\r\n</div>\r\n", styles: [".loading-dialog{box-sizing:border-box;padding:1.75rem 2.25rem 2rem;outline:none}.loading-dialog__content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;text-align:center;min-width:min(17rem,78vw)}.loading-dialog__spinner{width:2.75rem;height:2.75rem;border-radius:50%;border:3px solid color-mix(in srgb,var(--app-color-primary, #2b7fd9) 22%,transparent);border-top-color:var(--app-color-primary, #2b7fd9);animation:loading-dialog-spin .75s linear infinite}@keyframes loading-dialog-spin{to{transform:rotate(360deg)}}.loading-dialog__message{margin:0;font-size:.95rem;font-weight:500;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3)}\n"] }]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaWFsb2dzL2xvYWRpbmctZGlhbG9nL2xvYWRpbmctZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlhbG9ncy9sb2FkaW5nLWRpYWxvZy9sb2FkaW5nLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR2xELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQztBQVN0QyxNQUFNLE9BQU8sc0JBQXNCO0lBUG5DO1FBUW1CLFNBQUksR0FBRyxNQUFNLENBQW9CLFdBQVcsQ0FBQyxDQUFDO1FBRXRELFlBQU8sR0FBRyxtQkFBbUIsRUFBRSxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU1RCxZQUFPLEdBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksZUFBZSxDQUFDO0tBR2pEO2FBRGdCLFFBQUcsR0FBRyxDQUFDLEFBQUosQ0FBSzsrR0FSWixzQkFBc0I7bUdBQXRCLHNCQUFzQiw4RUNibkMsOFhBWUE7OzRGRENhLHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XHJcbmltcG9ydCB0eXBlIHsgTG9hZGluZ0RpYWxvZ0RhdGEgfSBmcm9tICcuL2xvYWRpbmctZGlhbG9nLWRhdGEubW9kZWwnO1xyXG5cclxuY29uc3QgREVGQVVMVF9NRVNTQUdFID0gJ0EgY2FycmVnYXLigKYnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtbG9hZGluZy1kaWFsb2cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xvYWRpbmctZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbG9hZGluZy1kaWFsb2cuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9hZGluZ0RpYWxvZ0NvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhID0gaW5qZWN0PExvYWRpbmdEaWFsb2dEYXRhPihESUFMT0dfREFUQSk7XHJcblxyXG4gIHJlYWRvbmx5IHRpdGxlSWQgPSBgYXBwLWxvYWRpbmctZGxnLSR7KytMb2FkaW5nRGlhbG9nQ29tcG9uZW50LnNlcX1gO1xyXG5cclxuICByZWFkb25seSBtZXNzYWdlID1cclxuICAgIHRoaXMuZGF0YT8ubWVzc2FnZT8udHJpbSgpIHx8IERFRkFVTFRfTUVTU0FHRTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2VxID0gMDtcclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJsb2FkaW5nLWRpYWxvZ1wiXHJcbiAgcm9sZT1cImRpYWxvZ1wiXHJcbiAgYXJpYS1tb2RhbD1cInRydWVcIlxyXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0aXRsZUlkXCJcclxuICBbYXR0ci5hcmlhLWJ1c3ldPVwidHJ1ZVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1kaWFsb2dfX2NvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLWRpYWxvZ19fc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxyXG4gICAgPHAgY2xhc3M9XCJsb2FkaW5nLWRpYWxvZ19fbWVzc2FnZVwiIFtpZF09XCJ0aXRsZUlkXCI+e3sgbWVzc2FnZSB9fTwvcD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { Dialog } from '@angular/cdk/dialog';
|
|
3
|
+
import { AppThemeService } from '../../theme';
|
|
4
|
+
import { AppLibLightBlockScrollStrategy } from '../_utils/app-lib-light-block-scroll-strategy';
|
|
5
|
+
import { libDialogPanelClasses } from '../_utils/lib-dialog-panel-classes';
|
|
6
|
+
import { LoadingDialogComponent } from './loading-dialog.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class LoadingDialogService {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.dialog = inject(Dialog);
|
|
11
|
+
this.theme = inject(AppThemeService);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Abre o diálogo de carregamento.
|
|
15
|
+
* `disableClose: true` — não fecha com Escape nem clique fora; use `ref.close()` quando terminar.
|
|
16
|
+
*/
|
|
17
|
+
open(data) {
|
|
18
|
+
return this.dialog.open(LoadingDialogComponent, {
|
|
19
|
+
data: data ?? {},
|
|
20
|
+
width: 'min(22rem, 90vw)',
|
|
21
|
+
maxWidth: '92vw',
|
|
22
|
+
disableClose: true,
|
|
23
|
+
hasBackdrop: true,
|
|
24
|
+
backdropClass: 'app-lib-dialog-backdrop',
|
|
25
|
+
panelClass: libDialogPanelClasses(this.theme),
|
|
26
|
+
autoFocus: false,
|
|
27
|
+
ariaModal: true,
|
|
28
|
+
scrollStrategy: new AppLibLightBlockScrollStrategy(),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogService, providedIn: 'root' }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LoadingDialogService, decorators: [{
|
|
35
|
+
type: Injectable,
|
|
36
|
+
args: [{ providedIn: 'root' }]
|
|
37
|
+
}] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1kaWFsb2cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGlhbG9ncy9sb2FkaW5nLWRpYWxvZy9sb2FkaW5nLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUlwRSxNQUFNLE9BQU8sb0JBQW9CO0lBRGpDO1FBRW1CLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQW9CbEQ7SUFsQkM7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLElBQXdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDOUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ2hCLEtBQUssRUFBRSxrQkFBa0I7WUFDekIsUUFBUSxFQUFFLE1BQU07WUFDaEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLHlCQUF5QjtZQUN4QyxVQUFVLEVBQUUscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM3QyxTQUFTLEVBQUUsS0FBSztZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLGNBQWMsRUFBRSxJQUFJLDhCQUE4QixFQUFFO1NBQ3JELENBQUMsQ0FBQztJQUNMLENBQUM7K0dBckJVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7NEZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nLCBEaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvZGlhbG9nJztcclxuaW1wb3J0IHsgQXBwVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGhlbWUnO1xyXG5pbXBvcnQgeyBBcHBMaWJMaWdodEJsb2NrU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICcuLi9fdXRpbHMvYXBwLWxpYi1saWdodC1ibG9jay1zY3JvbGwtc3RyYXRlZ3knO1xyXG5pbXBvcnQgeyBsaWJEaWFsb2dQYW5lbENsYXNzZXMgfSBmcm9tICcuLi9fdXRpbHMvbGliLWRpYWxvZy1wYW5lbC1jbGFzc2VzJztcclxuaW1wb3J0IHsgTG9hZGluZ0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHR5cGUgeyBMb2FkaW5nRGlhbG9nRGF0YSB9IGZyb20gJy4vbG9hZGluZy1kaWFsb2ctZGF0YS5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTG9hZGluZ0RpYWxvZ1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nID0gaW5qZWN0KERpYWxvZyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB0aGVtZSA9IGluamVjdChBcHBUaGVtZVNlcnZpY2UpO1xyXG5cclxuICAvKipcclxuICAgKiBBYnJlIG8gZGnDoWxvZ28gZGUgY2FycmVnYW1lbnRvLlxyXG4gICAqIGBkaXNhYmxlQ2xvc2U6IHRydWVgIOKAlCBuw6NvIGZlY2hhIGNvbSBFc2NhcGUgbmVtIGNsaXF1ZSBmb3JhOyB1c2UgYHJlZi5jbG9zZSgpYCBxdWFuZG8gdGVybWluYXIuXHJcbiAgICovXHJcbiAgb3BlbihkYXRhPzogTG9hZGluZ0RpYWxvZ0RhdGEpOiBEaWFsb2dSZWY8dm9pZCwgTG9hZGluZ0RpYWxvZ0NvbXBvbmVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nLm9wZW4oTG9hZGluZ0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkYXRhID8/IHt9LFxyXG4gICAgICB3aWR0aDogJ21pbigyMnJlbSwgOTB2dyknLFxyXG4gICAgICBtYXhXaWR0aDogJzkydncnLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnYXBwLWxpYi1kaWFsb2ctYmFja2Ryb3AnLFxyXG4gICAgICBwYW5lbENsYXNzOiBsaWJEaWFsb2dQYW5lbENsYXNzZXModGhpcy50aGVtZSksXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIGFyaWFNb2RhbDogdHJ1ZSxcclxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IG5ldyBBcHBMaWJMaWdodEJsb2NrU2Nyb2xsU3RyYXRlZ3koKSxcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { NgClass } from '@angular/common';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, inject, } from '@angular/core';
|
|
3
|
+
import { animate, style, transition, trigger, } from '@angular/animations';
|
|
4
|
+
import { AppThemeService } from '../../theme';
|
|
5
|
+
import { ToastService } from './toast.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class ToastHostComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.toastService = inject(ToastService);
|
|
10
|
+
this.theme = inject(AppThemeService);
|
|
11
|
+
this.topToasts = computed(() => this.toastService.toasts().filter((t) => t.position === 'top'));
|
|
12
|
+
this.bottomToasts = computed(() => this.toastService.toasts().filter((t) => t.position === 'bottom'));
|
|
13
|
+
}
|
|
14
|
+
dismiss(id) {
|
|
15
|
+
this.toastService.dismiss(id);
|
|
16
|
+
}
|
|
17
|
+
action(id) {
|
|
18
|
+
this.toastService.runAction(id);
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ToastHostComponent, isStandalone: true, selector: "app-toast-host", ngImport: i0, template: "@if (topToasts().length > 0) {\r\n <div\r\n class=\"toast-host toast-host--top app-library-theme\"\r\n [ngClass]=\"theme.themeClass()\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n >\r\n @for (t of topToasts(); track t.id) {\r\n <div\r\n [ngClass]=\"['toast-host__item', 'toast-host__item--' + t.type]\"\r\n @toastAnimTop\r\n role=\"status\"\r\n >\r\n <div class=\"toast-host__body\">\r\n @if (t.title) {\r\n <p class=\"toast-host__title\">{{ t.title }}</p>\r\n }\r\n <p class=\"toast-host__message\">{{ t.message }}</p>\r\n @if (t.actionLabel) {\r\n <button type=\"button\" class=\"toast-host__action\" (click)=\"action(t.id)\">\r\n {{ t.actionLabel }}\r\n </button>\r\n }\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"toast-host__close\"\r\n [attr.aria-label]=\"'Fechar notifica\u00E7\u00E3o'\"\r\n (click)=\"dismiss(t.id)\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n@if (bottomToasts().length > 0) {\r\n <div\r\n class=\"toast-host toast-host--bottom app-library-theme\"\r\n [ngClass]=\"theme.themeClass()\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n >\r\n @for (t of bottomToasts(); track t.id) {\r\n <div\r\n [ngClass]=\"['toast-host__item', 'toast-host__item--' + t.type]\"\r\n @toastAnimBottom\r\n role=\"status\"\r\n >\r\n <div class=\"toast-host__body\">\r\n @if (t.title) {\r\n <p class=\"toast-host__title\">{{ t.title }}</p>\r\n }\r\n <p class=\"toast-host__message\">{{ t.message }}</p>\r\n @if (t.actionLabel) {\r\n <button type=\"button\" class=\"toast-host__action\" (click)=\"action(t.id)\">\r\n {{ t.actionLabel }}\r\n </button>\r\n }\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"toast-host__close\"\r\n [attr.aria-label]=\"'Fechar notifica\u00E7\u00E3o'\"\r\n (click)=\"dismiss(t.id)\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:contents}.toast-host{position:fixed;right:0;z-index:var(--app-z-toast, 1300);display:flex;align-items:flex-end;gap:.6rem;box-sizing:border-box;pointer-events:none;max-width:100vw}.toast-host--top{top:0;flex-direction:column;padding:max(.85rem,env(safe-area-inset-top)) max(.85rem,env(safe-area-inset-right)) max(.85rem,env(safe-area-inset-bottom)) max(.85rem,env(safe-area-inset-left))}.toast-host--bottom{bottom:0;top:auto;flex-direction:column-reverse;padding:max(.85rem,env(safe-area-inset-top)) max(.85rem,env(safe-area-inset-right)) max(.85rem,env(safe-area-inset-bottom)) max(.85rem,env(safe-area-inset-left))}.toast-host__item{pointer-events:auto;display:flex;align-items:flex-start;gap:.6rem;width:min(25rem,100vw - 1.7rem);max-width:100%;box-sizing:border-box;border-radius:12px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);box-shadow:0 4px 8px -2px #0000000f,0 14px 32px -8px #1a2f4524;padding:.85rem .65rem .85rem .95rem;border-left-width:5px;border-left-style:solid}.toast-host__item--success{border-left-color:var(--app-color-success, #15803d)}.toast-host__item--error{border-left-color:var(--app-color-error-border, #dc2626)}.toast-host__item--warning{border-left-color:var(--app-color-warning, #c2410c)}.toast-host__item--info{border-left-color:var(--app-color-info, #1d4ed8)}.toast-host__body{flex:1 1 auto;min-width:0}.toast-host__title{margin:0 0 .3rem;font-size:.9rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);letter-spacing:.01em}.toast-host__message{margin:0;font-size:.92rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3);word-break:break-word}.toast-host__action{margin:.5rem 0 0;padding:0;border:none;background:none;font:inherit;font-size:.86rem;font-weight:600;color:var(--app-color-primary, #2b7fd9);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.toast-host__action:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px;border-radius:4px}.toast-host__close{flex:0 0 auto;width:1.85rem;height:1.85rem;margin:-.05rem 0 0;padding:0;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--app-color-text-muted, #6b8299);font-size:1.25rem;line-height:1;cursor:pointer}.toast-host__close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08));color:var(--app-color-text-primary, #1a2f45)}.toast-host__close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
|
|
22
|
+
trigger('toastAnimTop', [
|
|
23
|
+
transition(':enter', [
|
|
24
|
+
style({ opacity: 0, transform: 'translateX(110%)' }),
|
|
25
|
+
animate('240ms cubic-bezier(0.22, 1, 0.36, 1)', style({ opacity: 1, transform: 'translateX(0)' })),
|
|
26
|
+
]),
|
|
27
|
+
transition(':leave', [
|
|
28
|
+
animate('180ms ease-in', style({ opacity: 0, transform: 'translateX(120%)' })),
|
|
29
|
+
]),
|
|
30
|
+
]),
|
|
31
|
+
trigger('toastAnimBottom', [
|
|
32
|
+
transition(':enter', [
|
|
33
|
+
style({ opacity: 0, transform: 'translateY(110%)' }),
|
|
34
|
+
animate('240ms cubic-bezier(0.22, 1, 0.36, 1)', style({ opacity: 1, transform: 'translateY(0)' })),
|
|
35
|
+
]),
|
|
36
|
+
transition(':leave', [
|
|
37
|
+
animate('180ms ease-in', style({ opacity: 0, transform: 'translateY(120%)' })),
|
|
38
|
+
]),
|
|
39
|
+
]),
|
|
40
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToastHostComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{ selector: 'app-toast-host', standalone: true, imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
45
|
+
trigger('toastAnimTop', [
|
|
46
|
+
transition(':enter', [
|
|
47
|
+
style({ opacity: 0, transform: 'translateX(110%)' }),
|
|
48
|
+
animate('240ms cubic-bezier(0.22, 1, 0.36, 1)', style({ opacity: 1, transform: 'translateX(0)' })),
|
|
49
|
+
]),
|
|
50
|
+
transition(':leave', [
|
|
51
|
+
animate('180ms ease-in', style({ opacity: 0, transform: 'translateX(120%)' })),
|
|
52
|
+
]),
|
|
53
|
+
]),
|
|
54
|
+
trigger('toastAnimBottom', [
|
|
55
|
+
transition(':enter', [
|
|
56
|
+
style({ opacity: 0, transform: 'translateY(110%)' }),
|
|
57
|
+
animate('240ms cubic-bezier(0.22, 1, 0.36, 1)', style({ opacity: 1, transform: 'translateY(0)' })),
|
|
58
|
+
]),
|
|
59
|
+
transition(':leave', [
|
|
60
|
+
animate('180ms ease-in', style({ opacity: 0, transform: 'translateY(120%)' })),
|
|
61
|
+
]),
|
|
62
|
+
]),
|
|
63
|
+
], template: "@if (topToasts().length > 0) {\r\n <div\r\n class=\"toast-host toast-host--top app-library-theme\"\r\n [ngClass]=\"theme.themeClass()\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n >\r\n @for (t of topToasts(); track t.id) {\r\n <div\r\n [ngClass]=\"['toast-host__item', 'toast-host__item--' + t.type]\"\r\n @toastAnimTop\r\n role=\"status\"\r\n >\r\n <div class=\"toast-host__body\">\r\n @if (t.title) {\r\n <p class=\"toast-host__title\">{{ t.title }}</p>\r\n }\r\n <p class=\"toast-host__message\">{{ t.message }}</p>\r\n @if (t.actionLabel) {\r\n <button type=\"button\" class=\"toast-host__action\" (click)=\"action(t.id)\">\r\n {{ t.actionLabel }}\r\n </button>\r\n }\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"toast-host__close\"\r\n [attr.aria-label]=\"'Fechar notifica\u00E7\u00E3o'\"\r\n (click)=\"dismiss(t.id)\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n@if (bottomToasts().length > 0) {\r\n <div\r\n class=\"toast-host toast-host--bottom app-library-theme\"\r\n [ngClass]=\"theme.themeClass()\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n >\r\n @for (t of bottomToasts(); track t.id) {\r\n <div\r\n [ngClass]=\"['toast-host__item', 'toast-host__item--' + t.type]\"\r\n @toastAnimBottom\r\n role=\"status\"\r\n >\r\n <div class=\"toast-host__body\">\r\n @if (t.title) {\r\n <p class=\"toast-host__title\">{{ t.title }}</p>\r\n }\r\n <p class=\"toast-host__message\">{{ t.message }}</p>\r\n @if (t.actionLabel) {\r\n <button type=\"button\" class=\"toast-host__action\" (click)=\"action(t.id)\">\r\n {{ t.actionLabel }}\r\n </button>\r\n }\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"toast-host__close\"\r\n [attr.aria-label]=\"'Fechar notifica\u00E7\u00E3o'\"\r\n (click)=\"dismiss(t.id)\"\r\n >\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:contents}.toast-host{position:fixed;right:0;z-index:var(--app-z-toast, 1300);display:flex;align-items:flex-end;gap:.6rem;box-sizing:border-box;pointer-events:none;max-width:100vw}.toast-host--top{top:0;flex-direction:column;padding:max(.85rem,env(safe-area-inset-top)) max(.85rem,env(safe-area-inset-right)) max(.85rem,env(safe-area-inset-bottom)) max(.85rem,env(safe-area-inset-left))}.toast-host--bottom{bottom:0;top:auto;flex-direction:column-reverse;padding:max(.85rem,env(safe-area-inset-top)) max(.85rem,env(safe-area-inset-right)) max(.85rem,env(safe-area-inset-bottom)) max(.85rem,env(safe-area-inset-left))}.toast-host__item{pointer-events:auto;display:flex;align-items:flex-start;gap:.6rem;width:min(25rem,100vw - 1.7rem);max-width:100%;box-sizing:border-box;border-radius:12px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);box-shadow:0 4px 8px -2px #0000000f,0 14px 32px -8px #1a2f4524;padding:.85rem .65rem .85rem .95rem;border-left-width:5px;border-left-style:solid}.toast-host__item--success{border-left-color:var(--app-color-success, #15803d)}.toast-host__item--error{border-left-color:var(--app-color-error-border, #dc2626)}.toast-host__item--warning{border-left-color:var(--app-color-warning, #c2410c)}.toast-host__item--info{border-left-color:var(--app-color-info, #1d4ed8)}.toast-host__body{flex:1 1 auto;min-width:0}.toast-host__title{margin:0 0 .3rem;font-size:.9rem;font-weight:600;line-height:1.35;color:var(--app-color-text-primary, #1a2f45);letter-spacing:.01em}.toast-host__message{margin:0;font-size:.92rem;line-height:1.5;color:var(--app-color-text-secondary, #5a7fa3);word-break:break-word}.toast-host__action{margin:.5rem 0 0;padding:0;border:none;background:none;font:inherit;font-size:.86rem;font-weight:600;color:var(--app-color-primary, #2b7fd9);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.toast-host__action:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px;border-radius:4px}.toast-host__close{flex:0 0 auto;width:1.85rem;height:1.85rem;margin:-.05rem 0 0;padding:0;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--app-color-text-muted, #6b8299);font-size:1.25rem;line-height:1;cursor:pointer}.toast-host__close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08));color:var(--app-color-text-primary, #1a2f45)}.toast-host__close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}\n"] }]
|
|
64
|
+
}] });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QtaG9zdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpYWxvZ3MvdG9hc3QvdG9hc3QtaG9zdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpYWxvZ3MvdG9hc3QvdG9hc3QtaG9zdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBMEMvQyxNQUFNLE9BQU8sa0JBQWtCO0lBeEMvQjtRQXlDVyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWhDLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUMvRCxDQUFDO1FBRU8saUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxL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QUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUNyRDs2QkFDRixDQUFDO3lCQUNILENBQUM7cUJBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgaW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIGFuaW1hdGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICB0cmlnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBBcHBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90aGVtZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4vdG9hc3Quc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC10b2FzdC1ob3N0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtOZ0NsYXNzXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QtaG9zdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RvYXN0LWhvc3QuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ3RvYXN0QW5pbVRvcCcsIFtcclxuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMTAlKScgfSksXHJcbiAgICAgICAgYW5pbWF0ZShcclxuICAgICAgICAgICcyNDBtcyBjdWJpYy1iZXppZXIoMC4yMiwgMSwgMC4zNiwgMSknLFxyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSxcclxuICAgICAgICApLFxyXG4gICAgICBdKSxcclxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgICAgIGFuaW1hdGUoXHJcbiAgICAgICAgICAnMTgwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTIwJSknIH0pLFxyXG4gICAgICAgICksXHJcbiAgICAgIF0pLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCd0b2FzdEFuaW1Cb3R0b20nLCBbXHJcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTEwJSknIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoXHJcbiAgICAgICAgICAnMjQwbXMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpJyxcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSksXHJcbiAgICAgICAgKSxcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgICAgICBhbmltYXRlKFxyXG4gICAgICAgICAgJzE4MG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEyMCUpJyB9KSxcclxuICAgICAgICApLFxyXG4gICAgICBdKSxcclxuICAgIF0pLFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2FzdEhvc3RDb21wb25lbnQge1xyXG4gIHJlYWRvbmx5IHRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xyXG4gIHJlYWRvbmx5IHRoZW1lID0gaW5qZWN0KEFwcFRoZW1lU2VydmljZSk7XHJcblxyXG4gIHJlYWRvbmx5IHRvcFRvYXN0cyA9IGNvbXB1dGVkKCgpID0+XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS50b2FzdHMoKS5maWx0ZXIoKHQpID0+IHQucG9zaXRpb24gPT09ICd0b3AnKSxcclxuICApO1xyXG5cclxuICByZWFkb25seSBib3R0b21Ub2FzdHMgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgdGhpcy50b2FzdFNlcnZpY2UudG9hc3RzKCkuZmlsdGVyKCh0KSA9PiB0LnBvc2l0aW9uID09PSAnYm90dG9tJyksXHJcbiAgKTtcclxuXHJcbiAgZGlzbWlzcyhpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5kaXNtaXNzKGlkKTtcclxuICB9XHJcblxyXG4gIGFjdGlvbihpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5ydW5BY3Rpb24oaWQpO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKHRvcFRvYXN0cygpLmxlbmd0aCA+IDApIHtcclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInRvYXN0LWhvc3QgdG9hc3QtaG9zdC0tdG9wIGFwcC1saWJyYXJ5LXRoZW1lXCJcclxuICAgIFtuZ0NsYXNzXT1cInRoZW1lLnRoZW1lQ2xhc3MoKVwiXHJcbiAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxyXG4gICAgYXJpYS1yZWxldmFudD1cImFkZGl0aW9ucyB0ZXh0XCJcclxuICA+XHJcbiAgICBAZm9yICh0IG9mIHRvcFRvYXN0cygpOyB0cmFjayB0LmlkKSB7XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbbmdDbGFzc109XCJbJ3RvYXN0LWhvc3RfX2l0ZW0nLCAndG9hc3QtaG9zdF9faXRlbS0tJyArIHQudHlwZV1cIlxyXG4gICAgICAgIEB0b2FzdEFuaW1Ub3BcclxuICAgICAgICByb2xlPVwic3RhdHVzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1ob3N0X19ib2R5XCI+XHJcbiAgICAgICAgICBAaWYgKHQudGl0bGUpIHtcclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0b2FzdC1ob3N0X190aXRsZVwiPnt7IHQudGl0bGUgfX08L3A+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInRvYXN0LWhvc3RfX21lc3NhZ2VcIj57eyB0Lm1lc3NhZ2UgfX08L3A+XHJcbiAgICAgICAgICBAaWYgKHQuYWN0aW9uTGFiZWwpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0b2FzdC1ob3N0X19hY3Rpb25cIiAoY2xpY2spPVwiYWN0aW9uKHQuaWQpXCI+XHJcbiAgICAgICAgICAgICAge3sgdC5hY3Rpb25MYWJlbCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwidG9hc3QtaG9zdF9fY2xvc2VcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRmVjaGFyIG5vdGlmaWNhw6fDo28nXCJcclxuICAgICAgICAgIChjbGljayk9XCJkaXNtaXNzKHQuaWQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxufVxyXG5AaWYgKGJvdHRvbVRvYXN0cygpLmxlbmd0aCA+IDApIHtcclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInRvYXN0LWhvc3QgdG9hc3QtaG9zdC0tYm90dG9tIGFwcC1saWJyYXJ5LXRoZW1lXCJcclxuICAgIFtuZ0NsYXNzXT1cInRoZW1lLnRoZW1lQ2xhc3MoKVwiXHJcbiAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxyXG4gICAgYXJpYS1yZWxldmFudD1cImFkZGl0aW9ucyB0ZXh0XCJcclxuICA+XHJcbiAgICBAZm9yICh0IG9mIGJvdHRvbVRvYXN0cygpOyB0cmFjayB0LmlkKSB7XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbbmdDbGFzc109XCJbJ3RvYXN0LWhvc3RfX2l0ZW0nLCAndG9hc3QtaG9zdF9faXRlbS0tJyArIHQudHlwZV1cIlxyXG4gICAgICAgIEB0b2FzdEFuaW1Cb3R0b21cclxuICAgICAgICByb2xlPVwic3RhdHVzXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1ob3N0X19ib2R5XCI+XHJcbiAgICAgICAgICBAaWYgKHQudGl0bGUpIHtcclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0b2FzdC1ob3N0X190aXRsZVwiPnt7IHQudGl0bGUgfX08L3A+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInRvYXN0LWhvc3RfX21lc3NhZ2VcIj57eyB0Lm1lc3NhZ2UgfX08L3A+XHJcbiAgICAgICAgICBAaWYgKHQuYWN0aW9uTGFiZWwpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0b2FzdC1ob3N0X19hY3Rpb25cIiAoY2xpY2spPVwiYWN0aW9uKHQuaWQpXCI+XHJcbiAgICAgICAgICAgICAge3sgdC5hY3Rpb25MYWJlbCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwidG9hc3QtaG9zdF9fY2xvc2VcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInRmVjaGFyIG5vdGlmaWNhw6fDo28nXCJcclxuICAgICAgICAgIChjbGljayk9XCJkaXNtaXNzKHQuaWQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaWFsb2dzL3RvYXN0L3RvYXN0Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVG9hc3RUeXBlID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdpbmZvJztcblxuLyoqIE9uZGUgZW1waWxoYXIgbyB0b2FzdCBuYSB0ZWxhIChjYW50byBzdXBlcmlvciBvdSBpbmZlcmlvciBkaXJlaXRvKS4gKi9cbmV4cG9ydCB0eXBlIFRvYXN0VmVydGljYWxQb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RTaG93T3B0aW9ucyB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHR5cGU/OiBUb2FzdFR5cGU7XG4gIC8qKiBPbWlzc286IGB0b3BgIChjb21wb3J0YW1lbnRvIGFudGVyaW9yKS4gKi9cbiAgcG9zaXRpb24/OiBUb2FzdFZlcnRpY2FsUG9zaXRpb247XG4gIC8qKlxuICAgKiBEdXJhw6fDo28gZW0gbXMuIGAwYCA9IG7Do28gZmVjaGEgYXV0b21hdGljYW1lbnRlIChzw7MgYm90w6NvIGZlY2hhciAvIGHDp8OjbykuXG4gICAqIE9taXNzbzogNTAwMCBtcy5cbiAgICovXG4gIGR1cmF0aW9uTXM/OiBudW1iZXI7XG4gIGFjdGlvbkxhYmVsPzogc3RyaW5nO1xuICBvbkFjdGlvbj86ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9hc3RJbnN0YW5jZSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU6IFRvYXN0VHlwZTtcbiAgcmVhZG9ubHkgZHVyYXRpb25NczogbnVtYmVyO1xuICByZWFkb25seSBhY3Rpb25MYWJlbD86IHN0cmluZztcbiAgcmVhZG9ubHkgcG9zaXRpb246IFRvYXN0VmVydGljYWxQb3NpdGlvbjtcbn1cbiJdfQ==
|