@praxisui/settings-panel 1.0.0-beta.3 → 1.0.0-beta.30
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
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @praxisui/settings-panel
|
|
2
2
|
|
|
3
|
+
## 🔰 Exemplos / Quickstart
|
|
4
|
+
|
|
5
|
+
Para ver esta biblioteca em funcionamento em uma aplicação completa, utilize o projeto de exemplo (Quickstart):
|
|
6
|
+
|
|
7
|
+
- Repositório: https://github.com/codexrodrigues/praxis-ui-quickstart
|
|
8
|
+
- O Quickstart demonstra a integração das bibliotecas `@praxisui/*` em um app Angular, incluindo instalação, configuração e uso em telas reais.
|
|
9
|
+
|
|
3
10
|
Painel de configurações baseado em drawer para hospedar editores de configuração com UX consistente (Apply, Save & Close, Reset, Cancel).
|
|
4
11
|
|
|
5
12
|
## Instalação
|
|
@@ -260,7 +260,7 @@ class SettingsPanelComponent {
|
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SettingsPanelComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
263
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: SettingsPanelComponent, isStandalone: true, selector: "praxis-settings-panel", host: { listeners: { "document:keydown": "handleKeydown($event)" } }, viewQueries: [{ propertyName: "contentHost", first: true, predicate: ["contentHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n class=\"settings-panel\"\n [class.expanded]=\"expanded\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <header class=\"settings-panel-header\">\n <h2 class=\"settings-panel-title\" [id]=\"titleId\">\n <mat-icon *ngIf=\"titleIcon\" class=\"title-icon\" [praxisIcon]=\"titleIcon\"></mat-icon>\n <span>{{ title }}</span>\n </h2>\n <span class=\"spacer\"></span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n [attr.aria-expanded]=\"expanded\"\n [matTooltip]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n (click)=\"toggleExpand()\"\n >\n <mat-icon [praxisIcon]=\"expanded ? 'close_fullscreen' : 'open_in_full'\"></mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Fechar\"\n matTooltip=\"Fechar\"\n (click)=\"onCancel()\"\n >\n <mat-icon [praxisIcon]=\"'close'\"></mat-icon>\n </button>\n </header>\n <div class=\"settings-panel-body\">\n <ng-template #contentHost></ng-template>\n </div>\n <footer class=\"settings-panel-footer\">\n <button mat-button type=\"button\" (click)=\"onReset()\" [disabled]=\"isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'restart_alt'\"></mat-icon>\n <span>Redefinir</span>\n </button>\n <span class=\"spacer\"></span>\n <button\n mat-button\n type=\"button\"\n (click)=\"onCancel()\"\n [disabled]=\"isBusy\"\n >\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'close'\"></mat-icon>\n <span>Cancelar</span>\n </button>\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"onApply()\"\n [disabled]=\"!canApply\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canApply\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'done'\"></mat-icon>\n <span>Aplicar</span>\n </ng-container>\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canSave\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'save'\"></mat-icon>\n <span>Salvar & Fechar</span>\n </ng-container>\n </button>\n </footer>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;height:100%}.settings-panel{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:\"header\" \"body\" \"footer\";height:100%;background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);border-left:1px solid var(--md-sys-color-outline-variant);width:720px;transition:width .3s ease;overflow:hidden}.settings-panel.expanded{width:min(95vw,
|
|
263
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.4", type: SettingsPanelComponent, isStandalone: true, selector: "praxis-settings-panel", host: { listeners: { "document:keydown": "handleKeydown($event)" } }, viewQueries: [{ propertyName: "contentHost", first: true, predicate: ["contentHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n class=\"settings-panel\"\n [class.expanded]=\"expanded\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <header class=\"settings-panel-header\">\n <h2 class=\"settings-panel-title\" [id]=\"titleId\">\n <mat-icon *ngIf=\"titleIcon\" class=\"title-icon\" [praxisIcon]=\"titleIcon\"></mat-icon>\n <span>{{ title }}</span>\n </h2>\n <span class=\"spacer\"></span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n [attr.aria-expanded]=\"expanded\"\n [matTooltip]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n (click)=\"toggleExpand()\"\n >\n <mat-icon [praxisIcon]=\"expanded ? 'close_fullscreen' : 'open_in_full'\"></mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Fechar\"\n matTooltip=\"Fechar\"\n (click)=\"onCancel()\"\n >\n <mat-icon [praxisIcon]=\"'close'\"></mat-icon>\n </button>\n </header>\n <div class=\"settings-panel-body\">\n <ng-template #contentHost></ng-template>\n </div>\n <footer class=\"settings-panel-footer\">\n <button mat-button type=\"button\" (click)=\"onReset()\" [disabled]=\"isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'restart_alt'\"></mat-icon>\n <span>Redefinir</span>\n </button>\n <span class=\"spacer\"></span>\n <button\n mat-button\n type=\"button\"\n (click)=\"onCancel()\"\n [disabled]=\"isBusy\"\n >\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'close'\"></mat-icon>\n <span>Cancelar</span>\n </button>\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"onApply()\"\n [disabled]=\"!canApply\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canApply\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'done'\"></mat-icon>\n <span>Aplicar</span>\n </ng-container>\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canSave\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'save'\"></mat-icon>\n <span>Salvar & Fechar</span>\n </ng-container>\n </button>\n </footer>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;height:100%}.settings-panel{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:\"header\" \"body\" \"footer\";height:100%;background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);border-left:1px solid var(--md-sys-color-outline-variant);width:720px;transition:width .3s ease;overflow:hidden}.settings-panel.expanded{width:min(95vw,2400px)}.settings-panel-header{grid-area:header;display:flex;align-items:center;gap:8px;padding:0 16px;height:64px;border-bottom:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);box-shadow:0 2px 6px var(--sicoob-shadow-low, rgba(0, 0, 0, .08));flex-shrink:0}.settings-panel-header .spacer{flex:1}.settings-panel-body{grid-area:body;overflow-y:auto;min-height:0;padding:8px 8px 24px;background:var(--md-sys-color-surface)}.settings-panel-content{display:block}.settings-panel-footer{grid-area:footer;border-top:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);box-shadow:0 -2px 6px var(--sicoob-shadow-low, rgba(0, 0, 0, .08));display:flex;align-items:center;padding:12px 16px;column-gap:12px;flex-shrink:0}.spacer{flex:1}.settings-panel-title{display:inline-flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.2px;margin:0}.settings-panel-title mat-icon{color:var(--md-sys-color-primary)}.settings-panel-title .title-icon{width:20px;height:20px;font-size:20px}.settings-panel-footer button+button{margin-left:12px}.settings-panel-footer button{display:inline-flex;align-items:center}.settings-panel-footer button .mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.settings-panel-footer .mat-button-wrapper{display:inline-flex;align-items:center;gap:8px}.settings-panel-footer .mat-progress-spinner{margin-right:8px}.settings-panel-footer .mat-flat-button[color=primary]{font-weight:600}:host ::ng-deep .praxis-settings-panel-backdrop{background:var(--pfx-backdrop, rgba(0, 0, 0, .45));backdrop-filter:blur(var(--pfx-backdrop-blur, 6px)) saturate(110%);-webkit-backdrop-filter:blur(var(--pfx-backdrop-blur, 6px)) saturate(110%)}.settings-panel .mat-divider{background-color:var(--md-sys-color-outline-variant)!important}.settings-panel .mat-expansion-panel{background:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;box-shadow:0 2px 8px var(--sicoob-shadow-low, rgba(0, 0, 0, .08))}.settings-panel .mat-expansion-panel-header{background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.settings-panel .mat-expansion-panel-header mat-icon,.settings-panel .mat-expansion-panel-header .mat-icon{color:var(--md-sys-color-on-surface)!important}.settings-panel .mat-expansion-panel-header .mat-expansion-panel-header-title,.settings-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{color:var(--md-sys-color-on-surface)}.settings-panel .mat-expansion-panel-header .mat-expansion-indicator,.settings-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--md-sys-color-on-surface-variant);border-color:var(--md-sys-color-on-surface-variant)}:host ::ng-deep .settings-panel .mat-expansion-panel .mat-expansion-panel-body{padding:8px}.settings-panel .mat-mdc-tab-group .mat-mdc-tab-header{border-bottom:1px solid var(--md-sys-color-outline-variant)}.settings-panel .mat-mdc-tab-group .mdc-tab .mdc-tab__text-label{color:color-mix(in srgb,var(--md-sys-color-on-surface) 72%,transparent)}.settings-panel .mat-mdc-tab-group .mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--md-sys-color-on-surface)}.settings-panel .mat-mdc-tab-group .mdc-tab-indicator__content--underline{border-color:var(--mat-sys-primary, var(--md-sys-color-primary))}.settings-panel .mat-mdc-form-field{--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-secondary, var(--md-sys-color-primary));--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary)}:host ::ng-deep .praxis-settings-panel-pane{position:fixed!important;top:0!important;right:0!important;height:100vh!important;z-index:1000}:host ::ng-deep .praxis-settings-panel-pane .settings-panel{pointer-events:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatDialogModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
264
264
|
}
|
|
265
265
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SettingsPanelComponent, decorators: [{
|
|
266
266
|
type: Component,
|
|
@@ -273,7 +273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImpor
|
|
|
273
273
|
CdkTrapFocus,
|
|
274
274
|
MatProgressSpinnerModule,
|
|
275
275
|
MatDialogModule,
|
|
276
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"settings-panel\"\n [class.expanded]=\"expanded\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <header class=\"settings-panel-header\">\n <h2 class=\"settings-panel-title\" [id]=\"titleId\">\n <mat-icon *ngIf=\"titleIcon\" class=\"title-icon\" [praxisIcon]=\"titleIcon\"></mat-icon>\n <span>{{ title }}</span>\n </h2>\n <span class=\"spacer\"></span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n [attr.aria-expanded]=\"expanded\"\n [matTooltip]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n (click)=\"toggleExpand()\"\n >\n <mat-icon [praxisIcon]=\"expanded ? 'close_fullscreen' : 'open_in_full'\"></mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Fechar\"\n matTooltip=\"Fechar\"\n (click)=\"onCancel()\"\n >\n <mat-icon [praxisIcon]=\"'close'\"></mat-icon>\n </button>\n </header>\n <div class=\"settings-panel-body\">\n <ng-template #contentHost></ng-template>\n </div>\n <footer class=\"settings-panel-footer\">\n <button mat-button type=\"button\" (click)=\"onReset()\" [disabled]=\"isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'restart_alt'\"></mat-icon>\n <span>Redefinir</span>\n </button>\n <span class=\"spacer\"></span>\n <button\n mat-button\n type=\"button\"\n (click)=\"onCancel()\"\n [disabled]=\"isBusy\"\n >\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'close'\"></mat-icon>\n <span>Cancelar</span>\n </button>\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"onApply()\"\n [disabled]=\"!canApply\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canApply\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'done'\"></mat-icon>\n <span>Aplicar</span>\n </ng-container>\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canSave\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'save'\"></mat-icon>\n <span>Salvar & Fechar</span>\n </ng-container>\n </button>\n </footer>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;height:100%}.settings-panel{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:\"header\" \"body\" \"footer\";height:100%;background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);border-left:1px solid var(--md-sys-color-outline-variant);width:720px;transition:width .3s ease;overflow:hidden}.settings-panel.expanded{width:min(95vw,
|
|
276
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"settings-panel\"\n [class.expanded]=\"expanded\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <header class=\"settings-panel-header\">\n <h2 class=\"settings-panel-title\" [id]=\"titleId\">\n <mat-icon *ngIf=\"titleIcon\" class=\"title-icon\" [praxisIcon]=\"titleIcon\"></mat-icon>\n <span>{{ title }}</span>\n </h2>\n <span class=\"spacer\"></span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n [attr.aria-expanded]=\"expanded\"\n [matTooltip]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n (click)=\"toggleExpand()\"\n >\n <mat-icon [praxisIcon]=\"expanded ? 'close_fullscreen' : 'open_in_full'\"></mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Fechar\"\n matTooltip=\"Fechar\"\n (click)=\"onCancel()\"\n >\n <mat-icon [praxisIcon]=\"'close'\"></mat-icon>\n </button>\n </header>\n <div class=\"settings-panel-body\">\n <ng-template #contentHost></ng-template>\n </div>\n <footer class=\"settings-panel-footer\">\n <button mat-button type=\"button\" (click)=\"onReset()\" [disabled]=\"isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'restart_alt'\"></mat-icon>\n <span>Redefinir</span>\n </button>\n <span class=\"spacer\"></span>\n <button\n mat-button\n type=\"button\"\n (click)=\"onCancel()\"\n [disabled]=\"isBusy\"\n >\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'close'\"></mat-icon>\n <span>Cancelar</span>\n </button>\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"onApply()\"\n [disabled]=\"!canApply\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canApply\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'done'\"></mat-icon>\n <span>Aplicar</span>\n </ng-container>\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canSave\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'save'\"></mat-icon>\n <span>Salvar & Fechar</span>\n </ng-container>\n </button>\n </footer>\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block;height:100%}.settings-panel{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:\"header\" \"body\" \"footer\";height:100%;background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface);border-left:1px solid var(--md-sys-color-outline-variant);width:720px;transition:width .3s ease;overflow:hidden}.settings-panel.expanded{width:min(95vw,2400px)}.settings-panel-header{grid-area:header;display:flex;align-items:center;gap:8px;padding:0 16px;height:64px;border-bottom:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);box-shadow:0 2px 6px var(--sicoob-shadow-low, rgba(0, 0, 0, .08));flex-shrink:0}.settings-panel-header .spacer{flex:1}.settings-panel-body{grid-area:body;overflow-y:auto;min-height:0;padding:8px 8px 24px;background:var(--md-sys-color-surface)}.settings-panel-content{display:block}.settings-panel-footer{grid-area:footer;border-top:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-high);box-shadow:0 -2px 6px var(--sicoob-shadow-low, rgba(0, 0, 0, .08));display:flex;align-items:center;padding:12px 16px;column-gap:12px;flex-shrink:0}.spacer{flex:1}.settings-panel-title{display:inline-flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.2px;margin:0}.settings-panel-title mat-icon{color:var(--md-sys-color-primary)}.settings-panel-title .title-icon{width:20px;height:20px;font-size:20px}.settings-panel-footer button+button{margin-left:12px}.settings-panel-footer button{display:inline-flex;align-items:center}.settings-panel-footer button .mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.settings-panel-footer .mat-button-wrapper{display:inline-flex;align-items:center;gap:8px}.settings-panel-footer .mat-progress-spinner{margin-right:8px}.settings-panel-footer .mat-flat-button[color=primary]{font-weight:600}:host ::ng-deep .praxis-settings-panel-backdrop{background:var(--pfx-backdrop, rgba(0, 0, 0, .45));backdrop-filter:blur(var(--pfx-backdrop-blur, 6px)) saturate(110%);-webkit-backdrop-filter:blur(var(--pfx-backdrop-blur, 6px)) saturate(110%)}.settings-panel .mat-divider{background-color:var(--md-sys-color-outline-variant)!important}.settings-panel .mat-expansion-panel{background:var(--md-sys-color-surface-container);border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;box-shadow:0 2px 8px var(--sicoob-shadow-low, rgba(0, 0, 0, .08))}.settings-panel .mat-expansion-panel-header{background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.settings-panel .mat-expansion-panel-header mat-icon,.settings-panel .mat-expansion-panel-header .mat-icon{color:var(--md-sys-color-on-surface)!important}.settings-panel .mat-expansion-panel-header .mat-expansion-panel-header-title,.settings-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{color:var(--md-sys-color-on-surface)}.settings-panel .mat-expansion-panel-header .mat-expansion-indicator,.settings-panel .mat-expansion-panel-header .mat-expansion-indicator:after{color:var(--md-sys-color-on-surface-variant);border-color:var(--md-sys-color-on-surface-variant)}:host ::ng-deep .settings-panel .mat-expansion-panel .mat-expansion-panel-body{padding:8px}.settings-panel .mat-mdc-tab-group .mat-mdc-tab-header{border-bottom:1px solid var(--md-sys-color-outline-variant)}.settings-panel .mat-mdc-tab-group .mdc-tab .mdc-tab__text-label{color:color-mix(in srgb,var(--md-sys-color-on-surface) 72%,transparent)}.settings-panel .mat-mdc-tab-group .mdc-tab.mdc-tab--active .mdc-tab__text-label{color:var(--md-sys-color-on-surface)}.settings-panel .mat-mdc-tab-group .mdc-tab-indicator__content--underline{border-color:var(--mat-sys-primary, var(--md-sys-color-primary))}.settings-panel .mat-mdc-form-field{--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-secondary, var(--md-sys-color-primary));--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary)}:host ::ng-deep .praxis-settings-panel-pane{position:fixed!important;top:0!important;right:0!important;height:100vh!important;z-index:1000}:host ::ng-deep .praxis-settings-panel-pane .settings-panel{pointer-events:auto}\n"] }]
|
|
277
277
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.MatDialog }], propDecorators: { contentHost: [{
|
|
278
278
|
type: ViewChild,
|
|
279
279
|
args: ['contentHost', { read: ViewContainerRef, static: true }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"praxisui-settings-panel.mjs","sources":["../../../projects/praxis-settings-panel/src/lib/settings-panel.component.ts","../../../projects/praxis-settings-panel/src/lib/settings-panel.component.html","../../../projects/praxis-settings-panel/src/lib/settings-panel.ref.ts","../../../projects/praxis-settings-panel/src/lib/settings-panel.tokens.ts","../../../projects/praxis-settings-panel/src/lib/settings-panel.service.ts","../../../projects/praxis-settings-panel/src/lib/global-config-editor/global-config-admin.service.ts","../../../projects/praxis-settings-panel/src/lib/global-config-editor/global-config-editor.schema.ts","../../../projects/praxis-settings-panel/src/lib/global-config-editor/global-config-editor.component.ts","../../../projects/praxis-settings-panel/src/lib/global-config-editor/open-global-config-editor.ts","../../../projects/praxis-settings-panel/src/praxisui-settings-panel.ts"],"sourcesContent":["import {\r\n Component,\r\n ComponentRef,\r\n HostListener,\r\n Injector,\r\n DestroyRef,\r\n inject,\r\n Type,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ViewContainerRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\nimport { PraxisIconDirective } from '@praxisui/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\r\nimport { SettingsPanelRef } from './settings-panel.ref';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { firstValueFrom, isObservable, of } from 'rxjs';\r\nimport { filter, switchMap } from 'rxjs/operators';\r\nimport {\r\n ConfirmDialogComponent,\r\n ConfirmDialogData,\r\n} from '@praxisui/dynamic-fields';\n\r\n@Component({\r\n selector: 'praxis-settings-panel',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\n PraxisIconDirective,\n MatTooltipModule,\r\n CdkTrapFocus,\r\n MatProgressSpinnerModule,\r\n MatDialogModule,\r\n ],\r\n templateUrl: './settings-panel.component.html',\r\n styleUrls: ['./settings-panel.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SettingsPanelComponent {\n title = '';\n titleIcon?: string;\n expanded = false;\r\n ref!: SettingsPanelRef;\r\n contentRef?: ComponentRef<any>;\r\n private static nextId = 0;\r\n titleId = `praxis-settings-panel-title-${SettingsPanelComponent.nextId++}`;\r\n\r\n isDirty = false;\r\n isValid = true;\r\n isBusy = false;\r\n\r\n get canApply(): boolean {\r\n return this.isDirty && this.isValid && !this.isBusy;\r\n }\r\n\r\n get canSave(): boolean {\r\n return this.isDirty && this.isValid && !this.isBusy;\r\n }\r\n\r\n get disabledReason(): string {\r\n if (this.isBusy) {\r\n return 'Operação em andamento...';\r\n }\r\n if (!this.isValid) {\r\n return 'O formulário contém erros que precisam ser corrigidos.';\r\n }\r\n if (!this.isDirty) {\r\n return 'Nenhuma alteração para aplicar ou salvar.';\r\n }\r\n return '';\r\n }\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n @ViewChild('contentHost', { read: ViewContainerRef, static: true })\r\n private contentHost!: ViewContainerRef;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private dialog: MatDialog) {}\r\n\r\n attachContent(\n component: Type<any>,\n injector: Injector,\n ref: SettingsPanelRef,\n ): void {\n this.ref = ref;\r\n this.contentRef = this.contentHost.createComponent(component, {\r\n injector,\r\n });\r\n\r\n const instance: any = this.contentRef.instance;\n\r\n if (instance.isDirty$) {\n instance.isDirty$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((dirty: boolean) => {\n this.isDirty = dirty;\n try { (console.log || console.debug)('[SettingsPanel] isDirty$ ->', dirty); } catch {}\n this.cdr.markForCheck();\n });\n }\n\r\n if (instance.isValid$) {\r\n instance.isValid$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe((valid: boolean) => {\r\n this.isValid = valid;\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n if (instance.isBusy$) {\n instance.isBusy$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((busy: boolean) => {\n this.isBusy = busy;\n this.cdr.markForCheck();\n });\n }\n\n // Generic output bridging: if the embedded component emits `selected`, save and close.\n try {\n const selected$ = instance?.selected;\n if (selected$ && typeof selected$.subscribe === 'function') {\n const obs = typeof selected$.pipe === 'function'\n ? selected$.pipe(takeUntilDestroyed(this.destroyRef))\n : selected$;\n obs.subscribe((value: any) => {\n try { (console.log || console.debug)('[SettingsPanel] content.selected → apply()'); } catch {}\n // Apply emits value to the opener without closing the panel.\n this.ref.apply(value);\n });\n }\n } catch {}\n }\n\r\n onReset(): void {\r\n const dialogData: ConfirmDialogData = {\r\n title: 'Redefinir Alterações',\r\n message: 'Tem certeza de que deseja redefinir todas as alterações?',\r\n confirmText: 'Redefinir',\r\n cancelText: 'Cancelar',\r\n type: 'warning',\r\n icon: 'restart_alt',\r\n };\r\n\r\n this.dialog\r\n .open(ConfirmDialogComponent, { data: dialogData })\r\n .afterClosed()\r\n .pipe(filter((confirmed) => confirmed))\r\n .subscribe(() => {\r\n this.contentRef?.instance?.reset?.();\r\n this.ref.reset();\r\n });\r\n }\r\n\r\n onApply(): void {\n if (!this.canApply) return;\n const value = this.contentRef?.instance?.getSettingsValue?.();\n try { (console.log || console.debug)('[SettingsPanel] onApply()', { canApply: this.canApply }); } catch {}\n this.ref.apply(value);\n }\n\r\n onSave(): void {\n if (!this.canSave) return;\n const instance: any = this.contentRef?.instance;\n try {\n const valuePreview = instance?.getSettingsValue?.();\n const keys = valuePreview && typeof valuePreview === 'object' ? Object.keys(valuePreview) : undefined;\n const keyTypes = valuePreview && typeof valuePreview === 'object'\n ? Object.fromEntries(Object.entries(valuePreview).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave()', { canSave: this.canSave, preview: { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes } });\n } catch {}\n const result = instance?.onSave?.();\n\n if (isObservable(result)) {\n firstValueFrom(result).then((value) => { try {\n const keys = value && typeof value === 'object' ? Object.keys(value) : undefined;\n const keyTypes = value && typeof value === 'object'\n ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave(result:observable)', { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {} this.ref.save(value); });\n } else if (result instanceof Promise) {\n result.then((value: unknown) => { try {\n const keys = value && typeof value === 'object' ? Object.keys(value as any) : undefined;\n const keyTypes = value && typeof value === 'object'\n ? Object.fromEntries(Object.entries(value as any).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave(result:promise)', { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {} this.ref.save(value); });\n } else if (result !== undefined) {\n try {\n const keys = result && typeof result === 'object' ? Object.keys(result) : undefined;\n const keyTypes = result && typeof result === 'object'\n ? Object.fromEntries(Object.entries(result).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave(result:value)', { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {}\n this.ref.save(result);\n } else {\n const value = instance?.getSettingsValue?.();\n try {\n const keys = value && typeof value === 'object' ? Object.keys(value) : undefined;\n const keyTypes = value && typeof value === 'object'\n ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave(getSettingsValue)', { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {}\n this.ref.save(value);\n }\n }\n\r\n toggleExpand(): void {\r\n this.expanded = !this.expanded;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onCancel(): void {\n of(this.isDirty)\n .pipe(\n switchMap((dirty) => {\n if (!dirty) {\n try { (console.log || console.debug)('[SettingsPanel] onCancel(): not dirty → close'); } catch {}\n return of(true);\n }\n try { (console.log || console.debug)('[SettingsPanel] onCancel(): dirty → confirm dialog'); } catch {}\n const dialogData: ConfirmDialogData = {\n title: 'Descartar Alterações',\n message:\n 'Você tem alterações não salvas. Tem certeza de que deseja descartá-las?',\n confirmText: 'Descartar',\n cancelText: 'Continuar Editando',\n type: 'warning',\n icon: 'warning',\n };\n return this.dialog\n .open(ConfirmDialogComponent, { data: dialogData })\n .afterClosed();\n }),\n filter((confirmed) => confirmed),\n )\n .subscribe(() => {\n try { (console.log || console.debug)('[SettingsPanel] close(confirm)'); } catch {}\n this.ref.close('cancel');\n });\n }\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.onCancel();\r\n } else if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\r\n event.preventDefault();\r\n this.onSave();\r\n } else if ((event.key === 's' || event.key === 'S') && (event.ctrlKey || event.metaKey)) {\r\n event.preventDefault();\r\n this.onSave();\r\n }\r\n }\r\n}\r\n","<div\n class=\"settings-panel\"\n [class.expanded]=\"expanded\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <header class=\"settings-panel-header\">\n <h2 class=\"settings-panel-title\" [id]=\"titleId\">\n <mat-icon *ngIf=\"titleIcon\" class=\"title-icon\" [praxisIcon]=\"titleIcon\"></mat-icon>\n <span>{{ title }}</span>\n </h2>\n <span class=\"spacer\"></span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n [attr.aria-expanded]=\"expanded\"\n [matTooltip]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n (click)=\"toggleExpand()\"\n >\n <mat-icon [praxisIcon]=\"expanded ? 'close_fullscreen' : 'open_in_full'\"></mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Fechar\"\n matTooltip=\"Fechar\"\n (click)=\"onCancel()\"\n >\n <mat-icon [praxisIcon]=\"'close'\"></mat-icon>\n </button>\n </header>\n <div class=\"settings-panel-body\">\n <ng-template #contentHost></ng-template>\n </div>\n <footer class=\"settings-panel-footer\">\n <button mat-button type=\"button\" (click)=\"onReset()\" [disabled]=\"isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'restart_alt'\"></mat-icon>\n <span>Redefinir</span>\n </button>\n <span class=\"spacer\"></span>\n <button\n mat-button\n type=\"button\"\n (click)=\"onCancel()\"\n [disabled]=\"isBusy\"\n >\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'close'\"></mat-icon>\n <span>Cancelar</span>\n </button>\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"onApply()\"\n [disabled]=\"!canApply\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canApply\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'done'\"></mat-icon>\n <span>Aplicar</span>\n </ng-container>\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canSave\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'save'\"></mat-icon>\n <span>Salvar & Fechar</span>\n </ng-container>\n </button>\n </footer>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\nimport { SettingsPanelCloseReason } from './settings-panel.types';\n\nexport class SettingsPanelRef {\n private appliedSubject = new Subject<any>();\n private savedSubject = new Subject<any>();\n private resetSubject = new Subject<void>();\n private closedSubject = new Subject<SettingsPanelCloseReason>();\n\n applied$ = this.appliedSubject.asObservable();\n saved$ = this.savedSubject.asObservable();\n reset$ = this.resetSubject.asObservable();\n closed$ = this.closedSubject.asObservable();\n\n constructor(private overlayRef: OverlayRef) {}\n\n apply(value: any): void {\n this.appliedSubject.next(value);\n }\n\n /**\n * Emits the provided value on {@link saved$} and closes the panel.\n *\n * This should be called with the configuration object returned by the\n * editor's `onSave()` method so that consumers can persist the new settings.\n */\n save(value: any): void {\n try {\n const type = value == null ? 'nullish' : Array.isArray(value) ? 'array' : typeof value;\n const keys = value && typeof value === 'object' ? Object.keys(value) : undefined;\n const keyTypes = value && typeof value === 'object'\n ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanelRef] save()', { type, keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {}\n this.savedSubject.next(value);\n this.close('save');\n }\n\n reset(): void {\n this.resetSubject.next();\n }\n\n updateSize(width: string | number): void {\n this.overlayRef.updateSize({ width });\n }\n\n close(reason: SettingsPanelCloseReason = 'cancel'): void {\n if (!this.overlayRef?.hasAttached()) {\n return;\n }\n this.overlayRef.dispose();\n this.closedSubject.next(reason);\n this.complete();\n }\n\n private complete(): void {\n this.appliedSubject.complete();\n this.savedSubject.complete();\n this.resetSubject.complete();\n this.closedSubject.complete();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { SettingsPanelRef } from './settings-panel.ref';\n\nexport const SETTINGS_PANEL_DATA = new InjectionToken<any>('SETTINGS_PANEL_DATA');\nexport const SETTINGS_PANEL_REF = new InjectionToken<SettingsPanelRef>('SETTINGS_PANEL_REF');\n","import { Injectable, Injector } from '@angular/core';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { SettingsPanelComponent } from './settings-panel.component';\nimport { SettingsPanelRef } from './settings-panel.ref';\nimport {\n SettingsPanelCloseReason,\n SettingsPanelConfig,\n} from './settings-panel.types';\nimport {\n SETTINGS_PANEL_DATA,\n SETTINGS_PANEL_REF,\n} from './settings-panel.tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingsPanelService {\n private currentRef?: SettingsPanelRef;\n\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n ) {}\n\n /**\n * Opens a new settings panel. If another panel is already open it will be\n * closed before the new one is created. Future improvements may reuse the\n * same overlay when the provided id matches.\n */\n open(config: SettingsPanelConfig): SettingsPanelRef {\n if (this.currentRef) {\n this.currentRef.close('cancel');\n }\n\n const overlayConfig: OverlayConfig = {\n hasBackdrop: true,\n backdropClass: 'praxis-settings-panel-backdrop',\n panelClass: 'praxis-settings-panel-pane',\n positionStrategy: this.overlay.position().global().top('0').right('0'),\n height: '100vh',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n };\n\n const overlayRef = this.overlay.create(overlayConfig);\n const ref = new SettingsPanelRef(overlayRef);\n\n const panelPortal = new ComponentPortal(SettingsPanelComponent);\n const panelRef = overlayRef.attach(panelPortal);\n panelRef.instance.title = config.title;\n (panelRef.instance as any).titleIcon = (config as any).titleIcon;\n\n const inputs = config.content.inputs;\n try {\n const dbg = inputs && (inputs as any).page ? { hasPage: true, conns: Array.isArray((inputs as any).page.connections) ? (inputs as any).page.connections.length : undefined } : { hasPage: false };\n (console.log || console.debug)('[SettingsPanel] open()', { id: (config as any).id, title: config.title, inputs: dbg });\n } catch {}\n\n const injector = Injector.create({\n providers: [\n { provide: SETTINGS_PANEL_DATA, useValue: inputs },\n { provide: SETTINGS_PANEL_REF, useValue: ref },\n ],\n parent: this.injector,\n });\n panelRef.instance.attachContent(config.content.component, injector, ref);\n\n overlayRef.backdropClick().subscribe(() => ref.close('backdrop'));\n overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n ref.close('esc');\n }\n });\n ref.closed$.subscribe(() => {\n if (this.currentRef === ref) {\n this.currentRef = undefined;\n }\n });\n\n this.currentRef = ref;\n return ref;\n }\n\n close(reason: SettingsPanelCloseReason = 'cancel'): void {\n this.currentRef?.close(reason);\n this.currentRef = undefined;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { GlobalConfigService } from '@praxisui/core';\nimport type { GlobalConfig } from '@praxisui/core';\n\n/**\n * Admin helper to load, patch and persist GlobalConfig.\n * Intended to be used by the Global Config Editor UI.\n */\n@Injectable({ providedIn: 'root' })\nexport class GlobalConfigAdminService {\n private readonly global = inject(GlobalConfigService) as GlobalConfigService;\n\n /** Returns the effective merged configuration (providers + storage). */\n getEffectiveConfig(): GlobalConfig {\n // buildConfig is internal in service; use public getters instead\n return {\n crud: this.global.getCrud(),\n dynamicFields: this.global.getDynamicFields(),\n table: this.global.getTable(),\n dialog: this.global.getDialog(),\n } as GlobalConfig;\n }\n\n /** Persist a partial update and notify listeners. */\n save(partial: Partial<GlobalConfig>): void {\n this.global.saveGlobalConfig(partial);\n }\n}\n","import type { FormConfig } from '@praxisui/core';\nimport { FieldControlType } from '@praxisui/core';\n\nfunction safeName(path: string): string {\n return path.replace(/[^a-zA-Z0-9_]/g, '_');\n}\n\n/**\n * Minimal FormConfig schema for the Global Config editor UI.\n * This can be extended incrementally as new domains/settings are added.\n */\nexport function buildGlobalConfigFormConfig(): FormConfig {\n const fields = [\n // CRUD\n {\n name: safeName('crud.defaults.openMode'),\n label: 'Modo de abertura padrão',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'Rota', value: 'route' },\n { text: 'Modal', value: 'modal' },\n { text: 'Drawer', value: 'drawer' },\n ],\n hint: 'Aplicado quando ação/metadado não definem modo.',\n dataAttributes: { globalPath: 'crud.defaults.openMode' },\n },\n {\n name: safeName('crud.defaults.back.confirmOnDirty'),\n label: 'Confirmar ao sair com alterações',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'crud.defaults.back.confirmOnDirty' },\n },\n {\n name: safeName('crud.defaults.back.strategy'),\n label: 'Back: estratégia',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'auto', value: 'auto' },\n { text: 'close', value: 'close' },\n { text: 'navigate', value: 'navigate' },\n ],\n dataAttributes: { globalPath: 'crud.defaults.back.strategy' },\n },\n {\n name: safeName('crud.defaults.header.showBack'),\n label: 'Header: mostrar voltar',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'crud.defaults.header.showBack' },\n },\n {\n name: safeName('crud.defaults.header.variant'),\n label: 'Header: variante',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'ghost', value: 'ghost' },\n { text: 'tonal', value: 'tonal' },\n { text: 'outlined', value: 'outlined' },\n ],\n dataAttributes: { globalPath: 'crud.defaults.header.variant' },\n },\n {\n name: safeName('crud.defaults.header.sticky'),\n label: 'Header: fixo (sticky)',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'crud.defaults.header.sticky' },\n },\n {\n name: safeName('crud.defaults.header.divider'),\n label: 'Header: mostrar divisor',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'crud.defaults.header.divider' },\n },\n {\n name: safeName('crud.defaults.modal.width'),\n label: 'Modal: largura (ex.: 900px)',\n controlType: FieldControlType.INPUT,\n dataAttributes: { globalPath: 'crud.defaults.modal.width' },\n },\n {\n name: safeName('crud.defaults.modal.maxWidth'),\n label: 'Modal: largura máxima (ex.: 96vw)',\n controlType: FieldControlType.INPUT,\n dataAttributes: { globalPath: 'crud.defaults.modal.maxWidth' },\n },\n {\n name: safeName('crud.defaults.modal.backdropStyle'),\n label: 'Modal: backdrop',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'blur', value: 'blur' },\n { text: 'dim', value: 'dim' },\n { text: 'transparent', value: 'transparent' },\n ],\n dataAttributes: { globalPath: 'crud.defaults.modal.backdropStyle' },\n },\n\n // Dynamic Fields\n {\n name: safeName('dynamicFields.asyncSelect.loadOn'),\n label: 'Async Select: loadOn',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'open', value: 'open' },\n { text: 'init', value: 'init' },\n { text: 'none', value: 'none' },\n ],\n hint: 'Estratégia de primeira carga quando metadado não definir.',\n dataAttributes: { globalPath: 'dynamicFields.asyncSelect.loadOn' },\n },\n {\n name: safeName('dynamicFields.cascade.enable'),\n label: 'Cascata nativa habilitada',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dynamicFields.cascade.enable' },\n },\n {\n name: safeName('dynamicFields.cascade.loadOnChange'),\n label: 'Cascata: loadOnChange',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'respectLoadOn', value: 'respectLoadOn' },\n { text: 'immediate', value: 'immediate' },\n { text: 'manual', value: 'manual' },\n ],\n dataAttributes: { globalPath: 'dynamicFields.cascade.loadOnChange' },\n },\n {\n name: safeName('dynamicFields.cascade.debounceMs'),\n label: 'Cascata: debounce (ms)',\n controlType: FieldControlType.NUMERIC_TEXT_BOX,\n dataAttributes: { globalPath: 'dynamicFields.cascade.debounceMs' },\n },\n\n // Dynamic Fields async-select extra\n {\n name: safeName('dynamicFields.asyncSelect.pageSize'),\n label: 'Async Select: pageSize',\n controlType: FieldControlType.NUMERIC_TEXT_BOX,\n dataAttributes: { globalPath: 'dynamicFields.asyncSelect.pageSize' },\n },\n {\n name: safeName('dynamicFields.asyncSelect.useCursor'),\n label: 'Async Select: usar cursor',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dynamicFields.asyncSelect.useCursor' },\n },\n\n // Table\n {\n name: safeName('table.behavior.pagination.enabled'),\n label: 'Paginação habilitada',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'table.behavior.pagination.enabled' },\n },\n {\n name: safeName('table.behavior.pagination.pageSize'),\n label: 'Tamanho da página',\n controlType: FieldControlType.NUMERIC_TEXT_BOX,\n dataAttributes: { globalPath: 'table.behavior.pagination.pageSize' },\n },\n {\n name: safeName('table.behavior.filtering.debounceTime'),\n label: 'Debounce do filtro (ms)',\n controlType: FieldControlType.NUMERIC_TEXT_BOX,\n dataAttributes: { globalPath: 'table.behavior.filtering.debounceTime' },\n },\n {\n name: safeName('table.behavior.sorting.enabled'),\n label: 'Ordenação habilitada',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'table.behavior.sorting.enabled' },\n },\n {\n name: safeName('table.behavior.selection.enabled'),\n label: 'Seleção habilitada',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'table.behavior.selection.enabled' },\n },\n {\n name: safeName('table.behavior.pagination.strategy'),\n label: 'Paginação: estratégia',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'client', value: 'client' },\n { text: 'server', value: 'server' },\n ],\n dataAttributes: { globalPath: 'table.behavior.pagination.strategy' },\n },\n {\n name: safeName('table.behavior.sorting.strategy'),\n label: 'Ordenação: estratégia',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'client', value: 'client' },\n { text: 'server', value: 'server' },\n ],\n dataAttributes: { globalPath: 'table.behavior.sorting.strategy' },\n },\n {\n name: safeName('table.behavior.pagination.showFirstLastButtons'),\n label: 'Paginação: botões Primeiro/Último',\n controlType: FieldControlType.CHECKBOX,\n dataAttributes: { globalPath: 'table.behavior.pagination.showFirstLastButtons' },\n },\n {\n name: safeName('table.toolbar.visible'),\n label: 'Toolbar visível',\n controlType: FieldControlType.CHECKBOX,\n dataAttributes: { globalPath: 'table.toolbar.visible' },\n },\n {\n name: safeName('table.appearance.density'),\n label: 'Aparência: densidade',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'comfortable', value: 'comfortable' },\n { text: 'cozy', value: 'cozy' },\n { text: 'compact', value: 'compact' },\n ],\n dataAttributes: { globalPath: 'table.appearance.density' },\n },\n {\n name: safeName('table.filteringUi.advancedOpenMode'),\n label: 'Filtro: modo de abertura',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'overlay', value: 'overlay' },\n { text: 'modal', value: 'modal' },\n { text: 'drawer', value: 'drawer' },\n ],\n dataAttributes: { globalPath: 'table.filteringUi.advancedOpenMode' },\n },\n {\n name: safeName('table.filteringUi.overlayVariant'),\n label: 'Filtro: overlay (visual)',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'card', value: 'card' },\n { text: 'frosted', value: 'frosted' },\n ],\n dataAttributes: { globalPath: 'table.filteringUi.overlayVariant' },\n },\n {\n name: safeName('table.filteringUi.overlayBackdrop'),\n label: 'Filtro: backdrop no overlay',\n controlType: FieldControlType.CHECKBOX,\n dataAttributes: { globalPath: 'table.filteringUi.overlayBackdrop' },\n },\n // Table messages - confirmations\n { name: safeName('table.messages.actions.confirmations.delete'), label: 'Excluir — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.delete' } },\n { name: safeName('table.messages.actions.confirmations.deleteMultiple'), label: 'Excluir (múltiplos) — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.deleteMultiple' } },\n { name: safeName('table.messages.actions.confirmations.save'), label: 'Salvar — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.save' } },\n { name: safeName('table.messages.actions.confirmations.cancel'), label: 'Cancelar — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.cancel' } },\n { name: safeName('table.messages.actions.confirmations.export'), label: 'Exportar — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.export' } },\n // Table messages - progress\n { name: safeName('table.messages.actions.progress.delete'), label: 'Excluir — progresso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.progress.delete' } },\n { name: safeName('table.messages.actions.progress.deleteMultiple'), label: 'Excluir (múltiplos) — progresso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.progress.deleteMultiple' } },\n // Table messages - success\n { name: safeName('table.messages.actions.success.delete'), label: 'Excluir — sucesso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.success.delete' } },\n { name: safeName('table.messages.actions.success.save'), label: 'Salvar — sucesso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.success.save' } },\n { name: safeName('table.messages.actions.success.export'), label: 'Exportar — sucesso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.success.export' } },\n { name: safeName('table.messages.actions.success.import'), label: 'Importar — sucesso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.success.import' } },\n // Table messages - errors\n { name: safeName('table.messages.actions.errors.delete'), label: 'Excluir — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.delete' } },\n { name: safeName('table.messages.actions.errors.save'), label: 'Salvar — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.save' } },\n { name: safeName('table.messages.actions.errors.export'), label: 'Exportar — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.export' } },\n { name: safeName('table.messages.actions.errors.network'), label: 'Rede — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.network' } },\n { name: safeName('table.messages.actions.errors.permission'), label: 'Permissão — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.permission' } },\n\n // Dialog — Defaults by type\n {\n name: safeName('dialog.defaults.confirm.ariaRole'),\n label: 'Dialog Defaults: confirm — ariaRole',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'dialog', value: 'dialog' },\n { text: 'alertdialog', value: 'alertdialog' },\n ],\n dataAttributes: { globalPath: 'dialog.defaults.confirm.ariaRole' },\n },\n {\n name: safeName('dialog.defaults.confirm.closeOnBackdropClick'),\n label: 'Dialog Defaults: confirm — fechar ao clicar no backdrop',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dialog.defaults.confirm.closeOnBackdropClick' },\n },\n {\n name: safeName('dialog.defaults.alert.ariaRole'),\n label: 'Dialog Defaults: alert — ariaRole',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'dialog', value: 'dialog' },\n { text: 'alertdialog', value: 'alertdialog' },\n ],\n dataAttributes: { globalPath: 'dialog.defaults.alert.ariaRole' },\n },\n {\n name: safeName('dialog.defaults.alert.closeOnBackdropClick'),\n label: 'Dialog Defaults: alert — fechar ao clicar no backdrop',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dialog.defaults.alert.closeOnBackdropClick' },\n },\n {\n name: safeName('dialog.defaults.prompt.ariaRole'),\n label: 'Dialog Defaults: prompt — ariaRole',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'dialog', value: 'dialog' },\n { text: 'alertdialog', value: 'alertdialog' },\n ],\n dataAttributes: { globalPath: 'dialog.defaults.prompt.ariaRole' },\n },\n {\n name: safeName('dialog.defaults.prompt.closeOnBackdropClick'),\n label: 'Dialog Defaults: prompt — fechar ao clicar no backdrop',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dialog.defaults.prompt.closeOnBackdropClick' },\n },\n\n // Dialog — Variants per profile (danger, info, success, question, error)\n // Each variant exposes commonly customized fields + JSON editors for actions/styles\n // danger\n { name: safeName('dialog.variants.danger.title'), label: 'Variant danger — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.danger.title' } },\n { name: safeName('dialog.variants.danger.icon'), label: 'Variant danger — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.danger.icon' } },\n { name: safeName('dialog.variants.danger.message'), label: 'Variant danger — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.danger.message' } },\n { name: safeName('dialog.variants.danger.ariaRole'), label: 'Variant danger — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.danger.ariaRole' } },\n { name: safeName('dialog.variants.danger.closeOnBackdropClick'), label: 'Variant danger — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.danger.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.danger.panelClass'), label: 'Variant danger — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.danger.panelClass' } },\n { name: safeName('dialog.variants.danger.actions'), label: 'Variant danger — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.danger.actions', monospace: true }, hint: 'Ex.: [{\"id\":\"cancel\",\"text\":\"Cancelar\",\"role\":\"secondary\",\"close\":true,\"cssClass\":\"btn\"},{\"id\":\"confirm\",\"text\":\"Excluir\",\"role\":\"primary\",\"close\":true,\"cssClass\":\"btn btn-danger\",\"icon\":\"delete\"}]' },\n { name: safeName('dialog.variants.danger.styles'), label: 'Variant danger — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.danger.styles', monospace: true } },\n { name: safeName('dialog.variants.danger.animation'), label: 'Variant danger — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.danger.animation', monospace: true } },\n // info\n { name: safeName('dialog.variants.info.title'), label: 'Variant info — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.info.title' } },\n { name: safeName('dialog.variants.info.icon'), label: 'Variant info — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.info.icon' } },\n { name: safeName('dialog.variants.info.message'), label: 'Variant info — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.info.message' } },\n { name: safeName('dialog.variants.info.ariaRole'), label: 'Variant info — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.info.ariaRole' } },\n { name: safeName('dialog.variants.info.closeOnBackdropClick'), label: 'Variant info — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.info.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.info.panelClass'), label: 'Variant info — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.info.panelClass' } },\n { name: safeName('dialog.variants.info.actions'), label: 'Variant info — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.info.actions', monospace: true } },\n { name: safeName('dialog.variants.info.styles'), label: 'Variant info — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.info.styles', monospace: true } },\n { name: safeName('dialog.variants.info.animation'), label: 'Variant info — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.info.animation', monospace: true } },\n // success\n { name: safeName('dialog.variants.success.title'), label: 'Variant success — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.success.title' } },\n { name: safeName('dialog.variants.success.icon'), label: 'Variant success — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.success.icon' } },\n { name: safeName('dialog.variants.success.message'), label: 'Variant success — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.success.message' } },\n { name: safeName('dialog.variants.success.ariaRole'), label: 'Variant success — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.success.ariaRole' } },\n { name: safeName('dialog.variants.success.closeOnBackdropClick'), label: 'Variant success — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.success.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.success.panelClass'), label: 'Variant success — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.success.panelClass' } },\n { name: safeName('dialog.variants.success.actions'), label: 'Variant success — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.success.actions', monospace: true } },\n { name: safeName('dialog.variants.success.styles'), label: 'Variant success — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.success.styles', monospace: true } },\n { name: safeName('dialog.variants.success.animation'), label: 'Variant success — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.success.animation', monospace: true } },\n // question\n { name: safeName('dialog.variants.question.title'), label: 'Variant question — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.question.title' } },\n { name: safeName('dialog.variants.question.icon'), label: 'Variant question — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.question.icon' } },\n { name: safeName('dialog.variants.question.message'), label: 'Variant question — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.question.message' } },\n { name: safeName('dialog.variants.question.ariaRole'), label: 'Variant question — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.question.ariaRole' } },\n { name: safeName('dialog.variants.question.closeOnBackdropClick'), label: 'Variant question — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.question.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.question.panelClass'), label: 'Variant question — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.question.panelClass' } },\n { name: safeName('dialog.variants.question.actions'), label: 'Variant question — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.question.actions', monospace: true } },\n { name: safeName('dialog.variants.question.styles'), label: 'Variant question — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.question.styles', monospace: true } },\n { name: safeName('dialog.variants.question.animation'), label: 'Variant question — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.question.animation', monospace: true } },\n // error\n { name: safeName('dialog.variants.error.title'), label: 'Variant error — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.error.title' } },\n { name: safeName('dialog.variants.error.icon'), label: 'Variant error — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.error.icon' } },\n { name: safeName('dialog.variants.error.message'), label: 'Variant error — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.error.message' } },\n { name: safeName('dialog.variants.error.ariaRole'), label: 'Variant error — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.error.ariaRole' } },\n { name: safeName('dialog.variants.error.closeOnBackdropClick'), label: 'Variant error — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.error.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.error.panelClass'), label: 'Variant error — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.error.panelClass' } },\n { name: safeName('dialog.variants.error.actions'), label: 'Variant error — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.error.actions', monospace: true } },\n { name: safeName('dialog.variants.error.styles'), label: 'Variant error — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.error.styles', monospace: true } },\n { name: safeName('dialog.variants.error.animation'), label: 'Variant error — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.error.animation', monospace: true } },\n ];\n\n const cfg: FormConfig = {\n sections: [\n {\n id: 'crud',\n title: 'CRUD',\n rows: [\n {\n id: 'crud-row-1',\n columns: [\n { id: 'crud-col-1', fields: [\n safeName('crud.defaults.openMode'),\n safeName('crud.defaults.back.strategy'),\n safeName('crud.defaults.back.confirmOnDirty'),\n ] },\n { id: 'crud-col-2', fields: [\n safeName('crud.defaults.header.showBack'),\n safeName('crud.defaults.header.variant'),\n safeName('crud.defaults.header.sticky'),\n safeName('crud.defaults.header.divider'),\n ] },\n { id: 'crud-col-3', fields: [\n safeName('crud.defaults.modal.width'),\n safeName('crud.defaults.modal.maxWidth'),\n safeName('crud.defaults.modal.backdropStyle'),\n ] },\n ],\n },\n ],\n },\n {\n id: 'dynamic-fields',\n title: 'Dynamic Fields',\n rows: [\n {\n id: 'df-row-1',\n columns: [\n { id: 'df-col-1', fields: [\n safeName('dynamicFields.asyncSelect.loadOn'),\n safeName('dynamicFields.asyncSelect.pageSize'),\n safeName('dynamicFields.asyncSelect.useCursor'),\n ] },\n { id: 'df-col-2', fields: [\n safeName('dynamicFields.cascade.enable'),\n safeName('dynamicFields.cascade.loadOnChange'),\n safeName('dynamicFields.cascade.debounceMs'),\n ] },\n ],\n },\n ],\n },\n {\n id: 'table',\n title: 'Tabela',\n rows: [\n {\n id: 'tbl-row-1',\n columns: [\n { id: 'tbl-col-1', fields: [\n safeName('table.toolbar.visible'),\n safeName('table.appearance.density'),\n safeName('table.filteringUi.advancedOpenMode'),\n safeName('table.filteringUi.overlayVariant'),\n safeName('table.filteringUi.overlayBackdrop'),\n ] },\n { id: 'tbl-col-2', fields: [\n safeName('table.behavior.pagination.enabled'),\n safeName('table.behavior.pagination.pageSize'),\n safeName('table.behavior.pagination.showFirstLastButtons'),\n safeName('table.behavior.pagination.strategy'),\n ] },\n { id: 'tbl-col-3', fields: [\n safeName('table.behavior.filtering.debounceTime'),\n safeName('table.behavior.sorting.enabled'),\n safeName('table.behavior.sorting.strategy'),\n safeName('table.behavior.selection.enabled'),\n ] },\n ],\n },\n {\n id: 'tbl-row-messages',\n columns: [\n { id: 'tbl-msg-col-1', fields: [\n safeName('table.messages.actions.confirmations.delete'),\n safeName('table.messages.actions.confirmations.deleteMultiple'),\n safeName('table.messages.actions.confirmations.save'),\n safeName('table.messages.actions.confirmations.cancel'),\n safeName('table.messages.actions.confirmations.export'),\n ] },\n { id: 'tbl-msg-col-2', fields: [\n safeName('table.messages.actions.progress.delete'),\n safeName('table.messages.actions.progress.deleteMultiple'),\n safeName('table.messages.actions.success.delete'),\n safeName('table.messages.actions.success.save'),\n safeName('table.messages.actions.success.export'),\n safeName('table.messages.actions.success.import'),\n ] },\n { id: 'tbl-msg-col-3', fields: [\n safeName('table.messages.actions.errors.delete'),\n safeName('table.messages.actions.errors.save'),\n safeName('table.messages.actions.errors.export'),\n safeName('table.messages.actions.errors.network'),\n safeName('table.messages.actions.errors.permission'),\n ] },\n ],\n },\n ],\n },\n {\n id: 'dialog',\n title: 'Dialog',\n rows: [\n {\n id: 'dlg-row-defaults',\n columns: [\n { id: 'dlg-def-col-1', fields: [\n safeName('dialog.defaults.confirm.ariaRole'),\n safeName('dialog.defaults.confirm.closeOnBackdropClick'),\n ] },\n { id: 'dlg-def-col-2', fields: [\n safeName('dialog.defaults.alert.ariaRole'),\n safeName('dialog.defaults.alert.closeOnBackdropClick'),\n ] },\n { id: 'dlg-def-col-3', fields: [\n safeName('dialog.defaults.prompt.ariaRole'),\n safeName('dialog.defaults.prompt.closeOnBackdropClick'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-danger',\n columns: [\n { id: 'dlg-var-danger-col-1', fields: [\n safeName('dialog.variants.danger.title'),\n safeName('dialog.variants.danger.icon'),\n safeName('dialog.variants.danger.message'),\n ] },\n { id: 'dlg-var-danger-col-2', fields: [\n safeName('dialog.variants.danger.ariaRole'),\n safeName('dialog.variants.danger.closeOnBackdropClick'),\n safeName('dialog.variants.danger.panelClass'),\n ] },\n { id: 'dlg-var-danger-col-3', fields: [\n safeName('dialog.variants.danger.actions'),\n safeName('dialog.variants.danger.styles'),\n safeName('dialog.variants.danger.animation'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-info',\n columns: [\n { id: 'dlg-var-info-col-1', fields: [\n safeName('dialog.variants.info.title'),\n safeName('dialog.variants.info.icon'),\n safeName('dialog.variants.info.message'),\n ] },\n { id: 'dlg-var-info-col-2', fields: [\n safeName('dialog.variants.info.ariaRole'),\n safeName('dialog.variants.info.closeOnBackdropClick'),\n safeName('dialog.variants.info.panelClass'),\n ] },\n { id: 'dlg-var-info-col-3', fields: [\n safeName('dialog.variants.info.actions'),\n safeName('dialog.variants.info.styles'),\n safeName('dialog.variants.info.animation'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-success',\n columns: [\n { id: 'dlg-var-success-col-1', fields: [\n safeName('dialog.variants.success.title'),\n safeName('dialog.variants.success.icon'),\n safeName('dialog.variants.success.message'),\n ] },\n { id: 'dlg-var-success-col-2', fields: [\n safeName('dialog.variants.success.ariaRole'),\n safeName('dialog.variants.success.closeOnBackdropClick'),\n safeName('dialog.variants.success.panelClass'),\n ] },\n { id: 'dlg-var-success-col-3', fields: [\n safeName('dialog.variants.success.actions'),\n safeName('dialog.variants.success.styles'),\n safeName('dialog.variants.success.animation'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-question',\n columns: [\n { id: 'dlg-var-question-col-1', fields: [\n safeName('dialog.variants.question.title'),\n safeName('dialog.variants.question.icon'),\n safeName('dialog.variants.question.message'),\n ] },\n { id: 'dlg-var-question-col-2', fields: [\n safeName('dialog.variants.question.ariaRole'),\n safeName('dialog.variants.question.closeOnBackdropClick'),\n safeName('dialog.variants.question.panelClass'),\n ] },\n { id: 'dlg-var-question-col-3', fields: [\n safeName('dialog.variants.question.actions'),\n safeName('dialog.variants.question.styles'),\n safeName('dialog.variants.question.animation'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-error',\n columns: [\n { id: 'dlg-var-error-col-1', fields: [\n safeName('dialog.variants.error.title'),\n safeName('dialog.variants.error.icon'),\n safeName('dialog.variants.error.message'),\n ] },\n { id: 'dlg-var-error-col-2', fields: [\n safeName('dialog.variants.error.ariaRole'),\n safeName('dialog.variants.error.closeOnBackdropClick'),\n safeName('dialog.variants.error.panelClass'),\n ] },\n { id: 'dlg-var-error-col-3', fields: [\n safeName('dialog.variants.error.actions'),\n safeName('dialog.variants.error.styles'),\n safeName('dialog.variants.error.animation'),\n ] },\n ],\n },\n ],\n },\n ],\n actions: {\n placement: 'afterSections',\n // Hide internal form actions; Settings Panel footer handles Apply/Save\n submit: { visible: false, label: 'Salvar' },\n cancel: { visible: false, label: 'Cancelar' },\n reset: { visible: false, label: 'Redefinir', type: 'reset' as any },\n },\n fieldMetadata: fields as any,\n };\n\n return cfg;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, ViewChild, ViewContainerRef, DestroyRef, inject } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport type { FormConfig, FormValueChangeEvent } from '@praxisui/core';\nimport { GlobalConfigAdminService } from './global-config-admin.service';\nimport { buildGlobalConfigFormConfig } from './global-config-editor.schema';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IconPickerService, PraxisIconDirective } from '@praxisui/core';\n\n@Component({\n selector: 'praxis-global-config-editor',\n standalone: true,\n imports: [CommonModule, MatSnackBarModule, MatExpansionModule, MatIconModule, MatButtonModule, MatTooltipModule, PraxisIconDirective],\n template: `\n <mat-accordion multi>\n <mat-expansion-panel [expanded]=\"true\">\n <mat-expansion-panel-header>\n <mat-panel-title>CRUD</mat-panel-title>\n <mat-panel-description>Políticas globais de abertura, back e header</mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template #hostCrud></ng-template>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>Dynamic Fields</mat-panel-title>\n <mat-panel-description>Async Select, cascata e paginação</mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template #hostFields></ng-template>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>Tabela</mat-panel-title>\n <mat-panel-description>Toolbar, aparência e filtro avançado</mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template #hostTable></ng-template>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>Dialog</mat-panel-title>\n <mat-panel-description>Defaults e variants (danger, info, success, question, error)</mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template #hostDialog></ng-template>\n <!-- Icon UX helpers for Dialog variants -->\n <div class=\"dlg-icon-helpers\">\n <div class=\"dlg-icon-helpers__head\">Ícones por perfil (atalhos)</div>\n <div class=\"dlg-icon-helpers__row\" *ngFor=\"let k of dialogVariantKeys\">\n <div class=\"dlg-icon-helpers__label\">{{ k }}</div>\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"getVariantIcon(k) || 'mi:help_outline'\" class=\"dlg-icon-helpers__preview\"></mat-icon>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"pickVariantIcon(k)\" matTooltip=\"Escolher ícone para {{k}}\">\n <mat-icon>search</mat-icon>\n Escolher ícone\n </button>\n <button mat-icon-button type=\"button\" *ngIf=\"getVariantIcon(k)\" (click)=\"clearVariantIcon(k)\" matTooltip=\"Limpar ícone de {{k}}\" aria-label=\"Limpar ícone\">\n <mat-icon>backspace</mat-icon>\n </button>\n <span class=\"dlg-icon-helpers__value\" *ngIf=\"getVariantIcon(k)\">{{ getVariantIcon(k) }}</span>\n </div>\n <div class=\"dlg-icon-helpers__hint\">Dica: O campo de texto acima permanece editável. Estes botões apenas facilitam a escolha/limpeza com preview.</div>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n `,\n styles: [`\n .dlg-icon-helpers{margin:12px 16px 4px 16px; padding:12px; border:1px dashed rgba(0,0,0,.1); border-radius:8px;}\n .dlg-icon-helpers__head{font-weight:600; margin-bottom:8px; opacity:.8}\n .dlg-icon-helpers__row{display:flex; align-items:center; gap:12px; padding:6px 0}\n .dlg-icon-helpers__label{text-transform:capitalize; width:96px; opacity:.8}\n .dlg-icon-helpers__preview{width:24px; height:24px;}\n .dlg-icon-helpers__value{font-family:monospace; font-size:12px; opacity:.8}\n .dlg-icon-helpers__hint{margin-top:8px; font-size:12px; opacity:.7}\n `],\n})\nexport class GlobalConfigEditorComponent implements OnInit {\n formConfig!: FormConfig;\n private initialValues: Record<string, any> = {};\n private currentValues: Record<string, any> = {};\n private pathMap: Record<string, string> = {};\n private bootstrappedSections = new Set<string>();\n private readonly allSections = ['crud', 'dynamic-fields', 'table', 'dialog'] as const;\n\n // SettingsPanel integration signals\n readonly isDirty$ = new BehaviorSubject<boolean>(false);\n readonly isValid$ = new BehaviorSubject<boolean>(true);\n readonly isBusy$ = new BehaviorSubject<boolean>(false);\n\n @ViewChild('hostCrud', { read: ViewContainerRef, static: true }) hostCrud!: ViewContainerRef;\n @ViewChild('hostFields', { read: ViewContainerRef, static: true }) hostFields!: ViewContainerRef;\n @ViewChild('hostTable', { read: ViewContainerRef, static: true }) hostTable!: ViewContainerRef;\n @ViewChild('hostDialog', { read: ViewContainerRef, static: true }) hostDialog!: ViewContainerRef;\n private readonly destroyRef = inject(DestroyRef);\n private readonly iconPicker = inject(IconPickerService);\n\n // Guardar instância do form da seção 'dialog' para atualizar controles diretamente\n private dialogFormInst: any | null = null;\n readonly dialogVariantKeys = ['danger', 'info', 'success', 'question', 'error'] as const;\n\n constructor(private admin: GlobalConfigAdminService, private snack: MatSnackBar) {}\n\n ngOnInit(): void {\n const cfg = this.admin.getEffectiveConfig();\n const flat = this.flatten(cfg);\n this.formConfig = buildGlobalConfigFormConfig();\n // Build mapping from safeName -> dot path and set defaultValue on fieldMetadata\n this.pathMap = {};\n for (const fm of this.formConfig.fieldMetadata || []) {\n const da: any = (fm as any).dataAttributes || {};\n const path = da.globalPath || fm.name;\n this.pathMap[fm.name] = path;\n const v = flat[path];\n if (v !== undefined) (fm as any).defaultValue = v;\n }\n // Initial/current values in SAFE namespace (control names)\n this.initialValues = {};\n for (const safe of Object.keys(this.pathMap)) {\n const path = this.pathMap[safe];\n const v = flat[path];\n if (v !== undefined) this.initialValues[safe] = v;\n }\n this.currentValues = { ...this.initialValues };\n\n // Lazy-load PraxisDynamicForm to avoid circular dependency with settings-panel\n import('@praxisui/dynamic-form').then((m: any) => {\n const Comp = m.PraxisDynamicForm as any;\n const makeGroupConfig = (sectionId: string): any => {\n const sec = (this.formConfig.sections || []).find((s: any) => s.id === sectionId);\n if (!sec) return { sections: [], fieldMetadata: [] } as any;\n // Collect field names in this section\n const names = new Set<string>();\n for (const row of sec.rows || []) {\n for (const col of row.columns || []) {\n for (const fname of col.fields || []) names.add(fname);\n }\n }\n const fms = (this.formConfig.fieldMetadata || []).filter((f: any) => names.has(f.name));\n return { sections: [sec], fieldMetadata: fms } as any;\n };\n\n const groups: Array<{ id: string; host: ViewContainerRef; cfg: any }> = [\n { id: 'crud', host: this.hostCrud, cfg: makeGroupConfig('crud') },\n { id: 'dynamic-fields', host: this.hostFields, cfg: makeGroupConfig('dynamic-fields') },\n { id: 'table', host: this.hostTable, cfg: makeGroupConfig('table') },\n { id: 'dialog', host: this.hostDialog, cfg: makeGroupConfig('dialog') },\n ];\n\n for (const g of groups) {\n const ref = g.host.createComponent(Comp);\n ref.setInput('config', g.cfg);\n ref.setInput('mode', 'edit');\n ref.setInput('editModeEnabled', false);\n const inst: any = ref.instance as any;\n try { if (typeof inst.buildFormFromConfig === 'function') inst.buildFormFromConfig(); } catch {}\n try { inst.onSubmit = () => {}; } catch {}\n try { ref.changeDetectorRef.detectChanges(); } catch {}\n if (inst?.valueChange?.subscribe) {\n inst.valueChange.subscribe((ev: FormValueChangeEvent) => this.onValueChange(g.id, ev));\n }\n if (g.id === 'dialog') {\n // Guardar referência para facilitar setValue em campos de ícone\n this.dialogFormInst = inst;\n }\n this.destroyRef.onDestroy(() => { try { ref.destroy(); } catch {} });\n }\n });\n }\n\n onValueChange(sectionId: string, ev: FormValueChangeEvent): void {\n this.isValid$.next(!!ev.isValid);\n // Mesclar valores por seção (cada form emite somente seu grupo)\n this.currentValues = { ...this.currentValues, ...ev.formData };\n // Durante o bootstrap, coletar baseline de todas as seções\n if (!this.hasBootstrappedAll()) {\n this.initialValues = { ...this.initialValues, ...ev.formData };\n this.bootstrappedSections.add(sectionId);\n if (this.hasBootstrappedAll()) {\n // Após todas as seções emitirem, marcar como limpo\n this.isDirty$.next(false);\n }\n return;\n }\n this.isDirty$.next(!this.shallowEqual(this.currentValues, this.initialValues));\n }\n\n private hasBootstrappedAll(): boolean {\n return this.allSections.every((s) => this.bootstrappedSections.has(s));\n }\n\n // SettingsPanel expects these methods\n reset(): void {\n const flat: Record<string, any> = {};\n for (const safe of Object.keys(this.initialValues)) flat[safe] = this.initialValues[safe];\n for (const fm of this.formConfig.fieldMetadata || []) {\n const v = flat[fm.name];\n (fm as any).defaultValue = v;\n }\n this.currentValues = { ...this.initialValues };\n this.isDirty$.next(false);\n }\n\n getSettingsValue(): any {\n // Map SAFE keys back to dot-paths using pathMap\n const flat: Record<string, any> = {};\n for (const [safe, value] of Object.entries(this.currentValues)) {\n const path = this.pathMap[safe] || safe;\n flat[path] = value;\n }\n return this.toNested(flat);\n }\n\n onSave(): any {\n const partial = this.getSettingsValue();\n this.admin.save(partial);\n // Update baseline after save\n this.initialValues = { ...this.currentValues };\n this.isDirty$.next(false);\n try { this.snack.open('Configurações salvas', undefined, { duration: 2000 }); } catch {}\n return partial;\n }\n\n // ===== Helpers de UX para ícones de Dialog (variants) =====\n private safeName(path: string): string {\n return path.replace(/[^a-zA-Z0-9_]/g, '_');\n }\n getVariantIcon(key: string): string | undefined {\n const safe = this.safeName(`dialog.variants.${key}.icon`);\n return (this.currentValues as any)[safe];\n }\n async pickVariantIcon(key: string): Promise<void> {\n const safe = this.safeName(`dialog.variants.${key}.icon`);\n const current = (this.currentValues as any)[safe] || '';\n // Melhor UX: usar MatDialog (modal) em vez do Settings Panel para o picker\n const res = await this.iconPicker.openDialog({ value: current });\n if (res === undefined) return; // cancel\n this.setDialogControlValue(safe, res);\n }\n clearVariantIcon(key: string): void {\n const safe = this.safeName(`dialog.variants.${key}.icon`);\n this.setDialogControlValue(safe, '');\n }\n private setDialogControlValue(safeControlName: string, val: string): void {\n const inst: any = this.dialogFormInst as any;\n try {\n const ctrl = inst?.form?.get?.(safeControlName);\n if (ctrl) {\n ctrl.setValue(val);\n return;\n }\n } catch {}\n // Fallback: atualiza cache local e marca como sujo\n (this.currentValues as any)[safeControlName] = val;\n this.isDirty$.next(!this.shallowEqual(this.currentValues, this.initialValues));\n }\n\n private withDefaults(config: FormConfig, values: Record<string, any>): FormConfig {\n const next = JSON.parse(JSON.stringify(config)) as FormConfig;\n for (const section of next.sections || []) {\n for (const row of section.rows || []) {\n for (const col of row.columns || []) {\n for (const field of col.fields || []) {\n const key = (field as any).name as string;\n if (!key) continue;\n const v = values[key];\n if (v !== undefined) {\n (field as any).defaultValue = v;\n }\n }\n }\n }\n }\n return next;\n }\n\n private setByPath(target: any, dotPath: string, value: any): void {\n const parts = dotPath.split('.');\n let ref = target;\n for (let i = 0; i < parts.length - 1; i++) {\n const p = parts[i];\n if (typeof ref[p] !== 'object' || ref[p] == null) ref[p] = {};\n ref = ref[p];\n }\n ref[parts[parts.length - 1]] = value;\n }\n\n private flatten(obj: any, prefix = ''): Record<string, any> {\n const out: Record<string, any> = {};\n if (!obj || typeof obj !== 'object') return out;\n for (const key of Object.keys(obj)) {\n const val = (obj as any)[key];\n const path = prefix ? `${prefix}.${key}` : key;\n if (val && typeof val === 'object' && !Array.isArray(val)) {\n Object.assign(out, this.flatten(val, path));\n } else {\n out[path] = val;\n }\n }\n return out;\n }\n\n private toNested(flat: Record<string, any>): any {\n const out: any = {};\n for (const k of Object.keys(flat)) {\n const v = flat[k];\n if (v === undefined) continue;\n this.setByPath(out, k, v);\n }\n return out;\n }\n\n private shallowEqual(a: Record<string, any>, b: Record<string, any>): boolean {\n const ak = Object.keys(a);\n const bk = Object.keys(b);\n if (ak.length !== bk.length) return false;\n for (const k of ak) {\n if (a[k] !== b[k]) return false;\n }\n return true;\n }\n}\n","import { SettingsPanelService } from '../settings-panel.service';\nimport { GlobalConfigEditorComponent } from './global-config-editor.component';\n\nexport type OpenGlobalConfigOptions = {\n id?: string;\n title?: string;\n titleIcon?: string;\n};\n\n/**\n * Helper to open the Global Config Editor in a host application.\n * Usage:\n * openGlobalConfigEditor(settings);\n */\nexport function openGlobalConfigEditor(\n settings: SettingsPanelService,\n opts?: OpenGlobalConfigOptions,\n): void {\n settings.open({\n id: opts?.id ?? 'global-config',\n title: opts?.title ?? 'Configurações Globais',\n titleIcon: opts?.titleIcon ?? 'tune',\n content: { component: GlobalConfigEditorComponent, inputs: {} },\n });\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1","i1.GlobalConfigAdminService","i4","i5","i6","i7"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"praxisui-settings-panel.mjs","sources":["../../../projects/praxis-settings-panel/src/lib/settings-panel.component.ts","../../../projects/praxis-settings-panel/src/lib/settings-panel.component.html","../../../projects/praxis-settings-panel/src/lib/settings-panel.ref.ts","../../../projects/praxis-settings-panel/src/lib/settings-panel.tokens.ts","../../../projects/praxis-settings-panel/src/lib/settings-panel.service.ts","../../../projects/praxis-settings-panel/src/lib/global-config-editor/global-config-admin.service.ts","../../../projects/praxis-settings-panel/src/lib/global-config-editor/global-config-editor.schema.ts","../../../projects/praxis-settings-panel/src/lib/global-config-editor/global-config-editor.component.ts","../../../projects/praxis-settings-panel/src/lib/global-config-editor/open-global-config-editor.ts","../../../projects/praxis-settings-panel/src/praxisui-settings-panel.ts"],"sourcesContent":["import {\n Component,\n ComponentRef,\n HostListener,\n Injector,\n DestroyRef,\n inject,\n Type,\n ViewChild,\n ChangeDetectorRef,\n ViewContainerRef,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PraxisIconDirective } from '@praxisui/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { SettingsPanelRef } from './settings-panel.ref';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { firstValueFrom, isObservable, of } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport {\n ConfirmDialogComponent,\n ConfirmDialogData,\n} from '@praxisui/dynamic-fields';\n\n@Component({\n selector: 'praxis-settings-panel',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n PraxisIconDirective,\n MatTooltipModule,\n CdkTrapFocus,\n MatProgressSpinnerModule,\n MatDialogModule,\n ],\n templateUrl: './settings-panel.component.html',\n styleUrls: ['./settings-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SettingsPanelComponent {\n title = '';\n titleIcon?: string;\n expanded = false;\n ref!: SettingsPanelRef;\n contentRef?: ComponentRef<any>;\n private static nextId = 0;\n titleId = `praxis-settings-panel-title-${SettingsPanelComponent.nextId++}`;\n\n isDirty = false;\n isValid = true;\n isBusy = false;\n\n get canApply(): boolean {\n return this.isDirty && this.isValid && !this.isBusy;\n }\n\n get canSave(): boolean {\n return this.isDirty && this.isValid && !this.isBusy;\n }\n\n get disabledReason(): string {\n if (this.isBusy) {\n return 'Operação em andamento...';\n }\n if (!this.isValid) {\n return 'O formulário contém erros que precisam ser corrigidos.';\n }\n if (!this.isDirty) {\n return 'Nenhuma alteração para aplicar ou salvar.';\n }\n return '';\n }\n\n private readonly destroyRef = inject(DestroyRef);\n\n @ViewChild('contentHost', { read: ViewContainerRef, static: true })\n private contentHost!: ViewContainerRef;\n\n constructor(private cdr: ChangeDetectorRef, private dialog: MatDialog) {}\n\n attachContent(\n component: Type<any>,\n injector: Injector,\n ref: SettingsPanelRef,\n ): void {\n this.ref = ref;\n this.contentRef = this.contentHost.createComponent(component, {\n injector,\n });\n\n const instance: any = this.contentRef.instance;\n\n if (instance.isDirty$) {\n instance.isDirty$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((dirty: boolean) => {\n this.isDirty = dirty;\n try { (console.log || console.debug)('[SettingsPanel] isDirty$ ->', dirty); } catch {}\n this.cdr.markForCheck();\n });\n }\n\n if (instance.isValid$) {\n instance.isValid$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((valid: boolean) => {\n this.isValid = valid;\n this.cdr.markForCheck();\n });\n }\n\n if (instance.isBusy$) {\n instance.isBusy$\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((busy: boolean) => {\n this.isBusy = busy;\n this.cdr.markForCheck();\n });\n }\n\n // Generic output bridging: if the embedded component emits `selected`, save and close.\n try {\n const selected$ = instance?.selected;\n if (selected$ && typeof selected$.subscribe === 'function') {\n const obs = typeof selected$.pipe === 'function'\n ? selected$.pipe(takeUntilDestroyed(this.destroyRef))\n : selected$;\n obs.subscribe((value: any) => {\n try { (console.log || console.debug)('[SettingsPanel] content.selected → apply()'); } catch {}\n // Apply emits value to the opener without closing the panel.\n this.ref.apply(value);\n });\n }\n } catch {}\n }\n\n onReset(): void {\n const dialogData: ConfirmDialogData = {\n title: 'Redefinir Alterações',\n message: 'Tem certeza de que deseja redefinir todas as alterações?',\n confirmText: 'Redefinir',\n cancelText: 'Cancelar',\n type: 'warning',\n icon: 'restart_alt',\n };\n\n this.dialog\n .open(ConfirmDialogComponent, { data: dialogData })\n .afterClosed()\n .pipe(filter((confirmed) => confirmed))\n .subscribe(() => {\n this.contentRef?.instance?.reset?.();\n this.ref.reset();\n });\n }\n\n onApply(): void {\n if (!this.canApply) return;\n const value = this.contentRef?.instance?.getSettingsValue?.();\n try { (console.log || console.debug)('[SettingsPanel] onApply()', { canApply: this.canApply }); } catch {}\n this.ref.apply(value);\n }\n\n onSave(): void {\n if (!this.canSave) return;\n const instance: any = this.contentRef?.instance;\n try {\n const valuePreview = instance?.getSettingsValue?.();\n const keys = valuePreview && typeof valuePreview === 'object' ? Object.keys(valuePreview) : undefined;\n const keyTypes = valuePreview && typeof valuePreview === 'object'\n ? Object.fromEntries(Object.entries(valuePreview).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave()', { canSave: this.canSave, preview: { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes } });\n } catch {}\n const result = instance?.onSave?.();\n\n if (isObservable(result)) {\n firstValueFrom(result).then((value) => { try {\n const keys = value && typeof value === 'object' ? Object.keys(value) : undefined;\n const keyTypes = value && typeof value === 'object'\n ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave(result:observable)', { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {} this.ref.save(value); });\n } else if (result instanceof Promise) {\n result.then((value: unknown) => { try {\n const keys = value && typeof value === 'object' ? Object.keys(value as any) : undefined;\n const keyTypes = value && typeof value === 'object'\n ? Object.fromEntries(Object.entries(value as any).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave(result:promise)', { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {} this.ref.save(value); });\n } else if (result !== undefined) {\n try {\n const keys = result && typeof result === 'object' ? Object.keys(result) : undefined;\n const keyTypes = result && typeof result === 'object'\n ? Object.fromEntries(Object.entries(result).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave(result:value)', { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {}\n this.ref.save(result);\n } else {\n const value = instance?.getSettingsValue?.();\n try {\n const keys = value && typeof value === 'object' ? Object.keys(value) : undefined;\n const keyTypes = value && typeof value === 'object'\n ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanel] onSave(getSettingsValue)', { keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {}\n this.ref.save(value);\n }\n }\n\n toggleExpand(): void {\n this.expanded = !this.expanded;\n this.cdr.markForCheck();\n }\n\n onCancel(): void {\n of(this.isDirty)\n .pipe(\n switchMap((dirty) => {\n if (!dirty) {\n try { (console.log || console.debug)('[SettingsPanel] onCancel(): not dirty → close'); } catch {}\n return of(true);\n }\n try { (console.log || console.debug)('[SettingsPanel] onCancel(): dirty → confirm dialog'); } catch {}\n const dialogData: ConfirmDialogData = {\n title: 'Descartar Alterações',\n message:\n 'Você tem alterações não salvas. Tem certeza de que deseja descartá-las?',\n confirmText: 'Descartar',\n cancelText: 'Continuar Editando',\n type: 'warning',\n icon: 'warning',\n };\n return this.dialog\n .open(ConfirmDialogComponent, { data: dialogData })\n .afterClosed();\n }),\n filter((confirmed) => confirmed),\n )\n .subscribe(() => {\n try { (console.log || console.debug)('[SettingsPanel] close(confirm)'); } catch {}\n this.ref.close('cancel');\n });\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.onCancel();\n } else if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n this.onSave();\n } else if ((event.key === 's' || event.key === 'S') && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n this.onSave();\n }\n }\n}\n","<div\n class=\"settings-panel\"\n [class.expanded]=\"expanded\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"titleId\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n>\n <header class=\"settings-panel-header\">\n <h2 class=\"settings-panel-title\" [id]=\"titleId\">\n <mat-icon *ngIf=\"titleIcon\" class=\"title-icon\" [praxisIcon]=\"titleIcon\"></mat-icon>\n <span>{{ title }}</span>\n </h2>\n <span class=\"spacer\"></span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n [attr.aria-expanded]=\"expanded\"\n [matTooltip]=\"expanded ? 'Reduzir painel' : 'Expandir painel'\"\n (click)=\"toggleExpand()\"\n >\n <mat-icon [praxisIcon]=\"expanded ? 'close_fullscreen' : 'open_in_full'\"></mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n aria-label=\"Fechar\"\n matTooltip=\"Fechar\"\n (click)=\"onCancel()\"\n >\n <mat-icon [praxisIcon]=\"'close'\"></mat-icon>\n </button>\n </header>\n <div class=\"settings-panel-body\">\n <ng-template #contentHost></ng-template>\n </div>\n <footer class=\"settings-panel-footer\">\n <button mat-button type=\"button\" (click)=\"onReset()\" [disabled]=\"isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'restart_alt'\"></mat-icon>\n <span>Redefinir</span>\n </button>\n <span class=\"spacer\"></span>\n <button\n mat-button\n type=\"button\"\n (click)=\"onCancel()\"\n [disabled]=\"isBusy\"\n >\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'close'\"></mat-icon>\n <span>Cancelar</span>\n </button>\n <button\n mat-stroked-button\n type=\"button\"\n (click)=\"onApply()\"\n [disabled]=\"!canApply\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canApply\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'done'\"></mat-icon>\n <span>Aplicar</span>\n </ng-container>\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave\"\n [matTooltip]=\"disabledReason\"\n [matTooltipDisabled]=\"canSave\"\n aria-busy=\"isBusy\"\n >\n <mat-progress-spinner\n *ngIf=\"isBusy\"\n mode=\"indeterminate\"\n diameter=\"20\"\n ></mat-progress-spinner>\n <ng-container *ngIf=\"!isBusy\">\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"'save'\"></mat-icon>\n <span>Salvar & Fechar</span>\n </ng-container>\n </button>\n </footer>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\nimport { SettingsPanelCloseReason } from './settings-panel.types';\n\nexport class SettingsPanelRef {\n private appliedSubject = new Subject<any>();\n private savedSubject = new Subject<any>();\n private resetSubject = new Subject<void>();\n private closedSubject = new Subject<SettingsPanelCloseReason>();\n\n applied$ = this.appliedSubject.asObservable();\n saved$ = this.savedSubject.asObservable();\n reset$ = this.resetSubject.asObservable();\n closed$ = this.closedSubject.asObservable();\n\n constructor(private overlayRef: OverlayRef) {}\n\n apply(value: any): void {\n this.appliedSubject.next(value);\n }\n\n /**\n * Emits the provided value on {@link saved$} and closes the panel.\n *\n * This should be called with the configuration object returned by the\n * editor's `onSave()` method so that consumers can persist the new settings.\n */\n save(value: any): void {\n try {\n const type = value == null ? 'nullish' : Array.isArray(value) ? 'array' : typeof value;\n const keys = value && typeof value === 'object' ? Object.keys(value) : undefined;\n const keyTypes = value && typeof value === 'object'\n ? Object.fromEntries(Object.entries(value).map(([k, v]) => [k, Array.isArray(v) ? `array(${v.length})` : (v === null ? 'null' : typeof v)]))\n : undefined;\n (console.log || console.debug)('[SettingsPanelRef] save()', { type, keysCount: Array.isArray(keys) ? keys.length : undefined, keyTypes });\n } catch {}\n this.savedSubject.next(value);\n this.close('save');\n }\n\n reset(): void {\n this.resetSubject.next();\n }\n\n updateSize(width: string | number): void {\n this.overlayRef.updateSize({ width });\n }\n\n close(reason: SettingsPanelCloseReason = 'cancel'): void {\n if (!this.overlayRef?.hasAttached()) {\n return;\n }\n this.overlayRef.dispose();\n this.closedSubject.next(reason);\n this.complete();\n }\n\n private complete(): void {\n this.appliedSubject.complete();\n this.savedSubject.complete();\n this.resetSubject.complete();\n this.closedSubject.complete();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { SettingsPanelRef } from './settings-panel.ref';\n\nexport const SETTINGS_PANEL_DATA = new InjectionToken<any>('SETTINGS_PANEL_DATA');\nexport const SETTINGS_PANEL_REF = new InjectionToken<SettingsPanelRef>('SETTINGS_PANEL_REF');\n","import { Injectable, Injector } from '@angular/core';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { SettingsPanelComponent } from './settings-panel.component';\nimport { SettingsPanelRef } from './settings-panel.ref';\nimport {\n SettingsPanelCloseReason,\n SettingsPanelConfig,\n} from './settings-panel.types';\nimport {\n SETTINGS_PANEL_DATA,\n SETTINGS_PANEL_REF,\n} from './settings-panel.tokens';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingsPanelService {\n private currentRef?: SettingsPanelRef;\n\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n ) {}\n\n /**\n * Opens a new settings panel. If another panel is already open it will be\n * closed before the new one is created. Future improvements may reuse the\n * same overlay when the provided id matches.\n */\n open(config: SettingsPanelConfig): SettingsPanelRef {\n if (this.currentRef) {\n this.currentRef.close('cancel');\n }\n\n const overlayConfig: OverlayConfig = {\n hasBackdrop: true,\n backdropClass: 'praxis-settings-panel-backdrop',\n panelClass: 'praxis-settings-panel-pane',\n positionStrategy: this.overlay.position().global().top('0').right('0'),\n height: '100vh',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n };\n\n const overlayRef = this.overlay.create(overlayConfig);\n const ref = new SettingsPanelRef(overlayRef);\n\n const panelPortal = new ComponentPortal(SettingsPanelComponent);\n const panelRef = overlayRef.attach(panelPortal);\n panelRef.instance.title = config.title;\n (panelRef.instance as any).titleIcon = (config as any).titleIcon;\n\n const inputs = config.content.inputs;\n try {\n const dbg = inputs && (inputs as any).page ? { hasPage: true, conns: Array.isArray((inputs as any).page.connections) ? (inputs as any).page.connections.length : undefined } : { hasPage: false };\n (console.log || console.debug)('[SettingsPanel] open()', { id: (config as any).id, title: config.title, inputs: dbg });\n } catch {}\n\n const injector = Injector.create({\n providers: [\n { provide: SETTINGS_PANEL_DATA, useValue: inputs },\n { provide: SETTINGS_PANEL_REF, useValue: ref },\n ],\n parent: this.injector,\n });\n panelRef.instance.attachContent(config.content.component, injector, ref);\n\n overlayRef.backdropClick().subscribe(() => ref.close('backdrop'));\n overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n ref.close('esc');\n }\n });\n ref.closed$.subscribe(() => {\n if (this.currentRef === ref) {\n this.currentRef = undefined;\n }\n });\n\n this.currentRef = ref;\n return ref;\n }\n\n close(reason: SettingsPanelCloseReason = 'cancel'): void {\n this.currentRef?.close(reason);\n this.currentRef = undefined;\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { GlobalConfigService } from '@praxisui/core';\nimport type { GlobalConfig } from '@praxisui/core';\n\n/**\n * Admin helper to load, patch and persist GlobalConfig.\n * Intended to be used by the Global Config Editor UI.\n */\n@Injectable({ providedIn: 'root' })\nexport class GlobalConfigAdminService {\n private readonly global = inject(GlobalConfigService) as GlobalConfigService;\n\n /** Returns the effective merged configuration (providers + storage). */\n getEffectiveConfig(): GlobalConfig {\n // buildConfig is internal in service; use public getters instead\n return {\n crud: this.global.getCrud(),\n dynamicFields: this.global.getDynamicFields(),\n table: this.global.getTable(),\n dialog: this.global.getDialog(),\n } as GlobalConfig;\n }\n\n /** Persist a partial update and notify listeners. */\n save(partial: Partial<GlobalConfig>): void {\n this.global.saveGlobalConfig(partial);\n }\n}\n","import type { FormConfig } from '@praxisui/core';\nimport { FieldControlType } from '@praxisui/core';\n\nfunction safeName(path: string): string {\n return path.replace(/[^a-zA-Z0-9_]/g, '_');\n}\n\n/**\n * Minimal FormConfig schema for the Global Config editor UI.\n * This can be extended incrementally as new domains/settings are added.\n */\nexport function buildGlobalConfigFormConfig(): FormConfig {\n const fields = [\n // CRUD\n {\n name: safeName('crud.defaults.openMode'),\n label: 'Modo de abertura padrão',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'Rota', value: 'route' },\n { text: 'Modal', value: 'modal' },\n { text: 'Drawer', value: 'drawer' },\n ],\n hint: 'Aplicado quando ação/metadado não definem modo.',\n dataAttributes: { globalPath: 'crud.defaults.openMode' },\n },\n {\n name: safeName('crud.defaults.back.confirmOnDirty'),\n label: 'Confirmar ao sair com alterações',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'crud.defaults.back.confirmOnDirty' },\n },\n {\n name: safeName('crud.defaults.back.strategy'),\n label: 'Back: estratégia',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'auto', value: 'auto' },\n { text: 'close', value: 'close' },\n { text: 'navigate', value: 'navigate' },\n ],\n dataAttributes: { globalPath: 'crud.defaults.back.strategy' },\n },\n {\n name: safeName('crud.defaults.header.showBack'),\n label: 'Header: mostrar voltar',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'crud.defaults.header.showBack' },\n },\n {\n name: safeName('crud.defaults.header.variant'),\n label: 'Header: variante',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'ghost', value: 'ghost' },\n { text: 'tonal', value: 'tonal' },\n { text: 'outlined', value: 'outlined' },\n ],\n dataAttributes: { globalPath: 'crud.defaults.header.variant' },\n },\n {\n name: safeName('crud.defaults.header.sticky'),\n label: 'Header: fixo (sticky)',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'crud.defaults.header.sticky' },\n },\n {\n name: safeName('crud.defaults.header.divider'),\n label: 'Header: mostrar divisor',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'crud.defaults.header.divider' },\n },\n {\n name: safeName('crud.defaults.modal.width'),\n label: 'Modal: largura (ex.: 900px)',\n controlType: FieldControlType.INPUT,\n dataAttributes: { globalPath: 'crud.defaults.modal.width' },\n },\n {\n name: safeName('crud.defaults.modal.maxWidth'),\n label: 'Modal: largura máxima (ex.: 96vw)',\n controlType: FieldControlType.INPUT,\n dataAttributes: { globalPath: 'crud.defaults.modal.maxWidth' },\n },\n {\n name: safeName('crud.defaults.modal.backdropStyle'),\n label: 'Modal: backdrop',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'blur', value: 'blur' },\n { text: 'dim', value: 'dim' },\n { text: 'transparent', value: 'transparent' },\n ],\n dataAttributes: { globalPath: 'crud.defaults.modal.backdropStyle' },\n },\n\n // Dynamic Fields\n {\n name: safeName('dynamicFields.asyncSelect.loadOn'),\n label: 'Async Select: loadOn',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'open', value: 'open' },\n { text: 'init', value: 'init' },\n { text: 'none', value: 'none' },\n ],\n hint: 'Estratégia de primeira carga quando metadado não definir.',\n dataAttributes: { globalPath: 'dynamicFields.asyncSelect.loadOn' },\n },\n {\n name: safeName('dynamicFields.cascade.enable'),\n label: 'Cascata nativa habilitada',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dynamicFields.cascade.enable' },\n },\n {\n name: safeName('dynamicFields.cascade.loadOnChange'),\n label: 'Cascata: loadOnChange',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'respectLoadOn', value: 'respectLoadOn' },\n { text: 'immediate', value: 'immediate' },\n { text: 'manual', value: 'manual' },\n ],\n dataAttributes: { globalPath: 'dynamicFields.cascade.loadOnChange' },\n },\n {\n name: safeName('dynamicFields.cascade.debounceMs'),\n label: 'Cascata: debounce (ms)',\n controlType: FieldControlType.NUMERIC_TEXT_BOX,\n dataAttributes: { globalPath: 'dynamicFields.cascade.debounceMs' },\n },\n\n // Dynamic Fields async-select extra\n {\n name: safeName('dynamicFields.asyncSelect.pageSize'),\n label: 'Async Select: pageSize',\n controlType: FieldControlType.NUMERIC_TEXT_BOX,\n dataAttributes: { globalPath: 'dynamicFields.asyncSelect.pageSize' },\n },\n {\n name: safeName('dynamicFields.asyncSelect.useCursor'),\n label: 'Async Select: usar cursor',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dynamicFields.asyncSelect.useCursor' },\n },\n\n // Table\n {\n name: safeName('table.behavior.pagination.enabled'),\n label: 'Paginação habilitada',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'table.behavior.pagination.enabled' },\n },\n {\n name: safeName('table.behavior.pagination.pageSize'),\n label: 'Tamanho da página',\n controlType: FieldControlType.NUMERIC_TEXT_BOX,\n dataAttributes: { globalPath: 'table.behavior.pagination.pageSize' },\n },\n {\n name: safeName('table.behavior.filtering.debounceTime'),\n label: 'Debounce do filtro (ms)',\n controlType: FieldControlType.NUMERIC_TEXT_BOX,\n dataAttributes: { globalPath: 'table.behavior.filtering.debounceTime' },\n },\n {\n name: safeName('table.behavior.sorting.enabled'),\n label: 'Ordenação habilitada',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'table.behavior.sorting.enabled' },\n },\n {\n name: safeName('table.behavior.selection.enabled'),\n label: 'Seleção habilitada',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'table.behavior.selection.enabled' },\n },\n {\n name: safeName('table.behavior.pagination.strategy'),\n label: 'Paginação: estratégia',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'client', value: 'client' },\n { text: 'server', value: 'server' },\n ],\n dataAttributes: { globalPath: 'table.behavior.pagination.strategy' },\n },\n {\n name: safeName('table.behavior.sorting.strategy'),\n label: 'Ordenação: estratégia',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'client', value: 'client' },\n { text: 'server', value: 'server' },\n ],\n dataAttributes: { globalPath: 'table.behavior.sorting.strategy' },\n },\n {\n name: safeName('table.behavior.pagination.showFirstLastButtons'),\n label: 'Paginação: botões Primeiro/Último',\n controlType: FieldControlType.CHECKBOX,\n dataAttributes: { globalPath: 'table.behavior.pagination.showFirstLastButtons' },\n },\n {\n name: safeName('table.toolbar.visible'),\n label: 'Toolbar visível',\n controlType: FieldControlType.CHECKBOX,\n dataAttributes: { globalPath: 'table.toolbar.visible' },\n },\n {\n name: safeName('table.appearance.density'),\n label: 'Aparência: densidade',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'comfortable', value: 'comfortable' },\n { text: 'cozy', value: 'cozy' },\n { text: 'compact', value: 'compact' },\n ],\n dataAttributes: { globalPath: 'table.appearance.density' },\n },\n {\n name: safeName('table.filteringUi.advancedOpenMode'),\n label: 'Filtro: modo de abertura',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'overlay', value: 'overlay' },\n { text: 'modal', value: 'modal' },\n { text: 'drawer', value: 'drawer' },\n ],\n dataAttributes: { globalPath: 'table.filteringUi.advancedOpenMode' },\n },\n {\n name: safeName('table.filteringUi.overlayVariant'),\n label: 'Filtro: overlay (visual)',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'card', value: 'card' },\n { text: 'frosted', value: 'frosted' },\n ],\n dataAttributes: { globalPath: 'table.filteringUi.overlayVariant' },\n },\n {\n name: safeName('table.filteringUi.overlayBackdrop'),\n label: 'Filtro: backdrop no overlay',\n controlType: FieldControlType.CHECKBOX,\n dataAttributes: { globalPath: 'table.filteringUi.overlayBackdrop' },\n },\n // Table messages - confirmations\n { name: safeName('table.messages.actions.confirmations.delete'), label: 'Excluir — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.delete' } },\n { name: safeName('table.messages.actions.confirmations.deleteMultiple'), label: 'Excluir (múltiplos) — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.deleteMultiple' } },\n { name: safeName('table.messages.actions.confirmations.save'), label: 'Salvar — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.save' } },\n { name: safeName('table.messages.actions.confirmations.cancel'), label: 'Cancelar — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.cancel' } },\n { name: safeName('table.messages.actions.confirmations.export'), label: 'Exportar — confirmação', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.confirmations.export' } },\n // Table messages - progress\n { name: safeName('table.messages.actions.progress.delete'), label: 'Excluir — progresso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.progress.delete' } },\n { name: safeName('table.messages.actions.progress.deleteMultiple'), label: 'Excluir (múltiplos) — progresso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.progress.deleteMultiple' } },\n // Table messages - success\n { name: safeName('table.messages.actions.success.delete'), label: 'Excluir — sucesso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.success.delete' } },\n { name: safeName('table.messages.actions.success.save'), label: 'Salvar — sucesso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.success.save' } },\n { name: safeName('table.messages.actions.success.export'), label: 'Exportar — sucesso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.success.export' } },\n { name: safeName('table.messages.actions.success.import'), label: 'Importar — sucesso', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.success.import' } },\n // Table messages - errors\n { name: safeName('table.messages.actions.errors.delete'), label: 'Excluir — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.delete' } },\n { name: safeName('table.messages.actions.errors.save'), label: 'Salvar — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.save' } },\n { name: safeName('table.messages.actions.errors.export'), label: 'Exportar — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.export' } },\n { name: safeName('table.messages.actions.errors.network'), label: 'Rede — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.network' } },\n { name: safeName('table.messages.actions.errors.permission'), label: 'Permissão — erro', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'table.messages.actions.errors.permission' } },\n\n // Dialog — Defaults by type\n {\n name: safeName('dialog.defaults.confirm.ariaRole'),\n label: 'Dialog Defaults: confirm — ariaRole',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'dialog', value: 'dialog' },\n { text: 'alertdialog', value: 'alertdialog' },\n ],\n dataAttributes: { globalPath: 'dialog.defaults.confirm.ariaRole' },\n },\n {\n name: safeName('dialog.defaults.confirm.closeOnBackdropClick'),\n label: 'Dialog Defaults: confirm — fechar ao clicar no backdrop',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dialog.defaults.confirm.closeOnBackdropClick' },\n },\n {\n name: safeName('dialog.defaults.alert.ariaRole'),\n label: 'Dialog Defaults: alert — ariaRole',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'dialog', value: 'dialog' },\n { text: 'alertdialog', value: 'alertdialog' },\n ],\n dataAttributes: { globalPath: 'dialog.defaults.alert.ariaRole' },\n },\n {\n name: safeName('dialog.defaults.alert.closeOnBackdropClick'),\n label: 'Dialog Defaults: alert — fechar ao clicar no backdrop',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dialog.defaults.alert.closeOnBackdropClick' },\n },\n {\n name: safeName('dialog.defaults.prompt.ariaRole'),\n label: 'Dialog Defaults: prompt — ariaRole',\n controlType: FieldControlType.SELECT,\n selectOptions: [\n { text: 'dialog', value: 'dialog' },\n { text: 'alertdialog', value: 'alertdialog' },\n ],\n dataAttributes: { globalPath: 'dialog.defaults.prompt.ariaRole' },\n },\n {\n name: safeName('dialog.defaults.prompt.closeOnBackdropClick'),\n label: 'Dialog Defaults: prompt — fechar ao clicar no backdrop',\n controlType: FieldControlType.TOGGLE,\n dataAttributes: { globalPath: 'dialog.defaults.prompt.closeOnBackdropClick' },\n },\n\n // Dialog — Variants per profile (danger, info, success, question, error)\n // Each variant exposes commonly customized fields + JSON editors for actions/styles\n // danger\n { name: safeName('dialog.variants.danger.title'), label: 'Variant danger — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.danger.title' } },\n { name: safeName('dialog.variants.danger.icon'), label: 'Variant danger — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.danger.icon' } },\n { name: safeName('dialog.variants.danger.message'), label: 'Variant danger — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.danger.message' } },\n { name: safeName('dialog.variants.danger.ariaRole'), label: 'Variant danger — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.danger.ariaRole' } },\n { name: safeName('dialog.variants.danger.closeOnBackdropClick'), label: 'Variant danger — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.danger.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.danger.panelClass'), label: 'Variant danger — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.danger.panelClass' } },\n { name: safeName('dialog.variants.danger.actions'), label: 'Variant danger — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.danger.actions', monospace: true }, hint: 'Ex.: [{\"id\":\"cancel\",\"text\":\"Cancelar\",\"role\":\"secondary\",\"close\":true,\"cssClass\":\"btn\"},{\"id\":\"confirm\",\"text\":\"Excluir\",\"role\":\"primary\",\"close\":true,\"cssClass\":\"btn btn-danger\",\"icon\":\"delete\"}]' },\n { name: safeName('dialog.variants.danger.styles'), label: 'Variant danger — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.danger.styles', monospace: true } },\n { name: safeName('dialog.variants.danger.animation'), label: 'Variant danger — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.danger.animation', monospace: true } },\n // info\n { name: safeName('dialog.variants.info.title'), label: 'Variant info — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.info.title' } },\n { name: safeName('dialog.variants.info.icon'), label: 'Variant info — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.info.icon' } },\n { name: safeName('dialog.variants.info.message'), label: 'Variant info — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.info.message' } },\n { name: safeName('dialog.variants.info.ariaRole'), label: 'Variant info — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.info.ariaRole' } },\n { name: safeName('dialog.variants.info.closeOnBackdropClick'), label: 'Variant info — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.info.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.info.panelClass'), label: 'Variant info — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.info.panelClass' } },\n { name: safeName('dialog.variants.info.actions'), label: 'Variant info — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.info.actions', monospace: true } },\n { name: safeName('dialog.variants.info.styles'), label: 'Variant info — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.info.styles', monospace: true } },\n { name: safeName('dialog.variants.info.animation'), label: 'Variant info — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.info.animation', monospace: true } },\n // success\n { name: safeName('dialog.variants.success.title'), label: 'Variant success — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.success.title' } },\n { name: safeName('dialog.variants.success.icon'), label: 'Variant success — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.success.icon' } },\n { name: safeName('dialog.variants.success.message'), label: 'Variant success — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.success.message' } },\n { name: safeName('dialog.variants.success.ariaRole'), label: 'Variant success — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.success.ariaRole' } },\n { name: safeName('dialog.variants.success.closeOnBackdropClick'), label: 'Variant success — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.success.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.success.panelClass'), label: 'Variant success — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.success.panelClass' } },\n { name: safeName('dialog.variants.success.actions'), label: 'Variant success — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.success.actions', monospace: true } },\n { name: safeName('dialog.variants.success.styles'), label: 'Variant success — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.success.styles', monospace: true } },\n { name: safeName('dialog.variants.success.animation'), label: 'Variant success — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.success.animation', monospace: true } },\n // question\n { name: safeName('dialog.variants.question.title'), label: 'Variant question — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.question.title' } },\n { name: safeName('dialog.variants.question.icon'), label: 'Variant question — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.question.icon' } },\n { name: safeName('dialog.variants.question.message'), label: 'Variant question — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.question.message' } },\n { name: safeName('dialog.variants.question.ariaRole'), label: 'Variant question — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.question.ariaRole' } },\n { name: safeName('dialog.variants.question.closeOnBackdropClick'), label: 'Variant question — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.question.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.question.panelClass'), label: 'Variant question — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.question.panelClass' } },\n { name: safeName('dialog.variants.question.actions'), label: 'Variant question — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.question.actions', monospace: true } },\n { name: safeName('dialog.variants.question.styles'), label: 'Variant question — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.question.styles', monospace: true } },\n { name: safeName('dialog.variants.question.animation'), label: 'Variant question — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.question.animation', monospace: true } },\n // error\n { name: safeName('dialog.variants.error.title'), label: 'Variant error — título', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.error.title' } },\n { name: safeName('dialog.variants.error.icon'), label: 'Variant error — ícone', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.error.icon' } },\n { name: safeName('dialog.variants.error.message'), label: 'Variant error — mensagem', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.error.message' } },\n { name: safeName('dialog.variants.error.ariaRole'), label: 'Variant error — ariaRole', controlType: FieldControlType.SELECT, selectOptions: [{ text: 'dialog', value: 'dialog' }, { text: 'alertdialog', value: 'alertdialog' }], dataAttributes: { globalPath: 'dialog.variants.error.ariaRole' } },\n { name: safeName('dialog.variants.error.closeOnBackdropClick'), label: 'Variant error — fechar ao clicar no backdrop', controlType: FieldControlType.TOGGLE, dataAttributes: { globalPath: 'dialog.variants.error.closeOnBackdropClick' } },\n { name: safeName('dialog.variants.error.panelClass'), label: 'Variant error — panelClass', controlType: FieldControlType.INPUT, dataAttributes: { globalPath: 'dialog.variants.error.panelClass' } },\n { name: safeName('dialog.variants.error.actions'), label: 'Variant error — actions (JSON array)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.error.actions', monospace: true } },\n { name: safeName('dialog.variants.error.styles'), label: 'Variant error — styles (JSON)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.error.styles', monospace: true } },\n { name: safeName('dialog.variants.error.animation'), label: 'Variant error — animation (JSON/boolean)', controlType: FieldControlType.TEXTAREA, dataAttributes: { globalPath: 'dialog.variants.error.animation', monospace: true } },\n ];\n\n const cfg: FormConfig = {\n sections: [\n {\n id: 'crud',\n title: 'CRUD',\n rows: [\n {\n id: 'crud-row-1',\n columns: [\n { id: 'crud-col-1', fields: [\n safeName('crud.defaults.openMode'),\n safeName('crud.defaults.back.strategy'),\n safeName('crud.defaults.back.confirmOnDirty'),\n ] },\n { id: 'crud-col-2', fields: [\n safeName('crud.defaults.header.showBack'),\n safeName('crud.defaults.header.variant'),\n safeName('crud.defaults.header.sticky'),\n safeName('crud.defaults.header.divider'),\n ] },\n { id: 'crud-col-3', fields: [\n safeName('crud.defaults.modal.width'),\n safeName('crud.defaults.modal.maxWidth'),\n safeName('crud.defaults.modal.backdropStyle'),\n ] },\n ],\n },\n ],\n },\n {\n id: 'dynamic-fields',\n title: 'Dynamic Fields',\n rows: [\n {\n id: 'df-row-1',\n columns: [\n { id: 'df-col-1', fields: [\n safeName('dynamicFields.asyncSelect.loadOn'),\n safeName('dynamicFields.asyncSelect.pageSize'),\n safeName('dynamicFields.asyncSelect.useCursor'),\n ] },\n { id: 'df-col-2', fields: [\n safeName('dynamicFields.cascade.enable'),\n safeName('dynamicFields.cascade.loadOnChange'),\n safeName('dynamicFields.cascade.debounceMs'),\n ] },\n ],\n },\n ],\n },\n {\n id: 'table',\n title: 'Tabela',\n rows: [\n {\n id: 'tbl-row-1',\n columns: [\n { id: 'tbl-col-1', fields: [\n safeName('table.toolbar.visible'),\n safeName('table.appearance.density'),\n safeName('table.filteringUi.advancedOpenMode'),\n safeName('table.filteringUi.overlayVariant'),\n safeName('table.filteringUi.overlayBackdrop'),\n ] },\n { id: 'tbl-col-2', fields: [\n safeName('table.behavior.pagination.enabled'),\n safeName('table.behavior.pagination.pageSize'),\n safeName('table.behavior.pagination.showFirstLastButtons'),\n safeName('table.behavior.pagination.strategy'),\n ] },\n { id: 'tbl-col-3', fields: [\n safeName('table.behavior.filtering.debounceTime'),\n safeName('table.behavior.sorting.enabled'),\n safeName('table.behavior.sorting.strategy'),\n safeName('table.behavior.selection.enabled'),\n ] },\n ],\n },\n {\n id: 'tbl-row-messages',\n columns: [\n { id: 'tbl-msg-col-1', fields: [\n safeName('table.messages.actions.confirmations.delete'),\n safeName('table.messages.actions.confirmations.deleteMultiple'),\n safeName('table.messages.actions.confirmations.save'),\n safeName('table.messages.actions.confirmations.cancel'),\n safeName('table.messages.actions.confirmations.export'),\n ] },\n { id: 'tbl-msg-col-2', fields: [\n safeName('table.messages.actions.progress.delete'),\n safeName('table.messages.actions.progress.deleteMultiple'),\n safeName('table.messages.actions.success.delete'),\n safeName('table.messages.actions.success.save'),\n safeName('table.messages.actions.success.export'),\n safeName('table.messages.actions.success.import'),\n ] },\n { id: 'tbl-msg-col-3', fields: [\n safeName('table.messages.actions.errors.delete'),\n safeName('table.messages.actions.errors.save'),\n safeName('table.messages.actions.errors.export'),\n safeName('table.messages.actions.errors.network'),\n safeName('table.messages.actions.errors.permission'),\n ] },\n ],\n },\n ],\n },\n {\n id: 'dialog',\n title: 'Dialog',\n rows: [\n {\n id: 'dlg-row-defaults',\n columns: [\n { id: 'dlg-def-col-1', fields: [\n safeName('dialog.defaults.confirm.ariaRole'),\n safeName('dialog.defaults.confirm.closeOnBackdropClick'),\n ] },\n { id: 'dlg-def-col-2', fields: [\n safeName('dialog.defaults.alert.ariaRole'),\n safeName('dialog.defaults.alert.closeOnBackdropClick'),\n ] },\n { id: 'dlg-def-col-3', fields: [\n safeName('dialog.defaults.prompt.ariaRole'),\n safeName('dialog.defaults.prompt.closeOnBackdropClick'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-danger',\n columns: [\n { id: 'dlg-var-danger-col-1', fields: [\n safeName('dialog.variants.danger.title'),\n safeName('dialog.variants.danger.icon'),\n safeName('dialog.variants.danger.message'),\n ] },\n { id: 'dlg-var-danger-col-2', fields: [\n safeName('dialog.variants.danger.ariaRole'),\n safeName('dialog.variants.danger.closeOnBackdropClick'),\n safeName('dialog.variants.danger.panelClass'),\n ] },\n { id: 'dlg-var-danger-col-3', fields: [\n safeName('dialog.variants.danger.actions'),\n safeName('dialog.variants.danger.styles'),\n safeName('dialog.variants.danger.animation'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-info',\n columns: [\n { id: 'dlg-var-info-col-1', fields: [\n safeName('dialog.variants.info.title'),\n safeName('dialog.variants.info.icon'),\n safeName('dialog.variants.info.message'),\n ] },\n { id: 'dlg-var-info-col-2', fields: [\n safeName('dialog.variants.info.ariaRole'),\n safeName('dialog.variants.info.closeOnBackdropClick'),\n safeName('dialog.variants.info.panelClass'),\n ] },\n { id: 'dlg-var-info-col-3', fields: [\n safeName('dialog.variants.info.actions'),\n safeName('dialog.variants.info.styles'),\n safeName('dialog.variants.info.animation'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-success',\n columns: [\n { id: 'dlg-var-success-col-1', fields: [\n safeName('dialog.variants.success.title'),\n safeName('dialog.variants.success.icon'),\n safeName('dialog.variants.success.message'),\n ] },\n { id: 'dlg-var-success-col-2', fields: [\n safeName('dialog.variants.success.ariaRole'),\n safeName('dialog.variants.success.closeOnBackdropClick'),\n safeName('dialog.variants.success.panelClass'),\n ] },\n { id: 'dlg-var-success-col-3', fields: [\n safeName('dialog.variants.success.actions'),\n safeName('dialog.variants.success.styles'),\n safeName('dialog.variants.success.animation'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-question',\n columns: [\n { id: 'dlg-var-question-col-1', fields: [\n safeName('dialog.variants.question.title'),\n safeName('dialog.variants.question.icon'),\n safeName('dialog.variants.question.message'),\n ] },\n { id: 'dlg-var-question-col-2', fields: [\n safeName('dialog.variants.question.ariaRole'),\n safeName('dialog.variants.question.closeOnBackdropClick'),\n safeName('dialog.variants.question.panelClass'),\n ] },\n { id: 'dlg-var-question-col-3', fields: [\n safeName('dialog.variants.question.actions'),\n safeName('dialog.variants.question.styles'),\n safeName('dialog.variants.question.animation'),\n ] },\n ],\n },\n {\n id: 'dlg-row-variants-error',\n columns: [\n { id: 'dlg-var-error-col-1', fields: [\n safeName('dialog.variants.error.title'),\n safeName('dialog.variants.error.icon'),\n safeName('dialog.variants.error.message'),\n ] },\n { id: 'dlg-var-error-col-2', fields: [\n safeName('dialog.variants.error.ariaRole'),\n safeName('dialog.variants.error.closeOnBackdropClick'),\n safeName('dialog.variants.error.panelClass'),\n ] },\n { id: 'dlg-var-error-col-3', fields: [\n safeName('dialog.variants.error.actions'),\n safeName('dialog.variants.error.styles'),\n safeName('dialog.variants.error.animation'),\n ] },\n ],\n },\n ],\n },\n ],\n actions: {\n placement: 'afterSections',\n // Hide internal form actions; Settings Panel footer handles Apply/Save\n submit: { visible: false, label: 'Salvar' },\n cancel: { visible: false, label: 'Cancelar' },\n reset: { visible: false, label: 'Redefinir', type: 'reset' as any },\n },\n fieldMetadata: fields as any,\n };\n\n return cfg;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit, ViewChild, ViewContainerRef, DestroyRef, inject } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport type { FormConfig, FormValueChangeEvent } from '@praxisui/core';\nimport { GlobalConfigAdminService } from './global-config-admin.service';\nimport { buildGlobalConfigFormConfig } from './global-config-editor.schema';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { IconPickerService, PraxisIconDirective } from '@praxisui/core';\n\n@Component({\n selector: 'praxis-global-config-editor',\n standalone: true,\n imports: [CommonModule, MatSnackBarModule, MatExpansionModule, MatIconModule, MatButtonModule, MatTooltipModule, PraxisIconDirective],\n template: `\n <mat-accordion multi>\n <mat-expansion-panel [expanded]=\"true\">\n <mat-expansion-panel-header>\n <mat-panel-title>CRUD</mat-panel-title>\n <mat-panel-description>Políticas globais de abertura, back e header</mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template #hostCrud></ng-template>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>Dynamic Fields</mat-panel-title>\n <mat-panel-description>Async Select, cascata e paginação</mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template #hostFields></ng-template>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>Tabela</mat-panel-title>\n <mat-panel-description>Toolbar, aparência e filtro avançado</mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template #hostTable></ng-template>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>Dialog</mat-panel-title>\n <mat-panel-description>Defaults e variants (danger, info, success, question, error)</mat-panel-description>\n </mat-expansion-panel-header>\n <ng-template #hostDialog></ng-template>\n <!-- Icon UX helpers for Dialog variants -->\n <div class=\"dlg-icon-helpers\">\n <div class=\"dlg-icon-helpers__head\">Ícones por perfil (atalhos)</div>\n <div class=\"dlg-icon-helpers__row\" *ngFor=\"let k of dialogVariantKeys\">\n <div class=\"dlg-icon-helpers__label\">{{ k }}</div>\n <mat-icon aria-hidden=\"true\" [praxisIcon]=\"getVariantIcon(k) || 'mi:help_outline'\" class=\"dlg-icon-helpers__preview\"></mat-icon>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"pickVariantIcon(k)\" matTooltip=\"Escolher ícone para {{k}}\">\n <mat-icon>search</mat-icon>\n Escolher ícone\n </button>\n <button mat-icon-button type=\"button\" *ngIf=\"getVariantIcon(k)\" (click)=\"clearVariantIcon(k)\" matTooltip=\"Limpar ícone de {{k}}\" aria-label=\"Limpar ícone\">\n <mat-icon>backspace</mat-icon>\n </button>\n <span class=\"dlg-icon-helpers__value\" *ngIf=\"getVariantIcon(k)\">{{ getVariantIcon(k) }}</span>\n </div>\n <div class=\"dlg-icon-helpers__hint\">Dica: O campo de texto acima permanece editável. Estes botões apenas facilitam a escolha/limpeza com preview.</div>\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n `,\n styles: [`\n .dlg-icon-helpers{margin:12px 16px 4px 16px; padding:12px; border:1px dashed rgba(0,0,0,.1); border-radius:8px;}\n .dlg-icon-helpers__head{font-weight:600; margin-bottom:8px; opacity:.8}\n .dlg-icon-helpers__row{display:flex; align-items:center; gap:12px; padding:6px 0}\n .dlg-icon-helpers__label{text-transform:capitalize; width:96px; opacity:.8}\n .dlg-icon-helpers__preview{width:24px; height:24px;}\n .dlg-icon-helpers__value{font-family:monospace; font-size:12px; opacity:.8}\n .dlg-icon-helpers__hint{margin-top:8px; font-size:12px; opacity:.7}\n `],\n})\nexport class GlobalConfigEditorComponent implements OnInit {\n formConfig!: FormConfig;\n private initialValues: Record<string, any> = {};\n private currentValues: Record<string, any> = {};\n private pathMap: Record<string, string> = {};\n private bootstrappedSections = new Set<string>();\n private readonly allSections = ['crud', 'dynamic-fields', 'table', 'dialog'] as const;\n\n // SettingsPanel integration signals\n readonly isDirty$ = new BehaviorSubject<boolean>(false);\n readonly isValid$ = new BehaviorSubject<boolean>(true);\n readonly isBusy$ = new BehaviorSubject<boolean>(false);\n\n @ViewChild('hostCrud', { read: ViewContainerRef, static: true }) hostCrud!: ViewContainerRef;\n @ViewChild('hostFields', { read: ViewContainerRef, static: true }) hostFields!: ViewContainerRef;\n @ViewChild('hostTable', { read: ViewContainerRef, static: true }) hostTable!: ViewContainerRef;\n @ViewChild('hostDialog', { read: ViewContainerRef, static: true }) hostDialog!: ViewContainerRef;\n private readonly destroyRef = inject(DestroyRef);\n private readonly iconPicker = inject(IconPickerService);\n\n // Guardar instância do form da seção 'dialog' para atualizar controles diretamente\n private dialogFormInst: any | null = null;\n readonly dialogVariantKeys = ['danger', 'info', 'success', 'question', 'error'] as const;\n\n constructor(private admin: GlobalConfigAdminService, private snack: MatSnackBar) {}\n\n ngOnInit(): void {\n const cfg = this.admin.getEffectiveConfig();\n const flat = this.flatten(cfg);\n this.formConfig = buildGlobalConfigFormConfig();\n // Build mapping from safeName -> dot path and set defaultValue on fieldMetadata\n this.pathMap = {};\n for (const fm of this.formConfig.fieldMetadata || []) {\n const da: any = (fm as any).dataAttributes || {};\n const path = da.globalPath || fm.name;\n this.pathMap[fm.name] = path;\n const v = flat[path];\n if (v !== undefined) (fm as any).defaultValue = v;\n }\n // Initial/current values in SAFE namespace (control names)\n this.initialValues = {};\n for (const safe of Object.keys(this.pathMap)) {\n const path = this.pathMap[safe];\n const v = flat[path];\n if (v !== undefined) this.initialValues[safe] = v;\n }\n this.currentValues = { ...this.initialValues };\n\n // Lazy-load PraxisDynamicForm to avoid circular dependency with settings-panel\n import('@praxisui/dynamic-form').then((m: any) => {\n const Comp = m.PraxisDynamicForm as any;\n const makeGroupConfig = (sectionId: string): any => {\n const sec = (this.formConfig.sections || []).find((s: any) => s.id === sectionId);\n if (!sec) return { sections: [], fieldMetadata: [] } as any;\n // Collect field names in this section\n const names = new Set<string>();\n for (const row of sec.rows || []) {\n for (const col of row.columns || []) {\n for (const fname of col.fields || []) names.add(fname);\n }\n }\n const fms = (this.formConfig.fieldMetadata || []).filter((f: any) => names.has(f.name));\n return { sections: [sec], fieldMetadata: fms } as any;\n };\n\n const groups: Array<{ id: string; host: ViewContainerRef; cfg: any }> = [\n { id: 'crud', host: this.hostCrud, cfg: makeGroupConfig('crud') },\n { id: 'dynamic-fields', host: this.hostFields, cfg: makeGroupConfig('dynamic-fields') },\n { id: 'table', host: this.hostTable, cfg: makeGroupConfig('table') },\n { id: 'dialog', host: this.hostDialog, cfg: makeGroupConfig('dialog') },\n ];\n\n for (const g of groups) {\n const ref = g.host.createComponent(Comp);\n ref.setInput('config', g.cfg);\n ref.setInput('mode', 'edit');\n ref.setInput('editModeEnabled', false);\n const inst: any = ref.instance as any;\n try { if (typeof inst.buildFormFromConfig === 'function') inst.buildFormFromConfig(); } catch {}\n try { inst.onSubmit = () => {}; } catch {}\n try { ref.changeDetectorRef.detectChanges(); } catch {}\n if (inst?.valueChange?.subscribe) {\n inst.valueChange.subscribe((ev: FormValueChangeEvent) => this.onValueChange(g.id, ev));\n }\n if (g.id === 'dialog') {\n // Guardar referência para facilitar setValue em campos de ícone\n this.dialogFormInst = inst;\n }\n this.destroyRef.onDestroy(() => { try { ref.destroy(); } catch {} });\n }\n });\n }\n\n onValueChange(sectionId: string, ev: FormValueChangeEvent): void {\n this.isValid$.next(!!ev.isValid);\n // Mesclar valores por seção (cada form emite somente seu grupo)\n this.currentValues = { ...this.currentValues, ...ev.formData };\n // Durante o bootstrap, coletar baseline de todas as seções\n if (!this.hasBootstrappedAll()) {\n this.initialValues = { ...this.initialValues, ...ev.formData };\n this.bootstrappedSections.add(sectionId);\n if (this.hasBootstrappedAll()) {\n // Após todas as seções emitirem, marcar como limpo\n this.isDirty$.next(false);\n }\n return;\n }\n this.isDirty$.next(!this.shallowEqual(this.currentValues, this.initialValues));\n }\n\n private hasBootstrappedAll(): boolean {\n return this.allSections.every((s) => this.bootstrappedSections.has(s));\n }\n\n // SettingsPanel expects these methods\n reset(): void {\n const flat: Record<string, any> = {};\n for (const safe of Object.keys(this.initialValues)) flat[safe] = this.initialValues[safe];\n for (const fm of this.formConfig.fieldMetadata || []) {\n const v = flat[fm.name];\n (fm as any).defaultValue = v;\n }\n this.currentValues = { ...this.initialValues };\n this.isDirty$.next(false);\n }\n\n getSettingsValue(): any {\n // Map SAFE keys back to dot-paths using pathMap\n const flat: Record<string, any> = {};\n for (const [safe, value] of Object.entries(this.currentValues)) {\n const path = this.pathMap[safe] || safe;\n flat[path] = value;\n }\n return this.toNested(flat);\n }\n\n onSave(): any {\n const partial = this.getSettingsValue();\n this.admin.save(partial);\n // Update baseline after save\n this.initialValues = { ...this.currentValues };\n this.isDirty$.next(false);\n try { this.snack.open('Configurações salvas', undefined, { duration: 2000 }); } catch {}\n return partial;\n }\n\n // ===== Helpers de UX para ícones de Dialog (variants) =====\n private safeName(path: string): string {\n return path.replace(/[^a-zA-Z0-9_]/g, '_');\n }\n getVariantIcon(key: string): string | undefined {\n const safe = this.safeName(`dialog.variants.${key}.icon`);\n return (this.currentValues as any)[safe];\n }\n async pickVariantIcon(key: string): Promise<void> {\n const safe = this.safeName(`dialog.variants.${key}.icon`);\n const current = (this.currentValues as any)[safe] || '';\n // Melhor UX: usar MatDialog (modal) em vez do Settings Panel para o picker\n const res = await this.iconPicker.openDialog({ value: current });\n if (res === undefined) return; // cancel\n this.setDialogControlValue(safe, res);\n }\n clearVariantIcon(key: string): void {\n const safe = this.safeName(`dialog.variants.${key}.icon`);\n this.setDialogControlValue(safe, '');\n }\n private setDialogControlValue(safeControlName: string, val: string): void {\n const inst: any = this.dialogFormInst as any;\n try {\n const ctrl = inst?.form?.get?.(safeControlName);\n if (ctrl) {\n ctrl.setValue(val);\n return;\n }\n } catch {}\n // Fallback: atualiza cache local e marca como sujo\n (this.currentValues as any)[safeControlName] = val;\n this.isDirty$.next(!this.shallowEqual(this.currentValues, this.initialValues));\n }\n\n private withDefaults(config: FormConfig, values: Record<string, any>): FormConfig {\n const next = JSON.parse(JSON.stringify(config)) as FormConfig;\n for (const section of next.sections || []) {\n for (const row of section.rows || []) {\n for (const col of row.columns || []) {\n for (const field of col.fields || []) {\n const key = (field as any).name as string;\n if (!key) continue;\n const v = values[key];\n if (v !== undefined) {\n (field as any).defaultValue = v;\n }\n }\n }\n }\n }\n return next;\n }\n\n private setByPath(target: any, dotPath: string, value: any): void {\n const parts = dotPath.split('.');\n let ref = target;\n for (let i = 0; i < parts.length - 1; i++) {\n const p = parts[i];\n if (typeof ref[p] !== 'object' || ref[p] == null) ref[p] = {};\n ref = ref[p];\n }\n ref[parts[parts.length - 1]] = value;\n }\n\n private flatten(obj: any, prefix = ''): Record<string, any> {\n const out: Record<string, any> = {};\n if (!obj || typeof obj !== 'object') return out;\n for (const key of Object.keys(obj)) {\n const val = (obj as any)[key];\n const path = prefix ? `${prefix}.${key}` : key;\n if (val && typeof val === 'object' && !Array.isArray(val)) {\n Object.assign(out, this.flatten(val, path));\n } else {\n out[path] = val;\n }\n }\n return out;\n }\n\n private toNested(flat: Record<string, any>): any {\n const out: any = {};\n for (const k of Object.keys(flat)) {\n const v = flat[k];\n if (v === undefined) continue;\n this.setByPath(out, k, v);\n }\n return out;\n }\n\n private shallowEqual(a: Record<string, any>, b: Record<string, any>): boolean {\n const ak = Object.keys(a);\n const bk = Object.keys(b);\n if (ak.length !== bk.length) return false;\n for (const k of ak) {\n if (a[k] !== b[k]) return false;\n }\n return true;\n }\n}\n","import { SettingsPanelService } from '../settings-panel.service';\nimport { GlobalConfigEditorComponent } from './global-config-editor.component';\n\nexport type OpenGlobalConfigOptions = {\n id?: string;\n title?: string;\n titleIcon?: string;\n};\n\n/**\n * Helper to open the Global Config Editor in a host application.\n * Usage:\n * openGlobalConfigEditor(settings);\n */\nexport function openGlobalConfigEditor(\n settings: SettingsPanelService,\n opts?: OpenGlobalConfigOptions,\n): void {\n settings.open({\n id: opts?.id ?? 'global-config',\n title: opts?.title ?? 'Configurações Globais',\n titleIcon: opts?.titleIcon ?? 'tune',\n content: { component: GlobalConfigEditorComponent, inputs: {} },\n });\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1","i1.GlobalConfigAdminService","i4","i5","i6","i7"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/settings-panel",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.30",
|
|
4
4
|
"description": "Settings panel for Praxis UI libraries: open editors for configuration at runtime and persist settings.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^20.0.0",
|
|
7
7
|
"@angular/core": "^20.0.0",
|
|
8
8
|
"@angular/cdk": "^20.0.0",
|
|
9
9
|
"@angular/material": "^20.0.0",
|
|
10
|
-
"@praxisui/dynamic-fields": "^1.0.0-beta.
|
|
10
|
+
"@praxisui/dynamic-fields": "^1.0.0-beta.30"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"tslib": "^2.3.0"
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
},
|
|
19
19
|
"repository": {
|
|
20
20
|
"type": "git",
|
|
21
|
-
"url": "https://github.com/codexrodrigues/praxis"
|
|
21
|
+
"url": "https://github.com/codexrodrigues/praxis-ui-angular"
|
|
22
22
|
},
|
|
23
|
-
"homepage": "https://github.com/codexrodrigues/praxis#readme",
|
|
23
|
+
"homepage": "https://github.com/codexrodrigues/praxis-ui-angular#readme",
|
|
24
24
|
"bugs": {
|
|
25
|
-
"url": "https://github.com/codexrodrigues/praxis/issues"
|
|
25
|
+
"url": "https://github.com/codexrodrigues/praxis-ui-angular/issues"
|
|
26
26
|
},
|
|
27
27
|
"keywords": [
|
|
28
28
|
"angular",
|