@trismegisto/spine 3.2.0 → 3.3.0

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.
Files changed (27) hide show
  1. package/fesm2022/{trismegisto-spine-auto-service-apps.usage-po9Ds_SU.mjs → trismegisto-spine-auto-service-apps.usage-C0F_MlCo.mjs} +3 -3
  2. package/fesm2022/{trismegisto-spine-auto-service-apps.usage-po9Ds_SU.mjs.map → trismegisto-spine-auto-service-apps.usage-C0F_MlCo.mjs.map} +1 -1
  3. package/fesm2022/{trismegisto-spine-auto-service-auto-service-client.component-DzmlpLPu.mjs → trismegisto-spine-auto-service-auto-service-client.component-IATeedbr.mjs} +8 -3
  4. package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-IATeedbr.mjs.map +1 -0
  5. package/fesm2022/{trismegisto-spine-auto-service-auto-service.component-C4FBAefe.mjs → trismegisto-spine-auto-service-auto-service.component-DGrs_Jvw.mjs} +8 -3
  6. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DGrs_Jvw.mjs.map +1 -0
  7. package/fesm2022/{trismegisto-spine-auto-service-client.usage-B16r3IHk.mjs → trismegisto-spine-auto-service-client.usage-C_2zBCRN.mjs} +3 -2
  8. package/fesm2022/{trismegisto-spine-auto-service-client.usage-B16r3IHk.mjs.map → trismegisto-spine-auto-service-client.usage-C_2zBCRN.mjs.map} +1 -1
  9. package/fesm2022/{trismegisto-spine-auto-service-home.usage-D6cb4B3Z.mjs → trismegisto-spine-auto-service-home.usage-DWYGtngX.mjs} +3 -3
  10. package/fesm2022/{trismegisto-spine-auto-service-home.usage-D6cb4B3Z.mjs.map → trismegisto-spine-auto-service-home.usage-DWYGtngX.mjs.map} +1 -1
  11. package/fesm2022/trismegisto-spine-auto-service.mjs +5 -5
  12. package/fesm2022/trismegisto-spine-layout.mjs +14 -15
  13. package/fesm2022/trismegisto-spine-layout.mjs.map +1 -1
  14. package/fesm2022/trismegisto-spine-notification.mjs +27 -24
  15. package/fesm2022/trismegisto-spine-notification.mjs.map +1 -1
  16. package/fesm2022/trismegisto-spine-shell.mjs +5 -6
  17. package/fesm2022/trismegisto-spine-shell.mjs.map +1 -1
  18. package/fesm2022/trismegisto-spine.mjs +3 -3
  19. package/fesm2022/trismegisto-spine.mjs.map +1 -1
  20. package/package.json +6 -6
  21. package/types/trismegisto-spine-layout.d.ts +4 -3
  22. package/types/trismegisto-spine-layout.d.ts.map +1 -1
  23. package/types/trismegisto-spine-notification.d.ts +13 -12
  24. package/types/trismegisto-spine-notification.d.ts.map +1 -1
  25. package/types/trismegisto-spine-shell.d.ts.map +1 -1
  26. package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-DzmlpLPu.mjs.map +0 -1
  27. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-C4FBAefe.mjs.map +0 -1
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@trismegisto/spine",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=21.0.0",
7
7
  "@angular/core": ">=21.0.0",
8
8
  "@angular/router": ">=21.0.0",
9
9
  "@orfeu/angular": "^1.0.0",
10
- "@trismegisto/angular": "^3.2.0",
11
- "@trismegisto/core": "^3.2.0",
12
- "@trismegisto/icons": "^3.2.0",
13
- "@trismegisto/primitives": "^3.2.0",
14
- "@trismegisto/tokens": "^3.2.0",
10
+ "@trismegisto/angular": "^3.3.0",
11
+ "@trismegisto/core": "^3.3.0",
12
+ "@trismegisto/icons": "^3.3.0",
13
+ "@trismegisto/primitives": "^3.3.0",
14
+ "@trismegisto/tokens": "^3.3.0",
15
15
  "rxjs": "^7.0.0",
16
16
  "@apollo/client": "^4.2.0",
17
17
  "apollo-angular": "^14.2.0",
@@ -269,8 +269,9 @@ declare class SpineWorkspaceNavService {
269
269
  * (`hm-sidebar` fixa + `.main` com `hm-workspace`). **Sem barra de breadcrumb própria** — isso
270
270
  * era resíduo do spine antigo (`spine-navigation`), removido: o docs não tem uma, a navegação
271
271
  * inteira mora na sidebar. Entre o header e o corpo fica o `spine-connection-banner` (aviso de conexão
272
- * do `@orfeu/angular`, vazio quando `online`). Os avisos ficam no `spine-notification` (`NotificationService`) e
273
- * no `hm-toast-stack` (`HermesToastService`), os dois montados aqui: o app não monta nenhum.
272
+ * do `@orfeu/angular`, vazio quando `online`). Todos os avisos (os do `NotificationService`,
273
+ * os do `SpineNoticesService` e os do próprio app) saem no `hm-toast-stack` (`HermesToastService`), montado aqui: o
274
+ * app não monta nenhum.
274
275
  *
