@praxisui/tabs 9.0.0-beta.84 → 9.0.0-beta.86
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/ai/component-registry.json +2 -2
- package/fesm2022/praxisui-tabs.mjs +120 -149
- package/package.json +5 -5
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-22T03:01:56.888Z",
|
|
4
4
|
"packageName": "@praxisui/tabs",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.86",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -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';
|
|
@@ -1058,28 +1058,26 @@ class PraxisTabsConfigEditor {
|
|
|
1058
1058
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
|
|
1059
1059
|
<input matInput type="number" [(ngModel)]="group.selectedIndex" (ngModelChange)="onAppearanceChange()" />
|
|
1060
1060
|
<button
|
|
1061
|
-
|
|
1061
|
+
praxisIconButton="help_outline"
|
|
1062
|
+
size="dense"
|
|
1062
1063
|
matSuffix
|
|
1063
|
-
class="help-icon-button"
|
|
1064
1064
|
type="button"
|
|
1065
1065
|
[matTooltip]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1066
|
+
[attr.aria-label]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1066
1067
|
matTooltipPosition="above"
|
|
1067
|
-
|
|
1068
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1069
|
-
</button>
|
|
1068
|
+
></button>
|
|
1070
1069
|
</mat-form-field>
|
|
1071
1070
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.animationDuration', 'Duracao da animacao') }}</mat-label>
|
|
1072
1071
|
<input matInput [(ngModel)]="group.animationDuration" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.fields.placeholder.animationDuration', '500ms')" />
|
|
1073
1072
|
<button
|
|
1074
|
-
|
|
1073
|
+
praxisIconButton="help_outline"
|
|
1074
|
+
size="dense"
|
|
1075
1075
|
matSuffix
|
|
1076
|
-
class="help-icon-button"
|
|
1077
1076
|
type="button"
|
|
1078
1077
|
[matTooltip]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1078
|
+
[attr.aria-label]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1079
1079
|
matTooltipPosition="above"
|
|
1080
|
-
|
|
1081
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1082
|
-
</button>
|
|
1080
|
+
></button>
|
|
1083
1081
|
</mat-form-field>
|
|
1084
1082
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.color', 'Cor (M2)') }}</mat-label>
|
|
1085
1083
|
<select matNativeControl [(ngModel)]="group.color" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1089,15 +1087,14 @@ class PraxisTabsConfigEditor {
|
|
|
1089
1087
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1090
1088
|
</select>
|
|
1091
1089
|
<button
|
|
1092
|
-
|
|
1090
|
+
praxisIconButton="help_outline"
|
|
1091
|
+
size="dense"
|
|
1093
1092
|
matSuffix
|
|
1094
|
-
class="help-icon-button"
|
|
1095
1093
|
type="button"
|
|
1096
1094
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1095
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1097
1096
|
matTooltipPosition="above"
|
|
1098
|
-
|
|
1099
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1100
|
-
</button>
|
|
1097
|
+
></button>
|
|
1101
1098
|
</mat-form-field>
|
|
1102
1099
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
|
|
1103
1100
|
<select matNativeControl [(ngModel)]="group.backgroundColor" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1107,15 +1104,14 @@ class PraxisTabsConfigEditor {
|
|
|
1107
1104
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1108
1105
|
</select>
|
|
1109
1106
|
<button
|
|
1110
|
-
|
|
1107
|
+
praxisIconButton="help_outline"
|
|
1108
|
+
size="dense"
|
|
1111
1109
|
matSuffix
|
|
1112
|
-
class="help-icon-button"
|
|
1113
1110
|
type="button"
|
|
1114
1111
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1112
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1115
1113
|
matTooltipPosition="above"
|
|
1116
|
-
|
|
1117
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1118
|
-
</button>
|
|
1114
|
+
></button>
|
|
1119
1115
|
</mat-form-field>
|
|
1120
1116
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.ariaLabel', 'aria-label') }}</mat-label>
|
|
1121
1117
|
<input matInput [(ngModel)]="group.ariaLabel" (ngModelChange)="onAppearanceChange()" />
|
|
@@ -1142,28 +1138,26 @@ class PraxisTabsConfigEditor {
|
|
|
1142
1138
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
|
|
1143
1139
|
<input matInput type="number" [(ngModel)]="nav.selectedIndex" (ngModelChange)="onAppearanceChange()" />
|
|
1144
1140
|
<button
|
|
1145
|
-
|
|
1141
|
+
praxisIconButton="help_outline"
|
|
1142
|
+
size="dense"
|
|
1146
1143
|
matSuffix
|
|
1147
|
-
class="help-icon-button"
|
|
1148
1144
|
type="button"
|
|
1149
1145
|
[matTooltip]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1146
|
+
[attr.aria-label]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1150
1147
|
matTooltipPosition="above"
|
|
1151
|
-
|
|
1152
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1153
|
-
</button>
|
|
1148
|
+
></button>
|
|
1154
1149
|
</mat-form-field>
|
|
1155
1150
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.animationDuration', 'Duracao da animacao') }}</mat-label>
|
|
1156
1151
|
<input matInput [(ngModel)]="nav.animationDuration" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.fields.placeholder.animationDuration', '500ms')" />
|
|
1157
1152
|
<button
|
|
1158
|
-
|
|
1153
|
+
praxisIconButton="help_outline"
|
|
1154
|
+
size="dense"
|
|
1159
1155
|
matSuffix
|
|
1160
|
-
class="help-icon-button"
|
|
1161
1156
|
type="button"
|
|
1162
1157
|
[matTooltip]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1158
|
+
[attr.aria-label]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1163
1159
|
matTooltipPosition="above"
|
|
1164
|
-
|
|
1165
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1166
|
-
</button>
|
|
1160
|
+
></button>
|
|
1167
1161
|
</mat-form-field>
|
|
1168
1162
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.ariaLabel', 'aria-label') }}</mat-label>
|
|
1169
1163
|
<input matInput [(ngModel)]="nav.ariaLabel" (ngModelChange)="onAppearanceChange()" />
|
|
@@ -1179,15 +1173,14 @@ class PraxisTabsConfigEditor {
|
|
|
1179
1173
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1180
1174
|
</select>
|
|
1181
1175
|
<button
|
|
1182
|
-
|
|
1176
|
+
praxisIconButton="help_outline"
|
|
1177
|
+
size="dense"
|
|
1183
1178
|
matSuffix
|
|
1184
|
-
class="help-icon-button"
|
|
1185
1179
|
type="button"
|
|
1186
1180
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1181
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1187
1182
|
matTooltipPosition="above"
|
|
1188
|
-
|
|
1189
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1190
|
-
</button>
|
|
1183
|
+
></button>
|
|
1191
1184
|
</mat-form-field>
|
|
1192
1185
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
|
|
1193
1186
|
<select matNativeControl [(ngModel)]="nav.backgroundColor" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1197,15 +1190,14 @@ class PraxisTabsConfigEditor {
|
|
|
1197
1190
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1198
1191
|
</select>
|
|
1199
1192
|
<button
|
|
1200
|
-
|
|
1193
|
+
praxisIconButton="help_outline"
|
|
1194
|
+
size="dense"
|
|
1201
1195
|
matSuffix
|
|
1202
|
-
class="help-icon-button"
|
|
1203
1196
|
type="button"
|
|
1204
1197
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1198
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1205
1199
|
matTooltipPosition="above"
|
|
1206
|
-
|
|
1207
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1208
|
-
</button>
|
|
1200
|
+
></button>
|
|
1209
1201
|
</mat-form-field>
|
|
1210
1202
|
</div>
|
|
1211
1203
|
<div class="editor-row">
|
|
@@ -1291,14 +1283,13 @@ class PraxisTabsConfigEditor {
|
|
|
1291
1283
|
<div class="editor-title-row">
|
|
1292
1284
|
<h3 class="editor-title">{{ t('editor.sections.tokens', 'Tokens (Material 3)') }}</h3>
|
|
1293
1285
|
<button
|
|
1294
|
-
|
|
1295
|
-
|
|
1286
|
+
praxisIconButton="help_outline"
|
|
1287
|
+
size="dense"
|
|
1296
1288
|
type="button"
|
|
1297
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.')"
|
|
1298
1291
|
matTooltipPosition="above"
|
|
1299
|
-
|
|
1300
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1301
|
-
</button>
|
|
1292
|
+
></button>
|
|
1302
1293
|
</div>
|
|
1303
1294
|
<div class="editor-grid two">
|
|
1304
1295
|
@for (token of tokenList; track token) {
|
|
@@ -1337,9 +1328,9 @@ class PraxisTabsConfigEditor {
|
|
|
1337
1328
|
<div class="editor-card">
|
|
1338
1329
|
<div class="editor-card-header">
|
|
1339
1330
|
<strong class="editor-card-title">{{ t('editor.cards.tab', 'Aba') }} #{{ i+1 }}</strong>
|
|
1340
|
-
<button
|
|
1341
|
-
<button
|
|
1342
|
-
<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>
|
|
1343
1334
|
</div>
|
|
1344
1335
|
<div class="editor-grid two tight">
|
|
1345
1336
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.id', 'ID') }}</mat-label>
|
|
@@ -1395,11 +1386,9 @@ class PraxisTabsConfigEditor {
|
|
|
1395
1386
|
@for (w of tab.widgets; track w; let wi = $index) {
|
|
1396
1387
|
<div cdkDrag class="editor-card dashed">
|
|
1397
1388
|
<div class="editor-card-header">
|
|
1398
|
-
<button
|
|
1399
|
-
<mat-icon [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
1400
|
-
</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>
|
|
1401
1390
|
<strong class="editor-card-title">{{ getCompName(w.id) }}</strong>
|
|
1402
|
-
<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>
|
|
1403
1392
|
</div>
|
|
1404
1393
|
<div class="editor-grid two tight">
|
|
1405
1394
|
<mat-form-field appearance="outline">
|
|
@@ -1443,9 +1432,9 @@ class PraxisTabsConfigEditor {
|
|
|
1443
1432
|
<div class="editor-card">
|
|
1444
1433
|
<div class="editor-card-header">
|
|
1445
1434
|
<strong class="editor-card-title">{{ t('editor.cards.link', 'Link') }} #{{ i+1 }}</strong>
|
|
1446
|
-
<button
|
|
1447
|
-
<button
|
|
1448
|
-
<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>
|
|
1449
1438
|
</div>
|
|
1450
1439
|
<div class="editor-grid two tight">
|
|
1451
1440
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.id', 'ID') }}</mat-label>
|
|
@@ -1491,11 +1480,9 @@ class PraxisTabsConfigEditor {
|
|
|
1491
1480
|
@for (w of l.widgets; track w; let wi = $index) {
|
|
1492
1481
|
<div cdkDrag class="editor-card dashed">
|
|
1493
1482
|
<div class="editor-card-header">
|
|
1494
|
-
<button
|
|
1495
|
-
<mat-icon [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
1496
|
-
</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>
|
|
1497
1484
|
<strong class="editor-card-title">{{ getCompName(w.id) }}</strong>
|
|
1498
|
-
<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>
|
|
1499
1486
|
</div>
|
|
1500
1487
|
<div class="editor-grid two tight">
|
|
1501
1488
|
<mat-form-field appearance="outline">
|
|
@@ -1522,7 +1509,7 @@ class PraxisTabsConfigEditor {
|
|
|
1522
1509
|
</mat-tab>
|
|
1523
1510
|
</mat-tab-group>
|
|
1524
1511
|
</div>
|
|
1525
|
-
`, 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"] }] });
|
|
1526
1513
|
}
|
|
1527
1514
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisTabsConfigEditor, decorators: [{
|
|
1528
1515
|
type: Component,
|
|
@@ -1533,6 +1520,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1533
1520
|
MatInputModule,
|
|
1534
1521
|
MatIconModule,
|
|
1535
1522
|
PraxisIconDirective,
|
|
1523
|
+
PraxisIconButtonComponent,
|
|
1536
1524
|
MatButtonModule,
|
|
1537
1525
|
MatSlideToggleModule,
|
|
1538
1526
|
DragDropModule,
|
|
@@ -1600,28 +1588,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1600
1588
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
|
|
1601
1589
|
<input matInput type="number" [(ngModel)]="group.selectedIndex" (ngModelChange)="onAppearanceChange()" />
|
|
1602
1590
|
<button
|
|
1603
|
-
|
|
1591
|
+
praxisIconButton="help_outline"
|
|
1592
|
+
size="dense"
|
|
1604
1593
|
matSuffix
|
|
1605
|
-
class="help-icon-button"
|
|
1606
1594
|
type="button"
|
|
1607
1595
|
[matTooltip]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1596
|
+
[attr.aria-label]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1608
1597
|
matTooltipPosition="above"
|
|
1609
|
-
|
|
1610
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1611
|
-
</button>
|
|
1598
|
+
></button>
|
|
1612
1599
|
</mat-form-field>
|
|
1613
1600
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.animationDuration', 'Duracao da animacao') }}</mat-label>
|
|
1614
1601
|
<input matInput [(ngModel)]="group.animationDuration" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.fields.placeholder.animationDuration', '500ms')" />
|
|
1615
1602
|
<button
|
|
1616
|
-
|
|
1603
|
+
praxisIconButton="help_outline"
|
|
1604
|
+
size="dense"
|
|
1617
1605
|
matSuffix
|
|
1618
|
-
class="help-icon-button"
|
|
1619
1606
|
type="button"
|
|
1620
1607
|
[matTooltip]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1608
|
+
[attr.aria-label]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1621
1609
|
matTooltipPosition="above"
|
|
1622
|
-
|
|
1623
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1624
|
-
</button>
|
|
1610
|
+
></button>
|
|
1625
1611
|
</mat-form-field>
|
|
1626
1612
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.color', 'Cor (M2)') }}</mat-label>
|
|
1627
1613
|
<select matNativeControl [(ngModel)]="group.color" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1631,15 +1617,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1631
1617
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1632
1618
|
</select>
|
|
1633
1619
|
<button
|
|
1634
|
-
|
|
1620
|
+
praxisIconButton="help_outline"
|
|
1621
|
+
size="dense"
|
|
1635
1622
|
matSuffix
|
|
1636
|
-
class="help-icon-button"
|
|
1637
1623
|
type="button"
|
|
1638
1624
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1625
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1639
1626
|
matTooltipPosition="above"
|
|
1640
|
-
|
|
1641
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1642
|
-
</button>
|
|
1627
|
+
></button>
|
|
1643
1628
|
</mat-form-field>
|
|
1644
1629
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
|
|
1645
1630
|
<select matNativeControl [(ngModel)]="group.backgroundColor" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1649,15 +1634,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1649
1634
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1650
1635
|
</select>
|
|
1651
1636
|
<button
|
|
1652
|
-
|
|
1637
|
+
praxisIconButton="help_outline"
|
|
1638
|
+
size="dense"
|
|
1653
1639
|
matSuffix
|
|
1654
|
-
class="help-icon-button"
|
|
1655
1640
|
type="button"
|
|
1656
1641
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1642
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1657
1643
|
matTooltipPosition="above"
|
|
1658
|
-
|
|
1659
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1660
|
-
</button>
|
|
1644
|
+
></button>
|
|
1661
1645
|
</mat-form-field>
|
|
1662
1646
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.ariaLabel', 'aria-label') }}</mat-label>
|
|
1663
1647
|
<input matInput [(ngModel)]="group.ariaLabel" (ngModelChange)="onAppearanceChange()" />
|
|
@@ -1684,28 +1668,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1684
1668
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
|
|
1685
1669
|
<input matInput type="number" [(ngModel)]="nav.selectedIndex" (ngModelChange)="onAppearanceChange()" />
|
|
1686
1670
|
<button
|
|
1687
|
-
|
|
1671
|
+
praxisIconButton="help_outline"
|
|
1672
|
+
size="dense"
|
|
1688
1673
|
matSuffix
|
|
1689
|
-
class="help-icon-button"
|
|
1690
1674
|
type="button"
|
|
1691
1675
|
[matTooltip]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1676
|
+
[attr.aria-label]="t('editor.hints.selectedIndex', 'selectedIndex')"
|
|
1692
1677
|
matTooltipPosition="above"
|
|
1693
|
-
|
|
1694
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1695
|
-
</button>
|
|
1678
|
+
></button>
|
|
1696
1679
|
</mat-form-field>
|
|
1697
1680
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.animationDuration', 'Duracao da animacao') }}</mat-label>
|
|
1698
1681
|
<input matInput [(ngModel)]="nav.animationDuration" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.fields.placeholder.animationDuration', '500ms')" />
|
|
1699
1682
|
<button
|
|
1700
|
-
|
|
1683
|
+
praxisIconButton="help_outline"
|
|
1684
|
+
size="dense"
|
|
1701
1685
|
matSuffix
|
|
1702
|
-
class="help-icon-button"
|
|
1703
1686
|
type="button"
|
|
1704
1687
|
[matTooltip]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1688
|
+
[attr.aria-label]="t('editor.hints.animationDuration', 'animationDuration')"
|
|
1705
1689
|
matTooltipPosition="above"
|
|
1706
|
-
|
|
1707
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1708
|
-
</button>
|
|
1690
|
+
></button>
|
|
1709
1691
|
</mat-form-field>
|
|
1710
1692
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.ariaLabel', 'aria-label') }}</mat-label>
|
|
1711
1693
|
<input matInput [(ngModel)]="nav.ariaLabel" (ngModelChange)="onAppearanceChange()" />
|
|
@@ -1721,15 +1703,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1721
1703
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1722
1704
|
</select>
|
|
1723
1705
|
<button
|
|
1724
|
-
|
|
1706
|
+
praxisIconButton="help_outline"
|
|
1707
|
+
size="dense"
|
|
1725
1708
|
matSuffix
|
|
1726
|
-
class="help-icon-button"
|
|
1727
1709
|
type="button"
|
|
1728
1710
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1711
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1729
1712
|
matTooltipPosition="above"
|
|
1730
|
-
|
|
1731
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1732
|
-
</button>
|
|
1713
|
+
></button>
|
|
1733
1714
|
</mat-form-field>
|
|
1734
1715
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
|
|
1735
1716
|
<select matNativeControl [(ngModel)]="nav.backgroundColor" (ngModelChange)="onAppearanceChange()">
|
|
@@ -1739,15 +1720,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1739
1720
|
<option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
|
|
1740
1721
|
</select>
|
|
1741
1722
|
<button
|
|
1742
|
-
|
|
1723
|
+
praxisIconButton="help_outline"
|
|
1724
|
+
size="dense"
|
|
1743
1725
|
matSuffix
|
|
1744
|
-
class="help-icon-button"
|
|
1745
1726
|
type="button"
|
|
1746
1727
|
[matTooltip]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1728
|
+
[attr.aria-label]="t('editor.hints.preferTokens', 'Preferir tokens em Estilo.')"
|
|
1747
1729
|
matTooltipPosition="above"
|
|
1748
|
-
|
|
1749
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1750
|
-
</button>
|
|
1730
|
+
></button>
|
|
1751
1731
|
</mat-form-field>
|
|
1752
1732
|
</div>
|
|
1753
1733
|
<div class="editor-row">
|
|
@@ -1833,14 +1813,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1833
1813
|
<div class="editor-title-row">
|
|
1834
1814
|
<h3 class="editor-title">{{ t('editor.sections.tokens', 'Tokens (Material 3)') }}</h3>
|
|
1835
1815
|
<button
|
|
1836
|
-
|
|
1837
|
-
|
|
1816
|
+
praxisIconButton="help_outline"
|
|
1817
|
+
size="dense"
|
|
1838
1818
|
type="button"
|
|
1839
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.')"
|
|
1840
1821
|
matTooltipPosition="above"
|
|
1841
|
-
|
|
1842
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1843
|
-
</button>
|
|
1822
|
+
></button>
|
|
1844
1823
|
</div>
|
|
1845
1824
|
<div class="editor-grid two">
|
|
1846
1825
|
@for (token of tokenList; track token) {
|
|
@@ -1879,9 +1858,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1879
1858
|
<div class="editor-card">
|
|
1880
1859
|
<div class="editor-card-header">
|
|
1881
1860
|
<strong class="editor-card-title">{{ t('editor.cards.tab', 'Aba') }} #{{ i+1 }}</strong>
|
|
1882
|
-
<button
|
|
1883
|
-
<button
|
|
1884
|
-
<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>
|
|
1885
1864
|
</div>
|
|
1886
1865
|
<div class="editor-grid two tight">
|
|
1887
1866
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.id', 'ID') }}</mat-label>
|
|
@@ -1937,11 +1916,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1937
1916
|
@for (w of tab.widgets; track w; let wi = $index) {
|
|
1938
1917
|
<div cdkDrag class="editor-card dashed">
|
|
1939
1918
|
<div class="editor-card-header">
|
|
1940
|
-
<button
|
|
1941
|
-
<mat-icon [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
1942
|
-
</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>
|
|
1943
1920
|
<strong class="editor-card-title">{{ getCompName(w.id) }}</strong>
|
|
1944
|
-
<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>
|
|
1945
1922
|
</div>
|
|
1946
1923
|
<div class="editor-grid two tight">
|
|
1947
1924
|
<mat-form-field appearance="outline">
|
|
@@ -1985,9 +1962,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
1985
1962
|
<div class="editor-card">
|
|
1986
1963
|
<div class="editor-card-header">
|
|
1987
1964
|
<strong class="editor-card-title">{{ t('editor.cards.link', 'Link') }} #{{ i+1 }}</strong>
|
|
1988
|
-
<button
|
|
1989
|
-
<button
|
|
1990
|
-
<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>
|
|
1991
1968
|
</div>
|
|
1992
1969
|
<div class="editor-grid two tight">
|
|
1993
1970
|
<mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.id', 'ID') }}</mat-label>
|
|
@@ -2033,11 +2010,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2033
2010
|
@for (w of l.widgets; track w; let wi = $index) {
|
|
2034
2011
|
<div cdkDrag class="editor-card dashed">
|
|
2035
2012
|
<div class="editor-card-header">
|
|
2036
|
-
<button
|
|
2037
|
-
<mat-icon [praxisIcon]="'drag_indicator'"></mat-icon>
|
|
2038
|
-
</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>
|
|
2039
2014
|
<strong class="editor-card-title">{{ getCompName(w.id) }}</strong>
|
|
2040
|
-
<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>
|
|
2041
2016
|
</div>
|
|
2042
2017
|
<div class="editor-grid two tight">
|
|
2043
2018
|
<mat-form-field appearance="outline">
|
|
@@ -2064,7 +2039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2064
2039
|
</mat-tab>
|
|
2065
2040
|
</mat-tab-group>
|
|
2066
2041
|
</div>
|
|
2067
|
-
`, 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"] }]
|
|
2068
2043
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2069
2044
|
type: Inject,
|
|
2070
2045
|
args: [SETTINGS_PANEL_DATA]
|
|
@@ -2196,7 +2171,7 @@ class TabsQuickSetupComponent {
|
|
|
2196
2171
|
@for (l of model.labels; track l; let i = $index) {
|
|
2197
2172
|
<div class="chip">
|
|
2198
2173
|
<span>{{ l }}</span>
|
|
2199
|
-
<button
|
|
2174
|
+
<button praxisIconButton="close" size="dense" type="button" (click)="removeLabel(i)" [attr.aria-label]="t('editor.actions.removeLabel', 'Remover rotulo')"></button>
|
|
2200
2175
|
</div>
|
|
2201
2176
|
}
|
|
2202
2177
|
</div>
|
|
@@ -2209,7 +2184,7 @@ class TabsQuickSetupComponent {
|
|
|
2209
2184
|
<mat-slide-toggle [(ngModel)]="model.stretchTabs" (ngModelChange)="updateState()">{{ t('editor.toggles.stretchTabs', 'Esticar abas') }}</mat-slide-toggle>
|
|
2210
2185
|
</div>
|
|
2211
2186
|
</div>
|
|
2212
|
-
`, 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"] }] });
|
|
2213
2188
|
}
|
|
2214
2189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TabsQuickSetupComponent, decorators: [{
|
|
2215
2190
|
type: Component,
|
|
@@ -2219,6 +2194,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2219
2194
|
MatInputModule,
|
|
2220
2195
|
MatIconModule,
|
|
2221
2196
|
PraxisIconDirective,
|
|
2197
|
+
PraxisIconButtonComponent,
|
|
2222
2198
|
MatButtonModule,
|
|
2223
2199
|
MatSlideToggleModule
|
|
2224
2200
|
], providers: [providePraxisI18nConfig(PRAXIS_TABS_I18N_CONFIG)], template: `
|
|
@@ -2250,7 +2226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
2250
2226
|
@for (l of model.labels; track l; let i = $index) {
|
|
2251
2227
|
<div class="chip">
|
|
2252
2228
|
<span>{{ l }}</span>
|
|
2253
|
-
<button
|
|
2229
|
+
<button praxisIconButton="close" size="dense" type="button" (click)="removeLabel(i)" [attr.aria-label]="t('editor.actions.removeLabel', 'Remover rotulo')"></button>
|
|
2254
2230
|
</div>
|
|
2255
2231
|
}
|
|
2256
2232
|
</div>
|
|
@@ -4460,39 +4436,36 @@ class PraxisTabs {
|
|
|
4460
4436
|
<span>{{ entry.tab.textLabel }}</span>
|
|
4461
4437
|
@if (config?.behavior?.closeable) {
|
|
4462
4438
|
<button
|
|
4463
|
-
|
|
4439
|
+
praxisIconButton="close"
|
|
4440
|
+
size="dense"
|
|
4464
4441
|
type="button"
|
|
4465
4442
|
(click)="closeTab(entry.index); $event.stopPropagation()"
|
|
4466
4443
|
(keydown.enter)="$event.stopPropagation()"
|
|
4467
4444
|
(keydown.space)="$event.stopPropagation()"
|
|
4468
4445
|
[attr.aria-label]="t('chrome.closeTab', 'Fechar aba')"
|
|
4469
|
-
|
|
4470
|
-
<mat-icon aria-hidden="true" fontIcon="close"></mat-icon>
|
|
4471
|
-
</button>
|
|
4446
|
+
></button>
|
|
4472
4447
|
}
|
|
4473
4448
|
@if (config?.behavior?.reorderable) {
|
|
4474
4449
|
<button
|
|
4475
|
-
|
|
4450
|
+
praxisIconButton="arrow_back"
|
|
4451
|
+
size="dense"
|
|
4476
4452
|
type="button"
|
|
4477
4453
|
(click)="moveTab(entry.index, -1); $event.stopPropagation()"
|
|
4478
4454
|
(keydown.enter)="$event.stopPropagation()"
|
|
4479
4455
|
(keydown.space)="$event.stopPropagation()"
|
|
4480
4456
|
[disabled]="entry.index===0"
|
|
4481
4457
|
[attr.aria-label]="t('chrome.moveTabLeft', 'Mover aba para esquerda')"
|
|
4482
|
-
|
|
4483
|
-
<mat-icon aria-hidden="true" fontIcon="arrow_back"></mat-icon>
|
|
4484
|
-
</button>
|
|
4458
|
+
></button>
|
|
4485
4459
|
<button
|
|
4486
|
-
|
|
4460
|
+
praxisIconButton="arrow_forward"
|
|
4461
|
+
size="dense"
|
|
4487
4462
|
type="button"
|
|
4488
4463
|
(click)="moveTab(entry.index, 1); $event.stopPropagation()"
|
|
4489
4464
|
(keydown.enter)="$event.stopPropagation()"
|
|
4490
4465
|
(keydown.space)="$event.stopPropagation()"
|
|
4491
4466
|
[disabled]="entry.index===(config?.tabs?.length||1)-1"
|
|
4492
4467
|
[attr.aria-label]="t('chrome.moveTabRight', 'Mover aba para direita')"
|
|
4493
|
-
|
|
4494
|
-
<mat-icon aria-hidden="true" fontIcon="arrow_forward"></mat-icon>
|
|
4495
|
-
</button>
|
|
4468
|
+
></button>
|
|
4496
4469
|
}
|
|
4497
4470
|
</ng-template>
|
|
4498
4471
|
@if (shouldRenderGroupBody()) {
|
|
@@ -4554,7 +4527,7 @@ class PraxisTabs {
|
|
|
4554
4527
|
</button>
|
|
4555
4528
|
}
|
|
4556
4529
|
</div>
|
|
4557
|
-
`, 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: "
|
|
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 });
|
|
4558
4531
|
}
|
|
4559
4532
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisTabs, decorators: [{
|
|
4560
4533
|
type: Component,
|
|
@@ -4565,6 +4538,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4565
4538
|
MatIconModule,
|
|
4566
4539
|
MatTooltipModule,
|
|
4567
4540
|
PraxisIconDirective,
|
|
4541
|
+
PraxisIconButtonComponent,
|
|
4568
4542
|
MatButtonModule,
|
|
4569
4543
|
DragDropModule,
|
|
4570
4544
|
EmptyStateCardComponent,
|
|
@@ -4775,39 +4749,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
4775
4749
|
<span>{{ entry.tab.textLabel }}</span>
|
|
4776
4750
|
@if (config?.behavior?.closeable) {
|
|
4777
4751
|
<button
|
|
4778
|
-
|
|
4752
|
+
praxisIconButton="close"
|
|
4753
|
+
size="dense"
|
|
4779
4754
|
type="button"
|
|
4780
4755
|
(click)="closeTab(entry.index); $event.stopPropagation()"
|
|
4781
4756
|
(keydown.enter)="$event.stopPropagation()"
|
|
4782
4757
|
(keydown.space)="$event.stopPropagation()"
|
|
4783
4758
|
[attr.aria-label]="t('chrome.closeTab', 'Fechar aba')"
|
|
4784
|
-
|
|
4785
|
-
<mat-icon aria-hidden="true" fontIcon="close"></mat-icon>
|
|
4786
|
-
</button>
|
|
4759
|
+
></button>
|
|
4787
4760
|
}
|
|
4788
4761
|
@if (config?.behavior?.reorderable) {
|
|
4789
4762
|
<button
|
|
4790
|
-
|
|
4763
|
+
praxisIconButton="arrow_back"
|
|
4764
|
+
size="dense"
|
|
4791
4765
|
type="button"
|
|
4792
4766
|
(click)="moveTab(entry.index, -1); $event.stopPropagation()"
|
|
4793
4767
|
(keydown.enter)="$event.stopPropagation()"
|
|
4794
4768
|
(keydown.space)="$event.stopPropagation()"
|
|
4795
4769
|
[disabled]="entry.index===0"
|
|
4796
4770
|
[attr.aria-label]="t('chrome.moveTabLeft', 'Mover aba para esquerda')"
|
|
4797
|
-
|
|
4798
|
-
<mat-icon aria-hidden="true" fontIcon="arrow_back"></mat-icon>
|
|
4799
|
-
</button>
|
|
4771
|
+
></button>
|
|
4800
4772
|
<button
|
|
4801
|
-
|
|
4773
|
+
praxisIconButton="arrow_forward"
|
|
4774
|
+
size="dense"
|
|
4802
4775
|
type="button"
|
|
4803
4776
|
(click)="moveTab(entry.index, 1); $event.stopPropagation()"
|
|
4804
4777
|
(keydown.enter)="$event.stopPropagation()"
|
|
4805
4778
|
(keydown.space)="$event.stopPropagation()"
|
|
4806
4779
|
[disabled]="entry.index===(config?.tabs?.length||1)-1"
|
|
4807
4780
|
[attr.aria-label]="t('chrome.moveTabRight', 'Mover aba para direita')"
|
|
4808
|
-
|
|
4809
|
-
<mat-icon aria-hidden="true" fontIcon="arrow_forward"></mat-icon>
|
|
4810
|
-
</button>
|
|
4781
|
+
></button>
|
|
4811
4782
|
}
|
|
4812
4783
|
</ng-template>
|
|
4813
4784
|
@if (shouldRenderGroupBody()) {
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/tabs",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.86",
|
|
4
4
|
"description": "Configurable tabs (group and nav) for Praxis UI with metadata-driven content and runtime editor.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
8
|
"@angular/material": "^21.0.0",
|
|
9
9
|
"@angular/cdk": "^21.0.0",
|
|
10
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
11
|
-
"@praxisui/dynamic-fields": "^9.0.0-beta.
|
|
12
|
-
"@praxisui/settings-panel": "^9.0.0-beta.
|
|
10
|
+
"@praxisui/core": "^9.0.0-beta.86",
|
|
11
|
+
"@praxisui/dynamic-fields": "^9.0.0-beta.86",
|
|
12
|
+
"@praxisui/settings-panel": "^9.0.0-beta.86",
|
|
13
13
|
"@angular/forms": "^21.0.0",
|
|
14
14
|
"@angular/router": "^21.0.0",
|
|
15
|
-
"@praxisui/ai": "^9.0.0-beta.
|
|
15
|
+
"@praxisui/ai": "^9.0.0-beta.86",
|
|
16
16
|
"rxjs": "~7.8.0"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|