@praxisui/stepper 1.0.0-beta.58 → 1.0.0-beta.59
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/fesm2022/praxisui-stepper.mjs +979 -1114
- package/fesm2022/praxisui-stepper.mjs.map +1 -1
- package/index.d.ts +10 -4
- package/package.json +7 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i1$1 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Inject, Component, inject, signal, ElementRef, Renderer2, EventEmitter, computed, TemplateRef, Output, Input, ContentChild, ChangeDetectionStrategy, ENVIRONMENT_INITIALIZER, isDevMode, effect, ViewChild } from '@angular/core';
|
|
4
|
+
import { Inject, Component, inject, ChangeDetectorRef, signal, ElementRef, Renderer2, EventEmitter, computed, TemplateRef, Output, Input, ContentChild, ChangeDetectionStrategy, ENVIRONMENT_INITIALIZER, isDevMode, effect, ViewChild } from '@angular/core';
|
|
5
5
|
import { ActivatedRoute } from '@angular/router';
|
|
6
6
|
import * as i2$1 from '@angular/material/stepper';
|
|
7
7
|
import { MatStepperModule } from '@angular/material/stepper';
|
|
@@ -24,16 +24,11 @@ import * as i8 from '@angular/cdk/drag-drop';
|
|
|
24
24
|
import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
|
|
25
25
|
import * as i9 from '@angular/material/tooltip';
|
|
26
26
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
27
|
-
import { MatChipsModule } from '@angular/material/chips';
|
|
28
|
-
import * as i10 from '@angular/material/card';
|
|
29
|
-
import { MatCardModule } from '@angular/material/card';
|
|
30
|
-
import * as i11 from '@angular/material/button-toggle';
|
|
31
|
-
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
32
27
|
import * as i1 from '@angular/material/dialog';
|
|
33
28
|
import { MAT_DIALOG_DATA, MatDialogModule, MatDialog } from '@angular/material/dialog';
|
|
34
|
-
import * as
|
|
29
|
+
import * as i10 from '@angular/material/menu';
|
|
35
30
|
import { MatMenuModule } from '@angular/material/menu';
|
|
36
|
-
import * as
|
|
31
|
+
import * as i11 from '@angular/material/tabs';
|
|
37
32
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
38
33
|
import { BehaviorSubject } from 'rxjs';
|
|
39
34
|
import { PraxisListConfigEditor } from '@praxisui/list';
|
|
@@ -43,6 +38,8 @@ import * as i5 from '@angular/material/checkbox';
|
|
|
43
38
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
44
39
|
import { BaseAiAdapter, PraxisAiAssistantComponent } from '@praxisui/ai';
|
|
45
40
|
import { take } from 'rxjs/operators';
|
|
41
|
+
import * as i1$2 from '@angular/material/card';
|
|
42
|
+
import { MatCardModule } from '@angular/material/card';
|
|
46
43
|
|
|
47
44
|
class SelectQuickConfigDialogComponent {
|
|
48
45
|
ref;
|
|
@@ -477,7 +474,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
477
474
|
|
|
478
475
|
class PraxisStepperConfigEditor {
|
|
479
476
|
config = { steps: [], orientation: 'horizontal', headerPosition: 'top', linear: false };
|
|
480
|
-
|
|
477
|
+
activeStepRef = null;
|
|
481
478
|
// SettingsValueProvider observables
|
|
482
479
|
isDirty$ = new BehaviorSubject(false);
|
|
483
480
|
isValid$ = new BehaviorSubject(true);
|
|
@@ -485,6 +482,7 @@ class PraxisStepperConfigEditor {
|
|
|
485
482
|
settings = inject(SettingsPanelService);
|
|
486
483
|
dialog = inject(MatDialog);
|
|
487
484
|
iconPicker = inject(IconPickerService);
|
|
485
|
+
cdr = inject(ChangeDetectorRef);
|
|
488
486
|
constructor(data) {
|
|
489
487
|
let seed = data?.config ?? data;
|
|
490
488
|
// Normalize when seed is a JSON string
|
|
@@ -507,6 +505,7 @@ class PraxisStepperConfigEditor {
|
|
|
507
505
|
this.config.steps = [{ id: 'step1', label: 'Novo passo' }];
|
|
508
506
|
this.isDirty$.next(true);
|
|
509
507
|
}
|
|
508
|
+
this.ensureActiveStep();
|
|
510
509
|
}
|
|
511
510
|
markDirty() { this.isDirty$.next(true); this.validate(); }
|
|
512
511
|
validate() {
|
|
@@ -693,21 +692,77 @@ class PraxisStepperConfigEditor {
|
|
|
693
692
|
}
|
|
694
693
|
drop(ev) {
|
|
695
694
|
moveItemInArray(this.config.steps, ev.previousIndex, ev.currentIndex);
|
|
695
|
+
this.ensureActiveStep();
|
|
696
696
|
this.markDirty();
|
|
697
697
|
}
|
|
698
|
-
setActive(
|
|
699
|
-
|
|
698
|
+
setActive(step) {
|
|
699
|
+
if (this.activeStepRef === step)
|
|
700
|
+
return;
|
|
701
|
+
this.commitFocusedFieldBeforeSwitch();
|
|
702
|
+
this.activeStepRef = null;
|
|
703
|
+
this.cdr.detectChanges();
|
|
704
|
+
queueMicrotask(() => {
|
|
705
|
+
this.activeStepRef = step;
|
|
706
|
+
this.cdr.markForCheck();
|
|
707
|
+
});
|
|
708
|
+
}
|
|
709
|
+
onStepItemEnter(event, step) {
|
|
710
|
+
event.preventDefault();
|
|
711
|
+
this.setActive(step);
|
|
712
|
+
}
|
|
713
|
+
onStepItemSpace(event, step) {
|
|
714
|
+
event.preventDefault();
|
|
715
|
+
this.setActive(step);
|
|
716
|
+
}
|
|
717
|
+
focusAdjacentStep(event, index, delta) {
|
|
718
|
+
event.preventDefault();
|
|
719
|
+
const nextIndex = Math.max(0, Math.min(index + delta, this.config.steps.length - 1));
|
|
720
|
+
const nextStep = this.config.steps[nextIndex];
|
|
721
|
+
if (!nextStep)
|
|
722
|
+
return;
|
|
723
|
+
this.setActive(nextStep);
|
|
724
|
+
queueMicrotask(() => {
|
|
725
|
+
const currentItem = event.currentTarget;
|
|
726
|
+
const nextItem = currentItem?.parentElement?.children.item(nextIndex);
|
|
727
|
+
nextItem?.focus();
|
|
728
|
+
});
|
|
729
|
+
}
|
|
700
730
|
addStep() {
|
|
701
731
|
const n = this.config.steps.length + 1;
|
|
702
|
-
|
|
732
|
+
const step = { id: `step${n}`, label: `Passo ${n}` };
|
|
733
|
+
this.config.steps.push(step);
|
|
734
|
+
this.activeStepRef = step;
|
|
703
735
|
this.markDirty();
|
|
704
736
|
}
|
|
705
737
|
removeStep(idx) {
|
|
738
|
+
const removed = this.config.steps[idx];
|
|
706
739
|
this.config.steps.splice(idx, 1);
|
|
740
|
+
if (removed && this.activeStepRef === removed) {
|
|
741
|
+
this.activeStepRef = this.config.steps[idx] || this.config.steps[idx - 1] || null;
|
|
742
|
+
}
|
|
743
|
+
this.ensureActiveStep();
|
|
707
744
|
this.markDirty();
|
|
708
745
|
}
|
|
709
746
|
// ------- Active step helpers -------
|
|
710
|
-
get
|
|
747
|
+
get activeIndex() {
|
|
748
|
+
this.ensureActiveStep();
|
|
749
|
+
return this.activeStepRef ? this.config.steps.indexOf(this.activeStepRef) : -1;
|
|
750
|
+
}
|
|
751
|
+
get activeStep() {
|
|
752
|
+
this.ensureActiveStep();
|
|
753
|
+
return this.activeStepRef;
|
|
754
|
+
}
|
|
755
|
+
ensureActiveStep() {
|
|
756
|
+
if (this.activeStepRef && this.config.steps.includes(this.activeStepRef))
|
|
757
|
+
return;
|
|
758
|
+
this.activeStepRef = this.config.steps[0] || null;
|
|
759
|
+
}
|
|
760
|
+
commitFocusedFieldBeforeSwitch() {
|
|
761
|
+
const activeElement = typeof document !== 'undefined' ? document.activeElement : null;
|
|
762
|
+
if (activeElement?.closest('.pdx-active-step')) {
|
|
763
|
+
activeElement.blur();
|
|
764
|
+
}
|
|
765
|
+
}
|
|
711
766
|
ensureWidgets() { const s = this.activeStep; if (!s.widgets)
|
|
712
767
|
s.widgets = []; return s.widgets; }
|
|
713
768
|
ensureWidgetsBeforeForm() { const s = this.activeStep; if (!s.widgetsBeforeForm)
|
|
@@ -1182,305 +1237,215 @@ class PraxisStepperConfigEditor {
|
|
|
1182
1237
|
<mat-tab-group>
|
|
1183
1238
|
<mat-tab label="Geral">
|
|
1184
1239
|
<div class="tab-pad">
|
|
1185
|
-
<div class="
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
<
|
|
1189
|
-
<
|
|
1190
|
-
|
|
1191
|
-
<option value="vertical">Vertical</option>
|
|
1192
|
-
</select>
|
|
1193
|
-
<button
|
|
1194
|
-
mat-icon-button
|
|
1195
|
-
matSuffix
|
|
1196
|
-
class="help-icon-button"
|
|
1197
|
-
type="button"
|
|
1198
|
-
[matTooltip]="'Horizontal: cabeçalho no topo • Vertical: lista à esquerda'"
|
|
1199
|
-
matTooltipPosition="above"
|
|
1200
|
-
>
|
|
1201
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1202
|
-
</button>
|
|
1203
|
-
</mat-form-field>
|
|
1204
|
-
<mat-form-field appearance="outline">
|
|
1205
|
-
<mat-label>Posição dos títulos</mat-label>
|
|
1206
|
-
<select matNativeControl [(ngModel)]="config.headerPosition" (ngModelChange)="markDirty()">
|
|
1207
|
-
<option value="top">Acima</option>
|
|
1208
|
-
<option value="bottom">Abaixo</option>
|
|
1209
|
-
</select>
|
|
1210
|
-
<button
|
|
1211
|
-
mat-icon-button
|
|
1212
|
-
matSuffix
|
|
1213
|
-
class="help-icon-button"
|
|
1214
|
-
type="button"
|
|
1215
|
-
[matTooltip]="'Válido na orientação horizontal'"
|
|
1216
|
-
matTooltipPosition="above"
|
|
1217
|
-
>
|
|
1218
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1219
|
-
</button>
|
|
1220
|
-
</mat-form-field>
|
|
1221
|
-
<mat-form-field appearance="outline">
|
|
1222
|
-
<mat-label>Posição do rótulo</mat-label>
|
|
1223
|
-
<select matNativeControl [(ngModel)]="config.labelPosition" (ngModelChange)="markDirty()" [disabled]="config.orientation !== 'horizontal'">
|
|
1224
|
-
<option value="end">Ao lado</option>
|
|
1225
|
-
<option value="bottom">Abaixo</option>
|
|
1226
|
-
</select>
|
|
1227
|
-
<button
|
|
1228
|
-
mat-icon-button
|
|
1229
|
-
matSuffix
|
|
1230
|
-
class="help-icon-button"
|
|
1231
|
-
type="button"
|
|
1232
|
-
[matTooltip]="'Como o texto aparece no cabeçalho'"
|
|
1233
|
-
matTooltipPosition="above"
|
|
1234
|
-
>
|
|
1235
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1236
|
-
</button>
|
|
1237
|
-
</mat-form-field>
|
|
1238
|
-
<mat-form-field appearance="outline">
|
|
1239
|
-
<mat-label>Cor</mat-label>
|
|
1240
|
-
<select matNativeControl [(ngModel)]="config.color" (ngModelChange)="markDirty()">
|
|
1241
|
-
<option [ngValue]="undefined">Padrão</option>
|
|
1242
|
-
<option value="primary">Primária</option>
|
|
1243
|
-
<option value="accent">Acento</option>
|
|
1244
|
-
<option value="warn">Alerta</option>
|
|
1245
|
-
</select>
|
|
1246
|
-
<button
|
|
1247
|
-
mat-icon-button
|
|
1248
|
-
matSuffix
|
|
1249
|
-
class="help-icon-button"
|
|
1250
|
-
type="button"
|
|
1251
|
-
[matTooltip]="'Aplicável a temas Material 2 (M2)'"
|
|
1252
|
-
matTooltipPosition="above"
|
|
1253
|
-
>
|
|
1254
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1255
|
-
</button>
|
|
1256
|
-
</mat-form-field>
|
|
1257
|
-
<mat-form-field appearance="outline">
|
|
1258
|
-
<mat-label>Duração da animação</mat-label>
|
|
1259
|
-
<input matInput [(ngModel)]="config.animationDuration" (ngModelChange)="markDirty()" placeholder="Ex.: 300ms" />
|
|
1260
|
-
<button
|
|
1261
|
-
mat-icon-button
|
|
1262
|
-
matSuffix
|
|
1263
|
-
class="help-icon-button"
|
|
1264
|
-
type="button"
|
|
1265
|
-
[matTooltip]="'Tempo da transição entre etapas'"
|
|
1266
|
-
matTooltipPosition="above"
|
|
1267
|
-
>
|
|
1268
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1269
|
-
</button>
|
|
1270
|
-
</mat-form-field>
|
|
1271
|
-
<mat-form-field appearance="outline">
|
|
1272
|
-
<mat-label>Etapa selecionada</mat-label>
|
|
1273
|
-
<input matInput type="number" [(ngModel)]="config.selectedIndex" (ngModelChange)="markDirty()" />
|
|
1274
|
-
<button
|
|
1275
|
-
mat-icon-button
|
|
1276
|
-
matSuffix
|
|
1277
|
-
class="help-icon-button"
|
|
1278
|
-
type="button"
|
|
1279
|
-
[matTooltip]="'Índice inicia em 0 (primeira etapa)'"
|
|
1280
|
-
matTooltipPosition="above"
|
|
1281
|
-
>
|
|
1282
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1283
|
-
</button>
|
|
1284
|
-
</mat-form-field>
|
|
1285
|
-
<mat-form-field appearance="outline">
|
|
1286
|
-
<mat-label>Densidade</mat-label>
|
|
1287
|
-
<select matNativeControl [(ngModel)]="config.density" (ngModelChange)="markDirty()">
|
|
1288
|
-
<option [ngValue]="undefined">Padrão</option>
|
|
1289
|
-
<option value="comfortable">Confortável</option>
|
|
1290
|
-
<option value="compact">Compacta</option>
|
|
1291
|
-
</select>
|
|
1292
|
-
<button
|
|
1293
|
-
mat-icon-button
|
|
1294
|
-
matSuffix
|
|
1295
|
-
class="help-icon-button"
|
|
1296
|
-
type="button"
|
|
1297
|
-
[matTooltip]="'Controla espaçamentos e alturas'"
|
|
1298
|
-
matTooltipPosition="above"
|
|
1299
|
-
>
|
|
1300
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1301
|
-
</button>
|
|
1302
|
-
</mat-form-field>
|
|
1303
|
-
<mat-form-field appearance="outline" class="w-full">
|
|
1304
|
-
<mat-label>Classe do stepper (opcional)</mat-label>
|
|
1305
|
-
<input matInput [(ngModel)]="config.stepperClass" (ngModelChange)="markDirty()" placeholder="Ex.: meu-stepper" />
|
|
1306
|
-
<button
|
|
1307
|
-
mat-icon-button
|
|
1308
|
-
matSuffix
|
|
1309
|
-
class="help-icon-button"
|
|
1310
|
-
type="button"
|
|
1311
|
-
[matTooltip]="'Permite estilizar com CSS escopado'"
|
|
1312
|
-
matTooltipPosition="above"
|
|
1313
|
-
>
|
|
1314
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1315
|
-
</button>
|
|
1316
|
-
</mat-form-field>
|
|
1317
|
-
<mat-form-field appearance="outline" class="w-full">
|
|
1318
|
-
<mat-label>Classe do cabeçalho (opcional)</mat-label>
|
|
1319
|
-
<input matInput [(ngModel)]="config.headerClass" (ngModelChange)="markDirty()" placeholder="Ex.: stepper-header" />
|
|
1320
|
-
<button
|
|
1321
|
-
mat-icon-button
|
|
1322
|
-
matSuffix
|
|
1323
|
-
class="help-icon-button"
|
|
1324
|
-
type="button"
|
|
1325
|
-
[matTooltip]="'Use para ajustes finos de aparência'"
|
|
1326
|
-
matTooltipPosition="above"
|
|
1327
|
-
>
|
|
1328
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1329
|
-
</button>
|
|
1330
|
-
</mat-form-field>
|
|
1331
|
-
<mat-form-field appearance="outline" class="w-full">
|
|
1332
|
-
<mat-label>Classe do conteúdo (opcional)</mat-label>
|
|
1333
|
-
<input matInput [(ngModel)]="config.contentClass" (ngModelChange)="markDirty()" placeholder="Ex.: stepper-content" />
|
|
1334
|
-
<button
|
|
1335
|
-
mat-icon-button
|
|
1336
|
-
matSuffix
|
|
1337
|
-
class="help-icon-button"
|
|
1338
|
-
type="button"
|
|
1339
|
-
[matTooltip]="'Aplica uma classe à área de conteúdo'"
|
|
1340
|
-
matTooltipPosition="above"
|
|
1341
|
-
>
|
|
1342
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1343
|
-
</button>
|
|
1344
|
-
</mat-form-field>
|
|
1240
|
+
<div class="editor-intro">
|
|
1241
|
+
<div class="editor-intro-copy">
|
|
1242
|
+
<div class="eyebrow">Fundamentos</div>
|
|
1243
|
+
<div class="editor-title">Defina o comportamento base do stepper</div>
|
|
1244
|
+
<div class="editor-subtitle">Ajuste orientação, densidade, animação e classes utilitárias sem misturar decisões estruturais com customização avançada.</div>
|
|
1245
|
+
</div>
|
|
1345
1246
|
</div>
|
|
1346
|
-
<div class="
|
|
1347
|
-
<
|
|
1348
|
-
|
|
1247
|
+
<div class="settings-group">
|
|
1248
|
+
<div class="group-head">
|
|
1249
|
+
<div class="section-title">Layout e navegação</div>
|
|
1250
|
+
<div class="section-subtitle">Controla como as etapas aparecem e como o usuário percorre o fluxo.</div>
|
|
1251
|
+
</div>
|
|
1252
|
+
<div class="pdx-grid">
|
|
1253
|
+
<mat-form-field appearance="outline">
|
|
1254
|
+
<mat-label>Orientação</mat-label>
|
|
1255
|
+
<select matNativeControl [(ngModel)]="config.orientation" (ngModelChange)="markDirty()">
|
|
1256
|
+
<option value="horizontal">Horizontal</option>
|
|
1257
|
+
<option value="vertical">Vertical</option>
|
|
1258
|
+
</select>
|
|
1259
|
+
</mat-form-field>
|
|
1260
|
+
<mat-form-field appearance="outline">
|
|
1261
|
+
<mat-label>Posição dos títulos</mat-label>
|
|
1262
|
+
<select matNativeControl [(ngModel)]="config.headerPosition" (ngModelChange)="markDirty()">
|
|
1263
|
+
<option value="top">Acima</option>
|
|
1264
|
+
<option value="bottom">Abaixo</option>
|
|
1265
|
+
</select>
|
|
1266
|
+
</mat-form-field>
|
|
1267
|
+
<mat-form-field appearance="outline">
|
|
1268
|
+
<mat-label>Posição do rótulo</mat-label>
|
|
1269
|
+
<select matNativeControl [(ngModel)]="config.labelPosition" (ngModelChange)="markDirty()" [disabled]="config.orientation !== 'horizontal'">
|
|
1270
|
+
<option value="end">Ao lado</option>
|
|
1271
|
+
<option value="bottom">Abaixo</option>
|
|
1272
|
+
</select>
|
|
1273
|
+
</mat-form-field>
|
|
1274
|
+
<mat-form-field appearance="outline">
|
|
1275
|
+
<mat-label>Densidade</mat-label>
|
|
1276
|
+
<select matNativeControl [(ngModel)]="config.density" (ngModelChange)="markDirty()">
|
|
1277
|
+
<option [ngValue]="undefined">Padrão</option>
|
|
1278
|
+
<option value="comfortable">Confortável</option>
|
|
1279
|
+
<option value="compact">Compacta</option>
|
|
1280
|
+
</select>
|
|
1281
|
+
</mat-form-field>
|
|
1282
|
+
<mat-form-field appearance="outline">
|
|
1283
|
+
<mat-label>Duração da animação</mat-label>
|
|
1284
|
+
<input matInput [(ngModel)]="config.animationDuration" (ngModelChange)="markDirty()" placeholder="Ex.: 300ms" />
|
|
1285
|
+
</mat-form-field>
|
|
1286
|
+
<mat-form-field appearance="outline">
|
|
1287
|
+
<mat-label>Etapa inicial</mat-label>
|
|
1288
|
+
<input matInput type="number" [(ngModel)]="config.selectedIndex" (ngModelChange)="markDirty()" />
|
|
1289
|
+
</mat-form-field>
|
|
1290
|
+
</div>
|
|
1291
|
+
<div class="toggle-group">
|
|
1292
|
+
<mat-slide-toggle [(ngModel)]="config.linear" (ngModelChange)="markDirty()">Respeitar ordem (linear)</mat-slide-toggle>
|
|
1293
|
+
<mat-slide-toggle [(ngModel)]="config.disableRipple" (ngModelChange)="markDirty()">Desativar efeitos de clique</mat-slide-toggle>
|
|
1294
|
+
</div>
|
|
1349
1295
|
</div>
|
|
1296
|
+
<details class="disclosure">
|
|
1297
|
+
<summary>
|
|
1298
|
+
<span class="section-title">Classes e integração visual</span>
|
|
1299
|
+
<span class="section-subtitle">Use apenas quando precisar aplicar CSS escopado no host.</span>
|
|
1300
|
+
</summary>
|
|
1301
|
+
<div class="detail-grid disclosure-body">
|
|
1302
|
+
<mat-form-field appearance="outline" class="field-span-2">
|
|
1303
|
+
<mat-label>Classe do stepper</mat-label>
|
|
1304
|
+
<input matInput [(ngModel)]="config.stepperClass" (ngModelChange)="markDirty()" placeholder="Ex.: meu-stepper" />
|
|
1305
|
+
</mat-form-field>
|
|
1306
|
+
<mat-form-field appearance="outline">
|
|
1307
|
+
<mat-label>Classe do cabeçalho</mat-label>
|
|
1308
|
+
<input matInput [(ngModel)]="config.headerClass" (ngModelChange)="markDirty()" placeholder="Ex.: stepper-header" />
|
|
1309
|
+
</mat-form-field>
|
|
1310
|
+
<mat-form-field appearance="outline">
|
|
1311
|
+
<mat-label>Classe do conteúdo</mat-label>
|
|
1312
|
+
<input matInput [(ngModel)]="config.contentClass" (ngModelChange)="markDirty()" placeholder="Ex.: stepper-content" />
|
|
1313
|
+
</mat-form-field>
|
|
1314
|
+
</div>
|
|
1315
|
+
</details>
|
|
1350
1316
|
</div>
|
|
1351
1317
|
</mat-tab>
|
|
1352
1318
|
|
|
1353
1319
|
<mat-tab label="Etapas">
|
|
1354
1320
|
<div class="tab-pad">
|
|
1355
|
-
<div class="
|
|
1321
|
+
<div class="editor-intro">
|
|
1322
|
+
<div class="editor-intro-copy">
|
|
1323
|
+
<div class="eyebrow">Estrutura do fluxo</div>
|
|
1324
|
+
<div class="editor-title">Defina a narrativa de cada etapa</div>
|
|
1325
|
+
<div class="editor-subtitle">Organize títulos, estados e conteúdo da etapa sem misturar configuração técnica com ações de montagem.</div>
|
|
1326
|
+
</div>
|
|
1327
|
+
<div class="editor-intro-meta">
|
|
1328
|
+
<div class="meta-pill">
|
|
1329
|
+
<span class="meta-label">Etapas</span>
|
|
1330
|
+
<strong>{{ config.steps.length }}</strong>
|
|
1331
|
+
</div>
|
|
1332
|
+
</div>
|
|
1333
|
+
</div>
|
|
1356
1334
|
<div class="pdx-steps">
|
|
1357
1335
|
<div class="pdx-steps-header">
|
|
1358
|
-
<div
|
|
1359
|
-
|
|
1336
|
+
<div>
|
|
1337
|
+
<div class="section-title">Mapa de etapas</div>
|
|
1338
|
+
<div class="section-subtitle">Arraste para reordenar e selecione uma etapa para editar o conteúdo.</div>
|
|
1339
|
+
</div>
|
|
1340
|
+
<button mat-flat-button color="primary" (click)="addStep()"><mat-icon [praxisIcon]="'add'"></mat-icon>Adicionar etapa</button>
|
|
1360
1341
|
</div>
|
|
1361
|
-
<div
|
|
1362
|
-
<div
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
class="
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
<
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
<button
|
|
1397
|
-
mat-icon-
|
|
1398
|
-
matSuffix
|
|
1399
|
-
class="help-icon-button"
|
|
1400
|
-
type="button"
|
|
1401
|
-
[matTooltip]="'Lido por leitores de tela'"
|
|
1402
|
-
matTooltipPosition="above"
|
|
1403
|
-
>
|
|
1404
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1405
|
-
</button>
|
|
1406
|
-
</mat-form-field>
|
|
1407
|
-
<mat-form-field appearance="outline">
|
|
1408
|
-
<mat-label>ID que descreve (opcional)</mat-label>
|
|
1409
|
-
<input matInput [(ngModel)]="s.ariaLabelledby" (ngModelChange)="markDirty()" />
|
|
1410
|
-
<button
|
|
1411
|
-
mat-icon-button
|
|
1412
|
-
matSuffix
|
|
1413
|
-
class="help-icon-button"
|
|
1414
|
-
type="button"
|
|
1415
|
-
[matTooltip]="'ID de um elemento que descreve a etapa'"
|
|
1416
|
-
matTooltipPosition="above"
|
|
1417
|
-
>
|
|
1418
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1419
|
-
</button>
|
|
1420
|
-
</mat-form-field>
|
|
1421
|
-
<mat-form-field appearance="outline">
|
|
1422
|
-
<mat-label>Ícone/estado do marcador</mat-label>
|
|
1423
|
-
<input matInput [(ngModel)]="s.state" (ngModelChange)="markDirty()" placeholder="Ex.: number, done, edit" />
|
|
1424
|
-
<button
|
|
1425
|
-
mat-icon-button
|
|
1426
|
-
matSuffix
|
|
1427
|
-
class="help-icon-button"
|
|
1428
|
-
type="button"
|
|
1429
|
-
[matTooltip]="'Controla o ícone do passo (quando aplicável)'"
|
|
1430
|
-
matTooltipPosition="above"
|
|
1431
|
-
>
|
|
1432
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1433
|
-
</button>
|
|
1434
|
-
</mat-form-field>
|
|
1435
|
-
<mat-form-field appearance="outline">
|
|
1436
|
-
<mat-label>Mensagem de erro</mat-label>
|
|
1437
|
-
<input matInput [(ngModel)]="s.errorMessage" (ngModelChange)="markDirty()" />
|
|
1438
|
-
<button
|
|
1439
|
-
mat-icon-button
|
|
1440
|
-
matSuffix
|
|
1441
|
-
class="help-icon-button"
|
|
1442
|
-
type="button"
|
|
1443
|
-
[matTooltip]="'Mostrada quando há erro na etapa'"
|
|
1444
|
-
matTooltipPosition="above"
|
|
1445
|
-
>
|
|
1446
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1342
|
+
<div class="steps-workspace" *ngIf="activeStep as step; else noSteps">
|
|
1343
|
+
<div
|
|
1344
|
+
cdkDropList
|
|
1345
|
+
role="listbox"
|
|
1346
|
+
aria-label="Lista de etapas"
|
|
1347
|
+
(cdkDropListDropped)="drop($event)"
|
|
1348
|
+
class="pdx-step-list">
|
|
1349
|
+
<div
|
|
1350
|
+
class="pdx-step-item"
|
|
1351
|
+
*ngFor="let s of config.steps; let i = index"
|
|
1352
|
+
cdkDrag
|
|
1353
|
+
role="option"
|
|
1354
|
+
[attr.aria-selected]="activeStep === s"
|
|
1355
|
+
[attr.tabindex]="activeStep === s ? 0 : -1"
|
|
1356
|
+
[class.active]="activeStep === s"
|
|
1357
|
+
(click)="setActive(s)"
|
|
1358
|
+
(keydown.enter)="onStepItemEnter($event, s)"
|
|
1359
|
+
(keydown.space)="onStepItemSpace($event, s)"
|
|
1360
|
+
(keydown.arrowdown)="focusAdjacentStep($event, i, 1)"
|
|
1361
|
+
(keydown.arrowup)="focusAdjacentStep($event, i, -1)">
|
|
1362
|
+
<div class="drag-handle" cdkDragHandle><mat-icon [praxisIcon]="'drag_indicator'"></mat-icon></div>
|
|
1363
|
+
<div class="step-summary">
|
|
1364
|
+
<div class="step-summary-head">
|
|
1365
|
+
<div class="step-summary-index">Etapa {{ i + 1 }}</div>
|
|
1366
|
+
<div class="step-summary-title">{{ s.label || 'Sem título' }}</div>
|
|
1367
|
+
</div>
|
|
1368
|
+
<div class="step-summary-sub">{{ s.id || 'Sem identificador' }}</div>
|
|
1369
|
+
<div class="step-summary-flags">
|
|
1370
|
+
<span class="summary-chip" *ngIf="s.optional">Opcional</span>
|
|
1371
|
+
<span class="summary-chip" *ngIf="s.completed">Concluída</span>
|
|
1372
|
+
<span class="summary-chip summary-chip-warn" *ngIf="s.hasError">Erro</span>
|
|
1373
|
+
<span class="summary-chip" *ngIf="s.form">Formulário</span>
|
|
1374
|
+
</div>
|
|
1375
|
+
</div>
|
|
1376
|
+
<div class="pdx-actions">
|
|
1377
|
+
<button mat-icon-button color="warn" (click)="removeStep(i); $event.stopPropagation()" matTooltip="Remover" [attr.aria-label]="'Remover etapa ' + (s.label || (i + 1))">
|
|
1378
|
+
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
1447
1379
|
</button>
|
|
1448
|
-
</mat-form-field>
|
|
1449
|
-
<div class="pdx-flag-group">
|
|
1450
|
-
<mat-slide-toggle [(ngModel)]="s.optional" (ngModelChange)="markDirty()">Etapa opcional</mat-slide-toggle>
|
|
1451
|
-
<mat-slide-toggle [(ngModel)]="s.editable" (ngModelChange)="markDirty()">Permitir voltar e editar</mat-slide-toggle>
|
|
1452
|
-
<mat-slide-toggle [(ngModel)]="s.completed" (ngModelChange)="markDirty()">Marcar como concluída</mat-slide-toggle>
|
|
1453
|
-
<mat-slide-toggle [(ngModel)]="s.hasError" (ngModelChange)="markDirty()">Marcar como com erro</mat-slide-toggle>
|
|
1454
1380
|
</div>
|
|
1455
1381
|
</div>
|
|
1456
|
-
<div class="pdx-actions">
|
|
1457
|
-
<button mat-icon-button color="warn" (click)="removeStep(i)" matTooltip="Remover">
|
|
1458
|
-
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
1459
|
-
</button>
|
|
1460
|
-
</div>
|
|
1461
1382
|
</div>
|
|
1462
|
-
</div>
|
|
1463
|
-
</div>
|
|
1464
1383
|
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1384
|
+
<div class="pdx-active-step">
|
|
1385
|
+
<div class="hdr">
|
|
1386
|
+
<div class="active-step-head">
|
|
1387
|
+
<div class="eyebrow">Etapa selecionada</div>
|
|
1388
|
+
<div class="title">Editando: {{ step.label }}</div>
|
|
1389
|
+
<div class="section-subtitle">Ajuste conteúdo principal primeiro. Configurações secundárias ficam recolhidas para reduzir ruído.</div>
|
|
1390
|
+
</div>
|
|
1391
|
+
</div>
|
|
1392
|
+
|
|
1393
|
+
<div class="section">
|
|
1394
|
+
<div class="section-title">Dados principais</div>
|
|
1395
|
+
<div class="detail-grid">
|
|
1396
|
+
<mat-form-field appearance="outline" class="field-span-2">
|
|
1397
|
+
<mat-label>Título da etapa</mat-label>
|
|
1398
|
+
<input matInput [(ngModel)]="step.label" (ngModelChange)="markDirty()" />
|
|
1399
|
+
</mat-form-field>
|
|
1400
|
+
<mat-form-field appearance="outline">
|
|
1401
|
+
<mat-label>Identificador</mat-label>
|
|
1402
|
+
<input matInput [(ngModel)]="step.id" (ngModelChange)="markDirty()" />
|
|
1403
|
+
</mat-form-field>
|
|
1404
|
+
<mat-form-field appearance="outline">
|
|
1405
|
+
<mat-label>Ícone ou estado</mat-label>
|
|
1406
|
+
<input matInput [(ngModel)]="step.state" (ngModelChange)="markDirty()" placeholder="Ex.: number, done, edit" />
|
|
1407
|
+
</mat-form-field>
|
|
1408
|
+
<mat-form-field appearance="outline" class="field-span-2">
|
|
1409
|
+
<mat-label>Mensagem de erro</mat-label>
|
|
1410
|
+
<input matInput [(ngModel)]="step.errorMessage" (ngModelChange)="markDirty()" />
|
|
1411
|
+
</mat-form-field>
|
|
1412
|
+
</div>
|
|
1413
|
+
<div class="toggle-group">
|
|
1414
|
+
<mat-slide-toggle [(ngModel)]="step.optional" (ngModelChange)="markDirty()">Etapa opcional</mat-slide-toggle>
|
|
1415
|
+
<mat-slide-toggle [(ngModel)]="step.editable" (ngModelChange)="markDirty()">Permitir voltar e editar</mat-slide-toggle>
|
|
1416
|
+
<mat-slide-toggle [(ngModel)]="step.completed" (ngModelChange)="markDirty()">Marcar como concluída</mat-slide-toggle>
|
|
1417
|
+
<mat-slide-toggle [(ngModel)]="step.hasError" (ngModelChange)="markDirty()">Marcar como com erro</mat-slide-toggle>
|
|
1418
|
+
</div>
|
|
1419
|
+
</div>
|
|
1420
|
+
|
|
1421
|
+
<details class="disclosure">
|
|
1422
|
+
<summary>
|
|
1423
|
+
<span class="section-title">Acessibilidade e detalhes técnicos</span>
|
|
1424
|
+
<span class="section-subtitle">Rótulos auxiliares e metadados menos usados.</span>
|
|
1425
|
+
</summary>
|
|
1426
|
+
<div class="detail-grid disclosure-body">
|
|
1427
|
+
<mat-form-field appearance="outline">
|
|
1428
|
+
<mat-label>Texto alternativo</mat-label>
|
|
1429
|
+
<input matInput [(ngModel)]="step.ariaLabel" (ngModelChange)="markDirty()" />
|
|
1430
|
+
</mat-form-field>
|
|
1431
|
+
<mat-form-field appearance="outline">
|
|
1432
|
+
<mat-label>ID que descreve</mat-label>
|
|
1433
|
+
<input matInput [(ngModel)]="step.ariaLabelledby" (ngModelChange)="markDirty()" />
|
|
1434
|
+
</mat-form-field>
|
|
1435
|
+
</div>
|
|
1436
|
+
</details>
|
|
1472
1437
|
|
|
1473
|
-
|
|
1438
|
+
<div class="pdx-content-editor">
|
|
1474
1439
|
<div class="section editorial-section">
|
|
1475
1440
|
<div class="section-head">
|
|
1476
1441
|
<div>
|
|
1477
1442
|
<div class="section-title">Conteúdo editorial</div>
|
|
1478
|
-
<div class="section-subtitle">
|
|
1443
|
+
<div class="section-subtitle">Use blocos de apoio para contextualizar a etapa antes ou depois do formulário.</div>
|
|
1479
1444
|
</div>
|
|
1480
1445
|
</div>
|
|
1481
1446
|
|
|
1482
1447
|
<div class="zone-grid">
|
|
1483
|
-
<div class="zone-
|
|
1448
|
+
<div class="zone-column">
|
|
1484
1449
|
<div class="zone-head">
|
|
1485
1450
|
<div class="zone-title">Antes do formulário</div>
|
|
1486
1451
|
<div class="zone-actions">
|
|
@@ -1518,21 +1483,17 @@ class PraxisStepperConfigEditor {
|
|
|
1518
1483
|
<div class="meta" *ngIf="widgetBlockId(w) as blockId">ID: {{ blockId }}</div>
|
|
1519
1484
|
</div>
|
|
1520
1485
|
<div class="actions">
|
|
1521
|
-
<button mat-button (click)="editWidget(w)">
|
|
1486
|
+
<button mat-icon-button (click)="editWidget(w)" matTooltip="Editar bloco">
|
|
1522
1487
|
<mat-icon [praxisIcon]="'tune'"></mat-icon>
|
|
1523
|
-
Editar
|
|
1524
1488
|
</button>
|
|
1525
|
-
<button mat-button (click)="moveEditorialWidget(w, 'before', 'after')">
|
|
1526
|
-
<mat-icon [praxisIcon]="'
|
|
1527
|
-
Mover para depois
|
|
1489
|
+
<button mat-icon-button (click)="moveEditorialWidget(w, 'before', 'after')" matTooltip="Mover para depois do formulário">
|
|
1490
|
+
<mat-icon [praxisIcon]="'south'"></mat-icon>
|
|
1528
1491
|
</button>
|
|
1529
|
-
<button mat-button (click)="duplicateEditorialWidget(w, 'before')">
|
|
1492
|
+
<button mat-icon-button (click)="duplicateEditorialWidget(w, 'before')" matTooltip="Duplicar bloco">
|
|
1530
1493
|
<mat-icon [praxisIcon]="'content_copy'"></mat-icon>
|
|
1531
|
-
Duplicar
|
|
1532
1494
|
</button>
|
|
1533
|
-
<button mat-button color="warn" (click)="removeEditorialWidget(w, 'before')">
|
|
1495
|
+
<button mat-icon-button color="warn" (click)="removeEditorialWidget(w, 'before')" matTooltip="Remover bloco">
|
|
1534
1496
|
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
1535
|
-
Remover
|
|
1536
1497
|
</button>
|
|
1537
1498
|
</div>
|
|
1538
1499
|
</div>
|
|
@@ -1540,7 +1501,7 @@ class PraxisStepperConfigEditor {
|
|
|
1540
1501
|
</div>
|
|
1541
1502
|
</div>
|
|
1542
1503
|
|
|
1543
|
-
<div class="zone-
|
|
1504
|
+
<div class="zone-column">
|
|
1544
1505
|
<div class="zone-head">
|
|
1545
1506
|
<div class="zone-title">Depois do formulário</div>
|
|
1546
1507
|
<div class="zone-actions">
|
|
@@ -1578,21 +1539,17 @@ class PraxisStepperConfigEditor {
|
|
|
1578
1539
|
<div class="meta" *ngIf="widgetBlockId(w) as blockId">ID: {{ blockId }}</div>
|
|
1579
1540
|
</div>
|
|
1580
1541
|
<div class="actions">
|
|
1581
|
-
<button mat-button (click)="editWidget(w)">
|
|
1542
|
+
<button mat-icon-button (click)="editWidget(w)" matTooltip="Editar bloco">
|
|
1582
1543
|
<mat-icon [praxisIcon]="'tune'"></mat-icon>
|
|
1583
|
-
Editar
|
|
1584
1544
|
</button>
|
|
1585
|
-
<button mat-button (click)="moveEditorialWidget(w, 'after', 'before')">
|
|
1586
|
-
<mat-icon [praxisIcon]="'
|
|
1587
|
-
Mover para antes
|
|
1545
|
+
<button mat-icon-button (click)="moveEditorialWidget(w, 'after', 'before')" matTooltip="Mover para antes do formulário">
|
|
1546
|
+
<mat-icon [praxisIcon]="'north'"></mat-icon>
|
|
1588
1547
|
</button>
|
|
1589
|
-
<button mat-button (click)="duplicateEditorialWidget(w, 'after')">
|
|
1548
|
+
<button mat-icon-button (click)="duplicateEditorialWidget(w, 'after')" matTooltip="Duplicar bloco">
|
|
1590
1549
|
<mat-icon [praxisIcon]="'content_copy'"></mat-icon>
|
|
1591
|
-
Duplicar
|
|
1592
1550
|
</button>
|
|
1593
|
-
<button mat-button color="warn" (click)="removeEditorialWidget(w, 'after')">
|
|
1551
|
+
<button mat-icon-button color="warn" (click)="removeEditorialWidget(w, 'after')" matTooltip="Remover bloco">
|
|
1594
1552
|
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
1595
|
-
Remover
|
|
1596
1553
|
</button>
|
|
1597
1554
|
</div>
|
|
1598
1555
|
</div>
|
|
@@ -1606,17 +1563,19 @@ class PraxisStepperConfigEditor {
|
|
|
1606
1563
|
<div class="section-title">Formulário da etapa</div>
|
|
1607
1564
|
<div class="section-body">
|
|
1608
1565
|
<ng-container *ngIf="step.form; else addFormBtn">
|
|
1609
|
-
<
|
|
1610
|
-
<
|
|
1611
|
-
<mat-icon
|
|
1612
|
-
<
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1566
|
+
<div class="form-row-card">
|
|
1567
|
+
<div class="form-row-main">
|
|
1568
|
+
<mat-icon [praxisIcon]="'dynamic_form'"></mat-icon>
|
|
1569
|
+
<div>
|
|
1570
|
+
<div class="name">Formulário principal</div>
|
|
1571
|
+
<div class="sub">{{ step.form.formId || step.id || '—' }}</div>
|
|
1572
|
+
</div>
|
|
1573
|
+
</div>
|
|
1574
|
+
<div class="form-row-actions">
|
|
1616
1575
|
<button mat-button (click)="editMainForm()"><mat-icon [praxisIcon]="'tune'"></mat-icon> Editar</button>
|
|
1617
1576
|
<button mat-button color="warn" (click)="removeMainForm()"><mat-icon [praxisIcon]="'delete'"></mat-icon> Remover</button>
|
|
1618
|
-
</
|
|
1619
|
-
</
|
|
1577
|
+
</div>
|
|
1578
|
+
</div>
|
|
1620
1579
|
</ng-container>
|
|
1621
1580
|
<ng-template #addFormBtn>
|
|
1622
1581
|
<button mat-stroked-button color="primary" (click)="addMainForm()"><mat-icon [praxisIcon]="'add'"></mat-icon> Adicionar formulário</button>
|
|
@@ -1628,7 +1587,7 @@ class PraxisStepperConfigEditor {
|
|
|
1628
1587
|
<div class="section-head">
|
|
1629
1588
|
<div>
|
|
1630
1589
|
<div class="section-title">Componentes avançados</div>
|
|
1631
|
-
<div class="section-subtitle">
|
|
1590
|
+
<div class="section-subtitle">Atalhos para montar experiências mais ricas sem perder clareza no fluxo.</div>
|
|
1632
1591
|
</div>
|
|
1633
1592
|
<button mat-stroked-button (click)="openMoreComponents()">
|
|
1634
1593
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -1637,12 +1596,14 @@ class PraxisStepperConfigEditor {
|
|
|
1637
1596
|
</div>
|
|
1638
1597
|
<div class="section-body">
|
|
1639
1598
|
<div class="cta-grid">
|
|
1640
|
-
<div class="cta-
|
|
1599
|
+
<div class="cta-row-item">
|
|
1641
1600
|
<div class="cta-head">
|
|
1642
1601
|
<mat-icon [praxisIcon]="'account_tree'"></mat-icon>
|
|
1643
|
-
<div
|
|
1602
|
+
<div>
|
|
1603
|
+
<div class="cta-title">Lista em árvore</div>
|
|
1604
|
+
<div class="cta-desc">Dados hierárquicos com seleção simples.</div>
|
|
1605
|
+
</div>
|
|
1644
1606
|
</div>
|
|
1645
|
-
<div class="cta-desc">Exiba dados hierárquicos com seleção simples.</div>
|
|
1646
1607
|
<div class="cta-actions">
|
|
1647
1608
|
<button mat-stroked-button (click)="addTreeList()">
|
|
1648
1609
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -1650,12 +1611,14 @@ class PraxisStepperConfigEditor {
|
|
|
1650
1611
|
</button>
|
|
1651
1612
|
</div>
|
|
1652
1613
|
</div>
|
|
1653
|
-
<div class="cta-
|
|
1614
|
+
<div class="cta-row-item">
|
|
1654
1615
|
<div class="cta-head">
|
|
1655
1616
|
<mat-icon [praxisIcon]="'swap_horiz'"></mat-icon>
|
|
1656
|
-
<div
|
|
1617
|
+
<div>
|
|
1618
|
+
<div class="cta-title">Transferência de itens</div>
|
|
1619
|
+
<div class="cta-desc">Mover itens entre listas para seleção múltipla.</div>
|
|
1620
|
+
</div>
|
|
1657
1621
|
</div>
|
|
1658
|
-
<div class="cta-desc">Mover itens entre listas (ideal para múltipla seleção).</div>
|
|
1659
1622
|
<div class="cta-actions">
|
|
1660
1623
|
<button mat-stroked-button (click)="addTransferListQuick()">
|
|
1661
1624
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -1663,12 +1626,14 @@ class PraxisStepperConfigEditor {
|
|
|
1663
1626
|
</button>
|
|
1664
1627
|
</div>
|
|
1665
1628
|
</div>
|
|
1666
|
-
<div class="cta-
|
|
1629
|
+
<div class="cta-row-item">
|
|
1667
1630
|
<div class="cta-head">
|
|
1668
1631
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
1669
|
-
<div
|
|
1632
|
+
<div>
|
|
1633
|
+
<div class="cta-title">Seleção com busca</div>
|
|
1634
|
+
<div class="cta-desc">Seleção com busca local ou remota.</div>
|
|
1635
|
+
</div>
|
|
1670
1636
|
</div>
|
|
1671
|
-
<div class="cta-desc">Campo de seleção com busca remota/local.</div>
|
|
1672
1637
|
<div class="cta-actions">
|
|
1673
1638
|
<button mat-stroked-button (click)="addSearchableSelect()">
|
|
1674
1639
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -1676,12 +1641,14 @@ class PraxisStepperConfigEditor {
|
|
|
1676
1641
|
</button>
|
|
1677
1642
|
</div>
|
|
1678
1643
|
</div>
|
|
1679
|
-
<div class="cta-
|
|
1644
|
+
<div class="cta-row-item">
|
|
1680
1645
|
<div class="cta-head">
|
|
1681
1646
|
<mat-icon [praxisIcon]="'upload_file'"></mat-icon>
|
|
1682
|
-
<div
|
|
1647
|
+
<div>
|
|
1648
|
+
<div class="cta-title">Upload de arquivos</div>
|
|
1649
|
+
<div class="cta-desc">Anexos com validação e fluxo de upload.</div>
|
|
1650
|
+
</div>
|
|
1683
1651
|
</div>
|
|
1684
|
-
<div class="cta-desc">Anexe documentos com validação de upload.</div>
|
|
1685
1652
|
<div class="cta-actions">
|
|
1686
1653
|
<button mat-stroked-button (click)="addFilesUpload()">
|
|
1687
1654
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -1699,13 +1666,11 @@ class PraxisStepperConfigEditor {
|
|
|
1699
1666
|
<div class="sub">{{ w.id }}</div>
|
|
1700
1667
|
</div>
|
|
1701
1668
|
<div class="actions">
|
|
1702
|
-
<button mat-button (click)="editWidget(w)" [disabled]="!canEditWidget(w)">
|
|
1669
|
+
<button mat-icon-button (click)="editWidget(w)" [disabled]="!canEditWidget(w)" matTooltip="Editar componente">
|
|
1703
1670
|
<mat-icon [praxisIcon]="'tune'"></mat-icon>
|
|
1704
|
-
Editar
|
|
1705
1671
|
</button>
|
|
1706
|
-
<button mat-button color="warn" (click)="removeAdvancedWidget(w)">
|
|
1672
|
+
<button mat-icon-button color="warn" (click)="removeAdvancedWidget(w)" matTooltip="Remover componente">
|
|
1707
1673
|
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
1708
|
-
Remover
|
|
1709
1674
|
</button>
|
|
1710
1675
|
</div>
|
|
1711
1676
|
</div>
|
|
@@ -1713,78 +1678,95 @@ class PraxisStepperConfigEditor {
|
|
|
1713
1678
|
</div>
|
|
1714
1679
|
</div>
|
|
1715
1680
|
</div>
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1681
|
+
</div>
|
|
1682
|
+
</div>
|
|
1683
|
+
</div>
|
|
1684
|
+
</div>
|
|
1685
|
+
<ng-template #noSteps>
|
|
1686
|
+
<div class="muted">Nenhuma etapa definida.</div>
|
|
1687
|
+
</ng-template>
|
|
1688
|
+
</div>
|
|
1722
1689
|
</mat-tab>
|
|
1723
1690
|
|
|
1724
1691
|
<mat-tab label="Navegação">
|
|
1725
1692
|
<div class="tab-pad">
|
|
1726
|
-
<div class="
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
<
|
|
1730
|
-
<
|
|
1731
|
-
|
|
1732
|
-
<option value="basic">Texto</option>
|
|
1733
|
-
<option value="flat">Plano</option>
|
|
1734
|
-
<option value="stroked">Contornado</option>
|
|
1735
|
-
<option value="raised">Elevado</option>
|
|
1736
|
-
</select>
|
|
1737
|
-
</mat-form-field>
|
|
1738
|
-
<mat-form-field appearance="outline">
|
|
1739
|
-
<mat-label>Cor</mat-label>
|
|
1740
|
-
<select matNativeControl [(ngModel)]="navigationCfg.color" (ngModelChange)="markDirty()">
|
|
1741
|
-
<option [ngValue]="undefined">Padrão</option>
|
|
1742
|
-
<option value="primary">Primária</option>
|
|
1743
|
-
<option value="accent">Acento</option>
|
|
1744
|
-
<option value="warn">Alerta</option>
|
|
1745
|
-
</select>
|
|
1746
|
-
</mat-form-field>
|
|
1747
|
-
<mat-form-field appearance="outline">
|
|
1748
|
-
<mat-label>Alinhamento</mat-label>
|
|
1749
|
-
<select matNativeControl [(ngModel)]="navigationCfg.align" (ngModelChange)="markDirty()">
|
|
1750
|
-
<option [ngValue]="undefined">Direita</option>
|
|
1751
|
-
<option value="start">Esquerda</option>
|
|
1752
|
-
<option value="center">Centro</option>
|
|
1753
|
-
<option value="space-between">Espaçado</option>
|
|
1754
|
-
<option value="end">Direita</option>
|
|
1755
|
-
</select>
|
|
1756
|
-
</mat-form-field>
|
|
1757
|
-
</div>
|
|
1758
|
-
|
|
1759
|
-
<div class="pdx-toggles">
|
|
1760
|
-
<mat-slide-toggle [(ngModel)]="navigationCfg.visible" (ngModelChange)="markDirty()">Mostrar navegação padrão</mat-slide-toggle>
|
|
1693
|
+
<div class="editor-intro">
|
|
1694
|
+
<div class="editor-intro-copy">
|
|
1695
|
+
<div class="eyebrow">Ações padrão</div>
|
|
1696
|
+
<div class="editor-title">Configure a navegação entre etapas</div>
|
|
1697
|
+
<div class="editor-subtitle">Defina quando os botões padrão aparecem e como eles se apresentam visualmente no fluxo.</div>
|
|
1698
|
+
</div>
|
|
1761
1699
|
</div>
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
<
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1700
|
+
<div class="settings-group">
|
|
1701
|
+
<div class="group-head">
|
|
1702
|
+
<div class="section-title">Comportamento dos botões</div>
|
|
1703
|
+
<div class="section-subtitle">Aparência e alinhamento da navegação padrão do stepper.</div>
|
|
1704
|
+
</div>
|
|
1705
|
+
<div class="toggle-group">
|
|
1706
|
+
<mat-slide-toggle [(ngModel)]="navigationCfg.visible" (ngModelChange)="markDirty()">Mostrar navegação padrão</mat-slide-toggle>
|
|
1707
|
+
</div>
|
|
1708
|
+
<div class="pdx-grid">
|
|
1709
|
+
<mat-form-field appearance="outline">
|
|
1710
|
+
<mat-label>Estilo dos botões</mat-label>
|
|
1711
|
+
<select matNativeControl [(ngModel)]="navigationCfg.variant" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
|
|
1712
|
+
<option [ngValue]="undefined">Padrão (elevado)</option>
|
|
1713
|
+
<option value="basic">Texto</option>
|
|
1714
|
+
<option value="flat">Plano</option>
|
|
1715
|
+
<option value="stroked">Contornado</option>
|
|
1716
|
+
<option value="raised">Elevado</option>
|
|
1717
|
+
</select>
|
|
1718
|
+
</mat-form-field>
|
|
1719
|
+
<mat-form-field appearance="outline">
|
|
1720
|
+
<mat-label>Cor</mat-label>
|
|
1721
|
+
<select matNativeControl [(ngModel)]="navigationCfg.color" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
|
|
1722
|
+
<option [ngValue]="undefined">Padrão</option>
|
|
1723
|
+
<option value="primary">Primária</option>
|
|
1724
|
+
<option value="accent">Acento</option>
|
|
1725
|
+
<option value="warn">Alerta</option>
|
|
1726
|
+
</select>
|
|
1727
|
+
</mat-form-field>
|
|
1728
|
+
<mat-form-field appearance="outline">
|
|
1729
|
+
<mat-label>Alinhamento</mat-label>
|
|
1730
|
+
<select matNativeControl [(ngModel)]="navigationCfg.align" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
|
|
1731
|
+
<option [ngValue]="undefined">Direita</option>
|
|
1732
|
+
<option value="start">Esquerda</option>
|
|
1733
|
+
<option value="center">Centro</option>
|
|
1734
|
+
<option value="space-between">Espaçado</option>
|
|
1735
|
+
<option value="end">Direita</option>
|
|
1736
|
+
</select>
|
|
1737
|
+
</mat-form-field>
|
|
1738
|
+
</div>
|
|
1772
1739
|
</div>
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
<div class="
|
|
1777
|
-
<button mat-stroked-button type="button" (click)="pickNavIcon('prevIcon')">
|
|
1778
|
-
<mat-icon *ngIf="navigationCfg.prevIcon" [praxisIcon]="navigationCfg.prevIcon"></mat-icon>
|
|
1779
|
-
<ng-container *ngIf="!navigationCfg.prevIcon">Escolher</ng-container>
|
|
1780
|
-
</button>
|
|
1740
|
+
<div class="settings-group">
|
|
1741
|
+
<div class="group-head">
|
|
1742
|
+
<div class="section-title">Rótulos e ícones</div>
|
|
1743
|
+
<div class="section-subtitle">Ajuste a cópia e os ícones usados nas ações de voltar e avançar.</div>
|
|
1781
1744
|
</div>
|
|
1782
|
-
<div class="
|
|
1783
|
-
<
|
|
1784
|
-
|
|
1785
|
-
<
|
|
1786
|
-
|
|
1787
|
-
|
|
1745
|
+
<div class="pdx-grid">
|
|
1746
|
+
<mat-form-field appearance="outline">
|
|
1747
|
+
<mat-label>Texto do botão Voltar</mat-label>
|
|
1748
|
+
<input matInput [(ngModel)]="navigationCfg.prevLabel" (ngModelChange)="markDirty()" placeholder="Ex.: Voltar" [disabled]="!navigationCfg.visible" />
|
|
1749
|
+
</mat-form-field>
|
|
1750
|
+
<mat-form-field appearance="outline">
|
|
1751
|
+
<mat-label>Texto do botão Próximo</mat-label>
|
|
1752
|
+
<input matInput [(ngModel)]="navigationCfg.nextLabel" (ngModelChange)="markDirty()" placeholder="Ex.: Próximo" [disabled]="!navigationCfg.visible" />
|
|
1753
|
+
</mat-form-field>
|
|
1754
|
+
</div>
|
|
1755
|
+
<div class="inline-actions-grid">
|
|
1756
|
+
<div class="inline-action-item">
|
|
1757
|
+
<div class="section-title">Ícone de Voltar</div>
|
|
1758
|
+
<button mat-stroked-button type="button" (click)="pickNavIcon('prevIcon')" [disabled]="!navigationCfg.visible" aria-label="Escolher ícone do botão Voltar">
|
|
1759
|
+
<mat-icon *ngIf="navigationCfg.prevIcon" [fontIcon]="navigationCfg.prevIcon"></mat-icon>
|
|
1760
|
+
<ng-container *ngIf="!navigationCfg.prevIcon">Escolher</ng-container>
|
|
1761
|
+
</button>
|
|
1762
|
+
</div>
|
|
1763
|
+
<div class="inline-action-item">
|
|
1764
|
+
<div class="section-title">Ícone de Próximo</div>
|
|
1765
|
+
<button mat-stroked-button type="button" (click)="pickNavIcon('nextIcon')" [disabled]="!navigationCfg.visible" aria-label="Escolher ícone do botão Próximo">
|
|
1766
|
+
<mat-icon *ngIf="navigationCfg.nextIcon" [fontIcon]="navigationCfg.nextIcon"></mat-icon>
|
|
1767
|
+
<ng-container *ngIf="!navigationCfg.nextIcon">Escolher</ng-container>
|
|
1768
|
+
</button>
|
|
1769
|
+
</div>
|
|
1788
1770
|
</div>
|
|
1789
1771
|
</div>
|
|
1790
1772
|
</div>
|
|
@@ -1792,141 +1774,119 @@ class PraxisStepperConfigEditor {
|
|
|
1792
1774
|
|
|
1793
1775
|
<mat-tab label="Aparência">
|
|
1794
1776
|
<div class="tab-pad">
|
|
1795
|
-
<div class="
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
<
|
|
1799
|
-
<
|
|
1800
|
-
|
|
1801
|
-
mat-icon-button
|
|
1802
|
-
matSuffix
|
|
1803
|
-
class="help-icon-button"
|
|
1804
|
-
type="button"
|
|
1805
|
-
[matTooltip]="'Altura do item do cabeçalho'"
|
|
1806
|
-
matTooltipPosition="above"
|
|
1807
|
-
>
|
|
1808
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1809
|
-
</button>
|
|
1810
|
-
</mat-form-field>
|
|
1811
|
-
<mat-form-field appearance="outline">
|
|
1812
|
-
<mat-label>Tamanho do texto (px)</mat-label>
|
|
1813
|
-
<input matInput type="number" [ngModel]="headerLabelTextSizePx" (ngModelChange)="setHeaderLabelTextSizePx($event)" placeholder="Ex.: 14" />
|
|
1814
|
-
<button
|
|
1815
|
-
mat-icon-button
|
|
1816
|
-
matSuffix
|
|
1817
|
-
class="help-icon-button"
|
|
1818
|
-
type="button"
|
|
1819
|
-
[matTooltip]="'Tamanho do título da etapa'"
|
|
1820
|
-
matTooltipPosition="above"
|
|
1821
|
-
>
|
|
1822
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1823
|
-
</button>
|
|
1824
|
-
</mat-form-field>
|
|
1825
|
-
<mat-form-field appearance="outline">
|
|
1826
|
-
<mat-label>Peso do texto</mat-label>
|
|
1827
|
-
<select matNativeControl [ngModel]="headerLabelTextWeight" (ngModelChange)="setHeaderLabelTextWeight($event)">
|
|
1828
|
-
<option [ngValue]="undefined">Padrão</option>
|
|
1829
|
-
<option value="400">Normal</option>
|
|
1830
|
-
<option value="500">Médio</option>
|
|
1831
|
-
<option value="600">Seminegrito</option>
|
|
1832
|
-
<option value="700">Negrito</option>
|
|
1833
|
-
</select>
|
|
1834
|
-
</mat-form-field>
|
|
1835
|
-
</div>
|
|
1836
|
-
<div class="pdx-grid">
|
|
1837
|
-
<mat-form-field appearance="outline" class="w-full">
|
|
1838
|
-
<mat-label>Classe de tema (opcional)</mat-label>
|
|
1839
|
-
<input matInput [(ngModel)]="appearance.themeClass" (ngModelChange)="onAppearanceChange()" placeholder="Ex.: theme-stepper-custom" />
|
|
1840
|
-
<button
|
|
1841
|
-
mat-icon-button
|
|
1842
|
-
matSuffix
|
|
1843
|
-
class="help-icon-button"
|
|
1844
|
-
type="button"
|
|
1845
|
-
[matTooltip]="'Aplica as cores apenas dentro desse seletor'"
|
|
1846
|
-
matTooltipPosition="above"
|
|
1847
|
-
>
|
|
1848
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1849
|
-
</button>
|
|
1850
|
-
</mat-form-field>
|
|
1851
|
-
<mat-form-field appearance="outline">
|
|
1852
|
-
<mat-label>Conjunto de ícones</mat-label>
|
|
1853
|
-
<select matNativeControl [(ngModel)]="appearance.iconsSet" (ngModelChange)="onAppearanceChange()">
|
|
1854
|
-
<option [ngValue]="undefined">Material Icons (padrão)</option>
|
|
1855
|
-
<option value="material-symbols-outlined">Material Symbols (Outlined)</option>
|
|
1856
|
-
<option value="material-symbols-rounded">Material Symbols (Rounded)</option>
|
|
1857
|
-
<option value="material-symbols-sharp">Material Symbols (Sharp)</option>
|
|
1858
|
-
</select>
|
|
1859
|
-
<button
|
|
1860
|
-
mat-icon-button
|
|
1861
|
-
matSuffix
|
|
1862
|
-
class="help-icon-button"
|
|
1863
|
-
type="button"
|
|
1864
|
-
[matTooltip]="'Selecione se usar ícones do Material Symbols'"
|
|
1865
|
-
matTooltipPosition="above"
|
|
1866
|
-
>
|
|
1867
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1868
|
-
</button>
|
|
1869
|
-
</mat-form-field>
|
|
1777
|
+
<div class="editor-intro">
|
|
1778
|
+
<div class="editor-intro-copy">
|
|
1779
|
+
<div class="eyebrow">Tema visual</div>
|
|
1780
|
+
<div class="editor-title">Personalize aparência sem perder consistência</div>
|
|
1781
|
+
<div class="editor-subtitle">Comece pelos ajustes rápidos. Tokens e snippet SCSS ficam recolhidos para cenários avançados.</div>
|
|
1782
|
+
</div>
|
|
1870
1783
|
</div>
|
|
1871
|
-
<div class="
|
|
1872
|
-
<div class="
|
|
1873
|
-
<div class="
|
|
1874
|
-
<
|
|
1875
|
-
<mat-icon *ngIf="icons.number; else pick" [praxisIcon]="icons.number"></mat-icon>
|
|
1876
|
-
<ng-template #pick>Escolher</ng-template>
|
|
1877
|
-
</button>
|
|
1784
|
+
<div class="settings-group">
|
|
1785
|
+
<div class="group-head">
|
|
1786
|
+
<div class="section-title">Ajustes rápidos</div>
|
|
1787
|
+
<div class="section-subtitle">Controles mais comuns para tamanho, peso tipográfico e tema.</div>
|
|
1878
1788
|
</div>
|
|
1879
|
-
<div class="
|
|
1880
|
-
<
|
|
1881
|
-
|
|
1882
|
-
<
|
|
1883
|
-
|
|
1884
|
-
|
|
1789
|
+
<div class="quick-grid">
|
|
1790
|
+
<mat-form-field appearance="outline">
|
|
1791
|
+
<mat-label>Altura do cabeçalho (px)</mat-label>
|
|
1792
|
+
<input matInput type="number" [ngModel]="headerHeightPx" (ngModelChange)="setHeaderHeightPx($event)" placeholder="Ex.: 48" />
|
|
1793
|
+
</mat-form-field>
|
|
1794
|
+
<mat-form-field appearance="outline">
|
|
1795
|
+
<mat-label>Tamanho do texto (px)</mat-label>
|
|
1796
|
+
<input matInput type="number" [ngModel]="headerLabelTextSizePx" (ngModelChange)="setHeaderLabelTextSizePx($event)" placeholder="Ex.: 14" />
|
|
1797
|
+
</mat-form-field>
|
|
1798
|
+
<mat-form-field appearance="outline">
|
|
1799
|
+
<mat-label>Peso do texto</mat-label>
|
|
1800
|
+
<select matNativeControl [ngModel]="headerLabelTextWeight" (ngModelChange)="setHeaderLabelTextWeight($event)">
|
|
1801
|
+
<option [ngValue]="undefined">Padrão</option>
|
|
1802
|
+
<option value="400">Normal</option>
|
|
1803
|
+
<option value="500">Médio</option>
|
|
1804
|
+
<option value="600">Seminegrito</option>
|
|
1805
|
+
<option value="700">Negrito</option>
|
|
1806
|
+
</select>
|
|
1807
|
+
</mat-form-field>
|
|
1808
|
+
<mat-form-field appearance="outline" class="field-span-2">
|
|
1809
|
+
<mat-label>Classe de tema</mat-label>
|
|
1810
|
+
<input matInput [(ngModel)]="appearance.themeClass" (ngModelChange)="onAppearanceChange()" placeholder="Ex.: theme-stepper-custom" />
|
|
1811
|
+
</mat-form-field>
|
|
1812
|
+
<mat-form-field appearance="outline">
|
|
1813
|
+
<mat-label>Conjunto de ícones</mat-label>
|
|
1814
|
+
<select matNativeControl [(ngModel)]="appearance.iconsSet" (ngModelChange)="onAppearanceChange()">
|
|
1815
|
+
<option [ngValue]="undefined">Material Icons (padrão)</option>
|
|
1816
|
+
<option value="material-symbols-outlined">Material Symbols (Outlined)</option>
|
|
1817
|
+
<option value="material-symbols-rounded">Material Symbols (Rounded)</option>
|
|
1818
|
+
<option value="material-symbols-sharp">Material Symbols (Sharp)</option>
|
|
1819
|
+
</select>
|
|
1820
|
+
</mat-form-field>
|
|
1885
1821
|
</div>
|
|
1886
|
-
<div class="icon-
|
|
1887
|
-
<div class="
|
|
1888
|
-
|
|
1889
|
-
<mat-
|
|
1890
|
-
|
|
1891
|
-
|
|
1822
|
+
<div class="inline-actions-grid icon-picker-grid">
|
|
1823
|
+
<div class="inline-action-item">
|
|
1824
|
+
<div class="section-title">Ícone do número</div>
|
|
1825
|
+
<button mat-stroked-button type="button" (click)="pickIcon('number')" aria-label="Escolher ícone do número">
|
|
1826
|
+
<mat-icon *ngIf="icons.number; else pick" [fontIcon]="icons.number"></mat-icon>
|
|
1827
|
+
<ng-template #pick>Escolher</ng-template>
|
|
1828
|
+
</button>
|
|
1829
|
+
</div>
|
|
1830
|
+
<div class="inline-action-item">
|
|
1831
|
+
<div class="section-title">Ícone concluído</div>
|
|
1832
|
+
<button mat-stroked-button type="button" (click)="pickIcon('done')" aria-label="Escolher ícone de concluído">
|
|
1833
|
+
<mat-icon *ngIf="icons.done; else pick2" [fontIcon]="icons.done"></mat-icon>
|
|
1834
|
+
<ng-template #pick2>Escolher</ng-template>
|
|
1835
|
+
</button>
|
|
1836
|
+
</div>
|
|
1837
|
+
<div class="inline-action-item">
|
|
1838
|
+
<div class="section-title">Ícone edição</div>
|
|
1839
|
+
<button mat-stroked-button type="button" (click)="pickIcon('edit')" aria-label="Escolher ícone de edição">
|
|
1840
|
+
<mat-icon *ngIf="icons.edit; else pick3" [fontIcon]="icons.edit"></mat-icon>
|
|
1841
|
+
<ng-template #pick3>Escolher</ng-template>
|
|
1842
|
+
</button>
|
|
1843
|
+
</div>
|
|
1844
|
+
<div class="inline-action-item">
|
|
1845
|
+
<div class="section-title">Ícone de erro</div>
|
|
1846
|
+
<button mat-stroked-button type="button" (click)="pickIcon('error')" aria-label="Escolher ícone de erro">
|
|
1847
|
+
<mat-icon *ngIf="icons.error; else pick4" [fontIcon]="icons.error"></mat-icon>
|
|
1848
|
+
<ng-template #pick4>Escolher</ng-template>
|
|
1849
|
+
</button>
|
|
1850
|
+
</div>
|
|
1892
1851
|
</div>
|
|
1893
|
-
<div class="
|
|
1894
|
-
<div class="
|
|
1895
|
-
|
|
1896
|
-
<mat-
|
|
1897
|
-
|
|
1898
|
-
</button>
|
|
1852
|
+
<div class="icons-hint" *ngIf="symbolsLikelySelected.length && !appearance.iconsSet">
|
|
1853
|
+
<div class="muted">
|
|
1854
|
+
Dica: {{ symbolsLikelySelected.join(', ') }} são ícones do Material Symbols. Selecione um conjunto Symbols abaixo ou clique em
|
|
1855
|
+
<button mat-button color="primary" type="button" (click)="setIconsSetToSymbols()">Usar Material Symbols (Outlined)</button>.
|
|
1856
|
+
</div>
|
|
1899
1857
|
</div>
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
<button mat-button
|
|
1858
|
+
<div class="pdx-appearance-actions">
|
|
1859
|
+
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('neutral')">Preset: neutro</button>
|
|
1860
|
+
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('primary')">Preset: primário</button>
|
|
1861
|
+
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('high-contrast')">Preset: alto contraste</button>
|
|
1862
|
+
<button mat-button type="button" (click)="clearTokens()">Limpar tokens</button>
|
|
1905
1863
|
</div>
|
|
1906
1864
|
</div>
|
|
1907
|
-
<
|
|
1908
|
-
<
|
|
1909
|
-
<
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1865
|
+
<details class="disclosure">
|
|
1866
|
+
<summary>
|
|
1867
|
+
<span class="section-title">Tokens avançados e snippet SCSS</span>
|
|
1868
|
+
<span class="section-subtitle">Use quando precisar sair do ajuste rápido e controlar o tema com granularidade.</span>
|
|
1869
|
+
</summary>
|
|
1870
|
+
<div class="disclosure-body">
|
|
1871
|
+
<div class="tokens-grid">
|
|
1872
|
+
<div class="token-item" *ngFor="let key of stepperTokenKeys">
|
|
1873
|
+
<mat-form-field appearance="outline" class="w-full">
|
|
1874
|
+
<mat-label>{{ key }}</mat-label>
|
|
1875
|
+
<input matInput [ngModel]="appearance.tokens?.[key]" (ngModelChange)="onTokenChange(key, $event)" placeholder="valor CSS ou var(--token)" />
|
|
1876
|
+
</mat-form-field>
|
|
1877
|
+
</div>
|
|
1878
|
+
</div>
|
|
1879
|
+
<div class="code-card">
|
|
1880
|
+
<div class="code-head">Snippet SCSS</div>
|
|
1881
|
+
<pre class="code"><code>{{ scssSnippet() }}</code></pre>
|
|
1882
|
+
</div>
|
|
1913
1883
|
</div>
|
|
1914
|
-
</
|
|
1915
|
-
<div class="pdx-appearance-actions">
|
|
1916
|
-
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('neutral')">Preset: neutro</button>
|
|
1917
|
-
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('primary')">Preset: primário</button>
|
|
1918
|
-
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('high-contrast')">Preset: alto contraste</button>
|
|
1919
|
-
<button mat-button type="button" (click)="clearTokens()">Limpar tokens</button>
|
|
1920
|
-
</div>
|
|
1921
|
-
<mat-card appearance="outlined" class="code-card">
|
|
1922
|
-
<div class="code-head">Snippet SCSS</div>
|
|
1923
|
-
<pre class="code"><code>{{ scssSnippet() }}</code></pre>
|
|
1924
|
-
</mat-card>
|
|
1884
|
+
</details>
|
|
1925
1885
|
</div>
|
|
1926
1886
|
</mat-tab>
|
|
1927
1887
|
</mat-tab-group>
|
|
1928
1888
|
</div>
|
|
1929
|
-
`, isInline: true, styles: [".pdx-editor{display:grid;gap:16px}.pdx-editor .mat-mdc-form-field{width:100%}.pdx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.pdx-toggles{display:flex;gap:12px;flex-wrap:wrap}.tab-pad{padding:12px;display:grid;gap:12px;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.help{color:var(--md-sys-color-on-surface-variant);font-size:13px}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:6px}.icons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}.icon-item{display:grid;gap:6px;align-content:start}.icons-hint{margin-top:4px}.pdx-steps{display:grid;gap:8px}.pdx-steps-header{display:flex;justify-content:space-between;align-items:center}.pdx-step-list{display:grid;gap:8px}.pdx-step-item{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:start;padding:8px;border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;background:var(--md-sys-color-surface);cursor:pointer}.pdx-step-item.active{border-color:var(--md-sys-color-primary);box-shadow:var(--mat-elevation-level2)}.drag-handle{display:flex;align-items:center;color:var(--md-sys-color-on-surface-variant)}.pdx-fields{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.pdx-flag-group{display:flex;gap:10px;align-items:center}.pdx-active-step{display:grid;gap:12px;padding-top:8px;border-top:1px dashed var(--md-sys-color-outline-variant)}.pdx-active-step .hdr{display:flex;gap:12px;align-items:center;justify-content:space-between}.pdx-content-editor{display:grid;gap:16px}.section{display:grid;gap:8px;padding:12px;border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;background:var(--md-sys-color-surface-container-lowest)}.section-body{display:grid;gap:8px}.section-title{font-weight:600;opacity:.85}.section-subtitle{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editorial-section{background:var(--md-sys-color-surface-container-low);border-color:var(--md-sys-color-primary)}.mini-card{display:block}.widget-list{display:grid;gap:8px}.widget-item{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;padding:8px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface)}.widget-item .info{display:grid;gap:2px;min-width:0}.widget-item .info .name{font-weight:600}.widget-item .info .sub{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.widget-item .info .meta{font-size:11px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);opacity:.85}.widget-item .actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.editorial-item{align-items:start}.editorial-item .actions{justify-content:flex-start}.cta-row{display:flex;gap:8px;align-items:center}.spacer{flex:1 1 auto}.muted{color:var(--md-sys-color-on-surface-variant)}.cta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:8px}.cta-card{display:grid;gap:8px;padding:12px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface)}.cta-card .cta-head{display:flex;align-items:center;gap:8px}.cta-card .cta-title{font-weight:600}.cta-card .cta-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.cta-card .cta-actions{display:flex;gap:8px;align-items:center}.tokens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:8px 0}.token-item{display:contents}.pdx-appearance{margin-top:8px;display:grid;gap:8px}.pdx-appearance-actions{display:flex;gap:8px;flex-wrap:wrap}.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.zone-card{display:grid;gap:8px;padding:12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface)}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.zone-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.zone-title{font-weight:600}.zone-count{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.advanced-list{margin-top:4px}.code-card{margin-top:8px}.code-head{font-weight:600;margin-bottom:4px}.code{white-space:pre;overflow:auto;background:var(--md-sys-color-surface-container-highest)}.w-full{grid-column:1 / -1}.min-180{min-width:180px}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}@media(max-width:900px){.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-start}}@media(max-width:640px){.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.pdx-flag-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions{justify-content:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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: i5$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: "component", type: i6.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.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: i8.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: i8.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: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i10.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i10.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i10.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: i10.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i10.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i10.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i11.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i11.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i12.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i12.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i12.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i13.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i13.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"] }] });
|
|
1889
|
+
`, isInline: true, styles: [".pdx-editor{display:grid;gap:16px}.pdx-editor .mat-mdc-form-field{width:100%}.pdx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.pdx-toggles{display:flex;gap:12px;flex-wrap:wrap}.tab-pad{padding:16px;display:grid;gap:16px;background:var(--md-sys-color-surface);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);border-radius:16px}.help{color:var(--md-sys-color-on-surface-variant);font-size:13px}.editor-intro{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:4px 2px 2px}.editor-intro-copy{display:grid;gap:6px;max-width:760px}.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant);font-weight:600}.editor-title{font-size:22px;line-height:1.15;font-weight:650;color:var(--md-sys-color-on-surface)}.editor-subtitle{max-width:72ch;color:var(--md-sys-color-on-surface-variant);line-height:1.45;font-size:14px}.editor-intro-meta{display:flex;gap:8px;align-items:flex-start}.meta-pill{display:grid;gap:2px;min-width:88px;padding:10px 12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container-low)}.meta-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant)}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:6px}.icons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}.icon-item{display:grid;gap:6px;align-content:start}.icons-hint{margin-top:4px}.settings-group{display:grid;gap:14px;padding:2px 0 4px}.settings-group+.settings-group,.settings-group+.disclosure,.disclosure+.settings-group{padding-top:18px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 60%,transparent)}.group-head{display:grid;gap:4px;max-width:72ch}.inline-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:start}.inline-action-item{display:grid;gap:8px;align-content:start;min-width:0}.pdx-steps{display:grid;gap:12px;padding:4px 0 2px}.steps-workspace{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:24px;align-items:start}.pdx-steps-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.pdx-step-list{display:grid;gap:10px}.pdx-step-item{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:start;padding:12px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent);border-radius:14px;background:var(--md-sys-color-surface);cursor:pointer;outline:none}.pdx-step-item.active{border-color:color-mix(in srgb,var(--md-sys-color-primary) 55%,var(--md-sys-color-outline-variant));background:color-mix(in srgb,var(--md-sys-color-primary-container) 26%,var(--md-sys-color-surface));box-shadow:none}.pdx-step-item:focus-visible{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.drag-handle{display:flex;align-items:center;color:var(--md-sys-color-on-surface-variant)}.step-summary{display:grid;gap:8px;min-width:0}.step-summary-head{display:grid;gap:2px}.step-summary-index{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant);font-weight:600}.step-summary-title{font-size:15px;line-height:1.3;font-weight:600;color:var(--md-sys-color-on-surface)}.step-summary-sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-summary-flags{display:flex;gap:6px;flex-wrap:wrap}.summary-chip{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font-size:11px;font-weight:600}.summary-chip-warn{background:color-mix(in srgb,var(--md-sys-color-error-container) 60%,transparent);color:var(--md-sys-color-on-error-container)}.pdx-active-step{display:grid;gap:18px;min-width:0}.pdx-active-step .hdr{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.active-step-head{display:grid;gap:4px}.pdx-content-editor{display:grid;gap:16px}.section{display:grid;gap:12px;padding:0;border:none;border-radius:0;background:transparent}.section-body{display:grid;gap:12px}.section-title{font-weight:600;font-size:15px;color:var(--md-sys-color-on-surface)}.section-subtitle{font-size:13px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editorial-section{padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field-span-2{grid-column:span 2}.toggle-group{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px}.disclosure{padding:0 0 12px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 62%,transparent)}.disclosure summary{list-style:none;display:flex;justify-content:space-between;align-items:baseline;gap:16px;cursor:pointer;padding:0;position:relative}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary:after{content:\"expand_more\";font-family:Material Icons;font-size:18px;color:var(--md-sys-color-on-surface-variant);transition:transform .16s ease}.disclosure[open] summary:after{transform:rotate(180deg)}.disclosure summary:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 58%,transparent);outline-offset:4px;border-radius:8px}.disclosure-body{padding-top:12px}.widget-list{display:grid;gap:8px}.widget-item{display:grid;grid-template-columns:20px 1fr auto;align-items:start;gap:12px;padding:10px 0;border:none;border-radius:0;background:transparent;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.widget-item .info{display:grid;gap:2px;min-width:0}.widget-item .info .name{font-weight:600}.widget-item .info .sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.widget-item .info .meta{margin-top:2px;font-size:11px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);opacity:.85}.widget-item .actions{display:flex;gap:2px;flex-wrap:nowrap;justify-content:flex-end;align-items:flex-start;opacity:.92}.editorial-item{align-items:start}.editorial-item .actions{justify-content:flex-end}.cta-row{display:flex;gap:8px;align-items:center}.spacer{flex:1 1 auto}.muted{color:var(--md-sys-color-on-surface-variant)}.cta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-bottom:4px}.cta-row-item{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.tokens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:8px 0}.token-item{display:contents}.pdx-appearance{margin-top:8px;display:grid;gap:8px}.pdx-appearance-actions{display:flex;gap:8px;flex-wrap:wrap}.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.zone-column{display:grid;gap:10px;min-width:0}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.zone-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.zone-title{font-weight:600}.zone-column+.zone-column{padding-left:16px;border-left:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.zone-count{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.advanced-list{margin-top:4px}.form-row-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.form-row-main{display:flex;align-items:center;gap:12px;min-width:0}.form-row-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.code-card{margin-top:8px}.code-head{font-weight:600;margin-bottom:4px}.code{white-space:pre;overflow:auto;background:var(--md-sys-color-surface-container-highest)}.w-full{grid-column:1 / -1}.min-180{min-width:180px}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}.cta-row-item .cta-head{display:grid;grid-template-columns:20px 1fr;align-items:start;gap:10px}.cta-row-item .cta-title{font-weight:600;color:var(--md-sys-color-on-surface)}.cta-row-item .cta-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45;margin-top:2px}.cta-row-item .cta-actions{display:flex;gap:8px;align-items:center}.widget-item:last-child,.cta-row-item:last-child,.form-row-card:last-child{border-bottom:none}@media(max-width:900px){.editor-intro{flex-direction:column}.steps-workspace{grid-template-columns:1fr;gap:20px}.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-end}.form-row-card{flex-direction:column;align-items:flex-start}.form-row-actions{justify-content:flex-start}.zone-column+.zone-column{padding-left:0;border-left:none;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}}@media(max-width:640px){.tab-pad{padding:14px}.editor-title{font-size:20px}.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.toggle-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions,.widget-item .actions{justify-content:flex-start}.disclosure summary{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.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: i5$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: "component", type: i6.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.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: i8.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: i8.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: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i11.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i11.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"] }] });
|
|
1930
1890
|
}
|
|
1931
1891
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisStepperConfigEditor, decorators: [{
|
|
1932
1892
|
type: Component,
|
|
@@ -1941,9 +1901,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
1941
1901
|
MatSlideToggleModule,
|
|
1942
1902
|
DragDropModule,
|
|
1943
1903
|
MatTooltipModule,
|
|
1944
|
-
MatChipsModule,
|
|
1945
|
-
MatCardModule,
|
|
1946
|
-
MatButtonToggleModule,
|
|
1947
1904
|
MatDialogModule,
|
|
1948
1905
|
MatMenuModule,
|
|
1949
1906
|
MatTabsModule,
|
|
@@ -1952,305 +1909,215 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
1952
1909
|
<mat-tab-group>
|
|
1953
1910
|
<mat-tab label="Geral">
|
|
1954
1911
|
<div class="tab-pad">
|
|
1955
|
-
<div class="
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
<
|
|
1959
|
-
<
|
|
1960
|
-
|
|
1961
|
-
<option value="vertical">Vertical</option>
|
|
1962
|
-
</select>
|
|
1963
|
-
<button
|
|
1964
|
-
mat-icon-button
|
|
1965
|
-
matSuffix
|
|
1966
|
-
class="help-icon-button"
|
|
1967
|
-
type="button"
|
|
1968
|
-
[matTooltip]="'Horizontal: cabeçalho no topo • Vertical: lista à esquerda'"
|
|
1969
|
-
matTooltipPosition="above"
|
|
1970
|
-
>
|
|
1971
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1972
|
-
</button>
|
|
1973
|
-
</mat-form-field>
|
|
1974
|
-
<mat-form-field appearance="outline">
|
|
1975
|
-
<mat-label>Posição dos títulos</mat-label>
|
|
1976
|
-
<select matNativeControl [(ngModel)]="config.headerPosition" (ngModelChange)="markDirty()">
|
|
1977
|
-
<option value="top">Acima</option>
|
|
1978
|
-
<option value="bottom">Abaixo</option>
|
|
1979
|
-
</select>
|
|
1980
|
-
<button
|
|
1981
|
-
mat-icon-button
|
|
1982
|
-
matSuffix
|
|
1983
|
-
class="help-icon-button"
|
|
1984
|
-
type="button"
|
|
1985
|
-
[matTooltip]="'Válido na orientação horizontal'"
|
|
1986
|
-
matTooltipPosition="above"
|
|
1987
|
-
>
|
|
1988
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
1989
|
-
</button>
|
|
1990
|
-
</mat-form-field>
|
|
1991
|
-
<mat-form-field appearance="outline">
|
|
1992
|
-
<mat-label>Posição do rótulo</mat-label>
|
|
1993
|
-
<select matNativeControl [(ngModel)]="config.labelPosition" (ngModelChange)="markDirty()" [disabled]="config.orientation !== 'horizontal'">
|
|
1994
|
-
<option value="end">Ao lado</option>
|
|
1995
|
-
<option value="bottom">Abaixo</option>
|
|
1996
|
-
</select>
|
|
1997
|
-
<button
|
|
1998
|
-
mat-icon-button
|
|
1999
|
-
matSuffix
|
|
2000
|
-
class="help-icon-button"
|
|
2001
|
-
type="button"
|
|
2002
|
-
[matTooltip]="'Como o texto aparece no cabeçalho'"
|
|
2003
|
-
matTooltipPosition="above"
|
|
2004
|
-
>
|
|
2005
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2006
|
-
</button>
|
|
2007
|
-
</mat-form-field>
|
|
2008
|
-
<mat-form-field appearance="outline">
|
|
2009
|
-
<mat-label>Cor</mat-label>
|
|
2010
|
-
<select matNativeControl [(ngModel)]="config.color" (ngModelChange)="markDirty()">
|
|
2011
|
-
<option [ngValue]="undefined">Padrão</option>
|
|
2012
|
-
<option value="primary">Primária</option>
|
|
2013
|
-
<option value="accent">Acento</option>
|
|
2014
|
-
<option value="warn">Alerta</option>
|
|
2015
|
-
</select>
|
|
2016
|
-
<button
|
|
2017
|
-
mat-icon-button
|
|
2018
|
-
matSuffix
|
|
2019
|
-
class="help-icon-button"
|
|
2020
|
-
type="button"
|
|
2021
|
-
[matTooltip]="'Aplicável a temas Material 2 (M2)'"
|
|
2022
|
-
matTooltipPosition="above"
|
|
2023
|
-
>
|
|
2024
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2025
|
-
</button>
|
|
2026
|
-
</mat-form-field>
|
|
2027
|
-
<mat-form-field appearance="outline">
|
|
2028
|
-
<mat-label>Duração da animação</mat-label>
|
|
2029
|
-
<input matInput [(ngModel)]="config.animationDuration" (ngModelChange)="markDirty()" placeholder="Ex.: 300ms" />
|
|
2030
|
-
<button
|
|
2031
|
-
mat-icon-button
|
|
2032
|
-
matSuffix
|
|
2033
|
-
class="help-icon-button"
|
|
2034
|
-
type="button"
|
|
2035
|
-
[matTooltip]="'Tempo da transição entre etapas'"
|
|
2036
|
-
matTooltipPosition="above"
|
|
2037
|
-
>
|
|
2038
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2039
|
-
</button>
|
|
2040
|
-
</mat-form-field>
|
|
2041
|
-
<mat-form-field appearance="outline">
|
|
2042
|
-
<mat-label>Etapa selecionada</mat-label>
|
|
2043
|
-
<input matInput type="number" [(ngModel)]="config.selectedIndex" (ngModelChange)="markDirty()" />
|
|
2044
|
-
<button
|
|
2045
|
-
mat-icon-button
|
|
2046
|
-
matSuffix
|
|
2047
|
-
class="help-icon-button"
|
|
2048
|
-
type="button"
|
|
2049
|
-
[matTooltip]="'Índice inicia em 0 (primeira etapa)'"
|
|
2050
|
-
matTooltipPosition="above"
|
|
2051
|
-
>
|
|
2052
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2053
|
-
</button>
|
|
2054
|
-
</mat-form-field>
|
|
2055
|
-
<mat-form-field appearance="outline">
|
|
2056
|
-
<mat-label>Densidade</mat-label>
|
|
2057
|
-
<select matNativeControl [(ngModel)]="config.density" (ngModelChange)="markDirty()">
|
|
2058
|
-
<option [ngValue]="undefined">Padrão</option>
|
|
2059
|
-
<option value="comfortable">Confortável</option>
|
|
2060
|
-
<option value="compact">Compacta</option>
|
|
2061
|
-
</select>
|
|
2062
|
-
<button
|
|
2063
|
-
mat-icon-button
|
|
2064
|
-
matSuffix
|
|
2065
|
-
class="help-icon-button"
|
|
2066
|
-
type="button"
|
|
2067
|
-
[matTooltip]="'Controla espaçamentos e alturas'"
|
|
2068
|
-
matTooltipPosition="above"
|
|
2069
|
-
>
|
|
2070
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2071
|
-
</button>
|
|
2072
|
-
</mat-form-field>
|
|
2073
|
-
<mat-form-field appearance="outline" class="w-full">
|
|
2074
|
-
<mat-label>Classe do stepper (opcional)</mat-label>
|
|
2075
|
-
<input matInput [(ngModel)]="config.stepperClass" (ngModelChange)="markDirty()" placeholder="Ex.: meu-stepper" />
|
|
2076
|
-
<button
|
|
2077
|
-
mat-icon-button
|
|
2078
|
-
matSuffix
|
|
2079
|
-
class="help-icon-button"
|
|
2080
|
-
type="button"
|
|
2081
|
-
[matTooltip]="'Permite estilizar com CSS escopado'"
|
|
2082
|
-
matTooltipPosition="above"
|
|
2083
|
-
>
|
|
2084
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2085
|
-
</button>
|
|
2086
|
-
</mat-form-field>
|
|
2087
|
-
<mat-form-field appearance="outline" class="w-full">
|
|
2088
|
-
<mat-label>Classe do cabeçalho (opcional)</mat-label>
|
|
2089
|
-
<input matInput [(ngModel)]="config.headerClass" (ngModelChange)="markDirty()" placeholder="Ex.: stepper-header" />
|
|
2090
|
-
<button
|
|
2091
|
-
mat-icon-button
|
|
2092
|
-
matSuffix
|
|
2093
|
-
class="help-icon-button"
|
|
2094
|
-
type="button"
|
|
2095
|
-
[matTooltip]="'Use para ajustes finos de aparência'"
|
|
2096
|
-
matTooltipPosition="above"
|
|
2097
|
-
>
|
|
2098
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2099
|
-
</button>
|
|
2100
|
-
</mat-form-field>
|
|
2101
|
-
<mat-form-field appearance="outline" class="w-full">
|
|
2102
|
-
<mat-label>Classe do conteúdo (opcional)</mat-label>
|
|
2103
|
-
<input matInput [(ngModel)]="config.contentClass" (ngModelChange)="markDirty()" placeholder="Ex.: stepper-content" />
|
|
2104
|
-
<button
|
|
2105
|
-
mat-icon-button
|
|
2106
|
-
matSuffix
|
|
2107
|
-
class="help-icon-button"
|
|
2108
|
-
type="button"
|
|
2109
|
-
[matTooltip]="'Aplica uma classe à área de conteúdo'"
|
|
2110
|
-
matTooltipPosition="above"
|
|
2111
|
-
>
|
|
2112
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2113
|
-
</button>
|
|
2114
|
-
</mat-form-field>
|
|
1912
|
+
<div class="editor-intro">
|
|
1913
|
+
<div class="editor-intro-copy">
|
|
1914
|
+
<div class="eyebrow">Fundamentos</div>
|
|
1915
|
+
<div class="editor-title">Defina o comportamento base do stepper</div>
|
|
1916
|
+
<div class="editor-subtitle">Ajuste orientação, densidade, animação e classes utilitárias sem misturar decisões estruturais com customização avançada.</div>
|
|
1917
|
+
</div>
|
|
2115
1918
|
</div>
|
|
2116
|
-
<div class="
|
|
2117
|
-
<
|
|
2118
|
-
|
|
1919
|
+
<div class="settings-group">
|
|
1920
|
+
<div class="group-head">
|
|
1921
|
+
<div class="section-title">Layout e navegação</div>
|
|
1922
|
+
<div class="section-subtitle">Controla como as etapas aparecem e como o usuário percorre o fluxo.</div>
|
|
1923
|
+
</div>
|
|
1924
|
+
<div class="pdx-grid">
|
|
1925
|
+
<mat-form-field appearance="outline">
|
|
1926
|
+
<mat-label>Orientação</mat-label>
|
|
1927
|
+
<select matNativeControl [(ngModel)]="config.orientation" (ngModelChange)="markDirty()">
|
|
1928
|
+
<option value="horizontal">Horizontal</option>
|
|
1929
|
+
<option value="vertical">Vertical</option>
|
|
1930
|
+
</select>
|
|
1931
|
+
</mat-form-field>
|
|
1932
|
+
<mat-form-field appearance="outline">
|
|
1933
|
+
<mat-label>Posição dos títulos</mat-label>
|
|
1934
|
+
<select matNativeControl [(ngModel)]="config.headerPosition" (ngModelChange)="markDirty()">
|
|
1935
|
+
<option value="top">Acima</option>
|
|
1936
|
+
<option value="bottom">Abaixo</option>
|
|
1937
|
+
</select>
|
|
1938
|
+
</mat-form-field>
|
|
1939
|
+
<mat-form-field appearance="outline">
|
|
1940
|
+
<mat-label>Posição do rótulo</mat-label>
|
|
1941
|
+
<select matNativeControl [(ngModel)]="config.labelPosition" (ngModelChange)="markDirty()" [disabled]="config.orientation !== 'horizontal'">
|
|
1942
|
+
<option value="end">Ao lado</option>
|
|
1943
|
+
<option value="bottom">Abaixo</option>
|
|
1944
|
+
</select>
|
|
1945
|
+
</mat-form-field>
|
|
1946
|
+
<mat-form-field appearance="outline">
|
|
1947
|
+
<mat-label>Densidade</mat-label>
|
|
1948
|
+
<select matNativeControl [(ngModel)]="config.density" (ngModelChange)="markDirty()">
|
|
1949
|
+
<option [ngValue]="undefined">Padrão</option>
|
|
1950
|
+
<option value="comfortable">Confortável</option>
|
|
1951
|
+
<option value="compact">Compacta</option>
|
|
1952
|
+
</select>
|
|
1953
|
+
</mat-form-field>
|
|
1954
|
+
<mat-form-field appearance="outline">
|
|
1955
|
+
<mat-label>Duração da animação</mat-label>
|
|
1956
|
+
<input matInput [(ngModel)]="config.animationDuration" (ngModelChange)="markDirty()" placeholder="Ex.: 300ms" />
|
|
1957
|
+
</mat-form-field>
|
|
1958
|
+
<mat-form-field appearance="outline">
|
|
1959
|
+
<mat-label>Etapa inicial</mat-label>
|
|
1960
|
+
<input matInput type="number" [(ngModel)]="config.selectedIndex" (ngModelChange)="markDirty()" />
|
|
1961
|
+
</mat-form-field>
|
|
1962
|
+
</div>
|
|
1963
|
+
<div class="toggle-group">
|
|
1964
|
+
<mat-slide-toggle [(ngModel)]="config.linear" (ngModelChange)="markDirty()">Respeitar ordem (linear)</mat-slide-toggle>
|
|
1965
|
+
<mat-slide-toggle [(ngModel)]="config.disableRipple" (ngModelChange)="markDirty()">Desativar efeitos de clique</mat-slide-toggle>
|
|
1966
|
+
</div>
|
|
2119
1967
|
</div>
|
|
1968
|
+
<details class="disclosure">
|
|
1969
|
+
<summary>
|
|
1970
|
+
<span class="section-title">Classes e integração visual</span>
|
|
1971
|
+
<span class="section-subtitle">Use apenas quando precisar aplicar CSS escopado no host.</span>
|
|
1972
|
+
</summary>
|
|
1973
|
+
<div class="detail-grid disclosure-body">
|
|
1974
|
+
<mat-form-field appearance="outline" class="field-span-2">
|
|
1975
|
+
<mat-label>Classe do stepper</mat-label>
|
|
1976
|
+
<input matInput [(ngModel)]="config.stepperClass" (ngModelChange)="markDirty()" placeholder="Ex.: meu-stepper" />
|
|
1977
|
+
</mat-form-field>
|
|
1978
|
+
<mat-form-field appearance="outline">
|
|
1979
|
+
<mat-label>Classe do cabeçalho</mat-label>
|
|
1980
|
+
<input matInput [(ngModel)]="config.headerClass" (ngModelChange)="markDirty()" placeholder="Ex.: stepper-header" />
|
|
1981
|
+
</mat-form-field>
|
|
1982
|
+
<mat-form-field appearance="outline">
|
|
1983
|
+
<mat-label>Classe do conteúdo</mat-label>
|
|
1984
|
+
<input matInput [(ngModel)]="config.contentClass" (ngModelChange)="markDirty()" placeholder="Ex.: stepper-content" />
|
|
1985
|
+
</mat-form-field>
|
|
1986
|
+
</div>
|
|
1987
|
+
</details>
|
|
2120
1988
|
</div>
|
|
2121
1989
|
</mat-tab>
|
|
2122
1990
|
|
|
2123
1991
|
<mat-tab label="Etapas">
|
|
2124
1992
|
<div class="tab-pad">
|
|
2125
|
-
<div class="
|
|
1993
|
+
<div class="editor-intro">
|
|
1994
|
+
<div class="editor-intro-copy">
|
|
1995
|
+
<div class="eyebrow">Estrutura do fluxo</div>
|
|
1996
|
+
<div class="editor-title">Defina a narrativa de cada etapa</div>
|
|
1997
|
+
<div class="editor-subtitle">Organize títulos, estados e conteúdo da etapa sem misturar configuração técnica com ações de montagem.</div>
|
|
1998
|
+
</div>
|
|
1999
|
+
<div class="editor-intro-meta">
|
|
2000
|
+
<div class="meta-pill">
|
|
2001
|
+
<span class="meta-label">Etapas</span>
|
|
2002
|
+
<strong>{{ config.steps.length }}</strong>
|
|
2003
|
+
</div>
|
|
2004
|
+
</div>
|
|
2005
|
+
</div>
|
|
2126
2006
|
<div class="pdx-steps">
|
|
2127
2007
|
<div class="pdx-steps-header">
|
|
2128
|
-
<div
|
|
2129
|
-
|
|
2008
|
+
<div>
|
|
2009
|
+
<div class="section-title">Mapa de etapas</div>
|
|
2010
|
+
<div class="section-subtitle">Arraste para reordenar e selecione uma etapa para editar o conteúdo.</div>
|
|
2011
|
+
</div>
|
|
2012
|
+
<button mat-flat-button color="primary" (click)="addStep()"><mat-icon [praxisIcon]="'add'"></mat-icon>Adicionar etapa</button>
|
|
2130
2013
|
</div>
|
|
2131
|
-
<div
|
|
2132
|
-
<div
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
class="
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
<
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
<button
|
|
2167
|
-
mat-icon-
|
|
2168
|
-
matSuffix
|
|
2169
|
-
class="help-icon-button"
|
|
2170
|
-
type="button"
|
|
2171
|
-
[matTooltip]="'Lido por leitores de tela'"
|
|
2172
|
-
matTooltipPosition="above"
|
|
2173
|
-
>
|
|
2174
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2175
|
-
</button>
|
|
2176
|
-
</mat-form-field>
|
|
2177
|
-
<mat-form-field appearance="outline">
|
|
2178
|
-
<mat-label>ID que descreve (opcional)</mat-label>
|
|
2179
|
-
<input matInput [(ngModel)]="s.ariaLabelledby" (ngModelChange)="markDirty()" />
|
|
2180
|
-
<button
|
|
2181
|
-
mat-icon-button
|
|
2182
|
-
matSuffix
|
|
2183
|
-
class="help-icon-button"
|
|
2184
|
-
type="button"
|
|
2185
|
-
[matTooltip]="'ID de um elemento que descreve a etapa'"
|
|
2186
|
-
matTooltipPosition="above"
|
|
2187
|
-
>
|
|
2188
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2189
|
-
</button>
|
|
2190
|
-
</mat-form-field>
|
|
2191
|
-
<mat-form-field appearance="outline">
|
|
2192
|
-
<mat-label>Ícone/estado do marcador</mat-label>
|
|
2193
|
-
<input matInput [(ngModel)]="s.state" (ngModelChange)="markDirty()" placeholder="Ex.: number, done, edit" />
|
|
2194
|
-
<button
|
|
2195
|
-
mat-icon-button
|
|
2196
|
-
matSuffix
|
|
2197
|
-
class="help-icon-button"
|
|
2198
|
-
type="button"
|
|
2199
|
-
[matTooltip]="'Controla o ícone do passo (quando aplicável)'"
|
|
2200
|
-
matTooltipPosition="above"
|
|
2201
|
-
>
|
|
2202
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2203
|
-
</button>
|
|
2204
|
-
</mat-form-field>
|
|
2205
|
-
<mat-form-field appearance="outline">
|
|
2206
|
-
<mat-label>Mensagem de erro</mat-label>
|
|
2207
|
-
<input matInput [(ngModel)]="s.errorMessage" (ngModelChange)="markDirty()" />
|
|
2208
|
-
<button
|
|
2209
|
-
mat-icon-button
|
|
2210
|
-
matSuffix
|
|
2211
|
-
class="help-icon-button"
|
|
2212
|
-
type="button"
|
|
2213
|
-
[matTooltip]="'Mostrada quando há erro na etapa'"
|
|
2214
|
-
matTooltipPosition="above"
|
|
2215
|
-
>
|
|
2216
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2014
|
+
<div class="steps-workspace" *ngIf="activeStep as step; else noSteps">
|
|
2015
|
+
<div
|
|
2016
|
+
cdkDropList
|
|
2017
|
+
role="listbox"
|
|
2018
|
+
aria-label="Lista de etapas"
|
|
2019
|
+
(cdkDropListDropped)="drop($event)"
|
|
2020
|
+
class="pdx-step-list">
|
|
2021
|
+
<div
|
|
2022
|
+
class="pdx-step-item"
|
|
2023
|
+
*ngFor="let s of config.steps; let i = index"
|
|
2024
|
+
cdkDrag
|
|
2025
|
+
role="option"
|
|
2026
|
+
[attr.aria-selected]="activeStep === s"
|
|
2027
|
+
[attr.tabindex]="activeStep === s ? 0 : -1"
|
|
2028
|
+
[class.active]="activeStep === s"
|
|
2029
|
+
(click)="setActive(s)"
|
|
2030
|
+
(keydown.enter)="onStepItemEnter($event, s)"
|
|
2031
|
+
(keydown.space)="onStepItemSpace($event, s)"
|
|
2032
|
+
(keydown.arrowdown)="focusAdjacentStep($event, i, 1)"
|
|
2033
|
+
(keydown.arrowup)="focusAdjacentStep($event, i, -1)">
|
|
2034
|
+
<div class="drag-handle" cdkDragHandle><mat-icon [praxisIcon]="'drag_indicator'"></mat-icon></div>
|
|
2035
|
+
<div class="step-summary">
|
|
2036
|
+
<div class="step-summary-head">
|
|
2037
|
+
<div class="step-summary-index">Etapa {{ i + 1 }}</div>
|
|
2038
|
+
<div class="step-summary-title">{{ s.label || 'Sem título' }}</div>
|
|
2039
|
+
</div>
|
|
2040
|
+
<div class="step-summary-sub">{{ s.id || 'Sem identificador' }}</div>
|
|
2041
|
+
<div class="step-summary-flags">
|
|
2042
|
+
<span class="summary-chip" *ngIf="s.optional">Opcional</span>
|
|
2043
|
+
<span class="summary-chip" *ngIf="s.completed">Concluída</span>
|
|
2044
|
+
<span class="summary-chip summary-chip-warn" *ngIf="s.hasError">Erro</span>
|
|
2045
|
+
<span class="summary-chip" *ngIf="s.form">Formulário</span>
|
|
2046
|
+
</div>
|
|
2047
|
+
</div>
|
|
2048
|
+
<div class="pdx-actions">
|
|
2049
|
+
<button mat-icon-button color="warn" (click)="removeStep(i); $event.stopPropagation()" matTooltip="Remover" [attr.aria-label]="'Remover etapa ' + (s.label || (i + 1))">
|
|
2050
|
+
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
2217
2051
|
</button>
|
|
2218
|
-
</mat-form-field>
|
|
2219
|
-
<div class="pdx-flag-group">
|
|
2220
|
-
<mat-slide-toggle [(ngModel)]="s.optional" (ngModelChange)="markDirty()">Etapa opcional</mat-slide-toggle>
|
|
2221
|
-
<mat-slide-toggle [(ngModel)]="s.editable" (ngModelChange)="markDirty()">Permitir voltar e editar</mat-slide-toggle>
|
|
2222
|
-
<mat-slide-toggle [(ngModel)]="s.completed" (ngModelChange)="markDirty()">Marcar como concluída</mat-slide-toggle>
|
|
2223
|
-
<mat-slide-toggle [(ngModel)]="s.hasError" (ngModelChange)="markDirty()">Marcar como com erro</mat-slide-toggle>
|
|
2224
2052
|
</div>
|
|
2225
2053
|
</div>
|
|
2226
|
-
<div class="pdx-actions">
|
|
2227
|
-
<button mat-icon-button color="warn" (click)="removeStep(i)" matTooltip="Remover">
|
|
2228
|
-
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
2229
|
-
</button>
|
|
2230
|
-
</div>
|
|
2231
2054
|
</div>
|
|
2232
|
-
</div>
|
|
2233
|
-
</div>
|
|
2234
2055
|
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2056
|
+
<div class="pdx-active-step">
|
|
2057
|
+
<div class="hdr">
|
|
2058
|
+
<div class="active-step-head">
|
|
2059
|
+
<div class="eyebrow">Etapa selecionada</div>
|
|
2060
|
+
<div class="title">Editando: {{ step.label }}</div>
|
|
2061
|
+
<div class="section-subtitle">Ajuste conteúdo principal primeiro. Configurações secundárias ficam recolhidas para reduzir ruído.</div>
|
|
2062
|
+
</div>
|
|
2063
|
+
</div>
|
|
2064
|
+
|
|
2065
|
+
<div class="section">
|
|
2066
|
+
<div class="section-title">Dados principais</div>
|
|
2067
|
+
<div class="detail-grid">
|
|
2068
|
+
<mat-form-field appearance="outline" class="field-span-2">
|
|
2069
|
+
<mat-label>Título da etapa</mat-label>
|
|
2070
|
+
<input matInput [(ngModel)]="step.label" (ngModelChange)="markDirty()" />
|
|
2071
|
+
</mat-form-field>
|
|
2072
|
+
<mat-form-field appearance="outline">
|
|
2073
|
+
<mat-label>Identificador</mat-label>
|
|
2074
|
+
<input matInput [(ngModel)]="step.id" (ngModelChange)="markDirty()" />
|
|
2075
|
+
</mat-form-field>
|
|
2076
|
+
<mat-form-field appearance="outline">
|
|
2077
|
+
<mat-label>Ícone ou estado</mat-label>
|
|
2078
|
+
<input matInput [(ngModel)]="step.state" (ngModelChange)="markDirty()" placeholder="Ex.: number, done, edit" />
|
|
2079
|
+
</mat-form-field>
|
|
2080
|
+
<mat-form-field appearance="outline" class="field-span-2">
|
|
2081
|
+
<mat-label>Mensagem de erro</mat-label>
|
|
2082
|
+
<input matInput [(ngModel)]="step.errorMessage" (ngModelChange)="markDirty()" />
|
|
2083
|
+
</mat-form-field>
|
|
2084
|
+
</div>
|
|
2085
|
+
<div class="toggle-group">
|
|
2086
|
+
<mat-slide-toggle [(ngModel)]="step.optional" (ngModelChange)="markDirty()">Etapa opcional</mat-slide-toggle>
|
|
2087
|
+
<mat-slide-toggle [(ngModel)]="step.editable" (ngModelChange)="markDirty()">Permitir voltar e editar</mat-slide-toggle>
|
|
2088
|
+
<mat-slide-toggle [(ngModel)]="step.completed" (ngModelChange)="markDirty()">Marcar como concluída</mat-slide-toggle>
|
|
2089
|
+
<mat-slide-toggle [(ngModel)]="step.hasError" (ngModelChange)="markDirty()">Marcar como com erro</mat-slide-toggle>
|
|
2090
|
+
</div>
|
|
2091
|
+
</div>
|
|
2092
|
+
|
|
2093
|
+
<details class="disclosure">
|
|
2094
|
+
<summary>
|
|
2095
|
+
<span class="section-title">Acessibilidade e detalhes técnicos</span>
|
|
2096
|
+
<span class="section-subtitle">Rótulos auxiliares e metadados menos usados.</span>
|
|
2097
|
+
</summary>
|
|
2098
|
+
<div class="detail-grid disclosure-body">
|
|
2099
|
+
<mat-form-field appearance="outline">
|
|
2100
|
+
<mat-label>Texto alternativo</mat-label>
|
|
2101
|
+
<input matInput [(ngModel)]="step.ariaLabel" (ngModelChange)="markDirty()" />
|
|
2102
|
+
</mat-form-field>
|
|
2103
|
+
<mat-form-field appearance="outline">
|
|
2104
|
+
<mat-label>ID que descreve</mat-label>
|
|
2105
|
+
<input matInput [(ngModel)]="step.ariaLabelledby" (ngModelChange)="markDirty()" />
|
|
2106
|
+
</mat-form-field>
|
|
2107
|
+
</div>
|
|
2108
|
+
</details>
|
|
2242
2109
|
|
|
2243
|
-
|
|
2110
|
+
<div class="pdx-content-editor">
|
|
2244
2111
|
<div class="section editorial-section">
|
|
2245
2112
|
<div class="section-head">
|
|
2246
2113
|
<div>
|
|
2247
2114
|
<div class="section-title">Conteúdo editorial</div>
|
|
2248
|
-
<div class="section-subtitle">
|
|
2115
|
+
<div class="section-subtitle">Use blocos de apoio para contextualizar a etapa antes ou depois do formulário.</div>
|
|
2249
2116
|
</div>
|
|
2250
2117
|
</div>
|
|
2251
2118
|
|
|
2252
2119
|
<div class="zone-grid">
|
|
2253
|
-
<div class="zone-
|
|
2120
|
+
<div class="zone-column">
|
|
2254
2121
|
<div class="zone-head">
|
|
2255
2122
|
<div class="zone-title">Antes do formulário</div>
|
|
2256
2123
|
<div class="zone-actions">
|
|
@@ -2288,21 +2155,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2288
2155
|
<div class="meta" *ngIf="widgetBlockId(w) as blockId">ID: {{ blockId }}</div>
|
|
2289
2156
|
</div>
|
|
2290
2157
|
<div class="actions">
|
|
2291
|
-
<button mat-button (click)="editWidget(w)">
|
|
2158
|
+
<button mat-icon-button (click)="editWidget(w)" matTooltip="Editar bloco">
|
|
2292
2159
|
<mat-icon [praxisIcon]="'tune'"></mat-icon>
|
|
2293
|
-
Editar
|
|
2294
2160
|
</button>
|
|
2295
|
-
<button mat-button (click)="moveEditorialWidget(w, 'before', 'after')">
|
|
2296
|
-
<mat-icon [praxisIcon]="'
|
|
2297
|
-
Mover para depois
|
|
2161
|
+
<button mat-icon-button (click)="moveEditorialWidget(w, 'before', 'after')" matTooltip="Mover para depois do formulário">
|
|
2162
|
+
<mat-icon [praxisIcon]="'south'"></mat-icon>
|
|
2298
2163
|
</button>
|
|
2299
|
-
<button mat-button (click)="duplicateEditorialWidget(w, 'before')">
|
|
2164
|
+
<button mat-icon-button (click)="duplicateEditorialWidget(w, 'before')" matTooltip="Duplicar bloco">
|
|
2300
2165
|
<mat-icon [praxisIcon]="'content_copy'"></mat-icon>
|
|
2301
|
-
Duplicar
|
|
2302
2166
|
</button>
|
|
2303
|
-
<button mat-button color="warn" (click)="removeEditorialWidget(w, 'before')">
|
|
2167
|
+
<button mat-icon-button color="warn" (click)="removeEditorialWidget(w, 'before')" matTooltip="Remover bloco">
|
|
2304
2168
|
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
2305
|
-
Remover
|
|
2306
2169
|
</button>
|
|
2307
2170
|
</div>
|
|
2308
2171
|
</div>
|
|
@@ -2310,7 +2173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2310
2173
|
</div>
|
|
2311
2174
|
</div>
|
|
2312
2175
|
|
|
2313
|
-
<div class="zone-
|
|
2176
|
+
<div class="zone-column">
|
|
2314
2177
|
<div class="zone-head">
|
|
2315
2178
|
<div class="zone-title">Depois do formulário</div>
|
|
2316
2179
|
<div class="zone-actions">
|
|
@@ -2348,21 +2211,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2348
2211
|
<div class="meta" *ngIf="widgetBlockId(w) as blockId">ID: {{ blockId }}</div>
|
|
2349
2212
|
</div>
|
|
2350
2213
|
<div class="actions">
|
|
2351
|
-
<button mat-button (click)="editWidget(w)">
|
|
2214
|
+
<button mat-icon-button (click)="editWidget(w)" matTooltip="Editar bloco">
|
|
2352
2215
|
<mat-icon [praxisIcon]="'tune'"></mat-icon>
|
|
2353
|
-
Editar
|
|
2354
2216
|
</button>
|
|
2355
|
-
<button mat-button (click)="moveEditorialWidget(w, 'after', 'before')">
|
|
2356
|
-
<mat-icon [praxisIcon]="'
|
|
2357
|
-
Mover para antes
|
|
2217
|
+
<button mat-icon-button (click)="moveEditorialWidget(w, 'after', 'before')" matTooltip="Mover para antes do formulário">
|
|
2218
|
+
<mat-icon [praxisIcon]="'north'"></mat-icon>
|
|
2358
2219
|
</button>
|
|
2359
|
-
<button mat-button (click)="duplicateEditorialWidget(w, 'after')">
|
|
2220
|
+
<button mat-icon-button (click)="duplicateEditorialWidget(w, 'after')" matTooltip="Duplicar bloco">
|
|
2360
2221
|
<mat-icon [praxisIcon]="'content_copy'"></mat-icon>
|
|
2361
|
-
Duplicar
|
|
2362
2222
|
</button>
|
|
2363
|
-
<button mat-button color="warn" (click)="removeEditorialWidget(w, 'after')">
|
|
2223
|
+
<button mat-icon-button color="warn" (click)="removeEditorialWidget(w, 'after')" matTooltip="Remover bloco">
|
|
2364
2224
|
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
2365
|
-
Remover
|
|
2366
2225
|
</button>
|
|
2367
2226
|
</div>
|
|
2368
2227
|
</div>
|
|
@@ -2376,17 +2235,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2376
2235
|
<div class="section-title">Formulário da etapa</div>
|
|
2377
2236
|
<div class="section-body">
|
|
2378
2237
|
<ng-container *ngIf="step.form; else addFormBtn">
|
|
2379
|
-
<
|
|
2380
|
-
<
|
|
2381
|
-
<mat-icon
|
|
2382
|
-
<
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2238
|
+
<div class="form-row-card">
|
|
2239
|
+
<div class="form-row-main">
|
|
2240
|
+
<mat-icon [praxisIcon]="'dynamic_form'"></mat-icon>
|
|
2241
|
+
<div>
|
|
2242
|
+
<div class="name">Formulário principal</div>
|
|
2243
|
+
<div class="sub">{{ step.form.formId || step.id || '—' }}</div>
|
|
2244
|
+
</div>
|
|
2245
|
+
</div>
|
|
2246
|
+
<div class="form-row-actions">
|
|
2386
2247
|
<button mat-button (click)="editMainForm()"><mat-icon [praxisIcon]="'tune'"></mat-icon> Editar</button>
|
|
2387
2248
|
<button mat-button color="warn" (click)="removeMainForm()"><mat-icon [praxisIcon]="'delete'"></mat-icon> Remover</button>
|
|
2388
|
-
</
|
|
2389
|
-
</
|
|
2249
|
+
</div>
|
|
2250
|
+
</div>
|
|
2390
2251
|
</ng-container>
|
|
2391
2252
|
<ng-template #addFormBtn>
|
|
2392
2253
|
<button mat-stroked-button color="primary" (click)="addMainForm()"><mat-icon [praxisIcon]="'add'"></mat-icon> Adicionar formulário</button>
|
|
@@ -2398,7 +2259,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2398
2259
|
<div class="section-head">
|
|
2399
2260
|
<div>
|
|
2400
2261
|
<div class="section-title">Componentes avançados</div>
|
|
2401
|
-
<div class="section-subtitle">
|
|
2262
|
+
<div class="section-subtitle">Atalhos para montar experiências mais ricas sem perder clareza no fluxo.</div>
|
|
2402
2263
|
</div>
|
|
2403
2264
|
<button mat-stroked-button (click)="openMoreComponents()">
|
|
2404
2265
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -2407,12 +2268,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2407
2268
|
</div>
|
|
2408
2269
|
<div class="section-body">
|
|
2409
2270
|
<div class="cta-grid">
|
|
2410
|
-
<div class="cta-
|
|
2271
|
+
<div class="cta-row-item">
|
|
2411
2272
|
<div class="cta-head">
|
|
2412
2273
|
<mat-icon [praxisIcon]="'account_tree'"></mat-icon>
|
|
2413
|
-
<div
|
|
2274
|
+
<div>
|
|
2275
|
+
<div class="cta-title">Lista em árvore</div>
|
|
2276
|
+
<div class="cta-desc">Dados hierárquicos com seleção simples.</div>
|
|
2277
|
+
</div>
|
|
2414
2278
|
</div>
|
|
2415
|
-
<div class="cta-desc">Exiba dados hierárquicos com seleção simples.</div>
|
|
2416
2279
|
<div class="cta-actions">
|
|
2417
2280
|
<button mat-stroked-button (click)="addTreeList()">
|
|
2418
2281
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -2420,12 +2283,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2420
2283
|
</button>
|
|
2421
2284
|
</div>
|
|
2422
2285
|
</div>
|
|
2423
|
-
<div class="cta-
|
|
2286
|
+
<div class="cta-row-item">
|
|
2424
2287
|
<div class="cta-head">
|
|
2425
2288
|
<mat-icon [praxisIcon]="'swap_horiz'"></mat-icon>
|
|
2426
|
-
<div
|
|
2289
|
+
<div>
|
|
2290
|
+
<div class="cta-title">Transferência de itens</div>
|
|
2291
|
+
<div class="cta-desc">Mover itens entre listas para seleção múltipla.</div>
|
|
2292
|
+
</div>
|
|
2427
2293
|
</div>
|
|
2428
|
-
<div class="cta-desc">Mover itens entre listas (ideal para múltipla seleção).</div>
|
|
2429
2294
|
<div class="cta-actions">
|
|
2430
2295
|
<button mat-stroked-button (click)="addTransferListQuick()">
|
|
2431
2296
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -2433,12 +2298,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2433
2298
|
</button>
|
|
2434
2299
|
</div>
|
|
2435
2300
|
</div>
|
|
2436
|
-
<div class="cta-
|
|
2301
|
+
<div class="cta-row-item">
|
|
2437
2302
|
<div class="cta-head">
|
|
2438
2303
|
<mat-icon [praxisIcon]="'search'"></mat-icon>
|
|
2439
|
-
<div
|
|
2304
|
+
<div>
|
|
2305
|
+
<div class="cta-title">Seleção com busca</div>
|
|
2306
|
+
<div class="cta-desc">Seleção com busca local ou remota.</div>
|
|
2307
|
+
</div>
|
|
2440
2308
|
</div>
|
|
2441
|
-
<div class="cta-desc">Campo de seleção com busca remota/local.</div>
|
|
2442
2309
|
<div class="cta-actions">
|
|
2443
2310
|
<button mat-stroked-button (click)="addSearchableSelect()">
|
|
2444
2311
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -2446,12 +2313,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2446
2313
|
</button>
|
|
2447
2314
|
</div>
|
|
2448
2315
|
</div>
|
|
2449
|
-
<div class="cta-
|
|
2316
|
+
<div class="cta-row-item">
|
|
2450
2317
|
<div class="cta-head">
|
|
2451
2318
|
<mat-icon [praxisIcon]="'upload_file'"></mat-icon>
|
|
2452
|
-
<div
|
|
2319
|
+
<div>
|
|
2320
|
+
<div class="cta-title">Upload de arquivos</div>
|
|
2321
|
+
<div class="cta-desc">Anexos com validação e fluxo de upload.</div>
|
|
2322
|
+
</div>
|
|
2453
2323
|
</div>
|
|
2454
|
-
<div class="cta-desc">Anexe documentos com validação de upload.</div>
|
|
2455
2324
|
<div class="cta-actions">
|
|
2456
2325
|
<button mat-stroked-button (click)="addFilesUpload()">
|
|
2457
2326
|
<mat-icon [praxisIcon]="'add'"></mat-icon>
|
|
@@ -2469,13 +2338,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2469
2338
|
<div class="sub">{{ w.id }}</div>
|
|
2470
2339
|
</div>
|
|
2471
2340
|
<div class="actions">
|
|
2472
|
-
<button mat-button (click)="editWidget(w)" [disabled]="!canEditWidget(w)">
|
|
2341
|
+
<button mat-icon-button (click)="editWidget(w)" [disabled]="!canEditWidget(w)" matTooltip="Editar componente">
|
|
2473
2342
|
<mat-icon [praxisIcon]="'tune'"></mat-icon>
|
|
2474
|
-
Editar
|
|
2475
2343
|
</button>
|
|
2476
|
-
<button mat-button color="warn" (click)="removeAdvancedWidget(w)">
|
|
2344
|
+
<button mat-icon-button color="warn" (click)="removeAdvancedWidget(w)" matTooltip="Remover componente">
|
|
2477
2345
|
<mat-icon [praxisIcon]="'delete'"></mat-icon>
|
|
2478
|
-
Remover
|
|
2479
2346
|
</button>
|
|
2480
2347
|
</div>
|
|
2481
2348
|
</div>
|
|
@@ -2483,78 +2350,95 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2483
2350
|
</div>
|
|
2484
2351
|
</div>
|
|
2485
2352
|
</div>
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2353
|
+
</div>
|
|
2354
|
+
</div>
|
|
2355
|
+
</div>
|
|
2356
|
+
</div>
|
|
2357
|
+
<ng-template #noSteps>
|
|
2358
|
+
<div class="muted">Nenhuma etapa definida.</div>
|
|
2359
|
+
</ng-template>
|
|
2360
|
+
</div>
|
|
2492
2361
|
</mat-tab>
|
|
2493
2362
|
|
|
2494
2363
|
<mat-tab label="Navegação">
|
|
2495
2364
|
<div class="tab-pad">
|
|
2496
|
-
<div class="
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
<
|
|
2500
|
-
<
|
|
2501
|
-
|
|
2502
|
-
<option value="basic">Texto</option>
|
|
2503
|
-
<option value="flat">Plano</option>
|
|
2504
|
-
<option value="stroked">Contornado</option>
|
|
2505
|
-
<option value="raised">Elevado</option>
|
|
2506
|
-
</select>
|
|
2507
|
-
</mat-form-field>
|
|
2508
|
-
<mat-form-field appearance="outline">
|
|
2509
|
-
<mat-label>Cor</mat-label>
|
|
2510
|
-
<select matNativeControl [(ngModel)]="navigationCfg.color" (ngModelChange)="markDirty()">
|
|
2511
|
-
<option [ngValue]="undefined">Padrão</option>
|
|
2512
|
-
<option value="primary">Primária</option>
|
|
2513
|
-
<option value="accent">Acento</option>
|
|
2514
|
-
<option value="warn">Alerta</option>
|
|
2515
|
-
</select>
|
|
2516
|
-
</mat-form-field>
|
|
2517
|
-
<mat-form-field appearance="outline">
|
|
2518
|
-
<mat-label>Alinhamento</mat-label>
|
|
2519
|
-
<select matNativeControl [(ngModel)]="navigationCfg.align" (ngModelChange)="markDirty()">
|
|
2520
|
-
<option [ngValue]="undefined">Direita</option>
|
|
2521
|
-
<option value="start">Esquerda</option>
|
|
2522
|
-
<option value="center">Centro</option>
|
|
2523
|
-
<option value="space-between">Espaçado</option>
|
|
2524
|
-
<option value="end">Direita</option>
|
|
2525
|
-
</select>
|
|
2526
|
-
</mat-form-field>
|
|
2527
|
-
</div>
|
|
2528
|
-
|
|
2529
|
-
<div class="pdx-toggles">
|
|
2530
|
-
<mat-slide-toggle [(ngModel)]="navigationCfg.visible" (ngModelChange)="markDirty()">Mostrar navegação padrão</mat-slide-toggle>
|
|
2365
|
+
<div class="editor-intro">
|
|
2366
|
+
<div class="editor-intro-copy">
|
|
2367
|
+
<div class="eyebrow">Ações padrão</div>
|
|
2368
|
+
<div class="editor-title">Configure a navegação entre etapas</div>
|
|
2369
|
+
<div class="editor-subtitle">Defina quando os botões padrão aparecem e como eles se apresentam visualmente no fluxo.</div>
|
|
2370
|
+
</div>
|
|
2531
2371
|
</div>
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
<
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2372
|
+
<div class="settings-group">
|
|
2373
|
+
<div class="group-head">
|
|
2374
|
+
<div class="section-title">Comportamento dos botões</div>
|
|
2375
|
+
<div class="section-subtitle">Aparência e alinhamento da navegação padrão do stepper.</div>
|
|
2376
|
+
</div>
|
|
2377
|
+
<div class="toggle-group">
|
|
2378
|
+
<mat-slide-toggle [(ngModel)]="navigationCfg.visible" (ngModelChange)="markDirty()">Mostrar navegação padrão</mat-slide-toggle>
|
|
2379
|
+
</div>
|
|
2380
|
+
<div class="pdx-grid">
|
|
2381
|
+
<mat-form-field appearance="outline">
|
|
2382
|
+
<mat-label>Estilo dos botões</mat-label>
|
|
2383
|
+
<select matNativeControl [(ngModel)]="navigationCfg.variant" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
|
|
2384
|
+
<option [ngValue]="undefined">Padrão (elevado)</option>
|
|
2385
|
+
<option value="basic">Texto</option>
|
|
2386
|
+
<option value="flat">Plano</option>
|
|
2387
|
+
<option value="stroked">Contornado</option>
|
|
2388
|
+
<option value="raised">Elevado</option>
|
|
2389
|
+
</select>
|
|
2390
|
+
</mat-form-field>
|
|
2391
|
+
<mat-form-field appearance="outline">
|
|
2392
|
+
<mat-label>Cor</mat-label>
|
|
2393
|
+
<select matNativeControl [(ngModel)]="navigationCfg.color" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
|
|
2394
|
+
<option [ngValue]="undefined">Padrão</option>
|
|
2395
|
+
<option value="primary">Primária</option>
|
|
2396
|
+
<option value="accent">Acento</option>
|
|
2397
|
+
<option value="warn">Alerta</option>
|
|
2398
|
+
</select>
|
|
2399
|
+
</mat-form-field>
|
|
2400
|
+
<mat-form-field appearance="outline">
|
|
2401
|
+
<mat-label>Alinhamento</mat-label>
|
|
2402
|
+
<select matNativeControl [(ngModel)]="navigationCfg.align" (ngModelChange)="markDirty()" [disabled]="!navigationCfg.visible">
|
|
2403
|
+
<option [ngValue]="undefined">Direita</option>
|
|
2404
|
+
<option value="start">Esquerda</option>
|
|
2405
|
+
<option value="center">Centro</option>
|
|
2406
|
+
<option value="space-between">Espaçado</option>
|
|
2407
|
+
<option value="end">Direita</option>
|
|
2408
|
+
</select>
|
|
2409
|
+
</mat-form-field>
|
|
2410
|
+
</div>
|
|
2542
2411
|
</div>
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
<div class="
|
|
2547
|
-
<button mat-stroked-button type="button" (click)="pickNavIcon('prevIcon')">
|
|
2548
|
-
<mat-icon *ngIf="navigationCfg.prevIcon" [praxisIcon]="navigationCfg.prevIcon"></mat-icon>
|
|
2549
|
-
<ng-container *ngIf="!navigationCfg.prevIcon">Escolher</ng-container>
|
|
2550
|
-
</button>
|
|
2412
|
+
<div class="settings-group">
|
|
2413
|
+
<div class="group-head">
|
|
2414
|
+
<div class="section-title">Rótulos e ícones</div>
|
|
2415
|
+
<div class="section-subtitle">Ajuste a cópia e os ícones usados nas ações de voltar e avançar.</div>
|
|
2551
2416
|
</div>
|
|
2552
|
-
<div class="
|
|
2553
|
-
<
|
|
2554
|
-
|
|
2555
|
-
<
|
|
2556
|
-
|
|
2557
|
-
|
|
2417
|
+
<div class="pdx-grid">
|
|
2418
|
+
<mat-form-field appearance="outline">
|
|
2419
|
+
<mat-label>Texto do botão Voltar</mat-label>
|
|
2420
|
+
<input matInput [(ngModel)]="navigationCfg.prevLabel" (ngModelChange)="markDirty()" placeholder="Ex.: Voltar" [disabled]="!navigationCfg.visible" />
|
|
2421
|
+
</mat-form-field>
|
|
2422
|
+
<mat-form-field appearance="outline">
|
|
2423
|
+
<mat-label>Texto do botão Próximo</mat-label>
|
|
2424
|
+
<input matInput [(ngModel)]="navigationCfg.nextLabel" (ngModelChange)="markDirty()" placeholder="Ex.: Próximo" [disabled]="!navigationCfg.visible" />
|
|
2425
|
+
</mat-form-field>
|
|
2426
|
+
</div>
|
|
2427
|
+
<div class="inline-actions-grid">
|
|
2428
|
+
<div class="inline-action-item">
|
|
2429
|
+
<div class="section-title">Ícone de Voltar</div>
|
|
2430
|
+
<button mat-stroked-button type="button" (click)="pickNavIcon('prevIcon')" [disabled]="!navigationCfg.visible" aria-label="Escolher ícone do botão Voltar">
|
|
2431
|
+
<mat-icon *ngIf="navigationCfg.prevIcon" [fontIcon]="navigationCfg.prevIcon"></mat-icon>
|
|
2432
|
+
<ng-container *ngIf="!navigationCfg.prevIcon">Escolher</ng-container>
|
|
2433
|
+
</button>
|
|
2434
|
+
</div>
|
|
2435
|
+
<div class="inline-action-item">
|
|
2436
|
+
<div class="section-title">Ícone de Próximo</div>
|
|
2437
|
+
<button mat-stroked-button type="button" (click)="pickNavIcon('nextIcon')" [disabled]="!navigationCfg.visible" aria-label="Escolher ícone do botão Próximo">
|
|
2438
|
+
<mat-icon *ngIf="navigationCfg.nextIcon" [fontIcon]="navigationCfg.nextIcon"></mat-icon>
|
|
2439
|
+
<ng-container *ngIf="!navigationCfg.nextIcon">Escolher</ng-container>
|
|
2440
|
+
</button>
|
|
2441
|
+
</div>
|
|
2558
2442
|
</div>
|
|
2559
2443
|
</div>
|
|
2560
2444
|
</div>
|
|
@@ -2562,141 +2446,119 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
2562
2446
|
|
|
2563
2447
|
<mat-tab label="Aparência">
|
|
2564
2448
|
<div class="tab-pad">
|
|
2565
|
-
<div class="
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
<
|
|
2569
|
-
<
|
|
2570
|
-
|
|
2571
|
-
mat-icon-button
|
|
2572
|
-
matSuffix
|
|
2573
|
-
class="help-icon-button"
|
|
2574
|
-
type="button"
|
|
2575
|
-
[matTooltip]="'Altura do item do cabeçalho'"
|
|
2576
|
-
matTooltipPosition="above"
|
|
2577
|
-
>
|
|
2578
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2579
|
-
</button>
|
|
2580
|
-
</mat-form-field>
|
|
2581
|
-
<mat-form-field appearance="outline">
|
|
2582
|
-
<mat-label>Tamanho do texto (px)</mat-label>
|
|
2583
|
-
<input matInput type="number" [ngModel]="headerLabelTextSizePx" (ngModelChange)="setHeaderLabelTextSizePx($event)" placeholder="Ex.: 14" />
|
|
2584
|
-
<button
|
|
2585
|
-
mat-icon-button
|
|
2586
|
-
matSuffix
|
|
2587
|
-
class="help-icon-button"
|
|
2588
|
-
type="button"
|
|
2589
|
-
[matTooltip]="'Tamanho do título da etapa'"
|
|
2590
|
-
matTooltipPosition="above"
|
|
2591
|
-
>
|
|
2592
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2593
|
-
</button>
|
|
2594
|
-
</mat-form-field>
|
|
2595
|
-
<mat-form-field appearance="outline">
|
|
2596
|
-
<mat-label>Peso do texto</mat-label>
|
|
2597
|
-
<select matNativeControl [ngModel]="headerLabelTextWeight" (ngModelChange)="setHeaderLabelTextWeight($event)">
|
|
2598
|
-
<option [ngValue]="undefined">Padrão</option>
|
|
2599
|
-
<option value="400">Normal</option>
|
|
2600
|
-
<option value="500">Médio</option>
|
|
2601
|
-
<option value="600">Seminegrito</option>
|
|
2602
|
-
<option value="700">Negrito</option>
|
|
2603
|
-
</select>
|
|
2604
|
-
</mat-form-field>
|
|
2605
|
-
</div>
|
|
2606
|
-
<div class="pdx-grid">
|
|
2607
|
-
<mat-form-field appearance="outline" class="w-full">
|
|
2608
|
-
<mat-label>Classe de tema (opcional)</mat-label>
|
|
2609
|
-
<input matInput [(ngModel)]="appearance.themeClass" (ngModelChange)="onAppearanceChange()" placeholder="Ex.: theme-stepper-custom" />
|
|
2610
|
-
<button
|
|
2611
|
-
mat-icon-button
|
|
2612
|
-
matSuffix
|
|
2613
|
-
class="help-icon-button"
|
|
2614
|
-
type="button"
|
|
2615
|
-
[matTooltip]="'Aplica as cores apenas dentro desse seletor'"
|
|
2616
|
-
matTooltipPosition="above"
|
|
2617
|
-
>
|
|
2618
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2619
|
-
</button>
|
|
2620
|
-
</mat-form-field>
|
|
2621
|
-
<mat-form-field appearance="outline">
|
|
2622
|
-
<mat-label>Conjunto de ícones</mat-label>
|
|
2623
|
-
<select matNativeControl [(ngModel)]="appearance.iconsSet" (ngModelChange)="onAppearanceChange()">
|
|
2624
|
-
<option [ngValue]="undefined">Material Icons (padrão)</option>
|
|
2625
|
-
<option value="material-symbols-outlined">Material Symbols (Outlined)</option>
|
|
2626
|
-
<option value="material-symbols-rounded">Material Symbols (Rounded)</option>
|
|
2627
|
-
<option value="material-symbols-sharp">Material Symbols (Sharp)</option>
|
|
2628
|
-
</select>
|
|
2629
|
-
<button
|
|
2630
|
-
mat-icon-button
|
|
2631
|
-
matSuffix
|
|
2632
|
-
class="help-icon-button"
|
|
2633
|
-
type="button"
|
|
2634
|
-
[matTooltip]="'Selecione se usar ícones do Material Symbols'"
|
|
2635
|
-
matTooltipPosition="above"
|
|
2636
|
-
>
|
|
2637
|
-
<mat-icon [praxisIcon]="'help_outline'"></mat-icon>
|
|
2638
|
-
</button>
|
|
2639
|
-
</mat-form-field>
|
|
2449
|
+
<div class="editor-intro">
|
|
2450
|
+
<div class="editor-intro-copy">
|
|
2451
|
+
<div class="eyebrow">Tema visual</div>
|
|
2452
|
+
<div class="editor-title">Personalize aparência sem perder consistência</div>
|
|
2453
|
+
<div class="editor-subtitle">Comece pelos ajustes rápidos. Tokens e snippet SCSS ficam recolhidos para cenários avançados.</div>
|
|
2454
|
+
</div>
|
|
2640
2455
|
</div>
|
|
2641
|
-
<div class="
|
|
2642
|
-
<div class="
|
|
2643
|
-
<div class="
|
|
2644
|
-
<
|
|
2645
|
-
<mat-icon *ngIf="icons.number; else pick" [praxisIcon]="icons.number"></mat-icon>
|
|
2646
|
-
<ng-template #pick>Escolher</ng-template>
|
|
2647
|
-
</button>
|
|
2456
|
+
<div class="settings-group">
|
|
2457
|
+
<div class="group-head">
|
|
2458
|
+
<div class="section-title">Ajustes rápidos</div>
|
|
2459
|
+
<div class="section-subtitle">Controles mais comuns para tamanho, peso tipográfico e tema.</div>
|
|
2648
2460
|
</div>
|
|
2649
|
-
<div class="
|
|
2650
|
-
<
|
|
2651
|
-
|
|
2652
|
-
<
|
|
2653
|
-
|
|
2654
|
-
|
|
2461
|
+
<div class="quick-grid">
|
|
2462
|
+
<mat-form-field appearance="outline">
|
|
2463
|
+
<mat-label>Altura do cabeçalho (px)</mat-label>
|
|
2464
|
+
<input matInput type="number" [ngModel]="headerHeightPx" (ngModelChange)="setHeaderHeightPx($event)" placeholder="Ex.: 48" />
|
|
2465
|
+
</mat-form-field>
|
|
2466
|
+
<mat-form-field appearance="outline">
|
|
2467
|
+
<mat-label>Tamanho do texto (px)</mat-label>
|
|
2468
|
+
<input matInput type="number" [ngModel]="headerLabelTextSizePx" (ngModelChange)="setHeaderLabelTextSizePx($event)" placeholder="Ex.: 14" />
|
|
2469
|
+
</mat-form-field>
|
|
2470
|
+
<mat-form-field appearance="outline">
|
|
2471
|
+
<mat-label>Peso do texto</mat-label>
|
|
2472
|
+
<select matNativeControl [ngModel]="headerLabelTextWeight" (ngModelChange)="setHeaderLabelTextWeight($event)">
|
|
2473
|
+
<option [ngValue]="undefined">Padrão</option>
|
|
2474
|
+
<option value="400">Normal</option>
|
|
2475
|
+
<option value="500">Médio</option>
|
|
2476
|
+
<option value="600">Seminegrito</option>
|
|
2477
|
+
<option value="700">Negrito</option>
|
|
2478
|
+
</select>
|
|
2479
|
+
</mat-form-field>
|
|
2480
|
+
<mat-form-field appearance="outline" class="field-span-2">
|
|
2481
|
+
<mat-label>Classe de tema</mat-label>
|
|
2482
|
+
<input matInput [(ngModel)]="appearance.themeClass" (ngModelChange)="onAppearanceChange()" placeholder="Ex.: theme-stepper-custom" />
|
|
2483
|
+
</mat-form-field>
|
|
2484
|
+
<mat-form-field appearance="outline">
|
|
2485
|
+
<mat-label>Conjunto de ícones</mat-label>
|
|
2486
|
+
<select matNativeControl [(ngModel)]="appearance.iconsSet" (ngModelChange)="onAppearanceChange()">
|
|
2487
|
+
<option [ngValue]="undefined">Material Icons (padrão)</option>
|
|
2488
|
+
<option value="material-symbols-outlined">Material Symbols (Outlined)</option>
|
|
2489
|
+
<option value="material-symbols-rounded">Material Symbols (Rounded)</option>
|
|
2490
|
+
<option value="material-symbols-sharp">Material Symbols (Sharp)</option>
|
|
2491
|
+
</select>
|
|
2492
|
+
</mat-form-field>
|
|
2655
2493
|
</div>
|
|
2656
|
-
<div class="icon-
|
|
2657
|
-
<div class="
|
|
2658
|
-
|
|
2659
|
-
<mat-
|
|
2660
|
-
|
|
2661
|
-
|
|
2494
|
+
<div class="inline-actions-grid icon-picker-grid">
|
|
2495
|
+
<div class="inline-action-item">
|
|
2496
|
+
<div class="section-title">Ícone do número</div>
|
|
2497
|
+
<button mat-stroked-button type="button" (click)="pickIcon('number')" aria-label="Escolher ícone do número">
|
|
2498
|
+
<mat-icon *ngIf="icons.number; else pick" [fontIcon]="icons.number"></mat-icon>
|
|
2499
|
+
<ng-template #pick>Escolher</ng-template>
|
|
2500
|
+
</button>
|
|
2501
|
+
</div>
|
|
2502
|
+
<div class="inline-action-item">
|
|
2503
|
+
<div class="section-title">Ícone concluído</div>
|
|
2504
|
+
<button mat-stroked-button type="button" (click)="pickIcon('done')" aria-label="Escolher ícone de concluído">
|
|
2505
|
+
<mat-icon *ngIf="icons.done; else pick2" [fontIcon]="icons.done"></mat-icon>
|
|
2506
|
+
<ng-template #pick2>Escolher</ng-template>
|
|
2507
|
+
</button>
|
|
2508
|
+
</div>
|
|
2509
|
+
<div class="inline-action-item">
|
|
2510
|
+
<div class="section-title">Ícone edição</div>
|
|
2511
|
+
<button mat-stroked-button type="button" (click)="pickIcon('edit')" aria-label="Escolher ícone de edição">
|
|
2512
|
+
<mat-icon *ngIf="icons.edit; else pick3" [fontIcon]="icons.edit"></mat-icon>
|
|
2513
|
+
<ng-template #pick3>Escolher</ng-template>
|
|
2514
|
+
</button>
|
|
2515
|
+
</div>
|
|
2516
|
+
<div class="inline-action-item">
|
|
2517
|
+
<div class="section-title">Ícone de erro</div>
|
|
2518
|
+
<button mat-stroked-button type="button" (click)="pickIcon('error')" aria-label="Escolher ícone de erro">
|
|
2519
|
+
<mat-icon *ngIf="icons.error; else pick4" [fontIcon]="icons.error"></mat-icon>
|
|
2520
|
+
<ng-template #pick4>Escolher</ng-template>
|
|
2521
|
+
</button>
|
|
2522
|
+
</div>
|
|
2662
2523
|
</div>
|
|
2663
|
-
<div class="
|
|
2664
|
-
<div class="
|
|
2665
|
-
|
|
2666
|
-
<mat-
|
|
2667
|
-
|
|
2668
|
-
</button>
|
|
2524
|
+
<div class="icons-hint" *ngIf="symbolsLikelySelected.length && !appearance.iconsSet">
|
|
2525
|
+
<div class="muted">
|
|
2526
|
+
Dica: {{ symbolsLikelySelected.join(', ') }} são ícones do Material Symbols. Selecione um conjunto Symbols abaixo ou clique em
|
|
2527
|
+
<button mat-button color="primary" type="button" (click)="setIconsSetToSymbols()">Usar Material Symbols (Outlined)</button>.
|
|
2528
|
+
</div>
|
|
2669
2529
|
</div>
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
<button mat-button
|
|
2530
|
+
<div class="pdx-appearance-actions">
|
|
2531
|
+
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('neutral')">Preset: neutro</button>
|
|
2532
|
+
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('primary')">Preset: primário</button>
|
|
2533
|
+
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('high-contrast')">Preset: alto contraste</button>
|
|
2534
|
+
<button mat-button type="button" (click)="clearTokens()">Limpar tokens</button>
|
|
2675
2535
|
</div>
|
|
2676
2536
|
</div>
|
|
2677
|
-
<
|
|
2678
|
-
<
|
|
2679
|
-
<
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2537
|
+
<details class="disclosure">
|
|
2538
|
+
<summary>
|
|
2539
|
+
<span class="section-title">Tokens avançados e snippet SCSS</span>
|
|
2540
|
+
<span class="section-subtitle">Use quando precisar sair do ajuste rápido e controlar o tema com granularidade.</span>
|
|
2541
|
+
</summary>
|
|
2542
|
+
<div class="disclosure-body">
|
|
2543
|
+
<div class="tokens-grid">
|
|
2544
|
+
<div class="token-item" *ngFor="let key of stepperTokenKeys">
|
|
2545
|
+
<mat-form-field appearance="outline" class="w-full">
|
|
2546
|
+
<mat-label>{{ key }}</mat-label>
|
|
2547
|
+
<input matInput [ngModel]="appearance.tokens?.[key]" (ngModelChange)="onTokenChange(key, $event)" placeholder="valor CSS ou var(--token)" />
|
|
2548
|
+
</mat-form-field>
|
|
2549
|
+
</div>
|
|
2550
|
+
</div>
|
|
2551
|
+
<div class="code-card">
|
|
2552
|
+
<div class="code-head">Snippet SCSS</div>
|
|
2553
|
+
<pre class="code"><code>{{ scssSnippet() }}</code></pre>
|
|
2554
|
+
</div>
|
|
2683
2555
|
</div>
|
|
2684
|
-
</
|
|
2685
|
-
<div class="pdx-appearance-actions">
|
|
2686
|
-
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('neutral')">Preset: neutro</button>
|
|
2687
|
-
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('primary')">Preset: primário</button>
|
|
2688
|
-
<button mat-stroked-button color="primary" type="button" (click)="applyPreset('high-contrast')">Preset: alto contraste</button>
|
|
2689
|
-
<button mat-button type="button" (click)="clearTokens()">Limpar tokens</button>
|
|
2690
|
-
</div>
|
|
2691
|
-
<mat-card appearance="outlined" class="code-card">
|
|
2692
|
-
<div class="code-head">Snippet SCSS</div>
|
|
2693
|
-
<pre class="code"><code>{{ scssSnippet() }}</code></pre>
|
|
2694
|
-
</mat-card>
|
|
2556
|
+
</details>
|
|
2695
2557
|
</div>
|
|
2696
2558
|
</mat-tab>
|
|
2697
2559
|
</mat-tab-group>
|
|
2698
2560
|
</div>
|
|
2699
|
-
`, styles: [".pdx-editor{display:grid;gap:16px}.pdx-editor .mat-mdc-form-field{width:100%}.pdx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.pdx-toggles{display:flex;gap:12px;flex-wrap:wrap}.tab-pad{padding:12px;display:grid;gap:12px;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.help{color:var(--md-sys-color-on-surface-variant);font-size:13px}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:6px}.icons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}.icon-item{display:grid;gap:6px;align-content:start}.icons-hint{margin-top:4px}.pdx-steps{display:grid;gap:8px}.pdx-steps-header{display:flex;justify-content:space-between;align-items:center}.pdx-step-list{display:grid;gap:8px}.pdx-step-item{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:start;padding:8px;border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;background:var(--md-sys-color-surface);cursor:pointer}.pdx-step-item.active{border-color:var(--md-sys-color-primary);box-shadow:var(--mat-elevation-level2)}.drag-handle{display:flex;align-items:center;color:var(--md-sys-color-on-surface-variant)}.pdx-fields{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.pdx-flag-group{display:flex;gap:10px;align-items:center}.pdx-active-step{display:grid;gap:12px;padding-top:8px;border-top:1px dashed var(--md-sys-color-outline-variant)}.pdx-active-step .hdr{display:flex;gap:12px;align-items:center;justify-content:space-between}.pdx-content-editor{display:grid;gap:16px}.section{display:grid;gap:8px;padding:12px;border:1px solid var(--md-sys-color-outline-variant);border-radius:12px;background:var(--md-sys-color-surface-container-lowest)}.section-body{display:grid;gap:8px}.section-title{font-weight:600;opacity:.85}.section-subtitle{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editorial-section{background:var(--md-sys-color-surface-container-low);border-color:var(--md-sys-color-primary)}.mini-card{display:block}.widget-list{display:grid;gap:8px}.widget-item{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;padding:8px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface)}.widget-item .info{display:grid;gap:2px;min-width:0}.widget-item .info .name{font-weight:600}.widget-item .info .sub{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.widget-item .info .meta{font-size:11px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);opacity:.85}.widget-item .actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.editorial-item{align-items:start}.editorial-item .actions{justify-content:flex-start}.cta-row{display:flex;gap:8px;align-items:center}.spacer{flex:1 1 auto}.muted{color:var(--md-sys-color-on-surface-variant)}.cta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:8px}.cta-card{display:grid;gap:8px;padding:12px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface)}.cta-card .cta-head{display:flex;align-items:center;gap:8px}.cta-card .cta-title{font-weight:600}.cta-card .cta-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.cta-card .cta-actions{display:flex;gap:8px;align-items:center}.tokens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:8px 0}.token-item{display:contents}.pdx-appearance{margin-top:8px;display:grid;gap:8px}.pdx-appearance-actions{display:flex;gap:8px;flex-wrap:wrap}.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.zone-card{display:grid;gap:8px;padding:12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface)}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.zone-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.zone-title{font-weight:600}.zone-count{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.advanced-list{margin-top:4px}.code-card{margin-top:8px}.code-head{font-weight:600;margin-bottom:4px}.code{white-space:pre;overflow:auto;background:var(--md-sys-color-surface-container-highest)}.w-full{grid-column:1 / -1}.min-180{min-width:180px}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}@media(max-width:900px){.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-start}}@media(max-width:640px){.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.pdx-flag-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions{justify-content:flex-start}}\n"] }]
|
|
2561
|
+
`, styles: [".pdx-editor{display:grid;gap:16px}.pdx-editor .mat-mdc-form-field{width:100%}.pdx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.pdx-toggles{display:flex;gap:12px;flex-wrap:wrap}.tab-pad{padding:16px;display:grid;gap:16px;background:var(--md-sys-color-surface);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);border-radius:16px}.help{color:var(--md-sys-color-on-surface-variant);font-size:13px}.editor-intro{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:4px 2px 2px}.editor-intro-copy{display:grid;gap:6px;max-width:760px}.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant);font-weight:600}.editor-title{font-size:22px;line-height:1.15;font-weight:650;color:var(--md-sys-color-on-surface)}.editor-subtitle{max-width:72ch;color:var(--md-sys-color-on-surface-variant);line-height:1.45;font-size:14px}.editor-intro-meta{display:flex;gap:8px;align-items:flex-start}.meta-pill{display:grid;gap:2px;min-width:88px;padding:10px 12px;border-radius:14px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 70%,transparent);background:var(--md-sys-color-surface-container-low)}.meta-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant)}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:6px}.icons-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:8px 0}.icon-item{display:grid;gap:6px;align-content:start}.icons-hint{margin-top:4px}.settings-group{display:grid;gap:14px;padding:2px 0 4px}.settings-group+.settings-group,.settings-group+.disclosure,.disclosure+.settings-group{padding-top:18px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 60%,transparent)}.group-head{display:grid;gap:4px;max-width:72ch}.inline-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:start}.inline-action-item{display:grid;gap:8px;align-content:start;min-width:0}.pdx-steps{display:grid;gap:12px;padding:4px 0 2px}.steps-workspace{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:24px;align-items:start}.pdx-steps-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.pdx-step-list{display:grid;gap:10px}.pdx-step-item{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:start;padding:12px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent);border-radius:14px;background:var(--md-sys-color-surface);cursor:pointer;outline:none}.pdx-step-item.active{border-color:color-mix(in srgb,var(--md-sys-color-primary) 55%,var(--md-sys-color-outline-variant));background:color-mix(in srgb,var(--md-sys-color-primary-container) 26%,var(--md-sys-color-surface));box-shadow:none}.pdx-step-item:focus-visible{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.drag-handle{display:flex;align-items:center;color:var(--md-sys-color-on-surface-variant)}.step-summary{display:grid;gap:8px;min-width:0}.step-summary-head{display:grid;gap:2px}.step-summary-index{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--md-sys-color-on-surface-variant);font-weight:600}.step-summary-title{font-size:15px;line-height:1.3;font-weight:600;color:var(--md-sys-color-on-surface)}.step-summary-sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-summary-flags{display:flex;gap:6px;flex-wrap:wrap}.summary-chip{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface-variant);font-size:11px;font-weight:600}.summary-chip-warn{background:color-mix(in srgb,var(--md-sys-color-error-container) 60%,transparent);color:var(--md-sys-color-on-error-container)}.pdx-active-step{display:grid;gap:18px;min-width:0}.pdx-active-step .hdr{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.active-step-head{display:grid;gap:4px}.pdx-content-editor{display:grid;gap:16px}.section{display:grid;gap:12px;padding:0;border:none;border-radius:0;background:transparent}.section-body{display:grid;gap:12px}.section-title{font-weight:600;font-size:15px;color:var(--md-sys-color-on-surface)}.section-subtitle{font-size:13px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.section-head{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.editorial-section{padding-bottom:6px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 68%,transparent)}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field-span-2{grid-column:span 2}.toggle-group{display:flex;gap:10px;flex-wrap:wrap;padding-top:4px}.disclosure{padding:0 0 12px;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 62%,transparent)}.disclosure summary{list-style:none;display:flex;justify-content:space-between;align-items:baseline;gap:16px;cursor:pointer;padding:0;position:relative}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary:after{content:\"expand_more\";font-family:Material Icons;font-size:18px;color:var(--md-sys-color-on-surface-variant);transition:transform .16s ease}.disclosure[open] summary:after{transform:rotate(180deg)}.disclosure summary:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 58%,transparent);outline-offset:4px;border-radius:8px}.disclosure-body{padding-top:12px}.widget-list{display:grid;gap:8px}.widget-item{display:grid;grid-template-columns:20px 1fr auto;align-items:start;gap:12px;padding:10px 0;border:none;border-radius:0;background:transparent;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.widget-item .info{display:grid;gap:2px;min-width:0}.widget-item .info .name{font-weight:600}.widget-item .info .sub{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45}.widget-item .info .meta{margin-top:2px;font-size:11px;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-ref-typeface-plain, monospace);opacity:.85}.widget-item .actions{display:flex;gap:2px;flex-wrap:nowrap;justify-content:flex-end;align-items:flex-start;opacity:.92}.editorial-item{align-items:start}.editorial-item .actions{justify-content:flex-end}.cta-row{display:flex;gap:8px;align-items:center}.spacer{flex:1 1 auto}.muted{color:var(--md-sys-color-on-surface-variant)}.cta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-bottom:4px}.cta-row-item{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.tokens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin:8px 0}.token-item{display:contents}.pdx-appearance{margin-top:8px;display:grid;gap:8px}.pdx-appearance-actions{display:flex;gap:8px;flex-wrap:wrap}.zone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.zone-column{display:grid;gap:10px;min-width:0}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.zone-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.zone-title{font-weight:600}.zone-column+.zone-column{padding-left:16px;border-left:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.zone-count{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}.advanced-list{margin-top:4px}.form-row-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}.form-row-main{display:flex;align-items:center;gap:12px;min-width:0}.form-row-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.code-card{margin-top:8px}.code-head{font-weight:600;margin-bottom:4px}.code{white-space:pre;overflow:auto;background:var(--md-sys-color-surface-container-highest)}.w-full{grid-column:1 / -1}.min-180{min-width:180px}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}.cta-row-item .cta-head{display:grid;grid-template-columns:20px 1fr;align-items:start;gap:10px}.cta-row-item .cta-title{font-weight:600;color:var(--md-sys-color-on-surface)}.cta-row-item .cta-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);line-height:1.45;margin-top:2px}.cta-row-item .cta-actions{display:flex;gap:8px;align-items:center}.widget-item:last-child,.cta-row-item:last-child,.form-row-card:last-child{border-bottom:none}@media(max-width:900px){.editor-intro{flex-direction:column}.steps-workspace{grid-template-columns:1fr;gap:20px}.pdx-step-item{grid-template-columns:20px 1fr}.pdx-actions{grid-column:1 / -1;justify-self:end}.widget-item{grid-template-columns:20px 1fr}.widget-item .actions{grid-column:1 / -1;justify-content:flex-end}.form-row-card{flex-direction:column;align-items:flex-start}.form-row-actions{justify-content:flex-start}.zone-column+.zone-column{padding-left:0;border-left:none;padding-top:12px;border-top:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 56%,transparent)}}@media(max-width:640px){.tab-pad{padding:14px}.editor-title{font-size:20px}.pdx-active-step .hdr{align-items:flex-start;flex-direction:column}.detail-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}.toggle-group{flex-direction:column;align-items:flex-start}.zone-head{align-items:flex-start;flex-direction:column}.zone-actions,.widget-item .actions{justify-content:flex-start}.disclosure summary{flex-direction:column;align-items:flex-start}}\n"] }]
|
|
2700
2562
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2701
2563
|
type: Inject,
|
|
2702
2564
|
args: [SETTINGS_PANEL_DATA]
|
|
@@ -3482,7 +3344,7 @@ class PraxisStepper {
|
|
|
3482
3344
|
>
|
|
3483
3345
|
<mat-icon fontIcon="edit"></mat-icon>
|
|
3484
3346
|
</button>
|
|
3485
|
-
`, isInline: true, styles: [":host{display:block;position:relative}.praxis-stepper{width:100%;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;padding:12px;box-shadow:var(--mat-elevation-level1)}.praxis-stepper.pdx-stepper-ft-light{background:transparent;border:none;border-radius:0;padding:0;box-shadow:none}:host(.density-compact) ::ng-deep .mat-step-header{min-height:36px}:host(.density-compact) .pdx-step-actions{padding-top:4px;gap:6px}:host(.density-comfortable) ::ng-deep .mat-step-header{min-height:44px}.pdx-step-content{padding:12px 4px 8px;color:var(--md-sys-color-on-surface)}.pdx-step-actions{display:flex;gap:8px;padding-top:8px}::ng-deep .praxis-stepper .mat-step-header{border-radius:999px;margin:4px 0;color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label{color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label.mat-step-label-selected{color:var(--md-sys-color-on-surface);font-weight:600}::ng-deep .praxis-stepper .mat-step-header
|
|
3347
|
+
`, isInline: true, styles: [":host{display:block;position:relative}.praxis-stepper{width:100%;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;padding:12px;box-shadow:var(--mat-elevation-level1)}.praxis-stepper.pdx-stepper-ft-light{background:transparent;border:none;border-radius:0;padding:0;box-shadow:none}:host(.density-compact) ::ng-deep .mat-step-header{min-height:36px}:host(.density-compact) .pdx-step-actions{padding-top:4px;gap:6px}:host(.density-comfortable) ::ng-deep .mat-step-header{min-height:44px}.pdx-step-content{padding:12px 4px 8px;color:var(--md-sys-color-on-surface)}.pdx-step-actions{display:flex;gap:8px;padding-top:8px}::ng-deep .praxis-stepper .mat-step-header{border-radius:999px;margin:4px 0;color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label{color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label.mat-step-label-selected{color:var(--md-sys-color-on-surface);font-weight:600}::ng-deep .praxis-stepper .mat-step-header.cdk-keyboard-focused,::ng-deep .praxis-stepper .mat-step-header.cdk-program-focused{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}::ng-deep .praxis-stepper .mat-step-icon{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-icon-selected{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}::ng-deep .praxis-stepper .mat-step-icon-state-done{background:var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary)}::ng-deep .praxis-stepper .mat-step-icon-state-error{background:var(--md-sys-color-error);color:var(--md-sys-color-on-error)}::ng-deep .praxis-stepper .mat-stepper-horizontal-line{border-top-color:var(--md-sys-color-outline-variant)}::ng-deep .praxis-stepper .mat-stepper-vertical-line:before{border-left-color:var(--md-sys-color-outline-variant)}::ng-deep .pdx-stepper-ft-light .mat-stepper-horizontal{background:transparent;--mat-stepper-header-hover-state-layer-color: color-mix( in srgb, var(--md-sys-color-on-surface) 8%, transparent );--mat-stepper-header-focus-state-layer-color: transparent;--mat-stepper-header-hover-state-layer-shape: 14px;--mat-stepper-header-focus-state-layer-shape: 14px}::ng-deep .pdx-stepper-ft-light .mat-step-header{margin:0}::ng-deep .pdx-stepper-ft-light .mat-step-header .mat-step-header-ripple{display:none}::ng-deep .ft-stepper{background:transparent}.ft-stepper-content{padding:0}.ft-stepper-content .form-section{border:none;padding:0;background:transparent}.nav-align-start{justify-content:flex-start}.nav-align-center{justify-content:center}.nav-align-end{justify-content:flex-end}.nav-align-space-between{justify-content:space-between}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.stepper-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i2$1.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i2$1.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i2$1.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i2$1.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { 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: "component", type: i6.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$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: PraxisDynamicForm, selector: "praxis-dynamic-form", inputs: ["resourcePath", "resourceId", "mode", "config", "schemaSource", "editModeEnabled", "formId", "componentInstanceId", "layout", "backConfig", "hooks", "removeEmptyContainersOnSave", "reactiveValidation", "reactiveValidationDebounceMs", "notifyIfOutdated", "snoozeMs", "autoOpenSettingsOnOutdated", "readonlyModeGlobal", "disabledModeGlobal", "presentationModeGlobal", "visibleGlobal", "customEndpoints"], outputs: ["formSubmit", "formCancel", "formReset", "configChange", "formReady", "valueChange", "syncCompleted", "initializationError", "loadingStateChange", "editModeEnabledChange", "customAction", "actionConfirmation", "schemaStatusChange", "fieldRenderError"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone"] }, { kind: "component", type: PraxisAiAssistantComponent, selector: "praxis-ai-assistant", inputs: ["adapter", "riskPolicy", "allowManualPatchEdit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3486
3348
|
}
|
|
3487
3349
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisStepper, decorators: [{
|
|
3488
3350
|
type: Component,
|
|
@@ -3640,7 +3502,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
3640
3502
|
>
|
|
3641
3503
|
<mat-icon fontIcon="edit"></mat-icon>
|
|
3642
3504
|
</button>
|
|
3643
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;position:relative}.praxis-stepper{width:100%;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;padding:12px;box-shadow:var(--mat-elevation-level1)}.praxis-stepper.pdx-stepper-ft-light{background:transparent;border:none;border-radius:0;padding:0;box-shadow:none}:host(.density-compact) ::ng-deep .mat-step-header{min-height:36px}:host(.density-compact) .pdx-step-actions{padding-top:4px;gap:6px}:host(.density-comfortable) ::ng-deep .mat-step-header{min-height:44px}.pdx-step-content{padding:12px 4px 8px;color:var(--md-sys-color-on-surface)}.pdx-step-actions{display:flex;gap:8px;padding-top:8px}::ng-deep .praxis-stepper .mat-step-header{border-radius:999px;margin:4px 0;color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label{color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label.mat-step-label-selected{color:var(--md-sys-color-on-surface);font-weight:600}::ng-deep .praxis-stepper .mat-step-header
|
|
3505
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;position:relative}.praxis-stepper{width:100%;background:var(--md-sys-color-surface);border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;padding:12px;box-shadow:var(--mat-elevation-level1)}.praxis-stepper.pdx-stepper-ft-light{background:transparent;border:none;border-radius:0;padding:0;box-shadow:none}:host(.density-compact) ::ng-deep .mat-step-header{min-height:36px}:host(.density-compact) .pdx-step-actions{padding-top:4px;gap:6px}:host(.density-comfortable) ::ng-deep .mat-step-header{min-height:44px}.pdx-step-content{padding:12px 4px 8px;color:var(--md-sys-color-on-surface)}.pdx-step-actions{display:flex;gap:8px;padding-top:8px}::ng-deep .praxis-stepper .mat-step-header{border-radius:999px;margin:4px 0;color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label{color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-label.mat-step-label-selected{color:var(--md-sys-color-on-surface);font-weight:600}::ng-deep .praxis-stepper .mat-step-header.cdk-keyboard-focused,::ng-deep .praxis-stepper .mat-step-header.cdk-program-focused{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}::ng-deep .praxis-stepper .mat-step-icon{background:var(--md-sys-color-surface-container-high);color:var(--md-sys-color-on-surface)}::ng-deep .praxis-stepper .mat-step-icon-selected{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}::ng-deep .praxis-stepper .mat-step-icon-state-done{background:var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary)}::ng-deep .praxis-stepper .mat-step-icon-state-error{background:var(--md-sys-color-error);color:var(--md-sys-color-on-error)}::ng-deep .praxis-stepper .mat-stepper-horizontal-line{border-top-color:var(--md-sys-color-outline-variant)}::ng-deep .praxis-stepper .mat-stepper-vertical-line:before{border-left-color:var(--md-sys-color-outline-variant)}::ng-deep .pdx-stepper-ft-light .mat-stepper-horizontal{background:transparent;--mat-stepper-header-hover-state-layer-color: color-mix( in srgb, var(--md-sys-color-on-surface) 8%, transparent );--mat-stepper-header-focus-state-layer-color: transparent;--mat-stepper-header-hover-state-layer-shape: 14px;--mat-stepper-header-focus-state-layer-shape: 14px}::ng-deep .pdx-stepper-ft-light .mat-step-header{margin:0}::ng-deep .pdx-stepper-ft-light .mat-step-header .mat-step-header-ripple{display:none}::ng-deep .ft-stepper{background:transparent}.ft-stepper-content{padding:0}.ft-stepper-content .form-section{border:none;padding:0;background:transparent}.nav-align-start{justify-content:flex-start}.nav-align-center{justify-content:center}.nav-align-end{justify-content:flex-end}.nav-align-space-between{justify-content:space-between}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.stepper-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}\n"] }]
|
|
3644
3506
|
}], propDecorators: { stepLabelTpl: [{
|
|
3645
3507
|
type: ContentChild,
|
|
3646
3508
|
args: ['stepLabelTpl', { read: TemplateRef }]
|
|
@@ -3705,7 +3567,7 @@ class PraxisWizardBenefitsGridComponent {
|
|
|
3705
3567
|
</div>
|
|
3706
3568
|
</div>
|
|
3707
3569
|
</section>
|
|
3708
|
-
`, isInline: true, styles: [":host{display:block}.pwx-benefits{display:flex;flex-direction:column;gap:10px}.pwx-benefits-title{margin:0;font-size:.9rem;font-weight:600;color:var(--md-sys-color-on-surface);letter-spacing:.02em;display:flex;align-items:center;gap:12px}.pwx-benefits-title:before,.pwx-benefits-title:after{content:\"\";height:1px;flex:1;background:var(--md-sys-color-outline-variant)}.pwx-benefits-grid{display:grid;grid-template-columns:repeat(var(--pwx-columns),minmax(0,1fr));gap:
|
|
3570
|
+
`, isInline: true, styles: [":host{display:block}.pwx-benefits{display:flex;flex-direction:column;gap:10px}.pwx-benefits-title{margin:0;font-size:.9rem;font-weight:600;color:var(--md-sys-color-on-surface);letter-spacing:.02em;display:flex;align-items:center;gap:12px}.pwx-benefits-title:before,.pwx-benefits-title:after{content:\"\";height:1px;flex:1;background:var(--md-sys-color-outline-variant)}.pwx-benefits-grid{display:grid;grid-template-columns:repeat(var(--pwx-columns),minmax(0,1fr));gap:12px 16px;align-items:start}.pwx-benefits-grid.is-boxed{padding:12px 14px;border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;background:var(--md-sys-color-surface)}.pwx-benefit{display:flex;gap:10px;align-items:flex-start;min-height:0}.pwx-benefit-icon{width:24px;min-width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;line-height:1;color:var(--praxis-wizard-accent, var(--md-sys-color-primary))}.pwx-benefit-icon mat-icon{width:24px;height:24px;font-size:24px;line-height:24px;display:block;overflow:visible}.pwx-benefit-title{font-weight:600;font-size:.88rem;color:var(--md-sys-color-on-surface)}.pwx-benefit-text{font-size:.82rem;color:var(--praxis-wizard-muted, var(--md-sys-color-on-surface-variant));line-height:1.35}@media(max-width:720px){.pwx-benefits-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.pwx-benefits-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3709
3571
|
}
|
|
3710
3572
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisWizardBenefitsGridComponent, decorators: [{
|
|
3711
3573
|
type: Component,
|
|
@@ -3728,7 +3590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
3728
3590
|
</div>
|
|
3729
3591
|
</div>
|
|
3730
3592
|
</section>
|
|
3731
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pwx-benefits{display:flex;flex-direction:column;gap:10px}.pwx-benefits-title{margin:0;font-size:.9rem;font-weight:600;color:var(--md-sys-color-on-surface);letter-spacing:.02em;display:flex;align-items:center;gap:12px}.pwx-benefits-title:before,.pwx-benefits-title:after{content:\"\";height:1px;flex:1;background:var(--md-sys-color-outline-variant)}.pwx-benefits-grid{display:grid;grid-template-columns:repeat(var(--pwx-columns),minmax(0,1fr));gap:
|
|
3593
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pwx-benefits{display:flex;flex-direction:column;gap:10px}.pwx-benefits-title{margin:0;font-size:.9rem;font-weight:600;color:var(--md-sys-color-on-surface);letter-spacing:.02em;display:flex;align-items:center;gap:12px}.pwx-benefits-title:before,.pwx-benefits-title:after{content:\"\";height:1px;flex:1;background:var(--md-sys-color-outline-variant)}.pwx-benefits-grid{display:grid;grid-template-columns:repeat(var(--pwx-columns),minmax(0,1fr));gap:12px 16px;align-items:start}.pwx-benefits-grid.is-boxed{padding:12px 14px;border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;background:var(--md-sys-color-surface)}.pwx-benefit{display:flex;gap:10px;align-items:flex-start;min-height:0}.pwx-benefit-icon{width:24px;min-width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;line-height:1;color:var(--praxis-wizard-accent, var(--md-sys-color-primary))}.pwx-benefit-icon mat-icon{width:24px;height:24px;font-size:24px;line-height:24px;display:block;overflow:visible}.pwx-benefit-title{font-weight:600;font-size:.88rem;color:var(--md-sys-color-on-surface)}.pwx-benefit-text{font-size:.82rem;color:var(--praxis-wizard-muted, var(--md-sys-color-on-surface-variant));line-height:1.35}@media(max-width:720px){.pwx-benefits-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.pwx-benefits-grid{grid-template-columns:1fr}}\n"] }]
|
|
3732
3594
|
}], propDecorators: { blockId: [{
|
|
3733
3595
|
type: Input
|
|
3734
3596
|
}], title: [{
|
|
@@ -4004,34 +3866,34 @@ function providePraxisStepperMetadata() {
|
|
|
4004
3866
|
}
|
|
4005
3867
|
|
|
4006
3868
|
const FT_WIZARD_JSON = `{
|
|
4007
|
-
"id": "
|
|
4008
|
-
"brand": "
|
|
3869
|
+
"id": "advanced-onboarding-wizard",
|
|
3870
|
+
"brand": "PRAXIS UI",
|
|
4009
3871
|
"progress": {
|
|
4010
3872
|
"variant": "line",
|
|
4011
3873
|
"showLabels": true,
|
|
4012
3874
|
"labelPosition": "bottom"
|
|
4013
3875
|
},
|
|
4014
3876
|
"cta": {
|
|
4015
|
-
"label": "
|
|
3877
|
+
"label": "Continuar",
|
|
4016
3878
|
"action": "next",
|
|
4017
|
-
"secondaryLabel": "
|
|
3879
|
+
"secondaryLabel": "Voltar",
|
|
4018
3880
|
"secondaryAction": "prev",
|
|
4019
3881
|
"sticky": true
|
|
4020
3882
|
},
|
|
4021
3883
|
"preferences": {
|
|
4022
3884
|
"stepId": "preferences",
|
|
4023
|
-
"storageKey": "praxis:
|
|
4024
|
-
"persistFields": ["
|
|
3885
|
+
"storageKey": "praxis:advanced-wizard",
|
|
3886
|
+
"persistFields": ["novidadesProduto", "eventosConteudo", "recomendacoes"]
|
|
4025
3887
|
},
|
|
4026
3888
|
"theme": {
|
|
4027
|
-
"praxis-wizard-card-bg": "#
|
|
4028
|
-
"md-sys-color-surface": "#
|
|
3889
|
+
"praxis-wizard-card-bg": "#fff7ef",
|
|
3890
|
+
"md-sys-color-surface": "#fff7ef",
|
|
4029
3891
|
"md-sys-color-on-surface": "#33302e",
|
|
4030
3892
|
"praxis-wizard-accent": "#0d7680",
|
|
4031
3893
|
"praxis-wizard-border": "#cfcfcf",
|
|
4032
3894
|
"md-sys-color-outline-variant": "#cfcfcf",
|
|
4033
|
-
"ft-font-head": "\\\"
|
|
4034
|
-
"ft-font-body": "\\\"
|
|
3895
|
+
"ft-font-head": "Georgia, \\\"Times New Roman\\\", serif",
|
|
3896
|
+
"ft-font-body": "\\\"Source Sans 3\\\", \\\"Segoe UI\\\", Arial, sans-serif",
|
|
4035
3897
|
"ft-radius": "0",
|
|
4036
3898
|
"ft-shadow": "none",
|
|
4037
3899
|
"ft-header-border": "1px solid #cfcfcf"
|
|
@@ -4039,36 +3901,36 @@ const FT_WIZARD_JSON = `{
|
|
|
4039
3901
|
"steps": [
|
|
4040
3902
|
{
|
|
4041
3903
|
"id": "access",
|
|
4042
|
-
"label": "
|
|
4043
|
-
"title": "
|
|
4044
|
-
"subtitle": "
|
|
3904
|
+
"label": "Acesso",
|
|
3905
|
+
"title": "Crie sua conta",
|
|
3906
|
+
"subtitle": "Ative seu acesso em poucos passos e personalize a experiência desde o início.",
|
|
4045
3907
|
"zones": {
|
|
4046
3908
|
"intro": [
|
|
4047
3909
|
{
|
|
4048
3910
|
"type": "benefitsGrid",
|
|
4049
|
-
"title": "
|
|
3911
|
+
"title": "Por que se cadastrar?",
|
|
4050
3912
|
"columns": 4,
|
|
4051
3913
|
"boxed": true,
|
|
4052
3914
|
"items": [
|
|
4053
3915
|
{
|
|
4054
3916
|
"icon": "format_quote",
|
|
4055
|
-
"title": "
|
|
4056
|
-
"text": "
|
|
3917
|
+
"title": "Conteúdo relevante",
|
|
3918
|
+
"text": "Receba atualizações, novidades e materiais selecionados para o seu perfil."
|
|
4057
3919
|
},
|
|
4058
3920
|
{
|
|
4059
3921
|
"icon": "edit_note",
|
|
4060
|
-
"title": "
|
|
4061
|
-
"text": "
|
|
3922
|
+
"title": "Fluxo guiado",
|
|
3923
|
+
"text": "Conclua o cadastro com uma jornada simples, clara e orientada por etapas."
|
|
4062
3924
|
},
|
|
4063
3925
|
{
|
|
4064
3926
|
"icon": "bookmarks",
|
|
4065
|
-
"title": "
|
|
4066
|
-
"text": "
|
|
3927
|
+
"title": "Preferências salvas",
|
|
3928
|
+
"text": "Defina suas escolhas iniciais e retome o processo sem perder o progresso."
|
|
4067
3929
|
},
|
|
4068
3930
|
{
|
|
4069
3931
|
"icon": "mail",
|
|
4070
|
-
"title": "
|
|
4071
|
-
"text": "
|
|
3932
|
+
"title": "Comunicação sob controle",
|
|
3933
|
+
"text": "Escolha como deseja receber novidades, alertas e recomendações."
|
|
4072
3934
|
}
|
|
4073
3935
|
]
|
|
4074
3936
|
}
|
|
@@ -4076,12 +3938,12 @@ const FT_WIZARD_JSON = `{
|
|
|
4076
3938
|
"footer": [
|
|
4077
3939
|
{
|
|
4078
3940
|
"type": "inlineNotice",
|
|
4079
|
-
"text": "
|
|
3941
|
+
"text": "Ao continuar, você concorda com os termos de uso e com a política de privacidade da plataforma."
|
|
4080
3942
|
}
|
|
4081
3943
|
]
|
|
4082
3944
|
},
|
|
4083
3945
|
"cta": {
|
|
4084
|
-
"label": "
|
|
3946
|
+
"label": "Começar cadastro",
|
|
4085
3947
|
"action": "next"
|
|
4086
3948
|
},
|
|
4087
3949
|
"form": {
|
|
@@ -4093,7 +3955,7 @@ const FT_WIZARD_JSON = `{
|
|
|
4093
3955
|
{
|
|
4094
3956
|
"columns": [
|
|
4095
3957
|
{
|
|
4096
|
-
"fields": ["confirmAge", "
|
|
3958
|
+
"fields": ["confirmAge", "receberNovidades"]
|
|
4097
3959
|
}
|
|
4098
3960
|
]
|
|
4099
3961
|
}
|
|
@@ -4109,44 +3971,44 @@ const FT_WIZARD_JSON = `{
|
|
|
4109
3971
|
"layout": "horizontal",
|
|
4110
3972
|
"options": [
|
|
4111
3973
|
{
|
|
4112
|
-
"label": "
|
|
3974
|
+
"label": "Confirmo que li e aceito os termos de uso e a política de privacidade.",
|
|
4113
3975
|
"value": true
|
|
4114
3976
|
}
|
|
4115
3977
|
]
|
|
4116
3978
|
},
|
|
4117
3979
|
{
|
|
4118
|
-
"name": "
|
|
4119
|
-
"label": "
|
|
3980
|
+
"name": "receberNovidades",
|
|
3981
|
+
"label": "Receber novidades por e-mail",
|
|
4120
3982
|
"controlType": "toggle",
|
|
4121
3983
|
"defaultValue": true,
|
|
4122
|
-
"hint": "
|
|
3984
|
+
"hint": "Você pode alterar essa preferência a qualquer momento nas configurações da conta."
|
|
4123
3985
|
}
|
|
4124
3986
|
],
|
|
4125
3987
|
"actions": {
|
|
4126
|
-
"submit": { "visible": false, "label": "
|
|
4127
|
-
"cancel": { "visible": false, "label": "
|
|
4128
|
-
"reset": { "visible": false, "label": "
|
|
3988
|
+
"submit": { "visible": false, "label": "Salvar" },
|
|
3989
|
+
"cancel": { "visible": false, "label": "Cancelar" },
|
|
3990
|
+
"reset": { "visible": false, "label": "Limpar" }
|
|
4129
3991
|
}
|
|
4130
3992
|
}
|
|
4131
3993
|
}
|
|
4132
3994
|
},
|
|
4133
3995
|
{
|
|
4134
3996
|
"id": "account",
|
|
4135
|
-
"label": "
|
|
4136
|
-
"title": "
|
|
4137
|
-
"subtitle": "
|
|
3997
|
+
"label": "Conta",
|
|
3998
|
+
"title": "Configure seu acesso",
|
|
3999
|
+
"subtitle": "Esses dados serão usados para criar e proteger sua conta.",
|
|
4138
4000
|
"zones": {
|
|
4139
4001
|
"intro": [
|
|
4140
4002
|
{
|
|
4141
4003
|
"type": "inlineNotice",
|
|
4142
|
-
"text": "
|
|
4004
|
+
"text": "Use um e-mail válido para confirmar o cadastro e recuperar o acesso quando necessário.",
|
|
4143
4005
|
"tone": "info"
|
|
4144
4006
|
}
|
|
4145
4007
|
],
|
|
4146
4008
|
"footer": [
|
|
4147
4009
|
{
|
|
4148
4010
|
"type": "inlineNotice",
|
|
4149
|
-
"text": "
|
|
4011
|
+
"text": "Mensagens de segurança e comunicações operacionais continuam ativas mesmo se você desativar novidades."
|
|
4150
4012
|
}
|
|
4151
4013
|
]
|
|
4152
4014
|
},
|
|
@@ -4159,7 +4021,7 @@ const FT_WIZARD_JSON = `{
|
|
|
4159
4021
|
{
|
|
4160
4022
|
"columns": [
|
|
4161
4023
|
{ "fields": ["email", "password"] },
|
|
4162
|
-
{ "fields": ["
|
|
4024
|
+
{ "fields": ["aceitaComunicacoes"] }
|
|
4163
4025
|
]
|
|
4164
4026
|
}
|
|
4165
4027
|
]
|
|
@@ -4168,51 +4030,53 @@ const FT_WIZARD_JSON = `{
|
|
|
4168
4030
|
"fieldMetadata": [
|
|
4169
4031
|
{
|
|
4170
4032
|
"name": "email",
|
|
4171
|
-
"label": "
|
|
4033
|
+
"label": "E-mail",
|
|
4172
4034
|
"controlType": "email",
|
|
4173
4035
|
"required": true,
|
|
4174
|
-
"placeholder": "
|
|
4036
|
+
"placeholder": "Digite seu e-mail"
|
|
4175
4037
|
},
|
|
4176
4038
|
{
|
|
4177
4039
|
"name": "password",
|
|
4178
|
-
"label": "
|
|
4040
|
+
"label": "Senha",
|
|
4179
4041
|
"controlType": "password",
|
|
4180
4042
|
"required": true,
|
|
4181
|
-
"placeholder": "
|
|
4182
|
-
"hint": "Use 8
|
|
4043
|
+
"placeholder": "Crie uma senha",
|
|
4044
|
+
"hint": "Use 8 ou mais caracteres, combinando letras, números e símbolos.",
|
|
4183
4045
|
"validators": {
|
|
4184
4046
|
"minLength": 8
|
|
4185
4047
|
},
|
|
4186
4048
|
"revealToggle": {
|
|
4187
4049
|
"enabled": true,
|
|
4188
|
-
"style": "
|
|
4189
|
-
"showLabel": "
|
|
4190
|
-
"hideLabel": "
|
|
4191
|
-
"ariaLabel": "
|
|
4050
|
+
"style": "icon",
|
|
4051
|
+
"showLabel": "Mostrar senha",
|
|
4052
|
+
"hideLabel": "Ocultar senha",
|
|
4053
|
+
"ariaLabel": "Alternar visibilidade da senha",
|
|
4054
|
+
"iconShow": "visibility",
|
|
4055
|
+
"iconHide": "visibility_off"
|
|
4192
4056
|
}
|
|
4193
4057
|
},
|
|
4194
4058
|
{
|
|
4195
|
-
"name": "
|
|
4196
|
-
"label": "
|
|
4059
|
+
"name": "aceitaComunicacoes",
|
|
4060
|
+
"label": "Receber comunicações da plataforma",
|
|
4197
4061
|
"controlType": "toggle",
|
|
4198
4062
|
"defaultValue": true,
|
|
4199
|
-
"hint": "
|
|
4063
|
+
"hint": "Inclui novidades de produto, convites para eventos e conteúdos de apoio."
|
|
4200
4064
|
}
|
|
4201
4065
|
],
|
|
4202
4066
|
"actions": {
|
|
4203
|
-
"submit": { "visible": false, "label": "
|
|
4204
|
-
"cancel": { "visible": false, "label": "
|
|
4205
|
-
"reset": { "visible": false, "label": "
|
|
4067
|
+
"submit": { "visible": false, "label": "Salvar" },
|
|
4068
|
+
"cancel": { "visible": false, "label": "Cancelar" },
|
|
4069
|
+
"reset": { "visible": false, "label": "Limpar" }
|
|
4206
4070
|
}
|
|
4207
4071
|
}
|
|
4208
4072
|
}
|
|
4209
4073
|
},
|
|
4210
4074
|
{
|
|
4211
4075
|
"id": "preferences",
|
|
4212
|
-
"label": "
|
|
4213
|
-
"title": "
|
|
4214
|
-
"subtitle": "
|
|
4215
|
-
"description": "
|
|
4076
|
+
"label": "Preferências",
|
|
4077
|
+
"title": "Personalize sua experiência",
|
|
4078
|
+
"subtitle": "Você pode alterar essas configurações a qualquer momento no painel da conta.",
|
|
4079
|
+
"description": "Escolha quais comunicações e recomendações fazem sentido para o seu contexto.",
|
|
4216
4080
|
"zones": {
|
|
4217
4081
|
"footer": [
|
|
4218
4082
|
{
|
|
@@ -4220,14 +4084,14 @@ const FT_WIZARD_JSON = `{
|
|
|
4220
4084
|
},
|
|
4221
4085
|
{
|
|
4222
4086
|
"type": "inlineNotice",
|
|
4223
|
-
"text": "
|
|
4087
|
+
"text": "Alertas de segurança e mensagens essenciais sobre a conta permanecem ativos para garantir a operação."
|
|
4224
4088
|
}
|
|
4225
4089
|
]
|
|
4226
4090
|
},
|
|
4227
4091
|
"cta": {
|
|
4228
|
-
"label": "
|
|
4092
|
+
"label": "Concluir cadastro",
|
|
4229
4093
|
"action": "submit",
|
|
4230
|
-
"secondaryLabel": "
|
|
4094
|
+
"secondaryLabel": "Voltar",
|
|
4231
4095
|
"secondaryAction": "prev"
|
|
4232
4096
|
},
|
|
4233
4097
|
"form": {
|
|
@@ -4238,9 +4102,9 @@ const FT_WIZARD_JSON = `{
|
|
|
4238
4102
|
"rows": [
|
|
4239
4103
|
{
|
|
4240
4104
|
"columns": [
|
|
4241
|
-
{ "fields": ["
|
|
4242
|
-
{ "fields": ["
|
|
4243
|
-
{ "fields": ["
|
|
4105
|
+
{ "fields": ["novidadesProduto"] },
|
|
4106
|
+
{ "fields": ["eventosConteudo"] },
|
|
4107
|
+
{ "fields": ["recomendacoes"] }
|
|
4244
4108
|
]
|
|
4245
4109
|
}
|
|
4246
4110
|
]
|
|
@@ -4248,31 +4112,31 @@ const FT_WIZARD_JSON = `{
|
|
|
4248
4112
|
],
|
|
4249
4113
|
"fieldMetadata": [
|
|
4250
4114
|
{
|
|
4251
|
-
"name": "
|
|
4252
|
-
"label": "
|
|
4115
|
+
"name": "novidadesProduto",
|
|
4116
|
+
"label": "Novidades de produto",
|
|
4253
4117
|
"controlType": "toggle",
|
|
4254
4118
|
"defaultValue": true,
|
|
4255
|
-
"hint": "
|
|
4119
|
+
"hint": "Receba lancamentos, melhorias e comunicados importantes sobre a plataforma."
|
|
4256
4120
|
},
|
|
4257
4121
|
{
|
|
4258
|
-
"name": "
|
|
4259
|
-
"label": "
|
|
4122
|
+
"name": "eventosConteudo",
|
|
4123
|
+
"label": "Eventos e conteúdos especiais",
|
|
4260
4124
|
"controlType": "toggle",
|
|
4261
4125
|
"defaultValue": true,
|
|
4262
|
-
"hint": "
|
|
4126
|
+
"hint": "Seja avisado sobre webinars, materiais técnicos e convites para trilhas de capacitação."
|
|
4263
4127
|
},
|
|
4264
4128
|
{
|
|
4265
|
-
"name": "
|
|
4266
|
-
"label": "
|
|
4129
|
+
"name": "recomendacoes",
|
|
4130
|
+
"label": "Recomendações personalizadas",
|
|
4267
4131
|
"controlType": "toggle",
|
|
4268
4132
|
"defaultValue": false,
|
|
4269
|
-
"hint": "
|
|
4133
|
+
"hint": "Receba sugestões de recursos e exemplos com base nas suas preferências de uso."
|
|
4270
4134
|
}
|
|
4271
4135
|
],
|
|
4272
4136
|
"actions": {
|
|
4273
|
-
"submit": { "visible": false, "label": "
|
|
4274
|
-
"cancel": { "visible": false, "label": "
|
|
4275
|
-
"reset": { "visible": false, "label": "
|
|
4137
|
+
"submit": { "visible": false, "label": "Salvar" },
|
|
4138
|
+
"cancel": { "visible": false, "label": "Cancelar" },
|
|
4139
|
+
"reset": { "visible": false, "label": "Limpar" }
|
|
4276
4140
|
}
|
|
4277
4141
|
}
|
|
4278
4142
|
}
|
|
@@ -4305,6 +4169,7 @@ function buildStepperConfig(wizard) {
|
|
|
4305
4169
|
linear: true,
|
|
4306
4170
|
headerPosition: 'top',
|
|
4307
4171
|
labelPosition: wizard.progress?.labelPosition ?? 'bottom',
|
|
4172
|
+
disableRipple: true,
|
|
4308
4173
|
density: 'compact',
|
|
4309
4174
|
stepperClass: 'ft-stepper',
|
|
4310
4175
|
headerClass: 'ft-stepper-header',
|
|
@@ -4619,7 +4484,7 @@ class PraxisWizardFormComponent {
|
|
|
4619
4484
|
const w = this.wizard();
|
|
4620
4485
|
return w?.steps?.[this.selectedIndex()] || null;
|
|
4621
4486
|
}, ...(ngDevMode ? [{ debugName: "activeStep" }] : []));
|
|
4622
|
-
wizardBrand = computed(() => this.wizard()?.brand || '
|
|
4487
|
+
wizardBrand = computed(() => this.wizard()?.brand || 'PRAXIS UI', ...(ngDevMode ? [{ debugName: "wizardBrand" }] : []));
|
|
4623
4488
|
activeTitle = computed(() => this.activeStep()?.title || this.wizard()?.title || '', ...(ngDevMode ? [{ debugName: "activeTitle" }] : []));
|
|
4624
4489
|
activeSubtitle = computed(() => this.activeStep()?.subtitle || this.wizard()?.subtitle || '', ...(ngDevMode ? [{ debugName: "activeSubtitle" }] : []));
|
|
4625
4490
|
activeDescription = computed(() => this.activeStep()?.description || this.wizard()?.description || '', ...(ngDevMode ? [{ debugName: "activeDescription" }] : []));
|
|
@@ -4795,7 +4660,7 @@ class PraxisWizardFormComponent {
|
|
|
4795
4660
|
></praxis-wizard-cta-bar>
|
|
4796
4661
|
</mat-card>
|
|
4797
4662
|
</section>
|
|
4798
|
-
`, isInline: true, styles: [":host{display:block;min-height:100vh;background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);font-family:\"Source Sans 3\",Segoe UI,system-ui,-apple-system,sans-serif;--praxis-wizard-accent: var(--md-sys-color-primary);--praxis-wizard-accent-on: var(--md-sys-color-on-primary);--praxis-wizard-muted: var(--md-sys-color-on-surface-variant);--praxis-wizard-card-bg: var(--md-sys-color-surface);--praxis-wizard-border: var(--md-sys-color-outline-variant);--pfx-section-gap: 12px;--pfx-form-section-surface: var(--md-sys-color-surface);--pfx-form-stroke: var(--md-sys-color-outline-variant)}.ft-wizard-shell{max-width:700px;margin:0 auto;padding:28px 16px 64px;display:flex;flex-direction:column;gap:12px}.ft-wizard-header{text-align:center;border-bottom:var(--ft-header-border, none);padding-bottom:var(--ft-header-spacing, 0px);margin-bottom:var(--ft-header-spacing, 0px)}.ft-brand{font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Palatino,serif;letter-spacing:.22em;font-size:17px;text-transform:uppercase;color:var(--md-sys-color-on-surface)}.ft-wizard-card{padding:20px 22px 16px;border-radius:var(--ft-radius, 10px);box-shadow:var(--ft-shadow, 0 6px 16px rgba(33, 24, 16, .05));border:1px solid var(--praxis-wizard-border);background:var(--praxis-wizard-card-bg)}:host ::ng-deep .ft-stepper{background:transparent}:host ::ng-deep .ft-stepper .mat-stepper-horizontal{background:transparent}:host ::ng-deep .ft-stepper-content{padding-bottom:12px}:host ::ng-deep .ft-stepper-content .form-section{border-radius:
|
|
4663
|
+
`, isInline: true, styles: [":host{display:block;min-height:100vh;background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);font-family:\"Source Sans 3\",Segoe UI,system-ui,-apple-system,sans-serif;--praxis-wizard-accent: var(--md-sys-color-primary);--praxis-wizard-accent-on: var(--md-sys-color-on-primary);--praxis-wizard-muted: var(--md-sys-color-on-surface-variant);--praxis-wizard-card-bg: var(--md-sys-color-surface);--praxis-wizard-border: var(--md-sys-color-outline-variant);--pfx-section-gap: 12px;--pfx-form-section-surface: var(--md-sys-color-surface);--pfx-form-stroke: var(--md-sys-color-outline-variant)}.ft-wizard-shell{max-width:700px;margin:0 auto;padding:28px 16px 64px;display:flex;flex-direction:column;gap:12px}.ft-wizard-header{text-align:center;border-bottom:var(--ft-header-border, none);padding-bottom:var(--ft-header-spacing, 0px);margin-bottom:var(--ft-header-spacing, 0px)}.ft-brand{font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Palatino,serif;letter-spacing:.22em;font-size:17px;text-transform:uppercase;color:var(--md-sys-color-on-surface)}.ft-wizard-card{padding:20px 22px 16px;border-radius:var(--ft-radius, 10px);box-shadow:var(--ft-shadow, 0 6px 16px rgba(33, 24, 16, .05));border:1px solid var(--praxis-wizard-border);background:var(--praxis-wizard-card-bg)}:host ::ng-deep .ft-stepper{background:transparent}:host ::ng-deep .ft-stepper .mat-stepper-horizontal{background:transparent}:host ::ng-deep .ft-stepper-content{display:grid;gap:10px;padding-bottom:12px}:host ::ng-deep .ft-stepper-content .form-section{border:none!important;border-radius:0;background:transparent;padding:0;box-shadow:none!important}:host ::ng-deep .ft-stepper-content .form-section:focus-within{border-color:var(--pfx-form-stroke);box-shadow:none}:host ::ng-deep .ft-stepper-content .mat-mdc-form-field{width:100%;--mdc-outlined-text-field-container-height: 40px;--mdc-outlined-text-field-container-shape: var(--ft-radius, 4px);--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-focus-outline-color: var(--praxis-wizard-accent)}.ft-card-header h2{margin:0;font-family:var(--ft-font-head, inherit);font-size:1.32rem;font-weight:600;color:var(--md-sys-color-on-surface)}:host ::ng-deep .ft-stepper-content .mat-mdc-form-field-subscript-wrapper{margin-top:4px}:host ::ng-deep .ft-stepper-content .mat-mdc-floating-label,:host ::ng-deep .ft-stepper-content .mat-mdc-form-field-label{font-size:.88rem}:host ::ng-deep .ft-stepper-content .mat-mdc-form-field-hint,:host ::ng-deep .ft-stepper-content .mat-mdc-form-field-error{font-size:.78rem}:host ::ng-deep .ft-stepper-content .mat-mdc-checkbox,:host ::ng-deep .ft-stepper-content .mat-mdc-slide-toggle{margin:4px 0}:host ::ng-deep .ft-stepper-content .mat-mdc-slide-toggle .mdc-form-field,:host ::ng-deep .ft-stepper-content .mat-mdc-checkbox .mdc-form-field{gap:10px}:host ::ng-deep .ft-stepper-content .pdx-checkbox-group-wrapper{display:flex;flex-direction:column;gap:4px}:host ::ng-deep .ft-stepper-content .pdx-checkbox-label{font-size:.82rem;font-weight:600;color:var(--md-sys-color-on-surface);margin-bottom:2px}:host ::ng-deep .ft-stepper-content .pdx-checkbox-options{display:flex;flex-direction:column;gap:4px}:host ::ng-deep .ft-stepper-content .pdx-checkbox-options.pdx-checkbox-horizontal{flex-direction:row;flex-wrap:wrap;gap:12px}:host ::ng-deep .ft-stepper-content .pdx-slide-toggle-wrapper{min-height:32px;padding:0}:host ::ng-deep .ft-stepper-content .mat-mdc-slide-toggle{--mdc-switch-handle-height: 16px;--mdc-switch-handle-width: 16px;--mdc-switch-track-height: 20px;--mdc-switch-track-width: 36px}:host ::ng-deep .ft-stepper-content .pdx-slide-toggle-wrapper mat-slide-toggle{justify-content:space-between}:host ::ng-deep .ft-stepper-content .praxis-dynamic-form{display:block}:host ::ng-deep .ft-stepper-content .form-column{display:grid;align-content:start;gap:10px}:host ::ng-deep .ft-stepper-content .form-row{margin-bottom:0!important}:host ::ng-deep .ft-stepper-content .form-column>:is(.pdx-checkbox-group-wrapper,.pdx-slide-toggle-wrapper)+:is(.pdx-checkbox-group-wrapper,.pdx-slide-toggle-wrapper){padding-top:2px;border-top:1px solid var(--pfx-form-stroke)}:host ::ng-deep .ft-stepper-content .pdx-hint,:host ::ng-deep .ft-stepper-content .pdx-error{font-size:.78rem;color:var(--praxis-wizard-muted, var(--md-sys-color-on-surface-variant))}.ft-card-header{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}.ft-card-header h2{margin:0;font-size:1.32rem;font-weight:600;color:var(--md-sys-color-on-surface)}.ft-card-header p{margin:0;color:var(--praxis-wizard-muted);font-size:.88rem}.ft-card-description{font-size:.84rem}.ft-card-description{color:var(--praxis-wizard-muted);font-size:.88rem}:host ::ng-deep .ft-card-title{font-weight:600;color:var(--md-sys-color-on-surface)}:host ::ng-deep .ft-card-desc{color:var(--praxis-wizard-muted);font-size:.84rem}@media(max-width:600px){.ft-wizard-shell{padding:22px 12px 48px}.ft-wizard-card{padding:16px 14px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: PraxisStepper, selector: "praxis-stepper", inputs: ["stepperId", "componentInstanceId", "config", "selectedIndexInput", "selectedIndex", "disableRippleInput", "editModeEnabled", "labelPosition", "color", "serverValidate", "stepperContext"], outputs: ["selectedIndexChange", "widgetEvent", "stepFormReady", "stepFormValueChange", "animationDone", "selectionChange"] }, { kind: "component", type: PraxisWizardCtaBarComponent, selector: "praxis-wizard-cta-bar", inputs: ["primaryLabel", "primaryDisabled", "secondaryLabel", "showSecondary", "sticky"], outputs: ["primaryClick", "secondaryClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
4799
4664
|
}
|
|
4800
4665
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisWizardFormComponent, decorators: [{
|
|
4801
4666
|
type: Component,
|
|
@@ -4837,7 +4702,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
|
|
|
4837
4702
|
></praxis-wizard-cta-bar>
|
|
4838
4703
|
</mat-card>
|
|
4839
4704
|
</section>
|
|
4840
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;min-height:100vh;background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);font-family:\"Source Sans 3\",Segoe UI,system-ui,-apple-system,sans-serif;--praxis-wizard-accent: var(--md-sys-color-primary);--praxis-wizard-accent-on: var(--md-sys-color-on-primary);--praxis-wizard-muted: var(--md-sys-color-on-surface-variant);--praxis-wizard-card-bg: var(--md-sys-color-surface);--praxis-wizard-border: var(--md-sys-color-outline-variant);--pfx-section-gap: 12px;--pfx-form-section-surface: var(--md-sys-color-surface);--pfx-form-stroke: var(--md-sys-color-outline-variant)}.ft-wizard-shell{max-width:700px;margin:0 auto;padding:28px 16px 64px;display:flex;flex-direction:column;gap:12px}.ft-wizard-header{text-align:center;border-bottom:var(--ft-header-border, none);padding-bottom:var(--ft-header-spacing, 0px);margin-bottom:var(--ft-header-spacing, 0px)}.ft-brand{font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Palatino,serif;letter-spacing:.22em;font-size:17px;text-transform:uppercase;color:var(--md-sys-color-on-surface)}.ft-wizard-card{padding:20px 22px 16px;border-radius:var(--ft-radius, 10px);box-shadow:var(--ft-shadow, 0 6px 16px rgba(33, 24, 16, .05));border:1px solid var(--praxis-wizard-border);background:var(--praxis-wizard-card-bg)}:host ::ng-deep .ft-stepper{background:transparent}:host ::ng-deep .ft-stepper .mat-stepper-horizontal{background:transparent}:host ::ng-deep .ft-stepper-content{padding-bottom:12px}:host ::ng-deep .ft-stepper-content .form-section{border-radius:
|
|
4705
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;min-height:100vh;background:var(--md-sys-color-surface-container-low);color:var(--md-sys-color-on-surface);font-family:\"Source Sans 3\",Segoe UI,system-ui,-apple-system,sans-serif;--praxis-wizard-accent: var(--md-sys-color-primary);--praxis-wizard-accent-on: var(--md-sys-color-on-primary);--praxis-wizard-muted: var(--md-sys-color-on-surface-variant);--praxis-wizard-card-bg: var(--md-sys-color-surface);--praxis-wizard-border: var(--md-sys-color-outline-variant);--pfx-section-gap: 12px;--pfx-form-section-surface: var(--md-sys-color-surface);--pfx-form-stroke: var(--md-sys-color-outline-variant)}.ft-wizard-shell{max-width:700px;margin:0 auto;padding:28px 16px 64px;display:flex;flex-direction:column;gap:12px}.ft-wizard-header{text-align:center;border-bottom:var(--ft-header-border, none);padding-bottom:var(--ft-header-spacing, 0px);margin-bottom:var(--ft-header-spacing, 0px)}.ft-brand{font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Palatino,serif;letter-spacing:.22em;font-size:17px;text-transform:uppercase;color:var(--md-sys-color-on-surface)}.ft-wizard-card{padding:20px 22px 16px;border-radius:var(--ft-radius, 10px);box-shadow:var(--ft-shadow, 0 6px 16px rgba(33, 24, 16, .05));border:1px solid var(--praxis-wizard-border);background:var(--praxis-wizard-card-bg)}:host ::ng-deep .ft-stepper{background:transparent}:host ::ng-deep .ft-stepper .mat-stepper-horizontal{background:transparent}:host ::ng-deep .ft-stepper-content{display:grid;gap:10px;padding-bottom:12px}:host ::ng-deep .ft-stepper-content .form-section{border:none!important;border-radius:0;background:transparent;padding:0;box-shadow:none!important}:host ::ng-deep .ft-stepper-content .form-section:focus-within{border-color:var(--pfx-form-stroke);box-shadow:none}:host ::ng-deep .ft-stepper-content .mat-mdc-form-field{width:100%;--mdc-outlined-text-field-container-height: 40px;--mdc-outlined-text-field-container-shape: var(--ft-radius, 4px);--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-focus-outline-color: var(--praxis-wizard-accent)}.ft-card-header h2{margin:0;font-family:var(--ft-font-head, inherit);font-size:1.32rem;font-weight:600;color:var(--md-sys-color-on-surface)}:host ::ng-deep .ft-stepper-content .mat-mdc-form-field-subscript-wrapper{margin-top:4px}:host ::ng-deep .ft-stepper-content .mat-mdc-floating-label,:host ::ng-deep .ft-stepper-content .mat-mdc-form-field-label{font-size:.88rem}:host ::ng-deep .ft-stepper-content .mat-mdc-form-field-hint,:host ::ng-deep .ft-stepper-content .mat-mdc-form-field-error{font-size:.78rem}:host ::ng-deep .ft-stepper-content .mat-mdc-checkbox,:host ::ng-deep .ft-stepper-content .mat-mdc-slide-toggle{margin:4px 0}:host ::ng-deep .ft-stepper-content .mat-mdc-slide-toggle .mdc-form-field,:host ::ng-deep .ft-stepper-content .mat-mdc-checkbox .mdc-form-field{gap:10px}:host ::ng-deep .ft-stepper-content .pdx-checkbox-group-wrapper{display:flex;flex-direction:column;gap:4px}:host ::ng-deep .ft-stepper-content .pdx-checkbox-label{font-size:.82rem;font-weight:600;color:var(--md-sys-color-on-surface);margin-bottom:2px}:host ::ng-deep .ft-stepper-content .pdx-checkbox-options{display:flex;flex-direction:column;gap:4px}:host ::ng-deep .ft-stepper-content .pdx-checkbox-options.pdx-checkbox-horizontal{flex-direction:row;flex-wrap:wrap;gap:12px}:host ::ng-deep .ft-stepper-content .pdx-slide-toggle-wrapper{min-height:32px;padding:0}:host ::ng-deep .ft-stepper-content .mat-mdc-slide-toggle{--mdc-switch-handle-height: 16px;--mdc-switch-handle-width: 16px;--mdc-switch-track-height: 20px;--mdc-switch-track-width: 36px}:host ::ng-deep .ft-stepper-content .pdx-slide-toggle-wrapper mat-slide-toggle{justify-content:space-between}:host ::ng-deep .ft-stepper-content .praxis-dynamic-form{display:block}:host ::ng-deep .ft-stepper-content .form-column{display:grid;align-content:start;gap:10px}:host ::ng-deep .ft-stepper-content .form-row{margin-bottom:0!important}:host ::ng-deep .ft-stepper-content .form-column>:is(.pdx-checkbox-group-wrapper,.pdx-slide-toggle-wrapper)+:is(.pdx-checkbox-group-wrapper,.pdx-slide-toggle-wrapper){padding-top:2px;border-top:1px solid var(--pfx-form-stroke)}:host ::ng-deep .ft-stepper-content .pdx-hint,:host ::ng-deep .ft-stepper-content .pdx-error{font-size:.78rem;color:var(--praxis-wizard-muted, var(--md-sys-color-on-surface-variant))}.ft-card-header{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}.ft-card-header h2{margin:0;font-size:1.32rem;font-weight:600;color:var(--md-sys-color-on-surface)}.ft-card-header p{margin:0;color:var(--praxis-wizard-muted);font-size:.88rem}.ft-card-description{font-size:.84rem}.ft-card-description{color:var(--praxis-wizard-muted);font-size:.88rem}:host ::ng-deep .ft-card-title{font-weight:600;color:var(--md-sys-color-on-surface)}:host ::ng-deep .ft-card-desc{color:var(--praxis-wizard-muted);font-size:.84rem}@media(max-width:600px){.ft-wizard-shell{padding:22px 12px 48px}.ft-wizard-card{padding:16px 14px}}\n"] }]
|
|
4841
4706
|
}], ctorParameters: () => [], propDecorators: { stepper: [{
|
|
4842
4707
|
type: ViewChild,
|
|
4843
4708
|
args: ['stepper', { static: true }]
|