@po-ui/ng-components 21.16.0 → 21.17.0-beta.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.
Files changed (64) hide show
  1. package/fesm2022/{po-ui-ng-components-po-chart-modal-table.component-C4GP9pZp.mjs → po-ui-ng-components-po-chart-modal-table.component-ZnSFYVDt.mjs} +4 -4
  2. package/fesm2022/{po-ui-ng-components-po-chart-modal-table.component-C4GP9pZp.mjs.map → po-ui-ng-components-po-chart-modal-table.component-ZnSFYVDt.mjs.map} +1 -1
  3. package/fesm2022/po-ui-ng-components.mjs +18186 -14839
  4. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  5. package/lib/components/po-calendar/po-calendar-base.component.d.ts +54 -44
  6. package/lib/components/po-calendar/po-calendar-mode.enum.d.ts +2 -1
  7. package/lib/components/po-calendar/po-calendar.component.d.ts +7 -2
  8. package/lib/components/po-calendar/services/po-calendar.service.d.ts +1 -0
  9. package/lib/components/po-dynamic/po-dynamic-form/interfaces/po-dynamic-form-field.interface.d.ts +28 -8
  10. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.d.ts +7 -0
  11. package/lib/components/po-field/index.d.ts +2 -0
  12. package/lib/components/po-field/po-datetimepicker/po-datetimepicker-base.component.d.ts +509 -0
  13. package/lib/components/po-field/po-datetimepicker/po-datetimepicker.component.d.ts +130 -0
  14. package/lib/components/po-field/po-datetimepicker/po-datetimepicker.literals.d.ts +42 -0
  15. package/lib/components/po-field/po-datetimepicker/po-datetimepicker.module.d.ts +7 -0
  16. package/lib/components/po-field/po-field.module.d.ts +1 -1
  17. package/lib/components/po-helper/interfaces/po-helper.interface.d.ts +10 -5
  18. package/lib/components/po-helper/po-helper.component.d.ts +2 -0
  19. package/lib/components/po-page/po-page-default/po-page-default-base.component.d.ts +35 -1
  20. package/lib/components/po-page/po-page-detail/po-page-detail-base.component.d.ts +11 -1
  21. package/lib/components/po-page/po-page-edit/po-page-edit-base.component.d.ts +11 -1
  22. package/lib/components/po-page/po-page-header/po-page-header-base.component.d.ts +10 -2
  23. package/lib/components/po-page/po-page-list/po-page-list-base.component.d.ts +11 -1
  24. package/lib/components/po-popover/po-popover.component.d.ts +1 -0
  25. package/lib/components/po-table/po-table.component.d.ts +35 -4
  26. package/lib/components/po-timer/po-timer.component.d.ts +2 -2
  27. package/lib/services/index.d.ts +1 -0
  28. package/lib/services/po-theme/helpers/types/po-theme-dark-defaults-AA.constant.d.ts +1 -0
  29. package/lib/services/po-theme/helpers/types/po-theme-dark-defaults.constant.d.ts +1 -0
  30. package/lib/services/po-user-guide/enums/index.d.ts +2 -0
  31. package/lib/services/po-user-guide/enums/po-user-guide-alignment.enum.d.ts +18 -0
  32. package/lib/services/po-user-guide/enums/po-user-guide-position.enum.d.ts +24 -0
  33. package/lib/services/po-user-guide/index.d.ts +6 -0
  34. package/lib/services/po-user-guide/interfaces/index.d.ts +6 -0
  35. package/lib/services/po-user-guide/interfaces/po-user-guide-end-event.interface.d.ts +46 -0
  36. package/lib/services/po-user-guide/interfaces/po-user-guide-literals.interface.d.ts +19 -0
  37. package/lib/services/po-user-guide/interfaces/po-user-guide-options.interface.d.ts +195 -0
  38. package/lib/services/po-user-guide/interfaces/po-user-guide-start-event.interface.d.ts +39 -0
  39. package/lib/services/po-user-guide/interfaces/po-user-guide-step-change-event.interface.d.ts +54 -0
  40. package/lib/services/po-user-guide/interfaces/po-user-guide-step.interface.d.ts +169 -0
  41. package/lib/services/po-user-guide/po-user-guide-base.service.d.ts +365 -0
  42. package/lib/services/po-user-guide/po-user-guide-scroll-lock.d.ts +55 -0
  43. package/lib/services/po-user-guide/po-user-guide.literals.d.ts +7 -0
  44. package/lib/services/po-user-guide/po-user-guide.module.d.ts +2 -0
  45. package/lib/services/po-user-guide/po-user-guide.service.d.ts +174 -0
  46. package/lib/utils/safe-text-parser.d.ts +23 -0
  47. package/package.json +5 -4
  48. package/po-ui-ng-components-21.17.0-beta.1.tgz +0 -0
  49. package/schematics/ng-add/index.js +1 -1
  50. package/schematics/ng-update/v14/index.js +1 -1
  51. package/schematics/ng-update/v15/index.js +1 -1
  52. package/schematics/ng-update/v16/index.js +1 -1
  53. package/schematics/ng-update/v17/index.js +1 -1
  54. package/schematics/ng-update/v18/index.js +2 -2
  55. package/schematics/ng-update/v19/index.js +2 -2
  56. package/schematics/ng-update/v2/index.js +1 -1
  57. package/schematics/ng-update/v20/index.js +2 -2
  58. package/schematics/ng-update/v21/index.js +1 -1
  59. package/schematics/ng-update/v3/index.js +1 -1
  60. package/schematics/ng-update/v4/index.js +1 -1
  61. package/schematics/ng-update/v5/index.js +1 -1
  62. package/schematics/ng-update/v6/index.js +1 -1
  63. package/types/po-ui-ng-components.d.ts +17325 -15403
  64. package/po-ui-ng-components-21.16.0.tgz +0 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @usedBy PoUserGuideService
