@govbr-ds/webcomponents 2.0.0-next.41 → 2.0.0-next.43

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 (161) hide show
  1. package/dist/cjs/br-breadcrumb.cjs.entry.js +1 -1
  2. package/dist/cjs/br-breadcrumb.cjs.entry.js.map +1 -1
  3. package/dist/cjs/br-breadcrumb.entry.cjs.js.map +1 -1
  4. package/dist/cjs/br-button.br-icon.entry.cjs.js.map +1 -1
  5. package/dist/cjs/br-button_2.cjs.entry.js +22 -3
  6. package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
  7. package/dist/cjs/br-collapse.br-list.entry.cjs.js.map +1 -1
  8. package/dist/cjs/br-collapse_2.cjs.entry.js +2 -2
  9. package/dist/cjs/br-collapse_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/br-dropdown.cjs.entry.js +324 -10
  11. package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -1
  12. package/dist/cjs/br-dropdown.entry.cjs.js.map +1 -1
  13. package/dist/cjs/br-footer.cjs.entry.js +1 -1
  14. package/dist/cjs/br-footer.cjs.entry.js.map +1 -1
  15. package/dist/cjs/br-footer.entry.cjs.js.map +1 -1
  16. package/dist/cjs/br-item.cjs.entry.js +1 -1
  17. package/dist/cjs/br-item.cjs.entry.js.map +1 -1
  18. package/dist/cjs/br-item.entry.cjs.js.map +1 -1
  19. package/dist/cjs/br-scrim.cjs.entry.js +1 -1
  20. package/dist/cjs/br-scrim.cjs.entry.js.map +1 -1
  21. package/dist/cjs/br-scrim.entry.cjs.js.map +1 -1
  22. package/dist/cjs/br-tooltip.cjs.entry.js +2187 -0
  23. package/dist/cjs/br-tooltip.cjs.entry.js.map +1 -0
  24. package/dist/cjs/br-tooltip.entry.cjs.js.map +1 -0
  25. package/dist/cjs/br-upload.cjs.entry.js +1 -1
  26. package/dist/cjs/index-DAOr34NM.js +4 -0
  27. package/dist/cjs/loader.cjs.js +1 -1
  28. package/dist/cjs/webcomponents.cjs.js +1 -1
  29. package/dist/collection/collection-manifest.json +1 -0
  30. package/dist/collection/components/breadcrumb/breadcrumb.css +1 -1
  31. package/dist/collection/components/button/button.js +2 -1
  32. package/dist/collection/components/button/button.js.map +1 -1
  33. package/dist/collection/components/dropdown/dropdown.css +1 -1
  34. package/dist/collection/components/dropdown/dropdown.js +346 -9
  35. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  36. package/dist/collection/components/footer/footer.css +1 -1
  37. package/dist/collection/components/icon/icon.css +1 -1
  38. package/dist/collection/components/icon/icon.js +40 -1
  39. package/dist/collection/components/icon/icon.js.map +1 -1
  40. package/dist/collection/components/item/item.css +1 -1
  41. package/dist/collection/components/list/list.css +1 -1
  42. package/dist/collection/components/list/list.js +1 -1
  43. package/dist/collection/components/list/list.js.map +1 -1
  44. package/dist/collection/components/scrim/scrim.css +1 -1
  45. package/dist/collection/components/step-item/step-item.js +1 -1
  46. package/dist/collection/components/tooltip/tooltip.css +1 -0
  47. package/dist/collection/components/tooltip/tooltip.js +683 -0
  48. package/dist/collection/components/tooltip/tooltip.js.map +1 -0
  49. package/dist/collection/components/upload/upload.js +1 -1
  50. package/dist/collection/pages/components/tooltip/index.js +18 -0
  51. package/dist/collection/pages/scripts/menu.js +14 -1
  52. package/dist/collection/utils/floating-ui.js +119 -0
  53. package/dist/collection/utils/floating-ui.js.map +1 -0
  54. package/dist/components/br-avatar.js +1 -1
  55. package/dist/components/br-breadcrumb.js +6 -6
  56. package/dist/components/br-button.js +3 -3
  57. package/dist/components/br-collapse.js +4 -4
  58. package/dist/components/br-dropdown.js +332 -25
  59. package/dist/components/br-dropdown.js.map +1 -1
  60. package/dist/components/br-footer-category.js +3 -3
  61. package/dist/components/br-footer-item.js +1 -1
  62. package/dist/components/br-footer-social.js +2 -2
  63. package/dist/components/br-footer.js +1 -1
  64. package/dist/components/br-icon.js +4 -4
  65. package/dist/components/br-input.js +4 -4
  66. package/dist/components/br-item.js +4 -4
  67. package/dist/components/br-list.js +1 -1
  68. package/dist/components/br-message.js +2 -2
  69. package/dist/components/br-scrim.js +1 -1
  70. package/dist/components/br-scrim.js.map +1 -1
  71. package/dist/components/br-select.js +5 -5
  72. package/dist/components/br-step-item.js +2 -2
  73. package/dist/components/br-tab-item.js +1 -1
  74. package/dist/components/br-tag.js +7 -7
  75. package/dist/components/br-tooltip.d.ts +11 -0
  76. package/dist/components/br-tooltip.js +2144 -0
  77. package/dist/components/br-tooltip.js.map +1 -0
  78. package/dist/components/br-upload.js +11 -11
  79. package/dist/components/index.d.ts +2 -0
  80. package/dist/components/index.js +2 -0
  81. package/dist/components/{p-pq3SZemh.js → p-CIINlcIu.js} +3 -3
  82. package/dist/components/{p-brOPUYUL.js → p-DJtFpYiN.js} +3 -3
  83. package/dist/components/p-DJtFpYiN.js.map +1 -0
  84. package/dist/components/{p-DlMJ2wZW.js → p-DLL8l_-5.js} +7 -7
  85. package/dist/components/{p-DlMJ2wZW.js.map → p-DLL8l_-5.js.map} +1 -1
  86. package/dist/components/{p-BxU9TOn1.js → p-DuPFr2fm.js} +4 -4
  87. package/dist/components/{p-COPEUBKR.js → p-Dxc2AzjS.js} +6 -5
  88. package/dist/components/p-Dxc2AzjS.js.map +1 -0
  89. package/dist/components/{p-jx7aLpDh.js → p-vi3ehOfu.js} +40 -23
  90. package/dist/components/p-vi3ehOfu.js.map +1 -0
  91. package/dist/custom-docs/markdown-methods.js +2 -0
  92. package/dist/custom-docs/markdown-methods.js.map +1 -1
  93. package/dist/custom-elements.json +745 -76
  94. package/dist/esm/br-breadcrumb.entry.js +1 -1
  95. package/dist/esm/br-breadcrumb.entry.js.map +1 -1
  96. package/dist/esm/br-button.br-icon.entry.js.map +1 -1
  97. package/dist/esm/br-button_2.entry.js +22 -3
  98. package/dist/esm/br-button_2.entry.js.map +1 -1
  99. package/dist/esm/br-collapse.br-list.entry.js.map +1 -1
  100. package/dist/esm/br-collapse_2.entry.js +2 -2
  101. package/dist/esm/br-collapse_2.entry.js.map +1 -1
  102. package/dist/esm/br-dropdown.entry.js +324 -10
  103. package/dist/esm/br-dropdown.entry.js.map +1 -1
  104. package/dist/esm/br-footer.entry.js +1 -1
  105. package/dist/esm/br-footer.entry.js.map +1 -1
  106. package/dist/esm/br-item.entry.js +1 -1
  107. package/dist/esm/br-item.entry.js.map +1 -1
  108. package/dist/esm/br-scrim.entry.js +1 -1
  109. package/dist/esm/br-scrim.entry.js.map +1 -1
  110. package/dist/esm/br-tooltip.entry.js +2185 -0
  111. package/dist/esm/br-tooltip.entry.js.map +1 -0
  112. package/dist/esm/br-upload.entry.js +1 -1
  113. package/dist/esm/index-ClsF4De3.js +4 -0
  114. package/dist/esm/loader.js +1 -1
  115. package/dist/esm/webcomponents.js +1 -1
  116. package/dist/hydrate/index.js +2558 -23
  117. package/dist/hydrate/index.mjs +2558 -23
  118. package/dist/types/components/button/button.d.ts +1 -0
  119. package/dist/types/components/dropdown/dropdown.d.ts +48 -1
  120. package/dist/types/components/icon/icon.d.ts +7 -0
  121. package/dist/types/components/tooltip/tooltip.d.ts +238 -0
  122. package/dist/types/components.d.ts +139 -0
  123. package/dist/types/utils/floating-ui.d.ts +78 -0
  124. package/dist/webcomponents/br-breadcrumb.entry.esm.js.map +1 -1
  125. package/dist/webcomponents/br-button.br-icon.entry.esm.js.map +1 -1
  126. package/dist/webcomponents/br-collapse.br-list.entry.esm.js.map +1 -1
  127. package/dist/webcomponents/br-dropdown.entry.esm.js.map +1 -1
  128. package/dist/webcomponents/br-footer.entry.esm.js.map +1 -1
  129. package/dist/webcomponents/br-item.entry.esm.js.map +1 -1
  130. package/dist/webcomponents/br-scrim.entry.esm.js.map +1 -1
  131. package/dist/webcomponents/br-tooltip.entry.esm.js.map +1 -0
  132. package/dist/webcomponents/{p-c3267481.entry.js → p-3d5600cb.entry.js} +2 -2
  133. package/dist/webcomponents/p-3d5600cb.entry.js.map +1 -0
  134. package/dist/webcomponents/{p-713035b5.entry.js → p-5c638bff.entry.js} +4 -4
  135. package/dist/webcomponents/{p-713035b5.entry.js.map → p-5c638bff.entry.js.map} +1 -1
  136. package/dist/webcomponents/{p-5a36e6be.entry.js → p-83fd1103.entry.js} +2 -2
  137. package/dist/webcomponents/{p-ab251560.entry.js → p-8ac9dcff.entry.js} +329 -23
  138. package/dist/webcomponents/p-8ac9dcff.entry.js.map +1 -0
  139. package/dist/webcomponents/{p-dbfc2a44.entry.js → p-c25d500c.entry.js} +2 -2
  140. package/dist/webcomponents/p-c25d500c.entry.js.map +1 -0
  141. package/dist/webcomponents/{p-383a4240.entry.js → p-d01d51a9.entry.js} +27 -10
  142. package/dist/webcomponents/p-d01d51a9.entry.js.map +1 -0
  143. package/dist/webcomponents/{p-1cf7cc9c.entry.js → p-d1bc7827.entry.js} +2 -2
  144. package/dist/webcomponents/p-e15ccd94.entry.js +2098 -0
  145. package/dist/webcomponents/p-e15ccd94.entry.js.map +1 -0
  146. package/dist/webcomponents/{p-ad8edd59.entry.js → p-f3ab9e06.entry.js} +10 -10
  147. package/dist/webcomponents/webcomponents.esm.js +24 -10
  148. package/dist/webcomponents.html-custom-data.json +18 -2
  149. package/package.json +1 -1
  150. package/dist/components/p-COPEUBKR.js.map +0 -1
  151. package/dist/components/p-brOPUYUL.js.map +0 -1
  152. package/dist/components/p-jx7aLpDh.js.map +0 -1
  153. package/dist/webcomponents/p-383a4240.entry.js.map +0 -1
  154. package/dist/webcomponents/p-ab251560.entry.js.map +0 -1
  155. package/dist/webcomponents/p-c3267481.entry.js.map +0 -1
  156. package/dist/webcomponents/p-dbfc2a44.entry.js.map +0 -1
  157. /package/dist/components/{p-pq3SZemh.js.map → p-CIINlcIu.js.map} +0 -0
  158. /package/dist/components/{p-BxU9TOn1.js.map → p-DuPFr2fm.js.map} +0 -0
  159. /package/dist/webcomponents/{p-5a36e6be.entry.js.map → p-83fd1103.entry.js.map} +0 -0
  160. /package/dist/webcomponents/{p-1cf7cc9c.entry.js.map → p-d1bc7827.entry.js.map} +0 -0
  161. /package/dist/webcomponents/{p-ad8edd59.entry.js.map → p-f3ab9e06.entry.js.map} +0 -0
