structra-ui 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- 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,40 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DataCardComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.variant = 'default';
|
|
6
|
-
this.showActions = true;
|
|
7
|
-
this.edit = new EventEmitter();
|
|
8
|
-
this.remove = new EventEmitter();
|
|
9
|
-
}
|
|
10
|
-
onEditClick(ev) {
|
|
11
|
-
ev.stopPropagation();
|
|
12
|
-
this.edit.emit();
|
|
13
|
-
}
|
|
14
|
-
onRemoveClick(ev) {
|
|
15
|
-
ev.stopPropagation();
|
|
16
|
-
this.remove.emit();
|
|
17
|
-
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DataCardComponent, isStandalone: true, selector: "app-data-card", inputs: { title: "title", subtitle: "subtitle", avatarText: "avatarText", variant: "variant", showActions: "showActions" }, outputs: { edit: "edit", remove: "remove" }, ngImport: i0, template: "<article\r\n class=\"data-card\"\r\n [class.data-card--default]=\"variant === 'default'\"\r\n [attr.data-variant]=\"variant\"\r\n>\r\n <div class=\"data-card__row\">\r\n <div class=\"data-card__main\">\r\n @if (avatarText?.trim()) {\r\n <div class=\"data-card__avatar\" aria-hidden=\"true\">\r\n {{ avatarText!.trim().slice(0, 2) }}\r\n </div>\r\n }\r\n <div class=\"data-card__text\">\r\n <h4 class=\"data-card__title\">{{ title }}</h4>\r\n @if (subtitle?.trim()) {\r\n <p class=\"data-card__subtitle\">{{ subtitle }}</p>\r\n }\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"data-card__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"onEditClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn data-card__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"onRemoveClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</article>\r\n", styles: [":host{display:block;min-width:0}.data-card{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:.85rem 1rem;transition:border-color .15s ease,box-shadow .15s ease}.data-card--default:hover{border-color:var(--app-color-selected-border, rgba(43, 127, 217, .28));box-shadow:0 1px 0 var(--app-color-border-subtle, rgba(26, 47, 69, .04))}.data-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.data-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.data-card__avatar{flex-shrink:0;width:2.35rem;height:2.35rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;letter-spacing:.02em;color:var(--app-color-text-primary, #2a4a66);background:linear-gradient(145deg,var(--app-color-avatar-gradient-start, rgba(43, 127, 217, .14)),var(--app-color-avatar-gradient-end, rgba(26, 47, 69, .06)));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));text-transform:uppercase}.data-card__text{min-width:0}.data-card__title{margin:0;font-size:.95rem;font-weight:600;line-height:1.3;color:var(--ui-field-float-input-text, #0f1b28);word-break:break-word}.data-card__subtitle{margin:.2rem 0 0;font-size:.8rem;line-height:1.35;color:var(--app-color-text-muted, #5a6e82)}.data-card__actions{display:flex;flex-shrink:0;align-items:center;gap:.35rem}.data-card__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-width:2rem;height:2rem;margin:0;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;transition:background .15s ease,border-color .15s ease}.data-card__icon-btn:hover{background:#2b7fd914}.data-card__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-card__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-card__icon-btn--danger:hover{background:#b71c1c0f}.data-card__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataCardComponent, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{ selector: 'app-data-card', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<article\r\n class=\"data-card\"\r\n [class.data-card--default]=\"variant === 'default'\"\r\n [attr.data-variant]=\"variant\"\r\n>\r\n <div class=\"data-card__row\">\r\n <div class=\"data-card__main\">\r\n @if (avatarText?.trim()) {\r\n <div class=\"data-card__avatar\" aria-hidden=\"true\">\r\n {{ avatarText!.trim().slice(0, 2) }}\r\n </div>\r\n }\r\n <div class=\"data-card__text\">\r\n <h4 class=\"data-card__title\">{{ title }}</h4>\r\n @if (subtitle?.trim()) {\r\n <p class=\"data-card__subtitle\">{{ subtitle }}</p>\r\n }\r\n </div>\r\n </div>\r\n @if (showActions) {\r\n <div class=\"data-card__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"onEditClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-card__icon-btn data-card__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"onRemoveClick($event)\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</article>\r\n", styles: [":host{display:block;min-width:0}.data-card{box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .1));background:var(--app-color-surface, #fff);padding:.85rem 1rem;transition:border-color .15s ease,box-shadow .15s ease}.data-card--default:hover{border-color:var(--app-color-selected-border, rgba(43, 127, 217, .28));box-shadow:0 1px 0 var(--app-color-border-subtle, rgba(26, 47, 69, .04))}.data-card__row{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.data-card__main{display:flex;align-items:flex-start;gap:.65rem;min-width:0;flex:1}.data-card__avatar{flex-shrink:0;width:2.35rem;height:2.35rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;letter-spacing:.02em;color:var(--app-color-text-primary, #2a4a66);background:linear-gradient(145deg,var(--app-color-avatar-gradient-start, rgba(43, 127, 217, .14)),var(--app-color-avatar-gradient-end, rgba(26, 47, 69, .06)));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));text-transform:uppercase}.data-card__text{min-width:0}.data-card__title{margin:0;font-size:.95rem;font-weight:600;line-height:1.3;color:var(--ui-field-float-input-text, #0f1b28);word-break:break-word}.data-card__subtitle{margin:.2rem 0 0;font-size:.8rem;line-height:1.35;color:var(--app-color-text-muted, #5a6e82)}.data-card__actions{display:flex;flex-shrink:0;align-items:center;gap:.35rem}.data-card__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;min-width:2rem;height:2rem;margin:0;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;transition:background .15s ease,border-color .15s ease}.data-card__icon-btn:hover{background:#2b7fd914}.data-card__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-card__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-card__icon-btn--danger:hover{background:#b71c1c0f}.data-card__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"] }]
|
|
24
|
-
}], propDecorators: { title: [{
|
|
25
|
-
type: Input,
|
|
26
|
-
args: [{ required: true }]
|
|
27
|
-
}], subtitle: [{
|
|
28
|
-
type: Input
|
|
29
|
-
}], avatarText: [{
|
|
30
|
-
type: Input
|
|
31
|
-
}], variant: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}], showActions: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}], edit: [{
|
|
36
|
-
type: Output
|
|
37
|
-
}], remove: [{
|
|
38
|
-
type: Output
|
|
39
|
-
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1kaXNwbGF5L2RhdGEtY2FyZC9kYXRhLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLWRpc3BsYXkvZGF0YS1jYXJkL2RhdGEtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7QUFTdkIsTUFBTSxPQUFPLGlCQUFpQjtJQVA5QjtRQVlXLFlBQU8sR0FBYyxTQUFTLENBQUM7UUFDL0IsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFVCxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQVd0RDtJQVRDLFdBQVcsQ0FBQyxFQUFTO1FBQ25CLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBUztRQUNyQixFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQW5CVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixrUENmOUIsbTJDQTJDQTs7NEZENUJhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdwQixLQUFLO3NCQUEvQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVhLElBQUk7c0JBQXRCLE1BQU07Z0JBQ1ksTUFBTTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kYXRhLWNhcmQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2RhdGEtY2FyZC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRhQ2FyZENvbXBvbmVudCB7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgdGl0bGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3VidGl0bGU/OiBzdHJpbmc7XHJcbiAgLyoqIDHigJMyIGNhcmFjdGVyZXMgcGFyYSBvIGPDrXJjdWxvIGRlIGluaWNpYWlzLiAqL1xyXG4gIEBJbnB1dCgpIGF2YXRhclRleHQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmFyaWFudDogJ2RlZmF1bHQnID0gJ2RlZmF1bHQnO1xyXG4gIEBJbnB1dCgpIHNob3dBY3Rpb25zID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgb25FZGl0Q2xpY2soZXY6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuZWRpdC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvblJlbW92ZUNsaWNrKGV2OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnJlbW92ZS5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxhcnRpY2xlXHJcbiAgY2xhc3M9XCJkYXRhLWNhcmRcIlxyXG4gIFtjbGFzcy5kYXRhLWNhcmQtLWRlZmF1bHRdPVwidmFyaWFudCA9PT0gJ2RlZmF1bHQnXCJcclxuICBbYXR0ci5kYXRhLXZhcmlhbnRdPVwidmFyaWFudFwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiZGF0YS1jYXJkX19yb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLWNhcmRfX21haW5cIj5cclxuICAgICAgQGlmIChhdmF0YXJUZXh0Py50cmltKCkpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImRhdGEtY2FyZF9fYXZhdGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAge3sgYXZhdGFyVGV4dCEudHJpbSgpLnNsaWNlKDAsIDIpIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLWNhcmRfX3RleHRcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJkYXRhLWNhcmRfX3RpdGxlXCI+e3sgdGl0bGUgfX08L2g0PlxyXG4gICAgICAgIEBpZiAoc3VidGl0bGU/LnRyaW0oKSkge1xyXG4gICAgICAgIDxwIGNsYXNzPVwiZGF0YS1jYXJkX19zdWJ0aXRsZVwiPnt7IHN1YnRpdGxlIH19PC9wPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZiAoc2hvd0FjdGlvbnMpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLWNhcmRfX2FjdGlvbnNcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1jYXJkX19pY29uLWJ0blwiXHJcbiAgICAgICAgdGl0bGU9XCJFZGl0YXJcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJFZGl0YXJcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkVkaXRDbGljaygkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtYXJyb3dzLXJvdGF0ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtY2FyZF9faWNvbi1idG4gZGF0YS1jYXJkX19pY29uLWJ0bi0tZGFuZ2VyXCJcclxuICAgICAgICB0aXRsZT1cIlJlbW92ZXJcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJSZW1vdmVyXCJcclxuICAgICAgICAoY2xpY2spPVwib25SZW1vdmVDbGljaygkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2FydGljbGU+XHJcbiJdfQ==
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DataGridActionsCellRendererComponent {
|
|
4
|
-
agInit(params) {
|
|
5
|
-
this.params = params;
|
|
6
|
-
}
|
|
7
|
-
refresh() {
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
/** `params.context` nem sempre vem preenchido; o grid guarda o mesmo objeto em `gridOptions.context`. */
|
|
11
|
-
get actionsContext() {
|
|
12
|
-
const p = this.params;
|
|
13
|
-
if (p.context?.onEditRow && p.context?.onRemoveRow) {
|
|
14
|
-
return p.context;
|
|
15
|
-
}
|
|
16
|
-
const api = p.api;
|
|
17
|
-
const fromGrid = api?.getGridOption?.('context');
|
|
18
|
-
return fromGrid;
|
|
19
|
-
}
|
|
20
|
-
edit() {
|
|
21
|
-
const row = this.params.data;
|
|
22
|
-
const ctx = this.actionsContext;
|
|
23
|
-
if (row != null && ctx) {
|
|
24
|
-
ctx.onEditRow(row);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
remove() {
|
|
28
|
-
const row = this.params.data;
|
|
29
|
-
const ctx = this.actionsContext;
|
|
30
|
-
if (row != null && ctx) {
|
|
31
|
-
ctx.onRemoveRow(row);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataGridActionsCellRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DataGridActionsCellRendererComponent, isStandalone: true, selector: "app-data-grid-actions-cell-renderer", ngImport: i0, template: "<div class=\"data-grid-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"edit()\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn data-grid-actions__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"remove()\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n</div>\r\n", styles: [".data-grid-actions{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;padding:.1rem 0}.data-grid-actions__icon-btn{display:inline-flex;align-items:center;justify-content:center;margin:0;width:2rem;min-width:2rem;height:2rem;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.data-grid-actions__icon-btn:hover{background:#2b7fd914}.data-grid-actions__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-grid-actions__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-grid-actions__icon-btn--danger:hover{background:#b71c1c0f}.data-grid-actions__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataGridActionsCellRendererComponent, decorators: [{
|
|
38
|
-
type: Component,
|
|
39
|
-
args: [{ selector: 'app-data-grid-actions-cell-renderer', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-grid-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn\"\r\n title=\"Editar\"\r\n aria-label=\"Editar\"\r\n (click)=\"edit()\"\r\n >\r\n <span class=\"fa-solid fa-arrows-rotate\" aria-hidden=\"true\"></span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"data-grid-actions__icon-btn data-grid-actions__icon-btn--danger\"\r\n title=\"Remover\"\r\n aria-label=\"Remover\"\r\n (click)=\"remove()\"\r\n >\r\n <span class=\"fa-solid fa-trash-can\" aria-hidden=\"true\"></span>\r\n </button>\r\n</div>\r\n", styles: [".data-grid-actions{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:.35rem;padding:.1rem 0}.data-grid-actions__icon-btn{display:inline-flex;align-items:center;justify-content:center;margin:0;width:2rem;min-width:2rem;height:2rem;padding:0;border:1px solid rgba(43,127,217,.45);border-radius:6px;background:#fff;color:var(--ui-field-float-border-focus, #2b7fd9);font-size:.95rem;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.data-grid-actions__icon-btn:hover{background:#2b7fd914}.data-grid-actions__icon-btn:focus-visible{outline:2px solid var(--ui-field-float-border-focus, #2b7fd9);outline-offset:2px}.data-grid-actions__icon-btn--danger{border-color:#b71c1c73;color:var(--ui-field-input-invalid-border, #b91c1c)}.data-grid-actions__icon-btn--danger:hover{background:#b71c1c0f}.data-grid-actions__icon-btn--danger:focus-visible{outline-color:var(--ui-field-input-invalid-border, #b91c1c)}\n"] }]
|
|
40
|
-
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLWFjdGlvbnMtY2VsbC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RhdGEtZGlzcGxheS9kYXRhLWdyaWQvZGF0YS1ncmlkLWFjdGlvbnMtY2VsbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RhdGEtZGlzcGxheS9kYXRhLWdyaWQvZGF0YS1ncmlkLWFjdGlvbnMtY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWlCbkUsTUFBTSxPQUFPLG9DQUFvQztJQUsvQyxNQUFNLENBQUMsTUFBMkI7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUViLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHlHQUF5RztJQUN6RyxJQUFZLGNBQWM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BRWQsQ0FBQztRQUNGLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNuRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUEwQixDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBRWxDLENBQUM7UUFDZCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzdCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDaEMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNoQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDdkIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzsrR0E1Q1Usb0NBQW9DO21HQUFwQyxvQ0FBb0MsK0ZDakJqRCw2bEJBb0JBOzs0RkRIYSxvQ0FBb0M7a0JBUGhELFNBQVM7K0JBQ0UscUNBQXFDLGNBQ25DLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUgeyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xyXG5pbXBvcnQgdHlwZSB7IEdyaWRBcGksIElDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcblxyXG4vKiogQ29udGV4dG8gaW5qZXRhZG8gcGVsbyB7QGxpbmsgRGF0YUdyaWRDb21wb25lbnR9IChuw6NvIGV4cG9ydGFkbyBwYXJhIGNvbnN1bWlkb3JlcykuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YUdyaWRBY3Rpb25zQ29udGV4dDxUID0gdW5rbm93bj4ge1xyXG4gIG9uRWRpdFJvdzogKHJvdzogVCkgPT4gdm9pZDtcclxuICBvblJlbW92ZVJvdzogKHJvdzogVCkgPT4gdm9pZDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZGF0YS1ncmlkLWFjdGlvbnMtY2VsbC1yZW5kZXJlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1ncmlkLWFjdGlvbnMtY2VsbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2RhdGEtZ3JpZC1hY3Rpb25zLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YUdyaWRBY3Rpb25zQ2VsbFJlbmRlcmVyQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXBcclxue1xyXG4gIHBhcmFtcyE6IElDZWxsUmVuZGVyZXJQYXJhbXMgJiB7IGNvbnRleHQ/OiBEYXRhR3JpZEFjdGlvbnNDb250ZXh0IH07XHJcblxyXG4gIGFnSW5pdChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zIGFzIElDZWxsUmVuZGVyZXJQYXJhbXMgJiB7XHJcbiAgICAgIGNvbnRleHQ/OiBEYXRhR3JpZEFjdGlvbnNDb250ZXh0O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKiogYHBhcmFtcy5jb250ZXh0YCBuZW0gc2VtcHJlIHZlbSBwcmVlbmNoaWRvOyBvIGdyaWQgZ3VhcmRhIG8gbWVzbW8gb2JqZXRvIGVtIGBncmlkT3B0aW9ucy5jb250ZXh0YC4gKi9cclxuICBwcml2YXRlIGdldCBhY3Rpb25zQ29udGV4dCgpOiBEYXRhR3JpZEFjdGlvbnNDb250ZXh0IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IHAgPSB0aGlzLnBhcmFtcyBhcyBJQ2VsbFJlbmRlcmVyUGFyYW1zICYge1xyXG4gICAgICBjb250ZXh0PzogRGF0YUdyaWRBY3Rpb25zQ29udGV4dDtcclxuICAgIH07XHJcbiAgICBpZiAocC5jb250ZXh0Py5vbkVkaXRSb3cgJiYgcC5jb250ZXh0Py5vblJlbW92ZVJvdykge1xyXG4gICAgICByZXR1cm4gcC5jb250ZXh0O1xyXG4gICAgfVxyXG4gICAgY29uc3QgYXBpID0gcC5hcGkgYXMgR3JpZEFwaSB8IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IGZyb21HcmlkID0gYXBpPy5nZXRHcmlkT3B0aW9uPy4oJ2NvbnRleHQnKSBhc1xyXG4gICAgICB8IERhdGFHcmlkQWN0aW9uc0NvbnRleHRcclxuICAgICAgfCB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gZnJvbUdyaWQ7XHJcbiAgfVxyXG5cclxuICBlZGl0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgcm93ID0gdGhpcy5wYXJhbXMuZGF0YTtcclxuICAgIGNvbnN0IGN0eCA9IHRoaXMuYWN0aW9uc0NvbnRleHQ7XHJcbiAgICBpZiAocm93ICE9IG51bGwgJiYgY3R4KSB7XHJcbiAgICAgIGN0eC5vbkVkaXRSb3cocm93KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHJvdyA9IHRoaXMucGFyYW1zLmRhdGE7XHJcbiAgICBjb25zdCBjdHggPSB0aGlzLmFjdGlvbnNDb250ZXh0O1xyXG4gICAgaWYgKHJvdyAhPSBudWxsICYmIGN0eCkge1xyXG4gICAgICBjdHgub25SZW1vdmVSb3cocm93KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRhdGEtZ3JpZC1hY3Rpb25zXCI+XHJcbiAgPGJ1dHRvblxyXG4gICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICBjbGFzcz1cImRhdGEtZ3JpZC1hY3Rpb25zX19pY29uLWJ0blwiXHJcbiAgICB0aXRsZT1cIkVkaXRhclwiXHJcbiAgICBhcmlhLWxhYmVsPVwiRWRpdGFyXCJcclxuICAgIChjbGljayk9XCJlZGl0KClcIlxyXG4gID5cclxuICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtYXJyb3dzLXJvdGF0ZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZGF0YS1ncmlkLWFjdGlvbnNfX2ljb24tYnRuIGRhdGEtZ3JpZC1hY3Rpb25zX19pY29uLWJ0bi0tZGFuZ2VyXCJcclxuICAgIHRpdGxlPVwiUmVtb3ZlclwiXHJcbiAgICBhcmlhLWxhYmVsPVwiUmVtb3ZlclwiXHJcbiAgICAoY2xpY2spPVwicmVtb3ZlKClcIlxyXG4gID5cclxuICAgIDxzcGFuIGNsYXNzPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, NgZone, Output, numberAttribute, } from '@angular/core';
|
|
2
|
-
import { AgGridAngular } from 'ag-grid-angular';
|
|
3
|
-
import { buildEmptyStateOverlayHtml } from '../empty-state/empty-state-overlay.util';
|
|
4
|
-
import { DataGridActionsCellRendererComponent, } from './data-grid-actions-cell-renderer.component';
|
|
5
|
-
import { SkeletonTableComponent } from '../../loading/skeleton-loading';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
const ACTIONS_RENDERER_NAME = 'dataGridActions';
|
|
8
|
-
export class DataGridComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.ngZone = inject(NgZone);
|
|
11
|
-
this.gridApi = null;
|
|
12
|
-
this.pageSize = 15;
|
|
13
|
-
this.loading = false;
|
|
14
|
-
/**
|
|
15
|
-
* Após remontar a grade (ex.: skeleton), volta a esta página (0-based).
|
|
16
|
-
* Só aplicado em `gridReady` e quando o valor muda com a API já disponível.
|
|
17
|
-
*/
|
|
18
|
-
this.initialPaginationPage = 0;
|
|
19
|
-
this.height = '420px';
|
|
20
|
-
this.emptyMessage = 'Sem registros para mostrar.';
|
|
21
|
-
this.pagination = true;
|
|
22
|
-
/** Se `false`, omite colunas com `type: 'actions'` (editar/remover). Por omissão `true`. */
|
|
23
|
-
this.showActionsColumn = true;
|
|
24
|
-
this.edit = new EventEmitter();
|
|
25
|
-
this.remove = new EventEmitter();
|
|
26
|
-
/** Reservado para evolução (seleção de linhas); não ligado na v1 para manter a UI minimal. */
|
|
27
|
-
this.selectionChange = new EventEmitter();
|
|
28
|
-
/** Paginação interna do ag-Grid: mudança de página ou de `pageSize`. */
|
|
29
|
-
this.paginationChanged = new EventEmitter();
|
|
30
|
-
this.frameworkComponents = {
|
|
31
|
-
[ACTIONS_RENDERER_NAME]: DataGridActionsCellRendererComponent,
|
|
32
|
-
};
|
|
33
|
-
this.paginationPageSizeChoices = [10, 15, 25, 50];
|
|
34
|
-
this.defaultColDef = {
|
|
35
|
-
sortable: true,
|
|
36
|
-
resizable: true,
|
|
37
|
-
flex: 1,
|
|
38
|
-
minWidth: 120,
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* O AG Grid corre muitos callbacks fora da `NgZone`; sem `run()`, o pai com `OnPush`
|
|
42
|
-
* não volta a renderizar e editar/remover parece “morto”.
|
|
43
|
-
*/
|
|
44
|
-
this.actionsContext = {
|
|
45
|
-
onEditRow: (row) => this.ngZone.run(() => {
|
|
46
|
-
this.edit.emit(row);
|
|
47
|
-
}),
|
|
48
|
-
onRemoveRow: (row) => this.ngZone.run(() => {
|
|
49
|
-
this.remove.emit(row);
|
|
50
|
-
}),
|
|
51
|
-
};
|
|
52
|
-
this.agColumnDefs = [];
|
|
53
|
-
/**
|
|
54
|
-
* IDs estáveis por linha (evita `''` duplicado quando não existe `id` nos dados).
|
|
55
|
-
* Tenta `id`, depois `sku` (comum em grades de produto), senão impressão digital do objeto.
|
|
56
|
-
*/
|
|
57
|
-
this.getRowId = (params) => {
|
|
58
|
-
const d = params.data;
|
|
59
|
-
if (!d) {
|
|
60
|
-
return '__no-row-data';
|
|
61
|
-
}
|
|
62
|
-
const idVal = d['id'];
|
|
63
|
-
if (idVal !== undefined && idVal !== null && String(idVal).trim() !== '') {
|
|
64
|
-
return String(idVal);
|
|
65
|
-
}
|
|
66
|
-
const skuVal = d['sku'];
|
|
67
|
-
if (skuVal !== undefined && skuVal !== null && String(skuVal).trim() !== '') {
|
|
68
|
-
return `sku:${String(skuVal)}`;
|
|
69
|
-
}
|
|
70
|
-
return `row:${this.stableRowFingerprint(d)}`;
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* O AG Grid avisa se `paginationPageSize` não está em `paginationPageSizeSelector`.
|
|
75
|
-
* Junta `pageSize` às opções base quando o consumidor usa um valor fora da lista (ex.: 8).
|
|
76
|
-
*/
|
|
77
|
-
get effectivePaginationPageSizeSelector() {
|
|
78
|
-
const size = Number(this.pageSize);
|
|
79
|
-
const base = [...this.paginationPageSizeChoices];
|
|
80
|
-
if (Number.isFinite(size) && size > 0 && !base.includes(size)) {
|
|
81
|
-
base.push(size);
|
|
82
|
-
base.sort((a, b) => a - b);
|
|
83
|
-
}
|
|
84
|
-
return base;
|
|
85
|
-
}
|
|
86
|
-
get skeletonColumnCount() {
|
|
87
|
-
const n = this.columns?.length ?? 4;
|
|
88
|
-
return Math.min(8, Math.max(2, n));
|
|
89
|
-
}
|
|
90
|
-
get skeletonRowCount() {
|
|
91
|
-
return Math.min(14, Math.max(5, this.pageSize));
|
|
92
|
-
}
|
|
93
|
-
ngOnInit() {
|
|
94
|
-
if (this.columns?.length) {
|
|
95
|
-
this.agColumnDefs = this.mapColumnsToColDef(this.columns);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/** Identificador determinístico e curto para linhas sem chave explícita. */
|
|
99
|
-
stableRowFingerprint(d) {
|
|
100
|
-
const keys = Object.keys(d).sort();
|
|
101
|
-
const s = keys.map((k) => `${k}:${JSON.stringify(d[k])}`).join('|');
|
|
102
|
-
let h = 2166136261;
|
|
103
|
-
for (let i = 0; i < s.length; i++) {
|
|
104
|
-
h ^= s.charCodeAt(i);
|
|
105
|
-
h = Math.imul(h, 16777619);
|
|
106
|
-
}
|
|
107
|
-
return (h >>> 0).toString(36);
|
|
108
|
-
}
|
|
109
|
-
ngOnChanges(changes) {
|
|
110
|
-
if (changes['loading'] && this.loading) {
|
|
111
|
-
this.detachPaginationListenerIfLive();
|
|
112
|
-
this.gridApi = null;
|
|
113
|
-
}
|
|
114
|
-
if ((changes['columns'] || changes['showActionsColumn']) &&
|
|
115
|
-
this.columns?.length) {
|
|
116
|
-
this.agColumnDefs = this.mapColumnsToColDef(this.columns);
|
|
117
|
-
}
|
|
118
|
-
if (changes['emptyMessage'] &&
|
|
119
|
-
this.gridApi &&
|
|
120
|
-
!this.gridApi.isDestroyed() &&
|
|
121
|
-
changes['emptyMessage'].previousValue !==
|
|
122
|
-
changes['emptyMessage'].currentValue) {
|
|
123
|
-
this.gridApi.setGridOption('overlayNoRowsTemplate', this.emptyOverlayTemplate);
|
|
124
|
-
}
|
|
125
|
-
if (changes['initialPaginationPage'] &&
|
|
126
|
-
this.gridApi &&
|
|
127
|
-
!this.gridApi.isDestroyed() &&
|
|
128
|
-
!changes['initialPaginationPage'].firstChange) {
|
|
129
|
-
this.applyInitialPaginationPage(this.gridApi);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
ngOnDestroy() {
|
|
133
|
-
this.detachPaginationListenerIfLive();
|
|
134
|
-
this.gridApi = null;
|
|
135
|
-
}
|
|
136
|
-
get emptyOverlayTemplate() {
|
|
137
|
-
return buildEmptyStateOverlayHtml(this.emptyMessage);
|
|
138
|
-
}
|
|
139
|
-
get hostHeight() {
|
|
140
|
-
return (this.height && this.height.trim()) || '420px';
|
|
141
|
-
}
|
|
142
|
-
onGridReady(ev) {
|
|
143
|
-
this.detachPaginationListenerIfLive();
|
|
144
|
-
this.gridApi = ev.api;
|
|
145
|
-
ev.api.setGridOption('context', this.actionsContext);
|
|
146
|
-
this.paginationChangedListener = (event) => {
|
|
147
|
-
const e = event;
|
|
148
|
-
if (!e?.newPage && !e?.newPageSize) {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
const currentPage = ev.api.paginationGetCurrentPage();
|
|
152
|
-
this.ngZone.run(() => {
|
|
153
|
-
this.paginationChanged.emit({
|
|
154
|
-
currentPage,
|
|
155
|
-
newPage: !!e.newPage,
|
|
156
|
-
newPageSize: !!e.newPageSize,
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
};
|
|
160
|
-
ev.api.addEventListener('paginationChanged', this.paginationChangedListener);
|
|
161
|
-
queueMicrotask(() => this.applyInitialPaginationPage(ev.api));
|
|
162
|
-
}
|
|
163
|
-
applyInitialPaginationPage(api) {
|
|
164
|
-
if (api.isDestroyed()) {
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
const p = this.initialPaginationPage;
|
|
168
|
-
if (p > 0 && api.paginationGetTotalPages() > p) {
|
|
169
|
-
api.paginationGoToPage(p);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/** Evita `removeEventListener` na API depois do grid destruído (ex.: `@if (loading)` remove o DOM). */
|
|
173
|
-
detachPaginationListenerIfLive() {
|
|
174
|
-
const api = this.gridApi;
|
|
175
|
-
const fn = this.paginationChangedListener;
|
|
176
|
-
if (api && fn && !api.isDestroyed()) {
|
|
177
|
-
api.removeEventListener('paginationChanged', fn);
|
|
178
|
-
}
|
|
179
|
-
this.paginationChangedListener = undefined;
|
|
180
|
-
}
|
|
181
|
-
columnsForGrid(cols) {
|
|
182
|
-
if (this.showActionsColumn) {
|
|
183
|
-
return cols;
|
|
184
|
-
}
|
|
185
|
-
return cols.filter((c) => c.type !== 'actions');
|
|
186
|
-
}
|
|
187
|
-
mapColumnsToColDef(cols) {
|
|
188
|
-
return this.columnsForGrid(cols).map((c) => {
|
|
189
|
-
if (c.type === 'actions') {
|
|
190
|
-
return {
|
|
191
|
-
colId: String(c.key),
|
|
192
|
-
headerName: c.header,
|
|
193
|
-
sortable: false,
|
|
194
|
-
filter: false,
|
|
195
|
-
resizable: false,
|
|
196
|
-
suppressMovable: true,
|
|
197
|
-
cellRenderer: ACTIONS_RENDERER_NAME,
|
|
198
|
-
width: c.width ?? 168,
|
|
199
|
-
flex: c.flex,
|
|
200
|
-
pinned: 'left',
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
const field = String(c.key);
|
|
204
|
-
const def = {
|
|
205
|
-
field: field,
|
|
206
|
-
headerName: c.header,
|
|
207
|
-
sortable: c.sortable !== false,
|
|
208
|
-
width: c.width,
|
|
209
|
-
flex: c.flex,
|
|
210
|
-
};
|
|
211
|
-
if (c.type === 'number') {
|
|
212
|
-
def.type = 'numericColumn';
|
|
213
|
-
}
|
|
214
|
-
return def;
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
218
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DataGridComponent, isStandalone: true, selector: "app-data-grid", inputs: { rows: "rows", columns: "columns", pageSize: "pageSize", loading: "loading", initialPaginationPage: ["initialPaginationPage", "initialPaginationPage", numberAttribute], height: "height", emptyMessage: "emptyMessage", pagination: "pagination", showActionsColumn: "showActionsColumn" }, outputs: { edit: "edit", remove: "remove", selectionChange: "selectionChange", paginationChanged: "paginationChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"data-grid ag-theme-alpine\" [style.height]=\"hostHeight\">\n @if (loading) {\n <div class=\"data-grid__skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <span class=\"visually-hidden\">A carregar grid...</span>\n <app-skeleton-table [columnCount]=\"skeletonColumnCount\" [rowCount]=\"skeletonRowCount\" [showPager]=\"pagination\" />\n </div>\n } @else {\n <ag-grid-angular\n class=\"data-grid__ag\"\n [rowData]=\"rows\"\n [columnDefs]=\"agColumnDefs\"\n [components]=\"frameworkComponents\"\n [context]=\"actionsContext\"\n [defaultColDef]=\"defaultColDef\"\n [pagination]=\"pagination\"\n [paginationPageSize]=\"pageSize\"\n [paginationPageSizeSelector]=\"effectivePaginationPageSizeSelector\"\n [suppressCellFocus]=\"true\"\n [animateRows]=\"false\"\n [domLayout]=\"'normal'\"\n [overlayNoRowsTemplate]=\"emptyOverlayTemplate\"\n [getRowId]=\"getRowId\"\n (gridReady)=\"onGridReady($event)\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.data-grid{width:100%;min-width:0;min-height:200px;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.data-grid__ag{display:block;width:100%;height:100%}.data-grid__skeleton{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:host ::ng-deep .data-grid.ag-theme-alpine{--ag-border-color: var(--app-color-border-subtle, rgba(26, 47, 69, .12));--ag-header-background-color: var(--app-color-tab-inactive-bg, #f3f6f9);--ag-odd-row-background-color: var(--app-color-background, #fafbfc);--ag-row-hover-color: var(--app-color-hover-bg, rgba(43, 127, 217, .06));--ag-font-size: .9rem;--ag-header-height: 40px;--ag-row-height: 40px;--ag-border-radius: 0;--ag-wrapper-border-radius: 10px;--ag-selected-row-background-color: var(--app-color-selected-bg, rgba(43, 127, 217, .1));--ag-checkbox-unchecked-color: var(--app-color-text-muted, rgba(26, 47, 69, .35));--ag-range-selection-border-color: var(--ui-field-float-border-focus, #2b7fd9);font-family:inherit;color:var(--ui-field-float-input-text, #0f1b28)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-header-cell-label{font-weight:600;font-size:.85rem;color:var(--app-color-text-primary, #3d5266)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-paging-panel{border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.85rem;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}\n"], dependencies: [{ kind: "component", type: AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: SkeletonTableComponent, selector: "app-skeleton-table", inputs: ["columnCount", "rowCount", "showPager", "animate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
219
|
-
}
|
|
220
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataGridComponent, decorators: [{
|
|
221
|
-
type: Component,
|
|
222
|
-
args: [{ selector: 'app-data-grid', standalone: true, imports: [AgGridAngular, SkeletonTableComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-grid ag-theme-alpine\" [style.height]=\"hostHeight\">\n @if (loading) {\n <div class=\"data-grid__skeleton\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <span class=\"visually-hidden\">A carregar grid...</span>\n <app-skeleton-table [columnCount]=\"skeletonColumnCount\" [rowCount]=\"skeletonRowCount\" [showPager]=\"pagination\" />\n </div>\n } @else {\n <ag-grid-angular\n class=\"data-grid__ag\"\n [rowData]=\"rows\"\n [columnDefs]=\"agColumnDefs\"\n [components]=\"frameworkComponents\"\n [context]=\"actionsContext\"\n [defaultColDef]=\"defaultColDef\"\n [pagination]=\"pagination\"\n [paginationPageSize]=\"pageSize\"\n [paginationPageSizeSelector]=\"effectivePaginationPageSizeSelector\"\n [suppressCellFocus]=\"true\"\n [animateRows]=\"false\"\n [domLayout]=\"'normal'\"\n [overlayNoRowsTemplate]=\"emptyOverlayTemplate\"\n [getRowId]=\"getRowId\"\n (gridReady)=\"onGridReady($event)\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0;box-sizing:border-box}.data-grid{width:100%;min-width:0;min-height:200px;box-sizing:border-box;border-radius:10px;overflow:hidden;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));background:var(--app-color-surface, #fff)}.data-grid__ag{display:block;width:100%;height:100%}.data-grid__skeleton{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:host ::ng-deep .data-grid.ag-theme-alpine{--ag-border-color: var(--app-color-border-subtle, rgba(26, 47, 69, .12));--ag-header-background-color: var(--app-color-tab-inactive-bg, #f3f6f9);--ag-odd-row-background-color: var(--app-color-background, #fafbfc);--ag-row-hover-color: var(--app-color-hover-bg, rgba(43, 127, 217, .06));--ag-font-size: .9rem;--ag-header-height: 40px;--ag-row-height: 40px;--ag-border-radius: 0;--ag-wrapper-border-radius: 10px;--ag-selected-row-background-color: var(--app-color-selected-bg, rgba(43, 127, 217, .1));--ag-checkbox-unchecked-color: var(--app-color-text-muted, rgba(26, 47, 69, .35));--ag-range-selection-border-color: var(--ui-field-float-border-focus, #2b7fd9);font-family:inherit;color:var(--ui-field-float-input-text, #0f1b28)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-header-cell-label{font-weight:600;font-size:.85rem;color:var(--app-color-text-primary, #3d5266)}:host ::ng-deep .data-grid.ag-theme-alpine .ag-paging-panel{border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08));font-size:.85rem;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:5.5rem;padding:1.25rem 1rem;border-radius:10px;border:1px dashed var(--app-color-empty-border, rgba(26, 47, 69, .14));background:var(--app-color-empty-bg, rgba(243, 246, 249, .55));color:var(--app-color-tab-inactive-text, #51667a);font-size:.9rem;text-align:center;line-height:1.4}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state.empty-state--embed{min-height:4.5rem;padding:1rem .75rem}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:1rem;color:var(--app-color-text-secondary, rgba(61, 82, 102, .85));background:var(--app-color-skeleton-track, rgba(26, 47, 69, .06));border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .08))}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__message{margin:0;max-width:28rem;font-size:.9rem;font-weight:500;color:var(--app-color-tab-inactive-text, #51667a)}:host ::ng-deep .data-grid.ag-theme-alpine .empty-state .empty-state__description{margin:0;max-width:28rem;font-size:.8rem;color:var(--app-color-text-muted, #6b8299)}\n"] }]
|
|
223
|
-
}], propDecorators: { rows: [{
|
|
224
|
-
type: Input,
|
|
225
|
-
args: [{ required: true }]
|
|
226
|
-
}], columns: [{
|
|
227
|
-
type: Input,
|
|
228
|
-
args: [{ required: true }]
|
|
229
|
-
}], pageSize: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], loading: [{
|
|
232
|
-
type: Input
|
|
233
|
-
}], initialPaginationPage: [{
|
|
234
|
-
type: Input,
|
|
235
|
-
args: [{ transform: numberAttribute }]
|
|
236
|
-
}], height: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], emptyMessage: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], pagination: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], showActionsColumn: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], edit: [{
|
|
245
|
-
type: Output
|
|
246
|
-
}], remove: [{
|
|
247
|
-
type: Output
|
|
248
|
-
}], selectionChange: [{
|
|
249
|
-
type: Output
|
|
250
|
-
}], paginationChanged: [{
|
|
251
|
-
type: Output
|
|
252
|
-
}] } });
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1kaXNwbGF5L2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLWRpc3BsYXkvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBSU4sTUFBTSxFQUVOLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUWhELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3JGLE9BQU8sRUFDTCxvQ0FBb0MsR0FFckMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFeEUsTUFBTSxxQkFBcUIsR0FBRyxpQkFBaUIsQ0FBQztBQWtCaEQsTUFBTSxPQUFPLGlCQUFpQjtJQVI5QjtRQVNtQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLFlBQU8sR0FBc0IsSUFBSSxDQUFDO1FBTWpDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCOzs7V0FHRztRQUNvQywwQkFBcUIsR0FBRyxDQUFDLENBQUM7UUFDeEQsV0FBTSxHQUFrQixPQUFPLENBQUM7UUFDaEMsaUJBQVksR0FBRyw2QkFBNkIsQ0FBQztRQUM3QyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQzNCLDRGQUE0RjtRQUNuRixzQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFZixTQUFJLEdB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QUMsSUFBSSxHQUFHLGVBQWUsQ0FBQztZQUM3QixDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBeFBVLGlCQUFpQjttR0FBakIsaUJBQWlCLGlOQWNSLGVBQWUsNlJDN0RyQyw2K0JBMEJBLDRoR0RnQlksYUFBYSxra1NBQUUsc0JBQXNCOzs0RkFLcEMsaUJBQWlCO2tCQVI3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLENBQUMsbUJBRy9CLHVCQUF1QixDQUFDLE1BQU07OEJBT3BCLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLE9BQU87c0JBQWpDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUVoQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFLaUMscUJBQXFCO3NCQUEzRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFDNUIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRWEsSUFBSTtzQkFBdEIsTUFBTTtnQkFDWSxNQUFNO3NCQUF4QixNQUFNO2dCQUVZLGVBQWU7c0JBQWpDLE1BQU07Z0JBR1ksaUJBQWlCO3NCQUFuQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHR5cGUge1xuICBDb2xEZWYsXG4gIEdldFJvd0lkUGFyYW1zLFxuICBHcmlkQXBpLFxuICBHcmlkUmVhZHlFdmVudCxcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHR5cGUgeyBEYXRhR3JpZENvbHVtbiB9IGZyb20gJy4uL19tb2RlbHMvZGF0YS1ncmlkLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBidWlsZEVtcHR5U3RhdGVPdmVybGF5SHRtbCB9IGZyb20gJy4uL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLW92ZXJsYXkudXRpbCc7XG5pbXBvcnQge1xuICBEYXRhR3JpZEFjdGlvbnNDZWxsUmVuZGVyZXJDb21wb25lbnQsXG4gIHR5cGUgRGF0YUdyaWRBY3Rpb25zQ29udGV4dCxcbn0gZnJvbSAnLi9kYXRhLWdyaWQtYWN0aW9ucy1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa2VsZXRvblRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbG9hZGluZy9za2VsZXRvbi1sb2FkaW5nJztcblxuY29uc3QgQUNUSU9OU19SRU5ERVJFUl9OQU1FID0gJ2RhdGFHcmlkQWN0aW9ucyc7XG5cbi8qKiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIG11ZGEgZGUgcMOhZ2luYSBvdSB0YW1hbmhvIGRlIHDDoWdpbmEgbmEgZ3JhZGUgcGFnaW5hZGEuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFHcmlkUGFnaW5hdGlvbkNoYW5nZUV2ZW50IHtcbiAgLyoqIMONbmRpY2UgMC1iYXNlZCBkYSBww6FnaW5hIGF0dWFsIChBUEkgYWctR3JpZCkuICovXG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIG5ld1BhZ2U6IGJvb2xlYW47XG4gIG5ld1BhZ2VTaXplOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGF0YS1ncmlkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FnR3JpZEFuZ3VsYXIsIFNrZWxldG9uVGFibGVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhR3JpZENvbXBvbmVudDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSBncmlkQXBpOiBHcmlkQXBpPFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcGFnaW5hdGlvbkNoYW5nZWRMaXN0ZW5lcj86IChldmVudDogdW5rbm93bikgPT4gdm9pZDtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSByb3dzITogVFtdO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb2x1bW5zITogRGF0YUdyaWRDb2x1bW48VD5bXTtcblxuICBASW5wdXQoKSBwYWdlU2l6ZSA9IDE1O1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIC8qKlxuICAgKiBBcMOzcyByZW1vbnRhciBhIGdyYWRlIChleC46IHNrZWxldG9uKSwgdm9sdGEgYSBlc3RhIHDDoWdpbmEgKDAtYmFzZWQpLlxuICAgKiBTw7MgYXBsaWNhZG8gZW0gYGdyaWRSZWFkeWAgZSBxdWFuZG8gbyB2YWxvciBtdWRhIGNvbSBhIEFQSSBqw6EgZGlzcG9uw612ZWwuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBpbml0aWFsUGFnaW5hdGlvblBhZ2UgPSAwO1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IG51bGwgPSAnNDIwcHgnO1xuICBASW5wdXQoKSBlbXB0eU1lc3NhZ2UgPSAnU2VtIHJlZ2lzdHJvcyBwYXJhIG1vc3RyYXIuJztcbiAgQElucHV0KCkgcGFnaW5hdGlvbiA9IHRydWU7XG4gIC8qKiBTZSBgZmFsc2VgLCBvbWl0ZSBjb2x1bmFzIGNvbSBgdHlwZTogJ2FjdGlvbnMnYCAoZWRpdGFyL3JlbW92ZXIpLiBQb3Igb21pc3PDo28gYHRydWVgLiAqL1xuICBASW5wdXQoKSBzaG93QWN0aW9uc0NvbHVtbiA9IHRydWU7XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIC8qKiBSZXNlcnZhZG8gcGFyYSBldm9sdcOnw6NvIChzZWxlw6fDo28gZGUgbGluaGFzKTsgbsOjbyBsaWdhZG8gbmEgdjEgcGFyYSBtYW50ZXIgYSBVSSBtaW5pbWFsLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUW10+KCk7XG5cbiAgLyoqIFBhZ2luYcOnw6NvIGludGVybmEgZG8gYWctR3JpZDogbXVkYW7Dp2EgZGUgcMOhZ2luYSBvdSBkZSBgcGFnZVNpemVgLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgcGFnaW5hdGlvbkNoYW5nZWQgPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RGF0YUdyaWRQYWdpbmF0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgcmVhZG9ubHkgZnJhbWV3b3JrQ29tcG9uZW50cyA9IHtcbiAgICBbQUNUSU9OU19SRU5ERVJFUl9OQU1FXTogRGF0YUdyaWRBY3Rpb25zQ2VsbFJlbmRlcmVyQ29tcG9uZW50LFxuICB9O1xuXG4gIHJlYWRvbmx5IHBhZ2luYXRpb25QYWdlU2l6ZUNob2ljZXMgPSBbMTAsIDE1LCAyNSwgNTBdO1xuXG4gIC8qKlxuICAgKiBPIEFHIEdyaWQgYXZpc2Egc2UgYHBhZ2luYXRpb25QYWdlU2l6ZWAgbsOjbyBlc3TDoSBlbSBgcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JgLlxuICAgKiBKdW50YSBgcGFnZVNpemVgIMOgcyBvcMOnw7VlcyBiYXNlIHF1YW5kbyBvIGNvbnN1bWlkb3IgdXNhIHVtIHZhbG9yIGZvcmEgZGEgbGlzdGEgKGV4LjogOCkuXG4gICAqL1xuICBnZXQgZWZmZWN0aXZlUGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3IoKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHNpemUgPSBOdW1iZXIodGhpcy5wYWdlU2l6ZSk7XG4gICAgY29uc3QgYmFzZSA9IFsuLi50aGlzLnBhZ2luYXRpb25QYWdlU2l6ZUNob2ljZXNdO1xuICAgIGlmIChOdW1iZXIuaXNGaW5pdGUoc2l6ZSkgJiYgc2l6ZSA+IDAgJiYgIWJhc2UuaW5jbHVkZXMoc2l6ZSkpIHtcbiAgICAgIGJhc2UucHVzaChzaXplKTtcbiAgICAgIGJhc2Uuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZTtcbiAgfVxuXG4gIGdldCBza2VsZXRvbkNvbHVtbkNvdW50KCk6IG51bWJlciB7XG4gICAgY29uc3QgbiA9IHRoaXMuY29sdW1ucz8ubGVuZ3RoID8/IDQ7XG4gICAgcmV0dXJuIE1hdGgubWluKDgsIE1hdGgubWF4KDIsIG4pKTtcbiAgfVxuXG4gIGdldCBza2VsZXRvblJvd0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWluKDE0LCBNYXRoLm1heCg1LCB0aGlzLnBhZ2VTaXplKSk7XG4gIH1cblxuICByZWFkb25seSBkZWZhdWx0Q29sRGVmOiBDb2xEZWY8VD4gPSB7XG4gICAgc29ydGFibGU6IHRydWUsXG4gICAgcmVzaXphYmxlOiB0cnVlLFxuICAgIGZsZXg6IDEsXG4gICAgbWluV2lkdGg6IDEyMCxcbiAgfTtcblxuICAvKipcbiAgICogTyBBRyBHcmlkIGNvcnJlIG11aXRvcyBjYWxsYmFja3MgZm9yYSBkYSBgTmdab25lYDsgc2VtIGBydW4oKWAsIG8gcGFpIGNvbSBgT25QdXNoYFxuICAgKiBuw6NvIHZvbHRhIGEgcmVuZGVyaXphciBlIGVkaXRhci9yZW1vdmVyIHBhcmVjZSDigJxtb3J0b+KAnS5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbnNDb250ZXh0OiBEYXRhR3JpZEFjdGlvbnNDb250ZXh0PFQ+ID0ge1xuICAgIG9uRWRpdFJvdzogKHJvdzogVCkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuZWRpdC5lbWl0KHJvdyk7XG4gICAgICB9KSxcbiAgICBvblJlbW92ZVJvdzogKHJvdzogVCkgPT5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlLmVtaXQocm93KTtcbiAgICAgIH0pLFxuICB9O1xuXG4gIGFnQ29sdW1uRGVmczogQ29sRGVmPFQ+W10gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb2x1bW5zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYWdDb2x1bW5EZWZzID0gdGhpcy5tYXBDb2x1bW5zVG9Db2xEZWYodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSURzIGVzdMOhdmVpcyBwb3IgbGluaGEgKGV2aXRhIGAnJ2AgZHVwbGljYWRvIHF1YW5kbyBuw6NvIGV4aXN0ZSBgaWRgIG5vcyBkYWRvcykuXG4gICAqIFRlbnRhIGBpZGAsIGRlcG9pcyBgc2t1YCAoY29tdW0gZW0gZ3JhZGVzIGRlIHByb2R1dG8pLCBzZW7Do28gaW1wcmVzc8OjbyBkaWdpdGFsIGRvIG9iamV0by5cbiAgICovXG4gIHJlYWRvbmx5IGdldFJvd0lkID0gKHBhcmFtczogR2V0Um93SWRQYXJhbXM8VD4pOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IGQgPSBwYXJhbXMuZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIWQpIHtcbiAgICAgIHJldHVybiAnX19uby1yb3ctZGF0YSc7XG4gICAgfVxuICAgIGNvbnN0IGlkVmFsID0gZFsnaWQnXTtcbiAgICBpZiAoaWRWYWwgIT09IHVuZGVmaW5lZCAmJiBpZFZhbCAhPT0gbnVsbCAmJiBTdHJpbmcoaWRWYWwpLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaWRWYWwpO1xuICAgIH1cbiAgICBjb25zdCBza3VWYWwgPSBkWydza3UnXTtcbiAgICBpZiAoc2t1VmFsICE9PSB1bmRlZmluZWQgJiYgc2t1VmFsICE9PSBudWxsICYmIFN0cmluZyhza3VWYWwpLnRyaW0oKSAhPT0gJycpIHtcbiAgICAgIHJldHVybiBgc2t1OiR7U3RyaW5nKHNrdVZhbCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGByb3c6JHt0aGlzLnN0YWJsZVJvd0ZpbmdlcnByaW50KGQpfWA7XG4gIH07XG5cbiAgLyoqIElkZW50aWZpY2Fkb3IgZGV0ZXJtaW7DrXN0aWNvIGUgY3VydG8gcGFyYSBsaW5oYXMgc2VtIGNoYXZlIGV4cGzDrWNpdGEuICovXG4gIHByaXZhdGUgc3RhYmxlUm93RmluZ2VycHJpbnQoZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkKS5zb3J0KCk7XG4gICAgY29uc3QgcyA9IGtleXMubWFwKChrKSA9PiBgJHtrfToke0pTT04uc3RyaW5naWZ5KGRba10pfWApLmpvaW4oJ3wnKTtcbiAgICBsZXQgaCA9IDIxNjYxMzYyNjE7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoIF49IHMuY2hhckNvZGVBdChpKTtcbiAgICAgIGggPSBNYXRoLmltdWwoaCwgMTY3Nzc2MTkpO1xuICAgIH1cbiAgICByZXR1cm4gKGggPj4+IDApLnRvU3RyaW5nKDM2KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbG9hZGluZyddICYmIHRoaXMubG9hZGluZykge1xuICAgICAgdGhpcy5kZXRhY2hQYWdpbmF0aW9uTGlzdGVuZXJJZkxpdmUoKTtcbiAgICAgIHRoaXMuZ3JpZEFwaSA9IG51bGw7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIChjaGFuZ2VzWydjb2x1bW5zJ10gfHwgY2hhbmdlc1snc2hvd0FjdGlvbnNDb2x1bW4nXSkgJiZcbiAgICAgIHRoaXMuY29sdW1ucz8ubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aGlzLmFnQ29sdW1uRGVmcyA9IHRoaXMubWFwQ29sdW1uc1RvQ29sRGVmKHRoaXMuY29sdW1ucyk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ2VtcHR5TWVzc2FnZSddICYmXG4gICAgICB0aGlzLmdyaWRBcGkgJiZcbiAgICAgICF0aGlzLmdyaWRBcGkuaXNEZXN0cm95ZWQoKSAmJlxuICAgICAgY2hhbmdlc1snZW1wdHlNZXNzYWdlJ10ucHJldmlvdXNWYWx1ZSAhPT1cbiAgICAgICAgY2hhbmdlc1snZW1wdHlNZXNzYWdlJ10uY3VycmVudFZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbihcbiAgICAgICAgJ292ZXJsYXlOb1Jvd3NUZW1wbGF0ZScsXG4gICAgICAgIHRoaXMuZW1wdHlPdmVybGF5VGVtcGxhdGUsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWydpbml0aWFsUGFnaW5hdGlvblBhZ2UnXSAmJlxuICAgICAgdGhpcy5ncmlkQXBpICYmXG4gICAgICAhdGhpcy5ncmlkQXBpLmlzRGVzdHJveWVkKCkgJiZcbiAgICAgICFjaGFuZ2VzWydpbml0aWFsUGFnaW5hdGlvblBhZ2UnXS5maXJzdENoYW5nZVxuICAgICkge1xuICAgICAgdGhpcy5hcHBseUluaXRpYWxQYWdpbmF0aW9uUGFnZSh0aGlzLmdyaWRBcGkpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWNoUGFnaW5hdGlvbkxpc3RlbmVySWZMaXZlKCk7XG4gICAgdGhpcy5ncmlkQXBpID0gbnVsbDtcbiAgfVxuXG4gIGdldCBlbXB0eU92ZXJsYXlUZW1wbGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBidWlsZEVtcHR5U3RhdGVPdmVybGF5SHRtbCh0aGlzLmVtcHR5TWVzc2FnZSk7XG4gIH1cblxuICBnZXQgaG9zdEhlaWdodCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5oZWlnaHQgJiYgdGhpcy5oZWlnaHQudHJpbSgpKSB8fCAnNDIwcHgnO1xuICB9XG5cbiAgb25HcmlkUmVhZHkoZXY6IEdyaWRSZWFkeUV2ZW50PFQ+KTogdm9pZCB7XG4gICAgdGhpcy5kZXRhY2hQYWdpbmF0aW9uTGlzdGVuZXJJZkxpdmUoKTtcblxuICAgIHRoaXMuZ3JpZEFwaSA9IGV2LmFwaTtcbiAgICBldi5hcGkuc2V0R3JpZE9wdGlvbignY29udGV4dCcsIHRoaXMuYWN0aW9uc0NvbnRleHQpO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlZExpc3RlbmVyID0gKGV2ZW50OiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBlID0gZXZlbnQgYXMgeyBuZXdQYWdlPzogYm9vbGVhbjsgbmV3UGFnZVNpemU/OiBib29sZWFuIH07XG4gICAgICBpZiAoIWU/Lm5ld1BhZ2UgJiYgIWU/Lm5ld1BhZ2VTaXplKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gZXYuYXBpLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpO1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICBjdXJyZW50UGFnZSxcbiAgICAgICAgICBuZXdQYWdlOiAhIWUubmV3UGFnZSxcbiAgICAgICAgICBuZXdQYWdlU2l6ZTogISFlLm5ld1BhZ2VTaXplLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgZXYuYXBpLmFkZEV2ZW50TGlzdGVuZXIoJ3BhZ2luYXRpb25DaGFuZ2VkJywgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlZExpc3RlbmVyKTtcblxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMuYXBwbHlJbml0aWFsUGFnaW5hdGlvblBhZ2UoZXYuYXBpKSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5SW5pdGlhbFBhZ2luYXRpb25QYWdlKGFwaTogR3JpZEFwaTxUPik6IHZvaWQge1xuICAgIGlmIChhcGkuaXNEZXN0cm95ZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwID0gdGhpcy5pbml0aWFsUGFnaW5hdGlvblBhZ2U7XG4gICAgaWYgKHAgPiAwICYmIGFwaS5wYWdpbmF0aW9uR2V0VG90YWxQYWdlcygpID4gcCkge1xuICAgICAgYXBpLnBhZ2luYXRpb25Hb1RvUGFnZShwKTtcbiAgICB9XG4gIH1cblxuICAvKiogRXZpdGEgYHJlbW92ZUV2ZW50TGlzdGVuZXJgIG5hIEFQSSBkZXBvaXMgZG8gZ3JpZCBkZXN0cnXDrWRvIChleC46IGBAaWYgKGxvYWRpbmcpYCByZW1vdmUgbyBET00pLiAqL1xuICBwcml2YXRlIGRldGFjaFBhZ2luYXRpb25MaXN0ZW5lcklmTGl2ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBhcGkgPSB0aGlzLmdyaWRBcGk7XG4gICAgY29uc3QgZm4gPSB0aGlzLnBhZ2luYXRpb25DaGFuZ2VkTGlzdGVuZXI7XG4gICAgaWYgKGFwaSAmJiBmbiAmJiAhYXBpLmlzRGVzdHJveWVkKCkpIHtcbiAgICAgIGFwaS5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdpbmF0aW9uQ2hhbmdlZCcsIGZuKTtcbiAgICB9XG4gICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlZExpc3RlbmVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2x1bW5zRm9yR3JpZChjb2xzOiBEYXRhR3JpZENvbHVtbjxUPltdKTogRGF0YUdyaWRDb2x1bW48VD5bXSB7XG4gICAgaWYgKHRoaXMuc2hvd0FjdGlvbnNDb2x1bW4pIHtcbiAgICAgIHJldHVybiBjb2xzO1xuICAgIH1cbiAgICByZXR1cm4gY29scy5maWx0ZXIoKGMpID0+IGMudHlwZSAhPT0gJ2FjdGlvbnMnKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwQ29sdW1uc1RvQ29sRGVmKGNvbHM6IERhdGFHcmlkQ29sdW1uPFQ+W10pOiBDb2xEZWY8VD5bXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uc0ZvckdyaWQoY29scykubWFwKChjKSA9PiB7XG4gICAgICBpZiAoYy50eXBlID09PSAnYWN0aW9ucycpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2xJZDogU3RyaW5nKGMua2V5KSxcbiAgICAgICAgICBoZWFkZXJOYW1lOiBjLmhlYWRlcixcbiAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgZmlsdGVyOiBmYWxzZSxcbiAgICAgICAgICByZXNpemFibGU6IGZhbHNlLFxuICAgICAgICAgIHN1cHByZXNzTW92YWJsZTogdHJ1ZSxcbiAgICAgICAgICBjZWxsUmVuZGVyZXI6IEFDVElPTlNfUkVOREVSRVJfTkFNRSxcbiAgICAgICAgICB3aWR0aDogYy53aWR0aCA/PyAxNjgsXG4gICAgICAgICAgZmxleDogYy5mbGV4LFxuICAgICAgICAgIHBpbm5lZDogJ2xlZnQnLFxuICAgICAgICB9IGFzIENvbERlZjxUPjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpZWxkID0gU3RyaW5nKGMua2V5KTtcbiAgICAgIGNvbnN0IGRlZjogQ29sRGVmPFQ+ID0ge1xuICAgICAgICBmaWVsZDogZmllbGQgYXMgQ29sRGVmPFQ+WydmaWVsZCddLFxuICAgICAgICBoZWFkZXJOYW1lOiBjLmhlYWRlcixcbiAgICAgICAgc29ydGFibGU6IGMuc29ydGFibGUgIT09IGZhbHNlLFxuICAgICAgICB3aWR0aDogYy53aWR0aCxcbiAgICAgICAgZmxleDogYy5mbGV4LFxuICAgICAgfTtcbiAgICAgIGlmIChjLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGRlZi50eXBlID0gJ251bWVyaWNDb2x1bW4nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZjtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGEtZ3JpZCBhZy10aGVtZS1hbHBpbmVcIiBbc3R5bGUuaGVpZ2h0XT1cImhvc3RIZWlnaHRcIj5cbiAgQGlmIChsb2FkaW5nKSB7XG4gIDxkaXYgY2xhc3M9XCJkYXRhLWdyaWRfX3NrZWxldG9uXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGFyaWEtYnVzeT1cInRydWVcIj5cbiAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkEgY2FycmVnYXIgZ3JpZC4uLjwvc3Bhbj5cbiAgICA8YXBwLXNrZWxldG9uLXRhYmxlIFtjb2x1bW5Db3VudF09XCJza2VsZXRvbkNvbHVtbkNvdW50XCIgW3Jvd0NvdW50XT1cInNrZWxldG9uUm93Q291bnRcIiBbc2hvd1BhZ2VyXT1cInBhZ2luYXRpb25cIiAvPlxuICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gIDxhZy1ncmlkLWFuZ3VsYXJcbiAgICBjbGFzcz1cImRhdGEtZ3JpZF9fYWdcIlxuICAgIFtyb3dEYXRhXT1cInJvd3NcIlxuICAgIFtjb2x1bW5EZWZzXT1cImFnQ29sdW1uRGVmc1wiXG4gICAgW2NvbXBvbmVudHNdPVwiZnJhbWV3b3JrQ29tcG9uZW50c1wiXG4gICAgW2NvbnRleHRdPVwiYWN0aW9uc0NvbnRleHRcIlxuICAgIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIlxuICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICAgIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgIFtwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvcl09XCJlZmZlY3RpdmVQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3RvclwiXG4gICAgW3N1cHByZXNzQ2VsbEZvY3VzXT1cInRydWVcIlxuICAgIFthbmltYXRlUm93c109XCJmYWxzZVwiXG4gICAgW2RvbUxheW91dF09XCInbm9ybWFsJ1wiXG4gICAgW292ZXJsYXlOb1Jvd3NUZW1wbGF0ZV09XCJlbXB0eU92ZXJsYXlUZW1wbGF0ZVwiXG4gICAgW2dldFJvd0lkXT1cImdldFJvd0lkXCJcbiAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIlxuICAvPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input, booleanAttribute } from '@angular/core';
|
|
2
|
-
import { SkeletonListComponent } from '../../loading/skeleton-loading';
|
|
3
|
-
import { EmptyStateComponent } from '../empty-state/empty-state.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* Lista vertical de registros com estados de loading e vazio padronizados.
|
|
7
|
-
* O conteúdo de cada linha deve usar `app-list-item` (ou composição equivalente).
|
|
8
|
-
*/
|
|
9
|
-
export class DataListComponent {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.loading = false;
|
|
12
|
-
this.empty = false;
|
|
13
|
-
this.emptyTitle = 'Sem registros';
|
|
14
|
-
this.emptyDescription = '';
|
|
15
|
-
this.emptyIconClass = 'fa-solid fa-inbox';
|
|
16
|
-
/** Linhas de skeleton em modo loading. */
|
|
17
|
-
this.skeletonRows = 5;
|
|
18
|
-
}
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DataListComponent, isStandalone: true, selector: "app-data-list", inputs: { loading: ["loading", "loading", booleanAttribute], empty: ["empty", "empty", booleanAttribute], emptyTitle: "emptyTitle", emptyDescription: "emptyDescription", emptyIconClass: "emptyIconClass", skeletonRows: "skeletonRows" }, ngImport: i0, template: "<div class=\"data-list\" [attr.aria-busy]=\"loading ? true : null\">\r\n @if (loading) {\r\n <div class=\"data-list__loading\" role=\"status\" aria-live=\"polite\">\r\n <app-skeleton-list\r\n [rows]=\"skeletonRows\"\r\n [leading]=\"true\"\r\n rowGap=\"0.5rem\"\r\n lineHeight=\"0.85rem\"\r\n />\r\n </div>\r\n } @else if (empty) {\r\n <app-empty-state\r\n [message]=\"emptyTitle\"\r\n [description]=\"emptyDescription\"\r\n [iconClass]=\"emptyIconClass\"\r\n [embed]=\"true\"\r\n />\r\n } @else {\r\n <div class=\"data-list__items\" role=\"list\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.data-list{width:100%;min-width:0;box-sizing:border-box}.data-list__loading{padding:.25rem 0}.data-list__items{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}\n"], dependencies: [{ kind: "component", type: SkeletonListComponent, selector: "app-skeleton-list", inputs: ["rows", "leading", "rowGap", "lineHeight", "animate"] }, { kind: "component", type: EmptyStateComponent, selector: "app-empty-state", inputs: ["message", "description", "iconClass", "variant", "embed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataListComponent, decorators: [{
|
|
23
|
-
type: Component,
|
|
24
|
-
args: [{ selector: 'app-data-list', standalone: true, imports: [SkeletonListComponent, EmptyStateComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-list\" [attr.aria-busy]=\"loading ? true : null\">\r\n @if (loading) {\r\n <div class=\"data-list__loading\" role=\"status\" aria-live=\"polite\">\r\n <app-skeleton-list\r\n [rows]=\"skeletonRows\"\r\n [leading]=\"true\"\r\n rowGap=\"0.5rem\"\r\n lineHeight=\"0.85rem\"\r\n />\r\n </div>\r\n } @else if (empty) {\r\n <app-empty-state\r\n [message]=\"emptyTitle\"\r\n [description]=\"emptyDescription\"\r\n [iconClass]=\"emptyIconClass\"\r\n [embed]=\"true\"\r\n />\r\n } @else {\r\n <div class=\"data-list__items\" role=\"list\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block;width:100%;min-width:0}.data-list{width:100%;min-width:0;box-sizing:border-box}.data-list__loading{padding:.25rem 0}.data-list__items{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none}\n"] }]
|
|
25
|
-
}], propDecorators: { loading: [{
|
|
26
|
-
type: Input,
|
|
27
|
-
args: [{ transform: booleanAttribute }]
|
|
28
|
-
}], empty: [{
|
|
29
|
-
type: Input,
|
|
30
|
-
args: [{ transform: booleanAttribute }]
|
|
31
|
-
}], emptyTitle: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}], emptyDescription: [{
|
|
34
|
-
type: Input
|
|
35
|
-
}], emptyIconClass: [{
|
|
36
|
-
type: Input
|
|
37
|
-
}], skeletonRows: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1kaXNwbGF5L2RhdGEtbGlzdC9kYXRhLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLWRpc3BsYXkvZGF0YS1saXN0L2RhdGEtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFFM0U7OztHQUdHO0FBU0gsTUFBTSxPQUFPLGlCQUFpQjtJQVI5QjtRQVMwQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFN0MsZUFBVSxHQUFHLGVBQWUsQ0FBQztRQUU3QixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEIsbUJBQWMsR0FBRyxtQkFBbUIsQ0FBQztRQUU5QywwQ0FBMEM7UUFDakMsaUJBQVksR0FBRyxDQUFDLENBQUM7S0FDM0I7K0dBYlksaUJBQWlCO21HQUFqQixpQkFBaUIsMkZBQ1IsZ0JBQWdCLDZCQUVoQixnQkFBZ0IsNkpDbkJ0Qyw0cUJBdUJBLHVTRFpZLHFCQUFxQiw4SEFBRSxtQkFBbUI7OzRGQUt6QyxpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixDQUFDLG1CQUdwQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUdQLE9BQU87c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRUUsS0FBSztzQkFBNUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFN0IsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIGJvb2xlYW5BdHRyaWJ1dGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNrZWxldG9uTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2xvYWRpbmcvc2tlbGV0b24tbG9hZGluZyc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcblxuLyoqXG4gKiBMaXN0YSB2ZXJ0aWNhbCBkZSByZWdpc3Ryb3MgY29tIGVzdGFkb3MgZGUgbG9hZGluZyBlIHZhemlvIHBhZHJvbml6YWRvcy5cbiAqIE8gY29udGXDumRvIGRlIGNhZGEgbGluaGEgZGV2ZSB1c2FyIGBhcHAtbGlzdC1pdGVtYCAob3UgY29tcG9zacOnw6NvIGVxdWl2YWxlbnRlKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRhdGEtbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtTa2VsZXRvbkxpc3RDb21wb25lbnQsIEVtcHR5U3RhdGVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RhdGEtbGlzdC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhTGlzdENvbXBvbmVudCB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGVtcHR5ID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZW1wdHlUaXRsZSA9ICdTZW0gcmVnaXN0cm9zJztcblxuICBASW5wdXQoKSBlbXB0eURlc2NyaXB0aW9uID0gJyc7XG5cbiAgQElucHV0KCkgZW1wdHlJY29uQ2xhc3MgPSAnZmEtc29saWQgZmEtaW5ib3gnO1xuXG4gIC8qKiBMaW5oYXMgZGUgc2tlbGV0b24gZW0gbW9kbyBsb2FkaW5nLiAqL1xuICBASW5wdXQoKSBza2VsZXRvblJvd3MgPSA1O1xufVxuIiwiPGRpdiBjbGFzcz1cImRhdGEtbGlzdFwiIFthdHRyLmFyaWEtYnVzeV09XCJsb2FkaW5nID8gdHJ1ZSA6IG51bGxcIj5cclxuICBAaWYgKGxvYWRpbmcpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLWxpc3RfX2xvYWRpbmdcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XHJcbiAgICAgIDxhcHAtc2tlbGV0b24tbGlzdFxyXG4gICAgICAgIFtyb3dzXT1cInNrZWxldG9uUm93c1wiXHJcbiAgICAgICAgW2xlYWRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgcm93R2FwPVwiMC41cmVtXCJcclxuICAgICAgICBsaW5lSGVpZ2h0PVwiMC44NXJlbVwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuICB9IEBlbHNlIGlmIChlbXB0eSkge1xyXG4gICAgPGFwcC1lbXB0eS1zdGF0ZVxyXG4gICAgICBbbWVzc2FnZV09XCJlbXB0eVRpdGxlXCJcclxuICAgICAgW2Rlc2NyaXB0aW9uXT1cImVtcHR5RGVzY3JpcHRpb25cIlxyXG4gICAgICBbaWNvbkNsYXNzXT1cImVtcHR5SWNvbkNsYXNzXCJcclxuICAgICAgW2VtYmVkXT1cInRydWVcIlxyXG4gICAgLz5cclxuICB9IEBlbHNlIHtcclxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLWxpc3RfX2l0ZW1zXCIgcm9sZT1cImxpc3RcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgLz5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/** Barra de consulta: pesquisa, filtros, ações e contador (slots `toolbar-start` / `toolbar-end`). */
|
|
4
|
-
export class DataToolbarComponent {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DataToolbarComponent, isStandalone: true, selector: "app-data-toolbar", ngImport: i0, template: "<div class=\"data-toolbar\">\r\n <div class=\"data-toolbar__start\">\r\n <ng-content select=\"[toolbar-start]\"></ng-content>\r\n </div>\r\n <div class=\"data-toolbar__end\">\r\n <ng-content select=\"[toolbar-end]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.data-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-start;gap:.65rem .75rem;width:100%;min-width:0;box-sizing:border-box}.data-toolbar__start,.data-toolbar__end{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0}.data-toolbar__start{flex:1 1 auto;min-width:0}.data-toolbar__end{flex:0 1 auto;justify-content:flex-end}.data-toolbar__end:not(:empty){margin-left:auto}@media (max-width: 39.98rem){.data-toolbar{flex-direction:column;align-items:stretch}.data-toolbar__end{justify-content:flex-start}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7
|
-
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DataToolbarComponent, decorators: [{
|
|
9
|
-
type: Component,
|
|
10
|
-
args: [{ selector: 'app-data-toolbar', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"data-toolbar\">\r\n <div class=\"data-toolbar__start\">\r\n <ng-content select=\"[toolbar-start]\"></ng-content>\r\n </div>\r\n <div class=\"data-toolbar__end\">\r\n <ng-content select=\"[toolbar-end]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100%;min-width:0}.data-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:flex-start;gap:.65rem .75rem;width:100%;min-width:0;box-sizing:border-box}.data-toolbar__start,.data-toolbar__end{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;min-width:0}.data-toolbar__start{flex:1 1 auto;min-width:0}.data-toolbar__end{flex:0 1 auto;justify-content:flex-end}.data-toolbar__end:not(:empty){margin-left:auto}@media (max-width: 39.98rem){.data-toolbar{flex-direction:column;align-items:stretch}.data-toolbar__end{justify-content:flex-start}}\n"] }]
|
|
11
|
-
}] });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZGF0YS1kaXNwbGF5L2RhdGEtdG9vbGJhci9kYXRhLXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLWRpc3BsYXkvZGF0YS10b29sYmFyL2RhdGEtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVuRSxzR0FBc0c7QUFRdEcsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO21HQUFwQixvQkFBb0IsNEVDVmpDLDBRQVFBOzs0RkRFYSxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKiBCYXJyYSBkZSBjb25zdWx0YTogcGVzcXVpc2EsIGZpbHRyb3MsIGHDp8O1ZXMgZSBjb250YWRvciAoc2xvdHMgYHRvb2xiYXItc3RhcnRgIC8gYHRvb2xiYXItZW5kYCkuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWRhdGEtdG9vbGJhcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZGF0YS10b29sYmFyLmNvbXBvbmVudC5zY3NzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFUb29sYmFyQ29tcG9uZW50IHt9XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRhLXRvb2xiYXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGF0YS10b29sYmFyX19zdGFydFwiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Rvb2xiYXItc3RhcnRdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJkYXRhLXRvb2xiYXJfX2VuZFwiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Rvb2xiYXItZW5kXVwiPjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Uma linha chave → valor para usar **dentro** de `app-details-view` (projeção).
|
|
5
|
-
* O host usa `display: contents` para manter `<dl>` > `<dt>`/`<dd>` válidos.
|
|
6
|
-
*/
|
|
7
|
-
export class DetailsFieldComponent {
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DetailsFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DetailsFieldComponent, isStandalone: true, selector: "app-details-field", inputs: { label: "label" }, host: { styleAttribute: "display: contents", classAttribute: "details-field-host" }, ngImport: i0, template: "<dt class=\"details-field__label\">{{ label }}</dt>\r\n<dd class=\"details-field__value\">\r\n <ng-content />\r\n</dd>\r\n", styles: [".details-field__label{margin:0;padding:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--app-color-text-muted, #6b8299);line-height:1.35}.details-field__value{margin:0;padding:0;font-size:.9rem;font-weight:500;color:var(--app-color-text-primary, #1a2f45);line-height:1.45;word-break:break-word;min-width:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DetailsFieldComponent, decorators: [{
|
|
12
|
-
type: Component,
|
|
13
|
-
args: [{ selector: 'app-details-field', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
14
|
-
class: 'details-field-host',
|
|
15
|
-
style: 'display: contents',
|
|
16
|
-
}, template: "<dt class=\"details-field__label\">{{ label }}</dt>\r\n<dd class=\"details-field__value\">\r\n <ng-content />\r\n</dd>\r\n", styles: [".details-field__label{margin:0;padding:0;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--app-color-text-muted, #6b8299);line-height:1.35}.details-field__value{margin:0;padding:0;font-size:.9rem;font-weight:500;color:var(--app-color-text-primary, #1a2f45);line-height:1.45;word-break:break-word;min-width:0}\n"] }]
|
|
17
|
-
}], propDecorators: { label: [{
|
|
18
|
-
type: Input,
|
|
19
|
-
args: [{ required: true }]
|
|
20
|
-
}] } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlscy1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RhdGEtZGlzcGxheS9kZXRhaWxzLWZpZWxkL2RldGFpbHMtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kYXRhLWRpc3BsYXkvZGV0YWlscy1maWVsZC9kZXRhaWxzLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUxRTs7O0dBR0c7QUFZSCxNQUFNLE9BQU8scUJBQXFCOytHQUFyQixxQkFBcUI7bUdBQXJCLHFCQUFxQiw4TENqQmxDLDZIQUlBOzs0RkRhYSxxQkFBcUI7a0JBWGpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksbUJBR0MsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsb0JBQW9CO3dCQUMzQixLQUFLLEVBQUUsbUJBQW1CO3FCQUMzQjs4QkFHMEIsS0FBSztzQkFBL0IsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIFVtYSBsaW5oYSBjaGF2ZSDihpIgdmFsb3IgcGFyYSB1c2FyICoqZGVudHJvKiogZGUgYGFwcC1kZXRhaWxzLXZpZXdgIChwcm9qZcOnw6NvKS5cclxuICogTyBob3N0IHVzYSBgZGlzcGxheTogY29udGVudHNgIHBhcmEgbWFudGVyIGA8ZGw+YCA+IGA8ZHQ+YC9gPGRkPmAgdsOhbGlkb3MuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZXRhaWxzLWZpZWxkJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXRhaWxzLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZGV0YWlscy1maWVsZC5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaG9zdDoge1xyXG4gICAgY2xhc3M6ICdkZXRhaWxzLWZpZWxkLWhvc3QnLFxyXG4gICAgc3R5bGU6ICdkaXNwbGF5OiBjb250ZW50cycsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERldGFpbHNGaWVsZENvbXBvbmVudCB7XHJcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbGFiZWwhOiBzdHJpbmc7XHJcbn1cclxuIiwiPGR0IGNsYXNzPVwiZGV0YWlscy1maWVsZF9fbGFiZWxcIj57eyBsYWJlbCB9fTwvZHQ+XHJcbjxkZCBjbGFzcz1cImRldGFpbHMtZmllbGRfX3ZhbHVlXCI+XHJcbiAgPG5nLWNvbnRlbnQgLz5cclxuPC9kZD5cclxuIl19
|