@watermarkinsights/ripple 3.7.0 → 3.8.0-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 (256) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/{functions-13b0e88e.js → functions-f0693632.js} +442 -442
  3. package/dist/cjs/{global-c802d13c.js → global-0d9945cb.js} +65 -65
  4. package/dist/cjs/{http-service-9e8c4dd5.js → http-service-494d81de.js} +49 -49
  5. package/dist/cjs/{interfaces-30a74c1f.js → interfaces-a3338581.js} +29 -29
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/priv-chart-popover.cjs.entry.js +79 -79
  8. package/dist/cjs/priv-datepicker.cjs.entry.js +673 -668
  9. package/dist/cjs/priv-navigator-button.cjs.entry.js +19 -19
  10. package/dist/cjs/priv-navigator-item.cjs.entry.js +23 -23
  11. package/dist/cjs/ripple.cjs.js +2 -2
  12. package/dist/cjs/wm-action-menu_2.cjs.entry.js +342 -342
  13. package/dist/cjs/wm-button.cjs.entry.js +237 -237
  14. package/dist/cjs/wm-chart-slice.cjs.entry.js +13 -13
  15. package/dist/cjs/wm-chart.cjs.entry.js +475 -475
  16. package/dist/cjs/wm-datepicker.cjs.entry.js +272 -263
  17. package/dist/cjs/wm-input.cjs.entry.js +135 -135
  18. package/dist/cjs/wm-modal-footer.cjs.entry.js +32 -32
  19. package/dist/cjs/wm-modal-header.cjs.entry.js +34 -34
  20. package/dist/cjs/wm-modal.cjs.entry.js +162 -162
  21. package/dist/cjs/wm-navigator.cjs.entry.js +269 -269
  22. package/dist/cjs/wm-network-uploader.cjs.entry.js +421 -421
  23. package/dist/cjs/wm-option_2.cjs.entry.js +496 -496
  24. package/dist/cjs/wm-pagination.cjs.entry.js +168 -168
  25. package/dist/cjs/wm-search.cjs.entry.js +233 -233
  26. package/dist/cjs/wm-snackbar.cjs.entry.js +171 -171
  27. package/dist/cjs/wm-tab-item_3.cjs.entry.js +298 -298
  28. package/dist/cjs/wm-tag-input.cjs.entry.js +580 -571
  29. package/dist/cjs/wm-timepicker.cjs.entry.js +384 -381
  30. package/dist/cjs/wm-toggletip.cjs.entry.js +125 -125
  31. package/dist/cjs/wm-uploader.cjs.entry.js +347 -347
  32. package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
  33. package/dist/collection/components/wm-action-menu/wm-action-menu.js +460 -460
  34. package/dist/collection/components/wm-button/wm-button.js +503 -503
  35. package/dist/collection/components/wm-chart/priv-chart-popover/priv-chart-popover.js +232 -232
  36. package/dist/collection/components/wm-chart/wm-chart-slice.js +64 -64
  37. package/dist/collection/components/wm-chart/wm-chart.css +3 -0
  38. package/dist/collection/components/wm-chart/wm-chart.js +718 -718
  39. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +1039 -1015
  40. package/dist/collection/components/wm-datepicker/wm-datepicker.js +483 -468
  41. package/dist/collection/components/wm-input/wm-input.js +423 -423
  42. package/dist/collection/components/wm-menuitem/wm-menuitem.js +444 -444
  43. package/dist/collection/components/wm-modal/wm-modal-footer.js +141 -141
  44. package/dist/collection/components/wm-modal/wm-modal-header.js +92 -92
  45. package/dist/collection/components/wm-modal/wm-modal.js +459 -459
  46. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +97 -97
  47. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +114 -114
  48. package/dist/collection/components/wm-navigator/wm-navigator.js +468 -468
  49. package/dist/collection/components/wm-option/wm-option.js +422 -422
  50. package/dist/collection/components/wm-pagination/wm-pagination.js +368 -368
  51. package/dist/collection/components/wm-search/wm-search.js +480 -480
  52. package/dist/collection/components/wm-select/wm-select.js +720 -720
  53. package/dist/collection/components/wm-snackbar/wm-snackbar.js +297 -297
  54. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +216 -216
  55. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +330 -330
  56. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +104 -104
  57. package/dist/collection/components/wm-tag-input/wm-tag-input.js +810 -801
  58. package/dist/collection/components/wm-timepicker/wm-timepicker.js +583 -580
  59. package/dist/collection/components/wm-toggletip/wm-toggletip.js +241 -241
  60. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +753 -753
  61. package/dist/collection/components/wm-uploader/wm-uploader.js +748 -748
  62. package/dist/collection/components/wm-wrapper/wm-wrapper.js +27 -27
  63. package/dist/collection/dev/scripts.js +20 -20
  64. package/dist/collection/global/__mocks__/functions.js +6 -6
  65. package/dist/collection/global/functions.js +445 -445
  66. package/dist/collection/global/global.js +72 -72
  67. package/dist/collection/global/interfaces.js +49 -49
  68. package/dist/collection/global/services/__mocks__/http-service.js +130 -130
  69. package/dist/collection/global/services/http-service.js +50 -50
  70. package/dist/collection/lang/lang.js +5 -5
  71. package/dist/collection/lang/missing.js +39 -39
  72. package/dist/collection/lang/piglatin.js +93 -93
  73. package/dist/esm/{functions-6ddad20e.js → functions-cbfc81d1.js} +442 -442
  74. package/dist/esm/{global-a4da88c7.js → global-6f2aeeeb.js} +65 -65
  75. package/dist/esm/{http-service-5d037e16.js → http-service-3dc3b3e7.js} +49 -49
  76. package/dist/esm/{interfaces-61c6305b.js → interfaces-2b97fab2.js} +29 -29
  77. package/dist/esm/loader.js +2 -2
  78. package/dist/esm/polyfills/core-js.js +0 -0
  79. package/dist/esm/polyfills/dom.js +0 -0
  80. package/dist/esm/polyfills/es5-html-element.js +0 -0
  81. package/dist/esm/polyfills/index.js +0 -0
  82. package/dist/esm/polyfills/system.js +0 -0
  83. package/dist/esm/priv-chart-popover.entry.js +79 -79
  84. package/dist/esm/priv-datepicker.entry.js +673 -668
  85. package/dist/esm/priv-navigator-button.entry.js +19 -19
  86. package/dist/esm/priv-navigator-item.entry.js +23 -23
  87. package/dist/esm/ripple.js +2 -2
  88. package/dist/esm/wm-action-menu_2.entry.js +342 -342
  89. package/dist/esm/wm-button.entry.js +237 -237
  90. package/dist/esm/wm-chart-slice.entry.js +13 -13
  91. package/dist/esm/wm-chart.entry.js +475 -475
  92. package/dist/esm/wm-datepicker.entry.js +272 -263
  93. package/dist/esm/wm-input.entry.js +135 -135
  94. package/dist/esm/wm-modal-footer.entry.js +32 -32
  95. package/dist/esm/wm-modal-header.entry.js +34 -34
  96. package/dist/esm/wm-modal.entry.js +162 -162
  97. package/dist/esm/wm-navigator.entry.js +269 -269
  98. package/dist/esm/wm-network-uploader.entry.js +421 -421
  99. package/dist/esm/wm-option_2.entry.js +496 -496
  100. package/dist/esm/wm-pagination.entry.js +168 -168
  101. package/dist/esm/wm-search.entry.js +233 -233
  102. package/dist/esm/wm-snackbar.entry.js +171 -171
  103. package/dist/esm/wm-tab-item_3.entry.js +298 -298
  104. package/dist/esm/wm-tag-input.entry.js +580 -571
  105. package/dist/esm/wm-timepicker.entry.js +384 -381
  106. package/dist/esm/wm-toggletip.entry.js +125 -125
  107. package/dist/esm/wm-uploader.entry.js +347 -347
  108. package/dist/esm/wm-wrapper.entry.js +12 -12
  109. package/dist/esm-es5/functions-cbfc81d1.js +15 -0
  110. package/dist/esm-es5/global-6f2aeeeb.js +1 -0
  111. package/dist/esm-es5/http-service-3dc3b3e7.js +1 -0
  112. package/dist/esm-es5/index-66f8130e.js +1 -0
  113. package/dist/esm-es5/index.js +0 -0
  114. package/dist/esm-es5/interfaces-2b97fab2.js +1 -0
  115. package/dist/esm-es5/loader.js +1 -0
  116. package/dist/esm-es5/priv-chart-popover.entry.js +1 -0
  117. package/dist/esm-es5/priv-datepicker.entry.js +1 -0
  118. package/dist/esm-es5/priv-navigator-button.entry.js +1 -0
  119. package/dist/esm-es5/priv-navigator-item.entry.js +1 -0
  120. package/dist/esm-es5/ripple.js +1 -0
  121. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -0
  122. package/dist/esm-es5/wm-button.entry.js +1 -0
  123. package/dist/esm-es5/wm-chart-slice.entry.js +1 -0
  124. package/dist/esm-es5/wm-chart.entry.js +1 -0
  125. package/dist/esm-es5/wm-datepicker.entry.js +1 -0
  126. package/dist/esm-es5/wm-input.entry.js +1 -0
  127. package/dist/esm-es5/wm-modal-footer.entry.js +1 -0
  128. package/dist/esm-es5/wm-modal-header.entry.js +1 -0
  129. package/dist/esm-es5/wm-modal.entry.js +1 -0
  130. package/dist/esm-es5/wm-navigator.entry.js +1 -0
  131. package/dist/esm-es5/wm-network-uploader.entry.js +1 -0
  132. package/dist/esm-es5/wm-option_2.entry.js +1 -0
  133. package/dist/esm-es5/wm-pagination.entry.js +1 -0
  134. package/dist/esm-es5/wm-search.entry.js +1 -0
  135. package/dist/esm-es5/wm-snackbar.entry.js +1 -0
  136. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -0
  137. package/dist/esm-es5/wm-tag-input.entry.js +1 -0
  138. package/dist/esm-es5/wm-timepicker.entry.js +1 -0
  139. package/dist/esm-es5/wm-toggletip.entry.js +1 -0
  140. package/dist/esm-es5/wm-uploader.entry.js +1 -0
  141. package/dist/esm-es5/wm-wrapper.entry.js +1 -0
  142. package/dist/index.js +1 -1
  143. package/dist/loader/index.js +1 -1
  144. package/dist/ripple/p-0418abd7.system.js +15 -0
  145. package/dist/ripple/p-065e2ca1.entry.js +1 -0
  146. package/dist/ripple/p-06627dcf.entry.js +1 -0
  147. package/dist/ripple/p-08b2262e.system.entry.js +1 -0
  148. package/dist/ripple/p-09432004.system.entry.js +1 -0
  149. package/dist/ripple/{p-bc9ca97b.entry.js → p-0d8bd4ee.entry.js} +1 -1
  150. package/dist/ripple/{p-cfdf1a79.entry.js → p-111f705a.entry.js} +1 -1
  151. package/dist/ripple/p-1d899a2d.system.entry.js +1 -0
  152. package/dist/ripple/p-252e91de.entry.js +1 -0
  153. package/dist/ripple/p-261ea633.system.entry.js +1 -0
  154. package/dist/ripple/p-2cdfb4cc.entry.js +1 -0
  155. package/dist/ripple/p-2d49a016.system.entry.js +1 -0
  156. package/dist/ripple/{p-e43b4eda.entry.js → p-2f91e2a6.entry.js} +1 -1
  157. package/dist/ripple/p-366a3db1.system.entry.js +1 -0
  158. package/dist/ripple/p-3e1dd662.entry.js +1 -0
  159. package/dist/ripple/p-3fb41fe3.system.entry.js +1 -0
  160. package/dist/ripple/{p-888bec42.js → p-43f1298b.js} +0 -0
  161. package/dist/ripple/p-50ea2036.system.js +1 -0
  162. package/dist/ripple/{p-d22c957d.entry.js → p-51d2b9a0.entry.js} +1 -1
  163. package/dist/ripple/p-5a528af7.entry.js +1 -0
  164. package/dist/ripple/{p-66513af1.entry.js → p-5ad7afc0.entry.js} +1 -1
  165. package/dist/ripple/p-5bd3aa5a.system.entry.js +1 -0
  166. package/dist/ripple/p-656f8dad.system.js +1 -0
  167. package/dist/ripple/p-67fcdd5d.entry.js +1 -0
  168. package/dist/ripple/p-6b4374e3.system.entry.js +1 -0
  169. package/dist/ripple/p-6bc37009.system.entry.js +1 -0
  170. package/dist/ripple/p-7a9aac92.system.entry.js +1 -0
  171. package/dist/ripple/p-7bc744bf.system.entry.js +1 -0
  172. package/dist/ripple/p-85d12cf2.system.entry.js +1 -0
  173. package/dist/ripple/{p-08b273ba.entry.js → p-8afdc986.entry.js} +1 -1
  174. package/dist/ripple/p-8d97d1d5.system.entry.js +1 -0
  175. package/dist/ripple/p-8f05bc58.system.entry.js +1 -0
  176. package/dist/ripple/p-90aebfd6.system.entry.js +1 -0
  177. package/dist/ripple/p-9276c5e4.entry.js +1 -0
  178. package/dist/ripple/p-92b6bc97.system.entry.js +1 -0
  179. package/dist/ripple/p-99548d58.system.js +1 -0
  180. package/dist/ripple/p-9d02957d.system.js +1 -0
  181. package/dist/ripple/p-ae4e95ce.system.entry.js +1 -0
  182. package/dist/ripple/p-b3ce2033.system.entry.js +1 -0
  183. package/dist/ripple/p-b4e9a8e3.entry.js +1 -0
  184. package/dist/ripple/{p-857a0bc0.js → p-b5edcf38.js} +0 -0
  185. package/dist/ripple/p-b626f3b9.system.entry.js +1 -0
  186. package/dist/ripple/p-b840acea.system.entry.js +1 -0
  187. package/dist/ripple/p-ba30bf08.js +1 -0
  188. package/dist/ripple/p-c10dee71.system.js +1 -0
  189. package/dist/ripple/p-c3a9a5da.system.entry.js +1 -0
  190. package/dist/ripple/p-c730ce74.entry.js +1 -0
  191. package/dist/ripple/p-d0643c9b.entry.js +1 -0
  192. package/dist/ripple/p-da78496a.entry.js +1 -0
  193. package/dist/ripple/{p-b8aa478f.entry.js → p-dc196bc2.entry.js} +1 -1
  194. package/dist/ripple/p-deae1a7a.entry.js +1 -0
  195. package/dist/ripple/p-e06b8ab3.system.entry.js +1 -0
  196. package/dist/ripple/{p-b495e06c.entry.js → p-e3bab713.entry.js} +1 -1
  197. package/dist/ripple/p-e8acac87.system.entry.js +1 -0
  198. package/dist/ripple/p-eed76888.system.entry.js +1 -0
  199. package/dist/ripple/p-f5df5903.system.js +1 -0
  200. package/dist/ripple/{p-a6d6eae7.js → p-fd8070fb.js} +0 -0
  201. package/dist/ripple/p-ff5ec153.entry.js +1 -0
  202. package/dist/ripple/ripple.esm.js +1 -1
  203. package/dist/ripple/ripple.js +130 -0
  204. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +48 -48
  205. package/dist/types/components/wm-button/wm-button.d.ts +44 -44
  206. package/dist/types/components/wm-chart/priv-chart-popover/priv-chart-popover.d.ts +23 -23
  207. package/dist/types/components/wm-chart/wm-chart-slice.d.ts +8 -8
  208. package/dist/types/components/wm-chart/wm-chart.d.ts +82 -82
  209. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +80 -76
  210. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +42 -41
  211. package/dist/types/components/wm-input/wm-input.d.ts +46 -46
  212. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +34 -34
  213. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +15 -15
  214. package/dist/types/components/wm-modal/wm-modal-header.d.ts +12 -12
  215. package/dist/types/components/wm-modal/wm-modal.d.ts +41 -41
  216. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +10 -10
  217. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +13 -13
  218. package/dist/types/components/wm-navigator/wm-navigator.d.ts +61 -61
  219. package/dist/types/components/wm-option/wm-option.d.ts +32 -32
  220. package/dist/types/components/wm-pagination/wm-pagination.d.ts +32 -32
  221. package/dist/types/components/wm-search/wm-search.d.ts +86 -86
  222. package/dist/types/components/wm-select/wm-select.d.ts +66 -66
  223. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +35 -35
  224. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +38 -38
  225. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +53 -53
  226. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +20 -20
  227. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +92 -92
  228. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +61 -61
  229. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +27 -27
  230. package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +85 -85
  231. package/dist/types/components/wm-uploader/wm-uploader.d.ts +80 -80
  232. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +7 -7
  233. package/dist/types/components.d.ts +25 -24
  234. package/dist/types/global/__mocks__/functions.d.ts +6 -6
  235. package/dist/types/global/functions.d.ts +40 -40
  236. package/dist/types/global/global.d.ts +1 -1
  237. package/dist/types/global/interfaces.d.ts +34 -34
  238. package/dist/types/global/services/__mocks__/http-service.d.ts +6 -6
  239. package/dist/types/global/services/http-service.d.ts +4 -4
  240. package/dist/types/lang/lang.d.ts +5 -5
  241. package/package.json +47 -47
  242. package/dist/ripple/p-0068e871.entry.js +0 -1
  243. package/dist/ripple/p-00999aeb.entry.js +0 -1
  244. package/dist/ripple/p-11c09317.entry.js +0 -1
  245. package/dist/ripple/p-196b4c55.entry.js +0 -1
  246. package/dist/ripple/p-1a3df227.entry.js +0 -1
  247. package/dist/ripple/p-3590a57f.entry.js +0 -1
  248. package/dist/ripple/p-3a178ac8.entry.js +0 -1
  249. package/dist/ripple/p-46371fad.entry.js +0 -1
  250. package/dist/ripple/p-5548fc7c.js +0 -1
  251. package/dist/ripple/p-5c73fd59.entry.js +0 -1
  252. package/dist/ripple/p-828316d6.entry.js +0 -1
  253. package/dist/ripple/p-9624967f.entry.js +0 -1
  254. package/dist/ripple/p-99e2c5f6.entry.js +0 -1
  255. package/dist/ripple/p-bf985c5d.entry.js +0 -1
  256. package/dist/ripple/p-cd6de442.entry.js +0 -1
