structra-ui 0.1.18 → 0.1.19
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/fesm2022/structra-ui.mjs +326 -326
- package/fesm2022/structra-ui.mjs.map +1 -1
- package/package.json +16 -25
- package/esm2022/app/_utils/date-pt-br.utils.mjs +0 -82
- package/esm2022/app/_utils/decimal-br.utils.mjs +0 -154
- package/esm2022/app/_utils/estados-br.data.mjs +0 -37
- package/esm2022/app/_utils/integer-br.utils.mjs +0 -48
- package/esm2022/app/_utils/integer-value.utils.mjs +0 -19
- package/esm2022/app/_utils/scroll/body-scroll-lock.util.mjs +0 -97
- package/esm2022/app/app-shell/_models/breadcrumb-item.model.mjs +0 -2
- package/esm2022/app/app-shell/app-shell-sidebar-template.directive.mjs +0 -29
- package/esm2022/app/app-shell/app-shell.component.mjs +0 -105
- package/esm2022/app/app-shell/breadcrumb/breadcrumb.component.mjs +0 -18
- package/esm2022/app/app-shell/index.mjs +0 -19
- package/esm2022/app/app-shell/sidebar/app-sidebar-toolbar.directive.mjs +0 -23
- package/esm2022/app/app-shell/sidebar/shell-sidebar-toggle.component.mjs +0 -36
- package/esm2022/app/app-shell/sidebar/sidebar.component.mjs +0 -84
- package/esm2022/app/app-shell/sidebar-reveal.constants.mjs +0 -9
- package/esm2022/app/app-shell/topbar/topbar.component.mjs +0 -14
- package/esm2022/app/app-shell/user-menu/user-menu.component.mjs +0 -52
- package/esm2022/app/buttons/base-button/base-button.component.mjs +0 -97
- package/esm2022/app/buttons/index.mjs +0 -2
- package/esm2022/app/data-display/_models/card-item-view.model.mjs +0 -2
- package/esm2022/app/data-display/_models/data-display.models.mjs +0 -2
- package/esm2022/app/data-display/_models/data-grid-column.model.mjs +0 -2
- package/esm2022/app/data-display/_models/index.mjs +0 -2
- package/esm2022/app/data-display/adaptive-data-view/adaptive-data-view.component.mjs +0 -124
- package/esm2022/app/data-display/card-list/card-list.component.mjs +0 -208
- package/esm2022/app/data-display/dashboard-section/dashboard-section.component.mjs +0 -25
- package/esm2022/app/data-display/data-card/data-card.component.mjs +0 -40
- package/esm2022/app/data-display/data-grid/data-grid-actions-cell-renderer.component.mjs +0 -41
- package/esm2022/app/data-display/data-grid/data-grid.component.mjs +0 -253
- package/esm2022/app/data-display/data-list/data-list.component.mjs +0 -40
- package/esm2022/app/data-display/data-toolbar/data-toolbar.component.mjs +0 -12
- package/esm2022/app/data-display/details-field/details-field.component.mjs +0 -21
- package/esm2022/app/data-display/details-view/details-view.component.mjs +0 -44
- package/esm2022/app/data-display/empty-state/empty-state-overlay.util.mjs +0 -19
- package/esm2022/app/data-display/empty-state/empty-state.component.mjs +0 -30
- package/esm2022/app/data-display/index.mjs +0 -19
- package/esm2022/app/data-display/list-item/list-item.component.mjs +0 -59
- package/esm2022/app/data-display/stat-card/stat-card.component.mjs +0 -59
- package/esm2022/app/data-display/status-badge/status-badge.component.mjs +0 -41
- package/esm2022/app/data-display/table-empty-state/table-empty-state.component.mjs +0 -31
- package/esm2022/app/data-display/table-toolbar/table-toolbar.component.mjs +0 -22
- package/esm2022/app/dialogs/_models/lib-dialog-size.model.mjs +0 -8
- package/esm2022/app/dialogs/_utils/app-lib-light-block-scroll-strategy.mjs +0 -22
- package/esm2022/app/dialogs/_utils/lib-dialog-panel-classes.mjs +0 -6
- package/esm2022/app/dialogs/app-dialog/app-dialog.component.mjs +0 -200
- package/esm2022/app/dialogs/app-dialog/dialog-footer.directive.mjs +0 -15
- package/esm2022/app/dialogs/confirm-dialog/confirm-dialog-data.model.mjs +0 -2
- package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.component.mjs +0 -36
- package/esm2022/app/dialogs/confirm-dialog/confirm-dialog.service.mjs +0 -47
- package/esm2022/app/dialogs/index.mjs +0 -12
- package/esm2022/app/dialogs/loading-dialog/loading-dialog-data.model.mjs +0 -2
- package/esm2022/app/dialogs/loading-dialog/loading-dialog.component.mjs +0 -19
- package/esm2022/app/dialogs/loading-dialog/loading-dialog.service.mjs +0 -38
- package/esm2022/app/dialogs/toast/toast-host.component.mjs +0 -65
- package/esm2022/app/dialogs/toast/toast.models.mjs +0 -2
- package/esm2022/app/dialogs/toast/toast.service.mjs +0 -76
- package/esm2022/app/fields/checkbox-fields/_base/boolean-field.directive.mjs +0 -158
- package/esm2022/app/fields/checkbox-fields/checkbox-field/checkbox-field.component.mjs +0 -36
- package/esm2022/app/fields/checkbox-fields/index.mjs +0 -4
- package/esm2022/app/fields/checkbox-fields/switch-field/switch-field.component.mjs +0 -35
- package/esm2022/app/fields/dropdown-fields/_base/dropdown-base/dropdown-base.component.mjs +0 -117
- package/esm2022/app/fields/dropdown-fields/_base/dropdown-multi-option-field.base.mjs +0 -152
- package/esm2022/app/fields/dropdown-fields/_base/dropdown-option-field.base.mjs +0 -149
- package/esm2022/app/fields/dropdown-fields/_base/dropdown-trigger-blur.util.mjs +0 -32
- package/esm2022/app/fields/dropdown-fields/_models/dropdown-list-bindings.model.mjs +0 -2
- package/esm2022/app/fields/dropdown-fields/_models/dropdown-search-page-requested.model.mjs +0 -2
- package/esm2022/app/fields/dropdown-fields/_models/index.mjs +0 -2
- package/esm2022/app/fields/dropdown-fields/_models/select-option.model.mjs +0 -2
- package/esm2022/app/fields/dropdown-fields/_models/select-pagination.model.mjs +0 -2
- package/esm2022/app/fields/dropdown-fields/dropdown-search-field/dropdown-search-field.component.mjs +0 -520
- package/esm2022/app/fields/dropdown-fields/index.mjs +0 -7
- package/esm2022/app/fields/dropdown-fields/multiselect-field/multiselect-field.component.mjs +0 -379
- package/esm2022/app/fields/dropdown-fields/select-field/select-field.component.mjs +0 -359
- package/esm2022/app/fields/input-fields/_base/base-field.component.mjs +0 -151
- package/esm2022/app/fields/input-fields/_base/base-field.directive.mjs +0 -224
- package/esm2022/app/fields/input-fields/_base/masked-text-field.base.mjs +0 -135
- package/esm2022/app/fields/input-fields/_base/ng-control-field.directive.mjs +0 -127
- package/esm2022/app/fields/input-fields/_models/field-common-inputs.model.mjs +0 -2
- package/esm2022/app/fields/input-fields/_models/index.mjs +0 -2
- package/esm2022/app/fields/input-fields/_utils/mask-complete.validators.mjs +0 -61
- package/esm2022/app/fields/input-fields/_utils/mask-format.utils.mjs +0 -40
- package/esm2022/app/fields/input-fields/cep-field/cep-field.component.mjs +0 -48
- package/esm2022/app/fields/input-fields/cpf-cnpj-field/cpf-cnpj-field.component.mjs +0 -61
- package/esm2022/app/fields/input-fields/date-field/date-field.component.mjs +0 -147
- package/esm2022/app/fields/input-fields/decimal-field/decimal-field.component.mjs +0 -166
- package/esm2022/app/fields/input-fields/index.mjs +0 -22
- package/esm2022/app/fields/input-fields/input-mask-field/input-mask-field.component.mjs +0 -52
- package/esm2022/app/fields/input-fields/integer-field/integer-field.component.mjs +0 -143
- package/esm2022/app/fields/input-fields/password-field/password-field.component.mjs +0 -130
- package/esm2022/app/fields/input-fields/phone-field/phone-field.component.mjs +0 -66
- package/esm2022/app/fields/input-fields/text-field/text-field.component.mjs +0 -90
- package/esm2022/app/fields/input-fields/textarea-field/textarea-field.component.mjs +0 -125
- package/esm2022/app/form-layout/_models/form-layout.model.mjs +0 -48
- package/esm2022/app/form-layout/_models/form-tabs.model.mjs +0 -2
- package/esm2022/app/form-layout/_models/index.mjs +0 -2
- package/esm2022/app/form-layout/_models/validation-summary.model.mjs +0 -2
- package/esm2022/app/form-layout/form-actions/form-actions.component.mjs +0 -55
- package/esm2022/app/form-layout/form-col/form-col.component.mjs +0 -76
- package/esm2022/app/form-layout/form-group/form-group.component.mjs +0 -358
- package/esm2022/app/form-layout/form-group/form-path.utils.mjs +0 -65
- package/esm2022/app/form-layout/form-group/form-root-invalid-ui-refresh.util.mjs +0 -54
- package/esm2022/app/form-layout/form-row/form-row.component.mjs +0 -49
- package/esm2022/app/form-layout/form-section/form-section.component.mjs +0 -43
- package/esm2022/app/form-layout/form-tab/form-tab.component.mjs +0 -67
- package/esm2022/app/form-layout/form-tabs/form-tabs.component.mjs +0 -126
- package/esm2022/app/form-layout/index.mjs +0 -14
- package/esm2022/app/form-layout/layout-stack/layout-stack.component.mjs +0 -56
- package/esm2022/app/form-layout/validation-summary/validation-summary.component.mjs +0 -343
- package/esm2022/app/loading/skeleton-loading/index.mjs +0 -7
- package/esm2022/app/loading/skeleton-loading/skeleton-block/skeleton-block.component.mjs +0 -43
- package/esm2022/app/loading/skeleton-loading/skeleton-card/skeleton-card.component.mjs +0 -23
- package/esm2022/app/loading/skeleton-loading/skeleton-field-shell/skeleton-field-shell.component.mjs +0 -34
- package/esm2022/app/loading/skeleton-loading/skeleton-list/skeleton-list.component.mjs +0 -38
- package/esm2022/app/loading/skeleton-loading/skeleton-table/skeleton-table.component.mjs +0 -37
- package/esm2022/app/loading/skeleton-loading/skeleton-text/skeleton-text.component.mjs +0 -45
- package/esm2022/app/menus/_models/drawer-side.model.mjs +0 -8
- package/esm2022/app/menus/_models/drawer-size.model.mjs +0 -8
- package/esm2022/app/menus/_models/menu-dropdown-placement.model.mjs +0 -12
- package/esm2022/app/menus/_models/menu-item.model.mjs +0 -6
- package/esm2022/app/menus/_utils/menu-connected-positions.util.mjs +0 -41
- package/esm2022/app/menus/_utils/menu-rows.util.mjs +0 -39
- package/esm2022/app/menus/_utils/submenu-connected-positions.util.mjs +0 -23
- package/esm2022/app/menus/action-menu/action-menu.component.mjs +0 -48
- package/esm2022/app/menus/context-menu/context-menu.component.mjs +0 -112
- package/esm2022/app/menus/drawer/drawer.component.mjs +0 -142
- package/esm2022/app/menus/dropdown-menu/dropdown-menu.component.mjs +0 -99
- package/esm2022/app/menus/index.mjs +0 -11
- package/esm2022/app/menus/menu-divider/menu-divider.component.mjs +0 -14
- package/esm2022/app/menus/menu-group/menu-group.component.mjs +0 -32
- package/esm2022/app/menus/menu-list/menu-list.component.mjs +0 -399
- package/esm2022/app/overlay/_models/overlay-placement.model.mjs +0 -11
- package/esm2022/app/overlay/_utils/anchored-overlay-positions.util.mjs +0 -84
- package/esm2022/app/overlay/anchored-overlay/anchored-overlay.component.mjs +0 -121
- package/esm2022/app/overlay/index.mjs +0 -21
- package/esm2022/app/overlay/popover/popover-body-template.directive.mjs +0 -17
- package/esm2022/app/overlay/popover/popover-footer-template.directive.mjs +0 -17
- package/esm2022/app/overlay/popover/popover-trigger.directive.mjs +0 -15
- package/esm2022/app/overlay/popover/popover.component.mjs +0 -93
- package/esm2022/app/overlay/tooltip/tooltip-panel-template.directive.mjs +0 -20
- package/esm2022/app/overlay/tooltip/tooltip.component.mjs +0 -118
- package/esm2022/app/theme/app-theme.service.mjs +0 -49
- package/esm2022/app/theme/index.mjs +0 -2
- package/esm2022/structra-public-api.mjs +0 -18
- package/esm2022/structra-ui.mjs +0 -5
- package/esm2022/structra-version.mjs +0 -3
- package/index.d.ts +0 -5
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
|
2
|
-
/** Resolve `a.b.c` a partir da raiz do formulário (normalmente o `FormGroup` do `<form [formGroup]>`). */
|
|
3
|
-
export function resolveControlAtPath(root, path) {
|
|
4
|
-
const segments = path
|
|
5
|
-
.split('.')
|
|
6
|
-
.map((s) => s.trim())
|
|
7
|
-
.filter((s) => s.length > 0);
|
|
8
|
-
let current = root;
|
|
9
|
-
for (const seg of segments) {
|
|
10
|
-
if (current instanceof FormGroup) {
|
|
11
|
-
const childCtrl = current.get(seg);
|
|
12
|
-
if (childCtrl === null) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
current = childCtrl;
|
|
16
|
-
}
|
|
17
|
-
else if (current instanceof FormArray && /^\d+$/.test(seg)) {
|
|
18
|
-
current = current.at(Number(seg));
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return current;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Há erro “visível” na subárvore: folho inválido e (`dirty` ou `formSubmitted`).
|
|
28
|
-
* `formSubmitted` deve incluir o equivalente a «formulário já enviado» (ex.: `FormGroupDirective.submitted`
|
|
29
|
-
* ou passo activo após o evento `submit` do `<form>` em `app-form-group`), para acender o ícone após
|
|
30
|
-
* «Salvar» + `markAllAsTouched()` sem exigir `dirty` em cada campo.
|
|
31
|
-
* Não usar `touched` sozinho: Tab/blur marca touched sem alterar valor e não deve acender o ícone.
|
|
32
|
-
*/
|
|
33
|
-
export function subtreeHasVisibleInvalid(control, formSubmitted = false) {
|
|
34
|
-
if (control instanceof FormControl) {
|
|
35
|
-
return !!(control.invalid && (control.dirty || formSubmitted));
|
|
36
|
-
}
|
|
37
|
-
if (control instanceof FormGroup) {
|
|
38
|
-
for (const key of Object.keys(control.controls)) {
|
|
39
|
-
const ch = control.controls[key];
|
|
40
|
-
if (ch && subtreeHasVisibleInvalid(ch, formSubmitted)) {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
if (control instanceof FormArray) {
|
|
47
|
-
for (let i = 0; i < control.length; i++) {
|
|
48
|
-
const ch = control.at(i);
|
|
49
|
-
if (ch && subtreeHasVisibleInvalid(ch, formSubmitted)) {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Critério alinhado ao ícone automático de `app-form-group` com `formGroupPath`
|
|
59
|
-
* (e reutilizável para aviso por separador, ex. `app-form-tab` + `formGroupName`).
|
|
60
|
-
*/
|
|
61
|
-
export function sectionHasVisibleInvalid(root, path, formSubmitted = false) {
|
|
62
|
-
const c = resolveControlAtPath(root, path);
|
|
63
|
-
return c ? subtreeHasVisibleInvalid(c, formSubmitted) : false;
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1wYXRoLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9mb3JtLWxheW91dC9mb3JtLWdyb3VwL2Zvcm0tcGF0aC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW1CLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsMEdBQTBHO0FBQzFHLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsSUFBcUIsRUFDckIsSUFBWTtJQUVaLE1BQU0sUUFBUSxHQUFHLElBQUk7U0FDbEIsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3BCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixJQUFJLE9BQU8sR0FBMkIsSUFBSSxDQUFDO0lBQzNDLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTSxTQUFTLEdBQTJCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0QsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDdEIsQ0FBQzthQUFNLElBQUksT0FBTyxZQUFZLFNBQVMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsT0FBd0IsRUFDeEIsYUFBYSxHQUFHLEtBQUs7SUFFckIsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDRCxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDaEQsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxJQUFJLEVBQUUsSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksT0FBTyxZQUFZLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDeEMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLEVBQUUsSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsSUFBcUIsRUFDckIsSUFBWSxFQUNaLGFBQWEsR0FBRyxLQUFLO0lBRXJCLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDaEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqIFJlc29sdmUgYGEuYi5jYCBhIHBhcnRpciBkYSByYWl6IGRvIGZvcm11bMOhcmlvIChub3JtYWxtZW50ZSBvIGBGb3JtR3JvdXBgIGRvIGA8Zm9ybSBbZm9ybUdyb3VwXT5gKS4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb250cm9sQXRQYXRoKFxyXG4gIHJvb3Q6IEFic3RyYWN0Q29udHJvbCxcclxuICBwYXRoOiBzdHJpbmcsXHJcbik6IEFic3RyYWN0Q29udHJvbCB8IG51bGwge1xyXG4gIGNvbnN0IHNlZ21lbnRzID0gcGF0aFxyXG4gICAgLnNwbGl0KCcuJylcclxuICAgIC5tYXAoKHMpID0+IHMudHJpbSgpKVxyXG4gICAgLmZpbHRlcigocykgPT4gcy5sZW5ndGggPiAwKTtcclxuICBsZXQgY3VycmVudDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IHJvb3Q7XHJcbiAgZm9yIChjb25zdCBzZWcgb2Ygc2VnbWVudHMpIHtcclxuICAgIGlmIChjdXJyZW50IGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkQ3RybDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IGN1cnJlbnQuZ2V0KHNlZyk7XHJcbiAgICAgIGlmIChjaGlsZEN0cmwgPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50ID0gY2hpbGRDdHJsO1xyXG4gICAgfSBlbHNlIGlmIChjdXJyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5ICYmIC9eXFxkKyQvLnRlc3Qoc2VnKSkge1xyXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5hdChOdW1iZXIoc2VnKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIw6EgZXJybyDigJx2aXPDrXZlbOKAnSBuYSBzdWLDoXJ2b3JlOiBmb2xobyBpbnbDoWxpZG8gZSAoYGRpcnR5YCBvdSBgZm9ybVN1Ym1pdHRlZGApLlxyXG4gKiBgZm9ybVN1Ym1pdHRlZGAgZGV2ZSBpbmNsdWlyIG8gZXF1aXZhbGVudGUgYSDCq2Zvcm11bMOhcmlvIGrDoSBlbnZpYWRvwrsgKGV4LjogYEZvcm1Hcm91cERpcmVjdGl2ZS5zdWJtaXR0ZWRgXHJcbiAqIG91IHBhc3NvIGFjdGl2byBhcMOzcyBvIGV2ZW50byBgc3VibWl0YCBkbyBgPGZvcm0+YCBlbSBgYXBwLWZvcm0tZ3JvdXBgKSwgcGFyYSBhY2VuZGVyIG8gw61jb25lIGFww7NzXHJcbiAqIMKrU2FsdmFywrsgKyBgbWFya0FsbEFzVG91Y2hlZCgpYCBzZW0gZXhpZ2lyIGBkaXJ0eWAgZW0gY2FkYSBjYW1wby5cclxuICogTsOjbyB1c2FyIGB0b3VjaGVkYCBzb3ppbmhvOiBUYWIvYmx1ciBtYXJjYSB0b3VjaGVkIHNlbSBhbHRlcmFyIHZhbG9yIGUgbsOjbyBkZXZlIGFjZW5kZXIgbyDDrWNvbmUuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3VidHJlZUhhc1Zpc2libGVJbnZhbGlkKFxyXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICBmb3JtU3VibWl0dGVkID0gZmFsc2UsXHJcbik6IGJvb2xlYW4ge1xyXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcclxuICAgIHJldHVybiAhIShjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgZm9ybVN1Ym1pdHRlZCkpO1xyXG4gIH1cclxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29udHJvbC5jb250cm9scykpIHtcclxuICAgICAgY29uc3QgY2ggPSBjb250cm9sLmNvbnRyb2xzW2tleV07XHJcbiAgICAgIGlmIChjaCAmJiBzdWJ0cmVlSGFzVmlzaWJsZUludmFsaWQoY2gsIGZvcm1TdWJtaXR0ZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHJvbC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBjaCA9IGNvbnRyb2wuYXQoaSk7XHJcbiAgICAgIGlmIChjaCAmJiBzdWJ0cmVlSGFzVmlzaWJsZUludmFsaWQoY2gsIGZvcm1TdWJtaXR0ZWQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JpdMOpcmlvIGFsaW5oYWRvIGFvIMOtY29uZSBhdXRvbcOhdGljbyBkZSBgYXBwLWZvcm0tZ3JvdXBgIGNvbSBgZm9ybUdyb3VwUGF0aGBcclxuICogKGUgcmV1dGlsaXrDoXZlbCBwYXJhIGF2aXNvIHBvciBzZXBhcmFkb3IsIGV4LiBgYXBwLWZvcm0tdGFiYCArIGBmb3JtR3JvdXBOYW1lYCkuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc2VjdGlvbkhhc1Zpc2libGVJbnZhbGlkKFxyXG4gIHJvb3Q6IEFic3RyYWN0Q29udHJvbCxcclxuICBwYXRoOiBzdHJpbmcsXHJcbiAgZm9ybVN1Ym1pdHRlZCA9IGZhbHNlLFxyXG4pOiBib29sZWFuIHtcclxuICBjb25zdCBjID0gcmVzb2x2ZUNvbnRyb2xBdFBhdGgocm9vdCwgcGF0aCk7XHJcbiAgcmV0dXJuIGMgPyBzdWJ0cmVlSGFzVmlzaWJsZUludmFsaWQoYywgZm9ybVN1Ym1pdHRlZCkgOiBmYWxzZTtcclxufVxyXG4iXX0=
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { fromEvent, merge, timer } from 'rxjs';
|
|
2
|
-
import { debounceTime, switchMap } from 'rxjs/operators';
|
|
3
|
-
/**
|
|
4
|
-
* Um `FormGroup` raiz partilhado por vários `app-form-group` com `formGroupPath`: uma única
|
|
5
|
-
* subscrição agregada evita `merge` duplicados e garante `markForCheck` em todos os anfitriões.
|
|
6
|
-
*
|
|
7
|
-
* Usa-se só `valueChanges` / `statusChanges` do **raiz**: ao alterar um filho, o Angular propaga
|
|
8
|
-
* `updateValueAndValidity` para os ascendentes e o raiz volta a emitir `statusChanges` / `valueChanges`
|
|
9
|
-
* (comportamento de {@link AbstractControl#updateValueAndValidity}). Subscrever cada folho
|
|
10
|
-
* multiplicava observables (dezenas por formulário) e deixava o runtime pesado em formulários grandes.
|
|
11
|
-
*/
|
|
12
|
-
const rootRefreshRegistry = new WeakMap();
|
|
13
|
-
function markAllCdrs(entry) {
|
|
14
|
-
for (const c of entry.cdRefs) {
|
|
15
|
-
c.markForCheck();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Mantém ícones / getters que dependem do estado reactivo actualizados com OnPush.
|
|
20
|
-
* `markAllAsTouched()` pode não emitir `valueChanges` no raiz; o `submit` do `<form>` (após um tick)
|
|
21
|
-
* cobre o caso de submissão — alinhado a {@link FormGroupComponent} `setupFormPathInvalidTracking`.
|
|
22
|
-
*/
|
|
23
|
-
export function subscribeMarkForCheckOnInvalidUiRefresh(rootCtrl, hostElement, cdr, destroyRef) {
|
|
24
|
-
let entry = rootRefreshRegistry.get(rootCtrl);
|
|
25
|
-
if (!entry) {
|
|
26
|
-
entry = { cdRefs: new Set(), sub: null };
|
|
27
|
-
rootRefreshRegistry.set(rootCtrl, entry);
|
|
28
|
-
}
|
|
29
|
-
entry.cdRefs.add(cdr);
|
|
30
|
-
if (!entry.sub) {
|
|
31
|
-
const streams = [rootCtrl.valueChanges, rootCtrl.statusChanges];
|
|
32
|
-
const formEl = hostElement.closest('form') ?? hostElement.querySelector('form');
|
|
33
|
-
if (formEl) {
|
|
34
|
-
streams.push(fromEvent(formEl, 'submit').pipe(switchMap(() => timer(0))));
|
|
35
|
-
}
|
|
36
|
-
/** Agrupa rajadas síncronas (ex.: um `patchValue` que dispara valor + estado no mesmo turno). */
|
|
37
|
-
entry.sub = merge(...streams)
|
|
38
|
-
.pipe(debounceTime(0))
|
|
39
|
-
.subscribe(() => markAllCdrs(entry));
|
|
40
|
-
}
|
|
41
|
-
destroyRef.onDestroy(() => {
|
|
42
|
-
const e = rootRefreshRegistry.get(rootCtrl);
|
|
43
|
-
if (!e) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
e.cdRefs.delete(cdr);
|
|
47
|
-
if (e.cdRefs.size === 0) {
|
|
48
|
-
e.sub?.unsubscribe();
|
|
49
|
-
e.sub = null;
|
|
50
|
-
rootRefreshRegistry.delete(rootCtrl);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yb290LWludmFsaWQtdWktcmVmcmVzaC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9mb3JtLWxheW91dC9mb3JtLWdyb3VwL2Zvcm0tcm9vdC1pbnZhbGlkLXVpLXJlZnJlc2gudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQTRCLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPekQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLG1CQUFtQixHQUFHLElBQUksT0FBTyxFQUFrQyxDQUFDO0FBRTFFLFNBQVMsV0FBVyxDQUFDLEtBQW9CO0lBQ3ZDLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsdUNBQXVDLENBQ3JELFFBQXlCLEVBQ3pCLFdBQXdCLEVBQ3hCLEdBQXNCLEVBQ3RCLFVBQXNCO0lBRXRCLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDekMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUEwQixDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZGLE1BQU0sTUFBTSxHQUNWLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FDVixTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDNUQsQ0FBQztRQUNKLENBQUM7UUFFRCxpR0FBaUc7UUFDakcsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQU0sQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxPQUFPO1FBQ1QsQ0FBQztRQUNELENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztZQUNiLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERlc3Ryb3lSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBtZXJnZSwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG50eXBlIFJlZ2lzdHJ5RW50cnkgPSB7XG4gIGNkUmVmczogU2V0PENoYW5nZURldGVjdG9yUmVmPjtcbiAgc3ViOiBTdWJzY3JpcHRpb24gfCBudWxsO1xufTtcblxuLyoqXG4gKiBVbSBgRm9ybUdyb3VwYCByYWl6IHBhcnRpbGhhZG8gcG9yIHbDoXJpb3MgYGFwcC1mb3JtLWdyb3VwYCBjb20gYGZvcm1Hcm91cFBhdGhgOiB1bWEgw7puaWNhXG4gKiBzdWJzY3Jpw6fDo28gYWdyZWdhZGEgZXZpdGEgYG1lcmdlYCBkdXBsaWNhZG9zIGUgZ2FyYW50ZSBgbWFya0ZvckNoZWNrYCBlbSB0b2RvcyBvcyBhbmZpdHJpw7Vlcy5cbiAqXG4gKiBVc2Etc2Ugc8OzIGB2YWx1ZUNoYW5nZXNgIC8gYHN0YXR1c0NoYW5nZXNgIGRvICoqcmFpeioqOiBhbyBhbHRlcmFyIHVtIGZpbGhvLCBvIEFuZ3VsYXIgcHJvcGFnYVxuICogYHVwZGF0ZVZhbHVlQW5kVmFsaWRpdHlgIHBhcmEgb3MgYXNjZW5kZW50ZXMgZSBvIHJhaXogdm9sdGEgYSBlbWl0aXIgYHN0YXR1c0NoYW5nZXNgIC8gYHZhbHVlQ2hhbmdlc2BcbiAqIChjb21wb3J0YW1lbnRvIGRlIHtAbGluayBBYnN0cmFjdENvbnRyb2wjdXBkYXRlVmFsdWVBbmRWYWxpZGl0eX0pLiBTdWJzY3JldmVyIGNhZGEgZm9saG9cbiAqIG11bHRpcGxpY2F2YSBvYnNlcnZhYmxlcyAoZGV6ZW5hcyBwb3IgZm9ybXVsw6FyaW8pIGUgZGVpeGF2YSBvIHJ1bnRpbWUgcGVzYWRvIGVtIGZvcm11bMOhcmlvcyBncmFuZGVzLlxuICovXG5jb25zdCByb290UmVmcmVzaFJlZ2lzdHJ5ID0gbmV3IFdlYWtNYXA8QWJzdHJhY3RDb250cm9sLCBSZWdpc3RyeUVudHJ5PigpO1xuXG5mdW5jdGlvbiBtYXJrQWxsQ2RycyhlbnRyeTogUmVnaXN0cnlFbnRyeSk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGMgb2YgZW50cnkuY2RSZWZzKSB7XG4gICAgYy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuXG4vKipcbiAqIE1hbnTDqW0gw61jb25lcyAvIGdldHRlcnMgcXVlIGRlcGVuZGVtIGRvIGVzdGFkbyByZWFjdGl2byBhY3R1YWxpemFkb3MgY29tIE9uUHVzaC5cbiAqIGBtYXJrQWxsQXNUb3VjaGVkKClgIHBvZGUgbsOjbyBlbWl0aXIgYHZhbHVlQ2hhbmdlc2Agbm8gcmFpejsgbyBgc3VibWl0YCBkbyBgPGZvcm0+YCAoYXDDs3MgdW0gdGljaylcbiAqIGNvYnJlIG8gY2FzbyBkZSBzdWJtaXNzw6NvIOKAlCBhbGluaGFkbyBhIHtAbGluayBGb3JtR3JvdXBDb21wb25lbnR9IGBzZXR1cEZvcm1QYXRoSW52YWxpZFRyYWNraW5nYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZU1hcmtGb3JDaGVja09uSW52YWxpZFVpUmVmcmVzaChcbiAgcm9vdEN0cmw6IEFic3RyYWN0Q29udHJvbCxcbiAgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuKTogdm9pZCB7XG4gIGxldCBlbnRyeSA9IHJvb3RSZWZyZXNoUmVnaXN0cnkuZ2V0KHJvb3RDdHJsKTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIGVudHJ5ID0geyBjZFJlZnM6IG5ldyBTZXQoKSwgc3ViOiBudWxsIH07XG4gICAgcm9vdFJlZnJlc2hSZWdpc3RyeS5zZXQocm9vdEN0cmwsIGVudHJ5KTtcbiAgfVxuICBlbnRyeS5jZFJlZnMuYWRkKGNkcik7XG5cbiAgaWYgKCFlbnRyeS5zdWIpIHtcbiAgICBjb25zdCBzdHJlYW1zOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSBbcm9vdEN0cmwudmFsdWVDaGFuZ2VzLCByb290Q3RybC5zdGF0dXNDaGFuZ2VzXTtcblxuICAgIGNvbnN0IGZvcm1FbCA9XG4gICAgICBob3N0RWxlbWVudC5jbG9zZXN0KCdmb3JtJykgPz8gaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcignZm9ybScpO1xuICAgIGlmIChmb3JtRWwpIHtcbiAgICAgIHN0cmVhbXMucHVzaChcbiAgICAgICAgZnJvbUV2ZW50KGZvcm1FbCwgJ3N1Ym1pdCcpLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRpbWVyKDApKSksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKiBBZ3J1cGEgcmFqYWRhcyBzw61uY3JvbmFzIChleC46IHVtIGBwYXRjaFZhbHVlYCBxdWUgZGlzcGFyYSB2YWxvciArIGVzdGFkbyBubyBtZXNtbyB0dXJubykuICovXG4gICAgZW50cnkuc3ViID0gbWVyZ2UoLi4uc3RyZWFtcylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gbWFya0FsbENkcnMoZW50cnkhKSk7XG4gIH1cblxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgY29uc3QgZSA9IHJvb3RSZWZyZXNoUmVnaXN0cnkuZ2V0KHJvb3RDdHJsKTtcbiAgICBpZiAoIWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZS5jZFJlZnMuZGVsZXRlKGNkcik7XG4gICAgaWYgKGUuY2RSZWZzLnNpemUgPT09IDApIHtcbiAgICAgIGUuc3ViPy51bnN1YnNjcmliZSgpO1xuICAgICAgZS5zdWIgPSBudWxsO1xuICAgICAgcm9vdFJlZnJlc2hSZWdpc3RyeS5kZWxldGUocm9vdEN0cmwpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, booleanAttribute, } from '@angular/core';
|
|
2
|
-
import { FormRowAlign, FormRowGap, FormRowJustify } from '../_models/form-layout.model';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class FormRowComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.gap = FormRowGap.Md;
|
|
7
|
-
this.align = FormRowAlign.Stretch;
|
|
8
|
-
this.justify = FormRowJustify.Start;
|
|
9
|
-
this.wrap = true;
|
|
10
|
-
this.stackOnMobile = true;
|
|
11
|
-
}
|
|
12
|
-
get hostClass() {
|
|
13
|
-
const parts = [
|
|
14
|
-
'form-row',
|
|
15
|
-
`form-row--gap-${this.gap}`,
|
|
16
|
-
`form-row--align-${this.align}`,
|
|
17
|
-
`form-row--justify-${this.justify}`,
|
|
18
|
-
];
|
|
19
|
-
if (this.wrap) {
|
|
20
|
-
parts.push('form-row--wrap');
|
|
21
|
-
}
|
|
22
|
-
if (this.stackOnMobile) {
|
|
23
|
-
parts.push('form-row--stack-mobile');
|
|
24
|
-
}
|
|
25
|
-
return parts.join(' ');
|
|
26
|
-
}
|
|
27
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: FormRowComponent, isStandalone: true, selector: "app-form-row", inputs: { gap: "gap", align: "align", justify: "justify", wrap: ["wrap", "wrap", booleanAttribute], stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"form-row__grid\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-row__grid{display:grid;width:100%;min-width:0;box-sizing:border-box;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch}:host(.form-row--gap-xs) .form-row__grid{gap:.35rem .5rem}:host(.form-row--gap-sm) .form-row__grid{gap:.5rem .75rem}:host(.form-row--gap-md) .form-row__grid{gap:.75rem 1.25rem}:host(.form-row--gap-lg) .form-row__grid{gap:1rem 1.5rem}:host(.form-row--align-start) .form-row__grid{align-items:start}:host(.form-row--align-center) .form-row__grid{align-items:center}:host(.form-row--align-end) .form-row__grid{align-items:end}:host(.form-row--align-stretch) .form-row__grid{align-items:stretch}:host(.form-row--justify-start) .form-row__grid{justify-items:stretch;justify-content:start}:host(.form-row--justify-center) .form-row__grid{justify-content:center}:host(.form-row--justify-end) .form-row__grid{justify-content:end}:host(.form-row--justify-between) .form-row__grid{justify-content:space-between}@media (max-width: 39.98rem){:host(.form-row--stack-mobile) .form-row__grid{grid-template-columns:1fr}:host(.form-row--stack-mobile) .form-row__grid ::ng-deep>app-form-col{grid-column:1/-1!important}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29
|
-
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormRowComponent, decorators: [{
|
|
31
|
-
type: Component,
|
|
32
|
-
args: [{ selector: 'app-form-row', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-row__grid\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-row__grid{display:grid;width:100%;min-width:0;box-sizing:border-box;grid-template-columns:repeat(12,minmax(0,1fr));align-items:stretch}:host(.form-row--gap-xs) .form-row__grid{gap:.35rem .5rem}:host(.form-row--gap-sm) .form-row__grid{gap:.5rem .75rem}:host(.form-row--gap-md) .form-row__grid{gap:.75rem 1.25rem}:host(.form-row--gap-lg) .form-row__grid{gap:1rem 1.5rem}:host(.form-row--align-start) .form-row__grid{align-items:start}:host(.form-row--align-center) .form-row__grid{align-items:center}:host(.form-row--align-end) .form-row__grid{align-items:end}:host(.form-row--align-stretch) .form-row__grid{align-items:stretch}:host(.form-row--justify-start) .form-row__grid{justify-items:stretch;justify-content:start}:host(.form-row--justify-center) .form-row__grid{justify-content:center}:host(.form-row--justify-end) .form-row__grid{justify-content:end}:host(.form-row--justify-between) .form-row__grid{justify-content:space-between}@media (max-width: 39.98rem){:host(.form-row--stack-mobile) .form-row__grid{grid-template-columns:1fr}:host(.form-row--stack-mobile) .form-row__grid ::ng-deep>app-form-col{grid-column:1/-1!important}}\n"] }]
|
|
33
|
-
}], propDecorators: { gap: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}], align: [{
|
|
36
|
-
type: Input
|
|
37
|
-
}], justify: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}], wrap: [{
|
|
40
|
-
type: Input,
|
|
41
|
-
args: [{ transform: booleanAttribute }]
|
|
42
|
-
}], stackOnMobile: [{
|
|
43
|
-
type: Input,
|
|
44
|
-
args: [{ transform: booleanAttribute }]
|
|
45
|
-
}], hostClass: [{
|
|
46
|
-
type: HostBinding,
|
|
47
|
-
args: ['class']
|
|
48
|
-
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9mb3JtLWxheW91dC9mb3JtLXJvdy9mb3JtLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2Zvcm0tcm93L2Zvcm0tcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBQ0wsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQVN4RixNQUFNLE9BQU8sZ0JBQWdCO0lBUDdCO1FBUVcsUUFBRyxHQUFlLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFpQixZQUFZLENBQUMsT0FBTyxDQUFDO1FBQzNDLFlBQU8sR0FBbUIsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUNoQixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osa0JBQWEsR0FBRyxJQUFJLENBQUM7S0FrQjlEO0lBaEJDLElBQ0ksU0FBUztRQUNYLE1BQU0sS0FBSyxHQUFHO1lBQ1osVUFBVTtZQUNWLGlCQUFpQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzNCLG1CQUFtQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQy9CLHFCQUFxQixJQUFJLENBQUMsT0FBTyxFQUFFO1NBQ3BDLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQzsrR0F0QlUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsaUlBSVAsZ0JBQWdCLHFEQUNoQixnQkFBZ0Isa0ZDckJ0QyxrRUFHQTs7NEZEYWEsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNrQyxJQUFJO3NCQUEzQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBR2xDLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybVJvd0FsaWduLCBGb3JtUm93R2FwLCBGb3JtUm93SnVzdGlmeSB9IGZyb20gJy4uL19tb2RlbHMvZm9ybS1sYXlvdXQubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS1yb3cnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tcm93LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZm9ybS1yb3cuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVJvd0NvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZ2FwOiBGb3JtUm93R2FwID0gRm9ybVJvd0dhcC5NZDtcclxuICBASW5wdXQoKSBhbGlnbjogRm9ybVJvd0FsaWduID0gRm9ybVJvd0FsaWduLlN0cmV0Y2g7XHJcbiAgQElucHV0KCkganVzdGlmeTogRm9ybVJvd0p1c3RpZnkgPSBGb3JtUm93SnVzdGlmeS5TdGFydDtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgd3JhcCA9IHRydWU7XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0YWNrT25Nb2JpbGUgPSB0cnVlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwYXJ0cyA9IFtcclxuICAgICAgJ2Zvcm0tcm93JyxcclxuICAgICAgYGZvcm0tcm93LS1nYXAtJHt0aGlzLmdhcH1gLFxyXG4gICAgICBgZm9ybS1yb3ctLWFsaWduLSR7dGhpcy5hbGlnbn1gLFxyXG4gICAgICBgZm9ybS1yb3ctLWp1c3RpZnktJHt0aGlzLmp1c3RpZnl9YCxcclxuICAgIF07XHJcbiAgICBpZiAodGhpcy53cmFwKSB7XHJcbiAgICAgIHBhcnRzLnB1c2goJ2Zvcm0tcm93LS13cmFwJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zdGFja09uTW9iaWxlKSB7XHJcbiAgICAgIHBhcnRzLnB1c2goJ2Zvcm0tcm93LS1zdGFjay1tb2JpbGUnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLXJvd19fZ3JpZFwiPlxyXG4gIDxuZy1jb250ZW50IC8+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, booleanAttribute, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class FormSectionComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.subtitulo = '';
|
|
6
|
-
this.dense = false;
|
|
7
|
-
this.withDivider = true;
|
|
8
|
-
}
|
|
9
|
-
get hostClass() {
|
|
10
|
-
const parts = ['form-section'];
|
|
11
|
-
if (this.dense) {
|
|
12
|
-
parts.push('form-section--dense');
|
|
13
|
-
}
|
|
14
|
-
if (this.withDivider) {
|
|
15
|
-
parts.push('form-section--divider');
|
|
16
|
-
}
|
|
17
|
-
return parts.join(' ');
|
|
18
|
-
}
|
|
19
|
-
get showHeader() {
|
|
20
|
-
return this.titulo.trim().length > 0 || this.subtitulo.trim().length > 0;
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { titulo: "titulo", subtitulo: "subtitulo", dense: ["dense", "dense", booleanAttribute], withDivider: ["withDivider", "withDivider", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "@if (showHeader) {\r\n<header class=\"form-section__header\">\r\n @if (titulo.trim()) {\r\n <h2 class=\"form-section__title\">{{ titulo }}</h2>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-section__subtitle\">{{ subtitulo }}</p>\r\n }\r\n</header>\r\n}\r\n<div class=\"form-section__body\">\r\n <ng-content />\r\n</div>", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-section__header{margin:0 0 1.25rem;padding:0}.form-section__title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--ui-field-label-color, #1a1a1a)}.form-section__subtitle{margin:0;font-size:.9rem;line-height:1.45;color:#525252}.form-section__body{display:flex;flex-direction:column;gap:1rem;min-width:0}:host.form-section--dense .form-section__header{margin-bottom:.75rem}:host.form-section--dense .form-section__title{font-size:1.1rem}:host.form-section--dense .form-section__body{gap:.65rem}:host.form-section--divider{padding-bottom:1.75rem;margin-bottom:1.75rem;border-bottom:1px solid #e5e5e5}:host.form-section--dense.form-section--divider{padding-bottom:1.25rem;margin-bottom:1.25rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
|
-
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormSectionComponent, decorators: [{
|
|
26
|
-
type: Component,
|
|
27
|
-
args: [{ selector: 'app-form-section', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (showHeader) {\r\n<header class=\"form-section__header\">\r\n @if (titulo.trim()) {\r\n <h2 class=\"form-section__title\">{{ titulo }}</h2>\r\n }\r\n @if (subtitulo.trim()) {\r\n <p class=\"form-section__subtitle\">{{ subtitulo }}</p>\r\n }\r\n</header>\r\n}\r\n<div class=\"form-section__body\">\r\n <ng-content />\r\n</div>", styles: [":host{display:block;width:100%;min-width:0;box-sizing:border-box}.form-section__header{margin:0 0 1.25rem;padding:0}.form-section__title{margin:0 0 .35rem;font-size:1.25rem;font-weight:600;line-height:1.3;color:var(--ui-field-label-color, #1a1a1a)}.form-section__subtitle{margin:0;font-size:.9rem;line-height:1.45;color:#525252}.form-section__body{display:flex;flex-direction:column;gap:1rem;min-width:0}:host.form-section--dense .form-section__header{margin-bottom:.75rem}:host.form-section--dense .form-section__title{font-size:1.1rem}:host.form-section--dense .form-section__body{gap:.65rem}:host.form-section--divider{padding-bottom:1.75rem;margin-bottom:1.75rem;border-bottom:1px solid #e5e5e5}:host.form-section--dense.form-section--divider{padding-bottom:1.25rem;margin-bottom:1.25rem}\n"] }]
|
|
28
|
-
}], propDecorators: { titulo: [{
|
|
29
|
-
type: Input,
|
|
30
|
-
args: [{ required: true }]
|
|
31
|
-
}], subtitulo: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}], dense: [{
|
|
34
|
-
type: Input,
|
|
35
|
-
args: [{ transform: booleanAttribute }]
|
|
36
|
-
}], withDivider: [{
|
|
37
|
-
type: Input,
|
|
38
|
-
args: [{ transform: booleanAttribute }]
|
|
39
|
-
}], hostClass: [{
|
|
40
|
-
type: HostBinding,
|
|
41
|
-
args: ['class']
|
|
42
|
-
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZm9ybS1sYXlvdXQvZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7O0FBU3ZCLE1BQU0sT0FBTyxvQkFBb0I7SUFQakM7UUFTVyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWdCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxnQkFBVyxHQUFHLElBQUksQ0FBQztLQWlCNUQ7SUFmQyxJQUNJLFNBQVM7UUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7K0dBckJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGtJQUlYLGdCQUFnQiwrQ0FDaEIsZ0JBQWdCLGtGQ3BCdEMsa1ZBWU07OzRGREdPLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdwQixNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsU0FBUztzQkFBakIsS0FBSztnQkFFa0MsS0FBSztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUdsQyxTQUFTO3NCQURaLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mb3JtLXNlY3Rpb24nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VjdGlvbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGl0dWxvITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN1YnRpdHVsbyA9ICcnO1xyXG5cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGVuc2UgPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgd2l0aERpdmlkZXIgPSB0cnVlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcclxuICBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwYXJ0cyA9IFsnZm9ybS1zZWN0aW9uJ107XHJcbiAgICBpZiAodGhpcy5kZW5zZSkge1xyXG4gICAgICBwYXJ0cy5wdXNoKCdmb3JtLXNlY3Rpb24tLWRlbnNlJyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy53aXRoRGl2aWRlcikge1xyXG4gICAgICBwYXJ0cy5wdXNoKCdmb3JtLXNlY3Rpb24tLWRpdmlkZXInKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd0hlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRpdHVsby50cmltKCkubGVuZ3RoID4gMCB8fCB0aGlzLnN1YnRpdHVsby50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIiwiQGlmIChzaG93SGVhZGVyKSB7XHJcbjxoZWFkZXIgY2xhc3M9XCJmb3JtLXNlY3Rpb25fX2hlYWRlclwiPlxyXG4gIEBpZiAodGl0dWxvLnRyaW0oKSkge1xyXG4gIDxoMiBjbGFzcz1cImZvcm0tc2VjdGlvbl9fdGl0bGVcIj57eyB0aXR1bG8gfX08L2gyPlxyXG4gIH1cclxuICBAaWYgKHN1YnRpdHVsby50cmltKCkpIHtcclxuICA8cCBjbGFzcz1cImZvcm0tc2VjdGlvbl9fc3VidGl0bGVcIj57eyBzdWJ0aXR1bG8gfX08L3A+XHJcbiAgfVxyXG48L2hlYWRlcj5cclxufVxyXG48ZGl2IGNsYXNzPVwiZm9ybS1zZWN0aW9uX19ib2R5XCI+XHJcbiAgPG5nLWNvbnRlbnQgLz5cclxuPC9kaXY+Il19
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, booleanAttribute, inject, } from '@angular/core';
|
|
2
|
-
import { FormTabsComponent } from '../form-tabs/form-tabs.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class FormTabComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
/** Sem `host: true`: o pai está no injetor normal (filho de `app-form-tabs`). */
|
|
7
|
-
this.tabs = inject(FormTabsComponent, { optional: true });
|
|
8
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
9
|
-
this.disabled = false;
|
|
10
|
-
this.warning = false;
|
|
11
|
-
}
|
|
12
|
-
ngOnChanges(changes) {
|
|
13
|
-
if (!this.tabs ||
|
|
14
|
-
(!changes['warning'] && !changes['disabled'] && !changes['tabTitle'])) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
this.tabs.onTabHeaderStateChanged();
|
|
18
|
-
}
|
|
19
|
-
get isActive() {
|
|
20
|
-
if (!this.tabs) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
return this.tabs.activeKey === this.key;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Com `[keepAlive]="false"` no `app-form-tabs` pai, painéis inactivos saem do DOM (menos
|
|
27
|
-
* custo acumulado em ecrãs com muitas abas ou conteúdo pesado).
|
|
28
|
-
*/
|
|
29
|
-
get detachInactivePanel() {
|
|
30
|
-
return !!this.tabs && this.tabs.keepAlive === false;
|
|
31
|
-
}
|
|
32
|
-
/** Chamado por {@link FormTabsComponent} quando a aba ativa muda (OnPush). */
|
|
33
|
-
refreshActiveState() {
|
|
34
|
-
this.cdr.markForCheck();
|
|
35
|
-
}
|
|
36
|
-
get hostClass() {
|
|
37
|
-
return 'form-tab';
|
|
38
|
-
}
|
|
39
|
-
panelId() {
|
|
40
|
-
return this.tabs ? this.tabs.panelIdFor(this.key) : `form-tab-panel-${this.key}`;
|
|
41
|
-
}
|
|
42
|
-
labelledById() {
|
|
43
|
-
return this.tabs ? this.tabs.headerIdFor(this.key) : '';
|
|
44
|
-
}
|
|
45
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormTabComponent, isStandalone: true, selector: "app-form-tab", inputs: { key: "key", tabTitle: "tabTitle", disabled: ["disabled", "disabled", booleanAttribute], warning: ["warning", "warning", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"form-tab__panel\"\r\n role=\"tabpanel\"\r\n [id]=\"panelId()\"\r\n [attr.aria-labelledby]=\"labelledById() || null\"\r\n [attr.aria-hidden]=\"!isActive\"\r\n [hidden]=\"!isActive\"\r\n [class.form-tab__panel--active]=\"isActive\"\r\n>\r\n @if (!detachInactivePanel || isActive) {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host.form-tab{display:block;width:100%;box-sizing:border-box}.form-tab__panel{width:100%;min-width:0;box-sizing:border-box}:host ::ng-deep .form-tab__panel app-form-group+app-form-group{margin-top:1rem}.form-tab__panel--active{animation:form-tab-panel-in .28s ease-out}@keyframes form-tab-panel-in{0%{opacity:.72}to{opacity:1}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
47
|
-
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabComponent, decorators: [{
|
|
49
|
-
type: Component,
|
|
50
|
-
args: [{ selector: 'app-form-tab', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"form-tab__panel\"\r\n role=\"tabpanel\"\r\n [id]=\"panelId()\"\r\n [attr.aria-labelledby]=\"labelledById() || null\"\r\n [attr.aria-hidden]=\"!isActive\"\r\n [hidden]=\"!isActive\"\r\n [class.form-tab__panel--active]=\"isActive\"\r\n>\r\n @if (!detachInactivePanel || isActive) {\r\n <ng-content />\r\n }\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host.form-tab{display:block;width:100%;box-sizing:border-box}.form-tab__panel{width:100%;min-width:0;box-sizing:border-box}:host ::ng-deep .form-tab__panel app-form-group+app-form-group{margin-top:1rem}.form-tab__panel--active{animation:form-tab-panel-in .28s ease-out}@keyframes form-tab-panel-in{0%{opacity:.72}to{opacity:1}}\n"] }]
|
|
51
|
-
}], propDecorators: { key: [{
|
|
52
|
-
type: Input,
|
|
53
|
-
args: [{ required: true }]
|
|
54
|
-
}], tabTitle: [{
|
|
55
|
-
type: Input,
|
|
56
|
-
args: [{ required: true }]
|
|
57
|
-
}], disabled: [{
|
|
58
|
-
type: Input,
|
|
59
|
-
args: [{ transform: booleanAttribute }]
|
|
60
|
-
}], warning: [{
|
|
61
|
-
type: Input,
|
|
62
|
-
args: [{ transform: booleanAttribute }]
|
|
63
|
-
}], hostClass: [{
|
|
64
|
-
type: HostBinding,
|
|
65
|
-
args: ['class']
|
|
66
|
-
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10YWIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9mb3JtLWxheW91dC9mb3JtLXRhYi9mb3JtLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2Zvcm0tdGFiL2Zvcm0tdGFiLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUdMLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBU3JFLE1BQU0sT0FBTyxnQkFBZ0I7SUFQN0I7UUFRRSxpRkFBaUY7UUFDaEUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXJELFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQVdULGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsWUFBTyxHQUFHLEtBQUssQ0FBQztLQTRDekQ7SUExQ0MsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQ0UsQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNWLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFDckUsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztJQUN0RCxDQUFDO0lBRUQsOEVBQThFO0lBQzlFLGtCQUFrQjtRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxDQUFDOytHQTVEVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQiwrSEFlUCxnQkFBZ0IsbUNBRWhCLGdCQUFnQix1R0NyQ3RDLDZWQWFBOzs0RkRPYSxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTTs4QkFRcEIsR0FBRztzQkFBN0IsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT0UsUUFBUTtzQkFBbEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRWUsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFRSxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWlDbEMsU0FBUztzQkFEWixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tdGFicy9mb3JtLXRhYnMuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZvcm0tdGFiJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tdGFiLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1UYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKiogU2VtIGBob3N0OiB0cnVlYDogbyBwYWkgZXN0w6Egbm8gaW5qZXRvciBub3JtYWwgKGZpbGhvIGRlIGBhcHAtZm9ybS10YWJzYCkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFicyA9IGluamVjdChGb3JtVGFic0NvbXBvbmVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkga2V5ITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZXh0byBkbyBzZXBhcmFkb3IgbmEgbGlzdGEgZGUgYWJhcy5cbiAgICogTsOjbyB1c2FyIG8gbm9tZSBgdGl0bGVgOiBubyBob3N0IGA8YXBwLWZvcm0tdGFiPmAgbyBhdHJpYnV0byBIVE1MIGB0aXRsZWAgZ2VyYSB0b29sdGlwIG5hdGl2b1xuICAgKiBzb2JyZSBvIHBhaW5lbCAoZXguOiBhbyBwYXNzYXIgbyBtb3VzZSBzb2JyZSBvIGNvbnRlw7pkbykuXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB0YWJUaXRsZSE6IHN0cmluZztcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgd2FybmluZyA9IGZhbHNlO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy50YWJzIHx8XG4gICAgICAoIWNoYW5nZXNbJ3dhcm5pbmcnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWQnXSAmJiAhY2hhbmdlc1sndGFiVGl0bGUnXSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50YWJzLm9uVGFiSGVhZGVyU3RhdGVDaGFuZ2VkKCk7XG4gIH1cblxuICBnZXQgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnRhYnMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGFicy5hY3RpdmVLZXkgPT09IHRoaXMua2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbSBgW2tlZXBBbGl2ZV09XCJmYWxzZVwiYCBubyBgYXBwLWZvcm0tdGFic2AgcGFpLCBwYWluw6lpcyBpbmFjdGl2b3Mgc2FlbSBkbyBET00gKG1lbm9zXG4gICAqIGN1c3RvIGFjdW11bGFkbyBlbSBlY3LDo3MgY29tIG11aXRhcyBhYmFzIG91IGNvbnRlw7pkbyBwZXNhZG8pLlxuICAgKi9cbiAgZ2V0IGRldGFjaEluYWN0aXZlUGFuZWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50YWJzICYmIHRoaXMudGFicy5rZWVwQWxpdmUgPT09IGZhbHNlO1xuICB9XG5cbiAgLyoqIENoYW1hZG8gcG9yIHtAbGluayBGb3JtVGFic0NvbXBvbmVudH0gcXVhbmRvIGEgYWJhIGF0aXZhIG11ZGEgKE9uUHVzaCkuICovXG4gIHJlZnJlc2hBY3RpdmVTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdmb3JtLXRhYic7XG4gIH1cblxuICBwYW5lbElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGFicyA/IHRoaXMudGFicy5wYW5lbElkRm9yKHRoaXMua2V5KSA6IGBmb3JtLXRhYi1wYW5lbC0ke3RoaXMua2V5fWA7XG4gIH1cblxuICBsYWJlbGxlZEJ5SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50YWJzID8gdGhpcy50YWJzLmhlYWRlcklkRm9yKHRoaXMua2V5KSA6ICcnO1xuICB9XG59XG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJmb3JtLXRhYl9fcGFuZWxcIlxyXG4gIHJvbGU9XCJ0YWJwYW5lbFwiXHJcbiAgW2lkXT1cInBhbmVsSWQoKVwiXHJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsbGVkQnlJZCgpIHx8IG51bGxcIlxyXG4gIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFpc0FjdGl2ZVwiXHJcbiAgW2hpZGRlbl09XCIhaXNBY3RpdmVcIlxyXG4gIFtjbGFzcy5mb3JtLXRhYl9fcGFuZWwtLWFjdGl2ZV09XCJpc0FjdGl2ZVwiXHJcbj5cclxuICBAaWYgKCFkZXRhY2hJbmFjdGl2ZVBhbmVsIHx8IGlzQWN0aXZlKSB7XHJcbiAgICA8bmctY29udGVudCAvPlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Input, Output, booleanAttribute, forwardRef, inject, } from '@angular/core';
|
|
2
|
-
import { FormTabComponent } from '../form-tab/form-tab.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class FormTabsComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.cdr = inject(ChangeDetectorRef);
|
|
7
|
-
this.uid = `ft-${++FormTabsComponent.nextUid}`;
|
|
8
|
-
this._activeKey = '';
|
|
9
|
-
this.activeKeyChange = new EventEmitter();
|
|
10
|
-
/**
|
|
11
|
-
* `true` (padrão): todos os painéis permanecem no DOM; inactivos usam `[hidden]` (útil para
|
|
12
|
-
* preservar estado de UI puramente client-side dentro da aba).
|
|
13
|
-
* `false`: só o painel da aba activa é montado — menos DOM/CD ao alternar; o modelo reactivo
|
|
14
|
-
* (`FormGroup` no ascendente) mantém-se; ao voltar à aba, os campos remontam e religam-se.
|
|
15
|
-
*/
|
|
16
|
-
this.keepAlive = true;
|
|
17
|
-
this.stretch = false;
|
|
18
|
-
this.variant = 'default';
|
|
19
|
-
/** Rótulo acessível para a lista de separadores (ex.: “Seções do formulário”). */
|
|
20
|
-
this.tablistAriaLabel = 'Separadores do formulário';
|
|
21
|
-
}
|
|
22
|
-
static { this.nextUid = 0; }
|
|
23
|
-
set activeKey(v) {
|
|
24
|
-
const next = (v ?? '').trim();
|
|
25
|
-
if (next === this._activeKey) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
this._activeKey = next;
|
|
29
|
-
queueMicrotask(() => this.refreshTabPanels());
|
|
30
|
-
}
|
|
31
|
-
get activeKey() {
|
|
32
|
-
return this._activeKey;
|
|
33
|
-
}
|
|
34
|
-
ngAfterContentInit() {
|
|
35
|
-
this.syncInitialActiveKey();
|
|
36
|
-
this.tabQuery.changes.subscribe(() => {
|
|
37
|
-
this.syncInitialActiveKey();
|
|
38
|
-
this.cdr.markForCheck();
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
get tabs() {
|
|
42
|
-
return this.tabQuery?.toArray() ?? [];
|
|
43
|
-
}
|
|
44
|
-
get hostClass() {
|
|
45
|
-
const parts = ['form-tabs', `form-tabs--${this.variant}`];
|
|
46
|
-
if (this.stretch) {
|
|
47
|
-
parts.push('form-tabs--stretch');
|
|
48
|
-
}
|
|
49
|
-
return parts.join(' ');
|
|
50
|
-
}
|
|
51
|
-
baseId() {
|
|
52
|
-
return `form-tabs-${this.uid}`;
|
|
53
|
-
}
|
|
54
|
-
headerIdFor(key) {
|
|
55
|
-
return `${this.baseId()}-tab-${key}`;
|
|
56
|
-
}
|
|
57
|
-
panelIdFor(key) {
|
|
58
|
-
return `${this.baseId()}-panel-${key}`;
|
|
59
|
-
}
|
|
60
|
-
selectTab(key) {
|
|
61
|
-
const tab = this.tabs.find((t) => t.key === key);
|
|
62
|
-
if (!tab || tab.disabled) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
if (this._activeKey === key) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
this._activeKey = key;
|
|
69
|
-
this.activeKeyChange.emit(key);
|
|
70
|
-
this.cdr.markForCheck();
|
|
71
|
-
this.refreshTabPanels();
|
|
72
|
-
}
|
|
73
|
-
refreshTabPanels() {
|
|
74
|
-
this.tabQuery?.forEach((tab) => tab.refreshActiveState());
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Chamado por {@link FormTabComponent} quando inputs que afetam o tablist (ex.: `warning`, `tabTitle`)
|
|
78
|
-
* mudam — com OnPush o cabeçalho não voltava a desenhar só com alterações nos filhos projetados.
|
|
79
|
-
*/
|
|
80
|
-
onTabHeaderStateChanged() {
|
|
81
|
-
this.cdr.markForCheck();
|
|
82
|
-
}
|
|
83
|
-
isSelected(key) {
|
|
84
|
-
return this._activeKey === key;
|
|
85
|
-
}
|
|
86
|
-
syncInitialActiveKey() {
|
|
87
|
-
const list = this.tabs;
|
|
88
|
-
if (!list.length) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
const hasActive = !!this._activeKey && list.some((t) => t.key === this._activeKey);
|
|
92
|
-
if (hasActive) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
const firstEnabled = list.find((t) => !t.disabled) ?? list[0];
|
|
96
|
-
if (firstEnabled) {
|
|
97
|
-
this._activeKey = firstEnabled.key;
|
|
98
|
-
this.activeKeyChange.emit(this._activeKey);
|
|
99
|
-
this.refreshTabPanels();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
103
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormTabsComponent, isStandalone: true, selector: "app-form-tabs", inputs: { activeKey: "activeKey", keepAlive: ["keepAlive", "keepAlive", booleanAttribute], stretch: ["stretch", "stretch", booleanAttribute], variant: "variant", tablistAriaLabel: "tablistAriaLabel" }, outputs: { activeKeyChange: "activeKeyChange" }, queries: [{ propertyName: "tabQuery", predicate: i0.forwardRef(() => FormTabComponent) }], ngImport: i0, template: "<div [class]=\"hostClass\">\n <div class=\"form-tabs__shell\">\n <div class=\"form-tabs__header-scroll\">\n <div\n class=\"form-tabs__tablist\"\n role=\"tablist\"\n [attr.aria-label]=\"tablistAriaLabel\"\n >\n @for (tab of tabs; track tab.key) {\n <button\n type=\"button\"\n class=\"form-tabs__tab\"\n role=\"tab\"\n [id]=\"headerIdFor(tab.key)\"\n [attr.aria-selected]=\"isSelected(tab.key)\"\n [attr.aria-controls]=\"panelIdFor(tab.key)\"\n [attr.tabindex]=\"isSelected(tab.key) ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [class.form-tabs__tab--active]=\"isSelected(tab.key)\"\n [class.form-tabs__tab--warn]=\"tab.warning\"\n (click)=\"selectTab(tab.key)\"\n >\n <span class=\"form-tabs__tab-label\">{{ tab.tabTitle }}</span>\n @if (tab.warning) {\n <span\n class=\"form-tabs__tab-warn-icon\"\n aria-hidden=\"true\"\n title=\"Existem erros nesta se\u00E7\u00E3o\"\n >\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </span>\n }\n </button>\n }\n </div>\n </div>\n <div class=\"form-tabs__panels\">\n <ng-content select=\"app-form-tab\" />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.form-tabs{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.form-tabs__shell{display:flex;flex-direction:column;gap:0;width:100%;padding:.7rem .85rem .85rem;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));border-radius:16px;background:var(--app-color-surface, #fff);box-sizing:border-box;box-shadow:0 1px 4px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.form-tabs__header-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;box-sizing:border-box;padding:.2rem .1rem .55rem}.form-tabs__tablist{display:inline-flex;flex-wrap:nowrap;gap:.5rem;min-width:min-content;box-sizing:border-box}.form-tabs--stretch .form-tabs__tablist{width:100%}.form-tabs--stretch .form-tabs__tab{flex:1 1 0;justify-content:center}.form-tabs__tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;margin:0;padding:.52rem 1rem;border:1px solid var(--app-color-tab-inactive-border, rgba(182, 204, 229, .75));border-radius:11px;background:var(--app-color-tab-inactive-bg, #f3f6f9);color:var(--app-color-tab-inactive-text, #51667a);font-size:.94rem;font-weight:500;font-family:inherit;line-height:1.25;cursor:pointer;white-space:nowrap;user-select:none;-webkit-user-select:none;transition:background .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease}.form-tabs__tab:hover:not(:disabled):not(.form-tabs__tab--active){border-color:var(--app-color-tab-hover-border, rgba(43, 127, 217, .42));background:var(--app-color-tab-hover-bg, #eef3f8);color:var(--app-color-text-primary, #3d5266)}.form-tabs__tab:focus,.form-tabs__tab:focus-visible{outline:none}.form-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.form-tabs__tab--active{border-color:var(--ui-field-float-border-focus, #2b7fd9);background:var(--app-color-surface, #fff);color:var(--ui-field-float-input-text, #0f1b28);font-weight:600;box-shadow:0 2px 8px var(--app-color-tab-shadow, rgba(43, 127, 217, .14)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .07))}.form-tabs__tab--active:hover:not(:disabled){border-color:var(--ui-field-float-border-focus, #2b7fd9);box-shadow:0 3px 10px var(--app-color-tab-shadow, rgba(43, 127, 217, .16)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .08))}.form-tabs__tab-label{max-width:14rem;overflow:hidden;text-overflow:ellipsis}.form-tabs__tab-warn-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-field-input-invalid-border, #b91c1c);font-size:.82rem;flex-shrink:0}.form-tabs__panels{position:relative;width:100%;min-width:0;box-sizing:border-box;margin-top:.1rem;padding-top:.75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.form-tabs--pill .form-tabs__tab{border-radius:999px;padding-inline:1.15rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
104
|
-
}
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormTabsComponent, decorators: [{
|
|
106
|
-
type: Component,
|
|
107
|
-
args: [{ selector: 'app-form-tabs', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"hostClass\">\n <div class=\"form-tabs__shell\">\n <div class=\"form-tabs__header-scroll\">\n <div\n class=\"form-tabs__tablist\"\n role=\"tablist\"\n [attr.aria-label]=\"tablistAriaLabel\"\n >\n @for (tab of tabs; track tab.key) {\n <button\n type=\"button\"\n class=\"form-tabs__tab\"\n role=\"tab\"\n [id]=\"headerIdFor(tab.key)\"\n [attr.aria-selected]=\"isSelected(tab.key)\"\n [attr.aria-controls]=\"panelIdFor(tab.key)\"\n [attr.tabindex]=\"isSelected(tab.key) ? 0 : -1\"\n [disabled]=\"tab.disabled\"\n [class.form-tabs__tab--active]=\"isSelected(tab.key)\"\n [class.form-tabs__tab--warn]=\"tab.warning\"\n (click)=\"selectTab(tab.key)\"\n >\n <span class=\"form-tabs__tab-label\">{{ tab.tabTitle }}</span>\n @if (tab.warning) {\n <span\n class=\"form-tabs__tab-warn-icon\"\n aria-hidden=\"true\"\n title=\"Existem erros nesta se\u00E7\u00E3o\"\n >\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </span>\n }\n </button>\n }\n </div>\n </div>\n <div class=\"form-tabs__panels\">\n <ng-content select=\"app-form-tab\" />\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;box-sizing:border-box}.form-tabs{display:flex;flex-direction:column;width:100%;box-sizing:border-box}.form-tabs__shell{display:flex;flex-direction:column;gap:0;width:100%;padding:.7rem .85rem .85rem;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));border-radius:16px;background:var(--app-color-surface, #fff);box-sizing:border-box;box-shadow:0 1px 4px var(--app-color-shell-shadow, rgba(26, 47, 69, .05))}.form-tabs__header-scroll{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin;box-sizing:border-box;padding:.2rem .1rem .55rem}.form-tabs__tablist{display:inline-flex;flex-wrap:nowrap;gap:.5rem;min-width:min-content;box-sizing:border-box}.form-tabs--stretch .form-tabs__tablist{width:100%}.form-tabs--stretch .form-tabs__tab{flex:1 1 0;justify-content:center}.form-tabs__tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;margin:0;padding:.52rem 1rem;border:1px solid var(--app-color-tab-inactive-border, rgba(182, 204, 229, .75));border-radius:11px;background:var(--app-color-tab-inactive-bg, #f3f6f9);color:var(--app-color-tab-inactive-text, #51667a);font-size:.94rem;font-weight:500;font-family:inherit;line-height:1.25;cursor:pointer;white-space:nowrap;user-select:none;-webkit-user-select:none;transition:background .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease}.form-tabs__tab:hover:not(:disabled):not(.form-tabs__tab--active){border-color:var(--app-color-tab-hover-border, rgba(43, 127, 217, .42));background:var(--app-color-tab-hover-bg, #eef3f8);color:var(--app-color-text-primary, #3d5266)}.form-tabs__tab:focus,.form-tabs__tab:focus-visible{outline:none}.form-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.form-tabs__tab--active{border-color:var(--ui-field-float-border-focus, #2b7fd9);background:var(--app-color-surface, #fff);color:var(--ui-field-float-input-text, #0f1b28);font-weight:600;box-shadow:0 2px 8px var(--app-color-tab-shadow, rgba(43, 127, 217, .14)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .07))}.form-tabs__tab--active:hover:not(:disabled){border-color:var(--ui-field-float-border-focus, #2b7fd9);box-shadow:0 3px 10px var(--app-color-tab-shadow, rgba(43, 127, 217, .16)),0 0 0 1px var(--app-color-primary-muted, rgba(43, 127, 217, .08))}.form-tabs__tab-label{max-width:14rem;overflow:hidden;text-overflow:ellipsis}.form-tabs__tab-warn-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--ui-field-input-invalid-border, #b91c1c);font-size:.82rem;flex-shrink:0}.form-tabs__panels{position:relative;width:100%;min-width:0;box-sizing:border-box;margin-top:.1rem;padding-top:.75rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .06))}.form-tabs--pill .form-tabs__tab{border-radius:999px;padding-inline:1.15rem}\n"] }]
|
|
108
|
-
}], propDecorators: { tabQuery: [{
|
|
109
|
-
type: ContentChildren,
|
|
110
|
-
args: [forwardRef(() => FormTabComponent), { descendants: false }]
|
|
111
|
-
}], activeKey: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], activeKeyChange: [{
|
|
114
|
-
type: Output
|
|
115
|
-
}], keepAlive: [{
|
|
116
|
-
type: Input,
|
|
117
|
-
args: [{ transform: booleanAttribute }]
|
|
118
|
-
}], stretch: [{
|
|
119
|
-
type: Input,
|
|
120
|
-
args: [{ transform: booleanAttribute }]
|
|
121
|
-
}], variant: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], tablistAriaLabel: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}] } });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10YWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZm9ybS1sYXlvdXQvZm9ybS10YWJzL2Zvcm0tdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2Zvcm0tdGFicy9mb3JtLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFVbEUsTUFBTSxPQUFPLGlCQUFpQjtJQVA5QjtRQVVtQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFeEMsUUFBRyxHQUFHLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUszQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBZUwsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWhFOzs7OztXQUtHO1FBQ3FDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUUvQyxZQUFPLEdBQW9CLFNBQVMsQ0FBQztRQUU5QyxrRkFBa0Y7UUFDekUscUJBQWdCLEdBQUcsMkJBQTJCLENBQUM7S0FpRnpEO2FBeEhnQixZQUFPLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUFXM0IsSUFDSSxTQUFTLENBQUMsQ0FBNEI7UUFDeEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBbUJELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsTUFBTSxLQUFLLEdBQUcsQ0FBQyxXQUFXLEVBQUUsY0FBYyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sYUFBYSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXO1FBQ25CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7O09BR0c7SUFDSCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQztJQUNqQyxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25FLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7K0dBeEhVLGlCQUFpQjttR0FBakIsaUJBQWlCLHlIQWlDUixnQkFBZ0IsbUNBRWhCLGdCQUFnQixxTEE1QkYsZ0JBQWdCLDhCQy9CcEQsbTVDQXlDQTs7NEZEakJhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQVUvQyxRQUFRO3NCQURQLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO2dCQU12RSxTQUFTO3NCQURaLEtBQUs7Z0JBYWEsZUFBZTtzQkFBakMsTUFBTTtnQkFRaUMsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFRSxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUU3QixPQUFPO3NCQUFmLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcclxuICBmb3J3YXJkUmVmLFxyXG4gIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybVRhYkNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tdGFiL2Zvcm0tdGFiLmNvbXBvbmVudCc7XHJcbmltcG9ydCB0eXBlIHsgRm9ybVRhYnNWYXJpYW50IH0gZnJvbSAnLi4vX21vZGVscy9mb3JtLXRhYnMubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS10YWJzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mb3JtLXRhYnMuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVRhYnNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcclxuICBwcml2YXRlIHN0YXRpYyBuZXh0VWlkID0gMDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICByZWFkb25seSB1aWQgPSBgZnQtJHsrK0Zvcm1UYWJzQ29tcG9uZW50Lm5leHRVaWR9YDtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEZvcm1UYWJDb21wb25lbnQpLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KVxyXG4gIHRhYlF1ZXJ5ITogUXVlcnlMaXN0PEZvcm1UYWJDb21wb25lbnQ+O1xyXG5cclxuICBwcml2YXRlIF9hY3RpdmVLZXkgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgYWN0aXZlS2V5KHY6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICAgIGNvbnN0IG5leHQgPSAodiA/PyAnJykudHJpbSgpO1xyXG4gICAgaWYgKG5leHQgPT09IHRoaXMuX2FjdGl2ZUtleSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9hY3RpdmVLZXkgPSBuZXh0O1xyXG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5yZWZyZXNoVGFiUGFuZWxzKCkpO1xyXG4gIH1cclxuICBnZXQgYWN0aXZlS2V5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlS2V5O1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGFjdGl2ZUtleUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAvKipcclxuICAgKiBgdHJ1ZWAgKHBhZHLDo28pOiB0b2RvcyBvcyBwYWluw6lpcyBwZXJtYW5lY2VtIG5vIERPTTsgaW5hY3Rpdm9zIHVzYW0gYFtoaWRkZW5dYCAow7p0aWwgcGFyYVxyXG4gICAqIHByZXNlcnZhciBlc3RhZG8gZGUgVUkgcHVyYW1lbnRlIGNsaWVudC1zaWRlIGRlbnRybyBkYSBhYmEpLlxyXG4gICAqIGBmYWxzZWA6IHPDsyBvIHBhaW5lbCBkYSBhYmEgYWN0aXZhIMOpIG1vbnRhZG8g4oCUIG1lbm9zIERPTS9DRCBhbyBhbHRlcm5hcjsgbyBtb2RlbG8gcmVhY3Rpdm9cclxuICAgKiAoYEZvcm1Hcm91cGAgbm8gYXNjZW5kZW50ZSkgbWFudMOpbS1zZTsgYW8gdm9sdGFyIMOgIGFiYSwgb3MgY2FtcG9zIHJlbW9udGFtIGUgcmVsaWdhbS1zZS5cclxuICAgKi9cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkga2VlcEFsaXZlID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0cmV0Y2ggPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgdmFyaWFudDogRm9ybVRhYnNWYXJpYW50ID0gJ2RlZmF1bHQnO1xyXG5cclxuICAvKiogUsOzdHVsbyBhY2Vzc8OtdmVsIHBhcmEgYSBsaXN0YSBkZSBzZXBhcmFkb3JlcyAoZXguOiDigJxTZcOnw7VlcyBkbyBmb3JtdWzDoXJpb+KAnSkuICovXHJcbiAgQElucHV0KCkgdGFibGlzdEFyaWFMYWJlbCA9ICdTZXBhcmFkb3JlcyBkbyBmb3JtdWzDoXJpbyc7XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3luY0luaXRpYWxBY3RpdmVLZXkoKTtcclxuICAgIHRoaXMudGFiUXVlcnkuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN5bmNJbml0aWFsQWN0aXZlS2V5KCk7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFicygpOiBGb3JtVGFiQ29tcG9uZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMudGFiUXVlcnk/LnRvQXJyYXkoKSA/PyBbXTtcclxuICB9XHJcblxyXG4gIGdldCBob3N0Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcnRzID0gWydmb3JtLXRhYnMnLCBgZm9ybS10YWJzLS0ke3RoaXMudmFyaWFudH1gXTtcclxuICAgIGlmICh0aGlzLnN0cmV0Y2gpIHtcclxuICAgICAgcGFydHMucHVzaCgnZm9ybS10YWJzLS1zdHJldGNoJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFydHMuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgYmFzZUlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYGZvcm0tdGFicy0ke3RoaXMudWlkfWA7XHJcbiAgfVxyXG5cclxuICBoZWFkZXJJZEZvcihrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5iYXNlSWQoKX0tdGFiLSR7a2V5fWA7XHJcbiAgfVxyXG5cclxuICBwYW5lbElkRm9yKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmJhc2VJZCgpfS1wYW5lbC0ke2tleX1gO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VGFiKGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnMuZmluZCgodCkgPT4gdC5rZXkgPT09IGtleSk7XHJcbiAgICBpZiAoIXRhYiB8fCB0YWIuZGlzYWJsZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2FjdGl2ZUtleSA9PT0ga2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2FjdGl2ZUtleSA9IGtleTtcclxuICAgIHRoaXMuYWN0aXZlS2V5Q2hhbmdlLmVtaXQoa2V5KTtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5yZWZyZXNoVGFiUGFuZWxzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZnJlc2hUYWJQYW5lbHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYlF1ZXJ5Py5mb3JFYWNoKCh0YWIpID0+IHRhYi5yZWZyZXNoQWN0aXZlU3RhdGUoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGFtYWRvIHBvciB7QGxpbmsgRm9ybVRhYkNvbXBvbmVudH0gcXVhbmRvIGlucHV0cyBxdWUgYWZldGFtIG8gdGFibGlzdCAoZXguOiBgd2FybmluZ2AsIGB0YWJUaXRsZWApXHJcbiAgICogbXVkYW0g4oCUIGNvbSBPblB1c2ggbyBjYWJlw6dhbGhvIG7Do28gdm9sdGF2YSBhIGRlc2VuaGFyIHPDsyBjb20gYWx0ZXJhw6fDtWVzIG5vcyBmaWxob3MgcHJvamV0YWRvcy5cclxuICAgKi9cclxuICBvblRhYkhlYWRlclN0YXRlQ2hhbmdlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxlY3RlZChrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUtleSA9PT0ga2V5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzeW5jSW5pdGlhbEFjdGl2ZUtleSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxpc3QgPSB0aGlzLnRhYnM7XHJcbiAgICBpZiAoIWxpc3QubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhc0FjdGl2ZSA9XHJcbiAgICAgICEhdGhpcy5fYWN0aXZlS2V5ICYmIGxpc3Quc29tZSgodCkgPT4gdC5rZXkgPT09IHRoaXMuX2FjdGl2ZUtleSk7XHJcbiAgICBpZiAoaGFzQWN0aXZlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpcnN0RW5hYmxlZCA9IGxpc3QuZmluZCgodCkgPT4gIXQuZGlzYWJsZWQpID8/IGxpc3RbMF07XHJcbiAgICBpZiAoZmlyc3RFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZUtleSA9IGZpcnN0RW5hYmxlZC5rZXk7XHJcbiAgICAgIHRoaXMuYWN0aXZlS2V5Q2hhbmdlLmVtaXQodGhpcy5fYWN0aXZlS2V5KTtcclxuICAgICAgdGhpcy5yZWZyZXNoVGFiUGFuZWxzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2NsYXNzXT1cImhvc3RDbGFzc1wiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS10YWJzX19zaGVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRhYnNfX2hlYWRlci1zY3JvbGxcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmb3JtLXRhYnNfX3RhYmxpc3RcIlxuICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGFibGlzdEFyaWFMYWJlbFwiXG4gICAgICA+XG4gICAgICAgIEBmb3IgKHRhYiBvZiB0YWJzOyB0cmFjayB0YWIua2V5KSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGFic19fdGFiXCJcbiAgICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgICAgW2lkXT1cImhlYWRlcklkRm9yKHRhYi5rZXkpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZCh0YWIua2V5KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cInBhbmVsSWRGb3IodGFiLmtleSlcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiaXNTZWxlY3RlZCh0YWIua2V5KSA/IDAgOiAtMVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidGFiLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5mb3JtLXRhYnNfX3RhYi0tYWN0aXZlXT1cImlzU2VsZWN0ZWQodGFiLmtleSlcIlxuICAgICAgICAgICAgW2NsYXNzLmZvcm0tdGFic19fdGFiLS13YXJuXT1cInRhYi53YXJuaW5nXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RUYWIodGFiLmtleSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS10YWJzX190YWItbGFiZWxcIj57eyB0YWIudGFiVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICBAaWYgKHRhYi53YXJuaW5nKSB7XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRhYnNfX3RhYi13YXJuLWljb25cIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJFeGlzdGVtIGVycm9zIG5lc3RhIHNlw6fDo29cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS10cmlhbmdsZS1leGNsYW1hdGlvblwiPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS10YWJzX19wYW5lbHNcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFwcC1mb3JtLXRhYlwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { LayoutStackComponent } from './layout-stack/layout-stack.component';
|
|
2
|
-
export { FormActionsComponent } from './form-actions/form-actions.component';
|
|
3
|
-
export { FormColComponent } from './form-col/form-col.component';
|
|
4
|
-
export { FormGroupComponent } from './form-group/form-group.component';
|
|
5
|
-
export { FormRowComponent } from './form-row/form-row.component';
|
|
6
|
-
export { FormSectionComponent } from './form-section/form-section.component';
|
|
7
|
-
export { ValidationSummaryComponent } from './validation-summary/validation-summary.component';
|
|
8
|
-
export { FormTabsComponent } from './form-tabs/form-tabs.component';
|
|
9
|
-
export { FormTabComponent } from './form-tab/form-tab.component';
|
|
10
|
-
export { LayoutStackAlign, FormActionsAlign, FormGroupVariant, FormRowAlign, FormRowGap, FormRowJustify, } from './_models';
|
|
11
|
-
/** Utilitários de formulário reactivo (ícones de grupo, demos avançadas). API estável; não expõe estrutura interna de pastas. */
|
|
12
|
-
export { subscribeMarkForCheckOnInvalidUiRefresh } from './form-group/form-root-invalid-ui-refresh.util';
|
|
13
|
-
export { resolveControlAtPath, sectionHasVisibleInvalid, subtreeHasVisibleInvalid, } from './form-group/form-path.utils';
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osVUFBVSxFQUNWLGNBQWMsR0FDZixNQUFNLFdBQVcsQ0FBQztBQU9uQixpSUFBaUk7QUFDakksT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDekcsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsd0JBQXdCLEdBQ3pCLE1BQU0sOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBMYXlvdXRTdGFja0NvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LXN0YWNrL2xheW91dC1zdGFjay5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1hY3Rpb25zL2Zvcm0tYWN0aW9ucy5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtQ29sQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLWNvbC9mb3JtLWNvbC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2Zvcm0tZ3JvdXAvZm9ybS1ncm91cC5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtUm93Q29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLXJvdy9mb3JtLXJvdy5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBWYWxpZGF0aW9uU3VtbWFyeUNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdGlvbi1zdW1tYXJ5L3ZhbGlkYXRpb24tc3VtbWFyeS5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtVGFic0NvbXBvbmVudCB9IGZyb20gJy4vZm9ybS10YWJzL2Zvcm0tdGFicy5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBGb3JtVGFiQ29tcG9uZW50IH0gZnJvbSAnLi9mb3JtLXRhYi9mb3JtLXRhYi5jb21wb25lbnQnO1xyXG5leHBvcnQge1xyXG4gIExheW91dFN0YWNrQWxpZ24sXHJcbiAgRm9ybUFjdGlvbnNBbGlnbixcclxuICBGb3JtR3JvdXBWYXJpYW50LFxyXG4gIEZvcm1Sb3dBbGlnbixcclxuICBGb3JtUm93R2FwLFxyXG4gIEZvcm1Sb3dKdXN0aWZ5LFxyXG59IGZyb20gJy4vX21vZGVscyc7XHJcbmV4cG9ydCB0eXBlIHtcclxuICBWYWxpZGF0aW9uU3VtbWFyeUl0ZW0sXHJcbiAgVmFsaWRhdGlvblN1bW1hcnlWYXJpYW50LFxyXG4gIEZvcm1UYWJzVmFyaWFudCxcclxufSBmcm9tICcuL19tb2RlbHMnO1xyXG5cclxuLyoqIFV0aWxpdMOhcmlvcyBkZSBmb3JtdWzDoXJpbyByZWFjdGl2byAow61jb25lcyBkZSBncnVwbywgZGVtb3MgYXZhbsOnYWRhcykuIEFQSSBlc3TDoXZlbDsgbsOjbyBleHDDtWUgZXN0cnV0dXJhIGludGVybmEgZGUgcGFzdGFzLiAqL1xyXG5leHBvcnQgeyBzdWJzY3JpYmVNYXJrRm9yQ2hlY2tPbkludmFsaWRVaVJlZnJlc2ggfSBmcm9tICcuL2Zvcm0tZ3JvdXAvZm9ybS1yb290LWludmFsaWQtdWktcmVmcmVzaC51dGlsJztcclxuZXhwb3J0IHtcclxuICByZXNvbHZlQ29udHJvbEF0UGF0aCxcclxuICBzZWN0aW9uSGFzVmlzaWJsZUludmFsaWQsXHJcbiAgc3VidHJlZUhhc1Zpc2libGVJbnZhbGlkLFxyXG59IGZyb20gJy4vZm9ybS1ncm91cC9mb3JtLXBhdGgudXRpbHMnO1xyXG4iXX0=
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, booleanAttribute, } from '@angular/core';
|
|
2
|
-
import { LayoutStackAlign } from '../_models/form-layout.model';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/** Faixa flexível com projeção de conteúdo (ex.: botões alinhados). */
|
|
5
|
-
export class LayoutStackComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
/** Distribuição horizontal dos filhos (`justify-content`). */
|
|
8
|
-
this.align = LayoutStackAlign.End;
|
|
9
|
-
/**
|
|
10
|
-
* Em ecrãs estreitos, aplica ajustes leves (ex.: `gap`) mantendo fila + `wrap`.
|
|
11
|
-
* Por defeito `true`; não é necessário passar no template na maioria dos casos.
|
|
12
|
-
*/
|
|
13
|
-
this.stackOnMobile = true;
|
|
14
|
-
/** Linha separadora acima da faixa. Nome explícito para evitar colisão com o esquema DOM em templates aninhados. */
|
|
15
|
-
this.stackDivider = false;
|
|
16
|
-
/**
|
|
17
|
-
* Quando `true` (por defeito), os filhos repartem a largura da faixa (ex.: um botão a 100%;
|
|
18
|
-
* vários com `flex` igual). Use `false` para faixas compactas (largura intrínseca).
|
|
19
|
-
*/
|
|
20
|
-
this.stackFill = true;
|
|
21
|
-
}
|
|
22
|
-
get hostClass() {
|
|
23
|
-
const parts = ['layout-stack', `layout-stack--align-${this.align}`];
|
|
24
|
-
if (this.stackOnMobile) {
|
|
25
|
-
parts.push('layout-stack--stack-mobile');
|
|
26
|
-
}
|
|
27
|
-
if (this.stackDivider) {
|
|
28
|
-
parts.push('layout-stack--divider');
|
|
29
|
-
}
|
|
30
|
-
if (this.stackFill) {
|
|
31
|
-
parts.push('layout-stack--fill');
|
|
32
|
-
}
|
|
33
|
-
return parts.join(' ');
|
|
34
|
-
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.12", type: LayoutStackComponent, isStandalone: true, selector: "app-layout-stack", inputs: { align: "align", stackOnMobile: ["stackOnMobile", "stackOnMobile", booleanAttribute], stackDivider: ["stackDivider", "stackDivider", booleanAttribute], stackFill: ["stackFill", "stackFill", booleanAttribute] }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"layout-stack__track\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.layout-stack__track{display:flex;flex-wrap:wrap;width:100%;min-width:0;box-sizing:border-box;align-items:stretch;gap:.5rem .75rem;padding-top:.25rem}:host(.layout-stack--align-start) .layout-stack__track{justify-content:flex-start}:host(.layout-stack--align-center) .layout-stack__track{justify-content:center}:host(.layout-stack--align-end) .layout-stack__track{justify-content:flex-end}:host(.layout-stack--align-space-between) .layout-stack__track{justify-content:space-between}:host(.layout-stack--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-layout-stack-divider-color, #e8eaed)}:host:not(.layout-stack--fill) .layout-stack__track{align-items:center}:host:not(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:0 0 auto;min-width:0;max-width:100%;align-self:center}:host(.layout-stack--fill):not(.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap;justify-content:flex-start}:host(.layout-stack--fill.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:1 1 0;min-width:0;max-width:100%;align-self:stretch}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>.base-button:not(.base-button--full-width){flex:0 0 auto;align-self:center}@media (max-width: 39.98rem){:host(.layout-stack--stack-mobile) .layout-stack__track{gap:.45rem .6rem}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37
|
-
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LayoutStackComponent, decorators: [{
|
|
39
|
-
type: Component,
|
|
40
|
-
args: [{ selector: 'app-layout-stack', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-stack__track\">\r\n <ng-content />\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.layout-stack__track{display:flex;flex-wrap:wrap;width:100%;min-width:0;box-sizing:border-box;align-items:stretch;gap:.5rem .75rem;padding-top:.25rem}:host(.layout-stack--align-start) .layout-stack__track{justify-content:flex-start}:host(.layout-stack--align-center) .layout-stack__track{justify-content:center}:host(.layout-stack--align-end) .layout-stack__track{justify-content:flex-end}:host(.layout-stack--align-space-between) .layout-stack__track{justify-content:space-between}:host(.layout-stack--divider){margin-top:.25rem;padding-top:1rem;border-top:1px solid var(--ui-layout-stack-divider-color, #e8eaed)}:host:not(.layout-stack--fill) .layout-stack__track{align-items:center}:host:not(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:0 0 auto;min-width:0;max-width:100%;align-self:center}:host(.layout-stack--fill):not(.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap;justify-content:flex-start}:host(.layout-stack--fill.layout-stack--align-space-between) .layout-stack__track{flex-wrap:nowrap}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>*{flex:1 1 0;min-width:0;max-width:100%;align-self:stretch}:host(.layout-stack--fill) ::ng-deep .layout-stack__track>.base-button:not(.base-button--full-width){flex:0 0 auto;align-self:center}@media (max-width: 39.98rem){:host(.layout-stack--stack-mobile) .layout-stack__track{gap:.45rem .6rem}}\n"] }]
|
|
41
|
-
}], propDecorators: { align: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}], stackOnMobile: [{
|
|
44
|
-
type: Input,
|
|
45
|
-
args: [{ transform: booleanAttribute }]
|
|
46
|
-
}], stackDivider: [{
|
|
47
|
-
type: Input,
|
|
48
|
-
args: [{ transform: booleanAttribute }]
|
|
49
|
-
}], stackFill: [{
|
|
50
|
-
type: Input,
|
|
51
|
-
args: [{ transform: booleanAttribute }]
|
|
52
|
-
}], hostClass: [{
|
|
53
|
-
type: HostBinding,
|
|
54
|
-
args: ['class']
|
|
55
|
-
}] } });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXN0YWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZm9ybS1sYXlvdXQvbGF5b3V0LXN0YWNrL2xheW91dC1zdGFjay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2Zvcm0tbGF5b3V0L2xheW91dC1zdGFjay9sYXlvdXQtc3RhY2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBRWhFLHVFQUF1RTtBQVF2RSxNQUFNLE9BQU8sb0JBQW9CO0lBUGpDO1FBUUUsOERBQThEO1FBQ3JELFVBQUssR0FBcUIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBRXhEOzs7V0FHRztRQUNxQyxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUU3RCxvSEFBb0g7UUFDNUUsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFN0Q7OztXQUdHO1FBQ3FDLGNBQVMsR0FBRyxJQUFJLENBQUM7S0FnQjFEO0lBZEMsSUFDSSxTQUFTO1FBQ1gsTUFBTSxLQUFLLEdBQUcsQ0FBQyxjQUFjLEVBQUUsdUJBQXVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDOytHQWhDVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixnSUFRWCxnQkFBZ0Isa0RBR2hCLGdCQUFnQix5Q0FNaEIsZ0JBQWdCLGtGQ2xDdEMsdUVBR0E7OzRGRGNhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUl0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBTWtDLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBR0UsWUFBWTtzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFNRSxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUdsQyxTQUFTO3NCQURaLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXlvdXRTdGFja0FsaWduIH0gZnJvbSAnLi4vX21vZGVscy9mb3JtLWxheW91dC5tb2RlbCc7XG5cbi8qKiBGYWl4YSBmbGV4w612ZWwgY29tIHByb2plw6fDo28gZGUgY29udGXDumRvIChleC46IGJvdMO1ZXMgYWxpbmhhZG9zKS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sYXlvdXQtc3RhY2snLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LXN0YWNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xheW91dC1zdGFjay5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRTdGFja0NvbXBvbmVudCB7XG4gIC8qKiBEaXN0cmlidWnDp8OjbyBob3Jpem9udGFsIGRvcyBmaWxob3MgKGBqdXN0aWZ5LWNvbnRlbnRgKS4gKi9cbiAgQElucHV0KCkgYWxpZ246IExheW91dFN0YWNrQWxpZ24gPSBMYXlvdXRTdGFja0FsaWduLkVuZDtcblxuICAvKipcbiAgICogRW0gZWNyw6NzIGVzdHJlaXRvcywgYXBsaWNhIGFqdXN0ZXMgbGV2ZXMgKGV4LjogYGdhcGApIG1hbnRlbmRvIGZpbGEgKyBgd3JhcGAuXG4gICAqIFBvciBkZWZlaXRvIGB0cnVlYDsgbsOjbyDDqSBuZWNlc3PDoXJpbyBwYXNzYXIgbm8gdGVtcGxhdGUgbmEgbWFpb3JpYSBkb3MgY2Fzb3MuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc3RhY2tPbk1vYmlsZSA9IHRydWU7XG5cbiAgLyoqIExpbmhhIHNlcGFyYWRvcmEgYWNpbWEgZGEgZmFpeGEuIE5vbWUgZXhwbMOtY2l0byBwYXJhIGV2aXRhciBjb2xpc8OjbyBjb20gbyBlc3F1ZW1hIERPTSBlbSB0ZW1wbGF0ZXMgYW5pbmhhZG9zLiAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc3RhY2tEaXZpZGVyID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFF1YW5kbyBgdHJ1ZWAgKHBvciBkZWZlaXRvKSwgb3MgZmlsaG9zIHJlcGFydGVtIGEgbGFyZ3VyYSBkYSBmYWl4YSAoZXguOiB1bSBib3TDo28gYSAxMDAlO1xuICAgKiB2w6FyaW9zIGNvbSBgZmxleGAgaWd1YWwpLiBVc2UgYGZhbHNlYCBwYXJhIGZhaXhhcyBjb21wYWN0YXMgKGxhcmd1cmEgaW50csOtbnNlY2EpLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHN0YWNrRmlsbCA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IFsnbGF5b3V0LXN0YWNrJywgYGxheW91dC1zdGFjay0tYWxpZ24tJHt0aGlzLmFsaWdufWBdO1xuICAgIGlmICh0aGlzLnN0YWNrT25Nb2JpbGUpIHtcbiAgICAgIHBhcnRzLnB1c2goJ2xheW91dC1zdGFjay0tc3RhY2stbW9iaWxlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YWNrRGl2aWRlcikge1xuICAgICAgcGFydHMucHVzaCgnbGF5b3V0LXN0YWNrLS1kaXZpZGVyJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YWNrRmlsbCkge1xuICAgICAgcGFydHMucHVzaCgnbGF5b3V0LXN0YWNrLS1maWxsJyk7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcgJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsYXlvdXQtc3RhY2tfX3RyYWNrXCI+XHJcbiAgPG5nLWNvbnRlbnQgLz5cclxuPC9kaXY+XHJcbiJdfQ==
|