q2-tecton-elements 1.17.1 → 1.19.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 (262) hide show
  1. package/dist/cjs/click-elsewhere.cjs.entry.js +1 -1
  2. package/dist/cjs/{icons-e2bc9ee9.js → icons-afbdf88a.js} +1 -1
  3. package/dist/cjs/{index-afc50fbb.js → index-3518c78c.js} +9 -1
  4. package/dist/cjs/{index-0128397d.js → index-734296a7.js} +476 -271
  5. package/dist/cjs/loader.cjs.js +3 -3
  6. package/dist/cjs/q2-avatar.cjs.entry.js +9 -6
  7. package/dist/cjs/q2-badge_2.cjs.entry.js +46 -7
  8. package/dist/cjs/q2-btn_2.cjs.entry.js +31 -5
  9. package/dist/cjs/q2-calendar.cjs.entry.js +89 -62
  10. package/dist/cjs/q2-card.cjs.entry.js +17 -6
  11. package/dist/cjs/q2-carousel-pane.cjs.entry.js +7 -3
  12. package/dist/cjs/q2-carousel.cjs.entry.js +196 -285
  13. package/dist/cjs/q2-chart-donut.cjs.entry.js +583 -504
  14. package/dist/cjs/q2-checkbox-group.cjs.entry.js +9 -7
  15. package/dist/cjs/q2-checkbox.cjs.entry.js +17 -4
  16. package/dist/cjs/q2-dropdown-item.cjs.entry.js +9 -3
  17. package/dist/cjs/q2-dropdown.cjs.entry.js +16 -5
  18. package/dist/cjs/q2-editable-field.cjs.entry.js +16 -6
  19. package/dist/cjs/q2-icon.cjs.entry.js +6 -4
  20. package/dist/cjs/q2-loading-element.cjs.entry.js +6 -2
  21. package/dist/cjs/q2-loc.cjs.entry.js +5 -3
  22. package/dist/cjs/q2-message.cjs.entry.js +4 -3
  23. package/dist/cjs/q2-month-picker.cjs.entry.js +149 -0
  24. package/dist/cjs/q2-optgroup.cjs.entry.js +6 -5
  25. package/dist/cjs/{q2-option-list.cjs.entry.js → q2-option-list_2.cjs.entry.js} +120 -23
  26. package/dist/cjs/q2-option.cjs.entry.js +12 -2
  27. package/dist/cjs/q2-pagination.cjs.entry.js +18 -4
  28. package/dist/cjs/q2-pill.cjs.entry.js +40 -20
  29. package/dist/cjs/q2-radio-group.cjs.entry.js +13 -6
  30. package/dist/cjs/q2-radio.cjs.entry.js +13 -8
  31. package/dist/cjs/q2-section.cjs.entry.js +9 -4
  32. package/dist/cjs/q2-select.cjs.entry.js +28 -21
  33. package/dist/cjs/q2-stepper-pane.cjs.entry.js +8 -3
  34. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +5 -4
  35. package/dist/cjs/q2-stepper.cjs.entry.js +9 -7
  36. package/dist/cjs/q2-tab-container.cjs.entry.js +14 -9
  37. package/dist/cjs/q2-tab-pane.cjs.entry.js +10 -2
  38. package/dist/cjs/q2-tag.cjs.entry.js +32 -17
  39. package/dist/cjs/q2-tecton-elements.cjs.js +3 -3
  40. package/dist/cjs/q2-textarea.cjs.entry.js +20 -4
  41. package/dist/cjs/q2-tooltip.cjs.entry.js +70 -14
  42. package/dist/cjs/{shapes-c1a60d46.js → shapes-aad2b98f.js} +1 -1
  43. package/dist/cjs/tecton-tab-pane.cjs.entry.js +17 -2
  44. package/dist/collection/collection-manifest.json +4 -2
  45. package/dist/collection/components/click-elsewhere/index.js +18 -17
  46. package/dist/collection/components/q2-avatar/index.js +100 -92
  47. package/dist/collection/components/q2-avatar/styles.css +1 -1
  48. package/dist/collection/components/q2-badge/index.js +119 -111
  49. package/dist/collection/components/q2-badge/styles.css +1 -1
  50. package/dist/collection/components/q2-btn/index.js +351 -306
  51. package/dist/collection/components/q2-btn/styles.css +8 -7
  52. package/dist/collection/components/q2-calendar/index.js +565 -551
  53. package/dist/collection/components/q2-calendar/q2-month-picker.css +130 -0
  54. package/dist/collection/components/q2-calendar/q2-month-picker.js +242 -0
  55. package/dist/collection/components/q2-calendar/styles.css +1 -1
  56. package/dist/collection/components/q2-card/index.js +262 -244
  57. package/dist/collection/components/q2-card/styles.css +9 -2
  58. package/dist/collection/components/q2-carousel/index.js +249 -253
  59. package/dist/collection/components/q2-carousel/styles.css +1 -1
  60. package/dist/collection/components/q2-carousel-pane/index.js +108 -96
  61. package/dist/collection/components/q2-carousel-pane/styles.css +5 -4
  62. package/dist/collection/components/q2-chart-donut/index.js +350 -334
  63. package/dist/collection/components/q2-chart-donut/styles.css +3 -3
  64. package/dist/collection/components/q2-checkbox/index.js +296 -287
  65. package/dist/collection/components/q2-checkbox/styles.css +2 -2
  66. package/dist/collection/components/q2-checkbox-group/index.js +156 -152
  67. package/dist/collection/components/q2-checkbox-group/styles.css +1 -1
  68. package/dist/collection/components/q2-dropdown/index.js +255 -240
  69. package/dist/collection/components/q2-dropdown/styles.css +1 -1
  70. package/dist/collection/components/q2-dropdown-item/index.js +134 -123
  71. package/dist/collection/components/q2-dropdown-item/styles.css +12 -10
  72. package/dist/collection/components/q2-editable-field/index.js +300 -293
  73. package/dist/collection/components/q2-editable-field/styles.css +1 -1
  74. package/dist/collection/components/q2-icon/icons.js +358 -2158
  75. package/dist/collection/components/q2-icon/index.js +59 -49
  76. package/dist/collection/components/q2-icon/styles.css +1 -1
  77. package/dist/collection/components/q2-input/index.js +729 -705
  78. package/dist/collection/components/q2-input/styles.css +2 -2
  79. package/dist/collection/components/q2-loading/index.js +143 -132
  80. package/dist/collection/components/q2-loading/skeleton/q2-loading-element/index.js +85 -74
  81. package/dist/collection/components/q2-loading/skeleton/shapes.js +23 -36
  82. package/dist/collection/components/q2-loading/styles.css +1 -1
  83. package/dist/collection/components/q2-loc/index.js +49 -39
  84. package/dist/collection/components/q2-loc/styles.css +1 -1
  85. package/dist/collection/components/q2-message/index.js +101 -92
  86. package/dist/collection/components/q2-message/styles.css +1 -1
  87. package/dist/collection/components/q2-optgroup/index.js +64 -56
  88. package/dist/collection/components/q2-optgroup/styles.css +1 -1
  89. package/dist/collection/components/q2-option/index.js +244 -229
  90. package/dist/collection/components/q2-option/styles.css +5 -1
  91. package/dist/collection/components/q2-option-list/index.js +295 -319
  92. package/dist/collection/components/q2-option-list/styles.css +2 -50
  93. package/dist/collection/components/q2-pagination/index.js +183 -173
  94. package/dist/collection/components/q2-pagination/styles.css +1 -1
  95. package/dist/collection/components/q2-pill/index.js +276 -221
  96. package/dist/collection/components/q2-pill/styles.css +12 -7
  97. package/dist/collection/components/q2-popover/index.js +263 -0
  98. package/dist/collection/components/q2-popover/styles.css +205 -0
  99. package/dist/collection/components/q2-radio/index.js +233 -224
  100. package/dist/collection/components/q2-radio/styles.css +3 -3
  101. package/dist/collection/components/q2-radio-group/index.js +252 -244
  102. package/dist/collection/components/q2-radio-group/styles.css +1 -1
  103. package/dist/collection/components/q2-section/index.js +134 -125
  104. package/dist/collection/components/q2-section/styles.css +12 -1
  105. package/dist/collection/components/q2-select/index.js +395 -385
  106. package/dist/collection/components/q2-select/styles.css +1 -1
  107. package/dist/collection/components/q2-stepper/index.js +124 -126
  108. package/dist/collection/components/q2-stepper/styles.css +2 -1
  109. package/dist/collection/components/q2-stepper-pane/index.js +165 -149
  110. package/dist/collection/components/q2-stepper-pane/styles.css +1 -1
  111. package/dist/collection/components/q2-stepper-vertical/index.js +86 -85
  112. package/dist/collection/components/q2-stepper-vertical/styles.css +1 -1
  113. package/dist/collection/components/q2-tab-container/index.js +189 -184
  114. package/dist/collection/components/q2-tab-container/styles.css +1 -1
  115. package/dist/collection/components/q2-tab-pane/index.js +185 -166
  116. package/dist/collection/components/q2-tab-pane/styles.css +1 -1
  117. package/dist/collection/components/q2-tag/index.js +180 -125
  118. package/dist/collection/components/q2-tag/styles.css +2 -6
  119. package/dist/collection/components/q2-textarea/index.js +344 -327
  120. package/dist/collection/components/q2-textarea/styles.css +2 -2
  121. package/dist/collection/components/q2-tooltip/index.js +207 -104
  122. package/dist/collection/components/q2-tooltip/styles.css +63 -83
  123. package/dist/collection/components/tecton-tab-pane/index.js +287 -266
  124. package/dist/collection/components/tecton-tab-pane/styles.css +1 -1
  125. package/dist/collection/utils/index.js +9 -6
  126. package/dist/esm/click-elsewhere.entry.js +1 -1
  127. package/dist/esm/{icons-ed54e307.js → icons-78da5dd2.js} +1 -1
  128. package/dist/esm/{index-2ca8c93c.js → index-9c591682.js} +9 -2
  129. package/dist/esm/{index-6d5ed7cc.js → index-bb1c8c7f.js} +476 -271
  130. package/dist/esm/loader.js +3 -3
  131. package/dist/esm/polyfills/css-shim.js +1 -1
  132. package/dist/esm/q2-avatar.entry.js +9 -6
  133. package/dist/esm/q2-badge_2.entry.js +46 -7
  134. package/dist/esm/q2-btn_2.entry.js +31 -5
  135. package/dist/esm/q2-calendar.entry.js +89 -62
  136. package/dist/esm/q2-card.entry.js +17 -6
  137. package/dist/esm/q2-carousel-pane.entry.js +7 -3
  138. package/dist/esm/q2-carousel.entry.js +196 -285
  139. package/dist/esm/q2-chart-donut.entry.js +583 -504
  140. package/dist/esm/q2-checkbox-group.entry.js +9 -7
  141. package/dist/esm/q2-checkbox.entry.js +17 -4
  142. package/dist/esm/q2-dropdown-item.entry.js +9 -3
  143. package/dist/esm/q2-dropdown.entry.js +16 -5
  144. package/dist/esm/q2-editable-field.entry.js +16 -6
  145. package/dist/esm/q2-icon.entry.js +6 -4
  146. package/dist/esm/q2-loading-element.entry.js +6 -2
  147. package/dist/esm/q2-loc.entry.js +5 -3
  148. package/dist/esm/q2-message.entry.js +4 -3
  149. package/dist/esm/q2-month-picker.entry.js +145 -0
  150. package/dist/esm/q2-optgroup.entry.js +6 -5
  151. package/dist/esm/{q2-option-list.entry.js → q2-option-list_2.entry.js} +120 -24
  152. package/dist/esm/q2-option.entry.js +12 -2
  153. package/dist/esm/q2-pagination.entry.js +18 -4
  154. package/dist/esm/q2-pill.entry.js +40 -20
  155. package/dist/esm/q2-radio-group.entry.js +13 -6
  156. package/dist/esm/q2-radio.entry.js +13 -8
  157. package/dist/esm/q2-section.entry.js +9 -4
  158. package/dist/esm/q2-select.entry.js +28 -21
  159. package/dist/esm/q2-stepper-pane.entry.js +8 -3
  160. package/dist/esm/q2-stepper-vertical.entry.js +5 -4
  161. package/dist/esm/q2-stepper.entry.js +9 -7
  162. package/dist/esm/q2-tab-container.entry.js +14 -9
  163. package/dist/esm/q2-tab-pane.entry.js +10 -2
  164. package/dist/esm/q2-tag.entry.js +32 -17
  165. package/dist/esm/q2-tecton-elements.js +3 -3
  166. package/dist/esm/q2-textarea.entry.js +20 -4
  167. package/dist/esm/q2-tooltip.entry.js +70 -14
  168. package/dist/esm/{shapes-c32e3ba2.js → shapes-62b8a431.js} +1 -1
  169. package/dist/esm/tecton-tab-pane.entry.js +17 -2
  170. package/dist/loader/package.json +1 -0
  171. package/dist/q2-tecton-elements/p-0ba564b1.entry.js +1 -0
  172. package/dist/q2-tecton-elements/p-0fad9c5a.entry.js +1 -0
  173. package/dist/q2-tecton-elements/{p-73154834.js → p-13a639cf.js} +1 -1
  174. package/dist/q2-tecton-elements/p-16c11d74.entry.js +1 -0
  175. package/dist/q2-tecton-elements/p-17e0cbf1.entry.js +1 -0
  176. package/dist/q2-tecton-elements/p-18e095af.entry.js +1 -0
  177. package/dist/q2-tecton-elements/p-2c9b1308.entry.js +1 -0
  178. package/dist/q2-tecton-elements/p-2e832e42.entry.js +1 -0
  179. package/dist/q2-tecton-elements/p-315fdb74.entry.js +1 -0
  180. package/dist/q2-tecton-elements/{p-318758d4.entry.js → p-444415b5.entry.js} +1 -1
  181. package/dist/q2-tecton-elements/p-4d700630.entry.js +1 -0
  182. package/dist/q2-tecton-elements/p-4f0f45e7.entry.js +1 -0
  183. package/dist/q2-tecton-elements/p-54e792bd.entry.js +1 -0
  184. package/dist/q2-tecton-elements/{p-41fcf343.js → p-5e374fbd.js} +1 -1
  185. package/dist/q2-tecton-elements/p-5f064e1e.entry.js +39 -0
  186. package/dist/q2-tecton-elements/p-692f2d09.entry.js +1 -0
  187. package/dist/q2-tecton-elements/p-6e6b5b80.entry.js +1 -0
  188. package/dist/q2-tecton-elements/p-7e8f43d1.entry.js +1 -0
  189. package/dist/q2-tecton-elements/p-8e380edf.entry.js +1 -0
  190. package/dist/q2-tecton-elements/p-926a3e80.js +2 -0
  191. package/dist/q2-tecton-elements/{p-93c00587.js → p-92e1faf8.js} +1 -1
  192. package/dist/q2-tecton-elements/p-9772b15f.entry.js +1 -0
  193. package/dist/q2-tecton-elements/p-97aa8423.entry.js +1 -0
  194. package/dist/q2-tecton-elements/{p-17cffd7d.entry.js → p-a987402e.entry.js} +1 -1
  195. package/dist/q2-tecton-elements/p-aaf42539.entry.js +1 -0
  196. package/dist/q2-tecton-elements/p-ac674c20.entry.js +1 -0
  197. package/dist/q2-tecton-elements/p-b8b00394.entry.js +1 -0
  198. package/dist/q2-tecton-elements/p-c444a60b.entry.js +1 -0
  199. package/dist/q2-tecton-elements/p-c6c489fe.entry.js +1 -0
  200. package/dist/q2-tecton-elements/p-ce015552.entry.js +1 -0
  201. package/dist/q2-tecton-elements/p-d464fccc.entry.js +1 -0
  202. package/dist/q2-tecton-elements/p-de164483.entry.js +1 -0
  203. package/dist/q2-tecton-elements/p-df91e954.entry.js +1 -0
  204. package/dist/q2-tecton-elements/p-e6d26f39.entry.js +1 -0
  205. package/dist/q2-tecton-elements/p-e8e113c2.entry.js +1 -0
  206. package/dist/q2-tecton-elements/p-f1d06917.entry.js +1 -0
  207. package/dist/q2-tecton-elements/p-f800fd1e.entry.js +1 -0
  208. package/dist/q2-tecton-elements/p-fb37e67e.entry.js +1 -0
  209. package/dist/q2-tecton-elements/p-fc134a5d.entry.js +1 -0
  210. package/dist/q2-tecton-elements/p-fe88e979.entry.js +1 -0
  211. package/dist/q2-tecton-elements/p-ffb48ccc.entry.js +1 -0
  212. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  213. package/dist/test/helpers.js +6 -0
  214. package/dist/types/components/q2-btn/index.d.ts +1 -0
  215. package/dist/types/components/q2-calendar/q2-month-picker.d.ts +24 -0
  216. package/dist/types/components/q2-option-list/index.d.ts +1 -4
  217. package/dist/types/components/q2-pill/index.d.ts +10 -3
  218. package/dist/types/components/q2-popover/index.d.ts +26 -0
  219. package/dist/types/components/q2-tag/index.d.ts +8 -2
  220. package/dist/types/components/q2-tooltip/index.d.ts +12 -0
  221. package/dist/types/components.d.ts +203 -38
  222. package/dist/types/stencil-public-runtime.d.ts +20 -4
  223. package/dist/types/utils/index.d.ts +1 -0
  224. package/dist/types/workspace/workspace/{tecton-production_release_1.17.x → Tecton_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +2 -0
  225. package/package.json +6 -6
  226. package/dist/q2-tecton-elements/p-06865cf5.entry.js +0 -1
  227. package/dist/q2-tecton-elements/p-0d849ed4.entry.js +0 -1
  228. package/dist/q2-tecton-elements/p-2a217895.entry.js +0 -1
  229. package/dist/q2-tecton-elements/p-2b94ae62.entry.js +0 -1
  230. package/dist/q2-tecton-elements/p-2faed36b.entry.js +0 -1
  231. package/dist/q2-tecton-elements/p-30a4fdfb.entry.js +0 -1
  232. package/dist/q2-tecton-elements/p-30f81b22.entry.js +0 -1
  233. package/dist/q2-tecton-elements/p-31070ab8.entry.js +0 -1
  234. package/dist/q2-tecton-elements/p-41c22a16.entry.js +0 -1
  235. package/dist/q2-tecton-elements/p-445e7c45.entry.js +0 -1
  236. package/dist/q2-tecton-elements/p-44bdaf52.entry.js +0 -1
  237. package/dist/q2-tecton-elements/p-4c53713d.entry.js +0 -1
  238. package/dist/q2-tecton-elements/p-4da9b6b6.entry.js +0 -1
  239. package/dist/q2-tecton-elements/p-5acb7ec6.entry.js +0 -1
  240. package/dist/q2-tecton-elements/p-64605d17.entry.js +0 -1
  241. package/dist/q2-tecton-elements/p-64ca8c59.entry.js +0 -1
  242. package/dist/q2-tecton-elements/p-654fcd6b.entry.js +0 -1
  243. package/dist/q2-tecton-elements/p-661c2092.entry.js +0 -1
  244. package/dist/q2-tecton-elements/p-732dafd0.entry.js +0 -1
  245. package/dist/q2-tecton-elements/p-815c8a7d.entry.js +0 -1
  246. package/dist/q2-tecton-elements/p-824a1d7c.entry.js +0 -1
  247. package/dist/q2-tecton-elements/p-8543a0e1.entry.js +0 -1
  248. package/dist/q2-tecton-elements/p-916fd90b.entry.js +0 -1
  249. package/dist/q2-tecton-elements/p-94b3c534.entry.js +0 -1
  250. package/dist/q2-tecton-elements/p-9725d55f.entry.js +0 -1
  251. package/dist/q2-tecton-elements/p-a45c6b65.entry.js +0 -1
  252. package/dist/q2-tecton-elements/p-a659d112.entry.js +0 -1
  253. package/dist/q2-tecton-elements/p-b4b8f85c.entry.js +0 -39
  254. package/dist/q2-tecton-elements/p-b595b415.entry.js +0 -1
  255. package/dist/q2-tecton-elements/p-c5691700.js +0 -1
  256. package/dist/q2-tecton-elements/p-cde0cdff.entry.js +0 -1
  257. package/dist/q2-tecton-elements/p-d3e4cc5d.entry.js +0 -1
  258. package/dist/q2-tecton-elements/p-d781e2d9.entry.js +0 -1
  259. package/dist/q2-tecton-elements/p-d8d9e8eb.entry.js +0 -1
  260. package/dist/q2-tecton-elements/p-fbf23146.entry.js +0 -1
  261. package/dist/test/elements/q2-tag-test.js +0 -151
  262. package/dist/types/workspace/workspace/tecton-production_release_1.17.x/packages/q2-tecton-elements/.stencil/test/elements/q2-tag-test.d.ts +0 -1
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
11
+ box-shadow: var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C);
12
12
  }
