@praxisui/tabs 9.0.0-beta.9 → 9.0.0-beta.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/ai/component-registry.json +2503 -0
- package/fesm2022/praxisui-tabs.mjs +173 -165
- package/package.json +10 -6
- package/src/lib/praxis-tabs-config-editor.json-api.md +6 -2
- package/types/praxisui-tabs.d.ts +6 -0
|
@@ -10,7 +10,7 @@ import { MatIconModule } from '@angular/material/icon';
|
|
|
10
10
|
import * as i10 from '@angular/material/tooltip';
|
|
11
11
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
12
12
|
import * as i1 from '@praxisui/core';
|
|
13
|
-
import { providePraxisI18n, PraxisI18nService, PraxisIconDirective, providePraxisI18nConfig, deepMerge, ASYNC_CONFIG_STORAGE, ComponentKeyService, LoggerService, EmptyStateCardComponent, DynamicWidgetLoaderDirective, ComponentMetadataRegistry } from '@praxisui/core';
|
|
13
|
+
import { providePraxisI18n, PraxisI18nService, PraxisIconDirective, PraxisIconButtonComponent, providePraxisI18nConfig, deepMerge, ASYNC_CONFIG_STORAGE, ComponentKeyService, LoggerService, EmptyStateCardComponent, DynamicWidgetLoaderDirective, ComponentMetadataRegistry } from '@praxisui/core';
|
|
14
14
|
import * as i6 from '@angular/material/button';
|
|
15
15
|
import { MatButtonModule } from '@angular/material/button';
|
|
16
16
|
import * as i2_1 from '@angular/forms';
|
|
@@ -273,6 +273,12 @@ const PRAXIS_TABS_PT_BR = {
|
|
|
273
273
|
'editor.actions.addTab': 'Adicionar aba',
|
|
274
274
|
'editor.actions.addLink': 'Adicionar link',
|
|
275
275
|
'editor.actions.add': 'Adicionar',
|
|
276
|
+
'editor.actions.moveTabUp': 'Mover aba para cima',
|
|
277
|
+
'editor.actions.moveTabDown': 'Mover aba para baixo',
|
|
278
|
+
'editor.actions.removeTab': 'Remover aba',
|
|
279
|
+
'editor.actions.moveLinkUp': 'Mover link para cima',
|
|
280
|
+
'editor.actions.moveLinkDown': 'Mover link para baixo',
|
|
281
|
+
'editor.actions.removeLink': 'Remover link',
|
|
276
282
|
'editor.actions.removeLabel': 'Remover rótulo',
|
|
277
283
|
'editor.actions.dragToReorder': 'Arrastar para reordenar',
|
|
278
284
|
'editor.actions.removeComponent': 'Remover componente',
|
|
@@ -364,6 +370,7 @@ const PRAXIS_TABS_PT_BR = {
|
|
|
364
370
|
'editor.toggles.disablePagination': 'Sem paginação',
|
|
365
371
|
'editor.toggles.disableRipple': 'Sem ripple',
|
|
366
372
|
'editor.toggles.preserveContent': 'Preservar conteúdo',
|
|
373
|
+
'editor.toggles.renderBody': 'Renderizar conteúdo interno',
|
|
367
374
|
'editor.toggles.stretchTabs': 'Esticar abas',
|
|
368
375
|
'editor.toggles.highContrast': 'Alto contraste',
|
|
369
376
|
'editor.toggles.reduceMotion': 'Reduzir movimento',
|
|
@@ -418,6 +425,12 @@ const PRAXIS_TABS_EN_US = {
|
|
|
418
425
|
'editor.actions.addTab': 'Add tab',
|
|
419
426
|
'editor.actions.addLink': 'Add link',
|
|
420
427
|
'editor.actions.add': 'Add',
|
|
428
|
+
'editor.actions.moveTabUp': 'Move tab up',
|
|
429
|
+
'editor.actions.moveTabDown': 'Move tab down',
|
|
430
|
+
'editor.actions.removeTab': 'Remove tab',
|
|
431
|
+
'editor.actions.moveLinkUp': 'Move link up',
|
|
432
|
+
'editor.actions.moveLinkDown': 'Move link down',
|
|
433
|
+
'editor.actions.removeLink': 'Remove link',
|
|
421
434
|
'editor.actions.removeLabel': 'Remove label',
|
|
422
435
|
'editor.actions.dragToReorder': 'Drag to reorder',
|
|
423
436
|
'editor.actions.removeComponent': 'Remove component',
|
|
@@ -509,6 +522,7 @@ const PRAXIS_TABS_EN_US = {
|
|
|
509
522
|
'editor.toggles.disablePagination': 'Disable pagination',
|
|
510
523
|
'editor.toggles.disableRipple': 'Disable ripple',
|
|
511
524
|
'editor.toggles.preserveContent': 'Preserve content',
|
|
525
|
+
'editor.toggles.renderBody': 'Render internal content',
|
|
512
526
|
'editor.toggles.stretchTabs': 'Stretch tabs',
|
|
513
527
|
'editor.toggles.highContrast': 'High contrast',
|
|
514
528
|
'editor.toggles.reduceMotion': 'Reduce motion',
|
|
@@ -1044,28 +1058,26 @@ class PraxisTabsConfigEditor {
|
|
|
1044
1058
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
|
|
1045
1059
|
<input matInput type="number" [(ngModel)]="group.selectedIndex" (ngModelChange)="onAppearanceChange()" />
|
|
1046
1060
|
<button
|
|
1047
|
-
|
|
1061
|
+
praxisIconButton="help_outline"
|
|
1062
|
+
size="dense"
|
|
1048
1063
|
matSuffix
|
|
1049
|
-
class="help-icon-button"
|
|
1050
1064
|
type="button"
|
|
1051
1065
|
[matTooltip]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1066
|
+
[attr.aria-label]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1052
1067
|
matTooltipPosition="above"
|
|
1053
|
-
|
|
1054
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1055
|
-
</button>
|
|
1068
|
+
></button>
|
|
1056
1069
|
</mat-form-field>
|
|
1057
1070
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.animationDuration', 'Duracao da animacao') }}</mat-label>
|
|
1058
1071
|
<input matInput [(ngModel)]="group.animationDuration" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.fields.placeholder.animationDuration', '500ms')" />
|
|
1059
1072
|
<button
|
|
1060
|
-
|
|
1073
|
+
praxisIconButton="help_outline"
|
|
1074
|
+
size="dense"
|
|
1061
1075
|
matSuffix
|
|
1062
|
-
class="help-icon-button"
|
|
1063
1076
|
type="button"
|
|
1064
1077
|
[matTooltip]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1078
|
+
[attr.aria-label]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1065
1079
|
matTooltipPosition="above"
|
|
1066
|
-
|
|
1067
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1068
|
-
</button>
|
|
1080
|
+
></button>
|
|
1069
1081
|
</mat-form-field>
|
|
1070
1082
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.color', 'Cor (M2)') }}</mat-label>
|
|
1071
1083
|
<select matNativeControl [(ngModel)]="group.color" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1075,15 +1087,14 @@ class PraxisTabsConfigEditor {
|
|
|
1075
1087
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1076
1088
|
</select>
|
|
1077
1089
|
<button
|
|
1078
|
-
|
|
1090
|
+
praxisIconButton="help_outline"
|
|
1091
|
+
size="dense"
|
|
1079
1092
|
matSuffix
|
|
1080
|
-
class="help-icon-button"
|
|
1081
1093
|
type="button"
|
|
1082
1094
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1095
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1083
1096
|
matTooltipPosition="above"
|
|
1084
|
-
|
|
1085
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1086
|
-
</button>
|
|
1097
|
+
></button>
|
|
1087
1098
|
</mat-form-field>
|
|
1088
1099
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
|
|
1089
1100
|
<select matNativeControl [(ngModel)]="group.backgroundColor" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1093,15 +1104,14 @@ class PraxisTabsConfigEditor {
|
|
|
1093
1104
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1094
1105
|
</select>
|
|
1095
1106
|
<button
|
|
1096
|
-
|
|
1107
|
+
praxisIconButton="help_outline"
|
|
1108
|
+
size="dense"
|
|
1097
1109
|
matSuffix
|
|
1098
|
-
class="help-icon-button"
|
|
1099
1110
|
type="button"
|
|
1100
1111
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1112
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1101
1113
|
matTooltipPosition="above"
|
|
1102
|
-
|
|
1103
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1104
|
-
</button>
|
|
1114
|
+
></button>
|
|
1105
1115
|
</mat-form-field>
|
|
1106
1116
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.ariaLabel', 'aria-label') }}</mat-label>
|
|
1107
1117
|
<input matInput [(ngModel)]="group.ariaLabel" (ngModelChange)="onAppearanceChange()" />
|
|
@@ -1116,6 +1126,7 @@ class PraxisTabsConfigEditor {
|
|
|
1116
1126
|
<mat-slide-toggle [(ngModel)]="group.disablePagination" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.disablePagination', 'Sem paginacao') }}</mat-slide-toggle>
|
|
1117
1127
|
<mat-slide-toggle [(ngModel)]="group.disableRipple" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.disableRipple', 'Sem ripple') }}</mat-slide-toggle>
|
|
1118
1128
|
<mat-slide-toggle [(ngModel)]="group.preserveContent" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.preserveContent', 'Preservar conteudo') }}</mat-slide-toggle>
|
|
1129
|
+
<mat-slide-toggle [ngModel]="group.renderBody !== false" (ngModelChange)="group.renderBody = $event ? undefined : false; onAppearanceChange()">{{ t('editor.toggles.renderBody', 'Renderizar conteudo interno') }}</mat-slide-toggle>
|
|
1119
1130
|
<mat-slide-toggle [(ngModel)]="group.stretchTabs" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.stretchTabs', 'Esticar abas') }}</mat-slide-toggle>
|
|
1120
1131
|
</div>
|
|
1121
1132
|
</div>
|
|
@@ -1127,28 +1138,26 @@ class PraxisTabsConfigEditor {
|
|
|
1127
1138
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
|
|
1128
1139
|
<input matInput type="number" [(ngModel)]="nav.selectedIndex" (ngModelChange)="onAppearanceChange()" />
|
|
1129
1140
|
<button
|
|
1130
|
-
|
|
1141
|
+
praxisIconButton="help_outline"
|
|
1142
|
+
size="dense"
|
|
1131
1143
|
matSuffix
|
|
1132
|
-
class="help-icon-button"
|
|
1133
1144
|
type="button"
|
|
1134
1145
|
[matTooltip]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1146
|
+
[attr.aria-label]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1135
1147
|
matTooltipPosition="above"
|
|
1136
|
-
|
|
1137
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1138
|
-
</button>
|
|
1148
|
+
></button>
|
|
1139
1149
|
</mat-form-field>
|
|
1140
1150
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.animationDuration', 'Duracao da animacao') }}</mat-label>
|
|
1141
1151
|
<input matInput [(ngModel)]="nav.animationDuration" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.fields.placeholder.animationDuration', '500ms')" />
|
|
1142
1152
|
<button
|
|
1143
|
-
|
|
1153
|
+
praxisIconButton="help_outline"
|
|
1154
|
+
size="dense"
|
|
1144
1155
|
matSuffix
|
|
1145
|
-
class="help-icon-button"
|
|
1146
1156
|
type="button"
|
|
1147
1157
|
[matTooltip]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1158
|
+
[attr.aria-label]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1148
1159
|
matTooltipPosition="above"
|
|
1149
|
-
|
|
1150
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1151
|
-
</button>
|
|
1160
|
+
></button>
|
|
1152
1161
|
</mat-form-field>
|
|
1153
1162
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.ariaLabel', 'aria-label') }}</mat-label>
|
|
1154
1163
|
<input matInput [(ngModel)]="nav.ariaLabel" (ngModelChange)="onAppearanceChange()" />
|
|
@@ -1164,15 +1173,14 @@ class PraxisTabsConfigEditor {
|
|
|
1164
1173
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1165
1174
|
</select>
|
|
1166
1175
|
<button
|
|
1167
|
-
|
|
1176
|
+
praxisIconButton="help_outline"
|
|
1177
|
+
size="dense"
|
|
1168
1178
|
matSuffix
|
|
1169
|
-
class="help-icon-button"
|
|
1170
1179
|
type="button"
|
|
1171
1180
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1181
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1172
1182
|
matTooltipPosition="above"
|
|
1173
|
-
|
|
1174
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1175
|
-
</button>
|
|
1183
|
+
></button>
|
|
1176
1184
|
</mat-form-field>
|
|
1177
1185
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
|
|
1178
1186
|
<select matNativeControl [(ngModel)]="nav.backgroundColor" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1182,21 +1190,21 @@ class PraxisTabsConfigEditor {
|
|
|
1182
1190
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1183
1191
|
</select>
|
|
1184
1192
|
<button
|
|
1185
|
-
|
|
1193
|
+
praxisIconButton="help_outline"
|
|
1194
|
+
size="dense"
|
|
1186
1195
|
matSuffix
|
|
1187
|
-
class="help-icon-button"
|
|
1188
1196
|
type="button"
|
|
1189
1197
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1198
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1190
1199
|
matTooltipPosition="above"
|
|
1191
|
-
|
|
1192
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1193
|
-
</button>
|
|
1200
|
+
></button>
|
|
1194
1201
|
</mat-form-field>
|
|
1195
1202
|
</div>
|
|
1196
1203
|
<div class="editor-row">
|
|
1197
1204
|
<mat-slide-toggle [(ngModel)]="nav.fitInkBarToContent" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.fitInkBarToContent', 'Indicador ajustado ao conteudo') }}</mat-slide-toggle>
|
|
1198
1205
|
<mat-slide-toggle [(ngModel)]="nav.disablePagination" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.disablePagination', 'Sem paginacao') }}</mat-slide-toggle>
|
|
1199
1206
|
<mat-slide-toggle [(ngModel)]="nav.disableRipple" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.disableRipple', 'Sem ripple') }}</mat-slide-toggle>
|
|
1207
|
+
<mat-slide-toggle [ngModel]="nav.renderBody !== false" (ngModelChange)="nav.renderBody = $event ? undefined : false; onAppearanceChange()">{{ t('editor.toggles.renderBody', 'Renderizar conteudo interno') }}</mat-slide-toggle>
|
|
1200
1208
|
<mat-slide-toggle [(ngModel)]="nav.stretchTabs" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.stretchTabs', 'Esticar abas') }}</mat-slide-toggle>
|
|
1201
1209
|
</div>
|
|
1202
1210
|
</div>
|
|
@@ -1275,14 +1283,13 @@ class PraxisTabsConfigEditor {
|
|
|
1275
1283
|
<div class="editor-title-row">
|
|
1276
1284
|
<h3 class="editor-title">{{ t('editor.sections.tokens', 'Tokens (Material 3)') }}</h3>
|
|
1277
1285
|
<button
|
|
1278
|
-
|
|
1279
|
-
|
|
1286
|
+
praxisIconButton="help_outline"
|
|
1287
|
+
size="dense"
|
|
1280
1288
|
type="button"
|
|
1281
1289
|
[matTooltip]="t('editor.hints.tokenValueHelp', 'Valores aceitam CSS vars ou cores hex/rgb.')"
|
|
1290
|
+
[attr.aria-label]="t('editor.hints.tokenValueHelp', 'Valores aceitam CSS vars ou cores hex/rgb.')"
|
|
1282
1291
|
matTooltipPosition="above"
|
|
1283
|
-
|
|
1284
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1285
|
-
</button>
|
|
1292
|
+
></button>
|
|
1286
1293
|
</div>
|
|
1287
1294
|
<div class="editor-grid two">
|
|
1288
1295
|
@for (token of tokenList; track token) {
|
|
@@ -1321,9 +1328,9 @@ class PraxisTabsConfigEditor {
|
|
|
1321
1328
|
<div class="editor-card">
|
|
1322
1329
|
<div class="editor-card-header">
|
|
1323
1330
|
<strong class="editor-card-title">{{ t('editor.cards.tab', 'Aba') }} #{{ i+1 }}</strong>
|
|
1324
|
-
<button
|
|
1325
|
-
<button
|
|
1326
|
-
<button
|
|
1331
|
+
<button praxisIconButton="arrow_upward" size="compact" type="button" (click)="moveTab(i, -1)" [disabled]="i===0" [matTooltip]="t('editor.actions.moveTabUp', 'Mover aba para cima')" [attr.aria-label]="t('editor.actions.moveTabUp', 'Mover aba para cima')"></button>
|
|
1332
|
+
<button praxisIconButton="arrow_downward" size="compact" type="button" (click)="moveTab(i, 1)" [disabled]="i===editedConfig.tabs!.length-1" [matTooltip]="t('editor.actions.moveTabDown', 'Mover aba para baixo')" [attr.aria-label]="t('editor.actions.moveTabDown', 'Mover aba para baixo')"></button>
|
|
1333
|
+
<button praxisIconButton="delete" size="compact" type="button" class="editor-icon-action--danger" (click)="removeTab(i)" [matTooltip]="t('editor.actions.removeTab', 'Remover aba')" [attr.aria-label]="t('editor.actions.removeTab', 'Remover aba')"></button>
|
|
1327
1334
|
</div>
|
|
1328
1335
|
<div class="editor-grid two tight">
|
|
1329
1336
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.id', 'ID') }}</mat-label>
|
|
@@ -1379,11 +1386,9 @@ class PraxisTabsConfigEditor {
|
|
|
1379
1386
|
@for (w of tab.widgets; track w; let wi = $index) {
|
|
1380
1387
|
<div cdkDrag class="editor-card dashed">
|
|
1381
1388
|
<div class="editor-card-header">
|
|
1382
|
-
<button
|
|
1383
|
-
<mat-icon [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
1384
|
-
</button>
|
|
1389
|
+
<button praxisIconButton="drag_indicator" size="compact" type="button" cdkDragHandle [matTooltip]="t('editor.actions.dragToReorder', 'Arrastar para reordenar')" [attr.aria-label]="t('editor.actions.dragToReorder', 'Arrastar para reordenar')"></button>
|
|
1385
1390
|
<strong class="editor-card-title">{{ getCompName(w.id) }}</strong>
|
|
1386
|
-
<button
|
|
1391
|
+
<button praxisIconButton="delete" size="compact" type="button" class="editor-icon-action--danger" (click)="removeWidgetFromTab(i, wi)" [matTooltip]="t('editor.actions.removeComponent', 'Remover componente')" [attr.aria-label]="t('editor.actions.removeComponent', 'Remover componente')"></button>
|
|
1387
1392
|
</div>
|
|
1388
1393
|
<div class="editor-grid two tight">
|
|
1389
1394
|
<mat-form-field appearance="outline">
|
|
@@ -1427,9 +1432,9 @@ class PraxisTabsConfigEditor {
|
|
|
1427
1432
|
<div class="editor-card">
|
|
1428
1433
|
<div class="editor-card-header">
|
|
1429
1434
|
<strong class="editor-card-title">{{ t('editor.cards.link', 'Link') }} #{{ i+1 }}</strong>
|
|
1430
|
-
<button
|
|
1431
|
-
<button
|
|
1432
|
-
<button
|
|
1435
|
+
<button praxisIconButton="arrow_upward" size="compact" type="button" (click)="moveLink(i, -1)" [disabled]="i===0" [matTooltip]="t('editor.actions.moveLinkUp', 'Mover link para cima')" [attr.aria-label]="t('editor.actions.moveLinkUp', 'Mover link para cima')"></button>
|
|
1436
|
+
<button praxisIconButton="arrow_downward" size="compact" type="button" (click)="moveLink(i, 1)" [disabled]="i===nav.links!.length-1" [matTooltip]="t('editor.actions.moveLinkDown', 'Mover link para baixo')" [attr.aria-label]="t('editor.actions.moveLinkDown', 'Mover link para baixo')"></button>
|
|
1437
|
+
<button praxisIconButton="delete" size="compact" type="button" class="editor-icon-action--danger" (click)="removeLink(i)" [matTooltip]="t('editor.actions.removeLink', 'Remover link')" [attr.aria-label]="t('editor.actions.removeLink', 'Remover link')"></button>
|
|
1433
1438
|
</div>
|
|
1434
1439
|
<div class="editor-grid two tight">
|
|
1435
1440
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.id', 'ID') }}</mat-label>
|
|
@@ -1475,11 +1480,9 @@ class PraxisTabsConfigEditor {
|
|
|
1475
1480
|
@for (w of l.widgets; track w; let wi = $index) {
|
|
1476
1481
|
<div cdkDrag class="editor-card dashed">
|
|
1477
1482
|
<div class="editor-card-header">
|
|
1478
|
-
<button
|
|
1479
|
-
<mat-icon [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
1480
|
-
</button>
|
|
1483
|
+
<button praxisIconButton="drag_indicator" size="compact" type="button" cdkDragHandle [matTooltip]="t('editor.actions.dragToReorder', 'Arrastar para reordenar')" [attr.aria-label]="t('editor.actions.dragToReorder', 'Arrastar para reordenar')"></button>
|
|
1481
1484
|
<strong class="editor-card-title">{{ getCompName(w.id) }}</strong>
|
|
1482
|
-
<button
|
|
1485
|
+
<button praxisIconButton="delete" size="compact" type="button" class="editor-icon-action--danger" (click)="removeWidgetFromLink(i, wi)" [matTooltip]="t('editor.actions.removeComponent', 'Remover componente')" [attr.aria-label]="t('editor.actions.removeComponent', 'Remover componente')"></button>
|
|
1483
1486
|
</div>
|
|
1484
1487
|
<div class="editor-grid two tight">
|
|
1485
1488
|
<mat-form-field appearance="outline">
|
|
@@ -1506,7 +1509,7 @@ class PraxisTabsConfigEditor {
|
|
|
1506
1509
|
</mat-tab>
|
|
1507
1510
|
</mat-tab-group>
|
|
1508
1511
|
</div>
|
|
1509
|
-
`, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.editor-shell{display:grid;gap:12px}.editor-topbar{display:flex;align-items:start;justify-content:flex-start}.editor-mode-field{width:min(320px,100%)}.editor-diagnostics{display:grid;gap:8px}.editor-diagnostics-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.editor-diagnostic{display:grid;gap:4px;padding:10px 12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.editor-diagnostic code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--md-sys-color-on-surface-variant)}.editor-diagnostic.level-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-color:var(--md-sys-color-error)}.editor-diagnostic.level-warning{background:var(--md-sys-color-tertiary-container, var(--md-sys-color-surface-container));color:var(--md-sys-color-on-tertiary-container, var(--md-sys-color-on-surface));border-color:var(--md-sys-color-outline-variant)}.editor-tabs{--editor-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--editor-border: 1px solid var(--md-sys-color-outline-variant);--editor-radius: 12px;--editor-muted: var(--md-sys-color-on-surface-variant)}.editor-section{padding:12px;display:grid;gap:12px;background:var(--editor-surface);border:var(--editor-border);border-radius:var(--editor-radius)}.editor-section-lg{gap:16px}.editor-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;gap:12px}.editor-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.editor-grid.tight{gap:8px}.editor-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-muted{color:var(--editor-muted)}.editor-title{margin:6px 0 8px;font-size:1rem}.editor-title-row{display:flex;align-items:center;gap:8px}.editor-code{white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:8px;border-radius:6px;border:1px solid var(--md-sys-color-outline-variant)}.editor-card{border:1px solid var(--md-sys-color-outline-variant);padding:10px;border-radius:10px;display:grid;gap:8px;background:var(--md-sys-color-surface)}.editor-card.dashed{border-style:dashed}.editor-card-header{display:flex;align-items:center;gap:8px}.editor-card-title{flex:1;font-weight:600}.editor-divider{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.editor-spacer{flex:1}.editor-field-min{min-width:260px}.editor-section .editor-field-min{width:260px;max-width:260px}.editor-field-240{width:240px}.editor-section .editor-field-240{width:240px;max-width:240px}.editor-json{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.editor-section .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.editor-section .mat-mdc-form-field.full{max-width:none}.
|
|
1512
|
+
`, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.editor-shell{display:grid;gap:12px}.editor-topbar{display:flex;align-items:start;justify-content:flex-start}.editor-mode-field{width:min(320px,100%)}.editor-diagnostics{display:grid;gap:8px}.editor-diagnostics-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.editor-diagnostic{display:grid;gap:4px;padding:10px 12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.editor-diagnostic code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--md-sys-color-on-surface-variant)}.editor-diagnostic.level-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-color:var(--md-sys-color-error)}.editor-diagnostic.level-warning{background:var(--md-sys-color-tertiary-container, var(--md-sys-color-surface-container));color:var(--md-sys-color-on-tertiary-container, var(--md-sys-color-on-surface));border-color:var(--md-sys-color-outline-variant)}.editor-tabs{--editor-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--editor-border: 1px solid var(--md-sys-color-outline-variant);--editor-radius: 12px;--editor-muted: var(--md-sys-color-on-surface-variant)}.editor-section{padding:12px;display:grid;gap:12px;background:var(--editor-surface);border:var(--editor-border);border-radius:var(--editor-radius)}.editor-section-lg{gap:16px}.editor-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;gap:12px}.editor-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.editor-grid.tight{gap:8px}.editor-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-muted{color:var(--editor-muted)}.editor-title{margin:6px 0 8px;font-size:1rem}.editor-title-row{display:flex;align-items:center;gap:8px}.editor-code{white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:8px;border-radius:6px;border:1px solid var(--md-sys-color-outline-variant)}.editor-card{border:1px solid var(--md-sys-color-outline-variant);padding:10px;border-radius:10px;display:grid;gap:8px;background:var(--md-sys-color-surface)}.editor-card.dashed{border-style:dashed}.editor-card-header{display:flex;align-items:center;gap:8px}.editor-card-title{flex:1;font-weight:600}.editor-divider{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.editor-spacer{flex:1}.editor-field-min{min-width:260px}.editor-section .editor-field-min{width:260px;max-width:260px}.editor-field-240{width:240px}.editor-section .editor-field-240{width:240px;max-width:240px}.editor-json{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.editor-section .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.editor-section .mat-mdc-form-field.full{max-width:none}.editor-icon-action--danger{color:var(--md-sys-color-error)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2_1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2_1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2_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: i2_1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2_1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2_1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2_1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.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: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i8.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: DragDropModule }, { kind: "directive", type: i9.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: i9.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: i9.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
1510
1513
|
}
|
|
1511
1514
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisTabsConfigEditor, decorators: [{
|
|
1512
1515
|
type: Component,
|
|
@@ -1517,6 +1520,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1517
1520
|
MatInputModule,
|
|
1518
1521
|
MatIconModule,
|
|
1519
1522
|
PraxisIconDirective,
|
|
1523
|
+
PraxisIconButtonComponent,
|
|
1520
1524
|
MatButtonModule,
|
|
1521
1525
|
MatSlideToggleModule,
|
|
1522
1526
|
DragDropModule,
|
|
@@ -1584,28 +1588,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1584
1588
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
|
|
1585
1589
|
<input matInput type="number" [(ngModel)]="group.selectedIndex" (ngModelChange)="onAppearanceChange()" />
|
|
1586
1590
|
<button
|
|
1587
|
-
|
|
1591
|
+
praxisIconButton="help_outline"
|
|
1592
|
+
size="dense"
|
|
1588
1593
|
matSuffix
|
|
1589
|
-
class="help-icon-button"
|
|
1590
1594
|
type="button"
|
|
1591
1595
|
[matTooltip]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1596
|
+
[attr.aria-label]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1592
1597
|
matTooltipPosition="above"
|
|
1593
|
-
|
|
1594
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1595
|
-
</button>
|
|
1598
|
+
></button>
|
|
1596
1599
|
</mat-form-field>
|
|
1597
1600
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.animationDuration', 'Duracao da animacao') }}</mat-label>
|
|
1598
1601
|
<input matInput [(ngModel)]="group.animationDuration" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.fields.placeholder.animationDuration', '500ms')" />
|
|
1599
1602
|
<button
|
|
1600
|
-
|
|
1603
|
+
praxisIconButton="help_outline"
|
|
1604
|
+
size="dense"
|
|
1601
1605
|
matSuffix
|
|
1602
|
-
class="help-icon-button"
|
|
1603
1606
|
type="button"
|
|
1604
1607
|
[matTooltip]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1608
|
+
[attr.aria-label]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1605
1609
|
matTooltipPosition="above"
|
|
1606
|
-
|
|
1607
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1608
|
-
</button>
|
|
1610
|
+
></button>
|
|
1609
1611
|
</mat-form-field>
|
|
1610
1612
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.color', 'Cor (M2)') }}</mat-label>
|
|
1611
1613
|
<select matNativeControl [(ngModel)]="group.color" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1615,15 +1617,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1615
1617
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1616
1618
|
</select>
|
|
1617
1619
|
<button
|
|
1618
|
-
|
|
1620
|
+
praxisIconButton="help_outline"
|
|
1621
|
+
size="dense"
|
|
1619
1622
|
matSuffix
|
|
1620
|
-
class="help-icon-button"
|
|
1621
1623
|
type="button"
|
|
1622
1624
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1625
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1623
1626
|
matTooltipPosition="above"
|
|
1624
|
-
|
|
1625
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1626
|
-
</button>
|
|
1627
|
+
></button>
|
|
1627
1628
|
</mat-form-field>
|
|
1628
1629
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
|
|
1629
1630
|
<select matNativeControl [(ngModel)]="group.backgroundColor" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1633,15 +1634,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1633
1634
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1634
1635
|
</select>
|
|
1635
1636
|
<button
|
|
1636
|
-
|
|
1637
|
+
praxisIconButton="help_outline"
|
|
1638
|
+
size="dense"
|
|
1637
1639
|
matSuffix
|
|
1638
|
-
class="help-icon-button"
|
|
1639
1640
|
type="button"
|
|
1640
1641
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1642
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1641
1643
|
matTooltipPosition="above"
|
|
1642
|
-
|
|
1643
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1644
|
-
</button>
|
|
1644
|
+
></button>
|
|
1645
1645
|
</mat-form-field>
|
|
1646
1646
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.ariaLabel', 'aria-label') }}</mat-label>
|
|
1647
1647
|
<input matInput [(ngModel)]="group.ariaLabel" (ngModelChange)="onAppearanceChange()" />
|
|
@@ -1656,6 +1656,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1656
1656
|
<mat-slide-toggle [(ngModel)]="group.disablePagination" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.disablePagination', 'Sem paginacao') }}</mat-slide-toggle>
|
|
1657
1657
|
<mat-slide-toggle [(ngModel)]="group.disableRipple" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.disableRipple', 'Sem ripple') }}</mat-slide-toggle>
|
|
1658
1658
|
<mat-slide-toggle [(ngModel)]="group.preserveContent" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.preserveContent', 'Preservar conteudo') }}</mat-slide-toggle>
|
|
1659
|
+
<mat-slide-toggle [ngModel]="group.renderBody !== false" (ngModelChange)="group.renderBody = $event ? undefined : false; onAppearanceChange()">{{ t('editor.toggles.renderBody', 'Renderizar conteudo interno') }}</mat-slide-toggle>
|
|
1659
1660
|
<mat-slide-toggle [(ngModel)]="group.stretchTabs" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.stretchTabs', 'Esticar abas') }}</mat-slide-toggle>
|
|
1660
1661
|
</div>
|
|
1661
1662
|
</div>
|
|
@@ -1667,28 +1668,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1667
1668
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
|
|
1668
1669
|
<input matInput type="number" [(ngModel)]="nav.selectedIndex" (ngModelChange)="onAppearanceChange()" />
|
|
1669
1670
|
<button
|
|
1670
|
-
|
|
1671
|
+
praxisIconButton="help_outline"
|
|
1672
|
+
size="dense"
|
|
1671
1673
|
matSuffix
|
|
1672
|
-
class="help-icon-button"
|
|
1673
1674
|
type="button"
|
|
1674
1675
|
[matTooltip]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1676
|
+
[attr.aria-label]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1675
1677
|
matTooltipPosition="above"
|
|
1676
|
-
|
|
1677
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1678
|
-
</button>
|
|
1678
|
+
></button>
|
|
1679
1679
|
</mat-form-field>
|
|
1680
1680
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.animationDuration', 'Duracao da animacao') }}</mat-label>
|
|
1681
1681
|
<input matInput [(ngModel)]="nav.animationDuration" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.fields.placeholder.animationDuration', '500ms')" />
|
|
1682
1682
|
<button
|
|
1683
|
-
|
|
1683
|
+
praxisIconButton="help_outline"
|
|
1684
|
+
size="dense"
|
|
1684
1685
|
matSuffix
|
|
1685
|
-
class="help-icon-button"
|
|
1686
1686
|
type="button"
|
|
1687
1687
|
[matTooltip]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1688
|
+
[attr.aria-label]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1688
1689
|
matTooltipPosition="above"
|
|
1689
|
-
|
|
1690
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1691
|
-
</button>
|
|
1690
|
+
></button>
|
|
1692
1691
|
</mat-form-field>
|
|
1693
1692
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.ariaLabel', 'aria-label') }}</mat-label>
|
|
1694
1693
|
<input matInput [(ngModel)]="nav.ariaLabel" (ngModelChange)="onAppearanceChange()" />
|
|
@@ -1704,15 +1703,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1704
1703
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1705
1704
|
</select>
|
|
1706
1705
|
<button
|
|
1707
|
-
|
|
1706
|
+
praxisIconButton="help_outline"
|
|
1707
|
+
size="dense"
|
|
1708
1708
|
matSuffix
|
|
1709
|
-
class="help-icon-button"
|
|
1710
1709
|
type="button"
|
|
1711
1710
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1711
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1712
1712
|
matTooltipPosition="above"
|
|
1713
|
-
|
|
1714
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1715
|
-
</button>
|
|
1713
|
+
></button>
|
|
1716
1714
|
</mat-form-field>
|
|
1717
1715
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
|
|
1718
1716
|
<select matNativeControl [(ngModel)]="nav.backgroundColor" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1722,21 +1720,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1722
1720
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1723
1721
|
</select>
|
|
1724
1722
|
<button
|
|
1725
|
-
|
|
1723
|
+
praxisIconButton="help_outline"
|
|
1724
|
+
size="dense"
|
|
1726
1725
|
matSuffix
|
|
1727
|
-
class="help-icon-button"
|
|
1728
1726
|
type="button"
|
|
1729
1727
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1728
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1730
1729
|
matTooltipPosition="above"
|
|
1731
|
-
|
|
1732
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1733
|
-
</button>
|
|
1730
|
+
></button>
|
|
1734
1731
|
</mat-form-field>
|
|
1735
1732
|
</div>
|
|
1736
1733
|
<div class="editor-row">
|
|
1737
1734
|
<mat-slide-toggle [(ngModel)]="nav.fitInkBarToContent" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.fitInkBarToContent', 'Indicador ajustado ao conteudo') }}</mat-slide-toggle>
|
|
1738
1735
|
<mat-slide-toggle [(ngModel)]="nav.disablePagination" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.disablePagination', 'Sem paginacao') }}</mat-slide-toggle>
|
|
1739
1736
|
<mat-slide-toggle [(ngModel)]="nav.disableRipple" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.disableRipple', 'Sem ripple') }}</mat-slide-toggle>
|
|
1737
|
+
<mat-slide-toggle [ngModel]="nav.renderBody !== false" (ngModelChange)="nav.renderBody = $event ? undefined : false; onAppearanceChange()">{{ t('editor.toggles.renderBody', 'Renderizar conteudo interno') }}</mat-slide-toggle>
|
|
1740
1738
|
<mat-slide-toggle [(ngModel)]="nav.stretchTabs" (ngModelChange)="onAppearanceChange()">{{ t('editor.toggles.stretchTabs', 'Esticar abas') }}</mat-slide-toggle>
|
|
1741
1739
|
</div>
|
|
1742
1740
|
</div>
|
|
@@ -1815,14 +1813,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1815
1813
|
<div class="editor-title-row">
|
|
1816
1814
|
<h3 class="editor-title">{{ t('editor.sections.tokens', 'Tokens (Material 3)') }}</h3>
|
|
1817
1815
|
<button
|
|
1818
|
-
|
|
1819
|
-
|
|
1816
|
+
praxisIconButton="help_outline"
|
|
1817
|
+
size="dense"
|
|
1820
1818
|
type="button"
|
|
1821
1819
|
[matTooltip]="t('editor.hints.tokenValueHelp', 'Valores aceitam CSS vars ou cores hex/rgb.')"
|
|
1820
|
+
[attr.aria-label]="t('editor.hints.tokenValueHelp', 'Valores aceitam CSS vars ou cores hex/rgb.')"
|
|
1822
1821
|
matTooltipPosition="above"
|
|
1823
|
-
|
|
1824
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1825
|
-
</button>
|
|
1822
|
+
></button>
|
|
1826
1823
|
</div>
|
|
1827
1824
|
<div class="editor-grid two">
|
|
1828
1825
|
@for (token of tokenList; track token) {
|
|
@@ -1861,9 +1858,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1861
1858
|
<div class="editor-card">
|
|
1862
1859
|
<div class="editor-card-header">
|
|
1863
1860
|
<strong class="editor-card-title">{{ t('editor.cards.tab', 'Aba') }} #{{ i+1 }}</strong>
|
|
1864
|
-
<button
|
|
1865
|
-
<button
|
|
1866
|
-
<button
|
|
1861
|
+
<button praxisIconButton="arrow_upward" size="compact" type="button" (click)="moveTab(i, -1)" [disabled]="i===0" [matTooltip]="t('editor.actions.moveTabUp', 'Mover aba para cima')" [attr.aria-label]="t('editor.actions.moveTabUp', 'Mover aba para cima')"></button>
|
|
1862
|
+
<button praxisIconButton="arrow_downward" size="compact" type="button" (click)="moveTab(i, 1)" [disabled]="i===editedConfig.tabs!.length-1" [matTooltip]="t('editor.actions.moveTabDown', 'Mover aba para baixo')" [attr.aria-label]="t('editor.actions.moveTabDown', 'Mover aba para baixo')"></button>
|
|
1863
|
+
<button praxisIconButton="delete" size="compact" type="button" class="editor-icon-action--danger" (click)="removeTab(i)" [matTooltip]="t('editor.actions.removeTab', 'Remover aba')" [attr.aria-label]="t('editor.actions.removeTab', 'Remover aba')"></button>
|
|
1867
1864
|
</div>
|
|
1868
1865
|
<div class="editor-grid two tight">
|
|
1869
1866
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.id', 'ID') }}</mat-label>
|
|
@@ -1919,11 +1916,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1919
1916
|
@for (w of tab.widgets; track w; let wi = $index) {
|
|
1920
1917
|
<div cdkDrag class="editor-card dashed">
|
|
1921
1918
|
<div class="editor-card-header">
|
|
1922
|
-
<button
|
|
1923
|
-
<mat-icon [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
1924
|
-
</button>
|
|
1919
|
+
<button praxisIconButton="drag_indicator" size="compact" type="button" cdkDragHandle [matTooltip]="t('editor.actions.dragToReorder', 'Arrastar para reordenar')" [attr.aria-label]="t('editor.actions.dragToReorder', 'Arrastar para reordenar')"></button>
|
|
1925
1920
|
<strong class="editor-card-title">{{ getCompName(w.id) }}</strong>
|
|
1926
|
-
<button
|
|
1921
|
+
<button praxisIconButton="delete" size="compact" type="button" class="editor-icon-action--danger" (click)="removeWidgetFromTab(i, wi)" [matTooltip]="t('editor.actions.removeComponent', 'Remover componente')" [attr.aria-label]="t('editor.actions.removeComponent', 'Remover componente')"></button>
|
|
1927
1922
|
</div>
|
|
1928
1923
|
<div class="editor-grid two tight">
|
|
1929
1924
|
<mat-form-field appearance="outline">
|
|
@@ -1967,9 +1962,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1967
1962
|
<div class="editor-card">
|
|
1968
1963
|
<div class="editor-card-header">
|
|
1969
1964
|
<strong class="editor-card-title">{{ t('editor.cards.link', 'Link') }} #{{ i+1 }}</strong>
|
|
1970
|
-
<button
|
|
1971
|
-
<button
|
|
1972
|
-
<button
|
|
1965
|
+
<button praxisIconButton="arrow_upward" size="compact" type="button" (click)="moveLink(i, -1)" [disabled]="i===0" [matTooltip]="t('editor.actions.moveLinkUp', 'Mover link para cima')" [attr.aria-label]="t('editor.actions.moveLinkUp', 'Mover link para cima')"></button>
|
|
1966
|
+
<button praxisIconButton="arrow_downward" size="compact" type="button" (click)="moveLink(i, 1)" [disabled]="i===nav.links!.length-1" [matTooltip]="t('editor.actions.moveLinkDown', 'Mover link para baixo')" [attr.aria-label]="t('editor.actions.moveLinkDown', 'Mover link para baixo')"></button>
|
|
1967
|
+
<button praxisIconButton="delete" size="compact" type="button" class="editor-icon-action--danger" (click)="removeLink(i)" [matTooltip]="t('editor.actions.removeLink', 'Remover link')" [attr.aria-label]="t('editor.actions.removeLink', 'Remover link')"></button>
|
|
1973
1968
|
</div>
|
|
1974
1969
|
<div class="editor-grid two tight">
|
|
1975
1970
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.id', 'ID') }}</mat-label>
|
|
@@ -2015,11 +2010,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2015
2010
|
@for (w of l.widgets; track w; let wi = $index) {
|
|
2016
2011
|
<div cdkDrag class="editor-card dashed">
|
|
2017
2012
|
<div class="editor-card-header">
|
|
2018
|
-
<button
|
|
2019
|
-
<mat-icon [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
2020
|
-
</button>
|
|
2013
|
+
<button praxisIconButton="drag_indicator" size="compact" type="button" cdkDragHandle [matTooltip]="t('editor.actions.dragToReorder', 'Arrastar para reordenar')" [attr.aria-label]="t('editor.actions.dragToReorder', 'Arrastar para reordenar')"></button>
|
|
2021
2014
|
<strong class="editor-card-title">{{ getCompName(w.id) }}</strong>
|
|
2022
|
-
<button
|
|
2015
|
+
<button praxisIconButton="delete" size="compact" type="button" class="editor-icon-action--danger" (click)="removeWidgetFromLink(i, wi)" [matTooltip]="t('editor.actions.removeComponent', 'Remover componente')" [attr.aria-label]="t('editor.actions.removeComponent', 'Remover componente')"></button>
|
|
2023
2016
|
</div>
|
|
2024
2017
|
<div class="editor-grid two tight">
|
|
2025
2018
|
<mat-form-field appearance="outline">
|
|
@@ -2046,7 +2039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2046
2039
|
</mat-tab>
|
|
2047
2040
|
</mat-tab-group>
|
|
2048
2041
|
</div>
|
|
2049
|
-
`, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.editor-shell{display:grid;gap:12px}.editor-topbar{display:flex;align-items:start;justify-content:flex-start}.editor-mode-field{width:min(320px,100%)}.editor-diagnostics{display:grid;gap:8px}.editor-diagnostics-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.editor-diagnostic{display:grid;gap:4px;padding:10px 12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.editor-diagnostic code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--md-sys-color-on-surface-variant)}.editor-diagnostic.level-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-color:var(--md-sys-color-error)}.editor-diagnostic.level-warning{background:var(--md-sys-color-tertiary-container, var(--md-sys-color-surface-container));color:var(--md-sys-color-on-tertiary-container, var(--md-sys-color-on-surface));border-color:var(--md-sys-color-outline-variant)}.editor-tabs{--editor-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--editor-border: 1px solid var(--md-sys-color-outline-variant);--editor-radius: 12px;--editor-muted: var(--md-sys-color-on-surface-variant)}.editor-section{padding:12px;display:grid;gap:12px;background:var(--editor-surface);border:var(--editor-border);border-radius:var(--editor-radius)}.editor-section-lg{gap:16px}.editor-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;gap:12px}.editor-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.editor-grid.tight{gap:8px}.editor-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-muted{color:var(--editor-muted)}.editor-title{margin:6px 0 8px;font-size:1rem}.editor-title-row{display:flex;align-items:center;gap:8px}.editor-code{white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:8px;border-radius:6px;border:1px solid var(--md-sys-color-outline-variant)}.editor-card{border:1px solid var(--md-sys-color-outline-variant);padding:10px;border-radius:10px;display:grid;gap:8px;background:var(--md-sys-color-surface)}.editor-card.dashed{border-style:dashed}.editor-card-header{display:flex;align-items:center;gap:8px}.editor-card-title{flex:1;font-weight:600}.editor-divider{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.editor-spacer{flex:1}.editor-field-min{min-width:260px}.editor-section .editor-field-min{width:260px;max-width:260px}.editor-field-240{width:240px}.editor-section .editor-field-240{width:240px;max-width:240px}.editor-json{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.editor-section .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.editor-section .mat-mdc-form-field.full{max-width:none}.
|
|
2042
|
+
`, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.editor-shell{display:grid;gap:12px}.editor-topbar{display:flex;align-items:start;justify-content:flex-start}.editor-mode-field{width:min(320px,100%)}.editor-diagnostics{display:grid;gap:8px}.editor-diagnostics-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.editor-diagnostic{display:grid;gap:4px;padding:10px 12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.editor-diagnostic code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--md-sys-color-on-surface-variant)}.editor-diagnostic.level-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-color:var(--md-sys-color-error)}.editor-diagnostic.level-warning{background:var(--md-sys-color-tertiary-container, var(--md-sys-color-surface-container));color:var(--md-sys-color-on-tertiary-container, var(--md-sys-color-on-surface));border-color:var(--md-sys-color-outline-variant)}.editor-tabs{--editor-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--editor-border: 1px solid var(--md-sys-color-outline-variant);--editor-radius: 12px;--editor-muted: var(--md-sys-color-on-surface-variant)}.editor-section{padding:12px;display:grid;gap:12px;background:var(--editor-surface);border:var(--editor-border);border-radius:var(--editor-radius)}.editor-section-lg{gap:16px}.editor-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;gap:12px}.editor-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.editor-grid.tight{gap:8px}.editor-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-muted{color:var(--editor-muted)}.editor-title{margin:6px 0 8px;font-size:1rem}.editor-title-row{display:flex;align-items:center;gap:8px}.editor-code{white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:8px;border-radius:6px;border:1px solid var(--md-sys-color-outline-variant)}.editor-card{border:1px solid var(--md-sys-color-outline-variant);padding:10px;border-radius:10px;display:grid;gap:8px;background:var(--md-sys-color-surface)}.editor-card.dashed{border-style:dashed}.editor-card-header{display:flex;align-items:center;gap:8px}.editor-card-title{flex:1;font-weight:600}.editor-divider{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.editor-spacer{flex:1}.editor-field-min{min-width:260px}.editor-section .editor-field-min{width:260px;max-width:260px}.editor-field-240{width:240px}.editor-section .editor-field-240{width:240px;max-width:240px}.editor-json{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.editor-section .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.editor-section .mat-mdc-form-field.full{max-width:none}.editor-icon-action--danger{color:var(--md-sys-color-error)}\n"] }]
|
|
2050
2043
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2051
2044
|
type: Inject,
|
|
2052
2045
|
args: [SETTINGS_PANEL_DATA]
|
|
@@ -2178,7 +2171,7 @@ class TabsQuickSetupComponent {
|
|
|
2178
2171
|
@for (l of model.labels; track l; let i = $index) {
|
|
2179
2172
|
<div class="chip">
|
|
2180
2173
|
<span>{{ l }}</span>
|
|
2181
|
-
<button
|
|
2174
|
+
<button praxisIconButton="close" size="dense" type="button" (click)="removeLabel(i)" [attr.aria-label]="t('editor.actions.removeLabel', 'Remover rotulo')"></button>
|
|
2182
2175
|
</div>
|
|
2183
2176
|
}
|
|
2184
2177
|
</div>
|
|
@@ -2191,7 +2184,7 @@ class TabsQuickSetupComponent {
|
|
|
2191
2184
|
<mat-slide-toggle [(ngModel)]="model.stretchTabs" (ngModelChange)="updateState()">{{ t('editor.toggles.stretchTabs', 'Esticar abas') }}</mat-slide-toggle>
|
|
2192
2185
|
</div>
|
|
2193
2186
|
</div>
|
|
2194
|
-
`, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.setup-root{display:grid;gap:12px;padding:8px;background:var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.setup-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.setup-row.wrap{flex-wrap:wrap}.setup-grid{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start}.setup-root .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;background:var(--md-sys-color-surface)}.hint{color:var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2_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: i2_1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2_1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.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: "
|
|
2187
|
+
`, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.setup-root{display:grid;gap:12px;padding:8px;background:var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.setup-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.setup-row.wrap{flex-wrap:wrap}.setup-grid{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start}.setup-root .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;background:var(--md-sys-color-surface)}.hint{color:var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2_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: i2_1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2_1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.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: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i8.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"] }] });
|
|
2195
2188
|
}
|
|
2196
2189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TabsQuickSetupComponent, decorators: [{
|
|
2197
2190
|
type: Component,
|
|
@@ -2201,6 +2194,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2201
2194
|
MatInputModule,
|
|
2202
2195
|
MatIconModule,
|
|
2203
2196
|
PraxisIconDirective,
|
|
2197
|
+
PraxisIconButtonComponent,
|
|
2204
2198
|
MatButtonModule,
|
|
2205
2199
|
MatSlideToggleModule
|
|
2206
2200
|
], providers: [providePraxisI18nConfig(PRAXIS_TABS_I18N_CONFIG)], template: `
|
|
@@ -2232,7 +2226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2232
2226
|
@for (l of model.labels; track l; let i = $index) {
|
|
2233
2227
|
<div class="chip">
|
|
2234
2228
|
<span>{{ l }}</span>
|
|
2235
|
-
<button
|
|
2229
|
+
<button praxisIconButton="close" size="dense" type="button" (click)="removeLabel(i)" [attr.aria-label]="t('editor.actions.removeLabel', 'Remover rotulo')"></button>
|
|
2236
2230
|
</div>
|
|
2237
2231
|
}
|
|
2238
2232
|
</div>
|
|
@@ -3964,6 +3958,12 @@ class PraxisTabs {
|
|
|
3964
3958
|
groupContentReady(index) {
|
|
3965
3959
|
return !this.isLazy() || this.groupLoaded.has(index) || this.selectedIndexSignal() === index;
|
|
3966
3960
|
}
|
|
3961
|
+
shouldRenderGroupBody() {
|
|
3962
|
+
return this.config?.group?.renderBody !== false;
|
|
3963
|
+
}
|
|
3964
|
+
shouldRenderNavBody() {
|
|
3965
|
+
return this.config?.nav?.renderBody !== false;
|
|
3966
|
+
}
|
|
3967
3967
|
navContentReady(index) {
|
|
3968
3968
|
return !this.isLazy() || this.navLoaded.has(index) || this.currentNavIndex() === index;
|
|
3969
3969
|
}
|
|
@@ -4350,18 +4350,21 @@ class PraxisTabs {
|
|
|
4350
4350
|
>
|
|
4351
4351
|
@if (config?.behavior?.reorderable) {
|
|
4352
4352
|
<span class="drag-handle" cdkDragHandle>
|
|
4353
|
-
<mat-icon fontIcon="drag_indicator"></mat-icon>
|
|
4353
|
+
<mat-icon aria-hidden="true" fontIcon="drag_indicator"></mat-icon>
|
|
4354
4354
|
</span>
|
|
4355
4355
|
}
|
|
4356
4356
|
@if (entry.link.icon) {
|
|
4357
|
-
<mat-icon class="tab-label-icon" [praxisIcon]="entry.link.icon"></mat-icon>
|
|
4357
|
+
<mat-icon aria-hidden="true" class="tab-label-icon" [praxisIcon]="entry.link.icon"></mat-icon>
|
|
4358
4358
|
}
|
|
4359
4359
|
{{ entry.link.label }}
|
|
4360
4360
|
</a>
|
|
4361
4361
|
}
|
|
4362
4362
|
</nav>
|
|
4363
|
-
<mat-tab-nav-panel
|
|
4364
|
-
|
|
4363
|
+
<mat-tab-nav-panel
|
|
4364
|
+
#tabPanel
|
|
4365
|
+
[class.praxis-tabs-nav-panel--header-only]="!shouldRenderNavBody()"
|
|
4366
|
+
>
|
|
4367
|
+
@if (shouldRenderNavBody() && currentNavIndex() >= 0) {
|
|
4365
4368
|
<div class="praxis-tabnav-content">
|
|
4366
4369
|
@if (config?.nav?.links?.[currentNavIndex()]; as l) {
|
|
4367
4370
|
@if ((l.content?.length || safeWidgetDefinitions(l.widgets).length) && navContentReady(currentNavIndex())) {
|
|
@@ -4396,6 +4399,7 @@ class PraxisTabs {
|
|
|
4396
4399
|
</mat-tab-nav-panel>
|
|
4397
4400
|
} @else {
|
|
4398
4401
|
<mat-tab-group
|
|
4402
|
+
[class.praxis-tabs-group--header-only]="!shouldRenderGroupBody()"
|
|
4399
4403
|
[dynamicHeight]="config?.group?.dynamicHeight"
|
|
4400
4404
|
[disableRipple]="config?.group?.disableRipple"
|
|
4401
4405
|
[disablePagination]="config?.group?.disablePagination"
|
|
@@ -4427,46 +4431,44 @@ class PraxisTabs {
|
|
|
4427
4431
|
>
|
|
4428
4432
|
<ng-template mat-tab-label>
|
|
4429
4433
|
@if (entry.tab.icon) {
|
|
4430
|
-
<mat-icon class="tab-label-icon" [praxisIcon]="entry.tab.icon"></mat-icon>
|
|
4434
|
+
<mat-icon aria-hidden="true" class="tab-label-icon" [praxisIcon]="entry.tab.icon"></mat-icon>
|
|
4431
4435
|
}
|
|
4432
4436
|
<span>{{ entry.tab.textLabel }}</span>
|
|
4433
4437
|
@if (config?.behavior?.closeable) {
|
|
4434
4438
|
<button
|
|
4435
|
-
|
|
4439
|
+
praxisIconButton="close"
|
|
4440
|
+
size="dense"
|
|
4436
4441
|
type="button"
|
|
4437
4442
|
(click)="closeTab(entry.index); $event.stopPropagation()"
|
|
4438
4443
|
(keydown.enter)="$event.stopPropagation()"
|
|
4439
4444
|
(keydown.space)="$event.stopPropagation()"
|
|
4440
4445
|
[attr.aria-label]="t('chrome.closeTab', 'Fechar aba')"
|
|
4441
|
-
|
|
4442
|
-
<mat-icon fontIcon="close"></mat-icon>
|
|
4443
|
-
</button>
|
|
4446
|
+
></button>
|
|
4444
4447
|
}
|
|
4445
4448
|
@if (config?.behavior?.reorderable) {
|
|
4446
4449
|
<button
|
|
4447
|
-
|
|
4450
|
+
praxisIconButton="arrow_back"
|
|
4451
|
+
size="dense"
|
|
4448
4452
|
type="button"
|
|
4449
4453
|
(click)="moveTab(entry.index, -1); $event.stopPropagation()"
|
|
4450
4454
|
(keydown.enter)="$event.stopPropagation()"
|
|
4451
4455
|
(keydown.space)="$event.stopPropagation()"
|
|
4452
4456
|
[disabled]="entry.index===0"
|
|
4453
4457
|
[attr.aria-label]="t('chrome.moveTabLeft', 'Mover aba para esquerda')"
|
|
4454
|
-
|
|
4455
|
-
<mat-icon fontIcon="arrow_back"></mat-icon>
|
|
4456
|
-
</button>
|
|
4458
|
+
></button>
|
|
4457
4459
|
<button
|
|
4458
|
-
|
|
4460
|
+
praxisIconButton="arrow_forward"
|
|
4461
|
+
size="dense"
|
|
4459
4462
|
type="button"
|
|
4460
4463
|
(click)="moveTab(entry.index, 1); $event.stopPropagation()"
|
|
4461
4464
|
(keydown.enter)="$event.stopPropagation()"
|
|
4462
4465
|
(keydown.space)="$event.stopPropagation()"
|
|
4463
4466
|
[disabled]="entry.index===(config?.tabs?.length||1)-1"
|
|
4464
4467
|
[attr.aria-label]="t('chrome.moveTabRight', 'Mover aba para direita')"
|
|
4465
|
-
|
|
4466
|
-
<mat-icon fontIcon="arrow_forward"></mat-icon>
|
|
4467
|
-
</button>
|
|
4468
|
+
></button>
|
|
4468
4469
|
}
|
|
4469
4470
|
</ng-template>
|
|
4471
|
+
@if (shouldRenderGroupBody()) {
|
|
4470
4472
|
@if ((entry.tab.content?.length || safeWidgetDefinitions(entry.tab.widgets).length) && groupContentReady(entry.index)) {
|
|
4471
4473
|
@if (entry.tab.content) {
|
|
4472
4474
|
<ng-container
|
|
@@ -4493,6 +4495,7 @@ class PraxisTabs {
|
|
|
4493
4495
|
[primaryAction]="{ label: t('emptyState.openEditor', 'Abrir editor'), icon: 'tune', action: openEditor.bind(this) }"
|
|
4494
4496
|
></praxis-empty-state-card>
|
|
4495
4497
|
}
|
|
4498
|
+
}
|
|
4496
4499
|
</mat-tab>
|
|
4497
4500
|
}
|
|
4498
4501
|
</mat-tab-group>
|
|
@@ -4509,7 +4512,7 @@ class PraxisTabs {
|
|
|
4509
4512
|
[attr.aria-label]="t('chrome.editTabs', 'Editar abas')"
|
|
4510
4513
|
(click)="openEditor()"
|
|
4511
4514
|
>
|
|
4512
|
-
<mat-icon fontIcon="edit"></mat-icon>
|
|
4515
|
+
<mat-icon aria-hidden="true" fontIcon="edit"></mat-icon>
|
|
4513
4516
|
</button>
|
|
4514
4517
|
}
|
|
4515
4518
|
@if (enableCustomization && tabsId) {
|
|
@@ -4520,11 +4523,11 @@ class PraxisTabs {
|
|
|
4520
4523
|
(click)="resetPreferences()"
|
|
4521
4524
|
[matTooltip]="t('settings.resetPreferences', 'Redefinir preferencias de abas')"
|
|
4522
4525
|
>
|
|
4523
|
-
<mat-icon [praxisIcon]="'restart_alt'"></mat-icon>
|
|
4526
|
+
<mat-icon aria-hidden="true" [praxisIcon]="'restart_alt'"></mat-icon>
|
|
4524
4527
|
</button>
|
|
4525
4528
|
}
|
|
4526
4529
|
</div>
|
|
4527
|
-
`, isInline: true, styles: [".praxis-tabs-root{position:relative;display:block}.praxis-tabs-group.align-start .mat-mdc-tab-header{justify-content:flex-start}.praxis-tabs-group.align-center .mat-mdc-tab-header{justify-content:center}.praxis-tabs-group.align-end .mat-mdc-tab-header{justify-content:flex-end}.density-compact .mat-mdc-tab-body-content{padding:8px}.density-comfortable .mat-mdc-tab-body-content{padding:16px}.density-spacious .mat-mdc-tab-body-content{padding:24px}.tabs-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.tabs-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2)}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.edit-fab-secondary{right:56px}.tab-empty{padding:16px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.high-contrast{filter:contrast(1.2)}.reduce-motion{--mat-animation-duration: 0ms}.drag-handle{display:inline-flex;align-items:center;vertical-align:middle;margin-right:4px;cursor:grab}.tab-label-icon{font-size:18px;width:18px;height:18px;margin-right:6px;vertical-align:middle}:host-context(.pdx-gridster-item) .praxis-tabs-root{display:flex;flex-direction:column;height:100%;min-height:0}:host-context(.pdx-gridster-item) .praxis-tabs-group,:host-context(.pdx-gridster-item) .mat-mdc-tab-group{flex:1 1 auto;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-wrapper,:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{height:100%;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{overflow:auto}:host-context(.pdx-gridster-item) .praxis-tabnav-content{flex:1 1 auto;min-height:0;overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2_1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2_1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i3.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i3.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i3.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i3.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.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: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "
|
|
4530
|
+
`, isInline: true, styles: [".praxis-tabs-root{position:relative;display:block}.praxis-tabs-group.align-start .mat-mdc-tab-header{justify-content:flex-start}.praxis-tabs-group.align-center .mat-mdc-tab-header{justify-content:center}.praxis-tabs-group.align-end .mat-mdc-tab-header{justify-content:flex-end}.praxis-tabs-group--header-only .mat-mdc-tab-body-wrapper,.praxis-tabs-nav-panel--header-only{display:none}.density-compact .mat-mdc-tab-body-content{padding:8px}.density-comfortable .mat-mdc-tab-body-content{padding:16px}.density-spacious .mat-mdc-tab-body-content{padding:24px}.tabs-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.tabs-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2)}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.edit-fab-secondary{right:56px}.tab-empty{padding:16px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.high-contrast{filter:contrast(1.2)}.reduce-motion{--mat-animation-duration: 0ms}.drag-handle{display:inline-flex;align-items:center;vertical-align:middle;margin-right:4px;cursor:grab}.tab-label-icon{font-size:18px;width:18px;height:18px;margin-right:6px;vertical-align:middle}:host-context(.pdx-gridster-item) .praxis-tabs-root{display:flex;flex-direction:column;height:100%;min-height:0}:host-context(.pdx-gridster-item) .praxis-tabs-group,:host-context(.pdx-gridster-item) .mat-mdc-tab-group{flex:1 1 auto;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-wrapper,:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{height:100%;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{overflow:auto}:host-context(.pdx-gridster-item) .praxis-tabnav-content{flex:1 1 auto;min-height:0;overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2_1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2_1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i3.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i3.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i3.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i3.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.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: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i9.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: i9.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: i9.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone", "variant", "alignment", "density", "iconContainer"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick", "canvasFocus"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "recommendedIntents", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "voiceInputMode", "voiceLanguage", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "recommendedIntent", "layoutChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4528
4531
|
}
|
|
4529
4532
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisTabs, decorators: [{
|
|
4530
4533
|
type: Component,
|
|
@@ -4535,6 +4538,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4535
4538
|
MatIconModule,
|
|
4536
4539
|
MatTooltipModule,
|
|
4537
4540
|
PraxisIconDirective,
|
|
4541
|
+
PraxisIconButtonComponent,
|
|
4538
4542
|
MatButtonModule,
|
|
4539
4543
|
DragDropModule,
|
|
4540
4544
|
EmptyStateCardComponent,
|
|
@@ -4659,18 +4663,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4659
4663
|
>
|
|
4660
4664
|
@if (config?.behavior?.reorderable) {
|
|
4661
4665
|
<span class="drag-handle" cdkDragHandle>
|
|
4662
|
-
<mat-icon fontIcon="drag_indicator"></mat-icon>
|
|
4666
|
+
<mat-icon aria-hidden="true" fontIcon="drag_indicator"></mat-icon>
|
|
4663
4667
|
</span>
|
|
4664
4668
|
}
|
|
4665
4669
|
@if (entry.link.icon) {
|
|
4666
|
-
<mat-icon class="tab-label-icon" [praxisIcon]="entry.link.icon"></mat-icon>
|
|
4670
|
+
<mat-icon aria-hidden="true" class="tab-label-icon" [praxisIcon]="entry.link.icon"></mat-icon>
|
|
4667
4671
|
}
|
|
4668
4672
|
{{ entry.link.label }}
|
|
4669
4673
|
</a>
|
|
4670
4674
|
}
|
|
4671
4675
|
</nav>
|
|
4672
|
-
<mat-tab-nav-panel
|
|
4673
|
-
|
|
4676
|
+
<mat-tab-nav-panel
|
|
4677
|
+
#tabPanel
|
|
4678
|
+
[class.praxis-tabs-nav-panel--header-only]="!shouldRenderNavBody()"
|
|
4679
|
+
>
|
|
4680
|
+
@if (shouldRenderNavBody() && currentNavIndex() >= 0) {
|
|
4674
4681
|
<div class="praxis-tabnav-content">
|
|
4675
4682
|
@if (config?.nav?.links?.[currentNavIndex()]; as l) {
|
|
4676
4683
|
@if ((l.content?.length || safeWidgetDefinitions(l.widgets).length) && navContentReady(currentNavIndex())) {
|
|
@@ -4705,6 +4712,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4705
4712
|
</mat-tab-nav-panel>
|
|
4706
4713
|
} @else {
|
|
4707
4714
|
<mat-tab-group
|
|
4715
|
+
[class.praxis-tabs-group--header-only]="!shouldRenderGroupBody()"
|
|
4708
4716
|
[dynamicHeight]="config?.group?.dynamicHeight"
|
|
4709
4717
|
[disableRipple]="config?.group?.disableRipple"
|
|
4710
4718
|
[disablePagination]="config?.group?.disablePagination"
|
|
@@ -4736,46 +4744,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4736
4744
|
>
|
|
4737
4745
|
<ng-template mat-tab-label>
|
|
4738
4746
|
@if (entry.tab.icon) {
|
|
4739
|
-
<mat-icon class="tab-label-icon" [praxisIcon]="entry.tab.icon"></mat-icon>
|
|
4747
|
+
<mat-icon aria-hidden="true" class="tab-label-icon" [praxisIcon]="entry.tab.icon"></mat-icon>
|
|
4740
4748
|
}
|
|
4741
4749
|
<span>{{ entry.tab.textLabel }}</span>
|
|
4742
4750
|
@if (config?.behavior?.closeable) {
|
|
4743
4751
|
<button
|
|
4744
|
-
|
|
4752
|
+
praxisIconButton="close"
|
|
4753
|
+
size="dense"
|
|
4745
4754
|
type="button"
|
|
4746
4755
|
(click)="closeTab(entry.index); $event.stopPropagation()"
|
|
4747
4756
|
(keydown.enter)="$event.stopPropagation()"
|
|
4748
4757
|
(keydown.space)="$event.stopPropagation()"
|
|
4749
4758
|
[attr.aria-label]="t('chrome.closeTab', 'Fechar aba')"
|
|
4750
|
-
|
|
4751
|
-
<mat-icon fontIcon="close"></mat-icon>
|
|
4752
|
-
</button>
|
|
4759
|
+
></button>
|
|
4753
4760
|
}
|
|
4754
4761
|
@if (config?.behavior?.reorderable) {
|
|
4755
4762
|
<button
|
|
4756
|
-
|
|
4763
|
+
praxisIconButton="arrow_back"
|
|
4764
|
+
size="dense"
|
|
4757
4765
|
type="button"
|
|
4758
4766
|
(click)="moveTab(entry.index, -1); $event.stopPropagation()"
|
|
4759
4767
|
(keydown.enter)="$event.stopPropagation()"
|
|
4760
4768
|
(keydown.space)="$event.stopPropagation()"
|
|
4761
4769
|
[disabled]="entry.index===0"
|
|
4762
4770
|
[attr.aria-label]="t('chrome.moveTabLeft', 'Mover aba para esquerda')"
|
|
4763
|
-
|
|
4764
|
-
<mat-icon fontIcon="arrow_back"></mat-icon>
|
|
4765
|
-
</button>
|
|
4771
|
+
></button>
|
|
4766
4772
|
<button
|
|
4767
|
-
|
|
4773
|
+
praxisIconButton="arrow_forward"
|
|
4774
|
+
size="dense"
|
|
4768
4775
|
type="button"
|
|
4769
4776
|
(click)="moveTab(entry.index, 1); $event.stopPropagation()"
|
|
4770
4777
|
(keydown.enter)="$event.stopPropagation()"
|
|
4771
4778
|
(keydown.space)="$event.stopPropagation()"
|
|
4772
4779
|
[disabled]="entry.index===(config?.tabs?.length||1)-1"
|
|
4773
4780
|
[attr.aria-label]="t('chrome.moveTabRight', 'Mover aba para direita')"
|
|
4774
|
-
|
|
4775
|
-
<mat-icon fontIcon="arrow_forward"></mat-icon>
|
|
4776
|
-
</button>
|
|
4781
|
+
></button>
|
|
4777
4782
|
}
|
|
4778
4783
|
</ng-template>
|
|
4784
|
+
@if (shouldRenderGroupBody()) {
|
|
4779
4785
|
@if ((entry.tab.content?.length || safeWidgetDefinitions(entry.tab.widgets).length) && groupContentReady(entry.index)) {
|
|
4780
4786
|
@if (entry.tab.content) {
|
|
4781
4787
|
<ng-container
|
|
@@ -4802,6 +4808,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4802
4808
|
[primaryAction]="{ label: t('emptyState.openEditor', 'Abrir editor'), icon: 'tune', action: openEditor.bind(this) }"
|
|
4803
4809
|
></praxis-empty-state-card>
|
|
4804
4810
|
}
|
|
4811
|
+
}
|
|
4805
4812
|
</mat-tab>
|
|
4806
4813
|
}
|
|
4807
4814
|
</mat-tab-group>
|
|
@@ -4818,7 +4825,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4818
4825
|
[attr.aria-label]="t('chrome.editTabs', 'Editar abas')"
|
|
4819
4826
|
(click)="openEditor()"
|
|
4820
4827
|
>
|
|
4821
|
-
<mat-icon fontIcon="edit"></mat-icon>
|
|
4828
|
+
<mat-icon aria-hidden="true" fontIcon="edit"></mat-icon>
|
|
4822
4829
|
</button>
|
|
4823
4830
|
}
|
|
4824
4831
|
@if (enableCustomization && tabsId) {
|
|
@@ -4829,11 +4836,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4829
4836
|
(click)="resetPreferences()"
|
|
4830
4837
|
[matTooltip]="t('settings.resetPreferences', 'Redefinir preferencias de abas')"
|
|
4831
4838
|
>
|
|
4832
|
-
<mat-icon [praxisIcon]="'restart_alt'"></mat-icon>
|
|
4839
|
+
<mat-icon aria-hidden="true" [praxisIcon]="'restart_alt'"></mat-icon>
|
|
4833
4840
|
</button>
|
|
4834
4841
|
}
|
|
4835
4842
|
</div>
|
|
4836
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".praxis-tabs-root{position:relative;display:block}.praxis-tabs-group.align-start .mat-mdc-tab-header{justify-content:flex-start}.praxis-tabs-group.align-center .mat-mdc-tab-header{justify-content:center}.praxis-tabs-group.align-end .mat-mdc-tab-header{justify-content:flex-end}.density-compact .mat-mdc-tab-body-content{padding:8px}.density-comfortable .mat-mdc-tab-body-content{padding:16px}.density-spacious .mat-mdc-tab-body-content{padding:24px}.tabs-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.tabs-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2)}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.edit-fab-secondary{right:56px}.tab-empty{padding:16px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.high-contrast{filter:contrast(1.2)}.reduce-motion{--mat-animation-duration: 0ms}.drag-handle{display:inline-flex;align-items:center;vertical-align:middle;margin-right:4px;cursor:grab}.tab-label-icon{font-size:18px;width:18px;height:18px;margin-right:6px;vertical-align:middle}:host-context(.pdx-gridster-item) .praxis-tabs-root{display:flex;flex-direction:column;height:100%;min-height:0}:host-context(.pdx-gridster-item) .praxis-tabs-group,:host-context(.pdx-gridster-item) .mat-mdc-tab-group{flex:1 1 auto;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-wrapper,:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{height:100%;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{overflow:auto}:host-context(.pdx-gridster-item) .praxis-tabnav-content{flex:1 1 auto;min-height:0;overflow:auto}\n"] }]
|
|
4843
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".praxis-tabs-root{position:relative;display:block}.praxis-tabs-group.align-start .mat-mdc-tab-header{justify-content:flex-start}.praxis-tabs-group.align-center .mat-mdc-tab-header{justify-content:center}.praxis-tabs-group.align-end .mat-mdc-tab-header{justify-content:flex-end}.praxis-tabs-group--header-only .mat-mdc-tab-body-wrapper,.praxis-tabs-nav-panel--header-only{display:none}.density-compact .mat-mdc-tab-body-content{padding:8px}.density-comfortable .mat-mdc-tab-body-content{padding:16px}.density-spacious .mat-mdc-tab-body-content{padding:24px}.tabs-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.tabs-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2)}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.edit-fab-secondary{right:56px}.tab-empty{padding:16px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.high-contrast{filter:contrast(1.2)}.reduce-motion{--mat-animation-duration: 0ms}.drag-handle{display:inline-flex;align-items:center;vertical-align:middle;margin-right:4px;cursor:grab}.tab-label-icon{font-size:18px;width:18px;height:18px;margin-right:6px;vertical-align:middle}:host-context(.pdx-gridster-item) .praxis-tabs-root{display:flex;flex-direction:column;height:100%;min-height:0}:host-context(.pdx-gridster-item) .praxis-tabs-group,:host-context(.pdx-gridster-item) .mat-mdc-tab-group{flex:1 1 auto;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-wrapper,:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{height:100%;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{overflow:auto}:host-context(.pdx-gridster-item) .praxis-tabnav-content{flex:1 1 auto;min-height:0;overflow:auto}\n"] }]
|
|
4837
4844
|
}], propDecorators: { config: [{
|
|
4838
4845
|
type: Input
|
|
4839
4846
|
}], tabsId: [{
|
|
@@ -5094,7 +5101,7 @@ const PRAXIS_TABS_COMPONENT_METADATA = {
|
|
|
5094
5101
|
name: 'selectedIndex',
|
|
5095
5102
|
type: 'number',
|
|
5096
5103
|
label: 'Indice selecionado',
|
|
5097
|
-
description: 'Indice ativo de abas/nav controlavel externamente pela composicao',
|
|
5104
|
+
description: 'Indice ativo de abas/nav controlavel externamente pela composicao. Para usar tabs como header de navegacao com conteudo externo, configure group.renderBody=false ou nav.renderBody=false.',
|
|
5098
5105
|
},
|
|
5099
5106
|
{
|
|
5100
5107
|
name: 'enableCustomization',
|
|
@@ -5277,6 +5284,7 @@ const PRAXIS_TABS_AUTHORING_MANIFEST = {
|
|
|
5277
5284
|
{ kind: 'visibility', resolver: 'tab-or-link-by-id', description: 'Runtime visibility flag for a group tab or nav link.' },
|
|
5278
5285
|
{ kind: 'disabledState', resolver: 'tab-or-link-by-id', description: 'Disabled state of a tab or nav link.' },
|
|
5279
5286
|
{ kind: 'layout', resolver: 'tabs-layout-config', description: 'Group/nav mode, header position, density, stretch and behavior settings.' },
|
|
5287
|
+
{ kind: 'renderBody', resolver: 'tabs-render-body-config', description: 'Config paths group.renderBody and nav.renderBody that let the host own external body content.' },
|
|
5280
5288
|
],
|
|
5281
5289
|
operations: [
|
|
5282
5290
|
{
|