@@ -1,241 +1,241 @@
1
- import { Component, Host, h, Element, Prop, State, Listen } from "@stencil/core";
2
- import { shouldOpenUp, shouldOpenDown, shouldShiftLeft, shouldShiftRight, intl } from "../../global/functions";
3
- export class Toggletip {
4
- constructor() {
5
- this.tooltipPosition = "bottom-right";
6
- this.isOpen = false;
7
- this.isTabbing = false;
8
- this.tooltipMessage = intl.formatMessage({
9
- id: "toggletip.moreInformation",
10
- defaultMessage: "More information",
11
- });
12
- }
13
- get tempTooltip() {
14
- // instances of this.tempTooltip should be replaced with this.tooltip once tooltipText is fully phased out
15
- return this.tooltip || this.tooltipText;
16
- }
17
- componentWillLoad() {
18
- const validTooltipPositions = [
19
- "top",
20
- "right",
21
- "bottom",
22
- "left",
23
- "top-right",
24
- "top-left",
25
- "bottom-right",
26
- "bottom-left",
27
- ];
28
- if (!this.label) {
29
- console.error("wm-toggletip must have a label property");
30
- }
31
- if (!this.tempTooltip) {
32
- console.error("wm-toggletip must have a tooltip property");
33
- }
34
- if (!validTooltipPositions.includes(this.tooltipPosition)) {
35
- console.error(`wm-toggletip: tooltip-position has an invalid value of "${this.tooltipPosition}", make sure to use one of the following values: ${validTooltipPositions}`);
36
- }
37
- if (this.tooltipText) {
38
- console.warn("wm-toggletip: tooltip-text has been deprecated as of v3.1.0. Please use tooltip instead.");
39
- }
40
- this.el.focus = function () {
41
- this.shadowRoot.querySelector("button").focus();
42
- };
43
- }
44
- handleKeydown(ev) {
45
- switch (ev.key) {
46
- case "Escape":
47
- ev.preventDefault();
48
- if (this.isOpen) {
49
- ev.stopPropagation(); // prevent closing modal if within one
50
- this.close();
51
- }
52
- break;
53
- case "Tab":
54
- if (this.isOpen) {
55
- this.close();
56
- }
57
- }
58
- }
59
- toggleTabbingOn() {
60
- this.isTabbing = true;
61
- }
62
- toggleTabbingOff() {
63
- this.isTabbing = false;
64
- }
65
- handleClick(ev) {
66
- if (this.isOpen) {
67
- if (ev.target === this.el || this.el.contains(ev.target)) {
68
- // Re-announce if clicking any part of the component while open
69
- this.announceToggletip();
70
- }
71
- else {
72
- this.close();
73
- }
74
- }
75
- }
76
- open() {
77
- this.isOpen = true;
78
- this.announceToggletip();
79
- }
80
- close() {
81
- this.isOpen = false;
82
- this.hideTooltip();
83
- }
84
- showTooltip() {
85
- // Because a :hover pseudoclass would apply before the tooltip is repositioned, hover styles must be applied through a class
86
- // Otherwise, the tooltip will flash on-screen and possibly create scrollbars
87
- this.setToggletipPosition();
88
- this.tooltipEl.classList.add("hover");
89
- }
90
- hideTooltip() {
91
- this.tooltipEl.classList.remove("hover");
92
- }
93
- announceToggletip() {
94
- this.liveRegionEl.innerHTML = "";
95
- setTimeout(() => {
96
- this.liveRegionEl.innerHTML = this.tempTooltip;
97
- }, 10);
98
- }
99
- setToggletipPosition() {
100
- // Vertical
101
- if (this.tooltipPosition.includes("bottom") && shouldOpenUp(this.el, this.toggletipEl)) {
102
- this.tooltipPosition = this.tooltipPosition.replace("bottom", "top");
103
- }
104
- else if (this.tooltipPosition.includes("top") && shouldOpenDown(this.el, this.toggletipEl)) {
105
- this.tooltipPosition = this.tooltipPosition.replace("top", "bottom");
106
- }
107
- // Horizontal
108
- if (this.tooltipPosition.includes("left") && shouldShiftRight(this.el, this.toggletipEl)) {
109
- this.tooltipPosition = this.tooltipPosition.replace("left", "right");
110
- }
111
- else if (this.tooltipPosition.includes("right") && shouldShiftLeft(this.el, this.toggletipEl)) {
112
- this.tooltipPosition = this.tooltipPosition.replace("right", "left");
113
- }
114
- }
115
- render() {
116
- return (h(Host, null,
117
- h("button", { class: `button ${this.isTabbing ? "user-is-tabbing" : ""}`, type: "button", "aria-label": this.label, onClick: () => {
118
- this.setToggletipPosition();
119
- this.open();
120
- },
121
- // In order to position the tooltip identically to the toggletip, it's presence is determined by these four events
122
- onMouseEnter: () => this.showTooltip(), onMouseLeave: () => this.hideTooltip(), onFocus: () => this.showTooltip(), onBlur: () => this.hideTooltip() }),
123
- h("div", { ref: (el) => (this.tooltipEl = el), class: `tooltip ${this.tooltipPosition} ${this.isOpen ? "hidden" : ""}`, "aria-hidden": "true" }, this.tooltipMessage),
124
- h("div", { ref: (el) => (this.toggletipEl = el), class: `toggletip ${this.isOpen ? "" : "hidden"} ${this.tooltipPosition}` }, this.tempTooltip),
125
- h("div", { ref: (el) => (this.liveRegionEl = el), class: "live-region sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true" })));
126
- }
127
- static get is() { return "wm-toggletip"; }
128
- static get encapsulation() { return "shadow"; }
129
- static get originalStyleUrls() { return {
130
- "$": ["wm-toggletip.scss"]
131
- }; }
132
- static get styleUrls() { return {
133
- "$": ["wm-toggletip.css"]
134
- }; }
135
- static get properties() { return {
136
- "label": {
137
- "type": "string",
138
- "mutable": false,
139
- "complexType": {
140
- "original": "string",
141
- "resolved": "string | undefined",
142
- "references": {}
143
- },
144
- "required": false,
145
- "optional": true,
146
- "docs": {
147
- "tags": [],
148
- "text": ""
149
- },
150
- "attribute": "label",
151
- "reflect": false
152
- },
153
- "tooltip": {
154
- "type": "string",
155
- "mutable": true,
156
- "complexType": {
157
- "original": "string",
158
- "resolved": "string | undefined",
159
- "references": {}
160
- },
161
- "required": false,
162
- "optional": true,
163
- "docs": {
164
- "tags": [],
165
- "text": ""
166
- },
167
- "attribute": "tooltip",
168
- "reflect": false
169
- },
170
- "tooltipText": {
171
- "type": "string",
172
- "mutable": false,
173
- "complexType": {
174
- "original": "string",
175
- "resolved": "string | undefined",
176
- "references": {}
177
- },
178
- "required": false,
179
- "optional": true,
180
- "docs": {
181
- "tags": [],
182
- "text": ""
183
- },
184
- "attribute": "tooltip-text",
185
- "reflect": false
186
- },
187
- "tooltipPosition": {
188
- "type": "string",
189
- "mutable": true,
190
- "complexType": {
191
- "original": "TooltipPosition",
192
- "resolved": "\"bottom\" | \"bottom-left\" | \"bottom-right\" | \"left\" | \"right\" | \"top\" | \"top-left\" | \"top-right\"",
193
- "references": {
194
- "TooltipPosition": {
195
- "location": "import",
196
- "path": "../../global/interfaces"
197
- }
198
- }
199
- },
200
- "required": false,
201
- "optional": false,
202
- "docs": {
203
- "tags": [],
204
- "text": ""
205
- },
206
- "attribute": "tooltip-position",
207
- "reflect": true,
208
- "defaultValue": "\"bottom-right\""
209
- }
210
- }; }
211
- static get states() { return {
212
- "isOpen": {},
213
- "isTabbing": {}
214
- }; }
215
- static get elementRef() { return "el"; }
216
- static get listeners() { return [{
217
- "name": "keydown",
218
- "method": "handleKeydown",
219
- "target": undefined,
220
- "capture": false,
221
- "passive": false
222
- }, {
223
- "name": "wmUserIsTabbing",
224
- "method": "toggleTabbingOn",
225
- "target": "window",
226
- "capture": false,
227
- "passive": false
228
- }, {
229
- "name": "wmUserIsNotTabbing",
230
- "method": "toggleTabbingOff",
231
- "target": "window",
232
- "capture": false,
233
- "passive": false
234
- }, {
235
- "name": "click",
236
- "method": "handleClick",
237
- "target": "document",
238
- "capture": false,
239
- "passive": false
240
- }]; }
241
- }
1
+ import { Component, Host, h, Element, Prop, State, Listen } from "@stencil/core";
2
+ import { shouldOpenUp, shouldOpenDown, shouldShiftLeft, shouldShiftRight, intl } from "../../global/functions";
3
+ export class Toggletip {
4
+ constructor() {
5
+ this.tooltipPosition = "bottom-right";
6
+ this.isOpen = false;
7
+ this.isTabbing = false;
8
+ this.tooltipMessage = intl.formatMessage({
9
+ id: "toggletip.moreInformation",
10
+ defaultMessage: "More information",
11
+ });
12
+ }
13
+ get tempTooltip() {
14
+ // instances of this.tempTooltip should be replaced with this.tooltip once tooltipText is fully phased out
15
+ return this.tooltip || this.tooltipText;
16
+ }
17
+ componentWillLoad() {
18
+ const validTooltipPositions = [
19
+ "top",
20
+ "right",
21
+ "bottom",
22
+ "left",
23
+ "top-right",
24
+ "top-left",
25
+ "bottom-right",
26
+ "bottom-left",
27
+ ];
28
+ if (!this.label) {
29
+ console.error("wm-toggletip must have a label property");
30
+ }
31
+ if (!this.tempTooltip) {
32
+ console.error("wm-toggletip must have a tooltip property");
33
+ }
34
+ if (!validTooltipPositions.includes(this.tooltipPosition)) {
35
+ console.error(`wm-toggletip: tooltip-position has an invalid value of "${this.tooltipPosition}", make sure to use one of the following values: ${validTooltipPositions}`);
36
+ }
37
+ if (this.tooltipText) {
38
+ console.warn("wm-toggletip: tooltip-text has been deprecated as of v3.1.0. Please use tooltip instead.");
39
+ }
40
+ this.el.focus = function () {
41
+ this.shadowRoot.querySelector("button").focus();
42
+ };
43
+ }
44
+ handleKeydown(ev) {
45
+ switch (ev.key) {
46
+ case "Escape":
47
+ ev.preventDefault();
48
+ if (this.isOpen) {
49
+ ev.stopPropagation(); // prevent closing modal if within one
50
+ this.close();
51
+ }
52
+ break;
53
+ case "Tab":
54
+ if (this.isOpen) {
55
+ this.close();
56
+ }
57
+ }
58
+ }
59
+ toggleTabbingOn() {
60
+ this.isTabbing = true;
61
+ }
62
+ toggleTabbingOff() {
63
+ this.isTabbing = false;
64
+ }
65
+ handleClick(ev) {
66
+ if (this.isOpen) {
67
+ if (ev.target === this.el || this.el.contains(ev.target)) {
68
+ // Re-announce if clicking any part of the component while open
69
+ this.announceToggletip();
70
+ }
71
+ else {
72
+ this.close();
73
+ }
74
+ }
75
+ }
76
+ open() {
77
+ this.isOpen = true;
78
+ this.announceToggletip();
79
+ }
80
+ close() {
81
+ this.isOpen = false;
82
+ this.hideTooltip();
83
+ }
84
+ showTooltip() {
85
+ // Because a :hover pseudoclass would apply before the tooltip is repositioned, hover styles must be applied through a class
86
+ // Otherwise, the tooltip will flash on-screen and possibly create scrollbars
87
+ this.setToggletipPosition();
88
+ this.tooltipEl.classList.add("hover");
89
+ }
90
+ hideTooltip() {
91
+ this.tooltipEl.classList.remove("hover");
92
+ }
93
+ announceToggletip() {
94
+ this.liveRegionEl.innerHTML = "";
95
+ setTimeout(() => {
96
+ this.liveRegionEl.innerHTML = this.tempTooltip;
97
+ }, 10);
98
+ }
99
+ setToggletipPosition() {
100
+ // Vertical
101
+ if (this.tooltipPosition.includes("bottom") && shouldOpenUp(this.el, this.toggletipEl)) {
102
+ this.tooltipPosition = this.tooltipPosition.replace("bottom", "top");
103
+ }
104
+ else if (this.tooltipPosition.includes("top") && shouldOpenDown(this.el, this.toggletipEl)) {
105
+ this.tooltipPosition = this.tooltipPosition.replace("top", "bottom");
106
+ }
107
+ // Horizontal
108
+ if (this.tooltipPosition.includes("left") && shouldShiftRight(this.el, this.toggletipEl)) {
109
+ this.tooltipPosition = this.tooltipPosition.replace("left", "right");
110
+ }
111
+ else if (this.tooltipPosition.includes("right") && shouldShiftLeft(this.el, this.toggletipEl)) {
112
+ this.tooltipPosition = this.tooltipPosition.replace("right", "left");
113
+ }
114
+ }
115
+ render() {
116
+ return (h(Host, null,
117
+ h("button", { class: `button ${this.isTabbing ? "user-is-tabbing" : ""}`, type: "button", "aria-label": this.label, onClick: () => {
118
+ this.setToggletipPosition();
119
+ this.open();
120
+ },
121
+ // In order to position the tooltip identically to the toggletip, it's presence is determined by these four events
122
+ onMouseEnter: () => this.showTooltip(), onMouseLeave: () => this.hideTooltip(), onFocus: () => this.showTooltip(), onBlur: () => this.hideTooltip() }),
123
+ h("div", { ref: (el) => (this.tooltipEl = el), class: `tooltip ${this.tooltipPosition} ${this.isOpen ? "hidden" : ""}`, "aria-hidden": "true" }, this.tooltipMessage),
124
+ h("div", { ref: (el) => (this.toggletipEl = el), class: `toggletip ${this.isOpen ? "" : "hidden"} ${this.tooltipPosition}` }, this.tempTooltip),
125
+ h("div", { ref: (el) => (this.liveRegionEl = el), class: "live-region sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true" })));
126
+ }
127
+ static get is() { return "wm-toggletip"; }
128
+ static get encapsulation() { return "shadow"; }
129
+ static get originalStyleUrls() { return {
130
+ "$": ["wm-toggletip.scss"]
131
+ }; }
132
+ static get styleUrls() { return {
133
+ "$": ["wm-toggletip.css"]
134
+ }; }
135
+ static get properties() { return {
136
+ "label": {
137
+ "type": "string",
138
+ "mutable": false,
139
+ "complexType": {
140
+ "original": "string",
141
+ "resolved": "string | undefined",
142
+ "references": {}
143
+ },
144
+ "required": false,
145
+ "optional": true,
146
+ "docs": {
147
+ "tags": [],
148
+ "text": ""
149
+ },
150
+ "attribute": "label",
151
+ "reflect": false
152
+ },
153
+ "tooltip": {
154
+ "type": "string",
155
+ "mutable": true,
156
+ "complexType": {
157
+ "original": "string",
158
+ "resolved": "string | undefined",
159
+ "references": {}
160
+ },
161
+ "required": false,
162
+ "optional": true,
163
+ "docs": {
164
+ "tags": [],
165
+ "text": ""
166
+ },
167
+ "attribute": "tooltip",
168
+ "reflect": false
169
+ },
170
+ "tooltipText": {
171
+ "type": "string",
172
+ "mutable": false,
173
+ "complexType": {
174
+ "original": "string",
175
+ "resolved": "string | undefined",
176
+ "references": {}
177
+ },
178
+ "required": false,
179
+ "optional": true,
180
+ "docs": {
181
+ "tags": [],
182
+ "text": ""
183
+ },
184
+ "attribute": "tooltip-text",
185
+ "reflect": false
186
+ },
187
+ "tooltipPosition": {
188
+ "type": "string",
189
+ "mutable": true,
190
+ "complexType": {
191
+ "original": "TooltipPosition",
192
+ "resolved": "\"bottom\" | \"bottom-left\" | \"bottom-right\" | \"left\" | \"right\" | \"top\" | \"top-left\" | \"top-right\"",
193
+ "references": {
194
+ "TooltipPosition": {
195
+ "location": "import",
196
+ "path": "../../global/interfaces"
197
+ }
198
+ }
199
+ },
200
+ "required": false,
201
+ "optional": false,
202
+ "docs": {
203
+ "tags": [],
204
+ "text": ""
205
+ },
206
+ "attribute": "tooltip-position",
207
+ "reflect": true,
208
+ "defaultValue": "\"bottom-right\""
209
+ }
210
+ }; }
211
+ static get states() { return {
212
+ "isOpen": {},
213
+ "isTabbing": {}
214
+ }; }
215
+ static get elementRef() { return "el"; }
216
+ static get listeners() { return [{
217
+ "name": "keydown",
218
+ "method": "handleKeydown",
219
+ "target": undefined,
220
+ "capture": false,
221
+ "passive": false
222
+ }, {
223
+ "name": "wmUserIsTabbing",
224
+ "method": "toggleTabbingOn",
225
+ "target": "window",
226
+ "capture": false,
227
+ "passive": false
228
+ }, {
229
+ "name": "wmUserIsNotTabbing",
230
+ "method": "toggleTabbingOff",
231
+ "target": "window",
232
+ "capture": false,
233
+ "passive": false
234
+ }, {
235
+ "name": "click",
236
+ "method": "handleClick",
237
+ "target": "document",
238
+ "capture": false,
239
+ "passive": false
240
+ }]; }
241
+ }