@praxisui/table 3.0.0-beta.6 → 3.0.0-beta.7
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 +47 -2
- package/fesm2022/praxisui-table.mjs +382 -271
- package/fesm2022/praxisui-table.mjs.map +1 -1
- package/index.d.ts +36 -5
- package/package.json +7 -7
|
@@ -32,7 +32,7 @@ import * as i12 from '@angular/cdk/drag-drop';
|
|
|
32
32
|
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
33
33
|
import { Subject, debounceTime, takeUntil, of, firstValueFrom, BehaviorSubject, take as take$1 } from 'rxjs';
|
|
34
34
|
import * as i1 from '@praxisui/core';
|
|
35
|
-
import { LoggerService, createCorporateLoggerConfig, ConsoleLoggerSink, PraxisIconDirective, isTableConfigV2, GLOBAL_ACTION_SPEC_CATALOG, getGlobalActionUiSchema, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_VALUES, FieldControlType, normalizeControlTypeToken, ASYNC_CONFIG_STORAGE, resolveControlTypeAlias, mapFieldDefinitionsToMetadata, GenericCrudService, TableConfigService, createDefaultTableConfig, fillUndefined, deepMerge, INLINE_FILTER_ALIAS_TOKENS, GlobalConfigService, buildSchemaId, MemoryCacheAdapter, LocalStorageCacheAdapter, SchemaMetadataClient, resolveInlineFilterControlType, fetchWithETag, ComponentMetadataRegistry, ResourceQuickConnectComponent, PRAXIS_LOADING_CTX, CONNECTION_STORAGE, PRAXIS_LOADING_RENDERER, EmptyStateCardComponent } from '@praxisui/core';
|
|
35
|
+
import { LoggerService, createCorporateLoggerConfig, ConsoleLoggerSink, PraxisIconDirective, isTableConfigV2, GLOBAL_ACTION_SPEC_CATALOG, PraxisI18nService, SURFACE_OPEN_I18N_NAMESPACE, getGlobalActionUiSchema, SurfaceOpenActionEditorComponent, providePraxisI18nConfig, SURFACE_OPEN_I18N_CONFIG, INLINE_FILTER_CONTROL_TYPES, INLINE_FILTER_CONTROL_TYPE_VALUES, FieldControlType, normalizeControlTypeToken, ASYNC_CONFIG_STORAGE, resolveControlTypeAlias, mapFieldDefinitionsToMetadata, GenericCrudService, TableConfigService, createDefaultTableConfig, fillUndefined, deepMerge, INLINE_FILTER_ALIAS_TOKENS, GlobalConfigService, buildSchemaId, MemoryCacheAdapter, LocalStorageCacheAdapter, SchemaMetadataClient, resolveInlineFilterControlType, fetchWithETag, ComponentMetadataRegistry, ResourceQuickConnectComponent, PRAXIS_LOADING_CTX, supportsImplicitValuePresentation, resolveValuePresentation, CONNECTION_STORAGE, PRAXIS_LOADING_RENDERER, EmptyStateCardComponent } from '@praxisui/core';
|
|
36
36
|
import * as i2 from '@angular/material/toolbar';
|
|
37
37
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
38
38
|
import { FunctionRegistry, DslParser, DslValidator, ValidationSeverity, ValidationIssueType } from '@praxisui/specification';
|
|
@@ -6665,6 +6665,9 @@ class DataFormattingService {
|
|
|
6665
6665
|
const fmt = formatString.trim();
|
|
6666
6666
|
return !!(fmt && columnType !== 'custom');
|
|
6667
6667
|
}
|
|
6668
|
+
getHostLocale() {
|
|
6669
|
+
return this.hostLocale;
|
|
6670
|
+
}
|
|
6668
6671
|
resolveFormattingContext(options) {
|
|
6669
6672
|
const locale = options?.localization?.locale?.trim() ||
|
|
6670
6673
|
options?.locale?.trim() ||
|
|
@@ -16351,11 +16354,24 @@ class ToolbarActionsEditorComponent {
|
|
|
16351
16354
|
actionFieldDrafts = new Map();
|
|
16352
16355
|
actionFieldErrors = new Map();
|
|
16353
16356
|
warnedInvalidShortcutScopes = new Set();
|
|
16357
|
+
i18n = inject(PraxisI18nService);
|
|
16354
16358
|
destroy$ = new Subject();
|
|
16355
16359
|
constructor(fb, iconPicker) {
|
|
16356
16360
|
this.fb = fb;
|
|
16357
16361
|
this.iconPicker = iconPicker;
|
|
16358
16362
|
}
|
|
16363
|
+
getGlobalActionSpecLabel(spec) {
|
|
16364
|
+
if (spec?.id === 'surface.open') {
|
|
16365
|
+
return this.i18n.t('action.surfaceOpen.label', undefined, spec.label || '', SURFACE_OPEN_I18N_NAMESPACE);
|
|
16366
|
+
}
|
|
16367
|
+
return spec?.label || '';
|
|
16368
|
+
}
|
|
16369
|
+
getGlobalActionSpecHint(spec) {
|
|
16370
|
+
if (spec?.id === 'surface.open') {
|
|
16371
|
+
return this.i18n.t('action.surfaceOpen.hint', undefined, (spec.param?.hint || spec.description || ''), SURFACE_OPEN_I18N_NAMESPACE);
|
|
16372
|
+
}
|
|
16373
|
+
return spec?.param?.hint || spec?.description || '';
|
|
16374
|
+
}
|
|
16359
16375
|
ngOnInit() {
|
|
16360
16376
|
this.isV2 = true; // Always V2 in unified architecture
|
|
16361
16377
|
this.initializeForm();
|
|
@@ -16818,6 +16834,17 @@ class ToolbarActionsEditorComponent {
|
|
|
16818
16834
|
return undefined;
|
|
16819
16835
|
return getGlobalActionUiSchema(parsed.id);
|
|
16820
16836
|
}
|
|
16837
|
+
getSurfaceOpenActionPayload(action) {
|
|
16838
|
+
const info = this.getActionParamInfo(action.action);
|
|
16839
|
+
const payload = info.isJson && info.json && typeof info.json === 'object' && !Array.isArray(info.json)
|
|
16840
|
+
? info.json
|
|
16841
|
+
: undefined;
|
|
16842
|
+
return this.normalizeSurfaceOpenPayload(payload);
|
|
16843
|
+
}
|
|
16844
|
+
onSurfaceOpenActionPayloadChange(action, payload, kind) {
|
|
16845
|
+
action.action = `surface.open:${JSON.stringify(this.normalizeSurfaceOpenPayload(payload))}`;
|
|
16846
|
+
this.touchActionList(kind);
|
|
16847
|
+
}
|
|
16821
16848
|
shouldShowGlobalActionField(action, field) {
|
|
16822
16849
|
if (!field.dependsOnKey)
|
|
16823
16850
|
return true;
|
|
@@ -16933,7 +16960,7 @@ class ToolbarActionsEditorComponent {
|
|
|
16933
16960
|
this.clearActionFieldError(action, field.key);
|
|
16934
16961
|
}
|
|
16935
16962
|
catch {
|
|
16936
|
-
this.setActionFieldError(action, field.key, 'JSON
|
|
16963
|
+
this.setActionFieldError(action, field.key, 'JSON inválido.');
|
|
16937
16964
|
return;
|
|
16938
16965
|
}
|
|
16939
16966
|
}
|
|
@@ -16992,6 +17019,30 @@ class ToolbarActionsEditorComponent {
|
|
|
16992
17019
|
return '';
|
|
16993
17020
|
}
|
|
16994
17021
|
}
|
|
17022
|
+
normalizeSurfaceOpenPayload(payload) {
|
|
17023
|
+
return {
|
|
17024
|
+
presentation: payload?.presentation === 'drawer' ? 'drawer' : 'modal',
|
|
17025
|
+
title: payload?.title,
|
|
17026
|
+
subtitle: payload?.subtitle,
|
|
17027
|
+
icon: payload?.icon,
|
|
17028
|
+
size: payload?.size && Object.keys(payload.size).length
|
|
17029
|
+
? { ...payload.size }
|
|
17030
|
+
: undefined,
|
|
17031
|
+
widget: {
|
|
17032
|
+
id: String(payload?.widget?.id || ''),
|
|
17033
|
+
inputs: { ...(payload?.widget?.inputs || {}) },
|
|
17034
|
+
bindingOrder: payload?.widget?.bindingOrder?.length
|
|
17035
|
+
? [...payload.widget.bindingOrder]
|
|
17036
|
+
: undefined,
|
|
17037
|
+
},
|
|
17038
|
+
bindings: payload?.bindings?.length
|
|
17039
|
+
? payload.bindings.map((binding) => ({ ...binding }))
|
|
17040
|
+
: [],
|
|
17041
|
+
context: payload?.context && typeof payload.context === 'object' && !Array.isArray(payload.context)
|
|
17042
|
+
? { ...payload.context }
|
|
17043
|
+
: undefined,
|
|
17044
|
+
};
|
|
17045
|
+
}
|
|
16995
17046
|
setActionFieldError(action, key, message) {
|
|
16996
17047
|
const draftKey = this.getActionDraftKey(action);
|
|
16997
17048
|
const errors = this.actionFieldErrors.get(draftKey) || {};
|
|
@@ -17274,7 +17325,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17274
17325
|
addToolbarAction() {
|
|
17275
17326
|
const newAction = {
|
|
17276
17327
|
id: `action-${Date.now()}`,
|
|
17277
|
-
label: 'Nova
|
|
17328
|
+
label: 'Nova Ação',
|
|
17278
17329
|
icon: 'add',
|
|
17279
17330
|
type: 'button',
|
|
17280
17331
|
action: 'newAction',
|
|
@@ -17312,7 +17363,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17312
17363
|
addRowAction() {
|
|
17313
17364
|
const newAction = {
|
|
17314
17365
|
id: `row-action-${Date.now()}`,
|
|
17315
|
-
label: 'Nova
|
|
17366
|
+
label: 'Nova Ação',
|
|
17316
17367
|
icon: 'edit',
|
|
17317
17368
|
action: 'editRow',
|
|
17318
17369
|
autoDelete: false,
|
|
@@ -17347,7 +17398,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17347
17398
|
addBulkAction() {
|
|
17348
17399
|
const newAction = {
|
|
17349
17400
|
id: `bulk-action-${Date.now()}`,
|
|
17350
|
-
label: 'Nova
|
|
17401
|
+
label: 'Nova Ação em Lote',
|
|
17351
17402
|
icon: 'delete',
|
|
17352
17403
|
action: 'delete',
|
|
17353
17404
|
autoDelete: false,
|
|
@@ -17380,7 +17431,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17380
17431
|
this.updateConfig(values);
|
|
17381
17432
|
}
|
|
17382
17433
|
// =============================================================
|
|
17383
|
-
// Templates (Presets)
|
|
17434
|
+
// Templates (Presets) — Toolbar & Row Actions
|
|
17384
17435
|
// =============================================================
|
|
17385
17436
|
applyToolbarTemplate(tpl, mode) {
|
|
17386
17437
|
const preset = [
|
|
@@ -17620,12 +17671,19 @@ class ToolbarActionsEditorComponent {
|
|
|
17620
17671
|
}
|
|
17621
17672
|
}
|
|
17622
17673
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ToolbarActionsEditorComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.IconPickerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
17623
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: ToolbarActionsEditorComponent, isStandalone: true, selector: "toolbar-actions-editor", inputs: { config: "config" }, outputs: { configChange: "configChange", toolbarActionsChange: "toolbarActionsChange" }, usesOnChanges: true, ngImport: i0, template: `
|
|
17674
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: ToolbarActionsEditorComponent, isStandalone: true, selector: "toolbar-actions-editor", inputs: { config: "config" }, outputs: { configChange: "configChange", toolbarActionsChange: "toolbarActionsChange" }, providers: [providePraxisI18nConfig(SURFACE_OPEN_I18N_CONFIG)], usesOnChanges: true, ngImport: i0, template: `
|
|
17624
17675
|
<div class="toolbar-actions-container">
|
|
17625
17676
|
<ng-template #globalActionFields let-action let-kind="kind">
|
|
17626
17677
|
@if (getGlobalActionSchema(action); as schema) {
|
|
17627
17678
|
<div class="action-global-fields">
|
|
17628
|
-
<div class="action-global-title">
|
|
17679
|
+
<div class="action-global-title">Configuração da ação global</div>
|
|
17680
|
+
@if (schema.editorMode === 'surface-open') {
|
|
17681
|
+
<praxis-surface-open-action-editor
|
|
17682
|
+
[value]="getSurfaceOpenActionPayload(action)"
|
|
17683
|
+
hostKind="table"
|
|
17684
|
+
(valueChange)="onSurfaceOpenActionPayloadChange(action, $event, kind)"
|
|
17685
|
+
></praxis-surface-open-action-editor>
|
|
17686
|
+
} @else {
|
|
17629
17687
|
<div class="action-global-grid">
|
|
17630
17688
|
@for (field of schema.fields; track field.key) {
|
|
17631
17689
|
@if (shouldShowGlobalActionField(action, field)) {
|
|
@@ -17633,7 +17691,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17633
17691
|
<div class="action-section-title">Essencial</div>
|
|
17634
17692
|
}
|
|
17635
17693
|
@if (schema.id === 'showAlert' && field.key === 'title') {
|
|
17636
|
-
<div class="action-section-title">
|
|
17694
|
+
<div class="action-section-title">Diálogo (opcional)</div>
|
|
17637
17695
|
}
|
|
17638
17696
|
@if (field.type === 'toggle') {
|
|
17639
17697
|
<mat-slide-toggle
|
|
@@ -17692,7 +17750,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17692
17750
|
matSuffix
|
|
17693
17751
|
type="button"
|
|
17694
17752
|
class="help-icon-button"
|
|
17695
|
-
matTooltip="Informe um JSON
|
|
17753
|
+
matTooltip="Informe um JSON válido."
|
|
17696
17754
|
>
|
|
17697
17755
|
<mat-icon>help_outline</mat-icon>
|
|
17698
17756
|
</button>
|
|
@@ -17751,6 +17809,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17751
17809
|
}
|
|
17752
17810
|
}
|
|
17753
17811
|
</div>
|
|
17812
|
+
}
|
|
17754
17813
|
</div>
|
|
17755
17814
|
}
|
|
17756
17815
|
</ng-template>
|
|
@@ -17779,43 +17838,43 @@ class ToolbarActionsEditorComponent {
|
|
|
17779
17838
|
class="config-fields"
|
|
17780
17839
|
>
|
|
17781
17840
|
<mat-form-field appearance="outline">
|
|
17782
|
-
<mat-label>
|
|
17841
|
+
<mat-label>TÃtulo da barra</mat-label>
|
|
17783
17842
|
<input
|
|
17784
17843
|
matInput
|
|
17785
17844
|
formControlName="toolbarTitle"
|
|
17786
|
-
placeholder="Ex: Gerenciar
|
|
17845
|
+
placeholder="Ex: Gerenciar Usuários"
|
|
17787
17846
|
/>
|
|
17788
17847
|
<button
|
|
17789
17848
|
mat-icon-button
|
|
17790
17849
|
matSuffix
|
|
17791
17850
|
type="button"
|
|
17792
17851
|
class="help-icon-button"
|
|
17793
|
-
matTooltip="
|
|
17852
|
+
matTooltip="TÃtulo exibido na barra de ferramentas."
|
|
17794
17853
|
>
|
|
17795
17854
|
<mat-icon>help_outline</mat-icon>
|
|
17796
17855
|
</button>
|
|
17797
17856
|
</mat-form-field>
|
|
17798
17857
|
|
|
17799
17858
|
<mat-form-field appearance="outline">
|
|
17800
|
-
<mat-label>
|
|
17859
|
+
<mat-label>SubtÃtulo</mat-label>
|
|
17801
17860
|
<input
|
|
17802
17861
|
matInput
|
|
17803
17862
|
formControlName="toolbarSubtitle"
|
|
17804
|
-
placeholder="Ex: Lista completa de
|
|
17863
|
+
placeholder="Ex: Lista completa de usuários do sistema"
|
|
17805
17864
|
/>
|
|
17806
17865
|
<button
|
|
17807
17866
|
mat-icon-button
|
|
17808
17867
|
matSuffix
|
|
17809
17868
|
type="button"
|
|
17810
17869
|
class="help-icon-button"
|
|
17811
|
-
matTooltip="Texto de apoio abaixo do
|
|
17870
|
+
matTooltip="Texto de apoio abaixo do tÃtulo."
|
|
17812
17871
|
>
|
|
17813
17872
|
<mat-icon>help_outline</mat-icon>
|
|
17814
17873
|
</button>
|
|
17815
17874
|
</mat-form-field>
|
|
17816
17875
|
|
|
17817
17876
|
<mat-form-field appearance="outline">
|
|
17818
|
-
<mat-label>
|
|
17877
|
+
<mat-label>Posição das ações</mat-label>
|
|
17819
17878
|
<mat-select formControlName="toolbarActionsPosition">
|
|
17820
17879
|
<mat-option value="top">Acima da tabela</mat-option>
|
|
17821
17880
|
<mat-option value="bottom">Abaixo da tabela</mat-option>
|
|
@@ -17844,12 +17903,12 @@ class ToolbarActionsEditorComponent {
|
|
|
17844
17903
|
</mat-form-field>
|
|
17845
17904
|
|
|
17846
17905
|
<mat-form-field appearance="outline">
|
|
17847
|
-
<mat-label>Cor de fundo das
|
|
17906
|
+
<mat-label>Cor de fundo das ações</mat-label>
|
|
17848
17907
|
<mat-select
|
|
17849
17908
|
[value]="toolbarForm.get('toolbarActionsBackgroundColor')?.value || ''"
|
|
17850
17909
|
(selectionChange)="toolbarForm.get('toolbarActionsBackgroundColor')?.setValue($event.value)"
|
|
17851
17910
|
>
|
|
17852
|
-
<mat-option value="">
|
|
17911
|
+
<mat-option value="">Padrão do tema</mat-option>
|
|
17853
17912
|
<mat-option value="var(--p-table-header-bg)">Header da tabela</mat-option>
|
|
17854
17913
|
<mat-option value="var(--md-sys-color-surface)">Surface</mat-option>
|
|
17855
17914
|
<mat-option value="var(--md-sys-color-surface-container)">Surface container</mat-option>
|
|
@@ -17861,7 +17920,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17861
17920
|
matSuffix
|
|
17862
17921
|
type="button"
|
|
17863
17922
|
class="help-icon-button"
|
|
17864
|
-
matTooltip="Preset de fundo para a barra de
|
|
17923
|
+
matTooltip="Preset de fundo para a barra de ações."
|
|
17865
17924
|
>
|
|
17866
17925
|
<mat-icon>help_outline</mat-icon>
|
|
17867
17926
|
</button>
|
|
@@ -17899,26 +17958,26 @@ class ToolbarActionsEditorComponent {
|
|
|
17899
17958
|
</div>
|
|
17900
17959
|
</mat-expansion-panel>
|
|
17901
17960
|
|
|
17902
|
-
<!--
|
|
17961
|
+
<!-- Ações da Toolbar -->
|
|
17903
17962
|
<mat-expansion-panel>
|
|
17904
17963
|
<mat-expansion-panel-header>
|
|
17905
17964
|
<mat-panel-title>
|
|
17906
17965
|
<mat-icon class="section-icon">add_circle</mat-icon>
|
|
17907
|
-
|
|
17966
|
+
Ações da Toolbar
|
|
17908
17967
|
</mat-panel-title>
|
|
17909
17968
|
<mat-panel-description>
|
|
17910
|
-
|
|
17969
|
+
Botões e menus personalizados na barra
|
|
17911
17970
|
</mat-panel-description>
|
|
17912
17971
|
</mat-expansion-panel-header>
|
|
17913
17972
|
|
|
17914
17973
|
<div class="config-section">
|
|
17915
17974
|
<div class="section-hint">
|
|
17916
|
-
|
|
17975
|
+
Ações internas disparam eventos do componente. Ações globais exigem ActionResolver no app.
|
|
17917
17976
|
</div>
|
|
17918
|
-
<!-- Atalho
|
|
17977
|
+
<!-- Atalho rápido: Botão Adicionar (create) -->
|
|
17919
17978
|
<div class="quick-add">
|
|
17920
17979
|
<mat-slide-toggle formControlName="addButtonEnabled" class="toggle-field">
|
|
17921
|
-
Exibir
|
|
17980
|
+
Exibir botão "Adicionar"
|
|
17922
17981
|
</mat-slide-toggle>
|
|
17923
17982
|
|
|
17924
17983
|
@if (toolbarForm.get('addButtonEnabled')?.value) { <div class="config-fields">
|
|
@@ -17928,7 +17987,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17928
17987
|
</mat-form-field>
|
|
17929
17988
|
|
|
17930
17989
|
<mat-form-field appearance="outline">
|
|
17931
|
-
<mat-label
|
|
17990
|
+
<mat-label>Ãcone</mat-label>
|
|
17932
17991
|
@if (toolbarForm.value.addButtonIcon) { <span matPrefix>
|
|
17933
17992
|
<mat-icon aria-hidden="true">{{ toolbarForm.value.addButtonIcon }}</mat-icon>
|
|
17934
17993
|
</span> }
|
|
@@ -17942,7 +18001,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17942
18001
|
>
|
|
17943
18002
|
<mat-icon>help_outline</mat-icon>
|
|
17944
18003
|
</button>
|
|
17945
|
-
<button mat-icon-button matSuffix type="button" (click)="pickAddButtonIcon()" matTooltip="Escolher
|
|
18004
|
+
<button mat-icon-button matSuffix type="button" (click)="pickAddButtonIcon()" matTooltip="Escolher Ãcone">
|
|
17946
18005
|
<mat-icon>search</mat-icon>
|
|
17947
18006
|
</button>
|
|
17948
18007
|
@if (toolbarForm.value.addButtonIcon) { <button mat-icon-button matSuffix type="button" (click)="toolbarForm.get('addButtonIcon')?.setValue('')" matTooltip="Limpar">
|
|
@@ -17951,7 +18010,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17951
18010
|
</mat-form-field>
|
|
17952
18011
|
|
|
17953
18012
|
<mat-form-field appearance="outline">
|
|
17954
|
-
<mat-label>Cor do
|
|
18013
|
+
<mat-label>Cor do botão</mat-label>
|
|
17955
18014
|
<mat-select formControlName="addButtonColor">
|
|
17956
18015
|
<mat-option value="primary">Primary</mat-option>
|
|
17957
18016
|
<mat-option value="accent">Accent</mat-option>
|
|
@@ -17960,15 +18019,15 @@ class ToolbarActionsEditorComponent {
|
|
|
17960
18019
|
</mat-form-field>
|
|
17961
18020
|
|
|
17962
18021
|
<mat-form-field appearance="outline">
|
|
17963
|
-
<mat-label>
|
|
18022
|
+
<mat-label>Posição do botão</mat-label>
|
|
17964
18023
|
<mat-select formControlName="addButtonPosition">
|
|
17965
|
-
<mat-option value="start">
|
|
18024
|
+
<mat-option value="start">InÃcio</mat-option>
|
|
17966
18025
|
<mat-option value="end">Fim</mat-option>
|
|
17967
18026
|
</mat-select>
|
|
17968
18027
|
</mat-form-field>
|
|
17969
18028
|
|
|
17970
18029
|
<mat-form-field appearance="outline">
|
|
17971
|
-
<mat-label>
|
|
18030
|
+
<mat-label>Aparência</mat-label>
|
|
17972
18031
|
<mat-select formControlName="addButtonAppearance">
|
|
17973
18032
|
<mat-option value="filled">Preenchido</mat-option>
|
|
17974
18033
|
<mat-option value="outlined">Contornado</mat-option>
|
|
@@ -17988,7 +18047,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17988
18047
|
type="button"
|
|
17989
18048
|
>
|
|
17990
18049
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
17991
|
-
Adicionar
|
|
18050
|
+
Adicionar Ação
|
|
17992
18051
|
</button>
|
|
17993
18052
|
<button mat-stroked-button [matMenuTriggerFor]="toolbarTplMenu" type="button" style="margin-left:8px">
|
|
17994
18053
|
<mat-icon [praxisIcon]="'bolt'"></mat-icon>
|
|
@@ -17997,7 +18056,7 @@ class ToolbarActionsEditorComponent {
|
|
|
17997
18056
|
<mat-menu #toolbarTplMenu="matMenu">
|
|
17998
18057
|
<button mat-menu-item [matMenuTriggerFor]="toolbarCrudTpl">
|
|
17999
18058
|
<mat-icon [praxisIcon]="'add_circle'"></mat-icon>
|
|
18000
|
-
<span>CRUD:
|
|
18059
|
+
<span>CRUD: botão Adicionar</span>
|
|
18001
18060
|
</button>
|
|
18002
18061
|
</mat-menu>
|
|
18003
18062
|
<mat-menu #toolbarCrudTpl="matMenu">
|
|
@@ -18020,7 +18079,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18020
18079
|
<mat-icon class="drag-handle" [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
18021
18080
|
<mat-icon [praxisIcon]="action.icon"></mat-icon>
|
|
18022
18081
|
<span class="action-label">{{
|
|
18023
|
-
action.label || 'Nova
|
|
18082
|
+
action.label || 'Nova Ação'
|
|
18024
18083
|
}}</span>
|
|
18025
18084
|
<div class="action-controls">
|
|
18026
18085
|
<button
|
|
@@ -18046,7 +18105,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18046
18105
|
>
|
|
18047
18106
|
<div class="action-form">
|
|
18048
18107
|
<mat-form-field appearance="outline">
|
|
18049
|
-
<mat-label>ID da
|
|
18108
|
+
<mat-label>ID da ação</mat-label>
|
|
18050
18109
|
<input
|
|
18051
18110
|
matInput
|
|
18052
18111
|
[(ngModel)]="action.id"
|
|
@@ -18066,7 +18125,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18066
18125
|
</mat-form-field>
|
|
18067
18126
|
|
|
18068
18127
|
<mat-form-field appearance="outline">
|
|
18069
|
-
<mat-label
|
|
18128
|
+
<mat-label>Ãcone</mat-label>
|
|
18070
18129
|
@if (action.icon) { <span matPrefix>
|
|
18071
18130
|
<mat-icon aria-hidden="true" [praxisIcon]="action.icon"></mat-icon>
|
|
18072
18131
|
</span> }
|
|
@@ -18086,7 +18145,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18086
18145
|
>
|
|
18087
18146
|
<mat-icon>help_outline</mat-icon>
|
|
18088
18147
|
</button>
|
|
18089
|
-
<button mat-icon-button matSuffix type="button" (click)="pickActionIcon(i)" matTooltip="Escolher
|
|
18148
|
+
<button mat-icon-button matSuffix type="button" (click)="pickActionIcon(i)" matTooltip="Escolher Ãcone">
|
|
18090
18149
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
18091
18150
|
</button>
|
|
18092
18151
|
@if (action.icon) { <button mat-icon-button matSuffix type="button" (click)="action.icon=''; updateToolbarActions()" matTooltip="Limpar">
|
|
@@ -18101,7 +18160,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18101
18160
|
(ngModelChange)="updateToolbarActions()"
|
|
18102
18161
|
[ngModelOptions]="{ standalone: true }"
|
|
18103
18162
|
>
|
|
18104
|
-
<mat-option value="button">
|
|
18163
|
+
<mat-option value="button">Botão</mat-option>
|
|
18105
18164
|
<mat-option value="menu">Menu</mat-option>
|
|
18106
18165
|
<mat-option value="toggle">Toggle</mat-option>
|
|
18107
18166
|
<mat-option value="input">Input</mat-option>
|
|
@@ -18109,7 +18168,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18109
18168
|
</mat-form-field>
|
|
18110
18169
|
|
|
18111
18170
|
@if (action.type === 'button') { <mat-form-field appearance="outline">
|
|
18112
|
-
<mat-label>
|
|
18171
|
+
<mat-label>Aparência</mat-label>
|
|
18113
18172
|
<mat-select
|
|
18114
18173
|
[(ngModel)]="action.appearance"
|
|
18115
18174
|
(ngModelChange)="updateToolbarActions()"
|
|
@@ -18126,14 +18185,14 @@ class ToolbarActionsEditorComponent {
|
|
|
18126
18185
|
matSuffix
|
|
18127
18186
|
type="button"
|
|
18128
18187
|
class="help-icon-button"
|
|
18129
|
-
matTooltip="
|
|
18188
|
+
matTooltip="CompatÃvel com Angular Material: filled/raised/stroked/text; tonal usa estilo custom."
|
|
18130
18189
|
>
|
|
18131
18190
|
<mat-icon>help_outline</mat-icon>
|
|
18132
18191
|
</button>
|
|
18133
18192
|
</mat-form-field> }
|
|
18134
18193
|
|
|
18135
18194
|
<mat-form-field appearance="outline">
|
|
18136
|
-
<mat-label>
|
|
18195
|
+
<mat-label>Ação</mat-label>
|
|
18137
18196
|
<mat-select
|
|
18138
18197
|
[ngModel]="getActionSelectValue(action.action)"
|
|
18139
18198
|
(ngModelChange)="onActionSelectChange(action, $event, 'toolbar')"
|
|
@@ -18142,12 +18201,12 @@ class ToolbarActionsEditorComponent {
|
|
|
18142
18201
|
<mat-option [value]="customActionValue">Customizada</mat-option>
|
|
18143
18202
|
<mat-optgroup label="Acoes internas">
|
|
18144
18203
|
@for (spec of internalActionCatalog; track spec.id) {
|
|
18145
|
-
<mat-option [value]="spec.id">{{ spec
|
|
18204
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
18146
18205
|
}
|
|
18147
18206
|
</mat-optgroup>
|
|
18148
18207
|
<mat-optgroup label="Acoes globais">
|
|
18149
18208
|
@for (spec of globalActionCatalog; track spec.id) {
|
|
18150
|
-
<mat-option [value]="spec.id">{{ spec
|
|
18209
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
18151
18210
|
}
|
|
18152
18211
|
</mat-optgroup>
|
|
18153
18212
|
</mat-select>
|
|
@@ -18156,7 +18215,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18156
18215
|
matSuffix
|
|
18157
18216
|
type="button"
|
|
18158
18217
|
class="help-icon-button"
|
|
18159
|
-
matTooltip="
|
|
18218
|
+
matTooltip="Ações internas disparam eventos do componente. Ações globais precisam de executor no app (ActionResolver). Cor/posição afetam o botão."
|
|
18160
18219
|
>
|
|
18161
18220
|
<mat-icon>help_outline</mat-icon>
|
|
18162
18221
|
</button>
|
|
@@ -18164,7 +18223,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18164
18223
|
|
|
18165
18224
|
@if (getActionSelectValue(action.action) === customActionValue) {
|
|
18166
18225
|
<mat-form-field appearance="outline">
|
|
18167
|
-
<mat-label>
|
|
18226
|
+
<mat-label>Ação customizada</mat-label>
|
|
18168
18227
|
<input
|
|
18169
18228
|
matInput
|
|
18170
18229
|
[ngModel]="getActionCustomValue(action.action)"
|
|
@@ -18177,7 +18236,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18177
18236
|
matSuffix
|
|
18178
18237
|
type="button"
|
|
18179
18238
|
class="help-icon-button"
|
|
18180
|
-
matTooltip="Informe o ID da
|
|
18239
|
+
matTooltip="Informe o ID da ação a ser emitida."
|
|
18181
18240
|
>
|
|
18182
18241
|
<mat-icon>help_outline</mat-icon>
|
|
18183
18242
|
</button>
|
|
@@ -18192,7 +18251,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18192
18251
|
@if (getActionSpecById(getActionSelectValue(action.action)); as actionSpec) {
|
|
18193
18252
|
@if (actionSpec.param) {
|
|
18194
18253
|
<mat-form-field appearance="outline">
|
|
18195
|
-
<mat-label>{{ actionSpec.param.label || '
|
|
18254
|
+
<mat-label>{{ actionSpec.param.label || 'Parâmetro' }}</mat-label>
|
|
18196
18255
|
<input
|
|
18197
18256
|
matInput
|
|
18198
18257
|
[ngModel]="getActionParam(action.action)"
|
|
@@ -18205,7 +18264,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18205
18264
|
matSuffix
|
|
18206
18265
|
type="button"
|
|
18207
18266
|
class="help-icon-button"
|
|
18208
|
-
[matTooltip]="actionSpec
|
|
18267
|
+
[matTooltip]="getGlobalActionSpecHint(actionSpec)"
|
|
18209
18268
|
>
|
|
18210
18269
|
<mat-icon>help_outline</mat-icon>
|
|
18211
18270
|
</button>
|
|
@@ -18219,13 +18278,13 @@ class ToolbarActionsEditorComponent {
|
|
|
18219
18278
|
}
|
|
18220
18279
|
|
|
18221
18280
|
<mat-form-field appearance="outline">
|
|
18222
|
-
<mat-label>
|
|
18281
|
+
<mat-label>Posição do botão</mat-label>
|
|
18223
18282
|
<mat-select
|
|
18224
18283
|
[(ngModel)]="action.position"
|
|
18225
18284
|
(ngModelChange)="updateToolbarActions()"
|
|
18226
18285
|
[ngModelOptions]="{ standalone: true }"
|
|
18227
18286
|
>
|
|
18228
|
-
<mat-option value="start">
|
|
18287
|
+
<mat-option value="start">InÃcio</mat-option>
|
|
18229
18288
|
<mat-option value="end">Fim</mat-option>
|
|
18230
18289
|
</mat-select>
|
|
18231
18290
|
<button
|
|
@@ -18233,20 +18292,20 @@ class ToolbarActionsEditorComponent {
|
|
|
18233
18292
|
matSuffix
|
|
18234
18293
|
type="button"
|
|
18235
18294
|
class="help-icon-button"
|
|
18236
|
-
matTooltip="
|
|
18295
|
+
matTooltip="Posição do botão na toolbar (inÃcio/fim)."
|
|
18237
18296
|
>
|
|
18238
18297
|
<mat-icon>help_outline</mat-icon>
|
|
18239
18298
|
</button>
|
|
18240
18299
|
</mat-form-field>
|
|
18241
18300
|
|
|
18242
18301
|
<mat-form-field appearance="outline">
|
|
18243
|
-
<mat-label>Cor do
|
|
18302
|
+
<mat-label>Cor do botão</mat-label>
|
|
18244
18303
|
<mat-select
|
|
18245
18304
|
[(ngModel)]="action.color"
|
|
18246
18305
|
(ngModelChange)="updateToolbarActions()"
|
|
18247
18306
|
[ngModelOptions]="{ standalone: true }"
|
|
18248
18307
|
>
|
|
18249
|
-
<mat-option value="">
|
|
18308
|
+
<mat-option value="">Padrão</mat-option>
|
|
18250
18309
|
<mat-option value="primary">Primary</mat-option>
|
|
18251
18310
|
<mat-option value="accent">Accent</mat-option>
|
|
18252
18311
|
<mat-option value="warn">Warn</mat-option>
|
|
@@ -18256,7 +18315,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18256
18315
|
matSuffix
|
|
18257
18316
|
type="button"
|
|
18258
18317
|
class="help-icon-button"
|
|
18259
|
-
matTooltip="Cor do
|
|
18318
|
+
matTooltip="Cor do botão (não altera o alerta)."
|
|
18260
18319
|
>
|
|
18261
18320
|
<mat-icon>help_outline</mat-icon>
|
|
18262
18321
|
</button>
|
|
@@ -18288,7 +18347,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18288
18347
|
matSuffix
|
|
18289
18348
|
type="button"
|
|
18290
18349
|
class="help-icon-button"
|
|
18291
|
-
matTooltip="Define se o atalho vale
|
|
18350
|
+
matTooltip="Define se o atalho vale só para a toolbar em foco ou globalmente."
|
|
18292
18351
|
>
|
|
18293
18352
|
<mat-icon>help_outline</mat-icon>
|
|
18294
18353
|
</button>
|
|
@@ -18310,15 +18369,15 @@ class ToolbarActionsEditorComponent {
|
|
|
18310
18369
|
</div>
|
|
18311
18370
|
</mat-expansion-panel>
|
|
18312
18371
|
|
|
18313
|
-
<!--
|
|
18372
|
+
<!-- Ações por Linha -->
|
|
18314
18373
|
<mat-expansion-panel>
|
|
18315
18374
|
<mat-expansion-panel-header>
|
|
18316
18375
|
<mat-panel-title>
|
|
18317
18376
|
<mat-icon class="section-icon" [praxisIcon]="'more_vert'"></mat-icon>
|
|
18318
|
-
|
|
18377
|
+
Ações por Linha
|
|
18319
18378
|
</mat-panel-title>
|
|
18320
18379
|
<mat-panel-description>
|
|
18321
|
-
|
|
18380
|
+
Ações especÃficas para cada registro
|
|
18322
18381
|
</mat-panel-description>
|
|
18323
18382
|
</mat-expansion-panel-header>
|
|
18324
18383
|
|
|
@@ -18327,19 +18386,19 @@ class ToolbarActionsEditorComponent {
|
|
|
18327
18386
|
formControlName="rowActionsEnabled"
|
|
18328
18387
|
class="toggle-field"
|
|
18329
18388
|
>
|
|
18330
|
-
Habilitar
|
|
18389
|
+
Habilitar ações por linha
|
|
18331
18390
|
</mat-slide-toggle>
|
|
18332
18391
|
|
|
18333
18392
|
@if (toolbarForm.get('rowActionsEnabled')?.value) { <div
|
|
18334
18393
|
class="config-fields"
|
|
18335
18394
|
>
|
|
18336
18395
|
<mat-form-field appearance="outline">
|
|
18337
|
-
<mat-label>Modo de
|
|
18396
|
+
<mat-label>Modo de exibição</mat-label>
|
|
18338
18397
|
<mat-select formControlName="rowActionsDisplay">
|
|
18339
18398
|
<mat-option value="menu">Menu suspenso</mat-option>
|
|
18340
|
-
<mat-option value="buttons">
|
|
18399
|
+
<mat-option value="buttons">Botões individuais</mat-option>
|
|
18341
18400
|
<mat-option value="hybrid"
|
|
18342
|
-
>
|
|
18401
|
+
>HÃbrido (botões + menu)</mat-option
|
|
18343
18402
|
>
|
|
18344
18403
|
</mat-select>
|
|
18345
18404
|
</mat-form-field>
|
|
@@ -18347,14 +18406,14 @@ class ToolbarActionsEditorComponent {
|
|
|
18347
18406
|
<mat-form-field appearance="outline">
|
|
18348
18407
|
<mat-label>Quando mostrar</mat-label>
|
|
18349
18408
|
<mat-select formControlName="rowActionsTrigger">
|
|
18350
|
-
<mat-option value="always">Sempre
|
|
18409
|
+
<mat-option value="always">Sempre visÃvel</mat-option>
|
|
18351
18410
|
<mat-option value="hover">Apenas no hover</mat-option>
|
|
18352
18411
|
<mat-option value="focus">Apenas com foco</mat-option>
|
|
18353
18412
|
</mat-select>
|
|
18354
18413
|
</mat-form-field>
|
|
18355
18414
|
|
|
18356
18415
|
<mat-form-field appearance="outline">
|
|
18357
|
-
<mat-label>
|
|
18416
|
+
<mat-label>Máximo de ações visÃveis</mat-label>
|
|
18358
18417
|
<input
|
|
18359
18418
|
matInput
|
|
18360
18419
|
type="number"
|
|
@@ -18367,31 +18426,31 @@ class ToolbarActionsEditorComponent {
|
|
|
18367
18426
|
matSuffix
|
|
18368
18427
|
type="button"
|
|
18369
18428
|
class="help-icon-button"
|
|
18370
|
-
matTooltip="Demais
|
|
18429
|
+
matTooltip="Demais ações ficam no menu “Maisâ€."
|
|
18371
18430
|
>
|
|
18372
18431
|
<mat-icon>help_outline</mat-icon>
|
|
18373
18432
|
</button>
|
|
18374
18433
|
</mat-form-field>
|
|
18375
18434
|
|
|
18376
18435
|
<mat-form-field appearance="outline">
|
|
18377
|
-
<mat-label>Largura da coluna de
|
|
18436
|
+
<mat-label>Largura da coluna de ações</mat-label>
|
|
18378
18437
|
<input matInput formControlName="rowActionsWidth" placeholder="ex.: 96px, 6rem" />
|
|
18379
18438
|
<button
|
|
18380
18439
|
mat-icon-button
|
|
18381
18440
|
matSuffix
|
|
18382
18441
|
type="button"
|
|
18383
18442
|
class="help-icon-button"
|
|
18384
|
-
matTooltip="Aplica no header e nas
|
|
18443
|
+
matTooltip="Aplica no header e nas células."
|
|
18385
18444
|
>
|
|
18386
18445
|
<mat-icon>help_outline</mat-icon>
|
|
18387
18446
|
</button>
|
|
18388
18447
|
</mat-form-field>
|
|
18389
18448
|
|
|
18390
18449
|
<mat-form-field appearance="outline">
|
|
18391
|
-
<mat-label>Fixar coluna de
|
|
18450
|
+
<mat-label>Fixar coluna de ações</mat-label>
|
|
18392
18451
|
<mat-select formControlName="rowActionsSticky">
|
|
18393
18452
|
<mat-option [value]="null">Nenhum</mat-option>
|
|
18394
|
-
<mat-option value="start">
|
|
18453
|
+
<mat-option value="start">InÃcio</mat-option>
|
|
18395
18454
|
<mat-option value="end">Fim</mat-option>
|
|
18396
18455
|
</mat-select>
|
|
18397
18456
|
<button
|
|
@@ -18399,19 +18458,19 @@ class ToolbarActionsEditorComponent {
|
|
|
18399
18458
|
matSuffix
|
|
18400
18459
|
type="button"
|
|
18401
18460
|
class="help-icon-button"
|
|
18402
|
-
matTooltip="Fixar coluna de
|
|
18461
|
+
matTooltip="Fixar coluna de ações (inÃcio/fim)."
|
|
18403
18462
|
>
|
|
18404
18463
|
<mat-icon>help_outline</mat-icon>
|
|
18405
18464
|
</button>
|
|
18406
18465
|
</mat-form-field>
|
|
18407
18466
|
|
|
18408
18467
|
<mat-form-field appearance="outline">
|
|
18409
|
-
<mat-label
|
|
18468
|
+
<mat-label>Ãcone do menu (três pontos)</mat-label>
|
|
18410
18469
|
@if (toolbarForm.value.rowActionsMenuIcon) { <span matPrefix>
|
|
18411
18470
|
<mat-icon aria-hidden="true" [praxisIcon]="toolbarForm.value.rowActionsMenuIcon"></mat-icon>
|
|
18412
18471
|
</span> }
|
|
18413
18472
|
<input matInput formControlName="rowActionsMenuIcon" placeholder="ex.: more_vert, more_horiz" />
|
|
18414
|
-
<button mat-icon-button matSuffix type="button" (click)="pickRowMenuIcon()" matTooltip="Escolher
|
|
18473
|
+
<button mat-icon-button matSuffix type="button" (click)="pickRowMenuIcon()" matTooltip="Escolher Ãcone">
|
|
18415
18474
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
18416
18475
|
</button>
|
|
18417
18476
|
@if (toolbarForm.value.rowActionsMenuIcon) { <button mat-icon-button matSuffix type="button" (click)="toolbarForm.get('rowActionsMenuIcon')?.setValue('')" matTooltip="Limpar">
|
|
@@ -18420,9 +18479,9 @@ class ToolbarActionsEditorComponent {
|
|
|
18420
18479
|
</mat-form-field>
|
|
18421
18480
|
|
|
18422
18481
|
<mat-form-field appearance="outline">
|
|
18423
|
-
<mat-label>Cor do
|
|
18482
|
+
<mat-label>Cor do botão do menu</mat-label>
|
|
18424
18483
|
<mat-select formControlName="rowActionsMenuButtonColor">
|
|
18425
|
-
<mat-option value="basic">
|
|
18484
|
+
<mat-option value="basic">Padrão</mat-option>
|
|
18426
18485
|
<mat-option value="primary">Primary</mat-option>
|
|
18427
18486
|
<mat-option value="accent">Accent</mat-option>
|
|
18428
18487
|
<mat-option value="warn">Warn</mat-option>
|
|
@@ -18430,20 +18489,20 @@ class ToolbarActionsEditorComponent {
|
|
|
18430
18489
|
</mat-form-field>
|
|
18431
18490
|
|
|
18432
18491
|
<div class="subsection" style="grid-column: 1 / -1;">
|
|
18433
|
-
<h4>
|
|
18492
|
+
<h4> Cabeçalho da coluna de ações </h4>
|
|
18434
18493
|
<div class="action-form">
|
|
18435
18494
|
<mat-form-field appearance="outline">
|
|
18436
18495
|
<mat-label>Label</mat-label>
|
|
18437
|
-
<input matInput formControlName="rowActionsHeaderLabel" placeholder="Ex.:
|
|
18496
|
+
<input matInput formControlName="rowActionsHeaderLabel" placeholder="Ex.: Ações" />
|
|
18438
18497
|
</mat-form-field>
|
|
18439
18498
|
|
|
18440
18499
|
<mat-form-field appearance="outline">
|
|
18441
|
-
<mat-label
|
|
18500
|
+
<mat-label>Ãcone</mat-label>
|
|
18442
18501
|
@if (toolbarForm.value.rowActionsHeaderIcon) { <span matPrefix>
|
|
18443
18502
|
<mat-icon aria-hidden="true" [praxisIcon]="toolbarForm.value.rowActionsHeaderIcon"></mat-icon>
|
|
18444
18503
|
</span> }
|
|
18445
18504
|
<input matInput formControlName="rowActionsHeaderIcon" placeholder="ex.: more_horiz, build" />
|
|
18446
|
-
<button mat-icon-button matSuffix type="button" (click)="pickRowHeaderIcon()" matTooltip="Escolher
|
|
18505
|
+
<button mat-icon-button matSuffix type="button" (click)="pickRowHeaderIcon()" matTooltip="Escolher Ãcone">
|
|
18447
18506
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
18448
18507
|
</button>
|
|
18449
18508
|
@if (toolbarForm.value.rowActionsHeaderIcon) { <button mat-icon-button matSuffix type="button" (click)="toolbarForm.get('rowActionsHeaderIcon')?.setValue('')" matTooltip="Limpar">
|
|
@@ -18453,13 +18512,13 @@ class ToolbarActionsEditorComponent {
|
|
|
18453
18512
|
|
|
18454
18513
|
<mat-form-field appearance="outline">
|
|
18455
18514
|
<mat-label>Tooltip</mat-label>
|
|
18456
|
-
<input matInput formControlName="rowActionsHeaderTooltip" placeholder="Ex.:
|
|
18515
|
+
<input matInput formControlName="rowActionsHeaderTooltip" placeholder="Ex.: Ações disponÃveis" />
|
|
18457
18516
|
</mat-form-field>
|
|
18458
18517
|
|
|
18459
18518
|
<mat-form-field appearance="outline">
|
|
18460
18519
|
<mat-label>Alinhamento</mat-label>
|
|
18461
18520
|
<mat-select formControlName="rowActionsHeaderAlign">
|
|
18462
|
-
<mat-option value="start">
|
|
18521
|
+
<mat-option value="start">InÃcio</mat-option>
|
|
18463
18522
|
<mat-option value="center">Centro</mat-option>
|
|
18464
18523
|
<mat-option value="end">Fim</mat-option>
|
|
18465
18524
|
</mat-select>
|
|
@@ -18475,7 +18534,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18475
18534
|
type="button"
|
|
18476
18535
|
>
|
|
18477
18536
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
18478
|
-
Adicionar
|
|
18537
|
+
Adicionar Ação de Linha
|
|
18479
18538
|
</button>
|
|
18480
18539
|
<button mat-stroked-button [matMenuTriggerFor]="rowTplMenu" type="button" style="margin-left:8px">
|
|
18481
18540
|
<mat-icon [praxisIcon]="'bolt'"></mat-icon>
|
|
@@ -18484,7 +18543,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18484
18543
|
<mat-menu #rowTplMenu="matMenu">
|
|
18485
18544
|
<button mat-menu-item [matMenuTriggerFor]="rowCrudTpl">
|
|
18486
18545
|
<mat-icon [praxisIcon]="'list'"></mat-icon>
|
|
18487
|
-
<span>CRUD
|
|
18546
|
+
<span>CRUD padrão (ver/editar/excluir)</span>
|
|
18488
18547
|
</button>
|
|
18489
18548
|
<button mat-menu-item [matMenuTriggerFor]="rowEditDeleteTpl">
|
|
18490
18549
|
<mat-icon [praxisIcon]="'edit'"></mat-icon>
|
|
@@ -18531,7 +18590,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18531
18590
|
<mat-icon class="drag-handle" [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
18532
18591
|
<mat-icon [praxisIcon]="action.icon"></mat-icon>
|
|
18533
18592
|
<span class="action-label">{{
|
|
18534
|
-
action.label || 'Nova
|
|
18593
|
+
action.label || 'Nova Ação'
|
|
18535
18594
|
}}</span>
|
|
18536
18595
|
<div class="action-controls">
|
|
18537
18596
|
<button
|
|
@@ -18558,7 +18617,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18558
18617
|
>
|
|
18559
18618
|
<div class="action-form">
|
|
18560
18619
|
<mat-form-field appearance="outline">
|
|
18561
|
-
<mat-label>ID da
|
|
18620
|
+
<mat-label>ID da ação</mat-label>
|
|
18562
18621
|
<input
|
|
18563
18622
|
matInput
|
|
18564
18623
|
[(ngModel)]="action.id"
|
|
@@ -18578,7 +18637,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18578
18637
|
</mat-form-field>
|
|
18579
18638
|
|
|
18580
18639
|
<mat-form-field appearance="outline">
|
|
18581
|
-
<mat-label
|
|
18640
|
+
<mat-label>Ãcone</mat-label>
|
|
18582
18641
|
@if (action.icon) { <span matPrefix>
|
|
18583
18642
|
<mat-icon aria-hidden="true" [praxisIcon]="action.icon"></mat-icon>
|
|
18584
18643
|
</span> }
|
|
@@ -18598,7 +18657,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18598
18657
|
>
|
|
18599
18658
|
<mat-icon>help_outline</mat-icon>
|
|
18600
18659
|
</button>
|
|
18601
|
-
<button mat-icon-button matSuffix type="button" (click)="pickRowActionIcon(i)" matTooltip="Escolher
|
|
18660
|
+
<button mat-icon-button matSuffix type="button" (click)="pickRowActionIcon(i)" matTooltip="Escolher Ãcone">
|
|
18602
18661
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
18603
18662
|
</button>
|
|
18604
18663
|
@if (action.icon) { <button mat-icon-button matSuffix type="button" (click)="action.icon=''; updateRowActions()" matTooltip="Limpar">
|
|
@@ -18607,7 +18666,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18607
18666
|
</mat-form-field>
|
|
18608
18667
|
|
|
18609
18668
|
<mat-form-field appearance="outline">
|
|
18610
|
-
<mat-label>
|
|
18669
|
+
<mat-label>Ação</mat-label>
|
|
18611
18670
|
<mat-select
|
|
18612
18671
|
[ngModel]="getActionSelectValue(action.action)"
|
|
18613
18672
|
(ngModelChange)="onActionSelectChange(action, $event, 'row')"
|
|
@@ -18616,12 +18675,12 @@ class ToolbarActionsEditorComponent {
|
|
|
18616
18675
|
<mat-option [value]="customActionValue">Customizada</mat-option>
|
|
18617
18676
|
<mat-optgroup label="Acoes internas">
|
|
18618
18677
|
@for (spec of internalActionCatalog; track spec.id) {
|
|
18619
|
-
<mat-option [value]="spec.id">{{ spec
|
|
18678
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
18620
18679
|
}
|
|
18621
18680
|
</mat-optgroup>
|
|
18622
18681
|
<mat-optgroup label="Acoes globais">
|
|
18623
18682
|
@for (spec of globalActionCatalog; track spec.id) {
|
|
18624
|
-
<mat-option [value]="spec.id">{{ spec
|
|
18683
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
18625
18684
|
}
|
|
18626
18685
|
</mat-optgroup>
|
|
18627
18686
|
</mat-select>
|
|
@@ -18630,7 +18689,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18630
18689
|
matSuffix
|
|
18631
18690
|
type="button"
|
|
18632
18691
|
class="help-icon-button"
|
|
18633
|
-
matTooltip="
|
|
18692
|
+
matTooltip="Ações internas disparam eventos da tabela. Ações globais precisam do ActionResolver no app."
|
|
18634
18693
|
>
|
|
18635
18694
|
<mat-icon>help_outline</mat-icon>
|
|
18636
18695
|
</button>
|
|
@@ -18638,7 +18697,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18638
18697
|
|
|
18639
18698
|
@if (getActionSelectValue(action.action) === customActionValue) {
|
|
18640
18699
|
<mat-form-field appearance="outline">
|
|
18641
|
-
<mat-label>
|
|
18700
|
+
<mat-label>Ação customizada</mat-label>
|
|
18642
18701
|
<input
|
|
18643
18702
|
matInput
|
|
18644
18703
|
[ngModel]="getActionCustomValue(action.action)"
|
|
@@ -18657,7 +18716,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18657
18716
|
@if (getActionSpecById(getActionSelectValue(action.action)); as actionSpec) {
|
|
18658
18717
|
@if (actionSpec.param) {
|
|
18659
18718
|
<mat-form-field appearance="outline">
|
|
18660
|
-
<mat-label>{{ actionSpec.param.label || '
|
|
18719
|
+
<mat-label>{{ actionSpec.param.label || 'Parâmetro' }}</mat-label>
|
|
18661
18720
|
<input
|
|
18662
18721
|
matInput
|
|
18663
18722
|
[ngModel]="getActionParam(action.action)"
|
|
@@ -18670,7 +18729,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18670
18729
|
matSuffix
|
|
18671
18730
|
type="button"
|
|
18672
18731
|
class="help-icon-button"
|
|
18673
|
-
[matTooltip]="actionSpec
|
|
18732
|
+
[matTooltip]="getGlobalActionSpecHint(actionSpec)"
|
|
18674
18733
|
>
|
|
18675
18734
|
<mat-icon>help_outline</mat-icon>
|
|
18676
18735
|
</button>
|
|
@@ -18684,13 +18743,13 @@ class ToolbarActionsEditorComponent {
|
|
|
18684
18743
|
}
|
|
18685
18744
|
|
|
18686
18745
|
<mat-form-field appearance="outline">
|
|
18687
|
-
<mat-label>Cor do
|
|
18746
|
+
<mat-label>Cor do botão</mat-label>
|
|
18688
18747
|
<mat-select
|
|
18689
18748
|
[(ngModel)]="action.color"
|
|
18690
18749
|
(ngModelChange)="updateRowActions()"
|
|
18691
18750
|
[ngModelOptions]="{ standalone: true }"
|
|
18692
18751
|
>
|
|
18693
|
-
<mat-option value="">
|
|
18752
|
+
<mat-option value="">Padrão</mat-option>
|
|
18694
18753
|
<mat-option value="primary">Primary</mat-option>
|
|
18695
18754
|
<mat-option value="accent">Accent</mat-option>
|
|
18696
18755
|
<mat-option value="warn">Warn</mat-option>
|
|
@@ -18713,7 +18772,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18713
18772
|
[ngModelOptions]="{ standalone: true }"
|
|
18714
18773
|
class="toggle-field"
|
|
18715
18774
|
>
|
|
18716
|
-
Requer
|
|
18775
|
+
Requer confirmação
|
|
18717
18776
|
</mat-slide-toggle>
|
|
18718
18777
|
|
|
18719
18778
|
@if (action.action === 'delete') { <mat-slide-toggle
|
|
@@ -18731,7 +18790,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18731
18790
|
[ngModelOptions]="{ standalone: true }"
|
|
18732
18791
|
class="toggle-field"
|
|
18733
18792
|
>
|
|
18734
|
-
Separador
|
|
18793
|
+
Separador após esta ação
|
|
18735
18794
|
</mat-slide-toggle>
|
|
18736
18795
|
</div>
|
|
18737
18796
|
</div>
|
|
@@ -18741,15 +18800,15 @@ class ToolbarActionsEditorComponent {
|
|
|
18741
18800
|
</div>
|
|
18742
18801
|
</mat-expansion-panel>
|
|
18743
18802
|
|
|
18744
|
-
<!--
|
|
18803
|
+
<!-- Ações em Lote -->
|
|
18745
18804
|
@if (isV2) { <mat-expansion-panel>
|
|
18746
18805
|
<mat-expansion-panel-header>
|
|
18747
18806
|
<mat-panel-title>
|
|
18748
18807
|
<mat-icon class="section-icon" [praxisIcon]="'select_all'"></mat-icon>
|
|
18749
|
-
|
|
18808
|
+
Ações em Lote
|
|
18750
18809
|
</mat-panel-title>
|
|
18751
18810
|
<mat-panel-description>
|
|
18752
|
-
|
|
18811
|
+
Ações para múltiplas seleções (V2 only)
|
|
18753
18812
|
</mat-panel-description>
|
|
18754
18813
|
</mat-expansion-panel-header>
|
|
18755
18814
|
|
|
@@ -18758,14 +18817,14 @@ class ToolbarActionsEditorComponent {
|
|
|
18758
18817
|
formControlName="bulkActionsEnabled"
|
|
18759
18818
|
class="toggle-field"
|
|
18760
18819
|
>
|
|
18761
|
-
Habilitar
|
|
18820
|
+
Habilitar ações em lote
|
|
18762
18821
|
</mat-slide-toggle>
|
|
18763
18822
|
|
|
18764
18823
|
@if (toolbarForm.get('bulkActionsEnabled')?.value) { <div
|
|
18765
18824
|
class="config-fields"
|
|
18766
18825
|
>
|
|
18767
18826
|
<mat-form-field appearance="outline">
|
|
18768
|
-
<mat-label>
|
|
18827
|
+
<mat-label>Posição das ações em lote</mat-label>
|
|
18769
18828
|
<mat-select formControlName="bulkActionsPosition">
|
|
18770
18829
|
<mat-option value="toolbar"
|
|
18771
18830
|
>Na barra de ferramentas</mat-option
|
|
@@ -18783,7 +18842,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18783
18842
|
type="button"
|
|
18784
18843
|
>
|
|
18785
18844
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
18786
|
-
Adicionar
|
|
18845
|
+
Adicionar Ação em Lote
|
|
18787
18846
|
</button>
|
|
18788
18847
|
</div>
|
|
18789
18848
|
|
|
@@ -18801,7 +18860,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18801
18860
|
<mat-icon class="drag-handle">drag_indicator</mat-icon>
|
|
18802
18861
|
<mat-icon>{{ action.icon }}</mat-icon>
|
|
18803
18862
|
<span class="action-label">{{
|
|
18804
|
-
action.label || 'Nova
|
|
18863
|
+
action.label || 'Nova Ação'
|
|
18805
18864
|
}}</span>
|
|
18806
18865
|
<div class="action-controls">
|
|
18807
18866
|
<button
|
|
@@ -18828,7 +18887,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18828
18887
|
>
|
|
18829
18888
|
<div class="action-form">
|
|
18830
18889
|
<mat-form-field appearance="outline">
|
|
18831
|
-
<mat-label>ID da
|
|
18890
|
+
<mat-label>ID da ação</mat-label>
|
|
18832
18891
|
<input
|
|
18833
18892
|
matInput
|
|
18834
18893
|
[(ngModel)]="action.id"
|
|
@@ -18848,7 +18907,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18848
18907
|
</mat-form-field>
|
|
18849
18908
|
|
|
18850
18909
|
<mat-form-field appearance="outline">
|
|
18851
|
-
<mat-label
|
|
18910
|
+
<mat-label>Ãcone</mat-label>
|
|
18852
18911
|
<span matPrefix *ngIf="action.icon">
|
|
18853
18912
|
<mat-icon aria-hidden="true">{{ action.icon }}</mat-icon>
|
|
18854
18913
|
</span>
|
|
@@ -18868,7 +18927,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18868
18927
|
>
|
|
18869
18928
|
<mat-icon>help_outline</mat-icon>
|
|
18870
18929
|
</button>
|
|
18871
|
-
<button mat-icon-button matSuffix type="button" (click)="pickBulkActionIcon(i)" matTooltip="Escolher
|
|
18930
|
+
<button mat-icon-button matSuffix type="button" (click)="pickBulkActionIcon(i)" matTooltip="Escolher Ãcone">
|
|
18872
18931
|
<mat-icon>search</mat-icon>
|
|
18873
18932
|
</button>
|
|
18874
18933
|
<button mat-icon-button matSuffix type="button" (click)="action.icon=''; updateBulkActions()" matTooltip="Limpar" *ngIf="action.icon">
|
|
@@ -18877,7 +18936,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18877
18936
|
</mat-form-field>
|
|
18878
18937
|
|
|
18879
18938
|
<mat-form-field appearance="outline">
|
|
18880
|
-
<mat-label>
|
|
18939
|
+
<mat-label>Ação</mat-label>
|
|
18881
18940
|
<mat-select
|
|
18882
18941
|
[ngModel]="getActionSelectValue(action.action)"
|
|
18883
18942
|
(ngModelChange)="onActionSelectChange(action, $event, 'bulk')"
|
|
@@ -18886,12 +18945,12 @@ class ToolbarActionsEditorComponent {
|
|
|
18886
18945
|
<mat-option [value]="customActionValue">Customizada</mat-option>
|
|
18887
18946
|
<mat-optgroup label="Acoes internas">
|
|
18888
18947
|
@for (spec of internalActionCatalog; track spec.id) {
|
|
18889
|
-
<mat-option [value]="spec.id">{{ spec
|
|
18948
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
18890
18949
|
}
|
|
18891
18950
|
</mat-optgroup>
|
|
18892
18951
|
<mat-optgroup label="Acoes globais">
|
|
18893
18952
|
@for (spec of globalActionCatalog; track spec.id) {
|
|
18894
|
-
<mat-option [value]="spec.id">{{ spec
|
|
18953
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
18895
18954
|
}
|
|
18896
18955
|
</mat-optgroup>
|
|
18897
18956
|
</mat-select>
|
|
@@ -18900,7 +18959,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18900
18959
|
matSuffix
|
|
18901
18960
|
type="button"
|
|
18902
18961
|
class="help-icon-button"
|
|
18903
|
-
matTooltip="
|
|
18962
|
+
matTooltip="Ações internas disparam eventos da tabela. Ações globais precisam do ActionResolver no app."
|
|
18904
18963
|
>
|
|
18905
18964
|
<mat-icon>help_outline</mat-icon>
|
|
18906
18965
|
</button>
|
|
@@ -18908,7 +18967,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18908
18967
|
|
|
18909
18968
|
@if (getActionSelectValue(action.action) === customActionValue) {
|
|
18910
18969
|
<mat-form-field appearance="outline">
|
|
18911
|
-
<mat-label>
|
|
18970
|
+
<mat-label>Ação customizada</mat-label>
|
|
18912
18971
|
<input
|
|
18913
18972
|
matInput
|
|
18914
18973
|
[ngModel]="getActionCustomValue(action.action)"
|
|
@@ -18927,7 +18986,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18927
18986
|
@if (getActionSpecById(getActionSelectValue(action.action)); as actionSpec) {
|
|
18928
18987
|
@if (actionSpec.param) {
|
|
18929
18988
|
<mat-form-field appearance="outline">
|
|
18930
|
-
<mat-label>{{ actionSpec.param.label || '
|
|
18989
|
+
<mat-label>{{ actionSpec.param.label || 'Parâmetro' }}</mat-label>
|
|
18931
18990
|
<input
|
|
18932
18991
|
matInput
|
|
18933
18992
|
[ngModel]="getActionParam(action.action)"
|
|
@@ -18940,7 +18999,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18940
18999
|
matSuffix
|
|
18941
19000
|
type="button"
|
|
18942
19001
|
class="help-icon-button"
|
|
18943
|
-
[matTooltip]="actionSpec
|
|
19002
|
+
[matTooltip]="getGlobalActionSpecHint(actionSpec)"
|
|
18944
19003
|
>
|
|
18945
19004
|
<mat-icon>help_outline</mat-icon>
|
|
18946
19005
|
</button>
|
|
@@ -18954,13 +19013,13 @@ class ToolbarActionsEditorComponent {
|
|
|
18954
19013
|
}
|
|
18955
19014
|
|
|
18956
19015
|
<mat-form-field appearance="outline">
|
|
18957
|
-
<mat-label>Cor do
|
|
19016
|
+
<mat-label>Cor do botão</mat-label>
|
|
18958
19017
|
<mat-select
|
|
18959
19018
|
[(ngModel)]="action.color"
|
|
18960
19019
|
(ngModelChange)="updateBulkActions()"
|
|
18961
19020
|
[ngModelOptions]="{ standalone: true }"
|
|
18962
19021
|
>
|
|
18963
|
-
<mat-option value="">
|
|
19022
|
+
<mat-option value="">Padrão</mat-option>
|
|
18964
19023
|
<mat-option value="primary">Primary</mat-option>
|
|
18965
19024
|
<mat-option value="accent">Accent</mat-option>
|
|
18966
19025
|
<mat-option value="warn">Warn</mat-option>
|
|
@@ -18968,7 +19027,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18968
19027
|
</mat-form-field>
|
|
18969
19028
|
|
|
18970
19029
|
<mat-form-field appearance="outline">
|
|
18971
|
-
<mat-label>
|
|
19030
|
+
<mat-label>MÃnimo de seleções</mat-label>
|
|
18972
19031
|
<input
|
|
18973
19032
|
matInput
|
|
18974
19033
|
type="number"
|
|
@@ -18980,7 +19039,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18980
19039
|
</mat-form-field>
|
|
18981
19040
|
|
|
18982
19041
|
<mat-form-field appearance="outline">
|
|
18983
|
-
<mat-label>
|
|
19042
|
+
<mat-label>Máximo de seleções</mat-label>
|
|
18984
19043
|
<input
|
|
18985
19044
|
matInput
|
|
18986
19045
|
type="number"
|
|
@@ -18997,7 +19056,7 @@ class ToolbarActionsEditorComponent {
|
|
|
18997
19056
|
[ngModelOptions]="{ standalone: true }"
|
|
18998
19057
|
class="toggle-field"
|
|
18999
19058
|
>
|
|
19000
|
-
Requer
|
|
19059
|
+
Requer confirmação
|
|
19001
19060
|
</mat-slide-toggle>
|
|
19002
19061
|
|
|
19003
19062
|
<mat-slide-toggle
|
|
@@ -19017,15 +19076,15 @@ class ToolbarActionsEditorComponent {
|
|
|
19017
19076
|
</div>
|
|
19018
19077
|
</mat-expansion-panel>
|
|
19019
19078
|
|
|
19020
|
-
<!--
|
|
19079
|
+
<!-- Exportação -->
|
|
19021
19080
|
<mat-expansion-panel *ngIf="isV2">
|
|
19022
19081
|
<mat-expansion-panel-header>
|
|
19023
19082
|
<mat-panel-title>
|
|
19024
19083
|
<mat-icon class="section-icon">download</mat-icon>
|
|
19025
|
-
|
|
19084
|
+
Exportação
|
|
19026
19085
|
</mat-panel-title>
|
|
19027
19086
|
<mat-panel-description>
|
|
19028
|
-
|
|
19087
|
+
Configurações de exportação de dados (V2 only)
|
|
19029
19088
|
</mat-panel-description>
|
|
19030
19089
|
</mat-expansion-panel-header>
|
|
19031
19090
|
|
|
@@ -19034,14 +19093,14 @@ class ToolbarActionsEditorComponent {
|
|
|
19034
19093
|
formControlName="exportEnabled"
|
|
19035
19094
|
class="toggle-field"
|
|
19036
19095
|
>
|
|
19037
|
-
Habilitar
|
|
19096
|
+
Habilitar exportação
|
|
19038
19097
|
</mat-slide-toggle>
|
|
19039
19098
|
|
|
19040
19099
|
@if (toolbarForm.get('exportEnabled')?.value) { <div
|
|
19041
19100
|
class="config-fields"
|
|
19042
19101
|
>
|
|
19043
19102
|
<mat-form-field appearance="outline">
|
|
19044
|
-
<mat-label>Formatos
|
|
19103
|
+
<mat-label>Formatos disponÃveis</mat-label>
|
|
19045
19104
|
<mat-select formControlName="exportFormats" multiple>
|
|
19046
19105
|
<mat-option value="excel">Excel (.xlsx)</mat-option>
|
|
19047
19106
|
<mat-option value="csv">CSV</mat-option>
|
|
@@ -19053,14 +19112,14 @@ class ToolbarActionsEditorComponent {
|
|
|
19053
19112
|
matSuffix
|
|
19054
19113
|
type="button"
|
|
19055
19114
|
class="help-icon-button"
|
|
19056
|
-
matTooltip="Segure Ctrl para selecionar
|
|
19115
|
+
matTooltip="Segure Ctrl para selecionar múltiplos formatos."
|
|
19057
19116
|
>
|
|
19058
19117
|
<mat-icon>help_outline</mat-icon>
|
|
19059
19118
|
</button>
|
|
19060
19119
|
</mat-form-field>
|
|
19061
19120
|
|
|
19062
19121
|
<mat-form-field appearance="outline">
|
|
19063
|
-
<mat-label>Nome
|
|
19122
|
+
<mat-label>Nome padrão do arquivo</mat-label>
|
|
19064
19123
|
<input
|
|
19065
19124
|
matInput
|
|
19066
19125
|
formControlName="exportFileName"
|
|
@@ -19072,7 +19131,7 @@ class ToolbarActionsEditorComponent {
|
|
|
19072
19131
|
formControlName="exportIncludeHeaders"
|
|
19073
19132
|
class="toggle-field"
|
|
19074
19133
|
>
|
|
19075
|
-
Incluir
|
|
19134
|
+
Incluir cabeçalhos
|
|
19076
19135
|
</mat-slide-toggle>
|
|
19077
19136
|
|
|
19078
19137
|
<mat-slide-toggle
|
|
@@ -19090,7 +19149,7 @@ class ToolbarActionsEditorComponent {
|
|
|
19090
19149
|
</mat-slide-toggle>
|
|
19091
19150
|
|
|
19092
19151
|
<mat-form-field appearance="outline">
|
|
19093
|
-
<mat-label>
|
|
19152
|
+
<mat-label>Máximo de linhas</mat-label>
|
|
19094
19153
|
<input
|
|
19095
19154
|
matInput
|
|
19096
19155
|
type="number"
|
|
@@ -19113,11 +19172,11 @@ class ToolbarActionsEditorComponent {
|
|
|
19113
19172
|
</mat-expansion-panel> }
|
|
19114
19173
|
</form>
|
|
19115
19174
|
</div>
|
|
19116
|
-
`, isInline: true, styles: [":host{--tae-primary: var(--md-sys-color-primary);--tae-surface: var(--md-sys-color-surface);--tae-surface-low: var(--md-sys-color-surface-container-low);--tae-surface-variant: var(--md-sys-color-surface-variant);--tae-outline-variant: var(--md-sys-color-outline-variant);--tae-on-surface: var(--md-sys-color-on-surface);--tae-on-surface-variant: var(--md-sys-color-on-surface-variant)}.toolbar-actions-container{width:100%;padding:8px}.config-section{padding:16px}.section-hint{color:var(--tae-on-surface-variant);font-size:12px;margin-bottom:12px}.config-fields{display:flex;flex-direction:column;gap:16px;margin-top:16px}.nested-fields{display:flex;flex-direction:column;gap:12px;margin-left:24px;margin-top:12px;padding:16px;background-color:var(--tae-surface-variant);border-radius:8px}.action-section-title{width:100%;margin:12px 0 4px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--tae-on-surface-variant)}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.help-icon-button mat-icon{font-size:18px;line-height:18px;width:18px;height:18px}.action-global-fields .mat-mdc-form-field-icon-suffix{align-self:center}.toggle-field{display:flex;align-items:center;gap:8px}.section-icon{margin-right:8px;color:var(--tae-primary)}.subsection{margin-top:24px;padding:16px;border:1px solid var(--tae-outline-variant);border-radius:8px}.subsection h4{margin:0 0 16px;color:var(--tae-on-surface);font-weight:500}.actions-header{margin:16px 0;display:flex;justify-content:flex-start}.actions-list{display:flex;flex-direction:column;gap:8px;min-height:60px}.action-item{border:1px solid var(--tae-outline-variant);border-radius:8px;background-color:var(--tae-surface);overflow:hidden}.action-header{display:flex;align-items:center;padding:12px 16px;background-color:var(--tae-surface-low);cursor:move}.drag-handle{margin-right:8px;color:var(--tae-on-surface-variant);cursor:grab}.drag-handle:active{cursor:grabbing}.action-label{flex:1;margin-left:8px;font-weight:500}.action-controls{display:flex;gap:4px}.action-details{padding:16px;border-top:1px solid var(--tae-outline-variant);background-color:var(--tae-surface)}.action-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}.action-global-fields{grid-column:1 / -1;padding:12px 14px;border:1px dashed var(--tae-outline-variant);border-radius:10px;background:var(--md-sys-color-surface-container)}.action-global-title{font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--tae-on-surface-variant);margin-bottom:10px}.action-global-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px}mat-form-field{width:100%}mat-expansion-panel{margin-bottom:8px;border-radius:8px;overflow:hidden}mat-expansion-panel-header{min-height:56px}mat-panel-description{color:var(--tae-on-surface-variant)}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:var(--md-sys-elevation-level3)}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.actions-list.cdk-drop-list-dragging .action-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5$1.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i6$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i8.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.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.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i17.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i17.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i17.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i12.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i12.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i12.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }] });
|
|
19175
|
+
`, isInline: true, styles: [":host{--tae-primary: var(--md-sys-color-primary);--tae-surface: var(--md-sys-color-surface);--tae-surface-low: var(--md-sys-color-surface-container-low);--tae-surface-variant: var(--md-sys-color-surface-variant);--tae-outline-variant: var(--md-sys-color-outline-variant);--tae-on-surface: var(--md-sys-color-on-surface);--tae-on-surface-variant: var(--md-sys-color-on-surface-variant)}.toolbar-actions-container{width:100%;padding:8px}.config-section{padding:16px}.section-hint{color:var(--tae-on-surface-variant);font-size:12px;margin-bottom:12px}.config-fields{display:flex;flex-direction:column;gap:16px;margin-top:16px}.nested-fields{display:flex;flex-direction:column;gap:12px;margin-left:24px;margin-top:12px;padding:16px;background-color:var(--tae-surface-variant);border-radius:8px}.action-section-title{width:100%;margin:12px 0 4px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--tae-on-surface-variant)}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}.help-icon-button mat-icon{font-size:18px;line-height:18px;width:18px;height:18px}.action-global-fields .mat-mdc-form-field-icon-suffix{align-self:center}.toggle-field{display:flex;align-items:center;gap:8px}.section-icon{margin-right:8px;color:var(--tae-primary)}.subsection{margin-top:24px;padding:16px;border:1px solid var(--tae-outline-variant);border-radius:8px}.subsection h4{margin:0 0 16px;color:var(--tae-on-surface);font-weight:500}.actions-header{margin:16px 0;display:flex;justify-content:flex-start}.actions-list{display:flex;flex-direction:column;gap:8px;min-height:60px}.action-item{border:1px solid var(--tae-outline-variant);border-radius:8px;background-color:var(--tae-surface);overflow:hidden}.action-header{display:flex;align-items:center;padding:12px 16px;background-color:var(--tae-surface-low);cursor:move}.drag-handle{margin-right:8px;color:var(--tae-on-surface-variant);cursor:grab}.drag-handle:active{cursor:grabbing}.action-label{flex:1;margin-left:8px;font-weight:500}.action-controls{display:flex;gap:4px}.action-details{padding:16px;border-top:1px solid var(--tae-outline-variant);background-color:var(--tae-surface)}.action-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}.action-global-fields{grid-column:1 / -1;padding:12px 14px;border:1px dashed var(--tae-outline-variant);border-radius:10px;background:var(--md-sys-color-surface-container)}.action-global-title{font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--tae-on-surface-variant);margin-bottom:10px}.action-global-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px}mat-form-field{width:100%}mat-expansion-panel{margin-bottom:8px;border-radius:8px;overflow:hidden}mat-expansion-panel-header{min-height:56px}mat-panel-description{color:var(--tae-on-surface-variant)}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:var(--md-sys-elevation-level3)}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.actions-list.cdk-drop-list-dragging .action-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5$1.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i6$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i8.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i8.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i8.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i8.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.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.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i17.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i17.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i17.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i12.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i12.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i12.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: SurfaceOpenActionEditorComponent, selector: "praxis-surface-open-action-editor", inputs: ["value", "hostKind"], outputs: ["valueChange"] }] });
|
|
19117
19176
|
}
|
|
19118
19177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ToolbarActionsEditorComponent, decorators: [{
|
|
19119
19178
|
type: Component,
|
|
19120
|
-
args: [{ selector: 'toolbar-actions-editor', standalone: true, imports: [
|
|
19179
|
+
args: [{ selector: 'toolbar-actions-editor', standalone: true, providers: [providePraxisI18nConfig(SURFACE_OPEN_I18N_CONFIG)], imports: [
|
|
19121
19180
|
CommonModule,
|
|
19122
19181
|
FormsModule,
|
|
19123
19182
|
ReactiveFormsModule,
|
|
@@ -19135,12 +19194,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19135
19194
|
MatMenuModule,
|
|
19136
19195
|
DragDropModule,
|
|
19137
19196
|
PraxisIconDirective,
|
|
19197
|
+
SurfaceOpenActionEditorComponent,
|
|
19138
19198
|
], template: `
|
|
19139
19199
|
<div class="toolbar-actions-container">
|
|
19140
19200
|
<ng-template #globalActionFields let-action let-kind="kind">
|
|
19141
19201
|
@if (getGlobalActionSchema(action); as schema) {
|
|
19142
19202
|
<div class="action-global-fields">
|
|
19143
|
-
<div class="action-global-title">
|
|
19203
|
+
<div class="action-global-title">Configuração da ação global</div>
|
|
19204
|
+
@if (schema.editorMode === 'surface-open') {
|
|
19205
|
+
<praxis-surface-open-action-editor
|
|
19206
|
+
[value]="getSurfaceOpenActionPayload(action)"
|
|
19207
|
+
hostKind="table"
|
|
19208
|
+
(valueChange)="onSurfaceOpenActionPayloadChange(action, $event, kind)"
|
|
19209
|
+
></praxis-surface-open-action-editor>
|
|
19210
|
+
} @else {
|
|
19144
19211
|
<div class="action-global-grid">
|
|
19145
19212
|
@for (field of schema.fields; track field.key) {
|
|
19146
19213
|
@if (shouldShowGlobalActionField(action, field)) {
|
|
@@ -19148,7 +19215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19148
19215
|
<div class="action-section-title">Essencial</div>
|
|
19149
19216
|
}
|
|
19150
19217
|
@if (schema.id === 'showAlert' && field.key === 'title') {
|
|
19151
|
-
<div class="action-section-title">
|
|
19218
|
+
<div class="action-section-title">Diálogo (opcional)</div>
|
|
19152
19219
|
}
|
|
19153
19220
|
@if (field.type === 'toggle') {
|
|
19154
19221
|
<mat-slide-toggle
|
|
@@ -19207,7 +19274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19207
19274
|
matSuffix
|
|
19208
19275
|
type="button"
|
|
19209
19276
|
class="help-icon-button"
|
|
19210
|
-
matTooltip="Informe um JSON
|
|
19277
|
+
matTooltip="Informe um JSON válido."
|
|
19211
19278
|
>
|
|
19212
19279
|
<mat-icon>help_outline</mat-icon>
|
|
19213
19280
|
</button>
|
|
@@ -19266,6 +19333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19266
19333
|
}
|
|
19267
19334
|
}
|
|
19268
19335
|
</div>
|
|
19336
|
+
}
|
|
19269
19337
|
</div>
|
|
19270
19338
|
}
|
|
19271
19339
|
</ng-template>
|
|
@@ -19294,43 +19362,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19294
19362
|
class="config-fields"
|
|
19295
19363
|
>
|
|
19296
19364
|
<mat-form-field appearance="outline">
|
|
19297
|
-
<mat-label>
|
|
19365
|
+
<mat-label>TÃtulo da barra</mat-label>
|
|
19298
19366
|
<input
|
|
19299
19367
|
matInput
|
|
19300
19368
|
formControlName="toolbarTitle"
|
|
19301
|
-
placeholder="Ex: Gerenciar
|
|
19369
|
+
placeholder="Ex: Gerenciar Usuários"
|
|
19302
19370
|
/>
|
|
19303
19371
|
<button
|
|
19304
19372
|
mat-icon-button
|
|
19305
19373
|
matSuffix
|
|
19306
19374
|
type="button"
|
|
19307
19375
|
class="help-icon-button"
|
|
19308
|
-
matTooltip="
|
|
19376
|
+
matTooltip="TÃtulo exibido na barra de ferramentas."
|
|
19309
19377
|
>
|
|
19310
19378
|
<mat-icon>help_outline</mat-icon>
|
|
19311
19379
|
</button>
|
|
19312
19380
|
</mat-form-field>
|
|
19313
19381
|
|
|
19314
19382
|
<mat-form-field appearance="outline">
|
|
19315
|
-
<mat-label>
|
|
19383
|
+
<mat-label>SubtÃtulo</mat-label>
|
|
19316
19384
|
<input
|
|
19317
19385
|
matInput
|
|
19318
19386
|
formControlName="toolbarSubtitle"
|
|
19319
|
-
placeholder="Ex: Lista completa de
|
|
19387
|
+
placeholder="Ex: Lista completa de usuários do sistema"
|
|
19320
19388
|
/>
|
|
19321
19389
|
<button
|
|
19322
19390
|
mat-icon-button
|
|
19323
19391
|
matSuffix
|
|
19324
19392
|
type="button"
|
|
19325
19393
|
class="help-icon-button"
|
|
19326
|
-
matTooltip="Texto de apoio abaixo do
|
|
19394
|
+
matTooltip="Texto de apoio abaixo do tÃtulo."
|
|
19327
19395
|
>
|
|
19328
19396
|
<mat-icon>help_outline</mat-icon>
|
|
19329
19397
|
</button>
|
|
19330
19398
|
</mat-form-field>
|
|
19331
19399
|
|
|
19332
19400
|
<mat-form-field appearance="outline">
|
|
19333
|
-
<mat-label>
|
|
19401
|
+
<mat-label>Posição das ações</mat-label>
|
|
19334
19402
|
<mat-select formControlName="toolbarActionsPosition">
|
|
19335
19403
|
<mat-option value="top">Acima da tabela</mat-option>
|
|
19336
19404
|
<mat-option value="bottom">Abaixo da tabela</mat-option>
|
|
@@ -19359,12 +19427,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19359
19427
|
</mat-form-field>
|
|
19360
19428
|
|
|
19361
19429
|
<mat-form-field appearance="outline">
|
|
19362
|
-
<mat-label>Cor de fundo das
|
|
19430
|
+
<mat-label>Cor de fundo das ações</mat-label>
|
|
19363
19431
|
<mat-select
|
|
19364
19432
|
[value]="toolbarForm.get('toolbarActionsBackgroundColor')?.value || ''"
|
|
19365
19433
|
(selectionChange)="toolbarForm.get('toolbarActionsBackgroundColor')?.setValue($event.value)"
|
|
19366
19434
|
>
|
|
19367
|
-
<mat-option value="">
|
|
19435
|
+
<mat-option value="">Padrão do tema</mat-option>
|
|
19368
19436
|
<mat-option value="var(--p-table-header-bg)">Header da tabela</mat-option>
|
|
19369
19437
|
<mat-option value="var(--md-sys-color-surface)">Surface</mat-option>
|
|
19370
19438
|
<mat-option value="var(--md-sys-color-surface-container)">Surface container</mat-option>
|
|
@@ -19376,7 +19444,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19376
19444
|
matSuffix
|
|
19377
19445
|
type="button"
|
|
19378
19446
|
class="help-icon-button"
|
|
19379
|
-
matTooltip="Preset de fundo para a barra de
|
|
19447
|
+
matTooltip="Preset de fundo para a barra de ações."
|
|
19380
19448
|
>
|
|
19381
19449
|
<mat-icon>help_outline</mat-icon>
|
|
19382
19450
|
</button>
|
|
@@ -19414,26 +19482,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19414
19482
|
</div>
|
|
19415
19483
|
</mat-expansion-panel>
|
|
19416
19484
|
|
|
19417
|
-
<!--
|
|
19485
|
+
<!-- Ações da Toolbar -->
|
|
19418
19486
|
<mat-expansion-panel>
|
|
19419
19487
|
<mat-expansion-panel-header>
|
|
19420
19488
|
<mat-panel-title>
|
|
19421
19489
|
<mat-icon class="section-icon">add_circle</mat-icon>
|
|
19422
|
-
|
|
19490
|
+
Ações da Toolbar
|
|
19423
19491
|
</mat-panel-title>
|
|
19424
19492
|
<mat-panel-description>
|
|
19425
|
-
|
|
19493
|
+
Botões e menus personalizados na barra
|
|
19426
19494
|
</mat-panel-description>
|
|
19427
19495
|
</mat-expansion-panel-header>
|
|
19428
19496
|
|
|
19429
19497
|
<div class="config-section">
|
|
19430
19498
|
<div class="section-hint">
|
|
19431
|
-
|
|
19499
|
+
Ações internas disparam eventos do componente. Ações globais exigem ActionResolver no app.
|
|
19432
19500
|
</div>
|
|
19433
|
-
<!-- Atalho
|
|
19501
|
+
<!-- Atalho rápido: Botão Adicionar (create) -->
|
|
19434
19502
|
<div class="quick-add">
|
|
19435
19503
|
<mat-slide-toggle formControlName="addButtonEnabled" class="toggle-field">
|
|
19436
|
-
Exibir
|
|
19504
|
+
Exibir botão "Adicionar"
|
|
19437
19505
|
</mat-slide-toggle>
|
|
19438
19506
|
|
|
19439
19507
|
@if (toolbarForm.get('addButtonEnabled')?.value) { <div class="config-fields">
|
|
@@ -19443,7 +19511,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19443
19511
|
</mat-form-field>
|
|
19444
19512
|
|
|
19445
19513
|
<mat-form-field appearance="outline">
|
|
19446
|
-
<mat-label
|
|
19514
|
+
<mat-label>Ãcone</mat-label>
|
|
19447
19515
|
@if (toolbarForm.value.addButtonIcon) { <span matPrefix>
|
|
19448
19516
|
<mat-icon aria-hidden="true">{{ toolbarForm.value.addButtonIcon }}</mat-icon>
|
|
19449
19517
|
</span> }
|
|
@@ -19457,7 +19525,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19457
19525
|
>
|
|
19458
19526
|
<mat-icon>help_outline</mat-icon>
|
|
19459
19527
|
</button>
|
|
19460
|
-
<button mat-icon-button matSuffix type="button" (click)="pickAddButtonIcon()" matTooltip="Escolher
|
|
19528
|
+
<button mat-icon-button matSuffix type="button" (click)="pickAddButtonIcon()" matTooltip="Escolher Ãcone">
|
|
19461
19529
|
<mat-icon>search</mat-icon>
|
|
19462
19530
|
</button>
|
|
19463
19531
|
@if (toolbarForm.value.addButtonIcon) { <button mat-icon-button matSuffix type="button" (click)="toolbarForm.get('addButtonIcon')?.setValue('')" matTooltip="Limpar">
|
|
@@ -19466,7 +19534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19466
19534
|
</mat-form-field>
|
|
19467
19535
|
|
|
19468
19536
|
<mat-form-field appearance="outline">
|
|
19469
|
-
<mat-label>Cor do
|
|
19537
|
+
<mat-label>Cor do botão</mat-label>
|
|
19470
19538
|
<mat-select formControlName="addButtonColor">
|
|
19471
19539
|
<mat-option value="primary">Primary</mat-option>
|
|
19472
19540
|
<mat-option value="accent">Accent</mat-option>
|
|
@@ -19475,15 +19543,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19475
19543
|
</mat-form-field>
|
|
19476
19544
|
|
|
19477
19545
|
<mat-form-field appearance="outline">
|
|
19478
|
-
<mat-label>
|
|
19546
|
+
<mat-label>Posição do botão</mat-label>
|
|
19479
19547
|
<mat-select formControlName="addButtonPosition">
|
|
19480
|
-
<mat-option value="start">
|
|
19548
|
+
<mat-option value="start">InÃcio</mat-option>
|
|
19481
19549
|
<mat-option value="end">Fim</mat-option>
|
|
19482
19550
|
</mat-select>
|
|
19483
19551
|
</mat-form-field>
|
|
19484
19552
|
|
|
19485
19553
|
<mat-form-field appearance="outline">
|
|
19486
|
-
<mat-label>
|
|
19554
|
+
<mat-label>Aparência</mat-label>
|
|
19487
19555
|
<mat-select formControlName="addButtonAppearance">
|
|
19488
19556
|
<mat-option value="filled">Preenchido</mat-option>
|
|
19489
19557
|
<mat-option value="outlined">Contornado</mat-option>
|
|
@@ -19503,7 +19571,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19503
19571
|
type="button"
|
|
19504
19572
|
>
|
|
19505
19573
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
19506
|
-
Adicionar
|
|
19574
|
+
Adicionar Ação
|
|
19507
19575
|
</button>
|
|
19508
19576
|
<button mat-stroked-button [matMenuTriggerFor]="toolbarTplMenu" type="button" style="margin-left:8px">
|
|
19509
19577
|
<mat-icon [praxisIcon]="'bolt'"></mat-icon>
|
|
@@ -19512,7 +19580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19512
19580
|
<mat-menu #toolbarTplMenu="matMenu">
|
|
19513
19581
|
<button mat-menu-item [matMenuTriggerFor]="toolbarCrudTpl">
|
|
19514
19582
|
<mat-icon [praxisIcon]="'add_circle'"></mat-icon>
|
|
19515
|
-
<span>CRUD:
|
|
19583
|
+
<span>CRUD: botão Adicionar</span>
|
|
19516
19584
|
</button>
|
|
19517
19585
|
</mat-menu>
|
|
19518
19586
|
<mat-menu #toolbarCrudTpl="matMenu">
|
|
@@ -19535,7 +19603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19535
19603
|
<mat-icon class="drag-handle" [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
19536
19604
|
<mat-icon [praxisIcon]="action.icon"></mat-icon>
|
|
19537
19605
|
<span class="action-label">{{
|
|
19538
|
-
action.label || 'Nova
|
|
19606
|
+
action.label || 'Nova Ação'
|
|
19539
19607
|
}}</span>
|
|
19540
19608
|
<div class="action-controls">
|
|
19541
19609
|
<button
|
|
@@ -19561,7 +19629,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19561
19629
|
>
|
|
19562
19630
|
<div class="action-form">
|
|
19563
19631
|
<mat-form-field appearance="outline">
|
|
19564
|
-
<mat-label>ID da
|
|
19632
|
+
<mat-label>ID da ação</mat-label>
|
|
19565
19633
|
<input
|
|
19566
19634
|
matInput
|
|
19567
19635
|
[(ngModel)]="action.id"
|
|
@@ -19581,7 +19649,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19581
19649
|
</mat-form-field>
|
|
19582
19650
|
|
|
19583
19651
|
<mat-form-field appearance="outline">
|
|
19584
|
-
<mat-label
|
|
19652
|
+
<mat-label>Ãcone</mat-label>
|
|
19585
19653
|
@if (action.icon) { <span matPrefix>
|
|
19586
19654
|
<mat-icon aria-hidden="true" [praxisIcon]="action.icon"></mat-icon>
|
|
19587
19655
|
</span> }
|
|
@@ -19601,7 +19669,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19601
19669
|
>
|
|
19602
19670
|
<mat-icon>help_outline</mat-icon>
|
|
19603
19671
|
</button>
|
|
19604
|
-
<button mat-icon-button matSuffix type="button" (click)="pickActionIcon(i)" matTooltip="Escolher
|
|
19672
|
+
<button mat-icon-button matSuffix type="button" (click)="pickActionIcon(i)" matTooltip="Escolher Ãcone">
|
|
19605
19673
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
19606
19674
|
</button>
|
|
19607
19675
|
@if (action.icon) { <button mat-icon-button matSuffix type="button" (click)="action.icon=''; updateToolbarActions()" matTooltip="Limpar">
|
|
@@ -19616,7 +19684,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19616
19684
|
(ngModelChange)="updateToolbarActions()"
|
|
19617
19685
|
[ngModelOptions]="{ standalone: true }"
|
|
19618
19686
|
>
|
|
19619
|
-
<mat-option value="button">
|
|
19687
|
+
<mat-option value="button">Botão</mat-option>
|
|
19620
19688
|
<mat-option value="menu">Menu</mat-option>
|
|
19621
19689
|
<mat-option value="toggle">Toggle</mat-option>
|
|
19622
19690
|
<mat-option value="input">Input</mat-option>
|
|
@@ -19624,7 +19692,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19624
19692
|
</mat-form-field>
|
|
19625
19693
|
|
|
19626
19694
|
@if (action.type === 'button') { <mat-form-field appearance="outline">
|
|
19627
|
-
<mat-label>
|
|
19695
|
+
<mat-label>Aparência</mat-label>
|
|
19628
19696
|
<mat-select
|
|
19629
19697
|
[(ngModel)]="action.appearance"
|
|
19630
19698
|
(ngModelChange)="updateToolbarActions()"
|
|
@@ -19641,14 +19709,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19641
19709
|
matSuffix
|
|
19642
19710
|
type="button"
|
|
19643
19711
|
class="help-icon-button"
|
|
19644
|
-
matTooltip="
|
|
19712
|
+
matTooltip="CompatÃvel com Angular Material: filled/raised/stroked/text; tonal usa estilo custom."
|
|
19645
19713
|
>
|
|
19646
19714
|
<mat-icon>help_outline</mat-icon>
|
|
19647
19715
|
</button>
|
|
19648
19716
|
</mat-form-field> }
|
|
19649
19717
|
|
|
19650
19718
|
<mat-form-field appearance="outline">
|
|
19651
|
-
<mat-label>
|
|
19719
|
+
<mat-label>Ação</mat-label>
|
|
19652
19720
|
<mat-select
|
|
19653
19721
|
[ngModel]="getActionSelectValue(action.action)"
|
|
19654
19722
|
(ngModelChange)="onActionSelectChange(action, $event, 'toolbar')"
|
|
@@ -19657,12 +19725,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19657
19725
|
<mat-option [value]="customActionValue">Customizada</mat-option>
|
|
19658
19726
|
<mat-optgroup label="Acoes internas">
|
|
19659
19727
|
@for (spec of internalActionCatalog; track spec.id) {
|
|
19660
|
-
<mat-option [value]="spec.id">{{ spec
|
|
19728
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
19661
19729
|
}
|
|
19662
19730
|
</mat-optgroup>
|
|
19663
19731
|
<mat-optgroup label="Acoes globais">
|
|
19664
19732
|
@for (spec of globalActionCatalog; track spec.id) {
|
|
19665
|
-
<mat-option [value]="spec.id">{{ spec
|
|
19733
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
19666
19734
|
}
|
|
19667
19735
|
</mat-optgroup>
|
|
19668
19736
|
</mat-select>
|
|
@@ -19671,7 +19739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19671
19739
|
matSuffix
|
|
19672
19740
|
type="button"
|
|
19673
19741
|
class="help-icon-button"
|
|
19674
|
-
matTooltip="
|
|
19742
|
+
matTooltip="Ações internas disparam eventos do componente. Ações globais precisam de executor no app (ActionResolver). Cor/posição afetam o botão."
|
|
19675
19743
|
>
|
|
19676
19744
|
<mat-icon>help_outline</mat-icon>
|
|
19677
19745
|
</button>
|
|
@@ -19679,7 +19747,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19679
19747
|
|
|
19680
19748
|
@if (getActionSelectValue(action.action) === customActionValue) {
|
|
19681
19749
|
<mat-form-field appearance="outline">
|
|
19682
|
-
<mat-label>
|
|
19750
|
+
<mat-label>Ação customizada</mat-label>
|
|
19683
19751
|
<input
|
|
19684
19752
|
matInput
|
|
19685
19753
|
[ngModel]="getActionCustomValue(action.action)"
|
|
@@ -19692,7 +19760,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19692
19760
|
matSuffix
|
|
19693
19761
|
type="button"
|
|
19694
19762
|
class="help-icon-button"
|
|
19695
|
-
matTooltip="Informe o ID da
|
|
19763
|
+
matTooltip="Informe o ID da ação a ser emitida."
|
|
19696
19764
|
>
|
|
19697
19765
|
<mat-icon>help_outline</mat-icon>
|
|
19698
19766
|
</button>
|
|
@@ -19707,7 +19775,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19707
19775
|
@if (getActionSpecById(getActionSelectValue(action.action)); as actionSpec) {
|
|
19708
19776
|
@if (actionSpec.param) {
|
|
19709
19777
|
<mat-form-field appearance="outline">
|
|
19710
|
-
<mat-label>{{ actionSpec.param.label || '
|
|
19778
|
+
<mat-label>{{ actionSpec.param.label || 'Parâmetro' }}</mat-label>
|
|
19711
19779
|
<input
|
|
19712
19780
|
matInput
|
|
19713
19781
|
[ngModel]="getActionParam(action.action)"
|
|
@@ -19720,7 +19788,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19720
19788
|
matSuffix
|
|
19721
19789
|
type="button"
|
|
19722
19790
|
class="help-icon-button"
|
|
19723
|
-
[matTooltip]="actionSpec
|
|
19791
|
+
[matTooltip]="getGlobalActionSpecHint(actionSpec)"
|
|
19724
19792
|
>
|
|
19725
19793
|
<mat-icon>help_outline</mat-icon>
|
|
19726
19794
|
</button>
|
|
@@ -19734,13 +19802,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19734
19802
|
}
|
|
19735
19803
|
|
|
19736
19804
|
<mat-form-field appearance="outline">
|
|
19737
|
-
<mat-label>
|
|
19805
|
+
<mat-label>Posição do botão</mat-label>
|
|
19738
19806
|
<mat-select
|
|
19739
19807
|
[(ngModel)]="action.position"
|
|
19740
19808
|
(ngModelChange)="updateToolbarActions()"
|
|
19741
19809
|
[ngModelOptions]="{ standalone: true }"
|
|
19742
19810
|
>
|
|
19743
|
-
<mat-option value="start">
|
|
19811
|
+
<mat-option value="start">InÃcio</mat-option>
|
|
19744
19812
|
<mat-option value="end">Fim</mat-option>
|
|
19745
19813
|
</mat-select>
|
|
19746
19814
|
<button
|
|
@@ -19748,20 +19816,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19748
19816
|
matSuffix
|
|
19749
19817
|
type="button"
|
|
19750
19818
|
class="help-icon-button"
|
|
19751
|
-
matTooltip="
|
|
19819
|
+
matTooltip="Posição do botão na toolbar (inÃcio/fim)."
|
|
19752
19820
|
>
|
|
19753
19821
|
<mat-icon>help_outline</mat-icon>
|
|
19754
19822
|
</button>
|
|
19755
19823
|
</mat-form-field>
|
|
19756
19824
|
|
|
19757
19825
|
<mat-form-field appearance="outline">
|
|
19758
|
-
<mat-label>Cor do
|
|
19826
|
+
<mat-label>Cor do botão</mat-label>
|
|
19759
19827
|
<mat-select
|
|
19760
19828
|
[(ngModel)]="action.color"
|
|
19761
19829
|
(ngModelChange)="updateToolbarActions()"
|
|
19762
19830
|
[ngModelOptions]="{ standalone: true }"
|
|
19763
19831
|
>
|
|
19764
|
-
<mat-option value="">
|
|
19832
|
+
<mat-option value="">Padrão</mat-option>
|
|
19765
19833
|
<mat-option value="primary">Primary</mat-option>
|
|
19766
19834
|
<mat-option value="accent">Accent</mat-option>
|
|
19767
19835
|
<mat-option value="warn">Warn</mat-option>
|
|
@@ -19771,7 +19839,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19771
19839
|
matSuffix
|
|
19772
19840
|
type="button"
|
|
19773
19841
|
class="help-icon-button"
|
|
19774
|
-
matTooltip="Cor do
|
|
19842
|
+
matTooltip="Cor do botão (não altera o alerta)."
|
|
19775
19843
|
>
|
|
19776
19844
|
<mat-icon>help_outline</mat-icon>
|
|
19777
19845
|
</button>
|
|
@@ -19803,7 +19871,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19803
19871
|
matSuffix
|
|
19804
19872
|
type="button"
|
|
19805
19873
|
class="help-icon-button"
|
|
19806
|
-
matTooltip="Define se o atalho vale
|
|
19874
|
+
matTooltip="Define se o atalho vale só para a toolbar em foco ou globalmente."
|
|
19807
19875
|
>
|
|
19808
19876
|
<mat-icon>help_outline</mat-icon>
|
|
19809
19877
|
</button>
|
|
@@ -19825,15 +19893,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19825
19893
|
</div>
|
|
19826
19894
|
</mat-expansion-panel>
|
|
19827
19895
|
|
|
19828
|
-
<!--
|
|
19896
|
+
<!-- Ações por Linha -->
|
|
19829
19897
|
<mat-expansion-panel>
|
|
19830
19898
|
<mat-expansion-panel-header>
|
|
19831
19899
|
<mat-panel-title>
|
|
19832
19900
|
<mat-icon class="section-icon" [praxisIcon]="'more_vert'"></mat-icon>
|
|
19833
|
-
|
|
19901
|
+
Ações por Linha
|
|
19834
19902
|
</mat-panel-title>
|
|
19835
19903
|
<mat-panel-description>
|
|
19836
|
-
|
|
19904
|
+
Ações especÃficas para cada registro
|
|
19837
19905
|
</mat-panel-description>
|
|
19838
19906
|
</mat-expansion-panel-header>
|
|
19839
19907
|
|
|
@@ -19842,19 +19910,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19842
19910
|
formControlName="rowActionsEnabled"
|
|
19843
19911
|
class="toggle-field"
|
|
19844
19912
|
>
|
|
19845
|
-
Habilitar
|
|
19913
|
+
Habilitar ações por linha
|
|
19846
19914
|
</mat-slide-toggle>
|
|
19847
19915
|
|
|
19848
19916
|
@if (toolbarForm.get('rowActionsEnabled')?.value) { <div
|
|
19849
19917
|
class="config-fields"
|
|
19850
19918
|
>
|
|
19851
19919
|
<mat-form-field appearance="outline">
|
|
19852
|
-
<mat-label>Modo de
|
|
19920
|
+
<mat-label>Modo de exibição</mat-label>
|
|
19853
19921
|
<mat-select formControlName="rowActionsDisplay">
|
|
19854
19922
|
<mat-option value="menu">Menu suspenso</mat-option>
|
|
19855
|
-
<mat-option value="buttons">
|
|
19923
|
+
<mat-option value="buttons">Botões individuais</mat-option>
|
|
19856
19924
|
<mat-option value="hybrid"
|
|
19857
|
-
>
|
|
19925
|
+
>HÃbrido (botões + menu)</mat-option
|
|
19858
19926
|
>
|
|
19859
19927
|
</mat-select>
|
|
19860
19928
|
</mat-form-field>
|
|
@@ -19862,14 +19930,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19862
19930
|
<mat-form-field appearance="outline">
|
|
19863
19931
|
<mat-label>Quando mostrar</mat-label>
|
|
19864
19932
|
<mat-select formControlName="rowActionsTrigger">
|
|
19865
|
-
<mat-option value="always">Sempre
|
|
19933
|
+
<mat-option value="always">Sempre visÃvel</mat-option>
|
|
19866
19934
|
<mat-option value="hover">Apenas no hover</mat-option>
|
|
19867
19935
|
<mat-option value="focus">Apenas com foco</mat-option>
|
|
19868
19936
|
</mat-select>
|
|
19869
19937
|
</mat-form-field>
|
|
19870
19938
|
|
|
19871
19939
|
<mat-form-field appearance="outline">
|
|
19872
|
-
<mat-label>
|
|
19940
|
+
<mat-label>Máximo de ações visÃveis</mat-label>
|
|
19873
19941
|
<input
|
|
19874
19942
|
matInput
|
|
19875
19943
|
type="number"
|
|
@@ -19882,31 +19950,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19882
19950
|
matSuffix
|
|
19883
19951
|
type="button"
|
|
19884
19952
|
class="help-icon-button"
|
|
19885
|
-
matTooltip="Demais
|
|
19953
|
+
matTooltip="Demais ações ficam no menu “Maisâ€."
|
|
19886
19954
|
>
|
|
19887
19955
|
<mat-icon>help_outline</mat-icon>
|
|
19888
19956
|
</button>
|
|
19889
19957
|
</mat-form-field>
|
|
19890
19958
|
|
|
19891
19959
|
<mat-form-field appearance="outline">
|
|
19892
|
-
<mat-label>Largura da coluna de
|
|
19960
|
+
<mat-label>Largura da coluna de ações</mat-label>
|
|
19893
19961
|
<input matInput formControlName="rowActionsWidth" placeholder="ex.: 96px, 6rem" />
|
|
19894
19962
|
<button
|
|
19895
19963
|
mat-icon-button
|
|
19896
19964
|
matSuffix
|
|
19897
19965
|
type="button"
|
|
19898
19966
|
class="help-icon-button"
|
|
19899
|
-
matTooltip="Aplica no header e nas
|
|
19967
|
+
matTooltip="Aplica no header e nas células."
|
|
19900
19968
|
>
|
|
19901
19969
|
<mat-icon>help_outline</mat-icon>
|
|
19902
19970
|
</button>
|
|
19903
19971
|
</mat-form-field>
|
|
19904
19972
|
|
|
19905
19973
|
<mat-form-field appearance="outline">
|
|
19906
|
-
<mat-label>Fixar coluna de
|
|
19974
|
+
<mat-label>Fixar coluna de ações</mat-label>
|
|
19907
19975
|
<mat-select formControlName="rowActionsSticky">
|
|
19908
19976
|
<mat-option [value]="null">Nenhum</mat-option>
|
|
19909
|
-
<mat-option value="start">
|
|
19977
|
+
<mat-option value="start">InÃcio</mat-option>
|
|
19910
19978
|
<mat-option value="end">Fim</mat-option>
|
|
19911
19979
|
</mat-select>
|
|
19912
19980
|
<button
|
|
@@ -19914,19 +19982,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19914
19982
|
matSuffix
|
|
19915
19983
|
type="button"
|
|
19916
19984
|
class="help-icon-button"
|
|
19917
|
-
matTooltip="Fixar coluna de
|
|
19985
|
+
matTooltip="Fixar coluna de ações (inÃcio/fim)."
|
|
19918
19986
|
>
|
|
19919
19987
|
<mat-icon>help_outline</mat-icon>
|
|
19920
19988
|
</button>
|
|
19921
19989
|
</mat-form-field>
|
|
19922
19990
|
|
|
19923
19991
|
<mat-form-field appearance="outline">
|
|
19924
|
-
<mat-label
|
|
19992
|
+
<mat-label>Ãcone do menu (três pontos)</mat-label>
|
|
19925
19993
|
@if (toolbarForm.value.rowActionsMenuIcon) { <span matPrefix>
|
|
19926
19994
|
<mat-icon aria-hidden="true" [praxisIcon]="toolbarForm.value.rowActionsMenuIcon"></mat-icon>
|
|
19927
19995
|
</span> }
|
|
19928
19996
|
<input matInput formControlName="rowActionsMenuIcon" placeholder="ex.: more_vert, more_horiz" />
|
|
19929
|
-
<button mat-icon-button matSuffix type="button" (click)="pickRowMenuIcon()" matTooltip="Escolher
|
|
19997
|
+
<button mat-icon-button matSuffix type="button" (click)="pickRowMenuIcon()" matTooltip="Escolher Ãcone">
|
|
19930
19998
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
19931
19999
|
</button>
|
|
19932
20000
|
@if (toolbarForm.value.rowActionsMenuIcon) { <button mat-icon-button matSuffix type="button" (click)="toolbarForm.get('rowActionsMenuIcon')?.setValue('')" matTooltip="Limpar">
|
|
@@ -19935,9 +20003,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19935
20003
|
</mat-form-field>
|
|
19936
20004
|
|
|
19937
20005
|
<mat-form-field appearance="outline">
|
|
19938
|
-
<mat-label>Cor do
|
|
20006
|
+
<mat-label>Cor do botão do menu</mat-label>
|
|
19939
20007
|
<mat-select formControlName="rowActionsMenuButtonColor">
|
|
19940
|
-
<mat-option value="basic">
|
|
20008
|
+
<mat-option value="basic">Padrão</mat-option>
|
|
19941
20009
|
<mat-option value="primary">Primary</mat-option>
|
|
19942
20010
|
<mat-option value="accent">Accent</mat-option>
|
|
19943
20011
|
<mat-option value="warn">Warn</mat-option>
|
|
@@ -19945,20 +20013,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19945
20013
|
</mat-form-field>
|
|
19946
20014
|
|
|
19947
20015
|
<div class="subsection" style="grid-column: 1 / -1;">
|
|
19948
|
-
<h4>
|
|
20016
|
+
<h4> Cabeçalho da coluna de ações </h4>
|
|
19949
20017
|
<div class="action-form">
|
|
19950
20018
|
<mat-form-field appearance="outline">
|
|
19951
20019
|
<mat-label>Label</mat-label>
|
|
19952
|
-
<input matInput formControlName="rowActionsHeaderLabel" placeholder="Ex.:
|
|
20020
|
+
<input matInput formControlName="rowActionsHeaderLabel" placeholder="Ex.: Ações" />
|
|
19953
20021
|
</mat-form-field>
|
|
19954
20022
|
|
|
19955
20023
|
<mat-form-field appearance="outline">
|
|
19956
|
-
<mat-label
|
|
20024
|
+
<mat-label>Ãcone</mat-label>
|
|
19957
20025
|
@if (toolbarForm.value.rowActionsHeaderIcon) { <span matPrefix>
|
|
19958
20026
|
<mat-icon aria-hidden="true" [praxisIcon]="toolbarForm.value.rowActionsHeaderIcon"></mat-icon>
|
|
19959
20027
|
</span> }
|
|
19960
20028
|
<input matInput formControlName="rowActionsHeaderIcon" placeholder="ex.: more_horiz, build" />
|
|
19961
|
-
<button mat-icon-button matSuffix type="button" (click)="pickRowHeaderIcon()" matTooltip="Escolher
|
|
20029
|
+
<button mat-icon-button matSuffix type="button" (click)="pickRowHeaderIcon()" matTooltip="Escolher Ãcone">
|
|
19962
20030
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
19963
20031
|
</button>
|
|
19964
20032
|
@if (toolbarForm.value.rowActionsHeaderIcon) { <button mat-icon-button matSuffix type="button" (click)="toolbarForm.get('rowActionsHeaderIcon')?.setValue('')" matTooltip="Limpar">
|
|
@@ -19968,13 +20036,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19968
20036
|
|
|
19969
20037
|
<mat-form-field appearance="outline">
|
|
19970
20038
|
<mat-label>Tooltip</mat-label>
|
|
19971
|
-
<input matInput formControlName="rowActionsHeaderTooltip" placeholder="Ex.:
|
|
20039
|
+
<input matInput formControlName="rowActionsHeaderTooltip" placeholder="Ex.: Ações disponÃveis" />
|
|
19972
20040
|
</mat-form-field>
|
|
19973
20041
|
|
|
19974
20042
|
<mat-form-field appearance="outline">
|
|
19975
20043
|
<mat-label>Alinhamento</mat-label>
|
|
19976
20044
|
<mat-select formControlName="rowActionsHeaderAlign">
|
|
19977
|
-
<mat-option value="start">
|
|
20045
|
+
<mat-option value="start">InÃcio</mat-option>
|
|
19978
20046
|
<mat-option value="center">Centro</mat-option>
|
|
19979
20047
|
<mat-option value="end">Fim</mat-option>
|
|
19980
20048
|
</mat-select>
|
|
@@ -19990,7 +20058,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19990
20058
|
type="button"
|
|
19991
20059
|
>
|
|
19992
20060
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
19993
|
-
Adicionar
|
|
20061
|
+
Adicionar Ação de Linha
|
|
19994
20062
|
</button>
|
|
19995
20063
|
<button mat-stroked-button [matMenuTriggerFor]="rowTplMenu" type="button" style="margin-left:8px">
|
|
19996
20064
|
<mat-icon [praxisIcon]="'bolt'"></mat-icon>
|
|
@@ -19999,7 +20067,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
19999
20067
|
<mat-menu #rowTplMenu="matMenu">
|
|
20000
20068
|
<button mat-menu-item [matMenuTriggerFor]="rowCrudTpl">
|
|
20001
20069
|
<mat-icon [praxisIcon]="'list'"></mat-icon>
|
|
20002
|
-
<span>CRUD
|
|
20070
|
+
<span>CRUD padrão (ver/editar/excluir)</span>
|
|
20003
20071
|
</button>
|
|
20004
20072
|
<button mat-menu-item [matMenuTriggerFor]="rowEditDeleteTpl">
|
|
20005
20073
|
<mat-icon [praxisIcon]="'edit'"></mat-icon>
|
|
@@ -20046,7 +20114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20046
20114
|
<mat-icon class="drag-handle" [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
20047
20115
|
<mat-icon [praxisIcon]="action.icon"></mat-icon>
|
|
20048
20116
|
<span class="action-label">{{
|
|
20049
|
-
action.label || 'Nova
|
|
20117
|
+
action.label || 'Nova Ação'
|
|
20050
20118
|
}}</span>
|
|
20051
20119
|
<div class="action-controls">
|
|
20052
20120
|
<button
|
|
@@ -20073,7 +20141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20073
20141
|
>
|
|
20074
20142
|
<div class="action-form">
|
|
20075
20143
|
<mat-form-field appearance="outline">
|
|
20076
|
-
<mat-label>ID da
|
|
20144
|
+
<mat-label>ID da ação</mat-label>
|
|
20077
20145
|
<input
|
|
20078
20146
|
matInput
|
|
20079
20147
|
[(ngModel)]="action.id"
|
|
@@ -20093,7 +20161,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20093
20161
|
</mat-form-field>
|
|
20094
20162
|
|
|
20095
20163
|
<mat-form-field appearance="outline">
|
|
20096
|
-
<mat-label
|
|
20164
|
+
<mat-label>Ãcone</mat-label>
|
|
20097
20165
|
@if (action.icon) { <span matPrefix>
|
|
20098
20166
|
<mat-icon aria-hidden="true" [praxisIcon]="action.icon"></mat-icon>
|
|
20099
20167
|
</span> }
|
|
@@ -20113,7 +20181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20113
20181
|
>
|
|
20114
20182
|
<mat-icon>help_outline</mat-icon>
|
|
20115
20183
|
</button>
|
|
20116
|
-
<button mat-icon-button matSuffix type="button" (click)="pickRowActionIcon(i)" matTooltip="Escolher
|
|
20184
|
+
<button mat-icon-button matSuffix type="button" (click)="pickRowActionIcon(i)" matTooltip="Escolher Ãcone">
|
|
20117
20185
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
20118
20186
|
</button>
|
|
20119
20187
|
@if (action.icon) { <button mat-icon-button matSuffix type="button" (click)="action.icon=''; updateRowActions()" matTooltip="Limpar">
|
|
@@ -20122,7 +20190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20122
20190
|
</mat-form-field>
|
|
20123
20191
|
|
|
20124
20192
|
<mat-form-field appearance="outline">
|
|
20125
|
-
<mat-label>
|
|
20193
|
+
<mat-label>Ação</mat-label>
|
|
20126
20194
|
<mat-select
|
|
20127
20195
|
[ngModel]="getActionSelectValue(action.action)"
|
|
20128
20196
|
(ngModelChange)="onActionSelectChange(action, $event, 'row')"
|
|
@@ -20131,12 +20199,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20131
20199
|
<mat-option [value]="customActionValue">Customizada</mat-option>
|
|
20132
20200
|
<mat-optgroup label="Acoes internas">
|
|
20133
20201
|
@for (spec of internalActionCatalog; track spec.id) {
|
|
20134
|
-
<mat-option [value]="spec.id">{{ spec
|
|
20202
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
20135
20203
|
}
|
|
20136
20204
|
</mat-optgroup>
|
|
20137
20205
|
<mat-optgroup label="Acoes globais">
|
|
20138
20206
|
@for (spec of globalActionCatalog; track spec.id) {
|
|
20139
|
-
<mat-option [value]="spec.id">{{ spec
|
|
20207
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
20140
20208
|
}
|
|
20141
20209
|
</mat-optgroup>
|
|
20142
20210
|
</mat-select>
|
|
@@ -20145,7 +20213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20145
20213
|
matSuffix
|
|
20146
20214
|
type="button"
|
|
20147
20215
|
class="help-icon-button"
|
|
20148
|
-
matTooltip="
|
|
20216
|
+
matTooltip="Ações internas disparam eventos da tabela. Ações globais precisam do ActionResolver no app."
|
|
20149
20217
|
>
|
|
20150
20218
|
<mat-icon>help_outline</mat-icon>
|
|
20151
20219
|
</button>
|
|
@@ -20153,7 +20221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20153
20221
|
|
|
20154
20222
|
@if (getActionSelectValue(action.action) === customActionValue) {
|
|
20155
20223
|
<mat-form-field appearance="outline">
|
|
20156
|
-
<mat-label>
|
|
20224
|
+
<mat-label>Ação customizada</mat-label>
|
|
20157
20225
|
<input
|
|
20158
20226
|
matInput
|
|
20159
20227
|
[ngModel]="getActionCustomValue(action.action)"
|
|
@@ -20172,7 +20240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20172
20240
|
@if (getActionSpecById(getActionSelectValue(action.action)); as actionSpec) {
|
|
20173
20241
|
@if (actionSpec.param) {
|
|
20174
20242
|
<mat-form-field appearance="outline">
|
|
20175
|
-
<mat-label>{{ actionSpec.param.label || '
|
|
20243
|
+
<mat-label>{{ actionSpec.param.label || 'Parâmetro' }}</mat-label>
|
|
20176
20244
|
<input
|
|
20177
20245
|
matInput
|
|
20178
20246
|
[ngModel]="getActionParam(action.action)"
|
|
@@ -20185,7 +20253,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20185
20253
|
matSuffix
|
|
20186
20254
|
type="button"
|
|
20187
20255
|
class="help-icon-button"
|
|
20188
|
-
[matTooltip]="actionSpec
|
|
20256
|
+
[matTooltip]="getGlobalActionSpecHint(actionSpec)"
|
|
20189
20257
|
>
|
|
20190
20258
|
<mat-icon>help_outline</mat-icon>
|
|
20191
20259
|
</button>
|
|
@@ -20199,13 +20267,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20199
20267
|
}
|
|
20200
20268
|
|
|
20201
20269
|
<mat-form-field appearance="outline">
|
|
20202
|
-
<mat-label>Cor do
|
|
20270
|
+
<mat-label>Cor do botão</mat-label>
|
|
20203
20271
|
<mat-select
|
|
20204
20272
|
[(ngModel)]="action.color"
|
|
20205
20273
|
(ngModelChange)="updateRowActions()"
|
|
20206
20274
|
[ngModelOptions]="{ standalone: true }"
|
|
20207
20275
|
>
|
|
20208
|
-
<mat-option value="">
|
|
20276
|
+
<mat-option value="">Padrão</mat-option>
|
|
20209
20277
|
<mat-option value="primary">Primary</mat-option>
|
|
20210
20278
|
<mat-option value="accent">Accent</mat-option>
|
|
20211
20279
|
<mat-option value="warn">Warn</mat-option>
|
|
@@ -20228,7 +20296,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20228
20296
|
[ngModelOptions]="{ standalone: true }"
|
|
20229
20297
|
class="toggle-field"
|
|
20230
20298
|
>
|
|
20231
|
-
Requer
|
|
20299
|
+
Requer confirmação
|
|
20232
20300
|
</mat-slide-toggle>
|
|
20233
20301
|
|
|
20234
20302
|
@if (action.action === 'delete') { <mat-slide-toggle
|
|
@@ -20246,7 +20314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20246
20314
|
[ngModelOptions]="{ standalone: true }"
|
|
20247
20315
|
class="toggle-field"
|
|
20248
20316
|
>
|
|
20249
|
-
Separador
|
|
20317
|
+
Separador após esta ação
|
|
20250
20318
|
</mat-slide-toggle>
|
|
20251
20319
|
</div>
|
|
20252
20320
|
</div>
|
|
@@ -20256,15 +20324,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20256
20324
|
</div>
|
|
20257
20325
|
</mat-expansion-panel>
|
|
20258
20326
|
|
|
20259
|
-
<!--
|
|
20327
|
+
<!-- Ações em Lote -->
|
|
20260
20328
|
@if (isV2) { <mat-expansion-panel>
|
|
20261
20329
|
<mat-expansion-panel-header>
|
|
20262
20330
|
<mat-panel-title>
|
|
20263
20331
|
<mat-icon class="section-icon" [praxisIcon]="'select_all'"></mat-icon>
|
|
20264
|
-
|
|
20332
|
+
Ações em Lote
|
|
20265
20333
|
</mat-panel-title>
|
|
20266
20334
|
<mat-panel-description>
|
|
20267
|
-
|
|
20335
|
+
Ações para múltiplas seleções (V2 only)
|
|
20268
20336
|
</mat-panel-description>
|
|
20269
20337
|
</mat-expansion-panel-header>
|
|
20270
20338
|
|
|
@@ -20273,14 +20341,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20273
20341
|
formControlName="bulkActionsEnabled"
|
|
20274
20342
|
class="toggle-field"
|
|
20275
20343
|
>
|
|
20276
|
-
Habilitar
|
|
20344
|
+
Habilitar ações em lote
|
|
20277
20345
|
</mat-slide-toggle>
|
|
20278
20346
|
|
|
20279
20347
|
@if (toolbarForm.get('bulkActionsEnabled')?.value) { <div
|
|
20280
20348
|
class="config-fields"
|
|
20281
20349
|
>
|
|
20282
20350
|
<mat-form-field appearance="outline">
|
|
20283
|
-
<mat-label>
|
|
20351
|
+
<mat-label>Posição das ações em lote</mat-label>
|
|
20284
20352
|
<mat-select formControlName="bulkActionsPosition">
|
|
20285
20353
|
<mat-option value="toolbar"
|
|
20286
20354
|
>Na barra de ferramentas</mat-option
|
|
@@ -20298,7 +20366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20298
20366
|
type="button"
|
|
20299
20367
|
>
|
|
20300
20368
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
20301
|
-
Adicionar
|
|
20369
|
+
Adicionar Ação em Lote
|
|
20302
20370
|
</button>
|
|
20303
20371
|
</div>
|
|
20304
20372
|
|
|
@@ -20316,7 +20384,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20316
20384
|
<mat-icon class="drag-handle">drag_indicator</mat-icon>
|
|
20317
20385
|
<mat-icon>{{ action.icon }}</mat-icon>
|
|
20318
20386
|
<span class="action-label">{{
|
|
20319
|
-
action.label || 'Nova
|
|
20387
|
+
action.label || 'Nova Ação'
|
|
20320
20388
|
}}</span>
|
|
20321
20389
|
<div class="action-controls">
|
|
20322
20390
|
<button
|
|
@@ -20343,7 +20411,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20343
20411
|
>
|
|
20344
20412
|
<div class="action-form">
|
|
20345
20413
|
<mat-form-field appearance="outline">
|
|
20346
|
-
<mat-label>ID da
|
|
20414
|
+
<mat-label>ID da ação</mat-label>
|
|
20347
20415
|
<input
|
|
20348
20416
|
matInput
|
|
20349
20417
|
[(ngModel)]="action.id"
|
|
@@ -20363,7 +20431,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20363
20431
|
</mat-form-field>
|
|
20364
20432
|
|
|
20365
20433
|
<mat-form-field appearance="outline">
|
|
20366
|
-
<mat-label
|
|
20434
|
+
<mat-label>Ãcone</mat-label>
|
|
20367
20435
|
<span matPrefix *ngIf="action.icon">
|
|
20368
20436
|
<mat-icon aria-hidden="true">{{ action.icon }}</mat-icon>
|
|
20369
20437
|
</span>
|
|
@@ -20383,7 +20451,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20383
20451
|
>
|
|
20384
20452
|
<mat-icon>help_outline</mat-icon>
|
|
20385
20453
|
</button>
|
|
20386
|
-
<button mat-icon-button matSuffix type="button" (click)="pickBulkActionIcon(i)" matTooltip="Escolher
|
|
20454
|
+
<button mat-icon-button matSuffix type="button" (click)="pickBulkActionIcon(i)" matTooltip="Escolher Ãcone">
|
|
20387
20455
|
<mat-icon>search</mat-icon>
|
|
20388
20456
|
</button>
|
|
20389
20457
|
<button mat-icon-button matSuffix type="button" (click)="action.icon=''; updateBulkActions()" matTooltip="Limpar" *ngIf="action.icon">
|
|
@@ -20392,7 +20460,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20392
20460
|
</mat-form-field>
|
|
20393
20461
|
|
|
20394
20462
|
<mat-form-field appearance="outline">
|
|
20395
|
-
<mat-label>
|
|
20463
|
+
<mat-label>Ação</mat-label>
|
|
20396
20464
|
<mat-select
|
|
20397
20465
|
[ngModel]="getActionSelectValue(action.action)"
|
|
20398
20466
|
(ngModelChange)="onActionSelectChange(action, $event, 'bulk')"
|
|
@@ -20401,12 +20469,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20401
20469
|
<mat-option [value]="customActionValue">Customizada</mat-option>
|
|
20402
20470
|
<mat-optgroup label="Acoes internas">
|
|
20403
20471
|
@for (spec of internalActionCatalog; track spec.id) {
|
|
20404
|
-
<mat-option [value]="spec.id">{{ spec
|
|
20472
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
20405
20473
|
}
|
|
20406
20474
|
</mat-optgroup>
|
|
20407
20475
|
<mat-optgroup label="Acoes globais">
|
|
20408
20476
|
@for (spec of globalActionCatalog; track spec.id) {
|
|
20409
|
-
<mat-option [value]="spec.id">{{ spec
|
|
20477
|
+
<mat-option [value]="spec.id">{{ getGlobalActionSpecLabel(spec) }}</mat-option>
|
|
20410
20478
|
}
|
|
20411
20479
|
</mat-optgroup>
|
|
20412
20480
|
</mat-select>
|
|
@@ -20415,7 +20483,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20415
20483
|
matSuffix
|
|
20416
20484
|
type="button"
|
|
20417
20485
|
class="help-icon-button"
|
|
20418
|
-
matTooltip="
|
|
20486
|
+
matTooltip="Ações internas disparam eventos da tabela. Ações globais precisam do ActionResolver no app."
|
|
20419
20487
|
>
|
|
20420
20488
|
<mat-icon>help_outline</mat-icon>
|
|
20421
20489
|
</button>
|
|
@@ -20423,7 +20491,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20423
20491
|
|
|
20424
20492
|
@if (getActionSelectValue(action.action) === customActionValue) {
|
|
20425
20493
|
<mat-form-field appearance="outline">
|
|
20426
|
-
<mat-label>
|
|
20494
|
+
<mat-label>Ação customizada</mat-label>
|
|
20427
20495
|
<input
|
|
20428
20496
|
matInput
|
|
20429
20497
|
[ngModel]="getActionCustomValue(action.action)"
|
|
@@ -20442,7 +20510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20442
20510
|
@if (getActionSpecById(getActionSelectValue(action.action)); as actionSpec) {
|
|
20443
20511
|
@if (actionSpec.param) {
|
|
20444
20512
|
<mat-form-field appearance="outline">
|
|
20445
|
-
<mat-label>{{ actionSpec.param.label || '
|
|
20513
|
+
<mat-label>{{ actionSpec.param.label || 'Parâmetro' }}</mat-label>
|
|
20446
20514
|
<input
|
|
20447
20515
|
matInput
|
|
20448
20516
|
[ngModel]="getActionParam(action.action)"
|
|
@@ -20455,7 +20523,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20455
20523
|
matSuffix
|
|
20456
20524
|
type="button"
|
|
20457
20525
|
class="help-icon-button"
|
|
20458
|
-
[matTooltip]="actionSpec
|
|
20526
|
+
[matTooltip]="getGlobalActionSpecHint(actionSpec)"
|
|
20459
20527
|
>
|
|
20460
20528
|
<mat-icon>help_outline</mat-icon>
|
|
20461
20529
|
</button>
|
|
@@ -20469,13 +20537,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20469
20537
|
}
|
|
20470
20538
|
|
|
20471
20539
|
<mat-form-field appearance="outline">
|
|
20472
|
-
<mat-label>Cor do
|
|
20540
|
+
<mat-label>Cor do botão</mat-label>
|
|
20473
20541
|
<mat-select
|
|
20474
20542
|
[(ngModel)]="action.color"
|
|
20475
20543
|
(ngModelChange)="updateBulkActions()"
|
|
20476
20544
|
[ngModelOptions]="{ standalone: true }"
|
|
20477
20545
|
>
|
|
20478
|
-
<mat-option value="">
|
|
20546
|
+
<mat-option value="">Padrão</mat-option>
|
|
20479
20547
|
<mat-option value="primary">Primary</mat-option>
|
|
20480
20548
|
<mat-option value="accent">Accent</mat-option>
|
|
20481
20549
|
<mat-option value="warn">Warn</mat-option>
|
|
@@ -20483,7 +20551,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20483
20551
|
</mat-form-field>
|
|
20484
20552
|
|
|
20485
20553
|
<mat-form-field appearance="outline">
|
|
20486
|
-
<mat-label>
|
|
20554
|
+
<mat-label>MÃnimo de seleções</mat-label>
|
|
20487
20555
|
<input
|
|
20488
20556
|
matInput
|
|
20489
20557
|
type="number"
|
|
@@ -20495,7 +20563,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20495
20563
|
</mat-form-field>
|
|
20496
20564
|
|
|
20497
20565
|
<mat-form-field appearance="outline">
|
|
20498
|
-
<mat-label>
|
|
20566
|
+
<mat-label>Máximo de seleções</mat-label>
|
|
20499
20567
|
<input
|
|
20500
20568
|
matInput
|
|
20501
20569
|
type="number"
|
|
@@ -20512,7 +20580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20512
20580
|
[ngModelOptions]="{ standalone: true }"
|
|
20513
20581
|
class="toggle-field"
|
|
20514
20582
|
>
|
|
20515
|
-
Requer
|
|
20583
|
+
Requer confirmação
|
|
20516
20584
|
</mat-slide-toggle>
|
|
20517
20585
|
|
|
20518
20586
|
<mat-slide-toggle
|
|
@@ -20532,15 +20600,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20532
20600
|
</div>
|
|
20533
20601
|
</mat-expansion-panel>
|
|
20534
20602
|
|
|
20535
|
-
<!--
|
|
20603
|
+
<!-- Exportação -->
|
|
20536
20604
|
<mat-expansion-panel *ngIf="isV2">
|
|
20537
20605
|
<mat-expansion-panel-header>
|
|
20538
20606
|
<mat-panel-title>
|
|
20539
20607
|
<mat-icon class="section-icon">download</mat-icon>
|
|
20540
|
-
|
|
20608
|
+
Exportação
|
|
20541
20609
|
</mat-panel-title>
|
|
20542
20610
|
<mat-panel-description>
|
|
20543
|
-
|
|
20611
|
+
Configurações de exportação de dados (V2 only)
|
|
20544
20612
|
</mat-panel-description>
|
|
20545
20613
|
</mat-expansion-panel-header>
|
|
20546
20614
|
|
|
@@ -20549,14 +20617,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20549
20617
|
formControlName="exportEnabled"
|
|
20550
20618
|
class="toggle-field"
|
|
20551
20619
|
>
|
|
20552
|
-
Habilitar
|
|
20620
|
+
Habilitar exportação
|
|
20553
20621
|
</mat-slide-toggle>
|
|
20554
20622
|
|
|
20555
20623
|
@if (toolbarForm.get('exportEnabled')?.value) { <div
|
|
20556
20624
|
class="config-fields"
|
|
20557
20625
|
>
|
|
20558
20626
|
<mat-form-field appearance="outline">
|
|
20559
|
-
<mat-label>Formatos
|
|
20627
|
+
<mat-label>Formatos disponÃveis</mat-label>
|
|
20560
20628
|
<mat-select formControlName="exportFormats" multiple>
|
|
20561
20629
|
<mat-option value="excel">Excel (.xlsx)</mat-option>
|
|
20562
20630
|
<mat-option value="csv">CSV</mat-option>
|
|
@@ -20568,14 +20636,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20568
20636
|
matSuffix
|
|
20569
20637
|
type="button"
|
|
20570
20638
|
class="help-icon-button"
|
|
20571
|
-
matTooltip="Segure Ctrl para selecionar
|
|
20639
|
+
matTooltip="Segure Ctrl para selecionar múltiplos formatos."
|
|
20572
20640
|
>
|
|
20573
20641
|
<mat-icon>help_outline</mat-icon>
|
|
20574
20642
|
</button>
|
|
20575
20643
|
</mat-form-field>
|
|
20576
20644
|
|
|
20577
20645
|
<mat-form-field appearance="outline">
|
|
20578
|
-
<mat-label>Nome
|
|
20646
|
+
<mat-label>Nome padrão do arquivo</mat-label>
|
|
20579
20647
|
<input
|
|
20580
20648
|
matInput
|
|
20581
20649
|
formControlName="exportFileName"
|
|
@@ -20587,7 +20655,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20587
20655
|
formControlName="exportIncludeHeaders"
|
|
20588
20656
|
class="toggle-field"
|
|
20589
20657
|
>
|
|
20590
|
-
Incluir
|
|
20658
|
+
Incluir cabeçalhos
|
|
20591
20659
|
</mat-slide-toggle>
|
|
20592
20660
|
|
|
20593
20661
|
<mat-slide-toggle
|
|
@@ -20605,7 +20673,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
20605
20673
|
</mat-slide-toggle>
|
|
20606
20674
|
|
|
20607
20675
|
<mat-form-field appearance="outline">
|
|
20608
|
-
<mat-label>
|
|
20676
|
+
<mat-label>Máximo de linhas</mat-label>
|
|
20609
20677
|
<input
|
|
20610
20678
|
matInput
|
|
20611
20679
|
type="number"
|
|
@@ -34518,6 +34586,26 @@ function normalizeCorporateLoggerEnvironment(candidate) {
|
|
|
34518
34586
|
}
|
|
34519
34587
|
return 'prod';
|
|
34520
34588
|
}
|
|
34589
|
+
function resolvePraxisFilterCriteriaBridge(filterCriteria, queryContext) {
|
|
34590
|
+
const normalizeRecord = (record) => {
|
|
34591
|
+
if (!record || typeof record !== 'object')
|
|
34592
|
+
return {};
|
|
34593
|
+
return Object.entries(record).reduce((acc, [key, value]) => {
|
|
34594
|
+
if (value === null || value === undefined)
|
|
34595
|
+
return acc;
|
|
34596
|
+
if (Array.isArray(value) && value.length === 0)
|
|
34597
|
+
return acc;
|
|
34598
|
+
if (typeof value === 'string' && value.trim() === '')
|
|
34599
|
+
return acc;
|
|
34600
|
+
acc[key] = value;
|
|
34601
|
+
return acc;
|
|
34602
|
+
}, {});
|
|
34603
|
+
};
|
|
34604
|
+
return {
|
|
34605
|
+
...normalizeRecord(filterCriteria),
|
|
34606
|
+
...normalizeRecord(queryContext?.filters),
|
|
34607
|
+
};
|
|
34608
|
+
}
|
|
34521
34609
|
function createPraxisTableFallbackLogger(environment) {
|
|
34522
34610
|
return new LoggerService(createCorporateLoggerConfig(normalizeCorporateLoggerEnvironment(environment)), [new ConsoleLoggerSink()]);
|
|
34523
34611
|
}
|
|
@@ -34573,6 +34661,7 @@ class PraxisTable {
|
|
|
34573
34661
|
crudContext;
|
|
34574
34662
|
dslFunctionRegistry = null;
|
|
34575
34663
|
filterCriteria = {};
|
|
34664
|
+
queryContext = null;
|
|
34576
34665
|
rowClick = new EventEmitter();
|
|
34577
34666
|
rowDoubleClick = new EventEmitter();
|
|
34578
34667
|
rowExpansionChange = new EventEmitter();
|
|
@@ -35100,7 +35189,6 @@ class PraxisTable {
|
|
|
35100
35189
|
});
|
|
35101
35190
|
resizeObserver;
|
|
35102
35191
|
removeViewportChangeListeners = null;
|
|
35103
|
-
warnedMissingId = false;
|
|
35104
35192
|
warnedUnsupportedFeatures = new Set();
|
|
35105
35193
|
warnedStrictCspStyleMode = false;
|
|
35106
35194
|
fallbackLogger;
|
|
@@ -35288,7 +35376,7 @@ class PraxisTable {
|
|
|
35288
35376
|
: 10;
|
|
35289
35377
|
const result = computeLocalViewPipeline({
|
|
35290
35378
|
source,
|
|
35291
|
-
criteria: this.
|
|
35379
|
+
criteria: this.getEffectiveFilterCriteria(),
|
|
35292
35380
|
sort: {
|
|
35293
35381
|
active: this.sortState?.active || '',
|
|
35294
35382
|
direction: this.sortState?.direction || '',
|
|
@@ -35414,7 +35502,6 @@ class PraxisTable {
|
|
|
35414
35502
|
const legacyId = typeof this.tableId === 'string' ? this.tableId.trim() : '';
|
|
35415
35503
|
if (legacyId)
|
|
35416
35504
|
return legacyId;
|
|
35417
|
-
this.warnMissingId();
|
|
35418
35505
|
return null;
|
|
35419
35506
|
}
|
|
35420
35507
|
storageKey(prefix) {
|
|
@@ -35430,12 +35517,6 @@ class PraxisTable {
|
|
|
35430
35517
|
}
|
|
35431
35518
|
return null;
|
|
35432
35519
|
}
|
|
35433
|
-
warnMissingId() {
|
|
35434
|
-
if (this.warnedMissingId)
|
|
35435
|
-
return;
|
|
35436
|
-
this.warnedMissingId = true;
|
|
35437
|
-
this.warnOnceLog('[PraxisTable] tableId is required for config persistence.', { tableId: this.tableId, componentInstanceId: this.componentInstanceId }, { dedupeKey: 'praxis-table:missing-table-id' });
|
|
35438
|
-
}
|
|
35439
35520
|
ensureConfigDefaults() {
|
|
35440
35521
|
if (!this.config) {
|
|
35441
35522
|
this.config = createDefaultTableConfig();
|
|
@@ -35648,7 +35729,7 @@ class PraxisTable {
|
|
|
35648
35729
|
try {
|
|
35649
35730
|
const storedConfig = await firstValueFrom(this.asyncConfigStorage.loadConfig(cfgKey));
|
|
35650
35731
|
if (storedConfig) {
|
|
35651
|
-
this.config = storedConfig;
|
|
35732
|
+
this.config = fillUndefined(storedConfig, this.config);
|
|
35652
35733
|
}
|
|
35653
35734
|
}
|
|
35654
35735
|
catch (e) {
|
|
@@ -35762,10 +35843,10 @@ class PraxisTable {
|
|
|
35762
35843
|
this.debugLog('[PraxisTable] Toolbar visibility on config change', this.showToolbar);
|
|
35763
35844
|
}
|
|
35764
35845
|
}
|
|
35765
|
-
if (changes['filterCriteria'] && this.isRemoteMode()) {
|
|
35846
|
+
if ((changes['filterCriteria'] || changes['queryContext']) && this.isRemoteMode()) {
|
|
35766
35847
|
this.fetchData();
|
|
35767
35848
|
}
|
|
35768
|
-
if (changes['data'] || changes['resourcePath'] || changes['config']) {
|
|
35849
|
+
if (changes['data'] || changes['resourcePath'] || changes['config'] || changes['queryContext']) {
|
|
35769
35850
|
this.clearCellAnimationChangeState();
|
|
35770
35851
|
if (changes['data'] && this.isLocalDataModeActive()) {
|
|
35771
35852
|
this.applyExpansionCollapsePolicy('dataRefresh');
|
|
@@ -39623,8 +39704,9 @@ class PraxisTable {
|
|
|
39623
39704
|
pageable.sort = sortList;
|
|
39624
39705
|
}
|
|
39625
39706
|
}
|
|
39707
|
+
const effectiveFilterCriteria = this.getEffectiveFilterCriteria();
|
|
39626
39708
|
this.crudService
|
|
39627
|
-
.filter(
|
|
39709
|
+
.filter(effectiveFilterCriteria, pageable, { httpContext })
|
|
39628
39710
|
.pipe(take$1(1))
|
|
39629
39711
|
.subscribe({
|
|
39630
39712
|
next: (page) => {
|
|
@@ -39659,6 +39741,9 @@ class PraxisTable {
|
|
|
39659
39741
|
},
|
|
39660
39742
|
});
|
|
39661
39743
|
}
|
|
39744
|
+
getEffectiveFilterCriteria() {
|
|
39745
|
+
return resolvePraxisFilterCriteriaBridge(this.filterCriteria, this.queryContext);
|
|
39746
|
+
}
|
|
39662
39747
|
// Public wrappers for template actions (AOT-safe)
|
|
39663
39748
|
retryData() {
|
|
39664
39749
|
if (this.isRemoteMode())
|
|
@@ -39701,7 +39786,9 @@ class PraxisTable {
|
|
|
39701
39786
|
}
|
|
39702
39787
|
// Step 3: Apply data formatting if defined
|
|
39703
39788
|
const effectiveType = hasComputedExpression ? computed?.outputType || column.type : column.type;
|
|
39704
|
-
const effectiveFormat = hasComputedExpression
|
|
39789
|
+
const effectiveFormat = hasComputedExpression
|
|
39790
|
+
? computed?.format || column.format
|
|
39791
|
+
: column.format || this.resolveImplicitFormat(column);
|
|
39705
39792
|
if (effectiveType &&
|
|
39706
39793
|
effectiveFormat &&
|
|
39707
39794
|
this.formattingService.needsFormatting(effectiveType, effectiveFormat)) {
|
|
@@ -39716,6 +39803,15 @@ class PraxisTable {
|
|
|
39716
39803
|
}
|
|
39717
39804
|
return value;
|
|
39718
39805
|
}
|
|
39806
|
+
resolveImplicitFormat(column) {
|
|
39807
|
+
if (!column?.type || !supportsImplicitValuePresentation(column.type)) {
|
|
39808
|
+
return undefined;
|
|
39809
|
+
}
|
|
39810
|
+
return resolveValuePresentation({ type: column.type }, {
|
|
39811
|
+
localization: this.config?.localization,
|
|
39812
|
+
appLocale: this.formattingService.getHostLocale(),
|
|
39813
|
+
}).format;
|
|
39814
|
+
}
|
|
39719
39815
|
// =============================
|
|
39720
39816
|
// Conditional Styles (per cell)
|
|
39721
39817
|
// =============================
|
|
@@ -40733,7 +40829,7 @@ class PraxisTable {
|
|
|
40733
40829
|
selectedRows,
|
|
40734
40830
|
selectedCount: selectedRows.length,
|
|
40735
40831
|
hasSelection: selectedRows.length > 0,
|
|
40736
|
-
filterCriteria: this.
|
|
40832
|
+
filterCriteria: this.getEffectiveFilterCriteria(),
|
|
40737
40833
|
sort: this.sortState || { active: '', direction: '' },
|
|
40738
40834
|
page: {
|
|
40739
40835
|
index: this.pageIndex,
|
|
@@ -42598,7 +42694,7 @@ class PraxisTable {
|
|
|
42598
42694
|
disposePraxisTableDslRuntimeRegistry(this.dslRuntimeContextKey);
|
|
42599
42695
|
}
|
|
42600
42696
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisTable, deps: [{ token: i0.ChangeDetectorRef }, { token: i3$1.SettingsPanelService }, { token: i1.GenericCrudService }, { token: TableDefaultsProvider }, { token: FilterConfigService }, { token: DataFormattingService }, { token: i6$3.PraxisDialog }, { token: i2$2.MatSnackBar }, { token: ASYNC_CONFIG_STORAGE }, { token: CONNECTION_STORAGE }, { token: i0.ElementRef }, { token: i1.GlobalConfigService }, { token: i1.ComponentKeyService }, { token: i1.LoadingOrchestrator }, { token: PRAXIS_LOADING_RENDERER, optional: true }, { token: i6$2.ActivatedRoute, optional: true }, { token: i1.LoggerService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
42601
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: PraxisTable, isStandalone: true, selector: "praxis-table", inputs: { config: "config", resourcePath: "resourcePath", data: "data", tableId: "tableId", componentInstanceId: "componentInstanceId", title: "title", subtitle: "subtitle", icon: "icon", autoDelete: "autoDelete", notifyIfOutdated: "notifyIfOutdated", snoozeMs: "snoozeMs", autoOpenSettingsOnOutdated: "autoOpenSettingsOnOutdated", crudContext: "crudContext", dslFunctionRegistry: "dslFunctionRegistry", filterCriteria: "filterCriteria", enableCustomization: ["enableCustomization", "enableCustomization", booleanAttribute], dense: "dense" }, outputs: { rowClick: "rowClick", rowDoubleClick: "rowDoubleClick", rowExpansionChange: "rowExpansionChange", rowAction: "rowAction", toolbarAction: "toolbarAction", bulkAction: "bulkAction", columnReorder: "columnReorder", columnReorderAttempt: "columnReorderAttempt", beforeDelete: "beforeDelete", afterDelete: "afterDelete", deleteError: "deleteError", beforeBulkDelete: "beforeBulkDelete", afterBulkDelete: "afterBulkDelete", bulkDeleteError: "bulkDeleteError", schemaStatusChange: "schemaStatusChange", metadataChange: "metadataChange", loadingStateChange: "loadingStateChange" }, host: { properties: { "class.density-compact": "this.hostDensityCompactClass", "class.density-comfortable": "this.hostDensityComfortableClass", "class.density-spacious": "this.hostDensitySpaciousClass", "class.row-borders": "this.hostRowBordersClass", "class.col-borders": "this.hostColumnBordersClass" } }, providers: [
|
|
42697
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: PraxisTable, isStandalone: true, selector: "praxis-table", inputs: { config: "config", resourcePath: "resourcePath", data: "data", tableId: "tableId", componentInstanceId: "componentInstanceId", title: "title", subtitle: "subtitle", icon: "icon", autoDelete: "autoDelete", notifyIfOutdated: "notifyIfOutdated", snoozeMs: "snoozeMs", autoOpenSettingsOnOutdated: "autoOpenSettingsOnOutdated", crudContext: "crudContext", dslFunctionRegistry: "dslFunctionRegistry", filterCriteria: "filterCriteria", queryContext: "queryContext", enableCustomization: ["enableCustomization", "enableCustomization", booleanAttribute], dense: "dense" }, outputs: { rowClick: "rowClick", rowDoubleClick: "rowDoubleClick", rowExpansionChange: "rowExpansionChange", rowAction: "rowAction", toolbarAction: "toolbarAction", bulkAction: "bulkAction", columnReorder: "columnReorder", columnReorderAttempt: "columnReorderAttempt", beforeDelete: "beforeDelete", afterDelete: "afterDelete", deleteError: "deleteError", beforeBulkDelete: "beforeBulkDelete", afterBulkDelete: "afterBulkDelete", bulkDeleteError: "bulkDeleteError", schemaStatusChange: "schemaStatusChange", metadataChange: "metadataChange", loadingStateChange: "loadingStateChange" }, host: { properties: { "class.density-compact": "this.hostDensityCompactClass", "class.density-comfortable": "this.hostDensityComfortableClass", "class.density-spacious": "this.hostDensitySpaciousClass", "class.row-borders": "this.hostRowBordersClass", "class.col-borders": "this.hostColumnBordersClass" } }, providers: [
|
|
42602
42698
|
GenericCrudService,
|
|
42603
42699
|
TableDefaultsProvider,
|
|
42604
42700
|
FilterConfigService,
|
|
@@ -42681,6 +42777,8 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "20.3.17", n
|
|
|
42681
42777
|
type: Input
|
|
42682
42778
|
}], filterCriteria: [{
|
|
42683
42779
|
type: Input
|
|
42780
|
+
}], queryContext: [{
|
|
42781
|
+
type: Input
|
|
42684
42782
|
}], rowClick: [{
|
|
42685
42783
|
type: Output
|
|
42686
42784
|
}], rowDoubleClick: [{
|
|
@@ -42861,11 +42959,18 @@ const PRAXIS_TABLE_COMPONENT_METADATA = {
|
|
|
42861
42959
|
description: 'Dataset local para modo client-side quando não há resourcePath',
|
|
42862
42960
|
default: null,
|
|
42863
42961
|
},
|
|
42962
|
+
{
|
|
42963
|
+
name: 'queryContext',
|
|
42964
|
+
type: 'PraxisDataQueryContext | null',
|
|
42965
|
+
label: 'Contexto de consulta',
|
|
42966
|
+
description: 'Contrato semantico primario de consulta para orquestracao declarativa por pagina dinamica. A tabela compoe queryContext.filters sobre o pipeline de filtro efetivo existente e respeita sort, limit e page quando aplicavel.',
|
|
42967
|
+
default: null,
|
|
42968
|
+
},
|
|
42864
42969
|
{
|
|
42865
42970
|
name: 'filterCriteria',
|
|
42866
42971
|
type: 'Record<string, any>',
|
|
42867
42972
|
label: 'Criterios de filtro',
|
|
42868
|
-
description: '
|
|
42973
|
+
description: 'Bridge legada de compatibilidade para filtros declarativos. Para novo authoring, prefira queryContext.',
|
|
42869
42974
|
default: {},
|
|
42870
42975
|
},
|
|
42871
42976
|
{
|
|
@@ -43880,11 +43985,17 @@ const TABLE_COMPONENT_AI_CAPABILITIES = {
|
|
|
43880
43985
|
valueKind: 'string',
|
|
43881
43986
|
description: 'Endpoint base para operacoes de dados.',
|
|
43882
43987
|
},
|
|
43988
|
+
{
|
|
43989
|
+
path: 'inputs.queryContext',
|
|
43990
|
+
category: 'data',
|
|
43991
|
+
valueKind: 'object',
|
|
43992
|
+
description: 'Contrato semantico primario para consulta declarativa; nesta fase a tabela consome filters, sort, limit e page com foco principal em queryContext.filters.',
|
|
43993
|
+
},
|
|
43883
43994
|
{
|
|
43884
43995
|
path: 'inputs.filterCriteria',
|
|
43885
43996
|
category: 'data',
|
|
43886
43997
|
valueKind: 'object',
|
|
43887
|
-
description: '
|
|
43998
|
+
description: 'Bridge legada de compatibilidade. Para novo authoring, prefira inputs.queryContext.',
|
|
43888
43999
|
},
|
|
43889
44000
|
{
|
|
43890
44001
|
path: 'inputs.showToolbar',
|