3
+ *
4
+ * @description
5
+ *
6
+ * Interface que descreve o evento emitido pelo `PoUserGuideService` no início da execução de um tour guiado.
7
+ *
8
+ * É publicado no `Observable` `PoUserGuideService.tourStart$` exatamente uma vez por execução, imediatamente
9
+ * após a configuração da instância do tour e antes da emissão do primeiro `PoUserGuideStepChangeEvent` em
10
+ * `PoUserGuideService.stepChange$`.
11
+ *
12
+ * As aplicações consumidoras podem assinar `tourStart$` para registrar telemetria do início do tour,
13
+ * exibir mensagens contextuais ou disparar lógica de negócio dependente do início da jornada do usuário.
14
+ */
15
+ export interface PoUserGuideStartEvent {
16
+ /**
17
+ * @description
18
+ *
19
+ * Total de passos configurados no tour, equivalente ao tamanho do array passado a `PoUserGuideService.setSteps`.
20
+ */
21
+ totalSteps: number;
22
+ /**
23
+ * @description
24
+ *
25
+ * Índice do passo inicial do tour, com base zero.
26
+ *
27
+ * Corresponde ao argumento `startIndex` informado a `PoUserGuideService.start`. Quando o método é invocado
28
+ * sem argumentos, o valor é `0`.
29
+ */
30
+ startIndex: number;
31
+ /**
32
+ * @description
33
+ *
34
+ * Marca de tempo, em milissegundos, do momento de emissão do evento, obtida a partir de `Date.now()`.
35
+ *
36
+ * Útil para correlacionar o início do tour com outros eventos de telemetria da aplicação.
37
+ */
38
+ timestamp: number;
39
+ }
@@ -0,0 +1,54 @@
1
+ import { PoUserGuideStep } from './po-user-guide-step.interface';
2
+ /**
3
+ * @usedBy PoUserGuideService
4
+ *
5
+ * @description
6
+ *
7
+ * Interface que descreve o evento emitido pelo `PoUserGuideService` a cada mudança de passo durante a execução do tour.
8
+ *
9
+ * É publicado no `Observable` `PoUserGuideService.stepChange$` toda vez que o passo ativo é alterado, seja por
10
+ * interação do usuário (cliques nos botões "Próximo"/"Anterior" ou navegação por teclado) ou por chamada
11
+ * programática aos métodos `next`, `previous`, `goTo` e `start` do `PoUserGuideService`.
12
+ *
13
+ * As aplicações consumidoras podem assinar `stepChange$` para reagir à navegação do usuário, atualizar a
14
+ * UI conforme o passo ativo, registrar telemetria de progresso ou disparar lógica de negócio contextual.
15
+ */
16
+ export interface PoUserGuideStepChangeEvent {
17
+ /**
18
+ * @description
19
+ *
20
+ * Passo do tour que se tornou ativo após a transição.
21
+ *
22
+ * Corresponde ao elemento da lista `steps` (configurada via `PoUserGuideService.setSteps`) cujo índice é
23
+ * igual ao valor de `index` neste evento.
24
+ */
25
+ step: PoUserGuideStep;
26
+ /**
27
+ * @description
28
+ *
29
+ * Índice, com base zero, do passo ativo após a transição.
30
+ *
31
+ * Está sempre contido no intervalo `[0, totalSteps - 1]`.
32
+ */
33
+ index: number;
34
+ /**
35
+ * @description
36
+ *
37
+ * Direção da transição que originou a mudança de passo.
38
+ *
39
+ * Valores aceitos:
40
+ *
41
+ * - `next`: a transição foi originada pelo método `PoUserGuideService.next` ou pelo botão "Próximo" do popover.
42
+ * - `previous`: a transição foi originada pelo método `PoUserGuideService.previous` ou pelo botão "Anterior" do popover.
43
+ * - `goto`: a transição foi originada pela chamada ao método `PoUserGuideService.goTo` com um índice arbitrário.
44
+ * - `start`: a transição corresponde à exibição do primeiro passo logo após a inicialização do tour
45
+ * pelo método `PoUserGuideService.start`.
46
+ */
47
+ direction: 'next' | 'previous' | 'goto' | 'start';
48
+ /**
49
+ * @description
50
+ *
51
+ * Total de passos configurados no tour, equivalente ao tamanho do array passado a `PoUserGuideService.setSteps`.
52
+ */
53
+ totalSteps: number;
54
+ }
@@ -0,0 +1,169 @@
1
+ import { PoUserGuideAlignment } from '../enums/po-user-guide-alignment.enum';
2
+ import { PoUserGuidePosition } from '../enums/po-user-guide-position.enum';
3
+ /**
4
+ * @usedBy PoUserGuideService
5
+ *
6
+ * @description
7
+ *
8
+ * Interface que descreve um passo individual do tour guiado executado pelo `PoUserGuideService`.
9
+ *
10
+ * Cada passo representa uma parada do tour, com um elemento opcional a ser destacado na página,
11
+ * conteúdo textual ou em HTML, configurações de posicionamento do popover, *labels* específicos
12
+ * dos botões de navegação e *hooks* de ciclo de vida do passo.
13
+ *
14
+ * > A propriedade `content` é a única obrigatória e corresponde ao corpo do popover apresentado ao usuário.
15
+ */
16
+ export interface PoUserGuideStep {
17
+ /**
18
+ * @optional
19
+ *
20
+ * @description
21
+ *
22
+ * Elemento da página que o passo deve destacar.
23
+ *
24
+ * Aceita um seletor CSS válido (`'#id'`, `'.class'`, `'tag'`, `'.container > .item'`) ou uma referência direta a um `HTMLElement`
25
+ * (por exemplo, obtida via `@ViewChild` ou `ElementRef.nativeElement`).
26
+ *
27
+ * Quando a propriedade é omitida, o popover é exibido como um modal centralizado na viewport, sem destacar
28
+ * nenhum elemento da página.
29
+ */
30
+ element?: string | HTMLElement;
31
+ /**
32
+ * @optional
33
+ *
34
+ * @description
35
+ *
36
+ * Título exibido no cabeçalho do popover do passo.
37
+ *
38
+ * Quando omitido, o popover é renderizado apenas com o conteúdo definido em `content`.
39
+ */
40
+ title?: string;
41
+ /**
42
+ * @description
43
+ *
44
+ * Conteúdo principal do passo, exibido no corpo do popover. Aceita texto puro ou HTML.
45
+ *
46
+ * > **Aviso de segurança:** por padrão, o PO UI sanitiza o conteúdo HTML recebido antes de repassá-lo
47
+ * > ao popover do tour, reduzindo o risco de vulnerabilidades de *Cross-Site Scripting* (XSS).
48
+ * >
49
+ * > Mesmo com essa proteção, recomenda-se que aplicações consumidoras evitem enviar conteúdo HTML
50
+ * > proveniente de fontes não confiáveis sem validação prévia, como entradas de usuário ou dados externos.
51
+ * > A sanitização realizada pelo PO UI atua como uma camada de segurança, mas não substitui boas práticas
52
+ * > de validação e controle dos dados na origem.
53
+ */
54
+ content: string;
55
+ /**
56
+ * @optional
57
+ *
58
+ * @description
59
+ *
60
+ * Posição preferida do popover em relação ao elemento destacado.
61
+ *
62
+ * Valores aceitos:
63
+ *
64
+ * - `top`: o popover é renderizado acima do elemento destacado.
65
+ * - `right`: o popover é renderizado à direita do elemento destacado.
66
+ * - `bottom`: o popover é renderizado abaixo do elemento destacado.
67
+ * - `left`: o popover é renderizado à esquerda do elemento destacado.
68
+ * - `over`: o popover é renderizado sobreposto ao elemento destacado.
69
+ * - `auto`: a posição é calculada automaticamente conforme o espaço disponível na viewport.
70
+ *
71
+ * @default auto`
72
+ */
73
+ position?: PoUserGuidePosition;
74
+ /**
75
+ * @optional
76
+ *
77
+ * @description
78
+ *
79
+ * Alinhamento do popover ao longo do eixo da posição configurada em `position`.
80
+ *
81
+ * Valores aceitos: 'start' | 'center' | 'end'
82
+ *
83
+ * @default `start`
84
+ */
85
+ align?: PoUserGuideAlignment;
86
+ /**
87
+ * @optional
88
+ *
89
+ * @description
90
+ *
91
+ * Sobrescreve o *label* do botão "Próximo" exclusivamente para este passo.
92
+ *
93
+ * Quando omitido, é utilizado o valor configurado em `PoUserGuideOptions.nextLabel` ou o padrão do PO UI (`Próximo`).
94
+ */
95
+ nextLabel?: string;
96
+ /**
97
+ * @optional
98
+ *
99
+ * @description
100
+ *
101
+ * Sobrescreve o *label* do botão "Anterior" exclusivamente para este passo.
102
+ *
103
+ * Quando omitido, é utilizado o valor configurado em `PoUserGuideOptions.previousLabel` ou o padrão do PO UI (`Anterior`).
104
+ */
105
+ previousLabel?: string;
106
+ /**
107
+ * @optional
108
+ *
109
+ * @description
110
+ *
111
+ * Sobrescreve o *label* do botão "Finalizar" exclusivamente para este passo.
112
+ *
113
+ * Quando omitido, é utilizado o valor configurado em `PoUserGuideOptions.doneLabel` ou o padrão do PO UI (`Finalizar`).
114
+ */
115
+ doneLabel?: string;
116
+ /**
117
+ * @optional
118
+ *
119
+ * @description
120
+ *
121
+ * Lista que filtra quais botões de navegação devem ser exibidos no popover deste passo.
122
+ *
123
+ * Aceita qualquer combinação dos valores `'next'`, `'previous'` e `'close'`. Apenas os botões presentes
124
+ * na lista são renderizados, permitindo, por exemplo, ocultar o botão "Anterior" no primeiro passo
125
+ * ou exibir somente o botão "Fechar" em um passo final.
126
+ *
127
+ * Quando a propriedade é omitida, todos os botões padrão (`'next'`, `'previous'` e `'close'`) são exibidos.
128
+ * Quando informada como array vazio, nenhum botão de navegação é exibido — o controle do tour passa a ser
129
+ * 100% programático via `next()`, `previous()`, `goTo()` e `close()` do `PoUserGuideService`.
130
+ */
131
+ showButtons?: Array<'next' | 'previous' | 'close'>;
132
+ /**
133
+ * @optional
134
+ *
135
+ * @description
136
+ *
137
+ * *Hook* executado imediatamente antes de o passo ser destacado na página, sincronamente à transição.
138
+ *
139
+ * Recebe como argumentos o próprio passo (`step`) e o seu índice (`index`, com base zero) na lista de passos
140
+ * configurada via `PoUserGuideService.setSteps`.
141
+ *
142
+ * Útil para preparar a UI antes do destaque (por exemplo, abrir um menu lateral que contém o elemento alvo).
143
+ */
144
+ onBeforeHighlight?: (step: PoUserGuideStep, index: number) => void;
145
+ /**
146
+ * @optional
147
+ *
148
+ * @description
149
+ *
150
+ * *Hook* executado imediatamente após o passo ser destacado na página.
151
+ *
152
+ * Recebe como argumentos o próprio passo (`step`) e o seu índice (`index`, com base zero) na lista de passos.
153
+ *
154
+ * Útil para registrar telemetria de visualização ou disparar lógica de negócio dependente da exibição do passo.
155
+ */
156
+ onHighlighted?: (step: PoUserGuideStep, index: number) => void;
157
+ /**
158
+ * @optional
159
+ *
160
+ * @description
161
+ *
162
+ * *Hook* executado quando o passo deixa de estar ativo, seja por avanço, retrocesso ou encerramento do tour.
163
+ *
164
+ * Recebe como argumentos o próprio passo (`step`) e o seu índice (`index`, com base zero) na lista de passos.
165
+ *
166
+ * Útil para reverter alterações de UI realizadas em `onBeforeHighlight` ou `onHighlighted`.
167
+ */
168
+ onDeselected?: (step: PoUserGuideStep, index: number) => void;
169
+ }
@@ -0,0 +1,365 @@
1
+ import { Observable, Subject } from 'rxjs';
2
+ import { PoLanguageService } from '../../services/po-language/po-language.service';
3
+ import { PoUserGuideLiterals } from './interfaces/po-user-guide-literals.interface';
4
+ import { PoUserGuideEndEvent, PoUserGuideOptions, PoUserGuideStartEvent, PoUserGuideStep, PoUserGuideStepChangeEvent } from './interfaces';
5
+ /**
6
+ * @description
7
+ *
8
+ * Serviço responsável por criar e controlar tours guiados na interface da aplicação.
9
+ *
10
+ * O `PoUserGuideService` permite apresentar uma sequência de passos visuais para orientar
11
+ * o usuário durante o uso de uma tela, funcionalidade ou fluxo específico do sistema.
12
+ * Ele pode ser utilizado, por exemplo, para apresentar uma nova funcionalidade, guiar um
13
+ * primeiro acesso ou destacar pontos importantes da interface.
14
+ *
15
+ * O serviço centraliza a configuração do guia do usuário, incluindo:
16
+ *
17
+ * - os passos que serão exibidos;
18
+ * - as opções gerais de comportamento;
19
+ * - o controle do passo ativo;
20
+ * - os eventos emitidos durante o ciclo de vida do tour.
21
+ *
22
+ * A partir dele, a aplicação pode iniciar, acompanhar e reagir à execução do tour por meio
23
+ * dos eventos públicos `tourStart$`, `stepChange$` e `tourEnd$`.
24
+ *
25
+ * Como o serviço é disponibilizado com `providedIn: 'root'`, não é necessário declará-lo em
26
+ * `providers` nem importá-lo manualmente em módulos específicos.
27
+ * Ele pode ser injetado diretamente em qualquer componente, serviço ou diretiva da aplicação.
28
+ *
29
+ * #### Uso típico
30
+ *
31
+ * O fluxo recomendado de utilização do serviço, que pode ser encadeado fluentemente, configura os
32
+ * passos do tour, ajusta opções globais e dispara a execução em uma única expressão:
33
+ *
34
+ * ```typescript
35
+ * import { Component } from '@angular/core';
36
+ * import { PoUserGuideService } from '@po-ui/ng-components';
37
+ *
38
+ * @Component({ selector: 'app-onboarding', templateUrl: './onboarding.component.html' })
39
+ * export class OnboardingComponent {
40
+ * constructor(private PoUserGuide: PoUserGuideService) {}
41
+ *
42
+ * startTour(): void {
43
+ * this.PoUserGuide
44
+ * .setSteps([
45
+ * { element: '#header', title: 'Bem-vindo!', content: 'Esta é a barra superior.' },
46
+ * { element: '<po-menu>', title: 'Menu', content: 'Acesse aqui as funcionalidades do sistema.' },
47
+ * { element: '#user-profile', title: 'Perfil', content: 'Configure suas preferências.' }
48
+ * ])
49
+ * .setOptions({ showProgress: true, allowClose: true })
50
+ * .start();
51
+ * }
52
+ * }
53
+ * ```
54
+ *
55
+ * #### Boas práticas para seleção de elementos
56
+ *
57
+ * Ao configurar o elemento que será destacado em cada passo do tour, recomenda-se evitar
58
+ * seletores baseados em classes internas, estruturas de HTML ou elementos muito genéricos,
59
+ * como `.minha-classe`, `div`, `span` ou combinações dependentes da hierarquia da página.
60
+ *
61
+ * Esses seletores podem ser sensíveis a mudanças de implementação, refatorações visuais ou
62
+ * alterações nos nomes de classes, o que pode fazer com que o passo deixe de encontrar o
63
+ * elemento esperado.
64
+ *
65
+ * Quando o passo destacar um componente do PO-UI, prefira utilizar o próprio seletor do
66
+ * componente, como: `po-button`, `po-input`, `po-combo` ou `po-table`, sempre que isso for
67
+ * suficiente para identificar o elemento corretamente.
68
+ *
69
+ * Quando houver mais de um componente igual na tela ou quando for necessário apontar para
70
+ * um elemento específico, recomenda-se adicionar um `id` no elemento alvo ou encapsular a
71
+ * área desejada em um elemento próprio da aplicação.
72
+ *
73
+ * #### Aviso de segurança: HTML em `step.content`
74
+ *
75
+ * O PO UI sanitiza o conteúdo HTML informado em `step.content` antes de exibi-lo no
76
+ * *popover* do tour, ajudando a prevenir vulnerabilidades de *Cross-Site Scripting* (XSS).
77
+ *
78
+ * A mesma proteção é aplicada aos *labels* definidos em `PoUserGuideStep` e
79
+ * `PoUserGuideOptions` quando construídos dinamicamente.
80
+ *
81
+ * Ainda assim, recomenda-se validar conteúdos vindos de fontes não confiáveis, como entrada
82
+ * do usuário, APIs externas ou *query strings*, preservando a segurança desde a origem dos dados.
83
+ *
84
+ * #### Tokens customizáveis
85
+ *
86
+ * É possível alterar a aparência do *popover* renderizado pelo `PoUserGuideService` através dos tokens
87
+ * (CSS) consumidos pelo arquivo `po-user-guide.css` distribuído via `@po-ui/style`.
88
+ *
89
+ * > Para maiores informações, acesse o guia [Personalizando o Tema Padrão com Tokens CSS](https://po-ui.io/guides/theme-customization).
90
+ *
91
+ * | Propriedade | Descrição | Valor Padrão |
92
+ * |--------------------------------------------------|--------------------------------------------------------------------------|--------------------------------------------------------|
93
+ * | **Overlay** | | |
94
+ * | `--color-po-user-guide-overlay` | Cor do *overlay* que escurece a página durante o tour | `var(--color-neutral-dark-80)` |
95
+ * | **Popover** | | |
96
+ * | `--font-family` | Família tipográfica usada no *popover* | `var(--font-family-theme)` |
97
+ * | `--color` | Cor padrão do texto do *popover* | `var(--color-neutral-dark-70)` |
98
+ * | `--background-color` | Cor de fundo do *popover* | `var(--color-neutral-light-00)` |
99
+ * | `--border-color` | Cor da borda do *popover* | `var(--color-neutral-light-20)` |
100
+ * | `--border-width` | Espessura da borda do *popover* | `var(--border-width-sm)` |
101
+ * | `--border-radius` | Raio dos cantos do *popover* | `var(--border-radius-md)` |
102
+ * | `--shadow` | Sombra projetada pelo *popover* | `var(--shadow-lg)` |
103
+ * | `--padding` | Espaçamento interno do *popover* | `var(--spacing-sm)` |
104
+ * | `--max-width` | Largura máxima do *popover* | `360px` |
105
+ * | `--arrow-color` | Cor da seta que aponta para o elemento destacado | `var(--color-neutral-light-00)` |
106
+ * | **Título** | | |
107
+ * | `--title-font-size` | Tamanho da fonte do título | `var(--font-size-default)` |
108
+ * | `--title-font-weight` | Peso da fonte do título | `var(--font-weight-bold)` |
109
+ * | `--title-line-height` | Altura de linha do título | `var(--line-height-sm)` |
110
+ * | `--title-color` | Cor do texto do título | `var(--color-neutral-dark-95)` |
111
+ * | `--title-margin-bottom` | Espaçamento inferior do título | `var(--spacing-xs)` |
112
+ * | **Descrição** | | |
113
+ * | `--description-font-size` | Tamanho da fonte da descrição | `var(--font-size-sm)` |
114
+ * | `--description-font-weight` | Peso da fonte da descrição | `var(--font-weight-normal)` |
115
+ * | `--description-line-height` | Altura de linha da descrição | `var(--line-height-md)` |
116
+ * | `--description-color` | Cor do texto da descrição | `var(--color-neutral-dark-70)` |
117
+ * | `--description-margin-bottom` | Espaçamento inferior da descrição | `var(--spacing-xs)` |
118
+ * | **Progresso** | | |
119
+ * | `--progress-font-size` | Tamanho da fonte do indicador de progresso | `var(--font-size-xs)` |
120
+ * | `--progress-font-weight` | Peso da fonte do indicador de progresso | `var(--font-weight-normal)` |
121
+ * | `--progress-line-height` | Altura de linha do indicador de progresso | `var(--line-height-sm)` |
122
+ * | `--progress-color` | Cor do texto do indicador de progresso | `var(--color-neutral-mid-60)` |
123
+ * | **Rodapé** | | |
124
+ * | `--footer-margin-top` | Espaçamento superior do rodapé | `var(--spacing-xs)` |
125
+ * | `--footer-gap` | Espaçamento entre os botões de navegação | `var(--spacing-xxs)` |
126
+ * | `--footer-gap-tertiary` | Espaçamento adicional aplicado ao botão terciário | `var(--spacing-sm)` |
127
+ * | **Botões - base** | | |
128
+ * | `--button-font-weight` | Peso da fonte dos botões | `var(--font-weight-bold)` |
129
+ * | `--button-font-size` | Tamanho da fonte dos botões | `var(--font-size-sm)` |
130
+ * | `--button-line-height` | Altura de linha dos botões | `var(--line-height-none)` |
131
+ * | `--button-border-width` | Espessura da borda dos botões | `var(--border-width-md)` |
132
+ * | `--button-border-radius` | Raio dos cantos dos botões | `var(--border-radius-md)` |
133
+ * | `--button-padding` | Espaçamento interno dos botões | `var(--spacing-xs) var(--spacing-sm)` |
134
+ * | **Botão primário (`Próximo` / `Finalizar`)** | | |
135
+ * | `--button-primary-text-color` | Cor do texto do botão primário | `var(--color-neutral-light-00)` |
136
+ * | `--button-primary-color` | Cor de fundo do botão primário | `var(--color-action-default)` |
137
+ * | `--button-primary-color-hover` | Cor de fundo do botão primário no estado *hover* | `var(--color-action-hover)` |
138
+ * | `--button-primary-color-pressed` | Cor de fundo do botão primário no estado *pressed* | `var(--color-action-pressed)` |
139
+ * | `--button-primary-border-color` | Cor da borda do botão primário | `var(--color-action-default)` |
140
+ * | `--button-primary-shadow` | Sombra do botão primário | `var(--shadow-none)` |
141
+ * | `--button-primary-text-color-disabled` | Cor do texto do botão primário desabilitado | `var(--color-neutral-dark-70)` |
142
+ * | `--button-primary-color-disabled` | Cor de fundo do botão primário desabilitado | `var(--color-neutral-light-30)` |
143
+ * | `--button-primary-border-color-disabled` | Cor da borda do botão primário desabilitado | `var(--color-transparent)` |
144
+ * | **Botão terciário (`Anterior`)** | | |
145
+ * | `--button-tertiary-color` | Cor do texto do botão terciário | `var(--color-action-default)` |
146
+ * | `--button-tertiary-color-hover` | Cor do texto do botão terciário no estado *hover* | `var(--color-brand-01-darkest)` |
147
+ * | `--button-tertiary-color-pressed` | Cor do texto do botão terciário no estado *pressed* | `var(--color-brand-01-darker)` |
148
+ * | `--button-tertiary-background-color` | Cor de fundo do botão terciário | `var(--color-transparent)` |
149
+ * | `--button-tertiary-background-hover` | Cor de fundo do botão terciário no estado *hover* | `var(--color-brand-01-lighter)` |
150
+ * | `--button-tertiary-background-pressed` | Cor de fundo do botão terciário no estado *pressed* | `var(--color-brand-01-light)` |
151
+ * | `--button-tertiary-border-color` | Cor da borda do botão terciário | `var(--color-transparent)` |
152
+ * | `--button-tertiary-border-color-hover` | Cor da borda do botão terciário no estado *hover* | `var(--color-transparent)` |
153
+ * | `--button-tertiary-border-color-pressed` | Cor da borda do botão terciário no estado *pressed* | `var(--color-transparent)` |
154
+ * | `--button-tertiary-shadow` | Sombra do botão terciário | `var(--shadow-none)` |
155
+ * | `--button-tertiary-color-disabled` | Cor do texto do botão terciário desabilitado | `var(--color-neutral-light-30)` |
156
+ * | `--button-tertiary-background-disabled` | Cor de fundo do botão terciário desabilitado | `var(--color-transparent)` |
157
+ * | `--button-tertiary-border-color-disabled` | Cor da borda do botão terciário desabilitado | `var(--color-transparent)` |
158
+ * | **Botão fechar (`X`)** | | |
159
+ * | `--button-close-color` | Cor do botão fechar | `var(--color-neutral-mid-60)` |
160
+ * | `--button-close-color-hover` | Cor do botão fechar no estado *hover* | `var(--color-action-hover)` |
161
+ * | `--button-close-color-pressed` | Cor do botão fechar no estado *pressed* | `var(--color-action-pressed)` |
162
+ * | `--button-close-color-focused` | Cor do botão fechar no estado de foco visível | `var(--color-action-focus)` |
163
+ * | `--button-close-background-color` | Cor de fundo do botão fechar | `var(--color-transparent)` |
164
+ * | `--button-close-background-hover` | Cor de fundo do botão fechar no estado *hover* | `var(--color-neutral-light-10)` |
165
+ * | `--button-close-background-pressed` | Cor de fundo do botão fechar no estado *pressed* | `var(--color-neutral-light-20)` |
166
+ * | `--button-close-border-color` | Cor da borda do botão fechar | `var(--color-transparent)` |
167
+ * | `--button-close-font-size` | Tamanho da fonte/ícone do botão fechar | `var(--font-size-md)` |
168
+ * | `--button-close-padding` | Espaçamento interno do botão fechar | `var(--spacing-xxs) var(--spacing-xs)` |
169
+ * | `--button-close-color-disabled` | Cor do botão fechar desabilitado | `var(--color-neutral-light-30)` |
170
+ * | `--button-close-background-disabled` | Cor de fundo do botão fechar desabilitado | `var(--color-transparent)` |
171
+ * | `--button-close-border-color-disabled` | Cor da borda do botão fechar desabilitado | `var(--color-transparent)` |
172
+ * | **Foco visível** | | |
173
+ * | `--outline-color-focused` | Cor do *outline* aplicado aos botões em foco visível | `var(--color-action-focus)` |
174
+ */
175
+ export declare abstract class PoUserGuideBaseService {
176
+ private _literals;
177
+ private readonly language;
178
+ protected get defaultOptions(): PoUserGuideOptions;
179
+ /**
180
+ * @optional
181
+ *
182
+ * @description
183
+ *
184
+ * Objeto com as literais usadas no `po-user-guide`.
185
+ *
186
+ * Existem duas maneiras de customizar o serviço, passando um objeto com todas as literais disponíveis:
187
+ *
188
+ * ```
189
+ * const customLiterals: PoUserGuideLiterals = {
190
+ * next: 'Próximo',
191
+ * previous: 'Anterior',
192
+ * done: 'Finalizar',
193
+ * close: 'Fechar'
194
+ * };
195
+ * ```
196
+ *
197
+ * Ou passando apenas as literais que deseja customizar:
198
+ *
199
+ * ```
200
+ * const customLiterals: PoUserGuideLiterals = {
201
+ * next: 'Avançar'
202
+ * };
203
+ * ```
204
+ *
205
+ * E para carregar as literais customizadas, basta passá-las ao método `setOptions`:
206
+ *
207
+ * ```
208
+ * this.poUserGuide.setOptions({ literals: customLiterals }).start();
209
+ * ```
210
+ *
211
+ * > O objeto padrão de literais será traduzido de acordo com o idioma do
212
+ * [`PoI18nService`](/documentation/po-i18n) ou do browser.
213
+ */
214
+ get literals(): PoUserGuideLiterals;
215
+ set literals(value: PoUserGuideLiterals);
216
+ /**
217
+ * @docsPrivate
218
+ *
219
+ * Lista de passos do tour configurada pela aplicação consumidora através do método `setSteps`.
220
+ * É reinicializada como um array vazio enquanto nenhum passo é configurado.
221
+ */
222
+ protected steps: Array<PoUserGuideStep>;
223
+ /**
224
+ * @docsPrivate
225
+ *
226
+ * Opções globais do tour configuradas pela aplicação consumidora através do método `setOptions`.
227
+ */
228
+ protected options: PoUserGuideOptions;
229
+ /**
230
+ * @docsPrivate
231
+ *
232
+ * Índice, com base zero, do passo ativo durante a execução do tour.
233
+ *
234
+ * Permanece em `-1` enquanto não houver tour em andamento, sinalizando ausência de execução para os
235
+ * métodos de consulta de estado expostos pela classe PoUserGuideService.
236
+ */
237
+ protected currentIndex: number;
238
+ /**
239
+ * @docsPrivate
240
+ *
241
+ * `Subject` interno utilizado pela classe PoUserGuideService para emitir o evento de início do tour.
242
+ *
243
+ * É exposto publicamente apenas como `Observable` somente leitura através da propriedade `tourStart$`.
244
+ */
245
+ protected readonly _tourStart: Subject<PoUserGuideStartEvent>;
246
+ /**
247
+ * @docsPrivate
248
+ *
249
+ * `Subject` interno utilizado pela classe PoUserGuideService para emitir o evento de encerramento do tour.
250
+ *
251
+ * É exposto publicamente apenas como `Observable` somente leitura através da propriedade `tourEnd$`.
252
+ */
253
+ protected readonly _tourEnd: Subject<PoUserGuideEndEvent>;
254
+ /**
255
+ * @docsPrivate
256
+ *
257
+ * `Subject` interno utilizado pela classe PoUserGuideService para emitir os eventos de mudança de passo
258
+ * durante a execução do tour.
259
+ *
260
+ * É exposto publicamente apenas como `Observable` somente leitura através da propriedade `stepChange$`.
261
+ */
262
+ protected readonly _stepChange: Subject<PoUserGuideStepChangeEvent>;
263
+ /**
264
+ * `Observable` que emite um `PoUserGuideEvent` no início de cada execução do tour.
265
+ *
266
+ * É emitido exatamente uma vez por execução, imediatamente após a configuração da instância do tour
267
+ * e antes da primeira emissão de `stepChange$`. As aplicações consumidoras podem assinar este
268
+ * `Observable` para registrar telemetria do início do tour, exibir mensagens contextuais ou disparar
269
+ * lógica de negócio dependente do início da jornada do usuário.
270
+ */
271
+ readonly tourStart$: Observable<PoUserGuideStartEvent>;
272
+ /**
273
+ * `Observable` que emite um `PoUserGuideEndEvent` no encerramento de cada execução do tour.
274
+ *
275
+ * É emitido exatamente uma vez por execução, sempre após a última emissão de `stepChange$` e após a
276
+ * limpeza do estado interno do serviço. As aplicações consumidoras podem assinar este `Observable`
277
+ * para registrar telemetria de conclusão ou de abandono do tour, executar limpezas de UI ou disparar
278
+ * lógica de negócio dependente do encerramento da jornada do usuário.
279
+ */
280
+ readonly tourEnd$: Observable<PoUserGuideEndEvent>;
281
+ /**
282
+ * `Observable` que emite um `PoUserGuideStepChangeEvent` a cada mudança de passo durante a execução do tour.
283
+ *
284
+ * As aplicações consumidoras podem assinar este `Observable` para reagir à navegação do usuário,
285
+ * atualizar a UI conforme o passo ativo, registrar telemetria de progresso ou disparar lógica de
286
+ * negócio contextual ao passo corrente.
287
+ */
288
+ readonly stepChange$: Observable<PoUserGuideStepChangeEvent>;
289
+ constructor(languageService: PoLanguageService);
290
+ protected validateSteps(steps: Array<PoUserGuideStep>): void;
291
+ protected resolveOptions(options?: PoUserGuideOptions): PoUserGuideOptions;
292
+ /**
293
+ * @description
294
+ *
295
+ * Inicia a execução do tour previamente configurado por meio dos métodos `setSteps` e, opcionalmente,
296
+ * `setOptions`.
297
+ *
298
+ * Quando invocado sem argumentos, o tour é iniciado a partir do primeiro passo (`startIndex = 0`).
299
+ * Caso um valor seja informado, a execução começa diretamente no passo correspondente. O método
300
+ * exibe a camada de *overlay* sobre a aplicação, renderiza o *popover* destacando o elemento do passo
301
+ * inicial e emite uma única notificação em `tourStart$` antes da primeira emissão em `stepChange$`.
302
+ *
303
+ * Quando invocado com um tour já em execução, a implementação concreta encerra o tour atual
304
+ * (equivalente a `close()` com `reason: 'closed'`) antes de iniciar o novo tour, preservando a
305
+ * propriedade de reentrância documentada no design do serviço.
306
+ *
307
+ * @param {number} [startIndex=0] Índice, com base zero, do passo a partir do qual o tour deve iniciar.
308
+ * Deve estar contido no intervalo `[0, steps.length - 1]`.
309
+ *
310
+ * @throws {Error} Quando a lista de passos ainda não foi configurada ou está vazia.
311
+ * @throws {Error} Quando `startIndex` está fora do intervalo `[0, steps.length - 1]`.
312
+ *
313
+ * @returns {Promise<void>} `Promise` que é resolvida quando o tour é iniciado com sucesso e
314
+ * rejeitada com um `Error` de mensagem padronizada quando ocorre falha na carga da dependência
315
+ * `driver.js` ou na inicialização do tour. As aplicações consumidoras podem encadear `.catch` ou
316
+ * utilizar `await` em um bloco `try/catch` para reagir a essas falhas.
317
+ */
318
+ abstract start(startIndex?: number): Promise<void>;
319
+ /**
320
+ * @description
321
+ *
322
+ * Encerra o tour em execução, removendo a camada de *overlay* e o *popover* do DOM e zerando o estado
323
+ * interno do serviço.
324
+ *
325
+ * O método emite uma única notificação em `tourEnd$` com `reason: 'closed'` e atualiza
326
+ * `getCurrentIndex()` para `-1`, fazendo `isActive()` retornar `false` em chamadas subsequentes.
327
+ *
328
+ */
329
+ abstract close(): void;
330
+ /**
331
+ * @description
332
+ *
333
+ * Avança o tour em execução para o próximo passo, atualizando o estado interno e emitindo uma
334
+ * notificação em `stepChange$` com `direction: 'next'` para o passo recém-ativado.
335
+ *
336
+ * Quando o passo ativo é o último da lista (`currentIndex === steps.length - 1`), o método encerra o
337
+ * tour com `reason: 'completed'` e emite `tourEnd$`, sinalizando que o usuário concluiu integralmente
338
+ * a jornada configurada.
339
+ *
340
+ */
341
+ abstract next(): void;
342
+ /**
343
+ * @description
344
+ *
345
+ * Retrocede o tour em execução para o passo anterior, atualizando o estado interno e emitindo uma
346
+ * notificação em `stepChange$` com `direction: 'previous'` para o passo recém-ativado.
347
+ *
348
+ */
349
+ abstract previous(): void;
350
+ /**
351
+ * @description
352
+ *
353
+ * Navega o tour diretamente para o passo localizado em `index`, sem percorrer os passos intermediários.
354
+ *
355
+ * Quando há tour em execução, o método atualiza o estado interno e emite uma notificação em
356
+ * `stepChange$` com `direction: 'goto'` para o passo recém-ativado. Quando não há tour em execução, o
357
+ * método inicia o tour a partir do índice informado, seguindo o mesmo fluxo de `start(index)`.
358
+ *
359
+ * @param {number} index Índice, com base zero, do passo de destino. Deve estar contido no intervalo
360
+ * `[0, steps.length - 1]`.
361
+ *
362
+ * @throws {Error} Quando `index` está fora do intervalo `[0, steps.length - 1]`.
363
+ */
364
+ abstract goTo(index: number): void;
365
+ }