@@ -0,0 +1,683 @@
1
+ /*!
2
+ * Construído por SERPRO
3
+ * © https://serpro.gov.br/ - MIT License.
4
+ */
5
+ import { h, Host, } from "@stencil/core";
6
+ import { FloatingUIManager } from "../../utils/floating-ui";
7
+ import Helpers from "../../utils/helpers";
8
+ /**
9
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https:
10
+ *
11
+ * @slot trigger - Área para o elemento acionador do tooltip.
12
+ * @slot content - Área para o conteúdo do tooltip.
13
+ */
14
+ export class Tooltip {
15
+ /**
16
+ * Referência ao elemento host do componente.
17
+ * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.
18
+ */
19
+ el;
20
+ /**
21
+ * Referência ao elemento Internals do componente.
22
+ * O elemento Internals fornece uma interface para acessar e manipular o estado interno do componente.
23
+ * Isso é útil para componentes que precisam se integrar com o sistema de formulários nativo do navegador.
24
+ */
25
+ elementInternals;
26
+ /**
27
+ * Identificador único.
28
+ * Caso não seja fornecido, um ID gerado automaticamente será usado.
29
+ */
30
+ customId = Helpers.generateUniqueId();
31
+ /**
32
+ * Define a posição do tooltip em relação ao elemento acionador.
33
+ * As opções disponíveis são: 'top', 'bottom', 'left' e 'right'.
34
+ * @default 'top'
35
+ */
36
+ position = 'top';
37
+ /**
38
+ * Define o tipo de tooltip a ser exibido.
39
+ * As opções disponíveis são: 'standard' e 'popover'.
40
+ * O tipo 'standard' exibe um tooltip simples, enquanto o tipo 'popover' exibe um tooltip com mais informações e fechamento por interação.
41
+ * @default 'standard'
42
+ */
43
+ type = 'standard';
44
+ /**
45
+ * Define a densidade do tooltip.
46
+ * As opções disponíveis são: 'large', 'medium' e 'small'.
47
+ * A densidade 'small' exibe um tooltip mais compacto, enquanto a densidade 'large' exibe um tooltip mais espaçado.
48
+ * @default 'medium'
49
+ */
50
+ density = 'medium';
51
+ /**
52
+ * Define o estado do tooltip.
53
+ * Os estados disponíveis são: 'info', 'warning', 'error' e 'success'.
54
+ * @default 'info'
55
+ */
56
+ state = 'info';
57
+ /**
58
+ * Define se o tooltip deve ser exibido automaticamente.
59
+ * Quando definido como true, o tooltip será exibido automaticamente.
60
+ * Quando definido como false, o tooltip será exibido apenas quando acionado pelo usuário.
61
+ * @default false
62
+ */
63
+ isAutoVisible = false;
64
+ /**
65
+ * Define o atraso em milissegundos para exibir o tooltip.
66
+ * @default null
67
+ */
68
+ showDelay = null;
69
+ /**
70
+ * Define o atraso em milissegundos para ocultar o tooltip.
71
+ * @default null
72
+ */
73
+ hideDelay = null;
74
+ /**
75
+ * Define a visibilidade do tooltip.
76
+ * Quando definido como true, o tooltip será exibido.
77
+ * Quando definido como false, o tooltip será ocultado.
78
+ * @default false
79
+ */
80
+ isVisible = false;
81
+ /**
82
+ * Watcher para monitorar alterações na propriedade `isVisible`.
83
+ * @param visible boolean
84
+ * @returns void
85
+ */
86
+ handleVisibilityChange(visible) {
87
+ if (this.contentElement == null)
88
+ return;
89
+ if (visible) {
90
+ this.positionTooltip();
91
+ this.brDidOpen.emit();
92
+ }
93
+ else {
94
+ this.clearAutoUpdate?.();
95
+ this.clearAutoUpdate = undefined;
96
+ this.brDidClose.emit();
97
+ }
98
+ }
99
+ /**
100
+ * Evento emitido quando o tooltip é aberto.
101
+ */
102
+ brDidOpen;
103
+ /**
104
+ * Evento emitido quando o tooltip é fechado.
105
+ */
106
+ brDidClose;
107
+ /**
108
+ * Listener para o evento de foco no elemento acionador.
109
+ * Este evento é utilizado para exibir o tooltip quando o elemento acionador recebe foco.
110
+ */
111
+ handleFocusIn() {
112
+ if (!this.fromPointerDown) {
113
+ this.showContent();
114
+ }
115
+ this.fromPointerDown = false;
116
+ }
117
+ /**
118
+ * Listener para o evento de desfoque no elemento acionador.
119
+ * Este evento é utilizado para ocultar o tooltip quando o elemento acionador perde o foco.
120
+ */
121
+ handleFocusOut() {
122
+ this.hideContent();
123
+ }
124
+ /**
125
+ * Listener para o evento de teclado no documento.
126
+ * Este evento é utilizado para fechar o tooltip quando a tecla Escape é pressionada.
127
+ * @param event KeyboardEvent
128
+ */
129
+ handleKeyDown(event) {
130
+ if (event.key === 'Escape') {
131
+ event.preventDefault();
132
+ this.hideContent();
133
+ this.triggerElement?.focus();
134
+ }
135
+ }
136
+ floatingManager;
137
+ /**
138
+ * Elemento que aciona a exibição do tooltip.
139
+ * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.
140
+ */
141
+ triggerElement;
142
+ /**
143
+ * Elemento que contém o conteúdo do tooltip.
144
+ * Este elemento é referenciado para garantir que o tooltip seja posicionado corretamente em relação a ele.
145
+ */
146
+ contentElement;
147
+ /**
148
+ * Elemento que representa a seta do tooltip.
149
+ * Este elemento é utilizado para indicar a direção do tooltip em relação ao elemento acionador.
150
+ */
151
+ arrowElement;
152
+ /**
153
+ * Função de limpeza para atualizar a posição do tooltip automaticamente.
154
+ * Esta função é chamada quando o tooltip não está mais visível ou quando o componente é desconectado.
155
+ * Isso garante que o tooltip não consuma recursos desnecessários quando não estiver em uso.
156
+ */
157
+ clearAutoUpdate;
158
+ /**
159
+ * Tempo limite para exibir o tooltip automaticamente.
160
+ */
161
+ showTimer;
162
+ /**
163
+ * Tempo limite para ocultar o tooltip.
164
+ */
165
+ hideTimer;
166
+ /**
167
+ * Indica se o tooltip foi acionado por um clique do mouse.
168
+ * Isso é utilizado para evitar conflito com o acionamento por foco.
169
+ */
170
+ fromPointerDown = false;
171
+ /**
172
+ * Controla a exibição do tooltip.
173
+ * Quando o tooltip é exibido, ele é posicionado em relação ao elemento acionador.
174
+ * Isso é feito utilizando a biblioteca Floating UI, que calcula a posição ideal do tooltip com base no espaço disponível na tela.
175
+ * A função `autoUpdate` é utilizada para atualizar automaticamente a posição do tooltip quando o elemento acionador é movido ou redimensionado.
176
+ */
177
+ positionTooltip() {
178
+ if (this.triggerElement == null || this.contentElement == null)
179
+ return;
180
+ this.floatingManager = new FloatingUIManager({
181
+ triggerElement: this.triggerElement,
182
+ contentElement: this.contentElement,
183
+ arrowElement: this.arrowElement,
184
+ placement: this.position,
185
+ });
186
+ this.floatingManager.start();
187
+ }
188
+ cleanupPositioning() {
189
+ this.floatingManager?.stop();
190
+ }
191
+ /**
192
+ * Define os eventos de interação do tooltip.
193
+ * Os eventos de interação incluem mouseenter, mouseleave, focus e blur.
194
+ * @returns void
195
+ */
196
+ setupInteractions() {
197
+ if (this.triggerElement == null || this.contentElement == null)
198
+ return;
199
+ if (this.type === 'standard') {
200
+ this.triggerElement.addEventListener('mouseenter', this.showContent);
201
+ this.triggerElement.addEventListener('mouseleave', this.hideContent);
202
+ }
203
+ if (this.type === 'popover') {
204
+ this.triggerElement.addEventListener('pointerdown', this.toggleContent);
205
+ }
206
+ if (this.isAutoVisible) {
207
+ requestAnimationFrame(() => {
208
+ this.clearShowTimer();
209
+ this.setShowTimer();
210
+ });
211
+ }
212
+ }
213
+ /**
214
+ * Alterna a exibição do tooltip.
215
+ * Se o tooltip estiver visível, ele será ocultado.
216
+ * Se o tooltip estiver oculto, ele será exibido.
217
+ */
218
+ toggleContent = () => {
219
+ this.fromPointerDown = true;
220
+ if (this.isVisible) {
221
+ this.hideContent();
222
+ }
223
+ else {
224
+ this.showContent();
225
+ }
226
+ };
227
+ /**
228
+ * Processa as ações relacionadas à exibição do tooltip.
229
+ * Isso inclui exibir o tooltip e iniciar o tempo limite de ocultação automática.
230
+ * @returns void
231
+ */
232
+ showContent = () => {
233
+ if (this.contentElement == null)
234
+ return;
235
+ this.isVisible = true;
236
+ if (this.isAutoVisible) {
237
+ if (this.hideDelay !== null) {
238
+ this.clearHideTimer();
239
+ this.setHideTimer();
240
+ }
241
+ }
242
+ if (this.type === 'popover') {
243
+ document.addEventListener('click', this.handleOutsideClick);
244
+ }
245
+ };
246
+ /**
247
+ * Processa as ações relacionadas ao fechamento do tooltip.
248
+ * Isso inclui ocultar o tooltip e limpar o tempo limite de ocultação automática.
249
+ * @returns void
250
+ */
251
+ hideContent = () => {
252
+ if (this.contentElement == null)
253
+ return;
254
+ this.isVisible = false;
255
+ if (this.type === 'popover') {
256
+ document.removeEventListener('click', this.handleOutsideClick);
257
+ requestAnimationFrame(() => this.contentElement?.focus());
258
+ }
259
+ };
260
+ /**
261
+ * Configura o tempo limite para exibir o tooltip automaticamente.
262
+ * O tempo limite é definido pelo valor da propriedade `showDelay`.
263
+ */
264
+ setShowTimer() {
265
+ this.showTimer = setTimeout(() => {
266
+ this.showContent();
267
+ }, this.showDelay || 0);
268
+ }
269
+ /**
270
+ * Limpa o tempo limite de exibição automática do tooltip.
271
+ */
272
+ clearShowTimer() {
273
+ if (this.showTimer !== undefined) {
274
+ clearTimeout(this.showTimer);
275
+ this.showTimer = undefined;
276
+ }
277
+ }
278
+ /**
279
+ * Configura o tempo limite para ocultar o tooltip automaticamente.
280
+ * O tempo limite é definido pelo valor da propriedade `hideDelay`.
281
+ */
282
+ setHideTimer() {
283
+ this.hideTimer = setTimeout(() => {
284
+ this.hideContent();
285
+ }, this.hideDelay);
286
+ }
287
+ /**
288
+ * Limpa o tempo limite de ocultação automática do tooltip.
289
+ */
290
+ clearHideTimer() {
291
+ if (this.hideTimer !== undefined) {
292
+ clearTimeout(this.hideTimer);
293
+ this.hideTimer = undefined;
294
+ }
295
+ }
296
+ /**
297
+ * Lida com cliques fora do tooltip.
298
+ * É utilizado para o tooltip do tipo 'popover'.
299
+ * @param event MouseEvent
300
+ */
301
+ handleOutsideClick = (event) => {
302
+ const path = event.composedPath();
303
+ if (this.isVisible &&
304
+ this.type === 'popover' &&
305
+ !path.includes(this.contentElement) &&
306
+ !path.includes(this.triggerElement)) {
307
+ this.hideContent();
308
+ }
309
+ };
310
+ /**
311
+ * Determina o mapeamento de classes CSS do componente.
312
+ * @returns Um objeto que representa o mapeamento de classes CSS do componente.
313
+ */
314
+ getCssClassMap() {
315
+ return {
316
+ 'br-tooltip': true,
317
+ };
318
+ }
319
+ /**
320
+ * Determina o mapeamento de classes CSS do trigger.
321
+ * @returns Um objeto que representa o mapeamento de classes CSS do trigger.
322
+ */
323
+ getTriggerCssClassMap() {
324
+ return {
325
+ trigger: true,
326
+ };
327
+ }
328
+ /**
329
+ * Determina o mapeamento de classes CSS do conteúdo.
330
+ * @returns Um objeto que representa o mapeamento de classes CSS do conteúdo.
331
+ */
332
+ getContentCssClassMap() {
333
+ return {
334
+ 'is-visible': this.isVisible,
335
+ content: true,
336
+ popover: this.type === 'popover',
337
+ large: this.density === 'large',
338
+ medium: this.density === 'medium',
339
+ small: this.density === 'small',
340
+ info: this.state === 'info',
341
+ warning: this.state === 'warning',
342
+ error: this.state === 'error',
343
+ success: this.state === 'success',
344
+ };
345
+ }
346
+ /**
347
+ * Determina o mapeamento de classes CSS da seta.
348
+ * @returns Um objeto que representa o mapeamento de classes CSS da seta.
349
+ */
350
+ getArrowCssClassMap() {
351
+ return {
352
+ arrow: true,
353
+ large: this.density === 'large',
354
+ medium: this.density === 'medium',
355
+ small: this.density === 'small',
356
+ info: this.state === 'info',
357
+ warning: this.state === 'warning',
358
+ error: this.state === 'error',
359
+ success: this.state === 'success',
360
+ };
361
+ }
362
+ /**
363
+ * Método do ciclo de vida do componente.
364
+ * Este método é chamado uma única vez após o componente ser montado no DOM.
365
+ */
366
+ componentDidLoad() {
367
+ if (typeof window === 'undefined')
368
+ return;
369
+ this.setupInteractions();
370
+ }
371
+ /**
372
+ * Método do ciclo de vida do componente.
373
+ * Este método é chamado quando o componente é desconectado do DOM.
374
+ */
375
+ disconnectedCallback() {
376
+ if (this.type === 'standard') {
377
+ this.triggerElement?.removeEventListener('mouseenter', this.showContent);
378
+ this.triggerElement?.removeEventListener('mouseleave', this.hideContent);
379
+ }
380
+ else if (this.type === 'popover') {
381
+ this.triggerElement?.removeEventListener('pointerdown', this.toggleContent);
382
+ document.removeEventListener('click', this.handleOutsideClick);
383
+ }
384
+ this.cleanupPositioning();
385
+ this.clearShowTimer();
386
+ this.clearHideTimer();
387
+ }
388
+ /**
389
+ * Renderiza o componente.
390
+ * Este método é responsável por gerar o conteúdo HTML do componente.
391
+ * Ele utiliza a função `h` do Stencil para criar elementos JSX.
392
+ * @returns JSX.Element
393
+ */
394
+ render() {
395
+ return (h(Host, { key: 'c2ee0c8f2fb36acda135948629412023bce72e2b' }, h("div", { key: '05d87a50f8e33874bf9ecf7eeb0d8ac5cb79df3e', id: this.customId, class: this.getCssClassMap() }, h("div", { key: '71997f8547d509d31cb51f446354ed071ced6e30', class: this.getTriggerCssClassMap(), ref: (el) => (this.triggerElement = el), "aria-describedby": `${this.customId}-content`, "aria-expanded": this.isVisible ? 'true' : 'false', "aria-controls": `${this.customId}-content`, role: "button", tabindex: "-1 " }, h("slot", { key: 'b21d028a56374bc1ade6723b482b36eaf095d61a', name: "trigger" })), h("div", { key: 'ad412dcef59491cd56e5dbc7ce74a9e57fdec640', id: `${this.customId}-content`, class: this.getContentCssClassMap(), ref: (el) => (this.contentElement = el), role: this.type === 'popover' ? 'dialog' : 'tooltip', tabindex: "-1" }, h("slot", { key: '6a92b688e02a9a63786fcb999dc7a923c271087a', name: "content" }), this.type === 'popover' && (h("br-button", { key: 'd3cb6806d7b71e6893da692c087f54bce057483e', class: "close", shape: "circle", density: "small", onClick: this.hideContent, "aria-label": "Fechar popover" }, h("br-icon", { key: '0661b70afafe7bd7203cc93cbdf2537ad5dfb389', "icon-name": "fa6-solid:xmark" }))), h("div", { key: '852540bd9ef91d874df93785192dba5af023e3d8', class: this.getArrowCssClassMap(), ref: (el) => (this.arrowElement = el) })))));
396
+ }
397
+ static get is() { return "br-tooltip"; }
398
+ static get encapsulation() { return "shadow"; }
399
+ static get formAssociated() { return true; }
400
+ static get originalStyleUrls() {
401
+ return {
402
+ "$": ["tooltip.scss"]
403
+ };
404
+ }
405
+ static get styleUrls() {
406
+ return {
407
+ "$": ["tooltip.css"]
408
+ };
409
+ }
410
+ static get properties() {
411
+ return {
412
+ "customId": {
413
+ "type": "string",
414
+ "mutable": false,
415
+ "complexType": {
416
+ "original": "string",
417
+ "resolved": "string",
418
+ "references": {}
419
+ },
420
+ "required": false,
421
+ "optional": false,
422
+ "docs": {
423
+ "tags": [],
424
+ "text": "Identificador \u00FAnico.\nCaso n\u00E3o seja fornecido, um ID gerado automaticamente ser\u00E1 usado."
425
+ },
426
+ "getter": false,
427
+ "setter": false,
428
+ "attribute": "custom-id",
429
+ "reflect": true,
430
+ "defaultValue": "Helpers.generateUniqueId()"
431
+ },
432
+ "position": {
433
+ "type": "string",
434
+ "mutable": false,
435
+ "complexType": {
436
+ "original": "TooltipPosition",
437
+ "resolved": "\"bottom\" | \"left\" | \"right\" | \"top\"",
438
+ "references": {
439
+ "TooltipPosition": {
440
+ "location": "global",
441
+ "id": "global::TooltipPosition"
442
+ }
443
+ }
444
+ },
445
+ "required": false,
446
+ "optional": false,
447
+ "docs": {
448
+ "tags": [{
449
+ "name": "default",
450
+ "text": "'top'"
451
+ }],
452
+ "text": "Define a posi\u00E7\u00E3o do tooltip em rela\u00E7\u00E3o ao elemento acionador.\nAs op\u00E7\u00F5es dispon\u00EDveis s\u00E3o: 'top', 'bottom', 'left' e 'right'."
453
+ },
454
+ "getter": false,
455
+ "setter": false,
456
+ "attribute": "position",
457
+ "reflect": true,
458
+ "defaultValue": "'top'"
459
+ },
460
+ "type": {
461
+ "type": "string",
462
+ "mutable": false,
463
+ "complexType": {
464
+ "original": "TooltipType",
465
+ "resolved": "\"popover\" | \"standard\"",
466
+ "references": {
467
+ "TooltipType": {
468
+ "location": "global",
469
+ "id": "global::TooltipType"
470
+ }
471
+ }
472
+ },
473
+ "required": false,
474
+ "optional": false,
475
+ "docs": {
476
+ "tags": [{
477
+ "name": "default",
478
+ "text": "'standard'"
479
+ }],
480
+ "text": "Define o tipo de tooltip a ser exibido.\nAs op\u00E7\u00F5es dispon\u00EDveis s\u00E3o: 'standard' e 'popover'.\nO tipo 'standard' exibe um tooltip simples, enquanto o tipo 'popover' exibe um tooltip com mais informa\u00E7\u00F5es e fechamento por intera\u00E7\u00E3o."
481
+ },
482
+ "getter": false,
483
+ "setter": false,
484
+ "attribute": "type",
485
+ "reflect": true,
486
+ "defaultValue": "'standard'"
487
+ },
488
+ "density": {
489
+ "type": "string",
490
+ "mutable": false,
491
+ "complexType": {
492
+ "original": "TooltipDensity",
493
+ "resolved": "\"large\" | \"medium\" | \"small\"",
494
+ "references": {
495
+ "TooltipDensity": {
496
+ "location": "global",
497
+ "id": "global::TooltipDensity"
498
+ }
499
+ }
500
+ },
501
+ "required": false,
502
+ "optional": false,
503
+ "docs": {
504
+ "tags": [{
505
+ "name": "default",
506
+ "text": "'medium'"
507
+ }],
508
+ "text": "Define a densidade do tooltip.\nAs op\u00E7\u00F5es dispon\u00EDveis s\u00E3o: 'large', 'medium' e 'small'.\nA densidade 'small' exibe um tooltip mais compacto, enquanto a densidade 'large' exibe um tooltip mais espa\u00E7ado."
509
+ },
510
+ "getter": false,
511
+ "setter": false,
512
+ "attribute": "density",
513
+ "reflect": true,
514
+ "defaultValue": "'medium'"
515
+ },
516
+ "state": {
517
+ "type": "string",
518
+ "mutable": false,
519
+ "complexType": {
520
+ "original": "TooltipState",
521
+ "resolved": "\"error\" | \"info\" | \"success\" | \"warning\"",
522
+ "references": {
523
+ "TooltipState": {
524
+ "location": "global",
525
+ "id": "global::TooltipState"
526
+ }
527
+ }
528
+ },
529
+ "required": false,
530
+ "optional": false,
531
+ "docs": {
532
+ "tags": [{
533
+ "name": "default",
534
+ "text": "'info'"
535
+ }],
536
+ "text": "Define o estado do tooltip.\nOs estados dispon\u00EDveis s\u00E3o: 'info', 'warning', 'error' e 'success'."
537
+ },
538
+ "getter": false,
539
+ "setter": false,
540
+ "attribute": "state",
541
+ "reflect": true,
542
+ "defaultValue": "'info'"
543
+ },
544
+ "isAutoVisible": {
545
+ "type": "boolean",
546
+ "mutable": false,
547
+ "complexType": {
548
+ "original": "boolean",
549
+ "resolved": "boolean",
550
+ "references": {}
551
+ },
552
+ "required": false,
553
+ "optional": false,
554
+ "docs": {
555
+ "tags": [{
556
+ "name": "default",
557
+ "text": "false"
558
+ }],
559
+ "text": "Define se o tooltip deve ser exibido automaticamente.\nQuando definido como true, o tooltip ser\u00E1 exibido automaticamente.\nQuando definido como false, o tooltip ser\u00E1 exibido apenas quando acionado pelo usu\u00E1rio."
560
+ },
561
+ "getter": false,
562
+ "setter": false,
563
+ "attribute": "is-auto-visible",
564
+ "reflect": true,
565
+ "defaultValue": "false"
566
+ },
567
+ "showDelay": {
568
+ "type": "number",
569
+ "mutable": false,
570
+ "complexType": {
571
+ "original": "number",
572
+ "resolved": "number",
573
+ "references": {}
574
+ },
575
+ "required": false,
576
+ "optional": false,
577
+ "docs": {
578
+ "tags": [{
579
+ "name": "default",
580
+ "text": "null"
581
+ }],
582
+ "text": "Define o atraso em milissegundos para exibir o tooltip."
583
+ },
584
+ "getter": false,
585
+ "setter": false,
586
+ "attribute": "show-delay",
587
+ "reflect": true,
588
+ "defaultValue": "null"
589
+ },
590
+ "hideDelay": {
591
+ "type": "number",
592
+ "mutable": false,
593
+ "complexType": {
594
+ "original": "number",
595
+ "resolved": "number",
596
+ "references": {}
597
+ },
598
+ "required": false,
599
+ "optional": false,
600
+ "docs": {
601
+ "tags": [{
602
+ "name": "default",
603
+ "text": "null"
604
+ }],
605
+ "text": "Define o atraso em milissegundos para ocultar o tooltip."
606
+ },
607
+ "getter": false,
608
+ "setter": false,
609
+ "attribute": "hide-delay",
610
+ "reflect": true,
611
+ "defaultValue": "null"
612
+ }
613
+ };
614
+ }
615
+ static get states() {
616
+ return {
617
+ "isVisible": {}
618
+ };
619
+ }
620
+ static get events() {
621
+ return [{
622
+ "method": "brDidOpen",
623
+ "name": "brDidOpen",
624
+ "bubbles": true,
625
+ "cancelable": true,
626
+ "composed": true,
627
+ "docs": {
628
+ "tags": [],
629
+ "text": "Evento emitido quando o tooltip \u00E9 aberto."
630
+ },
631
+ "complexType": {
632
+ "original": "void",
633
+ "resolved": "void",
634
+ "references": {}
635
+ }
636
+ }, {
637
+ "method": "brDidClose",
638
+ "name": "brDidClose",
639
+ "bubbles": true,
640
+ "cancelable": true,
641
+ "composed": true,
642
+ "docs": {
643
+ "tags": [],
644
+ "text": "Evento emitido quando o tooltip \u00E9 fechado."
645
+ },
646
+ "complexType": {
647
+ "original": "void",
648
+ "resolved": "void",
649
+ "references": {}
650
+ }
651
+ }];
652
+ }
653
+ static get elementRef() { return "el"; }
654
+ static get watchers() {
655
+ return [{
656
+ "propName": "isVisible",
657
+ "methodName": "handleVisibilityChange"
658
+ }];
659
+ }
660
+ static get listeners() {
661
+ return [{
662
+ "name": "focusin",
663
+ "method": "handleFocusIn",
664
+ "target": undefined,
665
+ "capture": false,
666
+ "passive": false
667
+ }, {
668
+ "name": "focusout",
669
+ "method": "handleFocusOut",
670
+ "target": undefined,
671
+ "capture": false,
672
+ "passive": false
673
+ }, {
674
+ "name": "keydown",
675
+ "method": "handleKeyDown",
676
+ "target": "document",
677
+ "capture": false,
678
+ "passive": false
679
+ }];
680
+ }
681
+ static get attachInternalsMemberName() { return "elementInternals"; }
682
+ }
683
+ //# sourceMappingURL=tooltip.js.map