13
13
 
14
14
  :host {
@@ -168,7 +168,7 @@ textarea:not([cols]) {
168
168
  textarea:focus {
169
169
  border-width: var(--comp-textarea-focus-border-width, 1px);
170
170
  border-color: var(--tct-textarea-focus-border-color, var(--t-textarea-focus-border-color, var(--t-input-focus, var(--tct-gray-9, var(--app-gray-9, #999999)))));
171
- box-shadow: var(--tct-global-focus, var(--const-global-focus, 0 0 0 2px #33b4ff)), var(--tct-textarea-focus-box-shadow, var(--t-textarea-focus-box-shadow, 0 0 transparent));
171
+ box-shadow: var(--const-double-focus-ring), var(--tct-textarea-focus-box-shadow, var(--t-textarea-focus-box-shadow, 0 0 transparent));
172
172
  }
173
173
  textarea::placeholder {
174
174
  color: var(--tct-textarea-placeholder-font-color, var(--t-textarea-placeholder-font-color, var(--t-input-placeholder-font-color, var(--tct-gray-7, var(--app-gray-7, var(--tct-gray-d1, var(--app-gray-d1, #666666)))))));
@@ -1,120 +1,223 @@
1
- import { Component, Prop, h, Element, Fragment } from '@stencil/core';
1
+ import { h, Fragment } from '@stencil/core';
2
2
  export class Q2Tooltip {
3
3
  constructor() {
4
+ this.animationEndCount = 0;
5
+ this.label = undefined;
6
+ this.block = undefined;
7
+ this.multiline = undefined;
8
+ this.persistent = undefined;
9
+ this.immediate = undefined;
4
10
  this.position = 'n';
11
+ this.focusClass = undefined;
5
12
  }
6
- render() {
7
- const classList = ['q2-tooltip-container', 'tooltipped'];
8
- classList.push(`tooltipped-${this.position}`);
9
- if (this.block) {
10
- classList.push('block');
11
- this.hostElement.style.display = 'block';
12
- }
13
- if (this.multiline) {
14
- classList.push('tooltipped-multiline');
13
+ /// Getters ///
14
+ get shouldBeVisible() {
15
+ if (this.persistent)
16
+ return true;
17
+ return this.hostElement.matches(':hover, :focus-within');
18
+ }
19
+ /// Helpers //
20
+ checkFocusClass() {
21
+ if (!this.shouldBeVisible)
22
+ return;
23
+ const isKeyboardFocus = !!this.findFocusVisibleElement(document.activeElement);
24
+ this.focusClass = isKeyboardFocus ? 'has-keyboard-focus' : 'has-generic-focus';
25
+ if (isKeyboardFocus)
26
+ return;
27
+ }
28
+ hideTooltip() {
29
+ if (this.focusClass === 'has-generic-focus')
30
+ this.focusClass = 'has-generic-focus-out';
31
+ else
32
+ this.focusClass = null;
33
+ }
34
+ animationEndHandler() {
35
+ this.animationEndCount = this.animationEndCount + 1;
36
+ const { focusClass, animationEndCount } = this;
37
+ // animationEnd is fired once for :before and once for :after pseudo elements
38
+ // there are multiple animations defined for .has-generic-focus
39
+ // so we need to wait for all of them to finish before we can remove the class
40
+ if (focusClass === 'has-generic-focus-out' || (focusClass === 'has-generic-focus' && animationEndCount === 4)) {
41
+ this.focusClass = null;
42
+ this.animationEndCount = 0;
15
43
  }
16
- if (this.persistent) {
17
- classList.push('persistent');
44
+ }
45
+ findFocusVisibleElement(element) {
46
+ if (!element)
47
+ return;
48
+ if (element.shadowRoot)
49
+ element = this.findFocusVisibleElement(element.shadowRoot.activeElement);
50
+ return (element === null || element === void 0 ? void 0 : element.matches(':focus-visible')) ? element : null;
51
+ }
52
+ /// Listeners ///
53
+ keyUpHandler(event) {
54
+ switch (event.key) {
55
+ case 'Esc':
56
+ case 'Escape':
57
+ this.hideTooltip();
58
+ break;
18
59
  }
19
- return this.label ? (h(Fragment, null,
20
- h("div", { class: classList.join(' '), "aria-label": this.label },
21
- h("slot", null)))) : (h("slot", null));
60
+ }
61
+ focusHandler() {
62
+ this.checkFocusClass();
63
+ }
64
+ focusOutHandler() {
65
+ if (this.shouldBeVisible)
66
+ return;
67
+ if (this.focusClass === 'has-generic-focus')
68
+ this.focusClass = 'has-generic-focus-out';
69
+ }
70
+ render() {
71
+ const { focusClass } = this;
72
+ const classes = ['tooltip'];
73
+ if (focusClass)
74
+ classes.push(focusClass);
75
+ return this.label ? (h(Fragment, null, h("div", { ref: el => (this.tooltipElement = el), class: classes.join(' '), "aria-label": this.label, onAnimationEnd: () => this.animationEndHandler(), role: "tooltip" }, h("slot", null)))) : (h("slot", null));
22
76
  }
23
77
  static get is() { return "q2-tooltip"; }
24
78
  static get encapsulation() { return "shadow"; }
25
- static get originalStyleUrls() { return {
26
- "$": ["styles.scss"]
27
- }; }
28
- static get styleUrls() { return {
29
- "$": ["styles.css"]
30
- }; }
31
- static get properties() { return {
32
- "label": {
33
- "type": "string",
34
- "mutable": false,
35
- "complexType": {
36
- "original": "string",
37
- "resolved": "string",
38
- "references": {}
39
- },
40
- "required": false,
41
- "optional": false,
42
- "docs": {
43
- "tags": [],
44
- "text": ""
45
- },
46
- "attribute": "label",
47
- "reflect": true
48
- },
49
- "block": {
50
- "type": "boolean",
51
- "mutable": false,
52
- "complexType": {
53
- "original": "boolean",
54
- "resolved": "boolean",
55
- "references": {}
56
- },
57
- "required": false,
58
- "optional": false,
59
- "docs": {
60
- "tags": [],
61
- "text": ""
62
- },
63
- "attribute": "block",
64
- "reflect": true
65
- },
66
- "multiline": {
67
- "type": "boolean",
68
- "mutable": false,
69
- "complexType": {
70
- "original": "boolean",
71
- "resolved": "boolean",
72
- "references": {}
73
- },
74
- "required": false,
75
- "optional": false,
76
- "docs": {
77
- "tags": [],
78
- "text": ""
79
+ static get originalStyleUrls() {
80
+ return {
81
+ "$": ["styles.scss"]
82
+ };
83
+ }
84
+ static get styleUrls() {
85
+ return {
86
+ "$": ["styles.css"]
87
+ };
88
+ }
89
+ static get properties() {
90
+ return {
91
+ "label": {
92
+ "type": "string",
93
+ "mutable": false,
94
+ "complexType": {
95
+ "original": "string",
96
+ "resolved": "string",
97
+ "references": {}
98
+ },
99
+ "required": false,
100
+ "optional": false,
101
+ "docs": {
102
+ "tags": [],
103
+ "text": ""
104
+ },
105
+ "attribute": "label",
106
+ "reflect": true
79
107
  },
80
- "attribute": "multiline",
81
- "reflect": true
82
- },
83
- "persistent": {
84
- "type": "boolean",
85
- "mutable": false,
86
- "complexType": {
87
- "original": "boolean",
88
- "resolved": "boolean",
89
- "references": {}
108
+ "block": {
109
+ "type": "boolean",
110
+ "mutable": false,
111
+ "complexType": {
112
+ "original": "boolean",
113
+ "resolved": "boolean",
114
+ "references": {}
115
+ },
116
+ "required": false,
117
+ "optional": false,
118
+ "docs": {
119
+ "tags": [],
120
+ "text": ""
121
+ },
122
+ "attribute": "block",
123
+ "reflect": true
90
124
  },
91
- "required": false,
92
- "optional": false,
93
- "docs": {
94
- "tags": [],
95
- "text": ""
125
+ "multiline": {
126
+ "type": "boolean",
127
+ "mutable": false,
128
+ "complexType": {
129
+ "original": "boolean",
130
+ "resolved": "boolean",
131
+ "references": {}
132
+ },
133
+ "required": false,
134
+ "optional": false,
135
+ "docs": {
136
+ "tags": [],
137
+ "text": ""
138
+ },
139
+ "attribute": "multiline",
140
+ "reflect": true
96
141
  },
97
- "attribute": "persistent",
98
- "reflect": true
99
- },
100
- "position": {
101
- "type": "string",
102
- "mutable": false,
103
- "complexType": {
104
- "original": "'n' | 's' | 'e' | 'w' | 'nw' | 'ne' | 'sw' | 'se'",
105
- "resolved": "\"e\" | \"n\" | \"ne\" | \"nw\" | \"s\" | \"se\" | \"sw\" | \"w\"",
106
- "references": {}
142
+ "persistent": {
143
+ "type": "boolean",
144
+ "mutable": false,
145
+ "complexType": {
146
+ "original": "boolean",
147
+ "resolved": "boolean",
148
+ "references": {}
149
+ },
150
+ "required": false,
151
+ "optional": false,
152
+ "docs": {
153
+ "tags": [],
154
+ "text": ""
155
+ },
156
+ "attribute": "persistent",
157
+ "reflect": true
107
158
  },
108
- "required": false,
109
- "optional": false,
110
- "docs": {
111
- "tags": [],
112
- "text": ""
159
+ "immediate": {
160
+ "type": "boolean",
161
+ "mutable": false,
162
+ "complexType": {
163
+ "original": "boolean",
164
+ "resolved": "boolean",
165
+ "references": {}
166
+ },
167
+ "required": false,
168
+ "optional": false,
169
+ "docs": {
170
+ "tags": [],
171
+ "text": ""
172
+ },
173
+ "attribute": "immediate",
174
+ "reflect": true
113
175
  },
114
- "attribute": "position",
115
- "reflect": true,
116
- "defaultValue": "'n'"
117
- }
118
- }; }
176
+ "position": {
177
+ "type": "string",
178
+ "mutable": false,
179
+ "complexType": {
180
+ "original": "'n' | 's' | 'e' | 'w' | 'nw' | 'ne' | 'sw' | 'se'",
181
+ "resolved": "\"e\" | \"n\" | \"ne\" | \"nw\" | \"s\" | \"se\" | \"sw\" | \"w\"",
182
+ "references": {}
183
+ },
184
+ "required": false,
185
+ "optional": false,
186
+ "docs": {
187
+ "tags": [],
188
+ "text": ""
189
+ },
190
+ "attribute": "position",
191
+ "reflect": true,
192
+ "defaultValue": "'n'"
193
+ }
194
+ };
195
+ }
196
+ static get states() {
197
+ return {
198
+ "focusClass": {}
199
+ };
200
+ }
119
201
  static get elementRef() { return "hostElement"; }
202
+ static get listeners() {
203
+ return [{
204
+ "name": "keyup",
205
+ "method": "keyUpHandler",
206
+ "target": undefined,
207
+ "capture": false,
208
+ "passive": false
209
+ }, {
210
+ "name": "focus",
211
+ "method": "focusHandler",
212
+ "target": undefined,
213
+ "capture": true,
214
+ "passive": false
215
+ }, {
216
+ "name": "focusout",
217
+ "method": "focusOutHandler",
218
+ "target": undefined,
219
+ "capture": false,
220
+ "passive": false
221
+ }];
222
+ }
120
223
  }
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
11
+ box-shadow: var(--const-double-focus-ring, 0 0 0 2px #ffffff, 0 0 0 4px #33b4ff #06C);
12
12
  }
13
13
 
14
14
  :host {
@@ -69,28 +69,29 @@ button {
69
69
  display: inline-block;
70
70
  }
71
71
 
72
- .tooltipped {
72
+ :host([block]) {
73
+ display: block;
74
+ }
75
+
76
+ .tooltip {
73
77
  --comp-background: var(--tct-tooltip-background-color, var(--t-tooltip-background-color, var(--t-top-a3, rgba(13, 13, 13, 0.85))));
74
78
  --comp-offset-default: calc(var(--app-scale-1x, 5px) * -1);
75
79
  --comp-offset: var(--tct-tooltip-offset, var(--t-tooltip-offset, var(--comp-offset-default)));
76
80
  --comp-position: var(--tct-tooltip-position, var(--t-tooltip-position, var(--app-scale-1x, 5px)));
77
81
  --comp-body-offset-default: calc(var(--app-scale-3x, 15px) * -1);
78
82
  --comp-body-offset: var(--tct-tooltip-body-offset, var(--t-tooltip-body-offset, var(--comp-body-offset-default)));
79
- --comp-duration: var(--tct-tooltip-animation-duration, var(--t-tooltip-animation-duration, var(--app-duration-1, 0.2s)));
80
- --comp-visible-duration: var(--tct-tooltip-animation-visible-duration, var(--t-tooltip-animation-visible-duration, 2s));
83
+ --comp-duration: var(--tct-tooltip-transition-duration, var(--t-tooltip-transition-duration, var(--app-duration-1, 0.2s)));
84
+ --comp-visible-duration: var(--tct-tooltip-transition-visible-duration, var(--t-tooltip-transition-visible-duration, 2s));
85
+ --comp-delay: var(--tct-tooltip-transition-delay, var(--t-tooltip-transition-delay, 0s));
86
+ display: inline-block;
81
87
  position: relative;
82
88
  }
83
- @keyframes tooltippedFade {
84
- from {
85
- opacity: 0;
86
- }
87
- to {
88
- opacity: 1;
89
- }
89
+ .tooltip:hover {
90
+ --comp-delay: var(--tct-tooltip-transition-delay, var(--t-tooltip-transition-delay, 1s));
90
91
  }
91
- .tooltipped:before {
92
+ .tooltip:before {
92
93
  position: absolute;
93
- z-index: 1000001;
94
+ z-index: 2;
94
95
  width: 0;
95
96
  height: 0;
96
97
  color: var(--comp-background);
@@ -98,13 +99,13 @@ button {
98
99
  content: "";
99
100
  border: var(--tct-tooltip-arrow-size, var(--t-tooltip-arrow-size, var(--app-scale-1x, 5px))) solid transparent;
100
101
  }
101
- .tooltipped:after {
102
+ .tooltip:after {
102
103
  --comp-padding: var(--app-scale-1x, 5px) 8px;
103
104
  position: absolute;
104
- z-index: 1000000;
105
+ z-index: 1;
105
106
  padding: var(--tct-tooltip-padding, var(--t-tooltip-padding, var(--comp-padding)));
106
- font-weight: 600;
107
- font-size: 12px;
107
+ font-weight: var(--tct-tooltip-font-weight, var(--t-tooltip-font-weight, 600));
108
+ font-size: var(--tct-tooltip-font-size, var(--t-tooltip-font-size, var(--app-font-size-small, 12px)));
108
109
  line-height: 1.5;
109
110
  color: var(--tct-tooltip-color, var(--t-tooltip-color, var(--app-white, #ffffff)));
110
111
  text-align: center;
@@ -117,29 +118,34 @@ button {
117
118
  pointer-events: none;
118
119
  content: attr(aria-label);
119
120
  background: var(--comp-background);
120
- border-radius: 3px;
121
- }
122
- .tooltipped[label][stencil-hydrated]:after {
123
- content: attr(label);
121
+ border-radius: var(--tct-tooltip-border-radius, var(--t-tooltip-border-radius, var(--app-border-radius-1, 3px)));
124
122
  }
125
- .tooltipped:before, .tooltipped:after {
123
+ .tooltip:before, .tooltip:after {
126
124
  display: inline-block;
127
125
  visibility: hidden;
128
126
  opacity: 0;
129
- transition: all var(--comp-duration) ease-in-out 0s;
127
+ transition: all var(--comp-duration) ease-in-out var(--comp-delay);
130
128
  }
131
- .tooltipped:hover:before, .tooltipped:hover:after, .tooltipped:active:before, .tooltipped:active:after, .tooltipped:focus:before, .tooltipped:focus:after, .tooltipped:focus-within:before, .tooltipped:focus-within:after {
129
+ :host([block]) .tooltip {
130
+ display: block;
131
+ }
132
+ .tooltip:hover:before, .tooltip:hover:after, .tooltip.has-keyboard-focus:focus-within:before, .tooltip.has-keyboard-focus:focus-within:after, :host([persistent]) .tooltip:before, :host([persistent]) .tooltip:after {
132
133
  text-decoration: none;
133
134
  visibility: visible;
134
135
  opacity: 1;
135
136
  }
136
- .tooltipped:hover:before, .tooltipped:hover:after, .tooltipped:active:before, .tooltipped:active:after {
137
- transition: all var(--comp-duration) ease-in-out;
138
- }
139
- .tooltipped:hover:before, .tooltipped:hover:after {
140
- transition-delay: 1s;
137
+ @keyframes tooltippedFade {
138
+ from {
139
+ opacity: 0;
140
+ }
141
+ to {
142
+ opacity: 1;
143
+ }
141
144
  }
142
- .tooltipped:focus:before, .tooltipped:focus:after, .tooltipped:focus-within:before, .tooltipped:focus-within:after {
145
+ .tooltip.has-generic-focus:focus-within:before, .tooltip.has-generic-focus:focus-within:after {
146
+ visibility: visible;
147
+ opacity: 0;
148
+ transition: none;
143
149
  animation-timing-function: ease-in-out;
144
150
  animation-fill-mode: forwards;
145
151
  animation-name: tooltippedFade, tooltippedFade;
@@ -147,13 +153,17 @@ button {
147
153
  animation-duration: var(--comp-duration);
148
154
  animation-delay: 0ms, calc(var(--comp-visible-duration) + var(--comp-duration));
149
155
  }
150
- .tooltipped[stencil-hydrated]:not([label]):not([aria-label]):hover:before, .tooltipped[stencil-hydrated]:not([label]):not([aria-label]):hover:after, .tooltipped[stencil-hydrated]:not([label]):not([aria-label]):active:before, .tooltipped[stencil-hydrated]:not([label]):not([aria-label]):active:after, .tooltipped[stencil-hydrated]:not([label]):not([aria-label]):focus:before, .tooltipped[stencil-hydrated]:not([label]):not([aria-label]):focus:after, .tooltipped:not([stencil-hydrated])[aria-label=""]:hover:before, .tooltipped:not([stencil-hydrated])[aria-label=""]:hover:after, .tooltipped:not([stencil-hydrated])[aria-label=""]:active:before, .tooltipped:not([stencil-hydrated])[aria-label=""]:active:after, .tooltipped:not([stencil-hydrated])[aria-label=""]:focus:before, .tooltipped:not([stencil-hydrated])[aria-label=""]:focus:after, .tooltipped:not([stencil-hydrated]):not([aria-label]):hover:before, .tooltipped:not([stencil-hydrated]):not([aria-label]):hover:after, .tooltipped:not([stencil-hydrated]):not([aria-label]):active:before, .tooltipped:not([stencil-hydrated]):not([aria-label]):active:after, .tooltipped:not([stencil-hydrated]):not([aria-label]):focus:before, .tooltipped:not([stencil-hydrated]):not([aria-label]):focus:after {
151
- display: none;
152
- }
153
- .tooltipped[stencil-hydrated]:not([label]):not([aria-label]):focus-within:before, .tooltipped[stencil-hydrated]:not([label]):not([aria-label]):focus-within:after, .tooltipped:not([stencil-hydrated])[aria-label=""]:focus-within:before, .tooltipped:not([stencil-hydrated])[aria-label=""]:focus-within:after, .tooltipped:not([stencil-hydrated]):not([aria-label]):focus-within:before, .tooltipped:not([stencil-hydrated]):not([aria-label]):focus-within:after {
154
- display: none;
156
+ .tooltip.has-generic-focus-out:before, .tooltip.has-generic-focus-out:after {
157
+ visibility: visible;
158
+ opacity: 0;
159
+ transition: none;
160
+ animation-timing-function: ease-in-out;
161
+ animation-fill-mode: forwards;
162
+ animation-name: tooltippedFade;
163
+ animation-direction: reverse;
164
+ animation-duration: var(--comp-duration);
155
165
  }
156
- .tooltipped-multiline:after {
166
+ :host([multiline]) .tooltip:after {
157
167
  width: max-content;
158
168
  max-width: var(--tct-tooltip-max-width, var(--t-tooltip-max-width, 200px));
159
169
  word-break: break-word;
@@ -162,116 +172,86 @@ button {
162
172
  border-collapse: separate;
163
173
  text-align: left;
164
174
  }
165
- .tooltipped-multiline.tooltipped-s:after, .tooltipped-multiline.tooltipped-n:after {
175
+ :host([position=s]) :host([multiline]) .tooltip:after, :host([position=n]) :host([multiline]) .tooltip:after {
166
176
  right: auto;
167
177
  left: 50%;
168
178
  transform: translateX(-50%);
169
179
  }
170
- .tooltipped-multiline.tooltipped-w:after, .tooltipped-multiline.tooltipped-e:after {
180
+ :host([position=w]) :host([multiline]) .tooltip:after, :host([position=e]) :host([multiline]) .tooltip:after {
171
181
  right: 100%;
172
182
  }
173
- .tooltipped-multiline:hover:after, .tooltipped-multiline:active:after, .tooltipped-multiline:focus:after {
174
- display: table-cell;
175
- }
176
- .tooltipped-multiline:focus-within:after {
183
+ :host([multiline]) .tooltip:hover:after, :host([multiline]) .tooltip:active:after, :host([multiline]) .tooltip:focus:after {
177
184
  display: table-cell;
178
185
  }
179
- .tooltipped-sticky:before, .tooltipped-sticky:after {
180
- display: inline-block;
181
- }
182
- .tooltipped-sticky.tooltipped-multiline:after {
186
+ :host([multiline]) .tooltip:focus-within:after {
183
187
  display: table-cell;
184
188
  }
185
- .tooltipped-s:after, .tooltipped-se:after, .tooltipped-sw:after {
189
+ :host([position=s]) .tooltip:after, :host([position=se]) .tooltip:after, :host([position=sw]) .tooltip:after {
186
190
  top: 100%;
187
191
  right: 50%;
188
192
  margin-top: var(--comp-position);
189
193
  }
190
- .tooltipped-s:before, .tooltipped-se:before, .tooltipped-sw:before {
194
+ :host([position=s]) .tooltip:before, :host([position=se]) .tooltip:before, :host([position=sw]) .tooltip:before {
191
195
  top: auto;
192
196
  right: 50%;
193
197
  bottom: var(--comp-offset);
194
198
  margin-right: var(--comp-offset);
195
199
  border-bottom-color: var(--comp-background);
196
200
  }
197
- .tooltipped-se:after {
201
+ :host([position=se]) .tooltip:after {
198
202
  right: auto;
199
203
  left: 50%;
200
204
  margin-left: var(--comp-body-offset);
201
205
  }
202
- .tooltipped-sw:after {
206
+ :host([position=sw]) .tooltip:after {
203
207
  margin-right: var(--comp-body-offset);
204
208
  }
205
- .tooltipped-n:after, .tooltipped-ne:after, .tooltipped-nw:after {
209
+ :host([position=n]) .tooltip:after, :host([position=ne]) .tooltip:after, :host([position=nw]) .tooltip:after {
206
210
  right: 50%;
207
211
  bottom: 100%;
208
212
  margin-bottom: var(--comp-position);
209
213
  }
210
- .tooltipped-n:before, .tooltipped-ne:before, .tooltipped-nw:before {
214
+ :host([position=n]) .tooltip:before, :host([position=ne]) .tooltip:before, :host([position=nw]) .tooltip:before {
211
215
  top: var(--comp-offset);
212
216
  right: 50%;
213
217
  bottom: auto;
214
218
  margin-right: var(--comp-offset);
215
219
  border-top-color: var(--comp-background);
216
220
  }
217
- .tooltipped-ne:after {
221
+ :host([position=ne]) .tooltip:after {
218
222
  right: auto;
219
223
  left: 50%;
220
224
  margin-left: var(--comp-body-offset);
221
225
  }
222
- .tooltipped-nw:after {
226
+ :host([position=nw]) .tooltip:after {
223
227
  margin-right: var(--comp-body-offset);
224
228
  }
225
- .tooltipped-s:after, .tooltipped-n:after {
229
+ :host([position=s]) .tooltip:after, :host([position=n]) .tooltip:after {
226
230
  transform: translateX(50%);
227
231
  }
228
- .tooltipped-w:after {
232
+ :host([position=w]) .tooltip:after {
229
233
  right: 100%;
230
234
  bottom: 50%;
231
235
  margin-right: var(--comp-position);
232
236
  transform: translateY(50%);
233
237
  }
234
- .tooltipped-w:before {
238
+ :host([position=w]) .tooltip:before {
235
239
  top: 50%;
236
240
  bottom: 50%;
237
241
  left: var(--comp-offset);
238
242
  margin-top: var(--comp-offset);
239
243
  border-left-color: var(--comp-background);
240
244
  }
241
- .tooltipped-e:after {
245
+ :host([position=e]) .tooltip:after {
242
246
  bottom: 50%;
243
247
  left: 100%;
244
248
  margin-left: var(--comp-position);
245
249
  transform: translateY(50%);
246
250
  }
247
- .tooltipped-e:before {
251
+ :host([position=e]) .tooltip:before {
248
252
  top: 50%;
249
253
  right: var(--comp-offset);
250
254
  bottom: 50%;
251
255
  margin-top: var(--comp-offset);
252
256
  border-right-color: var(--comp-background);
253
- }
254
-
255
- .phone .tooltipped:not(.tooltip-popover):hover:before, .phone .tooltipped:not(.tooltip-popover):hover:after, .phone .tooltipped:not(.tooltip-popover):active:before, .phone .tooltipped:not(.tooltip-popover):active:after, .phone .tooltipped:not(.tooltip-popover):focus:before, .phone .tooltipped:not(.tooltip-popover):focus:after, .phone .tooltipped:not(.tooltip-popover):focus-within:before, .phone .tooltipped:not(.tooltip-popover):focus-within:after,
256
- .tablet .tooltipped:not(.tooltip-popover):hover:before,
257
- .tablet .tooltipped:not(.tooltip-popover):hover:after,
258
- .tablet .tooltipped:not(.tooltip-popover):active:before,
259
- .tablet .tooltipped:not(.tooltip-popover):active:after,
260
- .tablet .tooltipped:not(.tooltip-popover):focus:before,
261
- .tablet .tooltipped:not(.tooltip-popover):focus:after,
262
- .tablet .tooltipped:not(.tooltip-popover):focus-within:before,
263
- .tablet .tooltipped:not(.tooltip-popover):focus-within:after {
264
- display: none;
265
- }
266
-
267
- .q2-tooltip-container {
268
- display: inline-block;
269
- transition: all var(--comp-duration) ease-in-out 0s;
270
- }
271
- .q2-tooltip-container.block {
272
- display: block;
273
- }
274
- .q2-tooltip-container.persistent.tooltipped:before, .q2-tooltip-container.persistent.tooltipped:after {
275
- visibility: visible;
276
- opacity: 1;
277
257
  }