@orechio/platform-angular 0.8.0 → 0.8.1
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/{orechio-platform-angular-account-initial-branch.page-C8a1eU3L.mjs → orechio-platform-angular-account-initial-branch.page-BY2cxcxd.mjs} +6 -1
- package/fesm2022/orechio-platform-angular-account-initial-branch.page-BY2cxcxd.mjs.map +1 -0
- package/fesm2022/orechio-platform-angular-account.mjs +1 -1
- package/package.json +1 -1
- package/fesm2022/orechio-platform-angular-account-initial-branch.page-C8a1eU3L.mjs.map +0 -1
|
@@ -3,6 +3,7 @@ import { inject, signal, ChangeDetectionStrategy, Component } from '@angular/cor
|
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
5
|
import { Router } from '@angular/router';
|
|
6
|
+
import { SessionStore } from '@orechio/platform-angular';
|
|
6
7
|
import { A as AccountClient } from './orechio-platform-angular-account-account-client-mPl0tzMg.mjs';
|
|
7
8
|
import { ORECHIO_ACCOUNT_CONFIG } from './orechio-platform-angular-account.mjs';
|
|
8
9
|
|
|
@@ -10,6 +11,7 @@ class InitialBranchPage {
|
|
|
10
11
|
router = inject(Router);
|
|
11
12
|
client = inject(AccountClient);
|
|
12
13
|
config = inject(ORECHIO_ACCOUNT_CONFIG);
|
|
14
|
+
session = inject(SessionStore);
|
|
13
15
|
rotulo = this.config.branchLabel;
|
|
14
16
|
nome = '';
|
|
15
17
|
enviando = signal(false, /* @ts-ignore */
|
|
@@ -38,6 +40,9 @@ class InitialBranchPage {
|
|
|
38
40
|
this.erro.set(null);
|
|
39
41
|
this.client.createInitialBranch(nome).subscribe({
|
|
40
42
|
next: async (resultado) => {
|
|
43
|
+
// A sessão em memória ainda diz `provisioningRequired: true`, e agora é falsa. O pacote
|
|
44
|
+
// só a descarta; quem relê é o host, pela guarda (sessão vazia = "desconhecida").
|
|
45
|
+
this.session.clear();
|
|
41
46
|
// O pacote entrega o resultado e sai. Quem decide para onde ir é o host —
|
|
42
47
|
// `nextStep` é repassado inteiro, sem interpretação (ADR-019 §3).
|
|
43
48
|
const destino = this.config.onCompleted(resultado);
|
|
@@ -118,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImpor
|
|
|
118
123
|
}] });
|
|
119
124
|
|
|
120
125
|
export { InitialBranchPage };
|
|
121
|
-
//# sourceMappingURL=orechio-platform-angular-account-initial-branch.page-
|
|
126
|
+
//# sourceMappingURL=orechio-platform-angular-account-initial-branch.page-BY2cxcxd.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orechio-platform-angular-account-initial-branch.page-BY2cxcxd.mjs","sources":["../../../projects/platform-angular/account/src/pages/initial-branch.page.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { ProblemDetails, SessionStore } from '@orechio/platform-angular';\r\nimport { AccountClient } from '../account-client';\r\nimport { ORECHIO_ACCOUNT_CONFIG } from '../account-config';\r\n\r\n@Component({\r\n selector: 'orechio-account-initial-branch',\r\n standalone: true,\r\n imports: [FormsModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n <section class=\"orechio-account\">\r\n <ng-content select=\"[orechioAccountBrand]\"></ng-content>\r\n\r\n <h1>Configure sua primeira {{ rotulo }}</h1>\r\n <p class=\"orechio-account__muted\">\r\n É onde seus lançamentos vão nascer. Dá para criar outras depois.\r\n </p>\r\n\r\n <form (ngSubmit)=\"enviar()\">\r\n <label for=\"orechio-account-branch-name\">Nome da {{ rotulo }}</label>\r\n <input\r\n id=\"orechio-account-branch-name\"\r\n name=\"nome\"\r\n type=\"text\"\r\n autocomplete=\"organization\"\r\n [(ngModel)]=\"nome\"\r\n [disabled]=\"enviando()\"\r\n required\r\n />\r\n\r\n @if (erro()) {\r\n <p class=\"orechio-account__error\">{{ mensagemDeErro() }}</p>\r\n }\r\n\r\n <button type=\"submit\" [disabled]=\"enviando() || !nome.trim()\">\r\n {{ enviando() ? 'Criando…' : 'Concluir' }}\r\n </button>\r\n </form>\r\n </section>\r\n `,\r\n styles: `\r\n .orechio-account {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--orechio-space-3, 0.75rem);\r\n max-width: 28rem;\r\n margin: 0 auto;\r\n padding: var(--orechio-space-6, 1.5rem);\r\n color: var(--orechio-color-text, inherit);\r\n font-family: var(--orechio-font-body, inherit);\r\n }\r\n .orechio-account form { display: flex; flex-direction: column; gap: var(--orechio-space-2, 0.5rem); }\r\n .orechio-account__muted { color: var(--orechio-color-text-muted, #666); }\r\n .orechio-account__error { color: var(--orechio-color-danger, #b00020); }\r\n `,\r\n})\r\nexport class InitialBranchPage {\r\n private readonly router = inject(Router);\r\n private readonly client = inject(AccountClient);\r\n private readonly config = inject(ORECHIO_ACCOUNT_CONFIG);\r\n private readonly session = inject(SessionStore);\r\n\r\n protected readonly rotulo = this.config.branchLabel;\r\n protected nome = '';\r\n protected readonly enviando = signal(false);\r\n protected readonly erro = signal<ProblemDetails | null>(null);\r\n\r\n protected mensagemDeErro(): string {\r\n const code = this.erro()?.code;\r\n if (code === 'onboarding.branch_already_exists') return `Esta ${this.rotulo} já foi criada.`;\r\n if (code === 'session.missing') return 'Sua sessão expirou. Abra o link do e-mail novamente.';\r\n if (code === 'onboarding.not_in_provisioning') return 'Este passo já foi concluído.';\r\n if (code === 'rate_limit_exceeded') return 'Muitas tentativas. Aguarde alguns minutos.';\r\n if (code?.startsWith('branch.')) return 'Escolha um nome válido.';\r\n return 'Não foi possível concluir. Tente novamente.';\r\n }\r\n\r\n protected enviar(): void {\r\n const nome = this.nome.trim();\r\n if (!nome || this.enviando()) return;\r\n\r\n this.enviando.set(true);\r\n this.erro.set(null);\r\n\r\n this.client.createInitialBranch(nome).subscribe({\r\n next: async (resultado) => {\r\n // A sessão em memória ainda diz `provisioningRequired: true`, e agora é falsa. O pacote\r\n // só a descarta; quem relê é o host, pela guarda (sessão vazia = \"desconhecida\").\r\n this.session.clear();\r\n // O pacote entrega o resultado e sai. Quem decide para onde ir é o host —\r\n // `nextStep` é repassado inteiro, sem interpretação (ADR-019 §3).\r\n const destino = this.config.onCompleted(resultado);\r\n await this.router.navigateByUrl(destino, { replaceUrl: true });\r\n },\r\n error: (problema: ProblemDetails) => {\r\n this.erro.set(problema);\r\n this.enviando.set(false);\r\n },\r\n });\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -152,7 +152,7 @@ const ORECHIO_ACCOUNT_ROUTES = [
|
|
|
152
152
|
{
|
|
153
153
|
path: 'onboarding/branch',
|
|
154
154
|
title: 'Primeira unidade',
|
|
155
|
-
loadComponent: () => import('./orechio-platform-angular-account-initial-branch.page-
|
|
155
|
+
loadComponent: () => import('./orechio-platform-angular-account-initial-branch.page-BY2cxcxd.mjs').then((m) => m.InitialBranchPage),
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
path: 'forgot-password',
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orechio-platform-angular-account-initial-branch.page-C8a1eU3L.mjs","sources":["../../../projects/platform-angular/account/src/pages/initial-branch.page.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { ProblemDetails } from '@orechio/platform-angular';\r\nimport { AccountClient } from '../account-client';\r\nimport { ORECHIO_ACCOUNT_CONFIG } from '../account-config';\r\n\r\n@Component({\r\n selector: 'orechio-account-initial-branch',\r\n standalone: true,\r\n imports: [FormsModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `\r\n <section class=\"orechio-account\">\r\n <ng-content select=\"[orechioAccountBrand]\"></ng-content>\r\n\r\n <h1>Configure sua primeira {{ rotulo }}</h1>\r\n <p class=\"orechio-account__muted\">\r\n É onde seus lançamentos vão nascer. Dá para criar outras depois.\r\n </p>\r\n\r\n <form (ngSubmit)=\"enviar()\">\r\n <label for=\"orechio-account-branch-name\">Nome da {{ rotulo }}</label>\r\n <input\r\n id=\"orechio-account-branch-name\"\r\n name=\"nome\"\r\n type=\"text\"\r\n autocomplete=\"organization\"\r\n [(ngModel)]=\"nome\"\r\n [disabled]=\"enviando()\"\r\n required\r\n />\r\n\r\n @if (erro()) {\r\n <p class=\"orechio-account__error\">{{ mensagemDeErro() }}</p>\r\n }\r\n\r\n <button type=\"submit\" [disabled]=\"enviando() || !nome.trim()\">\r\n {{ enviando() ? 'Criando…' : 'Concluir' }}\r\n </button>\r\n </form>\r\n </section>\r\n `,\r\n styles: `\r\n .orechio-account {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--orechio-space-3, 0.75rem);\r\n max-width: 28rem;\r\n margin: 0 auto;\r\n padding: var(--orechio-space-6, 1.5rem);\r\n color: var(--orechio-color-text, inherit);\r\n font-family: var(--orechio-font-body, inherit);\r\n }\r\n .orechio-account form { display: flex; flex-direction: column; gap: var(--orechio-space-2, 0.5rem); }\r\n .orechio-account__muted { color: var(--orechio-color-text-muted, #666); }\r\n .orechio-account__error { color: var(--orechio-color-danger, #b00020); }\r\n `,\r\n})\r\nexport class InitialBranchPage {\r\n private readonly router = inject(Router);\r\n private readonly client = inject(AccountClient);\r\n private readonly config = inject(ORECHIO_ACCOUNT_CONFIG);\r\n\r\n protected readonly rotulo = this.config.branchLabel;\r\n protected nome = '';\r\n protected readonly enviando = signal(false);\r\n protected readonly erro = signal<ProblemDetails | null>(null);\r\n\r\n protected mensagemDeErro(): string {\r\n const code = this.erro()?.code;\r\n if (code === 'onboarding.branch_already_exists') return `Esta ${this.rotulo} já foi criada.`;\r\n if (code === 'session.missing') return 'Sua sessão expirou. Abra o link do e-mail novamente.';\r\n if (code === 'onboarding.not_in_provisioning') return 'Este passo já foi concluído.';\r\n if (code === 'rate_limit_exceeded') return 'Muitas tentativas. Aguarde alguns minutos.';\r\n if (code?.startsWith('branch.')) return 'Escolha um nome válido.';\r\n return 'Não foi possível concluir. Tente novamente.';\r\n }\r\n\r\n protected enviar(): void {\r\n const nome = this.nome.trim();\r\n if (!nome || this.enviando()) return;\r\n\r\n this.enviando.set(true);\r\n this.erro.set(null);\r\n\r\n this.client.createInitialBranch(nome).subscribe({\r\n next: async (resultado) => {\r\n // O pacote entrega o resultado e sai. Quem decide para onde ir é o host —\r\n // `nextStep` é repassado inteiro, sem interpretação (ADR-019 §3).\r\n const destino = this.config.onCompleted(resultado);\r\n await this.router.navigateByUrl(destino, { replaceUrl: true });\r\n },\r\n error: (problema: ProblemDetails) => {\r\n this.erro.set(problema);\r\n this.enviando.set(false);\r\n },\r\n });\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|