275
276
  * O `<router-outlet>` que sobra aqui é só pra `/no-permission` (a única rota do shell com
276
277
  * `component` de verdade — o resto da árvore do backend nunca passa pelo `Router` pra renderizar,
@@ -912,7 +913,7 @@ declare function stable(value: unknown): string;
912
913
  /** Um aviso do app (`SpineNoticesService.notify`). */
913
914
  interface SpineNotice {
914
915
  title: string;
915
- /** Detalhe (segunda linha do aviso do navegador; no aviso da tela vai depois do título). */
916
+ /** Detalhe (segunda linha do aviso do navegador; no aviso da tela é o texto, com `title` no título). */
916
917
  body?: string;
917
918
  /** Caminho interno (`/solicitacoes/42`) aberto pelo "Abrir" do aviso e pelo clique no aviso do navegador. */
918
919
  url?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"trismegisto-spine-layout.d.ts","sources":["../../../projects/ui/layout/src/onboarding/onboarding.service.ts","../../../projects/ui/layout/src/news/news.service.ts","../../../projects/ui/layout/src/shortcuts/shortcut.service.ts","../../../projects/ui/layout/src/workspace/spine-workspace-nav.service.ts","../../../projects/ui/layout/src/layout.component.ts","../../../projects/ui/layout/src/header/header.component.ts","../../../projects/ui/layout/src/header/app-launcher.component.ts","../../../projects/ui/layout/src/header/brand.component.ts","../../../projects/ui/layout/src/brand.token.ts","../../../projects/ui/layout/src/sidebar/sidebar.component.ts","../../../projects/ui/layout/src/connection/connection-banner.component.ts","../../../projects/ui/layout/src/logout/logout.service.ts","../../../projects/ui/layout/src/onboarding/onboarding-overlay.component.ts","../../../projects/ui/layout/src/shortcuts/shortcuts-cheatsheet.component.ts","../../../projects/ui/layout/src/settings/settings.service.ts","../../../projects/ui/layout/src/account-preferences/account-preferences.service.ts","../../../projects/ui/layout/src/notices/notices.service.ts","../../../projects/ui/layout/src/settings/settings-panel.component.ts","../../../projects/ui/layout/src/settings/app-tokens.service.ts","../../../projects/ui/layout/src/settings/my-groups.service.ts","../../../projects/ui/layout/src/settings/account-security.service.ts","../../../projects/ui/layout/src/settings/ai-agent.component.ts","../../../projects/ui/layout/src/features/spine-features.ts","../../../projects/ui/layout/src/idle/idle.service.ts","../../../projects/ui/layout/src/idle/idle-warning.component.ts","../../../projects/ui/layout/src/start-page/start-page.service.ts","../../../projects/ui/layout/src/docs/docs.service.ts","../../../projects/ui/layout/src/news/news.component.ts","../../../projects/ui/layout/src/docs/docs-modal.component.ts","../../../projects/ui/layout/src/docs/markdown.component.ts","../../../projects/ui/layout/src/docs/markdown-sanitize.ts"],"mappings":"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","names":[]}
1
+ {"version":3,"file":"trismegisto-spine-layout.d.ts","sources":["../../../projects/ui/layout/src/onboarding/onboarding.service.ts","../../../projects/ui/layout/src/news/news.service.ts","../../../projects/ui/layout/src/shortcuts/shortcut.service.ts","../../../projects/ui/layout/src/workspace/spine-workspace-nav.service.ts","../../../projects/ui/layout/src/layout.component.ts","../../../projects/ui/layout/src/header/header.component.ts","../../../projects/ui/layout/src/header/app-launcher.component.ts","../../../projects/ui/layout/src/header/brand.component.ts","../../../projects/ui/layout/src/brand.token.ts","../../../projects/ui/layout/src/sidebar/sidebar.component.ts","../../../projects/ui/layout/src/connection/connection-banner.component.ts","../../../projects/ui/layout/src/logout/logout.service.ts","../../../projects/ui/layout/src/onboarding/onboarding-overlay.component.ts","../../../projects/ui/layout/src/shortcuts/shortcuts-cheatsheet.component.ts","../../../projects/ui/layout/src/settings/settings.service.ts","../../../projects/ui/layout/src/account-preferences/account-preferences.service.ts","../../../projects/ui/layout/src/notices/notices.service.ts","../../../projects/ui/layout/src/settings/settings-panel.component.ts","../../../projects/ui/layout/src/settings/app-tokens.service.ts","../../../projects/ui/layout/src/settings/my-groups.service.ts","../../../projects/ui/layout/src/settings/account-security.service.ts","../../../projects/ui/layout/src/settings/ai-agent.component.ts","../../../projects/ui/layout/src/features/spine-features.ts","../../../projects/ui/layout/src/idle/idle.service.ts","../../../projects/ui/layout/src/idle/idle-warning.component.ts","../../../projects/ui/layout/src/start-page/start-page.service.ts","../../../projects/ui/layout/src/docs/docs.service.ts","../../../projects/ui/layout/src/news/news.component.ts","../../../projects/ui/layout/src/docs/docs-modal.component.ts","../../../projects/ui/layout/src/docs/markdown.component.ts","../../../projects/ui/layout/src/docs/markdown-sanitize.ts"],"mappings":"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","names":[]}
@@ -1,7 +1,5 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import * as i0 from '@angular/core';
3
- import { OnInit, ChangeDetectorRef } from '@angular/core';
4
- import { AlertVariant } from '@trismegisto/angular';
5
3
 
6
4
  declare enum AlertType {
7
5
  INFO = "info",
@@ -21,8 +19,15 @@ interface Notification {
21
19
  type NotificationInput = Omit<Notification, 'hermesAlertType' | 'expirer'> & {
22
20
  hermesAlertType: AlertType | number;
23
21
  };
22
+ /**
23
+ * Avisos de resposta (envelope `{ status, message }` dos GraphQL, falha do logout...). Desde a 3.3.0 eles aparecem no
24
+ * mesmo `hm-toast-stack` do `HermesToastService`, junto com os avisos do app (`SpineNoticesService`): antes o
25
+ * `spine-notification` desenhava uma coluna própria de `hm-alert` no mesmo canto, por cima dos toasts.
26
+ * `notifications$` continua publicando a lista (com a expiração de cada um) para quem já lia.
27
+ */
24
28
  declare class NotificationService {
25
29
  private readonly text;
30
+ private readonly toast;
26
31
  private _notifications;
27
32
  readonly notifications$: Observable<Notification[]>;
28
33
  /** Relógio da expiração: só corre enquanto há notificação na tela (antes era um `setInterval` eterno,
@@ -43,16 +48,12 @@ declare class NotificationService {
43
48
  static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
44
49
  }
45
50
 
46
- /** `AlertType.DANGER` (nome do spine antigo, preservado na API pública) mapeia pra `'error'`
47
- * no `AlertVariant` do DS novo — os outros 3 valores já coincidem 1:1. */
48
- declare function toAlertVariant(type: AlertType): AlertVariant;
49
- declare class NotificationComponent implements OnInit {
50
- notificationService: NotificationService;
51
- private cdr;
52
- notifications: Notification[];
53
- protected readonly toAlertVariant: typeof toAlertVariant;
54
- constructor(notificationService: NotificationService, cdr: ChangeDetectorRef);
55
- ngOnInit(): void;
51
+ /**
52
+ * Compatibilidade: os avisos do `NotificationService` saem no `hm-toast-stack` do `HermesToastService` (3.3.0).
53
+ * `<spine-notification>` só monta uma pilha de toasts; se já houver outra na tela (a do `spine-layout`), o serviço
54
+ * escolhe uma e nada aparece em dobro. Em tela nova, use `<hm-toast-stack />` direto.
55
+ */
56
+ declare class NotificationComponent {
56
57
  static ɵfac: i0.ɵɵFactoryDeclaration<NotificationComponent, never>;
57
58
  static ɵcmp: i0.ɵɵComponentDeclaration<NotificationComponent, "spine-notification", never, {}, {}, never, never, true, never>;
58
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trismegisto-spine-notification.d.ts","sources":["../../../projects/ui/notification/src/notification.types.ts","../../../projects/ui/notification/src/notification.service.ts","../../../projects/ui/notification/src/notification.component.ts"],"mappings":";;;;;AAAA,aAAY,SAAS;AACnB;AACA;AACA;AACA;AACD;UAEgB,YAAY;;;qBAGV,SAAS;;;;AAI3B;;ACRK,KAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY;AAC/C,qBAAiB,SAAS;;AAG5B,cACa,mBAAmB;AAC9B;;AAEA,6BAAgC,UAAU,CAAC,YAAY;AAEvD;AAC+E;;;AAO/E;;;;AAIG;AACH,sCAAkC,SAAS;AAO3C,kCAA8B,iBAAiB;AAa/C;AASA;AASA;yCAxDW,mBAAmB;6CAAnB,mBAAmB;AA4D/B;;ACjED;AAC0E;AAC1E,iBAAS,cAAc,OAAO,SAAS,GAAG,YAAY;AAItD,cAOa,qBAAsB,YAAW,MAAM;AAK/B,yBAAqB,mBAAmB;AAAE;mBAJ9C,YAAY;AAE3B,8CAAiC,cAAA;AAEd,qCAAqB,mBAAmB,OAAe,iBAAiB;AAE3F;yCAPW,qBAAqB;2CAArB,qBAAqB;AAajC;;","names":[]}
1
+ {"version":3,"file":"trismegisto-spine-notification.d.ts","sources":["../../../projects/ui/notification/src/notification.types.ts","../../../projects/ui/notification/src/notification.service.ts","../../../projects/ui/notification/src/notification.component.ts"],"mappings":";;;AAAA,aAAY,SAAS;AACnB;AACA;AACA;AACA;AACD;UAEgB,YAAY;;;qBAGV,SAAS;;;;AAI3B;;ACDK,KAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY;AAC/C,qBAAiB,SAAS;;AAG5B;;;;;AAKG;AACH,cACa,mBAAmB;AAC9B;AACA;;AAEA,6BAAgC,UAAU,CAAC,YAAY;AAEvD;AAC+E;;;AAO/E;;;;AAIG;AACH,sCAAkC,SAAS;AAO3C,kCAA8B,iBAAiB;AAc/C;AASA;AASA;yCA1DW,mBAAmB;6CAAnB,mBAAmB;AA8D/B;;ACnFD;;;;AAIG;AACH,cAMa,qBAAqB;yCAArB,qBAAqB;2CAArB,qBAAqB;AAAG;;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"trismegisto-spine-shell.d.ts","sources":["../../../projects/ui/shell/src/app.routes.ts","../../../projects/ui/shell/src/public.routes.ts","../../../projects/ui/shell/src/private.routes.ts","../../../projects/ui/shell/src/base-components.ts","../../../projects/ui/shell/src/provide-shell.ts","../../../projects/ui/shell/src/public/callback.component.ts","../../../projects/ui/shell/src/public/login.component.ts","../../../projects/ui/shell/src/public/loggedout/loggedout.component.ts","../../../projects/ui/shell/src/templates/no-rights/no-rights.component.ts","../../../projects/ui/shell/src/templates/blocked/blocked.component.ts","../../../projects/ui/shell/src/templates/loading-page/loading-page.component.ts"],"mappings":";;;;;;;;AAMA,cAAa,UAAU,EAAE,MAUxB;;ACVD,cAAa,aAAa,EAAE,MAa3B;;ACfD;;;;;;;;;AASG;AACH,cAAa,cAAc,EAAE,MAO5B;;ACnBD;;;;;;;;;;AAUG;AACH,cAAa,eAAe,EAAE,cAAc;;UCP3B,YAAY;AAC3B,oBAAgB,cAAc;kBAChB,WAAW;AAC1B;AAED,iBAAgB,YAAY,WAAU,YAAiB,GAAG,oBAAoB;;ACD9E;;;;;;;;;;AAUG;AACH,cAoBa,iBAAiB;;;;;;;;;;AAC6B;AACzD;AACA;AACA;AACA;AACA;;AAGA,+BAAyBA,EAAA,CAAA,cAAA;;AAEzB,mBAAe,OAAO;;;AA4BtB;;;;AAIG;;;yCA3CQ,iBAAiB;2CAAjB,iBAAiB;AAsD7B;;AC3FD,cAMa,cAAe,YAAW,MAAM;AAEzC;AACA;AACA;wBAFgB,MAAM,QACR,oBAAoB,QACpB,WAAW;AAG3B;iBAEe,OAAA;;AAYf;yCArBW,cAAc;2CAAd,cAAc;AAgC1B;;ACtCD,cAOa,kBAAkB;AACjB;AAAQ,sCAAsB,oBAAoB;;yCADnD,kBAAkB;2CAAlB,kBAAkB;AAG9B;;ACRD,cAOa,iBAAkB,YAAW,MAAM;AAGlC;;;;;AAF4C;AAEpC,6BAAa,WAAW;AAK5C;yCARW,iBAAiB;2CAAjB,iBAAiB;AAe7B;;ACpBD;;;;;;;AAOG;AACH,cAoBa,gBAAiB,YAAW,MAAM;;;;;AACW;AACxD;;AAOA;AAMA;;;yCAfW,gBAAgB;2CAAhB,gBAAgB;AAqB5B;;ACvDD,cAOa,oBAAoB;yCAApB,oBAAoB;2CAApB,oBAAoB;AAAG;;","names":["_angular_core"]}
1
+ {"version":3,"file":"trismegisto-spine-shell.d.ts","sources":["../../../projects/ui/shell/src/app.routes.ts","../../../projects/ui/shell/src/public.routes.ts","../../../projects/ui/shell/src/private.routes.ts","../../../projects/ui/shell/src/base-components.ts","../../../projects/ui/shell/src/provide-shell.ts","../../../projects/ui/shell/src/public/callback.component.ts","../../../projects/ui/shell/src/public/login.component.ts","../../../projects/ui/shell/src/public/loggedout/loggedout.component.ts","../../../projects/ui/shell/src/templates/no-rights/no-rights.component.ts","../../../projects/ui/shell/src/templates/blocked/blocked.component.ts","../../../projects/ui/shell/src/templates/loading-page/loading-page.component.ts"],"mappings":";;;;;;;;AAMA,cAAa,UAAU,EAAE,MAUxB;;ACVD,cAAa,aAAa,EAAE,MAa3B;;ACfD;;;;;;;;;AASG;AACH,cAAa,cAAc,EAAE,MAO5B;;ACnBD;;;;;;;;;;AAUG;AACH,cAAa,eAAe,EAAE,cAAc;;UCP3B,YAAY;AAC3B,oBAAgB,cAAc;kBAChB,WAAW;AAC1B;AAED,iBAAgB,YAAY,WAAU,YAAiB,GAAG,oBAAoB;;ACD9E;;;;;;;;;;AAUG;AACH,cAoBa,iBAAiB;;;;;;;;;;AAC6B;AACzD;AACA;AACA;AACA;AACA;;AAGA,+BAAyBA,EAAA,CAAA,cAAA;;AAEzB,mBAAe,OAAO;;;AA4BtB;;;;AAIG;;;yCA3CQ,iBAAiB;2CAAjB,iBAAiB;AAsD7B;;AC3FD,cAMa,cAAe,YAAW,MAAM;AAEzC;AACA;AACA;wBAFgB,MAAM,QACR,oBAAoB,QACpB,WAAW;AAG3B;iBAEe,OAAA;;AAYf;yCArBW,cAAc;2CAAd,cAAc;AAgC1B;;ACtCD,cAOa,kBAAkB;AACjB;AAAQ,sCAAsB,oBAAoB;;yCADnD,kBAAkB;2CAAlB,kBAAkB;AAG9B;;ACRD,cAOa,iBAAkB,YAAW,MAAM;AAGlC;;;;;AAF4C;AAEpC,6BAAa,WAAW;AAK5C;yCARW,iBAAiB;2CAAjB,iBAAiB;AAe7B;;ACrBD;;;;;;;AAOG;AACH,cAoBa,gBAAiB,YAAW,MAAM;;;;;AACW;AACxD;;AAOA;AAMA;;;yCAfW,gBAAgB;2CAAhB,gBAAgB;AAqB5B;;ACtDD,cAOa,oBAAoB;yCAApB,oBAAoB;2CAApB,oBAAoB;AAAG;;","names":["_angular_core"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"trismegisto-spine-auto-service-auto-service-client.component-DzmlpLPu.mjs","sources":["../../../projects/ui/auto-service/src/tabs/auto-service-routes/route-path.validator.ts","../../../projects/ui/auto-service/src/tabs/auto-service-routes/auto-service-routes.component.ts","../../../projects/ui/auto-service/src/tabs/auto-service-routes/auto-service-routes.component.html","../../../projects/ui/auto-service/src/tabs/auto-service-routers/modals/routers-reorder/auto-service-routers-reorder.component.ts","../../../projects/ui/auto-service/src/tabs/auto-service-routers/modals/routers-reorder/auto-service-routers-reorder.component.html","../../../projects/ui/auto-service/src/tabs/auto-service-routers/auto-service-routers.component.ts","../../../projects/ui/auto-service/src/tabs/auto-service-routers/auto-service-routers.component.html","../../../projects/ui/auto-service/src/tabs/auto-service-access/modals/access-create/auto-service-access-create.component.ts","../../../projects/ui/auto-service/src/tabs/auto-service-access/modals/access-create/auto-service-access-create.component.html","../../../projects/ui/auto-service/src/tabs/auto-service-access/modals/access-guards/auto-service-access-guards.component.ts","../../../projects/ui/auto-service/src/tabs/auto-service-access/modals/access-guards/auto-service-access-guards.component.html","../../../projects/ui/auto-service/src/tabs/auto-service-access/auto-service-access.component.ts","../../../projects/ui/auto-service/src/tabs/auto-service-access/auto-service-access.component.html","../../../projects/ui/auto-service/src/auto-service-client.component.ts","../../../projects/ui/auto-service/src/auto-service-client.component.html"],"sourcesContent":["import { AbstractControl, ValidationErrors } from '@angular/forms';\n\n/**\n * Caminho de UMA rota = um trecho só do endereço (`dashboard`, `ordens-servico`). O `/` entre níveis\n * é o roteador que monta, juntando o caminho de cada rota da composição (header→…→page). Um `/`\n * dentro do caminho (ex.: `laboratorio/dashboard` numa rota só) desalinha a cadeia que o `ViewGuard`\n * resolve por nível e a tela cai no fallback (volta para o início) — achado real, 2026-10-07.\n *\n * Só letras minúsculas e hífen, sem hífen no início/fim nem dois seguidos. Mesma regra do admin-server\n * do Argos (`route-path.ts`), que é quem de fato recusa — aqui é só para avisar antes de enviar.\n */\nexport const ROUTE_PATH_PATTERN = /^[a-z]+(?:-[a-z]+)*$/;\n\n/** Vazio passa (rota \"pasta\", só agrupa o menu); preenchido precisa casar com `ROUTE_PATH_PATTERN`. */\nexport function routePathValidator(control: AbstractControl<string>): ValidationErrors | null {\n const value = control.value ?? '';\n return value === '' || ROUTE_PATH_PATTERN.test(value) ? null : { routePath: true };\n}\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy, inject, computed, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport {\n ButtonComponent, CheckboxComponent, ComboboxComponent, ComboboxOption, CopyButtonComponent, DataGridActionTriggered, DataGridCellDirective,\n DataGridComponent, DataGridRowAction, InputComponent, GridColumn, IconComponent, ModalComponent, TagComponent,\n TextareaComponent,\n} from '@trismegisto/angular';\nimport { HERMES_ICONS } from '@trismegisto/icons/catalog';\nimport { formatMessage } from '@trismegisto/primitives';\nimport { AutoServiceDeleteFeedback } from '../../auto-service-delete';\nimport { AutoServiceService } from '../../auto-service.service';\nimport { SPINE_MESSAGES } from '@trismegisto/spine';\nimport { routePathValidator } from './route-path.validator';\nimport { optionalIdBody, optionalIdValidator } from '../../optional-id.validator';\n\ninterface RouteRow {\n id: string; name: string; display_name?: string; icon?: string; path?: string; info?: string; excludable: boolean;\n /** Cópia de uma rota de template: pertence ao template, o auto-serviço só exibe (o admin-server recusa com 403). */\n templated?: boolean;\n}\n\n@Component({\n selector: 'spine-auto-service-routes',\n standalone: true,\n imports: [\n CommonModule, ReactiveFormsModule, ButtonComponent, CheckboxComponent, ComboboxComponent, IconComponent, InputComponent,\n TextareaComponent, ModalComponent, DataGridComponent, DataGridCellDirective, TagComponent, CopyButtonComponent,\n ],\n templateUrl: './auto-service-routes.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: ['./auto-service-routes.component.scss'],\n})\nexport class AutoServiceRoutesComponent implements OnChanges {\n protected readonly text = inject(SPINE_MESSAGES).autoService;\n /** Telas com estado em campo comum, preenchido depois de `await`: marca a view ao terminar (app sem zone.js). */\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly deletion = inject(AutoServiceDeleteFeedback);\n @Input() clientId = '';\n routes: RouteRow[] = [];\n loading = false;\n showRouteModal = false;\n editingRouteId = '';\n\n /** Id opcional só na criação (mesma rota com o mesmo id em homologação e produção). */\n readonly newId = new FormControl('', { nonNullable: true, validators: [optionalIdValidator] });\n protected readonly idMessages = computed(() => ({ optionalId: this.text.optionalIdInvalid }));\n readonly name = new FormControl('', { nonNullable: true });\n readonly displayName = new FormControl('', { nonNullable: true });\n readonly icon = new FormControl('', { nonNullable: true });\n /** Catálogo inteiro do @trismegisto/icons, em ordem alfabética, cada opção com o próprio ícone — mesmo seletor\n * da tela de rotas do Argos central. */\n readonly iconOptions: readonly ComboboxOption[] = [...HERMES_ICONS]\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((icon) => ({ value: icon.name, label: icon.name, icon: icon.name }));\n readonly path = new FormControl('', { nonNullable: true, validators: [routePathValidator] });\n readonly info = new FormControl('', { nonNullable: true });\n /** Rota protegida (`excludable: false`) é travada aqui: o auto-serviço não libera a exclusão — o\n * admin-server também recusa (403), isto só evita oferecer o que vai ser negado. */\n readonly excludable = new FormControl(true, { nonNullable: true });\n /** Mensagem do erro `routePath` no `hm-input` (chave do validador → texto). */\n protected readonly pathMessages = computed(() => ({ routePath: this.text.pathInvalid }));\n\n constructor(private service: AutoServiceService) {}\n\n readonly rowId = (r: RouteRow) => r.id;\n readonly columns = computed<GridColumn<RouteRow>[]>(() => [\n { key: 'name', title: this.text.colName, value: (r) => r.name, sortable: true },\n { key: 'display_name', title: this.text.colDisplay, value: (r) => r.display_name || '—', sortable: true },\n { key: 'icon', title: this.text.colIcon, value: (r) => r.icon || '—' },\n { key: 'path', title: this.text.colPath, value: (r) => r.path || '—', sortable: true },\n {\n key: 'excludable', title: this.text.colExcludable, sortable: true,\n value: (r) => (r.excludable ? this.text.excludableYes : this.text.excludableNo),\n },\n { key: 'id', title: this.text.colId, value: (r) => r.id },\n ]);\n\n /** Nome acessível do botão de copiar: diz de qual rota é o id. */\n copyIdLabel(r: RouteRow): string {\n return formatMessage(this.text.copyRouteId, { name: r.display_name || r.name });\n }\n // Rota de template não se edita nem se exclui aqui (403 no admin-server); excluir, além disso, só em rota\n // excluível (409). Linha sem ação nenhuma fica sem o kebab.\n readonly rowActions = computed<DataGridRowAction<RouteRow>[]>(() => [\n { id: 'edit', icon: 'pencil', label: this.text.edit, available: (r) => !r.templated },\n {\n id: 'delete', icon: 'trash', label: this.text.delete, danger: true, separatorAbove: true,\n available: (r) => !r.templated && r.excludable,\n confirm: (r) => ({ heading: this.text.confirmDeleteRouteHeading, message: formatMessage(this.text.confirmDeleteRoute, { name: r.display_name || r.name }) }),\n },\n ]);\n\n ngOnChanges(changes: SimpleChanges) { if (changes['clientId']) this.load(); }\n\n async load() {\n if (!this.clientId) { this.routes = []; return; }\n this.loading = true;\n try { const res = await this.service.getWebRoutes(this.clientId); this.routes = res.routes; }\n finally { this.loading = false; this.cdr.markForCheck(); }\n }\n\n private resetForm(r?: RouteRow) {\n this.name.setValue(r?.name ?? '');\n this.displayName.setValue(r?.display_name ?? '');\n this.icon.setValue(r?.icon ?? '');\n this.path.setValue(r?.path ?? '');\n this.info.setValue(r?.info ?? '');\n this.excludable.setValue(r?.excludable ?? true);\n // Protegida só destrava no Argos central. Nova rota (sem `r`) sempre pode escolher.\n if (r && !r.excludable) this.excludable.disable();\n else this.excludable.enable();\n // Sem isso, abrir o modal de novo mostraria o erro do caminho da vez anterior antes de digitar.\n this.path.markAsPristine();\n this.path.markAsUntouched();\n }\n\n /** Editando rota protegida — mostra por que o \"Excluível\" está travado. */\n get excludableLocked(): boolean {\n return this.excludable.disabled;\n }\n\n openCreateRoute() {\n this.editingRouteId = '';\n this.resetForm();\n this.newId.reset('');\n this.showRouteModal = true;\n }\n\n openEditRoute(r: RouteRow) {\n if (r.templated) return;\n this.editingRouteId = r.id;\n this.resetForm(r);\n this.showRouteModal = true;\n }\n\n async saveRoute() {\n // O botão já fica desabilitado; a guarda cobre chamadas diretas (ex.: Enter no form).\n if (!this.name.value || this.path.invalid || (!this.editingRouteId && this.newId.invalid)) return;\n const body = {\n name: this.name.value, display_name: this.displayName.value, icon: this.icon.value,\n path: this.path.value, info: this.info.value, excludable: this.excludable.value,\n };\n if (this.editingRouteId) { await this.service.updateWebRoute(this.clientId, this.editingRouteId, body); }\n else { await this.service.createWebRoute(this.clientId, { ...optionalIdBody('route_id', this.newId.value), ...body }); }\n this.showRouteModal = false;\n await this.load();\n }\n\n async deleteRoute(r: RouteRow) {\n if (r.templated || !r.excludable) return;\n // Já confirmado pelo `confirm` da ação na grade.\n if (await this.deletion.run(() => this.service.deleteWebRoute(this.clientId, r.id))) await this.load();\n }\n\n onAction(e: DataGridActionTriggered<RouteRow>): void {\n if (e.action === 'edit') this.openEditRoute(e.row);\n if (e.action === 'delete') void this.deleteRoute(e.row);\n }\n}\n","<hm-data-grid\n [columns]=\"columns()\"\n [rows]=\"routes\"\n [rowId]=\"rowId\"\n [caption]=\"text.routesCaption\"\n [loading]=\"loading\"\n [rowActions]=\"rowActions()\"\n (actionTriggered)=\"onAction($event)\"\n [emptyMessage]=\"text.noRoutes\"\n>\n <hm-button dataGridActions icon=\"plus\" (clicked)=\"openCreateRoute()\">{{ text.newRoute }}</hm-button>\n <ng-template hmCell=\"name\" let-r>\n <span class=\"name-cell\">\n {{ r.name }}\n <hm-tag *ngIf=\"r.templated\" [name]=\"text.templateTag\" color=\"info\" [title]=\"text.templateLocked\" />\n </span>\n </ng-template>\n <ng-template hmCell=\"icon\" let-r>\n <span class=\"icon-cell\">\n <hm-icon *ngIf=\"r.icon\" [shape]=\"r.icon\"></hm-icon>\n {{ r.icon || '—' }}\n </span>\n </ng-template>\n <!-- UUID da rota: só o botão de copiar (para criar a mesma rota com o mesmo id no outro ambiente). -->\n <ng-template hmCell=\"id\" let-r>\n <hm-copy-button [value]=\"r.id\" [label]=\"copyIdLabel(r)\" [copiedLabel]=\"text.idCopied\" />\n </ng-template>\n</hm-data-grid>\n\n<!-- Modal: criar/editar rota -->\n<hm-modal [open]=\"showRouteModal\" (openChange)=\"showRouteModal = $event\" [heading]=\"editingRouteId ? text.editRoute : text.newRoute\" (closed)=\"showRouteModal = false\">\n <div class=\"form-stack\">\n @if (!editingRouteId) {\n <hm-input [formControl]=\"newId\" [label]=\"text.optionalId\" [placeholder]=\"text.optionalIdPlaceholder\" [hint]=\"text.optionalIdHint\" [messages]=\"idMessages()\" />\n }\n <hm-input [formControl]=\"name\" [label]=\"text.internalName\" />\n <hm-input [formControl]=\"displayName\" [label]=\"text.displayName\" />\n <hm-combobox [options]=\"iconOptions\" [formControl]=\"icon\" [label]=\"text.icon\" [placeholder]=\"text.iconPlaceholder\" />\n <hm-input [formControl]=\"path\" [label]=\"text.path\" [placeholder]=\"text.pathPlaceholder\" [hint]=\"text.pathHint\" [messages]=\"pathMessages()\" />\n <hm-textarea [formControl]=\"info\" [label]=\"text.info\" />\n <hm-checkbox [formControl]=\"excludable\" [label]=\"text.excludable\" />\n <p *ngIf=\"excludableLocked\" class=\"field-note\">{{ text.excludableLocked }}</p>\n </div>\n\n <ng-container footer>\n <hm-button emphasis=\"medium\" (clicked)=\"showRouteModal = false\">{{ text.cancel }}</hm-button>\n <hm-button [disabled]=\"!name.value || path.invalid || (!editingRouteId && newId.invalid)\" (clicked)=\"saveRoute()\">\n {{ editingRouteId ? text.save : text.create }}\n </hm-button>\n </ng-container>\n</hm-modal>\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Injector, Input, OnChanges, Output,\n SimpleChanges, afterNextRender, inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n AlertComponent, ButtonComponent, IconButtonComponent, IconComponent, ModalComponent, ReorderListComponent, ReorderListItem,\n TagComponent,\n} from '@trismegisto/angular';\nimport { SPINE_MESSAGES } from '@trismegisto/spine';\nimport { formatMessage, moveItem, pluralMessage } from '@trismegisto/primitives';\nimport { AutoServiceService, RouterOrderNode, RouterOrderType } from '../../../../auto-service.service';\n\n/** Linha da lista ordenável: o item do `hm-reorder-list` mais o nó da árvore que ele representa. */\ninterface OrderItem extends ReorderListItem { readonly node: RouterOrderNode }\n\n/**\n * Modal \"Reordenar menu\" da aba Roteadores: a mesma ferramenta do Argos central (árvore do menu, ordem\n * por nível de irmãos, `PATCH /routers/reorder` com um grupo `{type, router_ids}` por item), mas navegando\n * pelos níveis em vez de escolher cada nível num combobox. Cada nível alterado guarda a ordem nova até o\n * \"Salvar ordem\", que grava um nível por chamada. Reordena por arrasto (alça do `hm-reorder-list`, que\n * também funciona no teclado) e pelos botões subir/descer de cada linha.\n */\n@Component({\n selector: 'spine-auto-service-routers-reorder',\n standalone: true,\n imports: [CommonModule, AlertComponent, ButtonComponent, IconButtonComponent, IconComponent, ModalComponent, ReorderListComponent, TagComponent],\n templateUrl: './auto-service-routers-reorder.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: ['./auto-service-routers-reorder.component.scss'],\n})\nexport class AutoServiceRoutersReorderComponent implements OnChanges {\n protected readonly messages = inject(SPINE_MESSAGES);\n protected readonly text = this.messages.autoService;\n /** Estado em campo comum, preenchido depois de `await`: marca a view ao terminar (app sem zone.js). */\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n private readonly service = inject(AutoServiceService);\n\n @Input() clientId = '';\n @Input() open = false;\n @Output() openChange = new EventEmitter<boolean>();\n /** Gravou ao menos um nível: quem abriu recarrega o que mostra. */\n @Output() saved = new EventEmitter<void>();\n\n tree: RouterOrderNode[] = [];\n /** Nós abertos, do topo até o nível mostrado (vazio = topo do menu). */\n path: RouterOrderNode[] = [];\n items: OrderItem[] = [];\n loading = false;\n saving = false;\n error = '';\n /** Anúncio da região viva (mover por botão). */\n announcement = '';\n /** Níveis com ordem nova ainda não gravada: o nó pai (`null` = topo) → os irmãos na ordem nova. */\n private readonly pending = new Map<RouterOrderNode | null, RouterOrderNode[]>();\n\n ngOnChanges(changes: SimpleChanges) { if (changes['open'] && this.open) void this.load(); }\n\n get hasChanges(): boolean { return this.pending.size > 0; }\n get parent(): RouterOrderNode | null { return this.path[this.path.length - 1] ?? null; }\n get levelName(): string { return this.parent ? this.nodeName(this.parent) : this.text.reorderRoot; }\n get listLabel(): string { return formatMessage(this.text.reorderListLabel, { name: this.levelName }); }\n\n async load() {\n this.loading = true;\n this.error = '';\n this.pending.clear();\n this.path = [];\n this.tree = [];\n this.items = [];\n try {\n this.tree = (await this.service.getRouterTree(this.clientId)).tree ?? [];\n this.showLevel();\n } catch {\n this.error = this.text.reorderLoadError;\n } finally { this.loading = false; this.cdr.markForCheck(); }\n }\n\n nodeName(n: RouterOrderNode): string { return n.route_display_name || n.route_name; }\n\n typeLabel(type: RouterOrderType): string {\n const t = this.text;\n return { header: t.levelHeader, navigation: t.levelNavigation, menu: t.levelMenu, item: t.levelItem, submenu: t.levelSubmenu, page: t.colPage }[type] ?? type;\n }\n\n childCount(n: RouterOrderNode): string { return pluralMessage(this.text.childCount, n.children.length, this.messages.meta.locale); }\n\n label(key: 'moveUp' | 'moveDown' | 'openLevel', item: OrderItem): string { return formatMessage(this.text[key], { name: item.label }); }\n\n /** Entra no item: passa a ordenar os filhos dele. */\n enter(item: OrderItem) {\n if (!item.node.children.length) return;\n this.path = [...this.path, item.node];\n this.showLevel();\n this.focusFirstHandle();\n }\n\n /** Volta a um nível da trilha (`-1` = topo do menu). */\n goTo(index: number) {\n this.path = this.path.slice(0, index + 1);\n this.showLevel();\n this.focusFirstHandle();\n }\n\n /** Ordem nova vinda do arrasto (ou do teclado na alça) do `hm-reorder-list`. */\n onItemsChange(items: readonly ReorderListItem[]) { this.apply((items as readonly OrderItem[]).map((i) => i.node)); }\n\n /** Botões subir/descer: move uma posição, anuncia e mantém o foco num botão da mesma linha. */\n move(index: number, delta: -1 | 1) {\n const to = index + delta;\n if (to < 0 || to >= this.items.length) return;\n const item = this.items[index];\n this.apply(moveItem(this.items, index, to).map((i) => i.node));\n this.announcement = formatMessage(this.text.movedTo, { name: item.label, position: to + 1, total: this.items.length });\n // A linha muda de lugar no DOM: devolve o foco ao botão clicado (ou ao outro, se este ficou desabilitado).\n const wanted = delta < 0 && to === 0 ? 'down' : delta > 0 && to === this.items.length - 1 ? 'up' : delta < 0 ? 'up' : 'down';\n afterNextRender(() => {\n this.host.nativeElement\n .querySelector<HTMLElement>(`[data-move=\"${wanted}\"][data-item=\"${CSS.escape(item.id)}\"] button`)\n ?.focus();\n }, { injector: this.injector });\n }\n\n async save() {\n if (!this.hasChanges || this.saving) return;\n this.saving = true;\n this.error = '';\n let wrote = false;\n try {\n for (const [parent, siblings] of [...this.pending]) {\n await this.service.reorderRouters(this.clientId, siblings.map((n) => ({ type: n.route_type, router_ids: n.router_ids })));\n this.pending.delete(parent);\n wrote = true;\n }\n this.saved.emit();\n this.close();\n } catch {\n // O que já foi gravado sai da fila; o resto continua pendente para tentar de novo.\n this.error = this.text.reorderSaveError;\n if (wrote) this.saved.emit();\n } finally { this.saving = false; this.cdr.markForCheck(); }\n }\n\n close() { this.open = false; this.openChange.emit(false); }\n\n private siblingsOf(parent: RouterOrderNode | null): RouterOrderNode[] { return parent ? parent.children : this.tree; }\n\n /** Troca os irmãos do nível mostrado pela ordem nova e marca o nível como pendente. */\n private apply(next: RouterOrderNode[]) {\n const parent = this.parent;\n if (parent) parent.children = next; else this.tree = next;\n this.pending.set(parent, next);\n this.showLevel();\n }\n\n private showLevel() {\n this.items = this.siblingsOf(this.parent).map((node) => ({\n id: `${node.route_type}:${node.routed_id}`, label: this.nodeName(node), node,\n }));\n }\n\n private focusFirstHandle() {\n afterNextRender(() => this.host.nativeElement.querySelector<HTMLElement>('.hm-reorder-list__handle')?.focus(), { injector: this.injector });\n }\n}\n","<hm-modal [open]=\"open\" (openChange)=\"open = $event\" [heading]=\"text.reorderTitle\" size=\"large\" (closed)=\"close()\">\n <div class=\"reorder\">\n <p class=\"muted reorder__hint\">{{ text.reorderHint }}</p>\n\n <hm-alert *ngIf=\"error\" variant=\"error\">{{ error }}</hm-alert>\n\n <div *ngIf=\"loading\" class=\"reorder__loading\">{{ text.loading }}</div>\n\n <ng-container *ngIf=\"!loading && tree.length\">\n <!-- Trilha dos níveis abertos: cada degrau anterior volta para aquele nível. -->\n <nav class=\"reorder__path\" [attr.aria-label]=\"text.reorderPath\">\n <ol>\n <li>\n <hm-button *ngIf=\"path.length; else rootCurrent\" emphasis=\"minimal\" size=\"small\" (clicked)=\"goTo(-1)\">{{ text.reorderRoot }}</hm-button>\n <ng-template #rootCurrent><span aria-current=\"location\">{{ text.reorderRoot }}</span></ng-template>\n </li>\n <li *ngFor=\"let node of path; let i = index; let last = last\">\n <hm-icon shape=\"angle\" direction=\"right\" class=\"reorder__sep\" />\n <hm-button *ngIf=\"!last\" emphasis=\"minimal\" size=\"small\" (clicked)=\"goTo(i)\">{{ nodeName(node) }}</hm-button>\n <span *ngIf=\"last\" aria-current=\"location\">{{ nodeName(node) }}</span>\n </li>\n </ol>\n </nav>\n\n <hm-reorder-list [label]=\"listLabel\" [labelHidden]=\"true\" [items]=\"items\" (itemsChange)=\"onItemsChange($event)\" [disabled]=\"saving\">\n <ng-template let-item let-index=\"index\">\n <div class=\"reorder__row\">\n <hm-icon *ngIf=\"item.node.route_icon\" [shape]=\"item.node.route_icon\" class=\"reorder__icon\" />\n <span class=\"reorder__name\">\n <span class=\"reorder__label\">{{ item.label }}</span>\n <span *ngIf=\"item.node.children.length\" class=\"reorder__count\">{{ childCount(item.node) }}</span>\n </span>\n <hm-tag [name]=\"typeLabel(item.node.route_type)\" color=\"neutral\" />\n <span class=\"reorder__actions\">\n <hm-icon-button\n emphasis=\"subtle\" size=\"small\" icon=\"arrow\" iconDirection=\"up\" [label]=\"label('moveUp', item)\"\n [attr.data-move]=\"'up'\" [attr.data-item]=\"item.id\"\n [disabled]=\"saving || index === 0\" (clicked)=\"move(index, -1)\" />\n <hm-icon-button\n emphasis=\"subtle\" size=\"small\" icon=\"arrow\" iconDirection=\"down\" [label]=\"label('moveDown', item)\"\n [attr.data-move]=\"'down'\" [attr.data-item]=\"item.id\"\n [disabled]=\"saving || index === items.length - 1\" (clicked)=\"move(index, 1)\" />\n <hm-icon-button\n *ngIf=\"item.node.children.length\"\n emphasis=\"subtle\" size=\"small\" icon=\"angle\" iconDirection=\"right\" [label]=\"label('openLevel', item)\"\n (clicked)=\"enter(item)\" />\n </span>\n </div>\n </ng-template>\n </hm-reorder-list>\n </ng-container>\n\n <div *ngIf=\"!loading && !error && !tree.length\" class=\"reorder__empty\">\n <hm-icon shape=\"sort-vertical\" size=\"xl\" />\n <p>{{ text.reorderEmpty }}</p>\n </div>\n\n <div class=\"hm-visually-hidden\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">{{ announcement }}</div>\n </div>\n\n <ng-container footer>\n <hm-button emphasis=\"medium\" (clicked)=\"close()\">{{ text.cancel }}</hm-button>\n <hm-button [disabled]=\"!hasChanges\" [loading]=\"saving\" (clicked)=\"save()\">{{ text.reorderSave }}</hm-button>\n </ng-container>\n</hm-modal>\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy, inject, computed, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport {\n AlertComponent, ButtonComponent, CheckboxComponent, ComboboxComponent, ComboboxMultiComponent, ComboboxOption, CopyButtonComponent, DataGridActionTriggered, DataGridCellDirective,\n DataGridComponent, DataGridRowAction, DividerComponent, GridColumn, InputComponent, ModalComponent, TagComponent, TextareaComponent,\n} from '@trismegisto/angular';\nimport { formatMessage } from '@trismegisto/primitives';\nimport { AutoServiceDeleteFeedback } from '../../auto-service-delete';\nimport { autoServiceErrorText } from '../../auto-service-errors';\nimport { optionalIdBody, optionalIdValidator } from '../../optional-id.validator';\nimport { AutoServiceGroupType, AutoServiceService } from '../../auto-service.service';\nimport { AutoServiceRoutersReorderComponent } from './modals/routers-reorder/auto-service-routers-reorder.component';\nimport { SPINE_MESSAGES } from '@trismegisto/spine';\n\n/** Níveis do roteador acima da página, de cima para baixo. */\nexport const HIERARCHY_LEVELS = ['header_id', 'navigation_id', 'menu_id', 'item_id', 'submenu_id'] as const;\nexport type HierarchyLevel = (typeof HIERARCHY_LEVELS)[number];\n\n/**\n * A hierarquia é de cima para baixo: um nível preenchido com algum vazio acima dele é um \"buraco\" (o argos-admin recusa\n * com 400 `router_hierarchy_gap`). A página é a folha e não entra na conta.\n */\nexport function hasHierarchyGap(levels: Partial<Record<HierarchyLevel, string | null | undefined>>): boolean {\n let emptyAbove = false;\n for (const level of HIERARCHY_LEVELS) {\n if (!levels[level]) emptyAbove = true;\n else if (emptyAbove) return true;\n }\n return false;\n}\n\ninterface RouterRow {\n id: string; page_id: string; header_id?: string; navigation_id?: string; menu_id?: string; item_id?: string; submenu_id?: string;\n is_private: boolean; built_path: string; description?: string | null;\n /** Cópia de um router de template: pertence ao template, o auto-serviço só exibe (o admin-server recusa com 403). */\n templated?: boolean;\n /** Tipos de grupo (crachás) que podem receber guard para a tela; vazio = qualquer crachá. */\n allowed_type_ids?: string[];\n}\n\nconst emptyRouterForm = () => ({\n page_id: '', header_id: '', navigation_id: '', menu_id: '', item_id: '', submenu_id: '', is_private: true, description: '',\n allowed_type_ids: [] as string[],\n});\n\n@Component({\n selector: 'spine-auto-service-routers',\n standalone: true,\n imports: [\n CommonModule, FormsModule, ReactiveFormsModule, AlertComponent, ButtonComponent, CheckboxComponent, ComboboxComponent, ComboboxMultiComponent, DividerComponent,\n InputComponent, ModalComponent, DataGridComponent, DataGridCellDirective, TagComponent, TextareaComponent, AutoServiceRoutersReorderComponent,\n CopyButtonComponent,\n ],\n templateUrl: './auto-service-routers.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: ['./auto-service-routers.component.scss'],\n})\nexport class AutoServiceRoutersComponent implements OnChanges {\n protected readonly text = inject(SPINE_MESSAGES).autoService;\n /** Id opcional só na criação (mesmo roteador com o mesmo id em homologação e produção). */\n readonly newId = new FormControl('', { nonNullable: true, validators: [optionalIdValidator] });\n protected readonly idMessages = computed(() => ({ optionalId: this.text.optionalIdInvalid }));\n /** Telas com estado em campo comum, preenchido depois de `await`: marca a view ao terminar (app sem zone.js). */\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly deletion = inject(AutoServiceDeleteFeedback);\n @Input() clientId = '';\n routes: any[] = [];\n routers: RouterRow[] = [];\n loading = false;\n showRouterModal = false;\n /** Modal \"Reordenar menu\" (ordem dos itens no menu do app, por nível). */\n showReorder = false;\n editingRouterId = '';\n routerForm = emptyRouterForm();\n /**\n * Tipos de grupo do realm (`GET /group-types`). Todos entram, inclusive o Administrador (`assignable: false` só\n * impede criar grupo com o tipo; aqui é quem pode ver a tela), como no modal de roteador do argos-admin.\n */\n groupTypes: AutoServiceGroupType[] = [];\n groupTypeOptions: ComboboxOption[] = [];\n savingRouter = false;\n /** Falha ao gravar o roteador, mostrada no modal. */\n routerError: string | null = null;\n constructor(private service: AutoServiceService) {}\n\n readonly rowId = (r: RouterRow) => r.id;\n readonly columns = computed<GridColumn<RouterRow>[]>(() => [\n { key: 'page', title: this.text.colPage, value: (r) => this.routeName(r.page_id), sortable: true },\n { key: 'built_path', title: this.text.colBuiltPath, value: (r) => r.built_path },\n { key: 'description', title: this.text.colDescription, value: (r) => r.description ?? '' },\n { key: 'is_private', title: this.text.colVisibility, value: (r) => (r.is_private ? this.text.private : this.text.public), sortable: true },\n { key: 'allowed_type_ids', title: this.text.colAllowedBadges, value: (r) => this.allowedTypeNames(r.allowed_type_ids).join(', ') || this.text.anyBadge },\n { key: 'id', title: this.text.colId, value: (r) => r.id },\n ]);\n\n /** Nome acessível do botão de copiar: diz de qual roteador é o id (o caminho montado identifica a tela). */\n copyIdLabel(r: RouterRow): string {\n return formatMessage(this.text.copyRouterId, { name: r.built_path || this.routeName(r.page_id) });\n }\n // Router de template não se edita nem se exclui aqui (403 no admin-server): a linha fica sem o kebab.\n readonly rowActions = computed<DataGridRowAction<RouterRow>[]>(() => [\n { id: 'edit', icon: 'pencil', label: this.text.edit, available: (r) => !r.templated },\n {\n id: 'delete', icon: 'trash', label: this.text.delete, danger: true, separatorAbove: true, available: (r) => !r.templated,\n confirm: (r) => ({ heading: this.text.confirmDeleteRouterHeading, message: formatMessage(this.text.confirmDeleteRouter, { path: r.built_path }) }),\n },\n ]);\n\n get routeOptions(): ComboboxOption[] {\n return this.routes.map((r) => ({ value: r.id, label: r.display_name || r.name }));\n }\n\n ngOnChanges(changes: SimpleChanges) { if (changes['clientId']) this.load(); }\n\n async load() {\n if (!this.clientId) { this.routes = []; this.routers = []; this.setGroupTypes([]); return; }\n this.loading = true;\n try {\n const [routesRes, routersRes, typesRes] = await Promise.all([\n this.service.getWebRoutes(this.clientId),\n this.service.getRouters(this.clientId),\n // Sem os tipos a tabela abre igual; os crachás aparecem pelo id e o campo fica sem opção.\n this.service.getGroupTypes(this.clientId).catch(() => ({ group_types: [] as AutoServiceGroupType[] })),\n ]);\n this.routes = routesRes.routes;\n this.setGroupTypes(typesRes.group_types ?? []);\n this.routers = routersRes.routers.map((r: any) => ({ ...r, built_path: this.builtPath(r) }));\n } finally { this.loading = false; this.cdr.markForCheck(); }\n }\n\n private setGroupTypes(types: AutoServiceGroupType[]) {\n this.groupTypes = types;\n this.groupTypeOptions = types.map((t) => ({ value: t.id, label: t.name }));\n }\n\n /** Nomes dos crachás permitidos (id sem tipo conhecido aparece como o próprio id). */\n allowedTypeNames(typeIds: readonly string[] | undefined): string[] {\n return (typeIds ?? []).map((id) => this.groupTypes.find((t) => t.id === id)?.name ?? id);\n }\n\n routeName(id: string | null): string { if (!id) return '—'; return this.routes.find(r => r.id === id)?.name ?? id; }\n\n private readonly pathLevels: Array<'header_id' | 'navigation_id' | 'menu_id' | 'item_id' | 'submenu_id' | 'page_id'> =\n ['header_id', 'navigation_id', 'menu_id', 'item_id', 'submenu_id', 'page_id'];\n\n builtPath(r: any): string {\n const segments = this.pathLevels\n .map(level => this.routes.find(x => x.id === r[level])?.path)\n .filter((p): p is string => !!p)\n .map(p => p.replace(/^\\/+|\\/+$/g, ''));\n return segments.length ? '/' + segments.join('/') : '—';\n }\n\n openCreateRouter() {\n this.editingRouterId = '';\n this.routerError = null;\n this.routerForm = emptyRouterForm();\n this.newId.reset('');\n this.showRouterModal = true;\n }\n\n openEditRouter(r: RouterRow) {\n this.editingRouterId = r.id;\n this.routerError = null;\n this.routerForm = {\n page_id: r.page_id, header_id: r.header_id ?? '', navigation_id: r.navigation_id ?? '',\n menu_id: r.menu_id ?? '', item_id: r.item_id ?? '', submenu_id: r.submenu_id ?? '', is_private: r.is_private ?? true,\n description: r.description ?? '', allowed_type_ids: [...(r.allowed_type_ids ?? [])],\n };\n this.showRouterModal = true;\n }\n\n /** Níveis da hierarquia, de cima para baixo (a página é a folha e fica fora: sempre obrigatória). */\n readonly hierarchyLevels: readonly HierarchyLevel[] = HIERARCHY_LEVELS;\n\n /**\n * Nível bloqueado: o de cima está vazio (navegação só com header, menu só com navegação, item só com menu, submenu só\n * com item). Um valor já gravado fora da regra (roteador antigo) continua editável, para dar para limpar.\n */\n levelLocked(level: HierarchyLevel): boolean {\n const index = HIERARCHY_LEVELS.indexOf(level);\n if (index <= 0 || this.routerForm[level]) return false;\n return !this.routerForm[HIERARCHY_LEVELS[index - 1]];\n }\n\n /** Grava o nível; limpar um nível limpa todos os de baixo. */\n setLevel(level: HierarchyLevel, value: string | null | undefined) {\n this.routerForm[level] = value ?? '';\n this.routerError = null;\n if (!value) {\n for (const below of HIERARCHY_LEVELS.slice(HIERARCHY_LEVELS.indexOf(level) + 1)) this.routerForm[below] = '';\n }\n }\n\n /** Algum nível preenchido com um vazio acima dele (o argos-admin recusa com 400 `router_hierarchy_gap`). */\n get hierarchyGap(): boolean { return hasHierarchyGap(this.routerForm); }\n\n levelLabel(level: HierarchyLevel): string {\n switch (level) {\n case 'header_id': return this.text.levelHeader;\n case 'navigation_id': return this.text.levelNavigation;\n case 'menu_id': return this.text.levelMenu;\n case 'item_id': return this.text.levelItem;\n default: return this.text.levelSubmenu;\n }\n }\n\n async saveRouter() {\n if (!this.routerForm.page_id || this.hierarchyGap || this.savingRouter || (!this.editingRouterId && this.newId.invalid)) return;\n const body = {\n page_id: this.routerForm.page_id,\n header_id: this.routerForm.header_id || null,\n navigation_id: this.routerForm.navigation_id || null,\n menu_id: this.routerForm.menu_id || null,\n item_id: this.routerForm.item_id || null,\n submenu_id: this.routerForm.submenu_id || null,\n is_private: this.routerForm.is_private,\n description: this.routerForm.description.trim() || null,\n allowed_type_ids: [...this.routerForm.allowed_type_ids],\n };\n this.savingRouter = true;\n this.routerError = null;\n this.cdr.markForCheck();\n try {\n if (this.editingRouterId) { await this.service.updateRouter(this.clientId, this.editingRouterId, body); }\n else { await this.service.createRouter(this.clientId, { ...optionalIdBody('router_id', this.newId.value), ...body }); }\n } catch (err) {\n // O modal fica aberto com o motivo no idioma ativo (ex.: router_hierarchy_gap).\n this.routerError = autoServiceErrorText(err, this.text, this.text.routerSaveError);\n return;\n } finally {\n this.savingRouter = false;\n this.cdr.markForCheck();\n }\n this.showRouterModal = false;\n await this.load();\n }\n\n /** Já confirmado pelo `confirm` da ação na grade. */\n async deleteRouter(routerId: string) {\n if (await this.deletion.run(() => this.service.deleteRouter(this.clientId, routerId))) await this.load();\n }\n\n onAction(e: DataGridActionTriggered<RouterRow>): void {\n if (e.row.templated) return;\n if (e.action === 'edit') this.openEditRouter(e.row);\n if (e.action === 'delete') void this.deleteRouter(e.row.id);\n }\n}\n","<hm-data-grid\n [columns]=\"columns()\"\n [rows]=\"routers\"\n [rowId]=\"rowId\"\n [caption]=\"text.routersCaption\"\n [loading]=\"loading\"\n [rowActions]=\"rowActions()\"\n (actionTriggered)=\"onAction($event)\"\n [emptyMessage]=\"text.noRouters\"\n>\n <hm-button dataGridActions emphasis=\"medium\" icon=\"sort-vertical\" [disabled]=\"!routers.length\" (clicked)=\"showReorder = true\">{{ text.reorder }}</hm-button>\n <hm-button dataGridActions icon=\"plus\" [disabled]=\"!routes.length\" (clicked)=\"openCreateRouter()\">{{ text.newRouter }}</hm-button>\n <ng-template hmCell=\"page\" let-r>\n <span class=\"name-cell\">\n {{ routeName(r.page_id) }}\n <hm-tag *ngIf=\"r.templated\" [name]=\"text.templateTag\" color=\"info\" [title]=\"text.templateLocked\" />\n </span>\n </ng-template>\n <ng-template hmCell=\"is_private\" let-r>\n <hm-tag [name]=\"r.is_private ? text.private : text.public\" [color]=\"r.is_private ? 'warning' : 'success'\" />\n </ng-template>\n <ng-template hmCell=\"allowed_type_ids\" let-r>\n <span *ngIf=\"!r.allowed_type_ids?.length; else badges\" class=\"muted\">{{ text.anyBadge }}</span>\n <ng-template #badges>\n <span class=\"name-cell\">\n <hm-tag *ngFor=\"let name of allowedTypeNames(r.allowed_type_ids)\" [name]=\"name\" color=\"info\" />\n </span>\n </ng-template>\n </ng-template>\n <ng-template hmCell=\"built_path\" let-r>\n <code>{{ r.built_path }}</code>\n </ng-template>\n <!-- UUID do roteador: só o botão de copiar (para criar o mesmo roteador com o mesmo id no outro ambiente). -->\n <ng-template hmCell=\"id\" let-r>\n <hm-copy-button [value]=\"r.id\" [label]=\"copyIdLabel(r)\" [copiedLabel]=\"text.idCopied\" />\n </ng-template>\n</hm-data-grid>\n\n<!-- Modal: ordem dos itens no menu do app (vale também para roteadores de template) -->\n<spine-auto-service-routers-reorder [clientId]=\"clientId\" [open]=\"showReorder\" (openChange)=\"showReorder = $event\" (saved)=\"load()\" />\n\n<!-- Modal: criar/editar roteador -->\n<hm-modal [open]=\"showRouterModal\" (openChange)=\"showRouterModal = $event\" [heading]=\"editingRouterId ? text.editRouter : text.newRouter\" size=\"large\" (closed)=\"showRouterModal = false\">\n <div class=\"form-stack\">\n <hm-alert *ngIf=\"routerError\" variant=\"error\">{{ routerError }}</hm-alert>\n @if (!editingRouterId) {\n <hm-input [formControl]=\"newId\" [label]=\"text.optionalId\" [placeholder]=\"text.optionalIdPlaceholder\" [hint]=\"text.optionalIdHint\" [messages]=\"idMessages()\" />\n }\n <hm-combobox [label]=\"text.page\" [options]=\"routeOptions\" [value]=\"routerForm.page_id\" (valueChange)=\"routerForm.page_id = $event\"></hm-combobox>\n <hm-textarea [label]=\"text.routerDescription\" [rows]=\"2\" [hint]=\"text.routerDescriptionHint\" [(ngModel)]=\"routerForm.description\" />\n\n <hm-divider [label]=\"text.hierarchy\" />\n <p class=\"hierarchy-hint muted\">{{ text.hierarchyHint }}</p>\n\n <!-- De cima para baixo: cada nível só abre com o de cima escolhido; limpar um nível limpa os de baixo. -->\n <hm-combobox *ngFor=\"let level of hierarchyLevels\" [label]=\"levelLabel(level)\" [options]=\"routeOptions\" [clearable]=\"true\"\n [disabled]=\"levelLocked(level)\" [value]=\"routerForm[level]\" (valueChange)=\"setLevel(level, $event)\"></hm-combobox>\n <hm-alert *ngIf=\"hierarchyGap\" variant=\"warning\">{{ text.routerErrors.hierarchyGap }}</hm-alert>\n\n <hm-divider />\n <hm-checkbox [(ngModel)]=\"routerForm.is_private\" [label]=\"text.privateHint\" />\n <!-- Vazio = qualquer crachá (mesma regra do modal de roteador do argos-admin). -->\n <hm-combobox-multi [label]=\"text.colAllowedBadges\" [options]=\"groupTypeOptions\" [placeholder]=\"text.anyBadge\"\n [hint]=\"text.allowedBadgesHint\" [visibleChipsLimit]=\"null\" [selected]=\"routerForm.allowed_type_ids\"\n (selectedChange)=\"routerForm.allowed_type_ids = [...$event]; routerError = null\" />\n </div>\n\n <ng-container footer>\n <hm-button emphasis=\"medium\" (clicked)=\"showRouterModal = false\">{{ text.cancel }}</hm-button>\n <hm-button [disabled]=\"!routerForm.page_id || hierarchyGap || (!editingRouterId && newId.invalid)\" [loading]=\"savingRouter\" (clicked)=\"saveRouter()\">\n {{ editingRouterId ? text.save : text.create }}\n </hm-button>\n </ng-container>\n</hm-modal>\n","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ChangeDetectionStrategy, inject, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent, ComboboxComponent, ComboboxOption, ModalComponent } from '@trismegisto/angular';\nimport { AutoServiceService } from '../../../../auto-service.service';\nimport { SPINE_MESSAGES } from '@trismegisto/spine';\n\n@Component({\n selector: 'spine-auto-service-access-create',\n standalone: true,\n imports: [CommonModule, ButtonComponent, ComboboxComponent, ModalComponent],\n templateUrl: './auto-service-access-create.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: ['./auto-service-access-create.component.scss'],\n})\nexport class AutoServiceAccessCreateComponent implements OnChanges {\n protected readonly text = inject(SPINE_MESSAGES).autoService;\n /** Telas com estado em campo comum, preenchido depois de `await`: marca a view ao terminar (app sem zone.js). */\n private readonly cdr = inject(ChangeDetectorRef);\n @Input() clientId = '';\n @Input() availableGroups: any[] = [];\n @Input() open = false;\n @Output() openChange = new EventEmitter<boolean>();\n @Output() created = new EventEmitter<void>();\n groupId = '';\n saving = false;\n constructor(private service: AutoServiceService) {}\n\n get groupOptions(): ComboboxOption[] {\n return this.availableGroups.map((g) => ({ value: g.id, label: g.type ? `${g.name} (${g.type.name})` : g.name }));\n }\n\n ngOnChanges(changes: SimpleChanges) { if (changes['open'] && this.open) { this.groupId = ''; } }\n onModalOpenChange(value: boolean) { this.open = value; this.openChange.emit(value); }\n close() { this.onModalOpenChange(false); }\n\n async save() {\n if (!this.groupId) return;\n this.saving = true;\n try { await this.service.createAccess(this.clientId, this.groupId); this.created.emit(); this.close(); }\n finally { this.saving = false; this.cdr.markForCheck(); }\n }\n}\n","<hm-modal [open]=\"open\" (openChange)=\"onModalOpenChange($event)\" [heading]=\"text.newAccessHeading\" (closed)=\"close()\">\n <hm-combobox [label]=\"text.group\" [options]=\"groupOptions\" [value]=\"groupId\" (valueChange)=\"groupId = $event\"></hm-combobox>\n\n <ng-container footer>\n <hm-button emphasis=\"medium\" (clicked)=\"close()\">{{ text.cancel }}</hm-button>\n <hm-button [disabled]=\"!groupId\" [loading]=\"saving\" (clicked)=\"save()\">{{ text.create }}</hm-button>\n </ng-container>\n</hm-modal>\n","import {\n Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ChangeDetectionStrategy, inject, ChangeDetectorRef, computed, signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent, DataGridActionBarComponent, DrawerComponent, IconComponent, TreeComponent } from '@trismegisto/angular';\nimport { AutoServiceService } from '../../../../auto-service.service';\nimport { SPINE_MESSAGES } from '@trismegisto/spine';\nimport { TreeNode, TreeSelectionChange, formatMessage } from '@trismegisto/primitives';\n\n/** Nó da árvore de rotas: pastas são os níveis do menu (header…submenu) e a folha é a página (um roteador). */\nexport interface RouteTreeNode {\n key: string; name: string; isFolder: boolean; routerId?: string; guardId?: string; selected?: boolean; children: RouteTreeNode[];\n}\n\n/**\n * \"Gerenciar rotas\" de um acesso do client: as telas privadas que o grupo pode receber (roteadores sem restrição de\n * crachá ou que aceitam o crachá do grupo), em `hm-tree` pelos níveis do menu, como no painel do Argos. No topo, só o\n * filtro; a seleção guarda só folhas (páginas) e a diferença vira guard criado ou removido ao confirmar.\n */\n@Component({\n selector: 'spine-auto-service-access-guards',\n standalone: true,\n imports: [CommonModule, ButtonComponent, DataGridActionBarComponent, IconComponent, DrawerComponent, TreeComponent],\n templateUrl: './auto-service-access-guards.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: ['./auto-service-access-guards.component.scss'],\n})\nexport class AutoServiceAccessGuardsComponent implements OnChanges {\n protected readonly text = inject(SPINE_MESSAGES).autoService;\n /** Telas com estado em campo comum, preenchido depois de `await`: marca a view ao terminar (app sem zone.js). */\n private readonly cdr = inject(ChangeDetectorRef);\n protected readonly fmt = formatMessage;\n @Input() clientId = '';\n @Input() access: any = null;\n @Input() open = false;\n @Output() openChange = new EventEmitter<boolean>();\n\n availableRouters: any[] = [];\n availableRoutes: any[] = [];\n clientPrivateRouters: any[] = [];\n guards: any[] = [];\n loading = false;\n saving = false;\n\n readonly tree = signal<RouteTreeNode[]>([]);\n /** Termo do filtro no topo do drawer; a árvore mostrada é `visibleTree`. */\n readonly filter = signal('');\n readonly visibleTree = computed(() => filterRouteTree(this.tree(), this.filter()));\n readonly treeNodes = computed<readonly TreeNode[]>(() => this.visibleTree().map(n => toTreeNode(n)));\n /** Só folhas (páginas): o que tem guard agora na árvore. */\n readonly selectedIds = signal<ReadonlySet<string>>(new Set());\n readonly expandedIds = signal<ReadonlySet<string>>(new Set());\n private originalSelectedIds: ReadonlySet<string> = new Set();\n private readonly nodesByKey = computed(() => indexByKey(this.tree()));\n /** Nós visíveis por chave: marcar uma pasta com o filtro ativo só mexe nas páginas que aparecem. */\n private readonly visibleByKey = computed(() => indexByKey(this.visibleTree()));\n\n constructor(private service: AutoServiceService) {}\n\n ngOnChanges(changes: SimpleChanges) { if (changes['open'] && this.open) { this.reset(); } }\n close() { this.open = false; this.openChange.emit(false); }\n\n async reset() {\n this.loading = true;\n try {\n const [routersRes, routesRes] = await Promise.all([this.service.getRouters(this.clientId), this.service.getWebRoutes(this.clientId)]);\n this.availableRouters = routersRes.routers;\n this.availableRoutes = routesRes.routes;\n this.clientPrivateRouters = this.availableRouters.filter((r: any) =>\n r.is_private && (!r.allowed_type_ids?.length || r.allowed_type_ids.includes(this.access.group_type_id))\n );\n await this.loadGuards();\n this.buildTree();\n } finally { this.loading = false; this.cdr.markForCheck(); }\n }\n\n async loadGuards() { const res = await this.service.getGuards(this.clientId, this.access.access_id); this.guards = res.guards; }\n\n private routeName(id: string | null): string {\n if (!id) return '—';\n return this.availableRoutes.find((r: any) => r.id === id)?.name ?? id;\n }\n\n private readonly levels: Array<'header_id' | 'navigation_id' | 'menu_id' | 'item_id' | 'submenu_id'> =\n ['header_id', 'navigation_id', 'menu_id', 'item_id', 'submenu_id'];\n\n buildTree() {\n const root: RouteTreeNode[] = [];\n for (const router of this.clientPrivateRouters) {\n let currentLevel = root;\n for (const level of this.levels) {\n const id = router[level];\n if (!id) continue;\n const key = `${level}:${id}`;\n let node = currentLevel.find(n => n.key === key);\n if (!node) { node = { key, name: this.routeName(id), isFolder: true, children: [] }; currentLevel.push(node); }\n currentLevel = node.children;\n }\n const guard = this.guards.find((g: any) => g.router_id === router.id);\n currentLevel.push({\n key: `page:${router.id}`, name: router.page_name || this.routeName(router.page_id), isFolder: false,\n routerId: router.id, guardId: guard?.guard_id, selected: !!guard, children: [],\n });\n }\n this.tree.set(root);\n const original = new Set(root.flatMap(collectLeaves).filter(l => l.selected).map(l => l.key));\n this.originalSelectedIds = original;\n this.selectedIds.set(new Set(original));\n this.expandedIds.set(new Set());\n this.filter.set('');\n }\n\n /** Filtrar abre as pastas que sobraram, para as telas encontradas aparecerem sem clique. */\n onFilterChange(term: string) {\n this.filter.set(term);\n if (!term.trim()) return;\n this.expandedIds.update(current => new Set([...current, ...folderKeys(this.visibleTree())]));\n }\n\n /** Com caixas o hm-tree emite folhas (ou a pasta sem folhas): pasta vira as páginas dela que estão à vista. */\n onTreeChanged(changes: readonly TreeSelectionChange[]) {\n this.selectedIds.update(current => {\n const next = new Set(current);\n for (const change of changes) {\n const node = this.visibleByKey().get(change.id);\n if (!node) continue;\n for (const leaf of collectLeaves(node)) {\n if (change.selected) next.add(leaf.key); else next.delete(leaf.key);\n }\n }\n return next;\n });\n }\n\n get hasChanges(): boolean {\n const selected = this.selectedIds();\n if (selected.size !== this.originalSelectedIds.size) return true;\n for (const id of selected) if (!this.originalSelectedIds.has(id)) return true;\n return false;\n }\n\n /** Folha (página) pela chave; `undefined` para pasta ou chave desconhecida. */\n private leafByKey(key: string): RouteTreeNode | undefined {\n const node = this.nodesByKey().get(key);\n return node && !node.isFolder ? node : undefined;\n }\n\n async confirm() {\n const selected = this.selectedIds();\n const isLeaf = (l: RouteTreeNode | undefined): l is RouteTreeNode => !!l;\n const toAdd = [...selected].filter(id => !this.originalSelectedIds.has(id)).map(id => this.leafByKey(id)).filter(isLeaf);\n const toRemove = [...this.originalSelectedIds].filter(id => !selected.has(id)).map(id => this.leafByKey(id)).filter(isLeaf);\n if (toAdd.length === 0 && toRemove.length === 0) { this.close(); return; }\n this.saving = true;\n try {\n for (const l of toAdd) { await this.service.addGuard(this.clientId, this.access.access_id, l.routerId!); }\n for (const l of toRemove) { await this.service.removeGuard(this.clientId, this.access.access_id, l.guardId!); }\n this.close();\n } finally { this.saving = false; this.cdr.markForCheck(); }\n }\n}\n\nfunction toTreeNode(node: RouteTreeNode): TreeNode {\n return {\n id: node.key, label: node.name, leaf: !node.isFolder,\n children: node.isFolder ? node.children.map(toTreeNode) : undefined,\n };\n}\n\nfunction collectLeaves(node: RouteTreeNode): RouteTreeNode[] {\n return node.isFolder ? node.children.flatMap(collectLeaves) : [node];\n}\n\nfunction indexByKey(root: RouteTreeNode[]): Map<string, RouteTreeNode> {\n const map = new Map<string, RouteTreeNode>();\n const walk = (nodes: RouteTreeNode[]) => { for (const n of nodes) { map.set(n.key, n); walk(n.children); } };\n walk(root);\n return map;\n}\n\nfunction folderKeys(root: RouteTreeNode[]): string[] {\n return [...indexByKey(root).values()].filter(n => n.isFolder).map(n => n.key);\n}\n\n/** Minúsculo e sem acento: \"operacao\" casa com \"Operação\". */\nfunction normalize(value: string | undefined): string {\n return (value ?? '').normalize('NFD').replace(/[̀-ͯ]/g, '').toLowerCase();\n}\n\n/** A árvore só com as telas cujo nome casa com o termo; a pasta que casa pelo nome vem inteira. Termo vazio = tudo. */\nexport function filterRouteTree(nodes: RouteTreeNode[], term: string): RouteTreeNode[] {\n const needle = normalize(term.trim());\n if (!needle) return nodes;\n const walk = (list: RouteTreeNode[]): RouteTreeNode[] => list.flatMap((n) => {\n if (n.isFolder) {\n if (normalize(n.name).includes(needle)) return [n];\n const children = walk(n.children);\n return children.length ? [{ ...n, children }] : [];\n }\n return normalize(n.name).includes(needle) ? [n] : [];\n });\n return walk(nodes);\n}\n","<hm-drawer [open]=\"open\" (openChange)=\"open = $event\" [heading]=\"fmt(text.routesOf, { group: access?.group_name ?? '' })\" (closed)=\"close()\">\n <div *ngIf=\"loading\" class=\"loading-row\">\n <span>{{ text.loading }}</span>\n </div>\n\n <!-- Topo sem mensagens: só o filtro, com o mesmo visual da busca das grades. -->\n <hm-data-grid-action-bar *ngIf=\"!loading && tree().length\"\n [search]=\"filter()\" (searchChange)=\"onFilterChange($event)\"\n [placeholder]=\"text.filterRoutes\" [label]=\"text.filterRoutes\" />\n\n <hm-tree\n *ngIf=\"!loading && treeNodes().length\"\n [nodes]=\"treeNodes()\"\n [label]=\"text.routesTreeLabel\"\n [selected]=\"selectedIds()\"\n [(expanded)]=\"expandedIds\"\n (changed)=\"onTreeChanged($event)\"\n />\n\n <div class=\"empty-state\" *ngIf=\"!loading && tree().length > 0 && treeNodes().length === 0\">\n <hm-icon shape=\"search\" size=\"xl\"></hm-icon>\n <p>{{ fmt(text.noFilterMatch, { term: filter() }) }}</p>\n </div>\n\n <div class=\"empty-state\" *ngIf=\"!loading && tree().length === 0\">\n <hm-icon shape=\"filter-grid\" size=\"xl\"></hm-icon>\n <p>{{ text.noPrivateRoutes }}</p>\n </div>\n\n <ng-container footer>\n <hm-button emphasis=\"medium\" (clicked)=\"close()\">{{ text.cancel }}</hm-button>\n <hm-button [disabled]=\"!hasChanges\" [loading]=\"saving\" (clicked)=\"confirm()\">{{ text.confirmChanges }}</hm-button>\n </ng-container>\n</hm-drawer>\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy, inject, computed, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ButtonComponent, DataGridActionTriggered, DataGridCellDirective, DataGridComponent, DataGridRowAction, GridColumn, IconComponent, TagComponent,\n} from '@trismegisto/angular';\nimport { formatMessage } from '@trismegisto/primitives';\nimport { AutoServiceDeleteFeedback } from '../../auto-service-delete';\nimport { AutoServiceService } from '../../auto-service.service';\nimport { AutoServiceAccessCreateComponent } from './modals/access-create/auto-service-access-create.component';\nimport { AutoServiceAccessGuardsComponent } from './modals/access-guards/auto-service-access-guards.component';\nimport { SPINE_MESSAGES } from '@trismegisto/spine';\n\ninterface AccessRow {\n access_id: string; group_name: string; group_type_name: string; group_type_id: string;\n /** Acesso do grupo de administração: não é do auto-serviço (servidor antigo ainda devolve; a tela descarta). */\n group_is_admin?: boolean;\n}\n\n@Component({\n selector: 'spine-auto-service-access',\n standalone: true,\n imports: [\n CommonModule, ButtonComponent, IconComponent, DataGridComponent, DataGridCellDirective, TagComponent,\n AutoServiceAccessCreateComponent, AutoServiceAccessGuardsComponent,\n ],\n templateUrl: './auto-service-access.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: ['./auto-service-access.component.scss'],\n})\nexport class AutoServiceAccessComponent implements OnChanges {\n protected readonly text = inject(SPINE_MESSAGES).autoService;\n /** Telas com estado em campo comum, preenchido depois de `await`: marca a view ao terminar (app sem zone.js). */\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly deletion = inject(AutoServiceDeleteFeedback);\n @Input() clientId = '';\n entries: AccessRow[] = [];\n availableGroups: any[] = [];\n loading = false;\n showCreate = false;\n showGuards = false;\n activeAccess: AccessRow | null = null;\n constructor(private service: AutoServiceService) {}\n\n readonly rowId = (a: AccessRow) => a.access_id;\n readonly columns = computed<GridColumn<AccessRow>[]>(() => [\n { key: 'group_name', title: this.text.colGroup, value: (a) => a.group_name, sortable: true },\n { key: 'group_type_name', title: this.text.colType, value: (a) => a.group_type_name, sortable: true },\n // Como no painel do Argos: \"Gerenciar rotas\" é um botão na linha, não um item do menu.\n { key: 'guards', title: this.text.colGuards, value: () => '' },\n ]);\n readonly rowActions = computed<DataGridRowAction<AccessRow>[]>(() => [\n {\n id: 'delete', icon: 'trash', label: this.text.remove, danger: true,\n confirm: (a) => ({ heading: this.text.confirmRemoveAccessHeading, message: formatMessage(this.text.confirmRemoveAccess, { group: a.group_name }) }),\n },\n ]);\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['clientId']) { this.load(); this.loadGroups(); }\n }\n\n async load() {\n if (!this.clientId) { this.entries = []; return; }\n this.loading = true;\n try {\n const res = await this.service.getAccess(this.clientId);\n this.entries = (res.access ?? []).filter((a: AccessRow) => !a.group_is_admin);\n }\n finally { this.loading = false; this.cdr.markForCheck(); }\n }\n\n async loadGroups() {\n if (!this.clientId) { this.availableGroups = []; return; }\n const res = await this.service.getGroups(this.clientId);\n this.availableGroups = (res.groups ?? []).filter((g) => !g.is_admin);\n this.cdr.markForCheck();\n }\n\n openCreate() { this.showCreate = true; }\n async onCreated() { await this.load(); }\n /** Já confirmado pelo `confirm` da ação na grade. */\n async deleteAccess(accessId: string) {\n if (await this.deletion.run(() => this.service.deleteAccess(this.clientId, accessId))) await this.load();\n }\n openGuards(access: AccessRow) { this.activeAccess = access; this.showGuards = true; }\n\n onAction(e: DataGridActionTriggered<AccessRow>): void {\n if (e.action === 'delete') void this.deleteAccess(e.row.access_id);\n }\n}\n","<hm-data-grid\n [columns]=\"columns()\"\n [rows]=\"entries\"\n [rowId]=\"rowId\"\n [caption]=\"text.accessCaption\"\n [loading]=\"loading\"\n [rowActions]=\"rowActions()\"\n (actionTriggered)=\"onAction($event)\"\n [emptyMessage]=\"text.noAccess\"\n>\n <hm-button dataGridActions icon=\"plus\" (clicked)=\"openCreate()\">{{ text.newAccess }}</hm-button>\n <ng-template hmCell=\"group_type_name\" let-a>\n <hm-tag [name]=\"a.group_type_name\" color=\"neutral\" />\n </ng-template>\n <ng-template hmCell=\"guards\" let-a>\n <hm-button emphasis=\"minimal\" icon=\"shield\" (clicked)=\"openGuards(a)\">{{ text.manageRoutes }}</hm-button>\n </ng-template>\n</hm-data-grid>\n\n<spine-auto-service-access-create\n [clientId]=\"clientId\"\n [availableGroups]=\"availableGroups\"\n [open]=\"showCreate\"\n (openChange)=\"showCreate = $event\"\n (created)=\"onCreated()\">\n</spine-auto-service-access-create>\n\n<spine-auto-service-access-guards\n *ngIf=\"activeAccess\"\n [clientId]=\"clientId\"\n [access]=\"activeAccess\"\n [open]=\"showGuards\"\n (openChange)=\"showGuards = $event\">\n</spine-auto-service-access-guards>\n","import { Component, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TabComponent, TabContentDirective, TabsComponent } from '@trismegisto/angular';\nimport { AutoServiceClient, AutoServiceClientPickerComponent } from './client-picker/auto-service-client-picker.component';\nimport { AutoServiceRoutesComponent } from './tabs/auto-service-routes/auto-service-routes.component';\nimport { AutoServiceRoutersComponent } from './tabs/auto-service-routers/auto-service-routers.component';\nimport { AutoServiceAccessComponent } from './tabs/auto-service-access/auto-service-access.component';\nimport { SPINE_MESSAGES } from '@trismegisto/spine';\n\ntype Tab = 'routes' | 'routers' | 'access';\n\n@Component({\n selector: 'spine-auto-service-client',\n standalone: true,\n imports: [\n CommonModule, TabsComponent, TabComponent, TabContentDirective,\n AutoServiceClientPickerComponent, AutoServiceRoutesComponent, AutoServiceRoutersComponent, AutoServiceAccessComponent,\n ],\n templateUrl: './auto-service-client.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: ['./auto-service-client.component.scss'],\n})\nexport class AutoServiceClientComponent {\n protected readonly text = inject(SPINE_MESSAGES).autoService;\n client: AutoServiceClient | null = null;\n activeTab: Tab = 'routes';\n onClientChange(c: AutoServiceClient | null) { this.client = c; }\n setTab(tab: Tab) { this.activeTab = tab; }\n}\n","<!-- Título e descrição da tela vêm da barra da página (nome + description do router). -->\n<div class=\"as-stack\">\n <spine-auto-service-client-picker (clientChange)=\"onClientChange($event)\"></spine-auto-service-client-picker>\n\n <!-- Conteúdo de cada aba é preguiçoso (*hmTabContent): só busca na API quando a aba é aberta. -->\n <hm-tabs *ngIf=\"client as c\" [label]=\"text.clientSections\" [active]=\"activeTab\" (activeChange)=\"setTab($any($event))\">\n <hm-tab id=\"routes\" [label]=\"text.tabRoutes\">\n <spine-auto-service-routes *hmTabContent [clientId]=\"c.id\"></spine-auto-service-routes>\n </hm-tab>\n <hm-tab id=\"routers\" [label]=\"text.tabRouters\">\n <spine-auto-service-routers *hmTabContent [clientId]=\"c.id\"></spine-auto-service-routers>\n </hm-tab>\n <hm-tab id=\"access\" [label]=\"text.tabAccess\">\n <spine-auto-service-access *hmTabContent [clientId]=\"c.id\"></spine-auto-service-access>\n </hm-tab>\n </hm-tabs>\n</div>\n"],"names":["i1.AutoServiceService","i1"],"mappings":"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"}