@praxisui/stepper 1.0.0-beta.30 → 1.0.0-beta.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -4
- package/fesm2022/praxisui-stepper.mjs +2895 -118
- package/fesm2022/praxisui-stepper.mjs.map +1 -1
- package/index.d.ts +261 -7
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -44,7 +44,7 @@ import { PraxisStepper } from '@praxisui/stepper';
|
|
|
44
44
|
standalone: true,
|
|
45
45
|
imports: [PraxisStepper],
|
|
46
46
|
template: `
|
|
47
|
-
<praxis-stepper [config]="config" [editModeEnabled]="true"></praxis-stepper>
|
|
47
|
+
<praxis-stepper stepperId="stepper-demo" [config]="config" [editModeEnabled]="true"></praxis-stepper>
|
|
48
48
|
`,
|
|
49
49
|
})
|
|
50
50
|
export class OnboardingComponent {
|
|
@@ -61,6 +61,12 @@ export class OnboardingComponent {
|
|
|
61
61
|
}
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
+
### Persistência
|
|
65
|
+
|
|
66
|
+
- `stepperId` é obrigatório para salvar/carregar a configuração.
|
|
67
|
+
- A chave usada no storage é `stepper-config:<component_id>` (via `ComponentKeyService`).
|
|
68
|
+
- Use `componentInstanceId` quando houver múltiplos steppers com o mesmo `stepperId` na mesma rota.
|
|
69
|
+
|
|
64
70
|
### Publishing the Library
|
|
65
71
|
|
|
66
72
|
Após gerar os artefatos com o Angular Package Format (APF) via `ng build @praxisui/stepper`, você pode publicar no npm:
|
|
@@ -87,7 +93,7 @@ import { PraxisStepper } from '@praxisui/stepper';
|
|
|
87
93
|
selector: 'app-cadastro',
|
|
88
94
|
standalone: true,
|
|
89
95
|
imports: [PraxisStepper],
|
|
90
|
-
template: `<praxis-stepper [config]="config"></praxis-stepper>`,
|
|
96
|
+
template: `<praxis-stepper stepperId="stepper-demo" [config]="config"></praxis-stepper>`,
|
|
91
97
|
})
|
|
92
98
|
export class CadastroComponent {
|
|
93
99
|
config = {
|
|
@@ -116,7 +122,7 @@ export class CadastroComponent {
|
|
|
116
122
|
Validação: em modo `linear`, o avanço bloqueia quando o formulário da etapa atual é inválido. Para validação remota, forneça `(serverValidate)` ao componente.
|
|
117
123
|
|
|
118
124
|
```html
|
|
119
|
-
<praxis-stepper
|
|
125
|
+
<praxis-stepper stepperId="stepper-demo"
|
|
120
126
|
[config]="config"
|
|
121
127
|
[serverValidate]="validateStep"
|
|
122
128
|
></praxis-stepper>
|
|
@@ -134,9 +140,70 @@ validateStep = async ({ step, formGroup, formData }) => {
|
|
|
134
140
|
|
|
135
141
|
- Componentes: `PraxisStepper`, `PraxisStepperConfigEditor`
|
|
136
142
|
- Tipos: `StepperMetadata`, `StepConfig`, `StepOrientation`, `StepHeaderPosition`
|
|
137
|
-
- Eventos: `selectedIndexChange`, `selectionChange`, `widgetEvent`, `animationDone`
|
|
143
|
+
- Eventos: `selectedIndexChange`, `selectionChange`, `widgetEvent`, `animationDone`, `stepFormReady`, `stepFormValueChange`
|
|
138
144
|
- Veja: `projects/praxis-stepper/src/public-api.ts`
|
|
139
145
|
|
|
146
|
+
## Wizard Form (FT-like) — Experimental
|
|
147
|
+
|
|
148
|
+
O `PraxisWizardFormComponent` é um wrapper experimental que traduz um JSON de wizard em `StepperMetadata` + `FormConfig` e aplica um layout inspirado no Financial Times.
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
import { PraxisWizardFormComponent, FT_WIZARD_CONFIG } from '@praxisui/stepper/experimental';
|
|
152
|
+
|
|
153
|
+
@Component({
|
|
154
|
+
selector: 'app-ft-wizard',
|
|
155
|
+
standalone: true,
|
|
156
|
+
imports: [PraxisWizardFormComponent],
|
|
157
|
+
template: `<praxis-wizard-form wizardId="ft-demo" [config]="config" />`,
|
|
158
|
+
})
|
|
159
|
+
export class FtWizardDemo {
|
|
160
|
+
config = FT_WIZARD_CONFIG;
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Notas:
|
|
165
|
+
- `widgetsBeforeForm` permite inserir cards/infos antes do formulário em cada etapa.
|
|
166
|
+
- `blocks` (wizard) permite inserir conteúdos editoriais (benefits/content/notice/divider) antes ou depois do formulário.
|
|
167
|
+
- `zones` (wizard) permite separar blocos em `intro`, `body` e `footer` (mapeados para before/after form).
|
|
168
|
+
- Cada bloco pode definir `id` (string) para gerar `blockId` estável em runtime; sem `id`, o fallback usa índice posicional.
|
|
169
|
+
- `blocks` e `zones` são mutuamente exclusivos no contrato. Se ambos forem enviados, `zones` tem prioridade no runtime.
|
|
170
|
+
- O wizard faz validação runtime (campos essenciais e exclusividade de `blocks`/`zones`). Em `devMode`, lança erro para facilitar o debug; em produção, emite `console.warn`.
|
|
171
|
+
- Preset visual recomendado para FT-like: `appearance.preset = 'ft-light'` (aplicado automaticamente no wizard).
|
|
172
|
+
|
|
173
|
+
## Tokens de tema (Wizard)
|
|
174
|
+
|
|
175
|
+
O wizard usa **tokens M3** por padrão. Se for necessário sobrescrever algo específico do wizard, use tokens da própria lib, sempre apontando para tokens M3 no tema do host:
|
|
176
|
+
|
|
177
|
+
```scss
|
|
178
|
+
:root {
|
|
179
|
+
--praxis-wizard-bg: var(--md-sys-color-surface-container-low);
|
|
180
|
+
--praxis-wizard-card-bg: var(--md-sys-color-surface);
|
|
181
|
+
--praxis-wizard-border: var(--md-sys-color-outline-variant);
|
|
182
|
+
--praxis-wizard-muted: var(--md-sys-color-on-surface-variant);
|
|
183
|
+
--praxis-wizard-accent: var(--md-sys-color-primary);
|
|
184
|
+
--praxis-wizard-accent-on: var(--md-sys-color-on-primary);
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Tokens disponíveis:
|
|
189
|
+
- `--praxis-wizard-bg`
|
|
190
|
+
- `--praxis-wizard-card-bg`
|
|
191
|
+
- `--praxis-wizard-border`
|
|
192
|
+
- `--praxis-wizard-muted`
|
|
193
|
+
- `--praxis-wizard-accent`
|
|
194
|
+
- `--praxis-wizard-accent-on`
|
|
195
|
+
- A persistência de progresso e preferências usa `CONFIG_STORAGE` (localStorage por padrão).
|
|
196
|
+
- JSON Schema: `projects/praxis-stepper/src/lib/wizard/praxis-wizard-form.schema.json`.
|
|
197
|
+
- Personalização de cor do stepper (sem hardcode): ajuste `--praxis-wizard-accent` no host ou em `:root` para controlar o estado ativo/concluído.
|
|
198
|
+
- Para evitar `::ng-deep`, use `stepperClass` e `contentClass` no metadata e aplique estilos em um stylesheet global do app (ou em presets internos da lib).
|
|
199
|
+
- O import `@praxisui/stepper/experimental` é resolvido via `tsconfig` no workspace e não faz parte do pacote público publicado.
|
|
200
|
+
|
|
201
|
+
```scss
|
|
202
|
+
:root {
|
|
203
|
+
--praxis-wizard-accent: var(--md-sys-color-primary);
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
140
207
|
# Praxis Stepper — Guia de Estilos e Ícones
|
|
141
208
|
|
|
142
209
|
Este guia explica como personalizar estilos (tokens) e ícones do cabeçalho do stepper em apps que consomem a lib `@praxisui/stepper`.
|