@watermarkinsights/ripple 3.25.0 → 3.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/dist/cjs/chartFunctions-2f04ab6a.js +0 -2
  2. package/dist/cjs/functions-d2d99997.js +0 -2
  3. package/dist/{esm/global-3d0ef32b.js → cjs/global-6acc957f.js} +3 -3
  4. package/dist/cjs/http-service-9e8c4dd5.js +0 -2
  5. package/dist/cjs/index-1f84c034.js +0 -2
  6. package/dist/cjs/index.cjs.js +0 -2
  7. package/dist/cjs/interfaces-30a74c1f.js +0 -2
  8. package/dist/cjs/intl-a1ccf587.js +0 -2
  9. package/dist/cjs/loader.cjs.js +1 -3
  10. package/dist/cjs/priv-chart-popover.cjs.entry.js +0 -2
  11. package/dist/cjs/priv-datepicker.cjs.entry.js +0 -2
  12. package/dist/cjs/priv-navigator-button.cjs.entry.js +0 -2
  13. package/dist/cjs/priv-navigator-item.cjs.entry.js +0 -2
  14. package/dist/cjs/ripple.cjs.js +1 -3
  15. package/dist/cjs/wm-action-menu_2.cjs.entry.js +0 -2
  16. package/dist/cjs/wm-button.cjs.entry.js +0 -2
  17. package/dist/cjs/wm-chart-slice.cjs.entry.js +0 -2
  18. package/dist/cjs/wm-chart.cjs.entry.js +0 -2
  19. package/dist/cjs/wm-datepicker.cjs.entry.js +0 -2
  20. package/dist/cjs/wm-file-list.cjs.entry.js +0 -2
  21. package/dist/cjs/wm-file.cjs.entry.js +0 -2
  22. package/dist/cjs/wm-input.cjs.entry.js +0 -2
  23. package/dist/cjs/wm-modal-footer.cjs.entry.js +0 -2
  24. package/dist/cjs/wm-modal-header.cjs.entry.js +0 -2
  25. package/dist/cjs/wm-modal.cjs.entry.js +0 -2
  26. package/dist/cjs/wm-navigation_3.cjs.entry.js +0 -2
  27. package/dist/cjs/wm-navigator.cjs.entry.js +0 -2
  28. package/dist/cjs/wm-network-uploader.cjs.entry.js +0 -2
  29. package/dist/cjs/wm-option_2.cjs.entry.js +0 -2
  30. package/dist/cjs/wm-pagination.cjs.entry.js +0 -2
  31. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +0 -2
  32. package/dist/cjs/wm-search.cjs.entry.js +0 -2
  33. package/dist/cjs/wm-snackbar.cjs.entry.js +0 -2
  34. package/dist/cjs/wm-tab-item_3.cjs.entry.js +0 -2
  35. package/dist/cjs/wm-tag-input-row.cjs.entry.js +0 -2
  36. package/dist/cjs/wm-tag-input.cjs.entry.js +0 -2
  37. package/dist/cjs/wm-timepicker.cjs.entry.js +0 -2
  38. package/dist/cjs/wm-toggletip.cjs.entry.js +0 -2
  39. package/dist/cjs/wm-uploader.cjs.entry.js +0 -2
  40. package/dist/cjs/wm-wrapper.cjs.entry.js +0 -2
  41. package/dist/collection/components/charts/chartFunctions.js +0 -1
  42. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +0 -1
  43. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +0 -1
  44. package/dist/collection/components/charts/wm-chart/wm-chart.js +0 -1
  45. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +0 -1
  46. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +0 -1
  47. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +0 -1
  48. package/dist/collection/components/wm-action-menu/wm-action-menu.js +0 -1
  49. package/dist/collection/components/wm-button/wm-button.js +0 -1
  50. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +0 -1
  51. package/dist/collection/components/wm-datepicker/wm-datepicker.js +0 -1
  52. package/dist/collection/components/wm-file/wm-file.js +0 -1
  53. package/dist/collection/components/wm-file-list/wm-file-list.js +0 -1
  54. package/dist/collection/components/wm-input/wm-input.js +0 -1
  55. package/dist/collection/components/wm-menuitem/wm-menuitem.js +0 -1
  56. package/dist/collection/components/wm-modal/wm-modal-footer.js +0 -1
  57. package/dist/collection/components/wm-modal/wm-modal-header.js +0 -1
  58. package/dist/collection/components/wm-modal/wm-modal.js +0 -1
  59. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +0 -1
  60. package/dist/collection/components/wm-navigation/wm-navigation-item.js +0 -1
  61. package/dist/collection/components/wm-navigation/wm-navigation.js +0 -1
  62. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +0 -1
  63. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +0 -1
  64. package/dist/collection/components/wm-navigator/wm-navigator.js +0 -1
  65. package/dist/collection/components/wm-option/wm-option.js +0 -1
  66. package/dist/collection/components/wm-pagination/wm-pagination.js +0 -1
  67. package/dist/collection/components/wm-search/wm-search.js +0 -1
  68. package/dist/collection/components/wm-select/wm-select.js +0 -1
  69. package/dist/collection/components/wm-snackbar/wm-snackbar.js +0 -1
  70. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +0 -1
  71. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +0 -1
  72. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +0 -1
  73. package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js +0 -1
  74. package/dist/collection/components/wm-tag-input/wm-tag-input.js +0 -1
  75. package/dist/collection/components/wm-timepicker/wm-timepicker.js +0 -1
  76. package/dist/collection/components/wm-toggletip/wm-toggletip.js +0 -1
  77. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +0 -1
  78. package/dist/collection/components/wm-uploader/wm-uploader.js +0 -1
  79. package/dist/collection/components/wm-wrapper/wm-wrapper.js +0 -1
  80. package/dist/collection/global/__mocks__/functions.js +0 -1
  81. package/dist/collection/global/functions.js +0 -1
  82. package/dist/collection/global/global.js +0 -1
  83. package/dist/collection/global/interfaces.js +0 -1
  84. package/dist/collection/global/intl.js +0 -1
  85. package/dist/collection/global/services/__mocks__/http-service.js +0 -1
  86. package/dist/collection/global/services/http-service.js +0 -1
  87. package/dist/collection/lang/lang.js +0 -1
  88. package/dist/esm/chartFunctions-a72f5835.js +0 -2
  89. package/dist/esm/functions-dc9964aa.js +0 -2
  90. package/dist/{cjs/global-d0584d18.js → esm/global-df3a199e.js} +1 -5
  91. package/dist/esm/http-service-5d037e16.js +0 -2
  92. package/dist/esm/index-84a6ae22.js +0 -2
  93. package/dist/esm/index.js +0 -2
  94. package/dist/esm/interfaces-61c6305b.js +0 -2
  95. package/dist/esm/intl-4d4826dd.js +0 -2
  96. package/dist/esm/loader.js +1 -3
  97. package/dist/esm/priv-chart-popover.entry.js +0 -2
  98. package/dist/esm/priv-datepicker.entry.js +0 -2
  99. package/dist/esm/priv-navigator-button.entry.js +0 -2
  100. package/dist/esm/priv-navigator-item.entry.js +0 -2
  101. package/dist/esm/ripple.js +1 -3
  102. package/dist/esm/wm-action-menu_2.entry.js +0 -2
  103. package/dist/esm/wm-button.entry.js +0 -2
  104. package/dist/esm/wm-chart-slice.entry.js +0 -2
  105. package/dist/esm/wm-chart.entry.js +0 -2
  106. package/dist/esm/wm-datepicker.entry.js +0 -2
  107. package/dist/esm/wm-file-list.entry.js +0 -2
  108. package/dist/esm/wm-file.entry.js +0 -2
  109. package/dist/esm/wm-input.entry.js +0 -2
  110. package/dist/esm/wm-modal-footer.entry.js +0 -2
  111. package/dist/esm/wm-modal-header.entry.js +0 -2
  112. package/dist/esm/wm-modal.entry.js +0 -2
  113. package/dist/esm/wm-navigation_3.entry.js +0 -2
  114. package/dist/esm/wm-navigator.entry.js +0 -2
  115. package/dist/esm/wm-network-uploader.entry.js +0 -2
  116. package/dist/esm/wm-option_2.entry.js +0 -2
  117. package/dist/esm/wm-pagination.entry.js +0 -2
  118. package/dist/esm/wm-progress-indicator_3.entry.js +0 -2
  119. package/dist/esm/wm-search.entry.js +0 -2
  120. package/dist/esm/wm-snackbar.entry.js +0 -2
  121. package/dist/esm/wm-tab-item_3.entry.js +0 -2
  122. package/dist/esm/wm-tag-input-row.entry.js +0 -2
  123. package/dist/esm/wm-tag-input.entry.js +0 -2
  124. package/dist/esm/wm-timepicker.entry.js +0 -2
  125. package/dist/esm/wm-toggletip.entry.js +0 -2
  126. package/dist/esm/wm-uploader.entry.js +0 -2
  127. package/dist/esm/wm-wrapper.entry.js +0 -2
  128. package/dist/esm-es5/chartFunctions-a72f5835.js +1 -2
  129. package/dist/esm-es5/functions-dc9964aa.js +1 -2
  130. package/dist/esm-es5/{global-3d0ef32b.js → global-df3a199e.js} +1 -2
  131. package/dist/esm-es5/http-service-5d037e16.js +1 -2
  132. package/dist/esm-es5/index-84a6ae22.js +1 -2
  133. package/dist/esm-es5/index.js +0 -2
  134. package/dist/esm-es5/interfaces-61c6305b.js +1 -2
  135. package/dist/esm-es5/intl-4d4826dd.js +1 -2
  136. package/dist/esm-es5/loader.js +1 -2
  137. package/dist/esm-es5/priv-chart-popover.entry.js +1 -2
  138. package/dist/esm-es5/priv-datepicker.entry.js +1 -2
  139. package/dist/esm-es5/priv-navigator-button.entry.js +1 -2
  140. package/dist/esm-es5/priv-navigator-item.entry.js +1 -2
  141. package/dist/esm-es5/ripple.js +1 -2
  142. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -2
  143. package/dist/esm-es5/wm-button.entry.js +1 -2
  144. package/dist/esm-es5/wm-chart-slice.entry.js +1 -2
  145. package/dist/esm-es5/wm-chart.entry.js +1 -2
  146. package/dist/esm-es5/wm-datepicker.entry.js +1 -2
  147. package/dist/esm-es5/wm-file-list.entry.js +1 -2
  148. package/dist/esm-es5/wm-file.entry.js +1 -2
  149. package/dist/esm-es5/wm-input.entry.js +1 -2
  150. package/dist/esm-es5/wm-modal-footer.entry.js +1 -2
  151. package/dist/esm-es5/wm-modal-header.entry.js +1 -2
  152. package/dist/esm-es5/wm-modal.entry.js +1 -2
  153. package/dist/esm-es5/wm-navigation_3.entry.js +1 -2
  154. package/dist/esm-es5/wm-navigator.entry.js +1 -2
  155. package/dist/esm-es5/wm-network-uploader.entry.js +1 -2
  156. package/dist/esm-es5/wm-option_2.entry.js +1 -2
  157. package/dist/esm-es5/wm-pagination.entry.js +1 -2
  158. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -2
  159. package/dist/esm-es5/wm-search.entry.js +1 -2
  160. package/dist/esm-es5/wm-snackbar.entry.js +1 -2
  161. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -2
  162. package/dist/esm-es5/wm-tag-input-row.entry.js +1 -2
  163. package/dist/esm-es5/wm-tag-input.entry.js +1 -2
  164. package/dist/esm-es5/wm-timepicker.entry.js +1 -2
  165. package/dist/esm-es5/wm-toggletip.entry.js +1 -2
  166. package/dist/esm-es5/wm-uploader.entry.js +1 -2
  167. package/dist/esm-es5/wm-wrapper.entry.js +1 -2
  168. package/dist/ripple/index.esm.js +0 -2
  169. package/dist/ripple/p-0088b69e.entry.js +1 -0
  170. package/dist/ripple/p-03dc49f5.entry.js +1 -0
  171. package/dist/ripple/p-04ae66fd.system.entry.js +1 -2
  172. package/dist/ripple/p-08b7ec08.system.js +1 -2
  173. package/dist/ripple/p-0cd13c7d.system.entry.js +1 -2
  174. package/dist/ripple/p-0eb7b1b7.system.entry.js +1 -2
  175. package/dist/ripple/p-1c23de4a.js +2 -3
  176. package/dist/ripple/p-1fd20e05.system.entry.js +1 -2
  177. package/dist/ripple/p-23fa1ff6.system.entry.js +1 -2
  178. package/dist/ripple/{p-c68b3798.system.js → p-2420f4a7.system.js} +1 -2
  179. package/dist/ripple/p-24a4cb11.system.entry.js +1 -2
  180. package/dist/ripple/p-2c2a7092.system.entry.js +1 -2
  181. package/dist/ripple/p-2e6cb291.entry.js +1 -0
  182. package/dist/ripple/p-313b6073.system.js +1 -2
  183. package/dist/ripple/p-32a0290e.entry.js +1 -0
  184. package/dist/ripple/p-33558ec4.system.entry.js +1 -2
  185. package/dist/ripple/p-33ec18d4.system.entry.js +1 -2
  186. package/dist/ripple/p-3759b7af.system.entry.js +1 -2
  187. package/dist/ripple/p-38449dff.system.entry.js +1 -2
  188. package/dist/ripple/p-3869a69e.system.entry.js +1 -2
  189. package/dist/ripple/p-41317448.entry.js +1 -0
  190. package/dist/ripple/p-42678edc.entry.js +1 -0
  191. package/dist/ripple/p-43087c29.entry.js +1 -0
  192. package/dist/ripple/p-4a06d0a9.system.entry.js +1 -2
  193. package/dist/ripple/p-4d95f00e.entry.js +1 -0
  194. package/dist/ripple/p-4da9a006.entry.js +1 -0
  195. package/dist/ripple/p-4fc5e960.entry.js +1 -0
  196. package/dist/ripple/p-50ea2036.system.js +1 -2
  197. package/dist/ripple/p-53dc8244.js +1 -0
  198. package/dist/ripple/p-54750f05.entry.js +1 -0
  199. package/dist/ripple/p-5f8ab2e0.entry.js +1 -0
  200. package/dist/ripple/p-62db31c4.entry.js +1 -0
  201. package/dist/ripple/p-6bb88663.entry.js +1 -0
  202. package/dist/ripple/p-6ff7d4ff.entry.js +1 -0
  203. package/dist/ripple/p-7b2fc615.system.js +1 -2
  204. package/dist/ripple/p-833c622f.system.entry.js +1 -2
  205. package/dist/ripple/p-8613600d.system.entry.js +1 -2
  206. package/dist/ripple/p-888bec42.js +1 -2
  207. package/dist/ripple/p-8909ff66.entry.js +1 -0
  208. package/dist/ripple/p-8c51e9f8.system.entry.js +1 -2
  209. package/dist/ripple/p-91deb45f.system.entry.js +1 -2
  210. package/dist/ripple/p-9338011f.system.entry.js +1 -2
  211. package/dist/ripple/p-976b2789.system.entry.js +1 -2
  212. package/dist/ripple/p-994303f2.js +1 -2
  213. package/dist/ripple/p-9ad1819e.entry.js +1 -0
  214. package/dist/ripple/p-9b2dfb54.js +1 -2
  215. package/dist/ripple/p-a6d64d8a.system.entry.js +1 -2
  216. package/dist/ripple/p-a6d6eae7.js +1 -2
  217. package/dist/ripple/p-a73cf968.system.entry.js +1 -2
  218. package/dist/ripple/p-abf0a64f.entry.js +1 -0
  219. package/dist/ripple/p-aed625c1.system.entry.js +1 -2
  220. package/dist/ripple/{p-4391166c.entry.js → p-b0bc9fd4.entry.js} +1 -2
  221. package/dist/ripple/p-b5b521e4.system.entry.js +1 -2
  222. package/dist/ripple/p-b5ffe399.entry.js +1 -0
  223. package/dist/ripple/p-b7451e73.system.entry.js +1 -2
  224. package/dist/ripple/p-bafdcb4e.system.entry.js +1 -2
  225. package/dist/ripple/p-bd84628c.system.entry.js +1 -2
  226. package/dist/ripple/p-beac2d5d.entry.js +1 -0
  227. package/dist/ripple/p-bfb35465.entry.js +1 -0
  228. package/dist/ripple/p-c36002b6.system.js +1 -2
  229. package/dist/ripple/p-c6a0f7e5.js +1 -2
  230. package/dist/ripple/p-c733a478.entry.js +1 -0
  231. package/dist/ripple/p-d2c26e15.entry.js +1 -0
  232. package/dist/ripple/p-d81bea1e.entry.js +1 -0
  233. package/dist/ripple/p-d8bae6cb.entry.js +1 -0
  234. package/dist/ripple/p-d9d21df5.entry.js +1 -0
  235. package/dist/ripple/p-dbfd1640.system.entry.js +1 -2
  236. package/dist/ripple/{p-0826dc64.system.js → p-dc80494f.system.js} +1 -2
  237. package/dist/ripple/p-e2d947db.entry.js +1 -0
  238. package/dist/ripple/p-e8b38f36.entry.js +1 -0
  239. package/dist/ripple/p-f0fd8695.system.js +1 -2
  240. package/dist/ripple/p-f312d59a.system.entry.js +1 -2
  241. package/dist/ripple/p-f59a495a.system.entry.js +1 -2
  242. package/dist/ripple/p-f80eb8a5.system.js +1 -2
  243. package/dist/ripple/p-fb5fe2bd.entry.js +1 -0
  244. package/dist/ripple/p-fb67c39e.system.entry.js +1 -2
  245. package/dist/ripple/ripple.esm.js +1 -2
  246. package/dist/ripple/ripple.js +1 -1
  247. package/package.json +1 -1
  248. package/dist/cjs/chartFunctions-2f04ab6a.js.map +0 -1
  249. package/dist/cjs/functions-d2d99997.js.map +0 -1
  250. package/dist/cjs/global-d0584d18.js.map +0 -1
  251. package/dist/cjs/http-service-9e8c4dd5.js.map +0 -1
  252. package/dist/cjs/index-1f84c034.js.map +0 -1
  253. package/dist/cjs/index.cjs.js.map +0 -1
  254. package/dist/cjs/interfaces-30a74c1f.js.map +0 -1
  255. package/dist/cjs/intl-a1ccf587.js.map +0 -1
  256. package/dist/cjs/loader.cjs.js.map +0 -1
  257. package/dist/cjs/priv-chart-popover.cjs.entry.js.map +0 -1
  258. package/dist/cjs/priv-datepicker.cjs.entry.js.map +0 -1
  259. package/dist/cjs/priv-navigator-button.cjs.entry.js.map +0 -1
  260. package/dist/cjs/priv-navigator-item.cjs.entry.js.map +0 -1
  261. package/dist/cjs/ripple.cjs.js.map +0 -1
  262. package/dist/cjs/wm-action-menu_2.cjs.entry.js.map +0 -1
  263. package/dist/cjs/wm-button.cjs.entry.js.map +0 -1
  264. package/dist/cjs/wm-chart-slice.cjs.entry.js.map +0 -1
  265. package/dist/cjs/wm-chart.cjs.entry.js.map +0 -1
  266. package/dist/cjs/wm-datepicker.cjs.entry.js.map +0 -1
  267. package/dist/cjs/wm-file-list.cjs.entry.js.map +0 -1
  268. package/dist/cjs/wm-file.cjs.entry.js.map +0 -1
  269. package/dist/cjs/wm-input.cjs.entry.js.map +0 -1
  270. package/dist/cjs/wm-modal-footer.cjs.entry.js.map +0 -1
  271. package/dist/cjs/wm-modal-header.cjs.entry.js.map +0 -1
  272. package/dist/cjs/wm-modal.cjs.entry.js.map +0 -1
  273. package/dist/cjs/wm-navigation_3.cjs.entry.js.map +0 -1
  274. package/dist/cjs/wm-navigator.cjs.entry.js.map +0 -1
  275. package/dist/cjs/wm-network-uploader.cjs.entry.js.map +0 -1
  276. package/dist/cjs/wm-option_2.cjs.entry.js.map +0 -1
  277. package/dist/cjs/wm-pagination.cjs.entry.js.map +0 -1
  278. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js.map +0 -1
  279. package/dist/cjs/wm-search.cjs.entry.js.map +0 -1
  280. package/dist/cjs/wm-snackbar.cjs.entry.js.map +0 -1
  281. package/dist/cjs/wm-tab-item_3.cjs.entry.js.map +0 -1
  282. package/dist/cjs/wm-tag-input-row.cjs.entry.js.map +0 -1
  283. package/dist/cjs/wm-tag-input.cjs.entry.js.map +0 -1
  284. package/dist/cjs/wm-timepicker.cjs.entry.js.map +0 -1
  285. package/dist/cjs/wm-toggletip.cjs.entry.js.map +0 -1
  286. package/dist/cjs/wm-uploader.cjs.entry.js.map +0 -1
  287. package/dist/cjs/wm-wrapper.cjs.entry.js.map +0 -1
  288. package/dist/collection/components/charts/chartFunctions.js.map +0 -1
  289. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js.map +0 -1
  290. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js.map +0 -1
  291. package/dist/collection/components/charts/wm-chart/wm-chart.js.map +0 -1
  292. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js.map +0 -1
  293. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js.map +0 -1
  294. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js.map +0 -1
  295. package/dist/collection/components/wm-action-menu/wm-action-menu.js.map +0 -1
  296. package/dist/collection/components/wm-button/wm-button.js.map +0 -1
  297. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js.map +0 -1
  298. package/dist/collection/components/wm-datepicker/wm-datepicker.js.map +0 -1
  299. package/dist/collection/components/wm-file/wm-file.js.map +0 -1
  300. package/dist/collection/components/wm-file-list/wm-file-list.js.map +0 -1
  301. package/dist/collection/components/wm-input/wm-input.js.map +0 -1
  302. package/dist/collection/components/wm-menuitem/wm-menuitem.js.map +0 -1
  303. package/dist/collection/components/wm-modal/wm-modal-footer.js.map +0 -1
  304. package/dist/collection/components/wm-modal/wm-modal-header.js.map +0 -1
  305. package/dist/collection/components/wm-modal/wm-modal.js.map +0 -1
  306. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js.map +0 -1
  307. package/dist/collection/components/wm-navigation/wm-navigation-item.js.map +0 -1
  308. package/dist/collection/components/wm-navigation/wm-navigation.js.map +0 -1
  309. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js.map +0 -1
  310. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js.map +0 -1
  311. package/dist/collection/components/wm-navigator/wm-navigator.js.map +0 -1
  312. package/dist/collection/components/wm-option/wm-option.js.map +0 -1
  313. package/dist/collection/components/wm-pagination/wm-pagination.js.map +0 -1
  314. package/dist/collection/components/wm-search/wm-search.js.map +0 -1
  315. package/dist/collection/components/wm-select/wm-select.js.map +0 -1
  316. package/dist/collection/components/wm-snackbar/wm-snackbar.js.map +0 -1
  317. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js.map +0 -1
  318. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js.map +0 -1
  319. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js.map +0 -1
  320. package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js.map +0 -1
  321. package/dist/collection/components/wm-tag-input/wm-tag-input.js.map +0 -1
  322. package/dist/collection/components/wm-timepicker/wm-timepicker.js.map +0 -1
  323. package/dist/collection/components/wm-toggletip/wm-toggletip.js.map +0 -1
  324. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js.map +0 -1
  325. package/dist/collection/components/wm-uploader/wm-uploader.js.map +0 -1
  326. package/dist/collection/components/wm-wrapper/wm-wrapper.js.map +0 -1
  327. package/dist/collection/global/__mocks__/functions.js.map +0 -1
  328. package/dist/collection/global/functions.js.map +0 -1
  329. package/dist/collection/global/global.js.map +0 -1
  330. package/dist/collection/global/interfaces.js.map +0 -1
  331. package/dist/collection/global/intl.js.map +0 -1
  332. package/dist/collection/global/services/__mocks__/http-service.js.map +0 -1
  333. package/dist/collection/global/services/http-service.js.map +0 -1
  334. package/dist/collection/lang/lang.js.map +0 -1
  335. package/dist/esm/chartFunctions-a72f5835.js.map +0 -1
  336. package/dist/esm/functions-dc9964aa.js.map +0 -1
  337. package/dist/esm/global-3d0ef32b.js.map +0 -1
  338. package/dist/esm/http-service-5d037e16.js.map +0 -1
  339. package/dist/esm/index-84a6ae22.js.map +0 -1
  340. package/dist/esm/index.js.map +0 -1
  341. package/dist/esm/interfaces-61c6305b.js.map +0 -1
  342. package/dist/esm/intl-4d4826dd.js.map +0 -1
  343. package/dist/esm/loader.js.map +0 -1
  344. package/dist/esm/priv-chart-popover.entry.js.map +0 -1
  345. package/dist/esm/priv-datepicker.entry.js.map +0 -1
  346. package/dist/esm/priv-navigator-button.entry.js.map +0 -1
  347. package/dist/esm/priv-navigator-item.entry.js.map +0 -1
  348. package/dist/esm/ripple.js.map +0 -1
  349. package/dist/esm/wm-action-menu_2.entry.js.map +0 -1
  350. package/dist/esm/wm-button.entry.js.map +0 -1
  351. package/dist/esm/wm-chart-slice.entry.js.map +0 -1
  352. package/dist/esm/wm-chart.entry.js.map +0 -1
  353. package/dist/esm/wm-datepicker.entry.js.map +0 -1
  354. package/dist/esm/wm-file-list.entry.js.map +0 -1
  355. package/dist/esm/wm-file.entry.js.map +0 -1
  356. package/dist/esm/wm-input.entry.js.map +0 -1
  357. package/dist/esm/wm-modal-footer.entry.js.map +0 -1
  358. package/dist/esm/wm-modal-header.entry.js.map +0 -1
  359. package/dist/esm/wm-modal.entry.js.map +0 -1
  360. package/dist/esm/wm-navigation_3.entry.js.map +0 -1
  361. package/dist/esm/wm-navigator.entry.js.map +0 -1
  362. package/dist/esm/wm-network-uploader.entry.js.map +0 -1
  363. package/dist/esm/wm-option_2.entry.js.map +0 -1
  364. package/dist/esm/wm-pagination.entry.js.map +0 -1
  365. package/dist/esm/wm-progress-indicator_3.entry.js.map +0 -1
  366. package/dist/esm/wm-search.entry.js.map +0 -1
  367. package/dist/esm/wm-snackbar.entry.js.map +0 -1
  368. package/dist/esm/wm-tab-item_3.entry.js.map +0 -1
  369. package/dist/esm/wm-tag-input-row.entry.js.map +0 -1
  370. package/dist/esm/wm-tag-input.entry.js.map +0 -1
  371. package/dist/esm/wm-timepicker.entry.js.map +0 -1
  372. package/dist/esm/wm-toggletip.entry.js.map +0 -1
  373. package/dist/esm/wm-uploader.entry.js.map +0 -1
  374. package/dist/esm/wm-wrapper.entry.js.map +0 -1
  375. package/dist/esm-es5/chartFunctions-a72f5835.js.map +0 -1
  376. package/dist/esm-es5/functions-dc9964aa.js.map +0 -1
  377. package/dist/esm-es5/global-3d0ef32b.js.map +0 -1
  378. package/dist/esm-es5/http-service-5d037e16.js.map +0 -1
  379. package/dist/esm-es5/index-84a6ae22.js.map +0 -1
  380. package/dist/esm-es5/index.js.map +0 -1
  381. package/dist/esm-es5/interfaces-61c6305b.js.map +0 -1
  382. package/dist/esm-es5/intl-4d4826dd.js.map +0 -1
  383. package/dist/esm-es5/loader.js.map +0 -1
  384. package/dist/esm-es5/priv-chart-popover.entry.js.map +0 -1
  385. package/dist/esm-es5/priv-datepicker.entry.js.map +0 -1
  386. package/dist/esm-es5/priv-navigator-button.entry.js.map +0 -1
  387. package/dist/esm-es5/priv-navigator-item.entry.js.map +0 -1
  388. package/dist/esm-es5/ripple.js.map +0 -1
  389. package/dist/esm-es5/wm-action-menu_2.entry.js.map +0 -1
  390. package/dist/esm-es5/wm-button.entry.js.map +0 -1
  391. package/dist/esm-es5/wm-chart-slice.entry.js.map +0 -1
  392. package/dist/esm-es5/wm-chart.entry.js.map +0 -1
  393. package/dist/esm-es5/wm-datepicker.entry.js.map +0 -1
  394. package/dist/esm-es5/wm-file-list.entry.js.map +0 -1
  395. package/dist/esm-es5/wm-file.entry.js.map +0 -1
  396. package/dist/esm-es5/wm-input.entry.js.map +0 -1
  397. package/dist/esm-es5/wm-modal-footer.entry.js.map +0 -1
  398. package/dist/esm-es5/wm-modal-header.entry.js.map +0 -1
  399. package/dist/esm-es5/wm-modal.entry.js.map +0 -1
  400. package/dist/esm-es5/wm-navigation_3.entry.js.map +0 -1
  401. package/dist/esm-es5/wm-navigator.entry.js.map +0 -1
  402. package/dist/esm-es5/wm-network-uploader.entry.js.map +0 -1
  403. package/dist/esm-es5/wm-option_2.entry.js.map +0 -1
  404. package/dist/esm-es5/wm-pagination.entry.js.map +0 -1
  405. package/dist/esm-es5/wm-progress-indicator_3.entry.js.map +0 -1
  406. package/dist/esm-es5/wm-search.entry.js.map +0 -1
  407. package/dist/esm-es5/wm-snackbar.entry.js.map +0 -1
  408. package/dist/esm-es5/wm-tab-item_3.entry.js.map +0 -1
  409. package/dist/esm-es5/wm-tag-input-row.entry.js.map +0 -1
  410. package/dist/esm-es5/wm-tag-input.entry.js.map +0 -1
  411. package/dist/esm-es5/wm-timepicker.entry.js.map +0 -1
  412. package/dist/esm-es5/wm-toggletip.entry.js.map +0 -1
  413. package/dist/esm-es5/wm-uploader.entry.js.map +0 -1
  414. package/dist/esm-es5/wm-wrapper.entry.js.map +0 -1
  415. package/dist/ripple/index.esm.js.map +0 -1
  416. package/dist/ripple/p-002d067e.entry.js +0 -2
  417. package/dist/ripple/p-002d067e.entry.js.map +0 -1
  418. package/dist/ripple/p-02a1000a.entry.js +0 -2
  419. package/dist/ripple/p-02a1000a.entry.js.map +0 -1
  420. package/dist/ripple/p-04ae66fd.system.entry.js.map +0 -1
  421. package/dist/ripple/p-0826dc64.system.js.map +0 -1
  422. package/dist/ripple/p-08b7ec08.system.js.map +0 -1
  423. package/dist/ripple/p-0ad3a708.entry.js +0 -2
  424. package/dist/ripple/p-0ad3a708.entry.js.map +0 -1
  425. package/dist/ripple/p-0cd13c7d.system.entry.js.map +0 -1
  426. package/dist/ripple/p-0d7bccf7.entry.js +0 -2
  427. package/dist/ripple/p-0d7bccf7.entry.js.map +0 -1
  428. package/dist/ripple/p-0eb7b1b7.system.entry.js.map +0 -1
  429. package/dist/ripple/p-11124a23.entry.js +0 -2
  430. package/dist/ripple/p-11124a23.entry.js.map +0 -1
  431. package/dist/ripple/p-1808b90a.entry.js +0 -2
  432. package/dist/ripple/p-1808b90a.entry.js.map +0 -1
  433. package/dist/ripple/p-1c23de4a.js.map +0 -1
  434. package/dist/ripple/p-1fd20e05.system.entry.js.map +0 -1
  435. package/dist/ripple/p-23fa1ff6.system.entry.js.map +0 -1
  436. package/dist/ripple/p-24a4cb11.system.entry.js.map +0 -1
  437. package/dist/ripple/p-2c2a7092.system.entry.js.map +0 -1
  438. package/dist/ripple/p-313b6073.system.js.map +0 -1
  439. package/dist/ripple/p-33558ec4.system.entry.js.map +0 -1
  440. package/dist/ripple/p-33ec18d4.system.entry.js.map +0 -1
  441. package/dist/ripple/p-341aa131.entry.js +0 -2
  442. package/dist/ripple/p-341aa131.entry.js.map +0 -1
  443. package/dist/ripple/p-3759b7af.system.entry.js.map +0 -1
  444. package/dist/ripple/p-38449dff.system.entry.js.map +0 -1
  445. package/dist/ripple/p-384c4981.entry.js +0 -2
  446. package/dist/ripple/p-384c4981.entry.js.map +0 -1
  447. package/dist/ripple/p-3869a69e.system.entry.js.map +0 -1
  448. package/dist/ripple/p-4391166c.entry.js.map +0 -1
  449. package/dist/ripple/p-43be123d.entry.js +0 -2
  450. package/dist/ripple/p-43be123d.entry.js.map +0 -1
  451. package/dist/ripple/p-4a014591.entry.js +0 -2
  452. package/dist/ripple/p-4a014591.entry.js.map +0 -1
  453. package/dist/ripple/p-4a06d0a9.system.entry.js.map +0 -1
  454. package/dist/ripple/p-4e02e2ae.entry.js +0 -2
  455. package/dist/ripple/p-4e02e2ae.entry.js.map +0 -1
  456. package/dist/ripple/p-50ea2036.system.js.map +0 -1
  457. package/dist/ripple/p-56cd4d5e.entry.js +0 -2
  458. package/dist/ripple/p-56cd4d5e.entry.js.map +0 -1
  459. package/dist/ripple/p-59654f8e.entry.js +0 -2
  460. package/dist/ripple/p-59654f8e.entry.js.map +0 -1
  461. package/dist/ripple/p-5cc287d2.entry.js +0 -2
  462. package/dist/ripple/p-5cc287d2.entry.js.map +0 -1
  463. package/dist/ripple/p-7b2fc615.system.js.map +0 -1
  464. package/dist/ripple/p-7e0e6b00.entry.js +0 -2
  465. package/dist/ripple/p-7e0e6b00.entry.js.map +0 -1
  466. package/dist/ripple/p-833c622f.system.entry.js.map +0 -1
  467. package/dist/ripple/p-8613600d.system.entry.js.map +0 -1
  468. package/dist/ripple/p-888bec42.js.map +0 -1
  469. package/dist/ripple/p-889579fc.entry.js +0 -2
  470. package/dist/ripple/p-889579fc.entry.js.map +0 -1
  471. package/dist/ripple/p-8c51e9f8.system.entry.js.map +0 -1
  472. package/dist/ripple/p-8db604d2.entry.js +0 -2
  473. package/dist/ripple/p-8db604d2.entry.js.map +0 -1
  474. package/dist/ripple/p-91deb45f.system.entry.js.map +0 -1
  475. package/dist/ripple/p-9338011f.system.entry.js.map +0 -1
  476. package/dist/ripple/p-976b2789.system.entry.js.map +0 -1
  477. package/dist/ripple/p-994303f2.js.map +0 -1
  478. package/dist/ripple/p-9b2dfb54.js.map +0 -1
  479. package/dist/ripple/p-9b9eb944.entry.js +0 -2
  480. package/dist/ripple/p-9b9eb944.entry.js.map +0 -1
  481. package/dist/ripple/p-a6d64d8a.system.entry.js.map +0 -1
  482. package/dist/ripple/p-a6d6eae7.js.map +0 -1
  483. package/dist/ripple/p-a73cf968.system.entry.js.map +0 -1
  484. package/dist/ripple/p-aed625c1.system.entry.js.map +0 -1
  485. package/dist/ripple/p-b5b521e4.system.entry.js.map +0 -1
  486. package/dist/ripple/p-b7451e73.system.entry.js.map +0 -1
  487. package/dist/ripple/p-bafdcb4e.system.entry.js.map +0 -1
  488. package/dist/ripple/p-bb45e122.entry.js +0 -2
  489. package/dist/ripple/p-bb45e122.entry.js.map +0 -1
  490. package/dist/ripple/p-bd84628c.system.entry.js.map +0 -1
  491. package/dist/ripple/p-bf569af0.entry.js +0 -2
  492. package/dist/ripple/p-bf569af0.entry.js.map +0 -1
  493. package/dist/ripple/p-c094f6a8.entry.js +0 -2
  494. package/dist/ripple/p-c094f6a8.entry.js.map +0 -1
  495. package/dist/ripple/p-c36002b6.system.js.map +0 -1
  496. package/dist/ripple/p-c5bf7db8.entry.js +0 -2
  497. package/dist/ripple/p-c5bf7db8.entry.js.map +0 -1
  498. package/dist/ripple/p-c68b3798.system.js.map +0 -1
  499. package/dist/ripple/p-c6a0f7e5.js.map +0 -1
  500. package/dist/ripple/p-d46f5794.entry.js +0 -2
  501. package/dist/ripple/p-d46f5794.entry.js.map +0 -1
  502. package/dist/ripple/p-d48313e0.entry.js +0 -2
  503. package/dist/ripple/p-d48313e0.entry.js.map +0 -1
  504. package/dist/ripple/p-d939cb54.entry.js +0 -2
  505. package/dist/ripple/p-d939cb54.entry.js.map +0 -1
  506. package/dist/ripple/p-dbfd1640.system.entry.js.map +0 -1
  507. package/dist/ripple/p-e22854c1.entry.js +0 -2
  508. package/dist/ripple/p-e22854c1.entry.js.map +0 -1
  509. package/dist/ripple/p-e70bb79f.js +0 -2
  510. package/dist/ripple/p-e70bb79f.js.map +0 -1
  511. package/dist/ripple/p-ed82573a.entry.js +0 -2
  512. package/dist/ripple/p-ed82573a.entry.js.map +0 -1
  513. package/dist/ripple/p-f0fd8695.system.js.map +0 -1
  514. package/dist/ripple/p-f312d59a.system.entry.js.map +0 -1
  515. package/dist/ripple/p-f59a495a.system.entry.js.map +0 -1
  516. package/dist/ripple/p-f80eb8a5.system.js.map +0 -1
  517. package/dist/ripple/p-fb67c39e.system.entry.js.map +0 -1
  518. package/dist/ripple/p-fc08d5e1.entry.js +0 -2
  519. package/dist/ripple/p-fc08d5e1.entry.js.map +0 -1
  520. package/dist/ripple/p-fe7da854.entry.js +0 -2
  521. package/dist/ripple/p-fe7da854.entry.js.map +0 -1
  522. package/dist/ripple/ripple.esm.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["ChartSlice","exports","class_1","prototype","componentDidLoad","parseInt","this","amount","legend","Error","componentDidUpdate","wmChartSliceUpdated","emit"],"sources":["src/components/charts/wm-chart/wm-chart-slice.tsx"],"sourcesContent":["import { Component, Prop, Event, EventEmitter } from \"@stencil/core\";\n\n@Component({\n tag: \"wm-chart-slice\",\n})\nexport class ChartSlice {\n @Prop() legend?: string;\n @Prop() amount?: string;\n @Prop() popoverTitle?: string;\n @Prop() popoverText?: string;\n @Prop() popoverButtonText?: string;\n\n @Event() wmChartSliceUpdated!: EventEmitter<void>;\n\n componentDidLoad() {\n if (parseInt(this.amount!) > 0 && !this.legend) {\n throw new Error(\n \"wm-chart-slice was provided an amount value without a legend. The legend is required unless the amount is 0 or left empty. For more information see https://components.watermarkinsights.com/chart\"\n );\n }\n }\n\n componentDidUpdate() {\n this.wmChartSliceUpdated.emit();\n }\n}\n"],"mappings":"8IAKaA,EAAUC,EAAA,4B,qNASrBC,EAAAC,UAAAC,iBAAA,WACE,GAAIC,SAASC,KAAKC,QAAW,IAAMD,KAAKE,OAAQ,CAC9C,MAAM,IAAIC,MACR,qM,GAKNP,EAAAC,UAAAO,mBAAA,WACEJ,KAAKK,oBAAoBC,M,WAlBN,G"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["Wrapper","exports","class_1","prototype","componentDidLoad","this","wmWrapperLoaded","emit","render"],"sources":["src/components/wm-wrapper/wm-wrapper.tsx"],"sourcesContent":["import { Component, Element, Event, EventEmitter } from \"@stencil/core\";\n\n@Component({\n tag: \"wm-wrapper\",\n shadow: false,\n})\nexport class Wrapper {\n @Element() el!: any;\n @Event() wmWrapperLoaded!: EventEmitter<void>;\n\n componentDidLoad() {\n this.wmWrapperLoaded.emit();\n }\n\n render() {\n return;\n }\n}\n"],"mappings":"sJAMaA,EAAOC,EAAA,wB,yEAIlBC,EAAAC,UAAAC,iBAAA,WACEC,KAAKC,gBAAgBC,M,EAGvBL,EAAAC,UAAAK,OAAA,WACE,M,uHATgB,G"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["getRequest","exports","url","__awaiter","_this","fetch","response","_a","sent","ok","json","Error","statusText","postRequest","payload","method","headers","body","JSON","stringify","deleteRequest","putRequest","file","onProgress","Promise","resolve","reject","req","XMLHttpRequest","upload","addEventListener","ev","this","readyState","status","onerror","open","setRequestHeader","concat","name","send"],"sources":["src/global/services/http-service.tsx"],"sourcesContent":["export const getRequest = async (url: string) => {\n const response = await fetch(url);\n if (!!response && !!response.ok) {\n return await response.json();\n } else {\n throw new Error(response.statusText);\n }\n};\n\nexport const postRequest = async (url: string, payload: Object) => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\n body: JSON.stringify(payload),\n });\n if (!!response && !!response.ok) {\n return await response.json();\n } else {\n throw new Error(response.statusText);\n }\n};\n\nexport const deleteRequest = async (url: string) => {\n const response = await fetch(url, { method: \"DELETE\" });\n if (!!response && !!response.ok) {\n return await response.json();\n } else {\n throw new Error(response.statusText);\n }\n};\n\nexport const putRequest = (url: string, file: File, onProgress: Function) => {\n return new Promise((resolve, reject) => {\n // there's no way to track progress with the fetch API, so using XHR\n const req = new XMLHttpRequest();\n\n req.upload.addEventListener(\"progress\", (ev) => onProgress(ev));\n\n req.addEventListener(\"readystatechange\", function () {\n if (this.readyState === 4 && this.status === 200) {\n resolve(this);\n } else if (this.readyState === 4 && this.status !== 200) {\n reject();\n }\n });\n\n req.onerror = () => reject();\n req.open(\"PUT\", url, true);\n req.setRequestHeader(\"Content-Disposition\", `attachment;filename=\"${file.name}\"`);\n req.send(file);\n });\n};\n"],"mappings":"oiDAAaA,EAAUC,EAAA,KAAG,SAAOC,GAAW,OAAAC,UAAAC,OAAA,qB,kEACzB,SAAMC,MAAMH,I,OAAvBI,EAAWC,EAAAC,O,OACXF,KAAcA,EAASG,IAAzB,YACK,SAAMH,EAASI,Q,OAAtB,SAAOH,EAAAC,Q,OAEP,MAAM,IAAIG,MAAML,EAASM,Y,cAIhBC,EAAWZ,EAAA,KAAG,SAAOC,EAAaY,GAAe,OAAAX,UAAAC,OAAA,qB,kEAC3C,SAAMC,MAAMH,EAAK,CAChCa,OAAQ,OACRC,QAAS,CAAE,eAAgB,mCAC3BC,KAAMC,KAAKC,UAAUL,M,OAHjBR,EAAWC,EAAAC,O,OAKXF,KAAcA,EAASG,IAAzB,YACK,SAAMH,EAASI,Q,OAAtB,SAAOH,EAAAC,Q,OAEP,MAAM,IAAIG,MAAML,EAASM,Y,cAIhBQ,EAAanB,EAAA,KAAG,SAAOC,GAAW,OAAAC,UAAAC,OAAA,qB,kEAC5B,SAAMC,MAAMH,EAAK,CAAEa,OAAQ,Y,OAAtCT,EAAWC,EAAAC,O,OACXF,KAAcA,EAASG,IAAzB,YACK,SAAMH,EAASI,Q,OAAtB,SAAOH,EAAAC,Q,OAEP,MAAM,IAAIG,MAAML,EAASM,Y,cAIhBS,EAAUpB,EAAA,KAAG,SAACC,EAAaoB,EAAYC,GAClD,OAAO,IAAIC,SAAQ,SAACC,EAASC,GAE3B,IAAMC,EAAM,IAAIC,eAEhBD,EAAIE,OAAOC,iBAAiB,YAAY,SAACC,GAAO,OAAAR,EAAWQ,EAAX,IAEhDJ,EAAIG,iBAAiB,oBAAoB,WACvC,GAAIE,KAAKC,aAAe,GAAKD,KAAKE,SAAW,IAAK,CAChDT,EAAQO,K,MACH,GAAIA,KAAKC,aAAe,GAAKD,KAAKE,SAAW,IAAK,CACvDR,G,KAIJC,EAAIQ,QAAU,WAAM,OAAAT,GAAA,EACpBC,EAAIS,KAAK,MAAOlC,EAAK,MACrByB,EAAIU,iBAAiB,sBAAuB,wBAAAC,OAAwBhB,EAAKiB,KAAI,MAC7EZ,EAAIa,KAAKlB,E,GAEb,G"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["wmFileListCss","FileList","exports","Object","defineProperty","class_1","prototype","this","files","JSON","parse","handleFileDownloaded","ev","wmFileDownload","emit","detail","handleFilePreviewed","wmFilePreview","handleFileDeleted","wmFileDelete","renderFile","file","fileActions","undefined","h","stringify","showInfo","render","_this","role","class","fileList","map"],"sources":["src/components/wm-file-list/wm-file-list.scss?tag=wm-file-list&encapsulation=shadow","src/components/wm-file-list/wm-file-list.tsx"],"sourcesContent":[":host,\nwm-file-list {\n display: block;\n}\n\n.list-wrapper {\n display: flex;\n flex-direction: column;\n gap: rem-calc(8);\n}\n","import { h, Component, Element, Event, EventEmitter, Listen, Prop } from \"@stencil/core\";\nimport { UploadedFile } from \"../../global/interfaces\";\n\n@Component({\n tag: \"wm-file-list\",\n styleUrl: \"wm-file-list.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class FileList {\n @Element() el!: HTMLWmFileListElement;\n @Prop() files?: string;\n @Prop() showInfo: \"time\" | \"size\" | \"none\" = \"time\";\n\n @Event() wmFileDelete!: EventEmitter<string>;\n @Event() wmFileDownload!: EventEmitter<string>;\n @Event() wmFilePreview!: EventEmitter<string>;\n\n get fileList(): [UploadedFile] {\n return this.files ? JSON.parse(this.files) : [];\n }\n\n @Listen(\"wmIntFileDownloaded\")\n handleFileDownloaded(ev: CustomEvent) {\n this.wmFileDownload.emit(ev.detail);\n }\n\n @Listen(\"wmIntFilePreviewed\")\n handleFilePreviewed(ev: CustomEvent) {\n this.wmFilePreview.emit(ev.detail);\n }\n\n @Listen(\"wmIntFileDeleted\")\n handleFileDeleted(ev: CustomEvent) {\n this.wmFileDelete.emit(ev.detail);\n }\n\n renderFile(file: UploadedFile) {\n // file list does not allow for default file actions\n // if none are passed, display no buttons\n if (file.fileActions === undefined) {\n file.fileActions = \"\";\n }\n return <wm-file file={JSON.stringify(file)} show-info={this.showInfo}></wm-file>;\n }\n\n render() {\n return (\n <div role=\"list\" class=\"list-wrapper\">\n {this.fileList.map((file: UploadedFile) => this.renderFile(file))}\n </div>\n );\n }\n}\n"],"mappings":"0JAAA,IAAMA,EAAgB,8I,ICQTC,EAAQC,EAAA,0B,kMAG0B,M,CAM7CC,OAAAC,eAAIC,EAAAC,UAAA,WAAQ,C,IAAZ,WACE,OAAOC,KAAKC,MAAQC,KAAKC,MAAMH,KAAKC,OAAS,E,uCAI/CH,EAAAC,UAAAK,qBAAA,SAAqBC,GACnBL,KAAKM,eAAeC,KAAKF,EAAGG,O,EAI9BV,EAAAC,UAAAU,oBAAA,SAAoBJ,GAClBL,KAAKU,cAAcH,KAAKF,EAAGG,O,EAI7BV,EAAAC,UAAAY,kBAAA,SAAkBN,GAChBL,KAAKY,aAAaL,KAAKF,EAAGG,O,EAG5BV,EAAAC,UAAAc,WAAA,SAAWC,GAGT,GAAIA,EAAKC,cAAgBC,UAAW,CAClCF,EAAKC,YAAc,E,CAErB,OAAOE,EAAA,WAASH,KAAMZ,KAAKgB,UAAUJ,GAAK,YAAad,KAAKmB,U,EAG9DrB,EAAAC,UAAAqB,OAAA,eAAAC,EAAArB,KACE,OACEiB,EAAA,OAAKK,KAAK,OAAOC,MAAM,gBACpBvB,KAAKwB,SAASC,KAAI,SAACX,GAAuB,OAAAO,EAAKR,WAAWC,EAAhB,I,kOAxC9B,I"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["wmChartCss","Chart","exports","this","uid","generateId","slicesDetails","handleStackedBarResize","debounce","__awaiter","_this","hasHiddenBarValue","valueEls","el","shadowRoot","querySelectorAll","length","lastVisibleRightEdge_1","getBoundingClientRect","right","margin_1","forEach","valueEl","idx","bounds","left","classList","add","remove","debouncedUpdate","forceUpdate","debouncedSliceUpdate","getDetails","call","currentChartType","_a","sent","Object","defineProperty","class_1","prototype","valueFormat","showValues","window","innerWidth","querySelector","Array","from","current","chartType","hybridType","children","allChartsDetails","text","concat","label","subinfo","chartDetails","category","isStackedBar","isSimpleBar","intl","formatMessage","id","defaultMessage","description","toggleTabbingOn","isTabbing","toggleTabbingOff","handleKeydown","ev","handleChartKeydown","componentWillLoad","Error","console","warn","isDoughnut","resizeObserver","ResizeObserver","observe","handleSliceUpdate","renderBarText","s","val","tempValueFormat","perc","amount","h","class","style","width","amountToPercent","total","drawAxis","x1","x2","y1","y2","x","y","renderChart","renderStackedBar","renderSimpleBar","renderDoughnut","render","Host","onBlur","exitChart","ref","componentWrapperEl","userIsNavigating","labelPosition","role","ariaLabelText","tabindex","chartRoleDescription","htmlFor","isBar","renderLegend","renderCompletionMessage","renderHiddenValuesMessage","renderInstructionsText"],"sources":["src/components/charts/wm-chart/wm-chart.scss?tag=wm-chart&encapsulation=shadow","src/components/charts/wm-chart/wm-chart.tsx"],"sourcesContent":[":host,\nwm-chart {\n @extend %chart-styles;\n}\n\n:host(:focus) {\n @extend %chart-focus-styles;\n}\n","import { Component, Element, h, Host, Prop, State, Listen } from \"@stencil/core\";\nimport { forceUpdate } from \"@stencil/core\";\nimport { debounce, generateId, intl } from \"../../../global/functions\";\nimport {\n amountToPercent,\n exitChart,\n getDetails,\n handleChartKeydown,\n renderStackedBar,\n renderSimpleBar,\n renderCompletionMessage,\n renderDoughnut,\n renderHiddenValuesMessage,\n renderInstructionsText,\n renderLegend,\n allChartsDetails,\n} from \"../chartFunctions\";\nimport { ChartType, SliceDetails, SliceElement } from \"../../../global/interfaces\";\n\n@Component({\n tag: \"wm-chart\",\n shadow: { delegatesFocus: true },\n styleUrl: \"wm-chart.scss\",\n})\nexport class Chart {\n @Element() el!: HTMLWmChartElement;\n // @ts-ignore-- TS warns this is unused, but its needed in chartFunctions\n private componentWrapperEl!: HTMLDivElement;\n\n @Prop() chartType: ChartType | \"hybrid\" = \"doughnut1\"; // hybrid is not a real ChartType, it gets converted to something else.\n @Prop() label?: string;\n @Prop() labelWidth: string = \"150px\";\n @Prop() subinfo?: string;\n @Prop() completionMessage?: string;\n @Prop() valueFormat?: \"percentage\" | \"amount\";\n @Prop() showValues?: \"percentage\" | \"amount\"; // DEPRECATED in favor of value-format\n @Prop() showGrid?: boolean = true; \n get tempValueFormat() {\n // use of this getter should be replaced with dateFormat when showValues is fully phased out\n return this.valueFormat || this.showValues || \"none\";\n }\n @Prop() showLegend: boolean = true;\n @Prop() showBarLegend: boolean = false;\n @Prop() notStartedColor: boolean = false;\n // left labels are a temporary solution for the lack of a stacked bar chart and is undocumented\n // it only works with bar4 and should be used without a legend\n @Prop() labelPosition: \"left\" | \"top\" = \"top\";\n @State() isTabbing: boolean = false;\n @State() userIsNavigating: boolean = false;\n @State() hasHiddenBarValue: boolean = false;\n\n get hybridType(): \"doughnut0\" | \"bar1\" {\n return window.innerWidth > 1340 ? \"doughnut0\" : \"bar1\";\n }\n private uid: string = generateId();\n private total!: number;\n private slicesDetails: SliceDetails[] = [];\n\n get popoverEl() {\n return this.el.shadowRoot!.querySelector(\"priv-chart-popover\");\n }\n\n get sliceEls(): SliceElement[] {\n return Array.from(this.el.shadowRoot!.querySelectorAll(\".segment\"));\n }\n\n get currentChartType(): ChartType {\n let current = this.chartType as ChartType;\n\n if (this.chartType === \"hybrid\") {\n current = this.hybridType;\n } else if (this.chartType === \"doughnut2\" && this.el.children.length > 3) {\n // render an internal type (that includes an additional color) if doughnut2 has more than 3 slices\n current = \"doughnut2plus\";\n }\n return current; \n }\n\n get chartDetails() {\n return allChartsDetails[this.currentChartType];\n }\n\n get ariaLabelText() {\n let text = `${this.label}`;\n if (this.subinfo) {\n text += ` ${this.subinfo}`;\n }\n return text;\n }\n\n get isDoughnut() {\n return this.chartDetails.category === \"doughnut\";\n }\n\n get isStackedBar() {\n return this.chartDetails.category === \"stackedBar\";\n }\n\n get isSimpleBar() {\n return this.chartDetails.category === \"simpleBar\";\n }\n\n get isBar() {\n return this.isStackedBar || this.isSimpleBar;\n }\n\n get chartRoleDescription(): string {\n return intl.formatMessage({\n id: \"chart.roleDescription\",\n defaultMessage: \"Interactive chart\",\n description: \"For screen readers only, a description clarifying the role of the chart widget\",\n });\n }\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n @Listen(\"keydown\")\n handleKeydown(ev: KeyboardEvent) {\n handleChartKeydown.call(this, ev);\n }\n\n /* LIFECYCLE METHODS + EVENTS FROM THE CHILDREN */\n\n async componentWillLoad() {\n if (!this.label) {\n throw new Error(\n \"For accessibility purposes, you must provide a label for the chart. See https://components.watermarkinsights.com/chart for more information.\"\n );\n }\n if (this.showValues) {\n console.warn(\"wm-chart: show-values has been deprecated as of v3.1.0. Please use value-format instead.\");\n }\n await getDetails.call(this, this.currentChartType);\n\n // rerender on resize\n // unnecessary for doughnuts (except hybrid) as layout doesn't change\n if (this.chartType === \"hybrid\" || !this.isDoughnut) {\n const resizeObserver = new ResizeObserver(() => {\n this.isStackedBar ? this.handleStackedBarResize() : this.debouncedUpdate();\n });\n resizeObserver.observe(this.el);\n }\n }\n\n handleStackedBarResize = debounce(async () => {\n let hasHiddenBarValue = false;\n\n // if any value text overlaps with another, hide it and display warning\n const valueEls = this.el.shadowRoot!.querySelectorAll(\".value\");\n\n if (valueEls.length) {\n let lastVisibleRightEdge = valueEls.length ? valueEls[0].getBoundingClientRect().right : 0;\n let margin = 4;\n\n valueEls.forEach((valueEl, idx) => {\n // checks are to the left of each valueEl, so skip the first one\n if (idx > 0) {\n const bounds = valueEl.getBoundingClientRect();\n\n if (bounds.left - margin < lastVisibleRightEdge) {\n // left edge of current value is overlapping right edge of last visible value\n valueEl.classList.add(\"hidden\");\n hasHiddenBarValue = true;\n } else {\n valueEl.classList.remove(\"hidden\");\n lastVisibleRightEdge = bounds.right;\n }\n }\n });\n }\n\n this.hasHiddenBarValue = hasHiddenBarValue;\n }, 100);\n\n debouncedUpdate = debounce(async () => {\n forceUpdate(this.el);\n }, 10);\n\n debouncedSliceUpdate = debounce(async () => {\n await getDetails.call(this, this.currentChartType);\n forceUpdate(this.el);\n }, 100);\n\n @Listen(\"wmChartSliceUpdated\")\n handleSliceUpdate() {\n this.debouncedSliceUpdate();\n }\n\n /* RENDERING */\n renderBarText(s: SliceDetails, idx: number) {\n let val;\n if (this.tempValueFormat === \"percentage\") {\n // if segment has an amount, but \"0\" percentage (it's below 0.5% and rounded down), still display it as <1%\n val = s.perc === 0 && s.amount > 0 ? \"<1%\" : `${s.perc}%`;\n } else if (this.tempValueFormat === \"amount\") {\n val = s.amount;\n }\n\n // even though we do not display the value text if it has an amount of 0, we still want to render the value-wrapper\n // in order to not disturb the positioning of the other value texts in the entire row\n return (\n <div\n class=\"value-wrapper\"\n style={{\n width: `calc(${amountToPercent(s.amount, this.total, false)}%\n ${idx !== this.slicesDetails.length - 1 ? \" - 2px\" : \"\"}`,\n }}\n >\n <span class=\"value\">{s.amount > 0 && val}</span>\n </div>\n );\n }\n\n drawAxis() {\n if (this.currentChartType === \"bar3\") {\n return (\n <svg class=\"axis\">\n <line x1=\"0\" x2=\"100%\" y1=\"0\" y2=\"0\" />\n <line x1=\"0\" x2=\"0\" y1=\"0\" y2=\"-85px\" />\n <line class=\"tick\" x1=\"0.5\" x2=\"0.5\" y1=\"0\" y2=\"6\" />\n <text x=\"0.5\" y=\"-6\">\n 0%\n </text>\n <line class=\"tick\" x1=\"100%\" x2=\"100%\" y1=\"0\" y2=\"6\" />\n <text x=\"100%\" y=\"-6\">\n 100%\n </text>\n </svg>\n );\n }\n }\n\n renderChart() {\n if (this.total > 0) {\n if (this.isStackedBar) {\n return renderStackedBar.call(this, this.currentChartType);\n } else if (this.isSimpleBar) {\n return renderSimpleBar.call(this, this.currentChartType);\n } else if (this.isDoughnut) {\n return renderDoughnut.call(this, this.currentChartType);\n }\n }\n }\n\n render() {\n return (\n <Host onBlur={() => exitChart.call(this)}>\n <div\n ref={(el) => (this.componentWrapperEl = el as HTMLDivElement)}\n class={`component-wrapper ${this.currentChartType} ${\n this.isTabbing && !this.userIsNavigating ? \"user-is-tabbing\" : \"\"\n } ${this.labelPosition === \"left\" && this.currentChartType === \"bar4\" ? \"left-label\" : \"\"}`}\n role=\"application\"\n aria-label={this.ariaLabelText}\n tabindex={0}\n aria-roledescription={this.chartRoleDescription}\n aria-describedby=\"chart-instructions\"\n >\n <label class=\"label\" id={`label-${this.uid}`} htmlFor={`graphic-${this.uid}`}>\n <span class=\"label-text\">{this.label}</span>\n {this.subinfo ? <span class=\"subinfo\">{this.subinfo}</span> : \"\"}\n </label>\n {this.isBar && renderLegend.call(this, this.currentChartType)}\n {this.renderChart()}\n {this.isDoughnut && renderLegend.call(this, this.currentChartType)}\n <priv-chart-popover class={this.isTabbing ? \"user-is-tabbing\" : \"\"}></priv-chart-popover>\n {this.currentChartType === \"doughnut0\" ? renderCompletionMessage.call(this) : \"\"}\n {this.hasHiddenBarValue && renderHiddenValuesMessage()}\n </div>\n {renderInstructionsText()}\n </Host>\n );\n }\n}\n"],"mappings":"ozDAAA,IAAMA,EAAa,8kpB,ICwBNC,EAAKC,EAAA,sB,mCA8BRC,KAAAC,IAAcC,IAEdF,KAAAG,cAAgC,GAgGxCH,KAAAI,uBAAyBC,GAAS,kBAAAC,UAAAC,OAAA,qB,iDAC5BC,EAAoB,MAGlBC,EAAWT,KAAKU,GAAGC,WAAYC,iBAAiB,UAEtD,GAAIH,EAASI,OAAQ,CACfC,EAAuBL,EAASI,OAASJ,EAAS,GAAGM,wBAAwBC,MAAQ,EACrFC,EAAS,EAEbR,EAASS,SAAQ,SAACC,EAASC,GAEzB,GAAIA,EAAM,EAAG,CACX,IAAMC,EAASF,EAAQJ,wBAEvB,GAAIM,EAAOC,KAAOL,EAASH,EAAsB,CAE/CK,EAAQI,UAAUC,IAAI,UACtBhB,EAAoB,I,KACf,CACLW,EAAQI,UAAUE,OAAO,UACzBX,EAAuBO,EAAOL,K,MAMtChB,KAAKQ,kBAAoBA,E,kBACxB,KAEHR,KAAA0B,gBAAkBrB,GAAS,kBAAAC,UAAAC,OAAA,qB,qCACzBoB,EAAY3B,KAAKU,I,kBAChB,IAEHV,KAAA4B,qBAAuBvB,GAAS,kBAAAC,UAAAC,OAAA,qB,4DAC9B,SAAMsB,EAAWC,KAAK9B,KAAMA,KAAK+B,mB,OAAjCC,EAAAC,OACAN,EAAY3B,KAAKU,I,mBAChB,K,eAhKuC,Y,qCAEb,Q,2HAKA,K,gBAKC,K,mBACG,M,qBACE,M,mBAGK,M,eACV,M,sBACO,M,uBACC,K,CAZtCwB,OAAAC,eAAIC,EAAAC,UAAA,kBAAe,C,IAAnB,WAEE,OAAOrC,KAAKsC,aAAetC,KAAKuC,YAAc,M,uCAYhDL,OAAAC,eAAIC,EAAAC,UAAA,aAAU,C,IAAd,WACE,OAAOG,OAAOC,WAAa,KAAO,YAAc,M,uCAMlDP,OAAAC,eAAIC,EAAAC,UAAA,YAAS,C,IAAb,WACE,OAAOrC,KAAKU,GAAGC,WAAY+B,cAAc,qB,uCAG3CR,OAAAC,eAAIC,EAAAC,UAAA,WAAQ,C,IAAZ,WACE,OAAOM,MAAMC,KAAK5C,KAAKU,GAAGC,WAAYC,iBAAiB,Y,uCAGzDsB,OAAAC,eAAIC,EAAAC,UAAA,mBAAgB,C,IAApB,WACE,IAAIQ,EAAU7C,KAAK8C,UAEnB,GAAI9C,KAAK8C,YAAc,SAAU,CAC/BD,EAAU7C,KAAK+C,U,MACV,GAAI/C,KAAK8C,YAAc,aAAe9C,KAAKU,GAAGsC,SAASnC,OAAS,EAAG,CAExEgC,EAAU,e,CAEZ,OAAOA,C,uCAGTX,OAAAC,eAAIC,EAAAC,UAAA,eAAY,C,IAAhB,WACE,OAAOY,EAAiBjD,KAAK+B,iB,uCAG/BG,OAAAC,eAAIC,EAAAC,UAAA,gBAAa,C,IAAjB,WACE,IAAIa,EAAO,GAAAC,OAAGnD,KAAKoD,OACnB,GAAIpD,KAAKqD,QAAS,CAChBH,GAAQ,IAAAC,OAAInD,KAAKqD,Q,CAEnB,OAAOH,C,uCAGThB,OAAAC,eAAIC,EAAAC,UAAA,aAAU,C,IAAd,WACE,OAAOrC,KAAKsD,aAAaC,WAAa,U,uCAGxCrB,OAAAC,eAAIC,EAAAC,UAAA,eAAY,C,IAAhB,WACE,OAAOrC,KAAKsD,aAAaC,WAAa,Y,uCAGxCrB,OAAAC,eAAIC,EAAAC,UAAA,cAAW,C,IAAf,WACE,OAAOrC,KAAKsD,aAAaC,WAAa,W,uCAGxCrB,OAAAC,eAAIC,EAAAC,UAAA,QAAK,C,IAAT,WACE,OAAOrC,KAAKwD,cAAgBxD,KAAKyD,W,uCAGnCvB,OAAAC,eAAIC,EAAAC,UAAA,uBAAoB,C,IAAxB,WACE,OAAOqB,EAAKC,cAAc,CACxBC,GAAI,wBACJC,eAAgB,oBAChBC,YAAa,kF,uCAKjB1B,EAAAC,UAAA0B,gBAAA,WACE/D,KAAKgE,UAAY,I,EAInB5B,EAAAC,UAAA4B,iBAAA,WACEjE,KAAKgE,UAAY,K,EAInB5B,EAAAC,UAAA6B,cAAA,SAAcC,GACZC,EAAmBtC,KAAK9B,KAAMmE,E,EAK1B/B,EAAAC,UAAAgC,kBAAN,W,6HACE,IAAKrE,KAAKoD,MAAO,CACf,MAAM,IAAIkB,MACR,+I,CAGJ,GAAItE,KAAKuC,WAAY,CACnBgC,QAAQC,KAAK,2F,CAEf,SAAM3C,EAAWC,KAAK9B,KAAMA,KAAK+B,mB,OAAjCC,EAAAC,OAIA,GAAIjC,KAAK8C,YAAc,WAAa9C,KAAKyE,WAAY,CAC7CC,EAAiB,IAAIC,gBAAe,WACxCpE,EAAKiD,aAAejD,EAAKH,yBAA2BG,EAAKmB,iB,IAE3DgD,EAAeE,QAAQ5E,KAAKU,G,mBA4ChC0B,EAAAC,UAAAwC,kBAAA,WACE7E,KAAK4B,sB,EAIPQ,EAAAC,UAAAyC,cAAA,SAAcC,EAAiB3D,GAC7B,IAAI4D,EACJ,GAAIhF,KAAKiF,kBAAoB,aAAc,CAEzCD,EAAMD,EAAEG,OAAS,GAAKH,EAAEI,OAAS,EAAI,MAAQ,GAAAhC,OAAG4B,EAAEG,KAAI,I,MACjD,GAAIlF,KAAKiF,kBAAoB,SAAU,CAC5CD,EAAMD,EAAEI,M,CAKV,OACEC,EAAA,OACEC,MAAM,gBACNC,MAAO,CACLC,MAAO,QAAApC,OAAQqC,EAAgBT,EAAEI,OAAQnF,KAAKyF,MAAO,OAAM,eAAAtC,OAC3D/B,IAAQpB,KAAKG,cAAcU,OAAS,EAAI,SAAW,MAGrDuE,EAAA,QAAMC,MAAM,SAASN,EAAEI,OAAS,GAAKH,G,EAK3C5C,EAAAC,UAAAqD,SAAA,WACE,GAAI1F,KAAK+B,mBAAqB,OAAQ,CACpC,OACEqD,EAAA,OAAKC,MAAM,QACTD,EAAA,QAAMO,GAAG,IAAIC,GAAG,OAAOC,GAAG,IAAIC,GAAG,MACjCV,EAAA,QAAMO,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,UAC9BV,EAAA,QAAMC,MAAM,OAAOM,GAAG,MAAMC,GAAG,MAAMC,GAAG,IAAIC,GAAG,MAC/CV,EAAA,QAAMW,EAAE,MAAMC,EAAE,MAAI,MAGpBZ,EAAA,QAAMC,MAAM,OAAOM,GAAG,OAAOC,GAAG,OAAOC,GAAG,IAAIC,GAAG,MACjDV,EAAA,QAAMW,EAAE,OAAOC,EAAE,MAAI,Q,GAQ7B5D,EAAAC,UAAA4D,YAAA,WACE,GAAIjG,KAAKyF,MAAQ,EAAG,CAClB,GAAIzF,KAAKwD,aAAc,CACrB,OAAO0C,EAAiBpE,KAAK9B,KAAMA,KAAK+B,iB,MACnC,GAAI/B,KAAKyD,YAAa,CAC3B,OAAO0C,EAAgBrE,KAAK9B,KAAMA,KAAK+B,iB,MAClC,GAAI/B,KAAKyE,WAAY,CAC1B,OAAO2B,EAAetE,KAAK9B,KAAMA,KAAK+B,iB,IAK5CK,EAAAC,UAAAgE,OAAA,eAAA9F,EAAAP,KACE,OACEoF,EAACkB,EAAI,CAACC,OAAQ,WAAM,OAAAC,EAAU1E,KAAKvB,EAAf,GAClB6E,EAAA,OACEqB,IAAK,SAAC/F,GAAE,OAAMH,EAAKmG,mBAAqBhG,CAAhC,EACR2E,MAAO,qBAAAlC,OAAqBnD,KAAK+B,iBAAgB,KAAAoB,OAC/CnD,KAAKgE,YAAchE,KAAK2G,iBAAmB,kBAAoB,GACjE,KAAAxD,OAAInD,KAAK4G,gBAAkB,QAAU5G,KAAK+B,mBAAqB,OAAS,aAAe,IACvF8E,KAAK,cAAa,aACN7G,KAAK8G,cACjBC,SAAU,EAAC,uBACW/G,KAAKgH,qBAAoB,mBAC9B,sBAEjB5B,EAAA,SAAOC,MAAM,QAAQzB,GAAI,SAAAT,OAASnD,KAAKC,KAAOgH,QAAS,WAAA9D,OAAWnD,KAAKC,MACrEmF,EAAA,QAAMC,MAAM,cAAcrF,KAAKoD,OAC9BpD,KAAKqD,QAAU+B,EAAA,QAAMC,MAAM,WAAWrF,KAAKqD,SAAkB,IAE/DrD,KAAKkH,OAASC,EAAarF,KAAK9B,KAAMA,KAAK+B,kBAC3C/B,KAAKiG,cACLjG,KAAKyE,YAAc0C,EAAarF,KAAK9B,KAAMA,KAAK+B,kBACjDqD,EAAA,sBAAoBC,MAAOrF,KAAKgE,UAAY,kBAAoB,KAC/DhE,KAAK+B,mBAAqB,YAAcqF,EAAwBtF,KAAK9B,MAAQ,GAC7EA,KAAKQ,mBAAqB6G,KAE5BC,I,kOA7PS,I"}
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,h as i,f as s,g as o}from"./p-1c23de4a.js";import{i as a,m as r,y as n}from"./p-c6a0f7e5.js";const h='.toggle{all:unset;cursor:pointer;padding:0 0.375rem;height:2.375rem;border:none;-moz-border-top-right-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-bottom-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-top-left-radius:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-bottom-left-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:#fff}.toggle:disabled{pointer-events:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:rgba(74, 74, 74, 0.05)}.toggle:disabled .calendar::after{color:#7b7b7b}.toggle:hover{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background:#e6e6e6}.toggle:hover .calendar::after{color:#575195}[dir=RTL] .toggle{right:auto;left:0}.toggle span::after{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\\f0ed";font-size:1.5rem;color:#575195;padding:0;line-height:2.5rem}.toggle:focus{outline:none}.toggle::-moz-focus-inner{border:0}.user-is-tabbing .toggle:focus{-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e}.user-is-tabbing .toggle:focus::-moz-focus-inner{border:0}.popup{visibility:hidden;font-family:inherit;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:0px 4px 15px 0px rgba(0, 0, 0, 0.2);-moz-box-shadow:0px 4px 15px 0px rgba(0, 0, 0, 0.2);box-shadow:0px 4px 15px 0px rgba(0, 0, 0, 0.2);width:21rem;z-index:10;position:absolute;left:0;top:40px;min-height:21.0625rem;-webkit-transition:-webkit-transform 0.25s ease;transition:-webkit-transform 0.25s ease;transition:transform 0.25s ease;transition:transform 0.25s ease, -webkit-transform 0.25s ease;-webkit-transform-origin:center top;transform-origin:center top;-webkit-transform:scale(1, 0);transform:scale(1, 0);background-color:#fff}.popup.open{-webkit-transform:scale(1, 1);transform:scale(1, 1)}.popup.expand-upwards{top:auto;bottom:2.375rem;-webkit-transform-origin:center bottom;transform-origin:center bottom}.popup .calendar-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;position:relative;padding:0.9375rem 0.25rem}.popup .calendar-header .title-box{height:2.625rem;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;border:1px solid;font-weight:500;font-size:0.875rem;background:transparent;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;padding:0 0.375rem 0 0.75rem;border-color:#575195;color:#575195}.popup .calendar-header .title-box:after{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\\f140";padding-left:0.75rem}.popup .calendar-header .title-box.year:after{content:"\\f143"}.popup .calendar-header .title-box::-moz-focus-inner{border:0}.popup .calendar-header .title-box:focus{outline:none}.popup .calendar-header .arw-btn{cursor:pointer;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;border-radius:50%;width:2.75rem;height:2.75rem;border:none;color:#575195;background:transparent;padding:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;line-height:2.75rem}.popup .calendar-header .arw-btn .mdi{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:1.5rem;font-weight:normal;line-height:2.75rem}.popup .calendar-header .arw-btn .mdi:hover{background-color:#efeef1}.popup .calendar-header .arw-btn:focus{outline:none}.popup .calendar-header .arw-btn:active{-ms-transform:scale(0.9, 0.9);-webkit-transform:scale(0.9, 0.9);-moz-transform:scale(0.9, 0.9);transform:scale(0.9, 0.9);background-color:#d7d6d9}.popup .day-view{min-width:100%}.popup .day-view .date-grid{width:100%;text-align:center;border-collapse:collapse;margin-bottom:0.4375rem;color:#757575}.popup .day-view .date-grid .date-row:first-child .date-cell{margin-top:0.125rem}.popup .day-view .date-grid .date-header{background-color:#eeedf4}.popup .day-view .date-grid .header-cell{height:2.0625rem;line-height:2.0625rem;width:2.75rem;margin:0 calc((14.28% - 44px) / 2);padding:0;display:inline-block;font-size:0.8125rem;font-weight:bold;color:#4a4a4a;border:none}.popup .day-view .date-grid .date-cell{cursor:pointer;display:inline-block;padding:0;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;border-radius:50%;height:2.75rem;width:2.75rem;margin:0 calc((14.28% - 44px) / 2);font-size:0.875rem;font-weight:500;line-height:2.75rem}.popup .day-view .date-grid .date-cell:focus{outline:none}.popup .day-view .date-grid .date-cell:hover{background-color:#efeef1}.popup .day-view .date-grid .date-cell:active{background-color:#575195;color:#ffffff}.popup .day-view .date-grid .date-cell.current-month{color:#4a4a4a}.popup .day-view .date-grid .date-cell.current-month[aria-selected=true]{background-color:#575195;color:#ffffff}.popup .month-view .months{border-top:2px solid;border-top-color:#eeedf4;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.popup .month-view .month-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;width:100%;border-bottom:2px solid;border-bottom-color:#eeedf4}.popup .month-view .month{cursor:pointer;text-align:center;width:100%;height:4rem;line-height:4rem;font-weight:500;color:#575195}.popup .month-view .month:not(:last-child){border-right:2px solid;border-right-color:#eeedf4}.popup .month-view .month:focus{outline:none}.popup .month-view .month:hover{background-color:#efeef1}.popup .month-view .month:active,.popup .month-view .month.selected{background-color:#575195;color:#ffffff}.popup.user-is-tabbing button:focus,.popup.user-is-tabbing .title-box:focus,.popup.user-is-tabbing .date-cell:focus,.popup.user-is-tabbing .month:focus{-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;border:none;z-index:11}.popup.user-is-tabbing button:focus::-moz-focus-inner,.popup.user-is-tabbing .title-box:focus::-moz-focus-inner,.popup.user-is-tabbing .date-cell:focus::-moz-focus-inner,.popup.user-is-tabbing .month:focus::-moz-focus-inner{border:0}.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}';const d=class{constructor(s){t(this,s);this.cellTriggered=e(this,"cellTriggered",7);this.toggleButtonClicked=e(this,"toggleButtonClicked",7);this.popupClosed=e(this,"popupClosed",7);this.popupBlurred=e(this,"popupBlurred",7);this.popupClicked=true;this.buttonClicked=true;this.prevClicked=true;this.nextClicked=true;this.openUp=false;this.calendar_months=[a.formatMessage({id:"date.january",defaultMessage:"January",description:"Month of the year"}),a.formatMessage({id:"date.february",defaultMessage:"February",description:"Month of the year"}),a.formatMessage({id:"date.march",defaultMessage:"March",description:"Month of the year"}),a.formatMessage({id:"date.april",defaultMessage:"April",description:"Month of the year"}),a.formatMessage({id:"date.may",defaultMessage:"May",description:"Month of the year"}),a.formatMessage({id:"date.june",defaultMessage:"June",description:"Month of the year"}),a.formatMessage({id:"date.july",defaultMessage:"July",description:"Month of the year"}),a.formatMessage({id:"date.august",defaultMessage:"August",description:"Month of the year"}),a.formatMessage({id:"date.september",defaultMessage:"September",description:"Month of the year"}),a.formatMessage({id:"date.october",defaultMessage:"October",description:"Month of the year"}),a.formatMessage({id:"date.november",defaultMessage:"November",description:"Month of the year"}),a.formatMessage({id:"date.december",defaultMessage:"December",description:"Month of the year"})];this.weekdays=[a.formatMessage({id:"date.sunday",defaultMessage:"Sunday"}),a.formatMessage({id:"date.monday",defaultMessage:"Monday"}),a.formatMessage({id:"date.tuesday",defaultMessage:"Tuesday"}),a.formatMessage({id:"date.wednesday",defaultMessage:"Wednesday"}),a.formatMessage({id:"date.thursday",defaultMessage:"Thursday"}),a.formatMessage({id:"date.friday",defaultMessage:"Friday"}),a.formatMessage({id:"date.saturday",defaultMessage:"Saturday"})];this.renderCalendarDate=(t,e)=>{let s=this.removeZeroes(String(t[1]));let o=this.removeZeroes(String(t[2]));let r=s===this.monthInFocus?"current-month":"";const n=t[0]+t[1]+t[2];const h=this.isDateToday(t);return i("div",{role:"gridcell",id:`cell-${n}-${this.parentId}`,class:`date-cell ${r}`,"aria-selected":false,"aria-label":`${h?`${a.formatMessage({id:"date.today",defaultMessage:"today",description:"calendar button"})}, `:""}${this.weekdays[e]}, ${this.calendar_months[s-1]} ${o}, ${t[0]}`,onClick:t=>{this.handleTriggeredDate(t.target)},onKeyDown:t=>this.trapFocusEnd(t),"data-month":t[1],"data-year":t[0],onBlur:t=>t.stopPropagation()},o)};this.disabled=false;this.isExpanded=false;this.view="day";this.date=new Date;this.selectedYear=this.date.getUTCFullYear();this.selectedMonth=this.date.getUTCMonth()+1;this.selectedDay=this.date.getUTCDate();this.monthInFocus=this.selectedMonth;this.yearInFocus=this.selectedYear;this.dayInFocus=this.selectedDay;this.monthNumInFocus=this.selectedMonth;this.parentId="";this.isTabbing=false}handleKey(t){this.prevClicked=false;this.nextClicked=false;switch(t.key){case"Enter":t.preventDefault();!t.target.id.includes("popup-title")&&t.target.click();break;case"Escape":t.preventDefault();if(this.isExpanded){t.stopPropagation();this.closePopup(true)}break;case"PageUp":t.preventDefault();this.backOneMonth();break;case"PageDown":t.preventDefault();this.forwardOneMonth();break;case"Home":t.preventDefault();this.unfocusCell();this.dayInFocus=1;s(this.el);break;case"End":t.preventDefault();this.unfocusCell();this.dayInFocus=this.getMonthDays(this.monthInFocus,this.yearInFocus);s(this.el);break;case"ArrowLeft":t.preventDefault();if(this.view==="day"){this.unfocusCell();if(this.dayInFocus===1){const t=this.getPreviousMonth(this.monthInFocus,this.yearInFocus);this.monthInFocus=t.month;this.yearInFocus=t.year;this.dayInFocus=this.getMonthDays(this.monthInFocus,this.yearInFocus)}else{this.dayInFocus-=1}}else{this.unfocusMonth();if(this.monthNumInFocus===0){this.monthNumInFocus=11}else{this.monthNumInFocus-=1}}break;case"ArrowRight":t.preventDefault();if(this.view==="day"){this.unfocusCell();if(this.dayInFocus===this.getMonthDays(this.monthInFocus,this.yearInFocus)){const t=this.getNextMonth(this.monthInFocus,this.yearInFocus);this.monthInFocus=t.month;this.yearInFocus=t.year;this.dayInFocus=1}else{this.dayInFocus+=1}}else{this.unfocusMonth();if(this.monthNumInFocus===11){this.monthNumInFocus=0}else{this.monthNumInFocus+=1}}break;case"ArrowUp":t.preventDefault();if(this.view==="day"){this.unfocusCell();if(this.dayInFocus<8){const t=this.getPreviousMonth(this.monthInFocus,this.yearInFocus);this.monthInFocus=t.month;this.yearInFocus=t.year;const e=7-this.dayInFocus;this.dayInFocus=this.getMonthDays(this.monthInFocus,this.yearInFocus)-e}else{this.dayInFocus-=7}}else{this.unfocusMonth();if(this.monthNumInFocus<3){this.monthNumInFocus+=9}else{this.monthNumInFocus-=3}}break;case"ArrowDown":t.preventDefault();if(!this.isExpanded){this.openPopup()}else{if(this.view==="day"){if(!(document.activeElement.shadowRoot||document).activeElement.classList.contains("date-cell")){this.focusCell();break}this.unfocusCell();const t=this.getMonthDays(this.monthInFocus,this.yearInFocus)-7;if(this.dayInFocus>t){const e=this.getNextMonth(this.monthInFocus,this.yearInFocus);this.monthInFocus=e.month;this.yearInFocus=e.year;this.dayInFocus=this.dayInFocus-t}else{this.dayInFocus+=7}}else{const t=(document.activeElement.shadowRoot||document).activeElement;if(t.tagName==="BUTTON"||t.id.includes("popup-title-year")){this.focusMonth();break}this.unfocusMonth();if(this.monthNumInFocus>8){this.monthNumInFocus-=9}else{this.monthNumInFocus+=3}}}break}}toggleTabbingOn(t){const e=["Tab","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Enter"];if(e.includes(t.key)){this.isTabbing=true}}toggleTabbingOff(){this.isTabbing=false}blurHandler(t){if(!this.popupClicked&&!this.buttonClicked&&this.isExpanded){this.closePopup();this.popupBlurred.emit({relatedTarget:t.target})}this.popupClicked=false;this.buttonClicked=false}handleBlurOnWindow(t){if(this.isExpanded){this.closePopup();this.popupBlurred.emit({relatedTarget:t.target})}}componentDidUpdate(){this.handleSelectedDate();if(this.isExpanded){this.prevClicked?this.prevButton.focus():this.nextClicked?this.nextButton.focus():this.view==="day"?this.focusCell():this.focusMonth()}}componentDidLoad(){this.handleSelectedDate();this.setDateValuesForView()}zeroPad(t,e){if(!String.prototype.padStart){String.prototype.padStart=function t(e,i){e=e-this.length;if(e>i.length){i+=i.repeat(e/i.length)}return i.slice(0,e)+String(this)}}return`${t.toString()}`.padStart(e,"0")}removeZeroes(t){return+t<10?+t.slice(1):+t}isDateToday(t){const e=new Date;const i=[e.getFullYear().toString(),(e.getMonth()+1).toString(),e.getDate().toString()];return i.reduce(((e,i,s)=>e&&this.removeZeroes(t[s]).toString()===i),true)}togglePopup(){this.isExpanded?this.closePopup():this.openPopup();this.buttonClicked=true}closePopup(t=false){this.isExpanded=false;this.popupEl.classList.remove("open");window.setTimeout((()=>{this.popupEl.style.visibility="hidden"}),250);if(this.view==="day"){this.unfocusCell()}this.monthInFocus=this.selectedMonth;this.yearInFocus=this.selectedYear;this.dayInFocus=this.selectedDay;this.changeView("day");if(t){this.buttonEl.focus()}}openPopup(){this.panelPosition();this.setDateValuesForView();this.prevClicked=false;this.nextClicked=false;this.popupEl.style.visibility="visible";window.requestAnimationFrame((()=>{this.popupEl.classList.add("open")}));this.isExpanded=true;this.focusCell()}getMonthDays(t,e){const i=[4,6,9,11];const s=e%4===0;return t===2?s?29:28:i.includes(t)?30:31}getMonthFirstDay(t,e){return+new Date(e,t-1,1,12,0,0).getDay()+1}getPreviousMonth(t,e){const i=t>1?t-1:12;const s=t>1?e:e-1;return{month:i,year:s}}getNextMonth(t,e){const i=t<12?t+1:1;const s=t<12?e:e+1;return{month:i,year:s}}getCalendarDates(t,e){const i=this.getMonthDays(t,e);const s=this.getMonthFirstDay(t,e);const o=s-1;let a=42-(o+i);a=a>6?a-7:a;const{month:r,year:n}=this.getPreviousMonth(t,e);const{month:h,year:d}=this.getNextMonth(t,e);const l=this.getMonthDays(r,n);const p=[...new Array(o).fill("1")].map(((t,e)=>{const i=e+1+(l-o);return[n.toString(),this.zeroPad(r,2),this.zeroPad(i,2)]}));const c=[...new Array(i).fill("1")].map(((i,s)=>{const o=s+1;return[e.toString(),this.zeroPad(t,2),this.zeroPad(o,2)]}));const u=[...new Array(a).fill("1")].map(((t,e)=>{const i=e+1;return[d.toString(),this.zeroPad(h,2),this.zeroPad(i,2)]}));return[...p,...c,...u]}forwardOneMonth(){this.unfocusCell();const t=this.getNextMonth(this.monthInFocus,this.yearInFocus);this.monthInFocus=t.month;this.yearInFocus=t.year;const e=this.getMonthDays(this.monthInFocus,this.yearInFocus);if(this.dayInFocus>this.getMonthDays(this.monthInFocus,this.yearInFocus)){this.dayInFocus=e}this.updateLiveRegion(`Displaying ${this.calendar_months[this.monthInFocus-1]}, ${this.yearInFocus}`)}backOneMonth(){this.unfocusCell();const t=this.getPreviousMonth(this.monthInFocus,this.yearInFocus);this.monthInFocus=t.month;this.yearInFocus=t.year;const e=this.getMonthDays(this.monthInFocus,this.yearInFocus);if(this.dayInFocus>this.getMonthDays(this.monthInFocus,this.yearInFocus)){this.dayInFocus=e}this.updateLiveRegion(`Viewing ${this.calendar_months[this.monthInFocus-1]}, ${this.yearInFocus}`)}handleTriggeredDate(t){this.cellTriggered.emit(t);this.closePopup(true)}handleSelectedDate(){if(this.selectedDate){this.selectedDate.removeAttribute("aria-selected")}this.selectedDate=this.getCellById(this.selectedYear,this.selectedMonth,this.selectedDay);if(this.selectedDate){this.selectedDate.setAttribute("aria-selected","true")}}getCellById(t,e,i){const s=t+this.zeroPad(e,2)+this.zeroPad(i,2);return this.el.querySelector(`#cell-${s}-${this.parentId}`)}unfocusCell(){const t=this.getCellById(this.yearInFocus,this.monthInFocus,this.dayInFocus);t.tabIndex=-1}focusCell(){const t=this.getMonthDays(this.monthInFocus,this.yearInFocus);this.dayInFocus=this.dayInFocus>t?t:this.dayInFocus;const e=this.getCellById(this.yearInFocus,this.monthInFocus,this.dayInFocus);if(e){e.tabIndex=0;e.focus()}}unfocusMonth(){const t=this.el.querySelector(`#month-${this.monthNumInFocus}-${this.parentId}`);t.tabIndex=-1}focusMonth(){const t=this.el.querySelector(`#month-${this.monthNumInFocus}-${this.parentId}`);t.tabIndex=0;t.focus()}trapFocusLeft(t){if(t.shiftKey&&t.key==="Tab"){t.preventDefault();this.focusCellInView()}}trapFocusEnd(t){if(!t.shiftKey&&t.key==="Tab"){t.preventDefault();this.prevButton.focus()}}trapFocusRight(t){if(!t.shiftKey&&t.key==="Tab"){t.preventDefault();this.focusCellInView()}}focusCellInView(){if(this.view==="day"){this.focusCell()}else{this.focusMonth()}}toggleBusyAttribute(t){this.el.querySelector("#wm-container").setAttribute("aria-busy",t)}setDateValuesForView(){this.selectedYear=this.date.getUTCFullYear();this.selectedMonth=this.date.getUTCMonth()+1;this.selectedDay=this.date.getUTCDate();this.monthInFocus=this.selectedMonth;this.yearInFocus=this.selectedYear;this.dayInFocus=this.selectedDay;this.monthNumInFocus=this.selectedMonth-1}updateLiveRegion(t){let e=this.el.querySelector("#live-region");e.innerHTML=t}panelPosition(){let t=document.getElementById(this.parentId);const e=t.shadowRoot.querySelector(".label-wrapper").clientHeight;this.openUp=r(t,this.popupEl,e);if(n(t,336)){this.popupEl.style.left="0";this.popupEl.style.right="auto"}else{this.popupEl.style.right="0";this.popupEl.style.left="auto"}}changeView(t){this.view=t;this.monthNumInFocus=this.monthInFocus-1}renderMonths(t,e){return i("div",{id:`month-${e}-${this.parentId}`,class:`month ${this.selectedMonth-1===e?"selected":""}`,role:"gridcell",tabindex:e+1===this.monthInFocus?0:-1,onKeyDown:t=>this.trapFocusEnd(t),onBlur:t=>t.stopPropagation(),onClick:()=>{this.monthInFocus=e+1;this.changeView("day")}},t)}render(){const t=this.getCalendarDates(this.monthInFocus,this.yearInFocus);return i("div",{class:"container",id:"wm-container"},i("button",{disabled:this.disabled,onClick:this.togglePopup.bind(this),"aria-describedby":`date-input-${this.parentId}`,ref:t=>this.buttonEl=t,"aria-expanded":`${this.isExpanded}`,class:"toggle",id:`toggle-${this.parentId}`},i("span",{class:"calendar",title:a.formatMessage({id:"date.calendarView",defaultMessage:"Calendar View",description:"Calendar button"})})),i("div",{class:`popup ${this.view}-view ${this.openUp?"expand-upwards":""} ${this.isTabbing?"user-is-tabbing":""}`,id:`popup-${this.parentId}`,ref:t=>this.popupEl=t,onClick:()=>this.popupClicked=true,role:"application","aria-describedby":"application"},this.view==="day"?i("div",{class:"day-view"},i("div",{class:"calendar-header"},i("button",{onClick:()=>{this.prevClicked=true;this.popupClicked=true;this.backOneMonth()},onKeyDown:t=>this.trapFocusLeft(t),ref:t=>this.prevButton=t,class:"arw-btn","aria-label":a.formatMessage({id:"date.selectPreviousMonth",defaultMessage:"Select previous month",description:"Calendar button"})},i("span",{class:"mdi"},"")),i("div",{id:`popup-title-month-${this.parentId}`,class:"title-box",tabindex:0,role:"button",onKeyDown:t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();this.changeView("month")}},onClick:this.changeView.bind(this,"month"),"aria-label":`${a.formatMessage({id:"date.currentMonth",defaultMessage:"current month",description:"Calendar button"})}: ${this.calendar_months[this.monthInFocus-1]}\n ${this.yearInFocus}.`,"aria-describedby":"month-title"},i("span",{class:"title","aria-hidden":"true"},this.calendar_months[this.monthInFocus-1]," ",this.yearInFocus)),i("button",{onClick:()=>{this.nextClicked=true;this.popupClicked=true;this.forwardOneMonth()},onKeyDown:t=>this.trapFocusRight(t),"aria-label":a.formatMessage({id:"date.selectNextMonth",defaultMessage:"Select next month",description:"Calendar button"}),ref:t=>this.nextButton=t,class:"arw-btn"},i("span",{class:"mdi"},""))),i("div",{"aria-labelledby":`popup-title-month-${this.parentId}`,role:"grid",class:"date-grid"},i("div",{role:"rowgroup",class:"date-header"},i("div",{role:"row",class:"header-row"},i("div",{role:"columnheader",class:"header-cell"},i("span",null,a.formatMessage({id:"date.su",defaultMessage:"Su",description:"Abbreviated day of the week"}))),i("div",{role:"columnheader",class:"header-cell"},i("span",null,a.formatMessage({id:"date.mo",defaultMessage:"Mo",description:"Abbreviated day of the week"}))),i("div",{role:"columnheader",class:"header-cell"},i("span",null,a.formatMessage({id:"date.tu",defaultMessage:"Tu",description:"Abbreviated day of the week"}))),i("div",{role:"columnheader",class:"header-cell"},i("span",null,a.formatMessage({id:"date.we",defaultMessage:"We",description:"Abbreviated day of the week"}))),i("div",{role:"columnheader",class:"header-cell"},i("span",null,a.formatMessage({id:"date.th",defaultMessage:"Th",description:"Abbreviated day of the week"}))),i("div",{role:"columnheader",class:"header-cell"},i("span",null,a.formatMessage({id:"date.fr",defaultMessage:"Fr",description:"Abbreviated day of the week"}))),i("div",{role:"columnheader",class:"header-cell"},i("span",null,a.formatMessage({id:"date.sa",defaultMessage:"Sa",description:"Abbreviated day of the week"}))))),i("div",{role:"rowgroup"},i("div",{role:"row",class:"date-row"},t.slice(0,7).map(((t,e)=>this.renderCalendarDate(t,e)))),i("div",{role:"row"},t.slice(7,14).map(((t,e)=>this.renderCalendarDate(t,e)))),i("div",{role:"row"},t.slice(14,21).map(((t,e)=>this.renderCalendarDate(t,e)))),i("div",{role:"row"},t.slice(21,28).map(((t,e)=>this.renderCalendarDate(t,e)))),i("div",{role:"row"},t.slice(28,35).map(((t,e)=>this.renderCalendarDate(t,e)))),t.length>35?i("div",{role:"row"},t.slice(35).map(((t,e)=>this.renderCalendarDate(t,e)))):""))):i("div",{class:"month-view"},i("div",{class:"calendar-header"},i("button",{onClick:()=>{this.prevClicked=true;this.popupClicked=true;this.yearInFocus-=1;this.updateLiveRegion(`${this.yearInFocus} selected.`)},onKeyDown:t=>this.trapFocusLeft(t),"aria-label":a.formatMessage({id:"date.selectPreviousYear",defaultMessage:"Select previous year",description:"Calendar button"}),ref:t=>this.prevButton=t,class:"arw-btn"},i("span",{class:"mdi"},"")),i("div",{id:`popup-title-year-${this.parentId}`,tabindex:0,class:"title-box year",role:"button",onClick:this.changeView.bind(this,"day"),onKeyDown:t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();this.changeView("day")}},"aria-labelledby":"year-title"},i("span",{class:"title"},this.yearInFocus)),i("button",{onClick:()=>{this.nextClicked=true;this.popupClicked=true;this.yearInFocus+=1;this.updateLiveRegion(`${this.yearInFocus} selected.`)},"aria-label":a.formatMessage({id:"date.selectNextYear",defaultMessage:"Select next year",description:"Calendar button"}),onKeyDown:t=>this.trapFocusRight(t),ref:t=>this.nextButton=t,class:"arw-btn"},i("span",{class:"mdi"},""))),i("div",{"aria-labelledby":`popup-title-year-${this.parentId}`,role:"grid",class:"months"},i("div",{role:"row",class:"month-row"},this.calendar_months.slice(0,3).map(((t,e)=>this.renderMonths(t,e)))),i("div",{role:"row",class:"month-row"},this.calendar_months.slice(3,6).map(((t,e)=>this.renderMonths(t,e+3)))),i("div",{role:"row",class:"month-row"},this.calendar_months.slice(6,9).map(((t,e)=>this.renderMonths(t,e+6)))),i("div",{role:"row",class:"month-row"},this.calendar_months.slice(9).map(((t,e)=>this.renderMonths(t,e+9))))))),this.isExpanded&&i("div",{id:"live-region","aria-live":"polite","aria-relevant":"text",class:"sr-only"}),i("div",{id:"month-title",class:"sr-only"},a.formatMessage({id:"date.selectMonth",defaultMessage:"Activate to select a month.",description:"Calendar button"})),i("div",{id:"year-title",class:"sr-only"},a.formatMessage({id:"date.selectYear",defaultMessage:"Activate to select a year.",description:"Calendar button"})),i("div",{id:"application",class:"sr-only"},a.formatMessage({id:"date.instructions",defaultMessage:"Use arrows to select a date in the table. Tab left or right to buttons for selecting previous month, next month, or the month selection table."})))}get el(){return o(this)}};d.style=h;export{d as priv_datepicker};
2
- //# sourceMappingURL=p-341aa131.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["privDatepickerCss","PrivDatepicker","this","popupClicked","buttonClicked","prevClicked","nextClicked","openUp","calendar_months","intl","formatMessage","id","defaultMessage","description","weekdays","renderCalendarDate","date","index","monthOfDate","removeZeroes","String","dayOfDate","isThisMonth","monthInFocus","dateId","isToday","isDateToday","h","role","parentId","class","onClick","ev","handleTriggeredDate","target","onKeyDown","trapFocusEnd","onBlur","stopPropagation","Date","getUTCFullYear","getUTCMonth","getUTCDate","selectedMonth","selectedYear","selectedDay","handleKey","key","preventDefault","includes","click","isExpanded","closePopup","backOneMonth","forwardOneMonth","unfocusCell","dayInFocus","forceUpdate","el","getMonthDays","yearInFocus","view","newMonth","getPreviousMonth","month","year","unfocusMonth","monthNumInFocus","getNextMonth","numDaysToSubtract","openPopup","document","activeElement","shadowRoot","classList","contains","focusCell","changeoverDate","activeEl","tagName","focusMonth","toggleTabbingOn","validKeys","isTabbing","toggleTabbingOff","blurHandler","popupBlurred","emit","relatedTarget","handleBlurOnWindow","componentDidUpdate","handleSelectedDate","prevButton","focus","nextButton","componentDidLoad","setDateValuesForView","zeroPad","value","length","prototype","padStart","targetLength","padString","repeat","slice","toString","today","todayDateArray","getFullYear","getMonth","getDate","reduce","result","val","togglePopup","returnFocus","popupEl","remove","window","setTimeout","style","visibility","changeView","buttonEl","panelPosition","requestAnimationFrame","add","months30","leapYear","getMonthFirstDay","getDay","prevMonth","prevMonthYear","nextMonth","nextMonthYear","getCalendarDates","monthDays","monthFirstDay","daysFromPrevMonth","daysFromNextMonth","prevMonthDays","prevMonthDates","Array","fill","map","_","day","thisMonthDates","nextMonthDates","totalDays","updateLiveRegion","cellTriggered","selectedDate","removeAttribute","getCellById","setAttribute","querySelector","cellToUnfocus","tabIndex","maxDays","cellToFocus","monthToUnfocus","monthToFocus","trapFocusLeft","shiftKey","focusCellInView","trapFocusRight","toggleBusyAttribute","state","text","liveRegion","innerHTML","host","getElementById","labelHeight","clientHeight","shouldOpenUp","hasRoomRight","left","right","newView","renderMonths","tabindex","render","dates","disabled","bind","ref","title","i"],"sources":["./src/components/wm-datepicker/priv-datepicker/priv-datepicker.scss?tag=priv-datepicker","./src/components/wm-datepicker/priv-datepicker/priv-datepicker.tsx"],"sourcesContent":[".toggle {\n all: unset;\n cursor: pointer;\n padding: rem-calc(0px 6px);\n height: rem-calc(38);\n border: none;\n -moz-border-top-right-radius: 3px;\n -webkit-border-top-right-radius: 3px;\n border-top-right-radius: 3px;\n -moz-border-bottom-right-radius: 3px;\n -webkit-border-bottom-right-radius: 3px;\n border-bottom-right-radius: 3px;\n\n // reset styles inherited from Planning in browsers without shadow DOM\n -moz-border-top-left-radius: 0;\n -webkit-border-top-left-radius: 0;\n border-top-left-radius: 0;\n -moz-border-bottom-left-radius: 0;\n -webkit-border-bottom-left-radius: 0;\n border-bottom-left-radius: 0;\n @include box-shadow(none);\n background-color: $button-default-background;\n\n &:disabled {\n pointer-events: none;\n @include box-shadow(none);\n background-color: rgba(74, 74, 74, 0.05);\n .calendar::after {\n color: #7b7b7b;\n }\n }\n\n &:hover {\n @include box-shadow(none);\n background: mix(black, $button-default-background, 10%);\n\n .calendar::after {\n color: $button-default-text;\n }\n }\n\n [dir=\"RTL\"] & {\n right: auto;\n left: 0;\n }\n\n span::after {\n @include mdi-icon;\n content: \"\\f0ed\";\n font-size: rem-calc(24);\n color: $button-default-text;\n padding: 0;\n line-height: rem-calc(40);\n }\n\n &:focus {\n outline: none;\n }\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n.user-is-tabbing {\n .toggle:focus {\n @include focus-style;\n }\n}\n\n.popup {\n visibility: hidden;\n font-family: inherit;\n @include border-radius(3px);\n @include box-shadow(0px 4px 15px 0px rgba(0, 0, 0, 0.2));\n width: rem-calc(336);\n z-index: 10;\n //relative to inner wrapper in wm-datepicker, which contains the input and priv-datepicker\n position: absolute;\n left: 0;\n top: 40px;\n min-height: rem-calc(337);\n transition: transform 0.25s ease;\n transform-origin: center top;\n transform: scale(1, 0);\n background-color: $light-background;\n\n &.open {\n // display: block;\n transform: scale(1, 1);\n }\n\n &.expand-upwards {\n top: auto;\n bottom: rem-calc(38);\n transform-origin: center bottom;\n }\n\n .calendar-header {\n @include displayFlex();\n @include justifyContent(space-between);\n position: relative;\n padding: rem-calc(15 4);\n\n .title-box {\n height: rem-calc(42);\n @include border-radius(3px);\n border: 1px solid;\n font-weight: 500;\n font-size: rem-calc(14);\n background: transparent;\n cursor: pointer;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: rem-calc(0 6 0 12);\n border-color: $button-default-text;\n color: $button-default-text;\n\n &:after {\n @include mdi-icon;\n content: \"\\f140\";\n padding-left: rem-calc(12);\n }\n\n &.year:after {\n content: \"\\f143\";\n }\n\n &::-moz-focus-inner {\n border: 0;\n }\n\n &:focus {\n outline: none;\n }\n }\n\n .arw-btn {\n cursor: pointer;\n @include border-radius(50%);\n width: rem-calc(44);\n height: rem-calc(44);\n border: none;\n color: $button-default-text;\n background: transparent;\n padding: 0;\n @include box-shadow(none);\n line-height: rem-calc(44);\n\n .mdi {\n @include mdi-icon;\n font-size: rem-calc(24);\n font-weight: normal;\n line-height: rem-calc(44);\n\n &:hover {\n background-color: #efeef1;\n }\n }\n\n &:focus {\n outline: none;\n }\n\n &:active {\n @include scale($xVal: 0.9, $yVal: 0.9);\n background-color: #d7d6d9;\n }\n }\n }\n\n .day-view {\n min-width: 100%;\n\n .date-grid {\n width: 100%;\n text-align: center;\n border-collapse: collapse;\n margin-bottom: rem-calc(7);\n color: #757575;\n\n .date-row:first-child {\n .date-cell {\n margin-top: rem-calc(2);\n }\n }\n\n .date-header {\n background-color: rgb(238, 237, 244);\n }\n\n .header-cell {\n height: rem-calc(33);\n line-height: rem-calc(33);\n width: rem-calc(44);\n margin: 0 calc((14.28% - 44px) / 2);\n padding: 0;\n display: inline-block;\n font-size: rem-calc(13);\n font-weight: bold;\n color: #4a4a4a;\n border: none;\n }\n\n .date-cell {\n cursor: pointer;\n display: inline-block;\n padding: 0;\n @include border-radius(50%);\n height: rem-calc(44);\n width: rem-calc(44);\n margin: 0 calc((14.28% - 44px) / 2);\n font-size: rem-calc(14);\n font-weight: 500;\n line-height: rem-calc(44);\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n background-color: #efeef1;\n }\n\n &:active {\n background-color: $button-primary-background;\n color: #ffffff;\n }\n\n &.current-month {\n color: #4a4a4a;\n\n &[aria-selected=\"true\"] {\n background-color: $button-primary-background;\n color: #ffffff;\n }\n }\n }\n }\n }\n\n .month-view {\n .months {\n border-top: 2px solid;\n border-top-color: #eeedf4;\n @include displayFlex();\n flex-wrap: wrap;\n }\n\n .month-row {\n @include displayFlex();\n @include justifyContent(space-between);\n width: 100%;\n border-bottom: 2px solid;\n border-bottom-color: #eeedf4;\n }\n\n .month {\n cursor: pointer;\n text-align: center;\n width: 100%;\n height: rem-calc(64);\n line-height: rem-calc(64);\n font-weight: 500;\n color: $button-default-text;\n\n &:not(:last-child) {\n border-right: 2px solid;\n border-right-color: #eeedf4;\n }\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n background-color: #efeef1;\n }\n\n &:active,\n &.selected {\n background-color: #575195;\n color: #ffffff;\n }\n }\n }\n\n &.user-is-tabbing {\n button:focus,\n .title-box:focus,\n .date-cell:focus,\n .month:focus {\n @include focus-style;\n border: none;\n z-index: 11;\n }\n }\n}\n\n.sr-only {\n @include srOnly;\n}\n","import { h, Component, Prop, Element, Event, EventEmitter, Listen, State } from \"@stencil/core\";\nimport { forceUpdate } from \"@stencil/core\";\nimport { intl, hasRoomRight, shouldOpenUp } from \"../../../global/functions\";\n\n@Component({\n tag: \"priv-datepicker\",\n styleUrl: \"priv-datepicker.scss\",\n})\nexport class PrivDatepicker {\n @Element() el!: HTMLPrivDatepickerElement;\n\n @Prop() disabled: boolean = false;\n @Prop({ mutable: true, reflect: true }) isExpanded: boolean = false;\n @Prop({ mutable: true, reflect: true }) view: string = \"day\";\n @Prop({ mutable: true, reflect: true }) date: Date = new Date();\n @Prop({ mutable: true }) selectedYear: number = this.date.getUTCFullYear();\n @Prop({ mutable: true }) selectedMonth: number = this.date.getUTCMonth() + 1;\n @Prop({ mutable: true }) selectedDay: number = this.date.getUTCDate();\n @Prop({ mutable: true }) monthInFocus: number = this.selectedMonth;\n @Prop({ mutable: true }) yearInFocus: number = this.selectedYear;\n @Prop({ mutable: true }) dayInFocus: number = this.selectedDay;\n @State() monthNumInFocus: number = this.selectedMonth;\n @Prop({ mutable: true, reflect: true }) parentId: string = \"\";\n\n @State() isTabbing: boolean = false;\n\n selectedDate!: HTMLTableCellElement;\n\n @Event() cellTriggered!: EventEmitter<HTMLElement>;\n @Event() toggleButtonClicked!: EventEmitter<HTMLButtonElement>;\n @Event() popupClosed!: EventEmitter;\n @Event() popupBlurred!: EventEmitter<{ relatedTarget: EventTarget | null }>;\n\n private popupEl?: HTMLElement;\n private buttonEl!: HTMLButtonElement;\n private popupClicked: boolean = true;\n private buttonClicked: boolean = true;\n private prevButton!: HTMLButtonElement;\n private nextButton!: HTMLButtonElement;\n private prevClicked: boolean = true;\n private nextClicked: boolean = true;\n private openUp: boolean = false;\n\n private calendar_months: Array<string> = [\n intl.formatMessage({\n id: \"date.january\",\n defaultMessage: \"January\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.february\",\n defaultMessage: \"February\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.march\",\n defaultMessage: \"March\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.april\",\n defaultMessage: \"April\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.may\",\n defaultMessage: \"May\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.june\",\n defaultMessage: \"June\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.july\",\n defaultMessage: \"July\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.august\",\n defaultMessage: \"August\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.september\",\n defaultMessage: \"September\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.october\",\n defaultMessage: \"October\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.november\",\n defaultMessage: \"November\",\n description: \"Month of the year\",\n }),\n intl.formatMessage({\n id: \"date.december\",\n defaultMessage: \"December\",\n description: \"Month of the year\",\n }),\n ];\n\n private weekdays: Array<string> = [\n intl.formatMessage({ id: \"date.sunday\", defaultMessage: \"Sunday\" }),\n intl.formatMessage({ id: \"date.monday\", defaultMessage: \"Monday\" }),\n intl.formatMessage({ id: \"date.tuesday\", defaultMessage: \"Tuesday\" }),\n intl.formatMessage({ id: \"date.wednesday\", defaultMessage: \"Wednesday\" }),\n intl.formatMessage({ id: \"date.thursday\", defaultMessage: \"Thursday\" }),\n intl.formatMessage({ id: \"date.friday\", defaultMessage: \"Friday\" }),\n intl.formatMessage({ id: \"date.saturday\", defaultMessage: \"Saturday\" }),\n ];\n\n @Listen(\"keydown\")\n handleKey(ev: KeyboardEvent): void {\n this.prevClicked = false;\n this.nextClicked = false;\n\n switch (ev.key) {\n case \"Enter\":\n ev.preventDefault();\n //Clunky exception for blur validation. Remove when blur reworked.\n !(ev.target as HTMLElement).id.includes(\"popup-title\") && (ev.target as HTMLElement)!.click();\n break;\n\n case \"Escape\":\n ev.preventDefault();\n if (this.isExpanded) {\n ev.stopPropagation(); // prevents closing of parent modal\n this.closePopup(true);\n }\n break;\n\n case \"PageUp\":\n ev.preventDefault();\n this.backOneMonth();\n break;\n\n case \"PageDown\":\n ev.preventDefault();\n this.forwardOneMonth();\n break;\n\n case \"Home\":\n ev.preventDefault();\n this.unfocusCell();\n this.dayInFocus = 1;\n forceUpdate(this.el);\n break;\n\n case \"End\":\n ev.preventDefault();\n this.unfocusCell();\n this.dayInFocus = this.getMonthDays(this.monthInFocus, this.yearInFocus);\n forceUpdate(this.el);\n break;\n\n case \"ArrowLeft\":\n ev.preventDefault();\n if (this.view === \"day\") {\n this.unfocusCell();\n if (this.dayInFocus === 1) {\n const newMonth = this.getPreviousMonth(this.monthInFocus, this.yearInFocus);\n this.monthInFocus = newMonth.month;\n this.yearInFocus = newMonth.year;\n this.dayInFocus = this.getMonthDays(this.monthInFocus, this.yearInFocus);\n } else {\n this.dayInFocus -= 1;\n }\n } else {\n this.unfocusMonth();\n if (this.monthNumInFocus === 0) {\n this.monthNumInFocus = 11;\n } else {\n this.monthNumInFocus -= 1;\n }\n }\n break;\n\n case \"ArrowRight\":\n ev.preventDefault();\n if (this.view === \"day\") {\n this.unfocusCell();\n if (this.dayInFocus === this.getMonthDays(this.monthInFocus, this.yearInFocus)) {\n const newMonth = this.getNextMonth(this.monthInFocus, this.yearInFocus);\n this.monthInFocus = newMonth.month;\n this.yearInFocus = newMonth.year;\n this.dayInFocus = 1;\n } else {\n this.dayInFocus += 1;\n }\n } else {\n this.unfocusMonth();\n if (this.monthNumInFocus === 11) {\n this.monthNumInFocus = 0;\n } else {\n this.monthNumInFocus += 1;\n }\n }\n break;\n\n case \"ArrowUp\":\n ev.preventDefault();\n if (this.view === \"day\") {\n this.unfocusCell();\n if (this.dayInFocus < 8) {\n const newMonth = this.getPreviousMonth(this.monthInFocus, this.yearInFocus);\n this.monthInFocus = newMonth.month;\n this.yearInFocus = newMonth.year;\n const numDaysToSubtract = 7 - this.dayInFocus;\n this.dayInFocus = this.getMonthDays(this.monthInFocus, this.yearInFocus) - numDaysToSubtract;\n } else {\n this.dayInFocus -= 7;\n }\n } else {\n this.unfocusMonth();\n if (this.monthNumInFocus < 3) {\n this.monthNumInFocus += 9;\n } else {\n this.monthNumInFocus -= 3;\n }\n }\n break;\n\n case \"ArrowDown\":\n ev.preventDefault();\n if (!this.isExpanded) {\n this.openPopup();\n } else {\n if (this.view === \"day\") {\n //If the down arrow is pressed from the month button or the arrow buttons, focus should shift to the current cell in focus\n if (!(document.activeElement!.shadowRoot! || document).activeElement!.classList.contains(\"date-cell\")) {\n this.focusCell();\n break;\n }\n\n this.unfocusCell();\n const changeoverDate = this.getMonthDays(this.monthInFocus, this.yearInFocus) - 7;\n if (this.dayInFocus > changeoverDate) {\n const newMonth = this.getNextMonth(this.monthInFocus, this.yearInFocus);\n this.monthInFocus = newMonth.month;\n this.yearInFocus = newMonth.year;\n this.dayInFocus = this.dayInFocus - changeoverDate;\n } else {\n this.dayInFocus += 7;\n }\n } else {\n //If the down arrow is pressed from the arrow buttons or the title box, focus should shift to the current month in focus\n const activeEl = (document.activeElement!.shadowRoot! || document).activeElement!;\n if (activeEl.tagName === \"BUTTON\" || activeEl.id.includes(\"popup-title-year\")) {\n this.focusMonth();\n break;\n }\n\n this.unfocusMonth();\n if (this.monthNumInFocus > 8) {\n this.monthNumInFocus -= 9;\n } else {\n this.monthNumInFocus += 3;\n }\n }\n }\n break;\n }\n }\n\n @Listen(\"keydown\")\n toggleTabbingOn(ev: KeyboardEvent) {\n const validKeys = [\"Tab\", \"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\", \"Enter\"];\n if (validKeys.includes(ev.key)) {\n this.isTabbing = true;\n }\n }\n\n //Using mousedown prevents this from running when the keydown listener emits \".click()\" for when enter is pressed.\n @Listen(\"mousedown\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n @Listen(\"click\", { target: \"document\" })\n blurHandler(ev: PointerEvent): void {\n if (!this.popupClicked && !this.buttonClicked && this.isExpanded) {\n this.closePopup();\n // in this case, the PointerEvent target is identical to the blur events relatedTarget, and is passed on as such\n this.popupBlurred.emit({ relatedTarget: ev.target });\n }\n this.popupClicked = false;\n this.buttonClicked = false;\n }\n\n @Listen(\"blur\", { target: \"window\" })\n handleBlurOnWindow(ev: FocusEvent) {\n // for cases where the user clicks or uses a shortcut to leave the document\n if (this.isExpanded) {\n this.closePopup();\n this.popupBlurred.emit({ relatedTarget: ev.target });\n }\n }\n\n componentDidUpdate() {\n this.handleSelectedDate();\n if (this.isExpanded) {\n this.prevClicked\n ? this.prevButton.focus()\n : this.nextClicked\n ? this.nextButton.focus()\n : this.view === \"day\"\n ? this.focusCell()\n : this.focusMonth();\n }\n }\n\n componentDidLoad() {\n this.handleSelectedDate();\n this.setDateValuesForView();\n }\n\n zeroPad(value: number | string, length: number) {\n if (!String.prototype.padStart) {\n String.prototype.padStart = function padStart(targetLength, padString) {\n targetLength = targetLength - this.length;\n if (targetLength > padString!.length) {\n padString += padString!.repeat(targetLength / padString!.length);\n }\n return padString!.slice(0, targetLength) + String(this);\n };\n }\n return `${value.toString()}`.padStart(length, \"0\");\n }\n\n removeZeroes(date: string): number {\n return +date < 10 ? +date.slice(1) : +date;\n }\n\n isDateToday(date: Array<string>): boolean {\n const today = new Date();\n const todayDateArray = [\n today.getFullYear().toString(),\n (today.getMonth() + 1).toString(),\n today.getDate().toString(),\n ];\n //Compare today's date to date and return true if they match\n return todayDateArray.reduce(\n (result: boolean, val: string, index: number) => result && this.removeZeroes(date[index]).toString() === val,\n true\n );\n }\n\n togglePopup() {\n this.isExpanded ? this.closePopup() : this.openPopup();\n this.buttonClicked = true;\n }\n\n closePopup(returnFocus: boolean = false) {\n this.isExpanded = false;\n this.popupEl!.classList.remove(\"open\");\n window.setTimeout(() => {\n //not using display none in order to get measurements of the popup while hidden\n this.popupEl!.style.visibility = \"hidden\";\n }, 250);\n //Reset values so that menu reopens to day view with selected date in focus\n if (this.view === \"day\") {\n this.unfocusCell();\n }\n this.monthInFocus = this.selectedMonth;\n this.yearInFocus = this.selectedYear;\n this.dayInFocus = this.selectedDay;\n this.changeView(\"day\");\n if (returnFocus) {\n this.buttonEl.focus();\n }\n }\n\n openPopup() {\n this.panelPosition();\n this.setDateValuesForView();\n this.prevClicked = false;\n this.nextClicked = false;\n this.popupEl!.style.visibility = \"visible\";\n window.requestAnimationFrame(() => {\n this.popupEl!.classList.add(\"open\");\n });\n this.isExpanded = true;\n this.focusCell();\n }\n\n getMonthDays(month: number, year: number) {\n const months30 = [4, 6, 9, 11];\n const leapYear = year % 4 === 0;\n\n return month === 2 ? (leapYear ? 29 : 28) : months30.includes(month) ? 30 : 31;\n }\n\n // 1 => Sunday, 7 => Saturday\n getMonthFirstDay(month: number, year: number) {\n return +new Date(year, month - 1, 1, 12, 0, 0).getDay() + 1;\n }\n\n getPreviousMonth(month: number, year: number) {\n const prevMonth = month > 1 ? month - 1 : 12;\n const prevMonthYear = month > 1 ? year : year - 1;\n\n return { month: prevMonth, year: prevMonthYear };\n }\n\n getNextMonth(month: number, year: number) {\n const nextMonth = month < 12 ? month + 1 : 1;\n const nextMonthYear = month < 12 ? year : year + 1;\n\n return { month: nextMonth, year: nextMonthYear };\n }\n\n getCalendarDates(month: number, year: number) {\n // Get number of days in the month and the month's first day\n const monthDays = this.getMonthDays(month, year);\n const monthFirstDay = this.getMonthFirstDay(month, year);\n\n // Get number of days to be displayed from previous and next months\n // These ensure a total of 42 days (6 weeks) displayed on the calendar\n const daysFromPrevMonth = monthFirstDay - 1;\n let daysFromNextMonth = 42 - (daysFromPrevMonth + monthDays);\n daysFromNextMonth = daysFromNextMonth > 6 ? daysFromNextMonth - 7 : daysFromNextMonth;\n\n // Get the previous and next months and years\n const { month: prevMonth, year: prevMonthYear } = this.getPreviousMonth(month, year);\n const { month: nextMonth, year: nextMonthYear } = this.getNextMonth(month, year);\n\n // Get number of days in previous month\n const prevMonthDays = this.getMonthDays(prevMonth, prevMonthYear);\n\n // Builds dates to be displayed from previous month. The initialized array is \"filled\" with an arbitrary number because IE and Edge won't map over an array with empty values.\n const prevMonthDates = [...new Array(daysFromPrevMonth).fill(\"1\")].map((_, index) => {\n const day = index + 1 + (prevMonthDays - daysFromPrevMonth);\n return [prevMonthYear.toString(), this.zeroPad(prevMonth, 2), this.zeroPad(day, 2)];\n });\n\n // Builds dates to be displayed from current month. The initialized array is \"filled\" with an arbitrary number because IE and Edge won't map over an array with empty values.\n const thisMonthDates = [...new Array(monthDays).fill(\"1\")].map((_, index) => {\n const day = index + 1;\n return [year.toString(), this.zeroPad(month, 2), this.zeroPad(day, 2)];\n });\n\n // Builds dates to be displayed from next month. The initialized array is \"filled\" with an arbitrary number because IE and Edge won't map over an array with empty values.\n const nextMonthDates = [...new Array(daysFromNextMonth).fill(\"1\")].map((_, index) => {\n const day = index + 1;\n return [nextMonthYear.toString(), this.zeroPad(nextMonth, 2), this.zeroPad(day, 2)];\n });\n\n // Combines all dates from previous, current and next months\n return [...prevMonthDates, ...thisMonthDates, ...nextMonthDates];\n }\n\n forwardOneMonth() {\n this.unfocusCell();\n const newMonth = this.getNextMonth(this.monthInFocus, this.yearInFocus);\n this.monthInFocus = newMonth.month;\n this.yearInFocus = newMonth.year;\n const totalDays = this.getMonthDays(this.monthInFocus, this.yearInFocus);\n if (this.dayInFocus > this.getMonthDays(this.monthInFocus, this.yearInFocus)) {\n this.dayInFocus = totalDays;\n }\n this.updateLiveRegion(`Displaying ${this.calendar_months[this.monthInFocus - 1]}, ${this.yearInFocus}`);\n }\n\n backOneMonth() {\n this.unfocusCell();\n const newMonth = this.getPreviousMonth(this.monthInFocus, this.yearInFocus);\n this.monthInFocus = newMonth.month;\n this.yearInFocus = newMonth.year;\n const totalDays = this.getMonthDays(this.monthInFocus, this.yearInFocus);\n if (this.dayInFocus > this.getMonthDays(this.monthInFocus, this.yearInFocus)) {\n this.dayInFocus = totalDays;\n }\n this.updateLiveRegion(`Viewing ${this.calendar_months[this.monthInFocus - 1]}, ${this.yearInFocus}`);\n }\n\n handleTriggeredDate(el: HTMLTableDataCellElement) {\n this.cellTriggered.emit(el as HTMLTableDataCellElement);\n // change of input value will trigger the function updating selectedDate\n this.closePopup(true);\n }\n\n handleSelectedDate() {\n //Remove old selection status\n if (this.selectedDate) {\n this.selectedDate.removeAttribute(\"aria-selected\");\n }\n //Update selected date to new date inputted/selected\n this.selectedDate = this.getCellById(this.selectedYear, this.selectedMonth, this.selectedDay);\n\n if (this.selectedDate) {\n this.selectedDate.setAttribute(\"aria-selected\", \"true\");\n }\n }\n\n getCellById(year: number, month: number, day: number) {\n const id = year + this.zeroPad(month, 2) + this.zeroPad(day, 2);\n return this.el.querySelector(`#cell-${id}-${this.parentId}`) as HTMLTableCellElement;\n }\n\n unfocusCell() {\n const cellToUnfocus = this.getCellById(this.yearInFocus, this.monthInFocus, this.dayInFocus);\n cellToUnfocus.tabIndex = -1;\n }\n\n focusCell() {\n //These two lines of code prevent an error from happening when the day in focus does not exist in a new month selected, e.g., May 31 is in focus, then the user selects \"November\". It will return focus in the date view to the last day of the month so that focus doesn't fly out of the popup.\n const maxDays = this.getMonthDays(this.monthInFocus, this.yearInFocus);\n this.dayInFocus = this.dayInFocus > maxDays ? maxDays : this.dayInFocus;\n\n const cellToFocus = this.getCellById(this.yearInFocus, this.monthInFocus, this.dayInFocus);\n if (cellToFocus) {\n cellToFocus.tabIndex = 0;\n cellToFocus.focus();\n }\n }\n\n unfocusMonth() {\n const monthToUnfocus = this.el.querySelector(`#month-${this.monthNumInFocus}-${this.parentId}`) as HTMLDivElement;\n monthToUnfocus.tabIndex = -1;\n }\n\n focusMonth() {\n const monthToFocus = this.el.querySelector(`#month-${this.monthNumInFocus}-${this.parentId}`) as HTMLDivElement;\n monthToFocus.tabIndex = 0;\n monthToFocus.focus();\n }\n\n trapFocusLeft(ev: KeyboardEvent) {\n if (ev.shiftKey && ev.key === \"Tab\") {\n ev.preventDefault();\n this.focusCellInView();\n }\n }\n\n trapFocusEnd(ev: KeyboardEvent) {\n if (!ev.shiftKey && ev.key === \"Tab\") {\n ev.preventDefault();\n this.prevButton.focus();\n }\n }\n\n trapFocusRight(ev: KeyboardEvent) {\n if (!ev.shiftKey && ev.key === \"Tab\") {\n ev.preventDefault();\n this.focusCellInView();\n }\n }\n\n focusCellInView() {\n if (this.view === \"day\") {\n this.focusCell();\n } else {\n this.focusMonth();\n }\n }\n\n toggleBusyAttribute(state: string) {\n (this.el.querySelector(\"#wm-container\") as HTMLElement).setAttribute(\"aria-busy\", state);\n }\n\n setDateValuesForView() {\n this.selectedYear = this.date.getUTCFullYear();\n this.selectedMonth = this.date.getUTCMonth() + 1;\n this.selectedDay = this.date.getUTCDate();\n this.monthInFocus = this.selectedMonth;\n this.yearInFocus = this.selectedYear;\n this.dayInFocus = this.selectedDay;\n this.monthNumInFocus = this.selectedMonth - 1;\n }\n\n updateLiveRegion(text: string) {\n let liveRegion = this.el.querySelector(\"#live-region\") as HTMLElement;\n liveRegion.innerHTML = text;\n }\n\n panelPosition() {\n // getting a ref to the input el (in datepicker.tsx)\n let host = document.getElementById(this.parentId) as HTMLWmDatepickerElement;\n\n const labelHeight = host.shadowRoot!.querySelector(\".label-wrapper\")!.clientHeight;\n\n this.openUp = shouldOpenUp(host, this.popupEl!, labelHeight);\n\n if (hasRoomRight(host, 336)) {\n this.popupEl!.style.left = \"0\";\n this.popupEl!.style.right = \"auto\";\n } else {\n this.popupEl!.style.right = \"0\";\n this.popupEl!.style.left = \"auto\";\n }\n }\n\n changeView(newView: string) {\n this.view = newView;\n //Ensure month view always opens to the month last visited in date view\n this.monthNumInFocus = this.monthInFocus - 1;\n }\n\n renderCalendarDate = (date: Array<string>, index: number) => {\n let monthOfDate = this.removeZeroes(String(date[1]));\n let dayOfDate = this.removeZeroes(String(date[2]));\n let isThisMonth = monthOfDate === this.monthInFocus ? \"current-month\" : \"\";\n const dateId = date[0] + date[1] + date[2];\n const isToday = this.isDateToday(date);\n\n return (\n <div\n role=\"gridcell\"\n id={`cell-${dateId}-${this.parentId}`}\n class={`date-cell ${isThisMonth}`}\n aria-selected={false}\n aria-label={`${\n isToday\n ? `${intl.formatMessage({\n id: \"date.today\",\n defaultMessage: \"today\",\n description: \"calendar button\",\n })}, `\n : \"\"\n }${this.weekdays[index]}, ${this.calendar_months[monthOfDate - 1]} ${dayOfDate}, ${date[0]}`}\n onClick={(ev) => {\n this.handleTriggeredDate(ev.target as HTMLTableDataCellElement);\n }}\n onKeyDown={(ev: KeyboardEvent) => this.trapFocusEnd(ev)}\n data-month={date[1]}\n data-year={date[0]}\n onBlur={(ev: FocusEvent) => ev.stopPropagation()}\n >\n {dayOfDate}\n </div>\n );\n };\n\n renderMonths(month: string, index: number) {\n return (\n <div\n id={`month-${index}-${this.parentId}`}\n class={`month ${this.selectedMonth - 1 === index ? \"selected\" : \"\"}`}\n role=\"gridcell\"\n tabindex={index + 1 === this.monthInFocus ? 0 : -1}\n onKeyDown={(ev: KeyboardEvent) => this.trapFocusEnd(ev)}\n onBlur={(ev: FocusEvent) => ev.stopPropagation()}\n onClick={() => {\n this.monthInFocus = index + 1;\n this.changeView(\"day\");\n }}\n >\n {month}\n </div>\n );\n }\n\n render() {\n const dates = this.getCalendarDates(this.monthInFocus, this.yearInFocus);\n\n return (\n <div class=\"container\" id=\"wm-container\">\n <button\n disabled={this.disabled}\n onClick={this.togglePopup.bind(this)}\n aria-describedby={`date-input-${this.parentId}`}\n ref={(el) => (this.buttonEl = el as HTMLButtonElement)}\n aria-expanded={`${this.isExpanded}`}\n class=\"toggle\"\n id={`toggle-${this.parentId}`}\n >\n <span\n class=\"calendar\"\n title={intl.formatMessage({\n id: \"date.calendarView\",\n defaultMessage: \"Calendar View\",\n description: \"Calendar button\",\n })}\n />\n </button>\n <div\n class={`popup ${this.view}-view ${this.openUp ? \"expand-upwards\" : \"\"} ${\n this.isTabbing ? \"user-is-tabbing\" : \"\"\n }`}\n id={`popup-${this.parentId}`}\n ref={(el) => (this.popupEl = el as HTMLElement)}\n onClick={() => (this.popupClicked = true)}\n role=\"application\"\n aria-describedby=\"application\"\n >\n {this.view === \"day\" ? (\n <div class=\"day-view\">\n <div class=\"calendar-header\">\n <button\n onClick={() => {\n this.prevClicked = true;\n this.popupClicked = true;\n this.backOneMonth();\n }}\n onKeyDown={(ev: KeyboardEvent) => this.trapFocusLeft(ev)}\n ref={(el) => (this.prevButton = el as HTMLButtonElement)}\n class=\"arw-btn\"\n aria-label={intl.formatMessage({\n id: \"date.selectPreviousMonth\",\n defaultMessage: \"Select previous month\",\n description: \"Calendar button\",\n })}\n >\n <span class=\"mdi\">&#xf141;</span>\n </button>\n <div\n id={`popup-title-month-${this.parentId}`}\n class=\"title-box\"\n tabindex={0}\n role=\"button\"\n onKeyDown={(ev: KeyboardEvent) => {\n if (ev.key === \"Enter\" || ev.key === \" \") {\n ev.preventDefault();\n this.changeView(\"month\");\n }\n }}\n onClick={this.changeView.bind(this, \"month\")}\n aria-label={`${intl.formatMessage({\n id: \"date.currentMonth\",\n defaultMessage: \"current month\",\n description: \"Calendar button\",\n })}: ${this.calendar_months[this.monthInFocus - 1]}\n ${this.yearInFocus}.`}\n aria-describedby=\"month-title\"\n >\n <span class=\"title\" aria-hidden=\"true\">\n {this.calendar_months[this.monthInFocus - 1]} {this.yearInFocus}\n </span>\n </div>\n <button\n onClick={() => {\n this.nextClicked = true;\n this.popupClicked = true;\n this.forwardOneMonth();\n }}\n onKeyDown={(ev: KeyboardEvent) => this.trapFocusRight(ev)}\n aria-label={intl.formatMessage({\n id: \"date.selectNextMonth\",\n defaultMessage: \"Select next month\",\n description: \"Calendar button\",\n })}\n ref={(el) => (this.nextButton = el as HTMLButtonElement)}\n class=\"arw-btn\"\n >\n <span class=\"mdi\">&#xf142;</span>\n </button>\n </div>\n <div aria-labelledby={`popup-title-month-${this.parentId}`} role=\"grid\" class=\"date-grid\">\n <div role=\"rowgroup\" class=\"date-header\">\n <div role=\"row\" class=\"header-row\">\n <div role=\"columnheader\" class=\"header-cell\">\n <span>\n {intl.formatMessage({\n id: \"date.su\",\n defaultMessage: \"Su\",\n description: \"Abbreviated day of the week\",\n })}\n </span>\n </div>\n <div role=\"columnheader\" class=\"header-cell\">\n <span>\n {intl.formatMessage({\n id: \"date.mo\",\n defaultMessage: \"Mo\",\n description: \"Abbreviated day of the week\",\n })}\n </span>\n </div>\n <div role=\"columnheader\" class=\"header-cell\">\n <span>\n {intl.formatMessage({\n id: \"date.tu\",\n defaultMessage: \"Tu\",\n description: \"Abbreviated day of the week\",\n })}\n </span>\n </div>\n <div role=\"columnheader\" class=\"header-cell\">\n <span>\n {intl.formatMessage({\n id: \"date.we\",\n defaultMessage: \"We\",\n description: \"Abbreviated day of the week\",\n })}\n </span>\n </div>\n <div role=\"columnheader\" class=\"header-cell\">\n <span>\n {intl.formatMessage({\n id: \"date.th\",\n defaultMessage: \"Th\",\n description: \"Abbreviated day of the week\",\n })}\n </span>\n </div>\n <div role=\"columnheader\" class=\"header-cell\">\n <span>\n {intl.formatMessage({\n id: \"date.fr\",\n defaultMessage: \"Fr\",\n description: \"Abbreviated day of the week\",\n })}\n </span>\n </div>\n <div role=\"columnheader\" class=\"header-cell\">\n <span>\n {intl.formatMessage({\n id: \"date.sa\",\n defaultMessage: \"Sa\",\n description: \"Abbreviated day of the week\",\n })}\n </span>\n </div>\n </div>\n </div>\n <div role=\"rowgroup\">\n <div role=\"row\" class=\"date-row\">\n {dates.slice(0, 7).map((date, i) => this.renderCalendarDate(date, i))}\n </div>\n <div role=\"row\">{dates.slice(7, 14).map((date, i) => this.renderCalendarDate(date, i))}</div>\n <div role=\"row\">{dates.slice(14, 21).map((date, i) => this.renderCalendarDate(date, i))}</div>\n <div role=\"row\">{dates.slice(21, 28).map((date, i) => this.renderCalendarDate(date, i))}</div>\n <div role=\"row\">{dates.slice(28, 35).map((date, i) => this.renderCalendarDate(date, i))}</div>\n {dates.length > 35 ? (\n <div role=\"row\">{dates.slice(35).map((date, i) => this.renderCalendarDate(date, i))}</div>\n ) : (\n \"\"\n )}\n </div>\n </div>\n </div>\n ) : (\n <div class=\"month-view\">\n <div class=\"calendar-header\">\n <button\n onClick={() => {\n this.prevClicked = true;\n this.popupClicked = true;\n this.yearInFocus -= 1;\n this.updateLiveRegion(`${this.yearInFocus} selected.`);\n }}\n onKeyDown={(ev: KeyboardEvent) => this.trapFocusLeft(ev)}\n aria-label={intl.formatMessage({\n id: \"date.selectPreviousYear\",\n defaultMessage: \"Select previous year\",\n description: \"Calendar button\",\n })}\n ref={(el) => (this.prevButton = el as HTMLButtonElement)}\n class=\"arw-btn\"\n >\n <span class=\"mdi\">&#xf141;</span>\n </button>\n <div\n id={`popup-title-year-${this.parentId}`}\n tabindex={0}\n class=\"title-box year\"\n role=\"button\"\n onClick={this.changeView.bind(this, \"day\")}\n onKeyDown={(ev: KeyboardEvent) => {\n if (ev.key === \"Enter\" || ev.key === \" \") {\n ev.preventDefault();\n this.changeView(\"day\");\n }\n }}\n aria-labelledby=\"year-title\"\n >\n <span class=\"title\">{this.yearInFocus}</span>\n </div>\n <button\n onClick={() => {\n this.nextClicked = true;\n this.popupClicked = true;\n this.yearInFocus += 1;\n this.updateLiveRegion(`${this.yearInFocus} selected.`);\n }}\n aria-label={intl.formatMessage({\n id: \"date.selectNextYear\",\n defaultMessage: \"Select next year\",\n description: \"Calendar button\",\n })}\n onKeyDown={(ev: KeyboardEvent) => this.trapFocusRight(ev)}\n ref={(el) => (this.nextButton = el as HTMLButtonElement)}\n class=\"arw-btn\"\n >\n <span class=\"mdi\">&#xf142;</span>\n </button>\n </div>\n <div aria-labelledby={`popup-title-year-${this.parentId}`} role=\"grid\" class=\"months\">\n <div role=\"row\" class=\"month-row\">\n {this.calendar_months\n .slice(0, 3)\n .map((month: string, index: number) => this.renderMonths(month, index))}\n </div>\n <div role=\"row\" class=\"month-row\">\n {this.calendar_months\n .slice(3, 6)\n .map((month: string, index: number) => this.renderMonths(month, index + 3))}\n </div>\n <div role=\"row\" class=\"month-row\">\n {this.calendar_months\n .slice(6, 9)\n .map((month: string, index: number) => this.renderMonths(month, index + 6))}\n </div>\n <div role=\"row\" class=\"month-row\">\n {this.calendar_months\n .slice(9)\n .map((month: string, index: number) => this.renderMonths(month, index + 9))}\n </div>\n </div>\n </div>\n )}\n </div>\n {this.isExpanded && <div id=\"live-region\" aria-live=\"polite\" aria-relevant=\"text\" class=\"sr-only\" />}\n <div id=\"month-title\" class=\"sr-only\">\n {intl.formatMessage({\n id: \"date.selectMonth\",\n defaultMessage: \"Activate to select a month.\",\n description: \"Calendar button\",\n })}\n </div>\n <div id=\"year-title\" class=\"sr-only\">\n {intl.formatMessage({\n id: \"date.selectYear\",\n defaultMessage: \"Activate to select a year.\",\n description: \"Calendar button\",\n })}\n </div>\n <div id=\"application\" class=\"sr-only\">\n {intl.formatMessage({\n id: \"date.instructions\",\n defaultMessage:\n \"Use arrows to select a date in the table. Tab left or right to buttons for selecting previous month, next month, or the month selection table.\",\n })}\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["privNavigatorButtonCss","PrivNavigatorButton","exports","class_1","prototype","handleClick","this","buttonActivated","emit","render","_a","altText","tabbingClass","isTabbing","h","expanded","toString","class","concat","onClick","bind"],"sources":["src/components/wm-navigator/priv-navigator-button/priv-navigator-button.scss?tag=priv-navigator-button&encapsulation=shadow","src/components/wm-navigator/priv-navigator-button/priv-navigator-button.tsx"],"sourcesContent":[":host,\npriv-navigator-button {\n * {\n box-sizing: border-box;\n }\n\n .navigator {\n color: #575195;\n padding: 0 1.25rem;\n position: static !important;\n height: 100%;\n background: transparent;\n border: none;\n min-height: rem-calc(60);\n cursor: pointer;\n border-radius: 0; //Edge\n top: 50%;\n img {\n height: rem-calc(36);\n width: rem-calc(36);\n vertical-align: middle;\n }\n\n &:hover {\n background: #dcdbde;\n }\n\n &:active,\n &:focus {\n outline: none;\n }\n\n &.user-is-tabbing:focus {\n @include focus-style;\n }\n }\n\n button:after {\n vertical-align: middle;\n height: rem-calc(36);\n width: rem-calc(36);\n background-size: 36px;\n display: inline-block;\n background-image: url(https://cdn.watermarkinsights.com/images/icons/appswitchericon_purple.svg);\n content: \"\";\n }\n}\n","import { Component, Element, h, Prop, Event, EventEmitter } from \"@stencil/core\";\n\n@Component({\n tag: \"priv-navigator-button\",\n styleUrl: \"priv-navigator-button.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class PrivNavigatorButton {\n @Element() el!: any;\n @Prop({ mutable: true }) expanded: boolean = false;\n @Prop() altText: string = \"\";\n @Prop({ mutable: true }) isTabbing: boolean = false;\n // @Prop({ attribute: \"mode\", reflect: true, mutable: true })\n // mode: string = \"planning\";\n @Event() buttonActivated!: EventEmitter;\n\n handleClick() {\n this.buttonActivated.emit();\n }\n\n render() {\n const { handleClick, altText } = this;\n const tabbingClass = this.isTabbing ? \"user-is-tabbing\" : \"\";\n\n return (\n <button\n aria-expanded={this.expanded.toString()}\n class={`navigator ${tabbingClass}`}\n onClick={handleClick.bind(this)}\n aria-label={altText}\n ></button>\n );\n }\n}\n"],"mappings":"0JAAA,IAAMA,EAAyB,y5C,ICOlBC,EAAmBC,EAAA,mC,uFAEe,M,aACnB,G,eACoB,K,CAK9CC,EAAAC,UAAAC,YAAA,WACEC,KAAKC,gBAAgBC,M,EAGvBL,EAAAC,UAAAK,OAAA,WACQ,IAAAC,EAA2BJ,KAAzBD,EAAWK,EAAAL,YAAEM,EAAOD,EAAAC,QAC5B,IAAMC,EAAeN,KAAKO,UAAY,kBAAoB,GAE1D,OACEC,EAAA,0BACiBR,KAAKS,SAASC,WAC7BC,MAAO,aAAAC,OAAaN,GACpBO,QAASd,EAAYe,KAAKd,MAAK,aACnBK,G,kOAtBY,I"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["wmUploaderCss","Uploader","exports","this","inputId","generateId","Object","defineProperty","class_1","prototype","el","shadowRoot","querySelector","concat","type","uploaderType","defaultMaxSize","maxSizeLimit","maxSize","Math","min","maxFiles","fileList","length","errorMessage","internalErrorMessage","toggleTabbingOn","isTabbing","toggleTabbingOff","handleUploadProgress","ev","_this","map","i","id","detail","progress","forceUpdate","numFilesInProgress","srProgress","total_1","setInterval","aggregate","reduce","avg","item","announce","uploaderMessages","getUploadProgress","floor","handleFileErrorCleared","filename","name","errorList","filter","error","uploadButtonEl","focus","handleFileDeleted","clearErrors","wmUploaderDeleteFile","emit","wmFileDelete","wmDeleteFile","handleFilePreviewed","wmUploaderPreviewFile","wmFilePreview","handleFileDownloaded","wmUploaderDownloadFile","wmFileDownload","wmDownloadFile","parseFiles","files","list","JSON","parse","forEach","size","match","convertedSize","convertBytes","toFixed","unit","Error","focusAfterRemoval","newFiles","oldFiles","newFileIds_1","file","oldFileIds","removedFileId","includes","indexOf","fileIdPrecedingRemoved_1","fileElPrecedingRemoved","focusedElementsButtons","querySelectorAll","lastButtonInFile","parseRejectedFiles","rejectedFiles","uploadNotifications","newNum","oldNum","setTimeout","notif","finishedUploading","clearInterval","getFilesUploading","handleErrorMessageChange","isValidSize","effectiveMaxSize","bytes","unitOrder","unitIndex","result","parseInt","isDuplicate","hasDuplicateUploadingFile","filesToUpload","some","fileToUpload","hasDuplicateUploadedFile","f","isEmpty","fileLimitReached","isItemUploading","hasOwnProperty","message","liveRegion","textContent","announcement","handleFiles","Array","from","target","validTypes","fileTypes","split","join","fileLimitExceeded","hasValidType","getInvalidFileType","push","zeroFileSize","getFileTooLarge","duplicateName","wmUploaderFilesSelected","wmFilesSelected","value","componentWillLoad","buttonText","console","warn","tempUploaderType","emptyStateText","componentDidLoad","document","body","classList","contains","uploadButtonOnClick","isDisabled","preventDefault","srMsg","waitToUpload","renderUploadSvg","h","class","width","height","viewBox","transform","fill","d","renderIcon","rotate","icon","String","fromCodePoint","renderInfo","info","renderNotif","renderError","displayedErrorMessage","renderUploadButton","classes","accessibleLabel","label","requiredField","multiple","onClick","onChange","htmlFor","renderEmptyState","renderErrorList","srMessage","acc","err","formatTimestamp","timestamp","uploadDate","Date","day","getDate","month","getMonth","year","getFullYear","time","toLocaleTimeString","hour","minute","formattedDate","renderInProgressFileList","stringify","showInfo","renderUploadedFileList","lastUpdated","renderFiles","sortBy","sort","a","b","localeCompare","legacyRenderHeader","renderHeader","renderRequirements","getAcceptedFileTypes","getFileCount","getMaxSize","renderFooter","getFilesAdded","renderWithItems","hasNewlyUploadedFiles","renderLabel","render","Host","ref"],"sources":["src/components/wm-uploader/wm-uploader.scss?tag=wm-uploader&encapsulation=shadow","src/components/wm-uploader/wm-uploader.tsx"],"sourcesContent":[":host,\nwm-uploader {\n display: block;\n position: relative;\n max-width: 1140px;\n\n &[dir=\"RTL\"] {\n .mdi {\n margin-left: rem-calc(5);\n margin-right: 0;\n }\n }\n @extend %wm-button;\n\n input:focus + .wm-button.user-is-tabbing {\n -webkit-box-shadow: 0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e !important;\n -moz-box-shadow: 0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e !important;\n box-shadow: 0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e !important;\n }\n}\n\n:host *,\nwm-uploader * {\n box-sizing: border-box;\n}\n\n.wm-button.disabled {\n // override the %wm-button rule\n // we want a pointer event when disabled,\n // to trigger a SR message\n pointer-events: initial !important;\n}\n\n@include label;\n#label {\n margin-bottom: rem-calc(8);\n}\n\n.header {\n .info-wrapper {\n align-items: center;\n .info {\n font-size: rem-calc(14);\n margin-left: 1rem;\n }\n }\n\n .accepted-types {\n font-size: rem-calc(14);\n }\n\n .requirements {\n font-size: rem-calc(14);\n margin-left: rem-calc(16);\n }\n}\n\n.footer {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n padding: rem-calc(15 30);\n\n .notif-wrapper {\n align-items: flex-end;\n }\n\n .filecount-wrapper {\n display: flex;\n align-items: center;\n .filecount {\n font-size: 0.875rem;\n margin-right: 1rem;\n }\n }\n}\n\n.notif-wrapper {\n position: relative;\n display: flex;\n flex-direction: row;\n margin-bottom: rem-calc(12);\n\n .requirements {\n display: flex;\n flex-direction: column;\n }\n}\n\n.notif,\n#error {\n padding-top: rem-calc(4);\n font-size: 0.875rem;\n font-style: italic;\n\n &#error {\n @include errorMessage;\n }\n}\n\n.info-wrapper {\n position: relative; // for .info\n display: flex;\n}\n\n.list-container {\n overflow-y: unset;\n\n &.checkmark-spacer {\n margin-right: rem-calc(44);\n }\n\n &:has(.error-list, .inprogress-list, .file-list) {\n margin-top: rem-calc(40);\n }\n\n ul {\n padding: 0;\n width: 100%;\n margin: 0;\n\n wm-file {\n margin-bottom: rem-calc(8);\n }\n }\n}\n\n.sr-only {\n @include srOnly;\n}\n\n/// FOR DEPRECATED TYPES ///////////////////////////////////////\n.empty-block {\n margin: 5rem auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .upload-file {\n margin-bottom: rem-calc(30);\n }\n\n .empty-message {\n font-size: 0.875rem;\n &.large {\n font-size: 1.5rem;\n }\n margin-bottom: rem-calc(7);\n }\n\n .info-wrapper {\n justify-content: center;\n width: 100%; // for .notif\n\n .wm-button {\n // Removing the width inherit here to prevent a 100% width\n // from the info-wrapper. Future proofing a day when\n // we might want a long notif to wrap.\n width: auto;\n }\n }\n}\n\n.header {\n &.type1,\n &.type2 {\n margin-bottom: 1rem;\n }\n .slot-wrapper {\n display: flex;\n justify-content: flex-start;\n align-items: flex-start;\n }\n}\n\n.notif-wrapper {\n &.type1,\n &.type2 {\n flex-direction: column;\n margin-bottom: rem-calc(16);\n }\n}\n\n.list-container {\n &.type1,\n &.type2 {\n overflow-y: auto;\n ul {\n margin: revert;\n }\n .file-list li,\n .inprogress-list li {\n // margin-bottom also on the last element, otherwise tooltip on dl and delete btns triggers a scrollbar\n margin-bottom: rem-calc(26);\n }\n .error-list li {\n margin-bottom: rem-calc(20);\n }\n }\n\n &.type1 {\n padding: rem-calc(0 30);\n height: rem-calc(260);\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State, Listen, Watch } from \"@stencil/core\";\nimport { forceUpdate } from \"@stencil/core\";\nimport { generateId, hasValidType } from \"../../global/functions\";\nimport { UploadedFile } from \"../../global/interfaces\";\nimport { uploaderMessages } from \"../../global/intl\";\ninterface ErrorFile {\n name: string;\n message: string;\n}\n\n@Component({\n tag: \"wm-uploader\",\n styleUrl: \"wm-uploader.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class Uploader {\n @Element() el!: HTMLWmUploaderElement;\n private liveRegion!: HTMLDivElement;\n get uploadButtonEl(): HTMLElement {\n return this.el.shadowRoot!.querySelector(`#${this.inputId}`) as HTMLElement;\n }\n\n @Prop({ mutable: true }) uploaderType?: \"1\" | \"2\"; // only mutable for the deprecation transition\n @Prop() type?: \"1\" | \"2\"; // DEPRECATED in favor of uploaderType\n get tempUploaderType() {\n // replace instances of this.tempUploaderType with this.uploaderType once type is fully phased out\n return this.type || this.uploaderType;\n }\n @Prop() label?: string;\n @Prop() buttonText!: string;\n @Prop() info?: string;\n @Prop() emptyStateText!: string;\n @Prop() icon!: string;\n @Prop() fileTypes: string = \"pdf txt log xml doc docx xls xlsx ppt pptx gif jpg jpeg png csv\";\n @Prop() maxSize?: number | null; // in Mb\n @Prop() maxFiles?: number;\n @Prop() sortBy: \"name\" | \"date\" = \"date\"; // name is descending (a -> z), date is ascending (earlier -> later)\n @Prop() showInfo: \"time\" | \"size\" | \"none\" = \"time\";\n @Prop() errorMessage?: string;\n @Prop() requiredField?: boolean;\n\n @Prop() files?: string; // String representation of an array of files (the files retrieved from the server)\n @State() fileList: UploadedFile[] = []; // the string above transformed into the actual array\n @Prop({ mutable: true }) filesToUpload: File[] = []; // input.files that passed validation\n\n @State() isTabbing: boolean = false;\n\n @Prop() rejectedFiles?: string; // String representation of an array of errors to add to errorList, allows devs to display server-side errors\n @State() errorList: ErrorFile[] = []; // for errors on a particular file\n @State() notif?: string | null; // for upload notifications\n @State() internalErrorMessage?: string;\n @State() announcement: string = \"\";\n @State() numFilesInProgress?: number | null; // null when not uploading != 0 (when all files are done uploading) != undefined (original state)\n @State() isCondensed: boolean = false;\n private srProgress?: any; // setInterval for SR to announce the aggregate progress percentage when things take a long time. stored here so it can be stopped when upload is finished.\n private inputId = generateId();\n\n @Event() wmUploaderFilesSelected!: EventEmitter;\n @Event() wmFilesSelected!: EventEmitter; // deprecated in favor of wmUploaderFilesSelected\n @Event() wmUploaderDeleteFile!: EventEmitter;\n @Event() wmDeleteFile!: EventEmitter; // deprecated in favor of wmUploaderDeleteFile\n @Event() wmUploaderDownloadFile!: EventEmitter;\n @Event() wmDownloadFile!: EventEmitter; // deprecated in favor of wmUploaderDownloadFile\n @Event() wmUploaderPreviewFile!: EventEmitter;\n\n @Event() wmFileDelete!: EventEmitter<string>;\n @Event() wmFileDownload!: EventEmitter<string>;\n @Event() wmFilePreview!: EventEmitter<string>;\n\n get effectiveMaxSize() {\n const defaultMaxSize = 100;\n // maxsize cannot be set to over 100Mb\n const maxSizeLimit = 100;\n\n return this.maxSize ? Math.min(this.maxSize, maxSizeLimit) : defaultMaxSize;\n }\n\n get fileLimitReached() {\n return this.maxFiles && this.fileList.length >= this.maxFiles;\n }\n\n get displayedErrorMessage(): string {\n return this.errorMessage || this.internalErrorMessage || \"\";\n }\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n @Listen(\"wmUploadProgress\")\n handleUploadProgress(ev: CustomEvent) {\n this.fileList.map((i) => {\n if (i.id === ev.detail.id) {\n i.progress = ev.detail.progress;\n forceUpdate(this.el);\n }\n });\n\n if (ev.detail.progress === 100) {\n // inProgressList is not a perfect reflection of how many files are uploading\n // because even after progress reached 100% the item should remain in the array\n // (should only be removed once it appears in fileList)\n this.numFilesInProgress! -= 1;\n }\n\n // aggregate the percentages for SR to announce progress\n if (!this.srProgress && this.numFilesInProgress) {\n const total = this.numFilesInProgress; // if we don't reassign this number changes when a file is done and the percentage becomes wrong\n this.srProgress = setInterval(() => {\n const aggregate = this.fileList.reduce((avg, item) => (item.progress ? avg + item.progress : avg), 0);\n this.announce(uploaderMessages.getUploadProgress(Math.floor(aggregate / total)));\n }, 5000);\n }\n }\n\n @Listen(\"wmFileClearErrorClicked\")\n handleFileErrorCleared(ev: CustomEvent) {\n const filename = ev.detail.name;\n this.errorList = this.errorList.filter((error) => error.name != filename);\n this.uploadButtonEl.focus();\n }\n\n @Listen(\"wmIntFileDeleted\")\n handleFileDeleted(ev: CustomEvent) {\n this.clearErrors();\n forceUpdate(this.el); // for the button to stop being disabled if num files become < max-files\n this.wmUploaderDeleteFile.emit(ev.detail);\n this.wmFileDelete.emit(ev.detail);\n this.wmDeleteFile.emit(ev.detail); // deprecated\n }\n\n @Listen(\"wmIntFilePreviewed\")\n handleFilePreviewed(ev: CustomEvent) {\n this.clearErrors();\n this.wmUploaderPreviewFile.emit(ev.detail);\n this.wmFilePreview.emit(ev.detail);\n }\n\n @Listen(\"wmIntFileDownloaded\")\n handleFileDownloaded(ev: CustomEvent) {\n this.clearErrors();\n this.wmUploaderDownloadFile.emit(ev.detail);\n this.wmFileDownload.emit(ev.detail);\n this.wmDownloadFile.emit(ev.detail); // deprecated\n }\n\n @Watch(\"files\")\n parseFiles() {\n if (!!this.files) {\n if (typeof this.files === \"string\") {\n let list = JSON.parse(this.files);\n if (typeof list === \"object\") {\n // if size is in byte format, convert to display format\n list.forEach((item: any) => {\n if (item.size && (typeof item.size === \"number\" || item.size.match(/^[0-9]+$/))) {\n const convertedSize = this.convertBytes(item.size);\n item.size = `${convertedSize.size.toFixed(0)} ${convertedSize.unit}`;\n }\n });\n this.fileList = list;\n } else {\n throw new Error(\"could not parse string passed to files attribute\");\n }\n } else {\n throw new Error(\"Attribute 'files' should be a string\");\n }\n }\n }\n\n @Watch(\"fileList\")\n focusAfterRemoval(newFiles: UploadedFile[], oldFiles: UploadedFile[]) {\n if (this.isTabbing && newFiles.length < oldFiles.length) {\n const newFileIds = newFiles.map((file: UploadedFile) => file.id);\n const oldFileIds = oldFiles.map((file: UploadedFile) => file.id);\n // even in the case that multiple files have been removed at once, work off of the first in that group\n const removedFileId = oldFileIds.filter((id: string) => !newFileIds.includes(id))[0];\n\n if (oldFileIds.indexOf(removedFileId) > 0) {\n const fileIdPrecedingRemoved = oldFileIds[oldFileIds.indexOf(removedFileId) - 1];\n const fileElPrecedingRemoved = this.el.shadowRoot!.querySelector(\"#file-\" + fileIdPrecedingRemoved);\n const focusedElementsButtons = fileElPrecedingRemoved?.shadowRoot!.querySelectorAll(\"wm-button\");\n\n if (focusedElementsButtons && focusedElementsButtons.length > 0) {\n const lastButtonInFile = focusedElementsButtons[focusedElementsButtons.length - 1];\n lastButtonInFile.focus();\n } else {\n // if preceding file has no file action buttons, rerun function with adjusted params\n // by removing the fileElPrecedingRemoved from the newFiles list, it is now considered the removedFile and looks to focus it's preceding file\n // if it continues to cannot find an appropriate preceding file and becomes the first file in the list, it focuses the upload button\n this.focusAfterRemoval(\n newFiles.filter((file: UploadedFile) => file.id !== fileIdPrecedingRemoved),\n oldFiles\n );\n }\n } else {\n this.uploadButtonEl.focus();\n }\n }\n }\n\n @Watch(\"rejectedFiles\")\n parseRejectedFiles() {\n if (!!this.rejectedFiles) {\n if (typeof this.files === \"string\") {\n const list = JSON.parse(this.rejectedFiles);\n if (typeof list === \"object\") {\n this.errorList = list;\n } else {\n throw new Error(\"could not parse string passed to errors attribute\");\n }\n } else {\n throw new Error(\"Attribute 'rejected-files' should be a string\");\n }\n }\n }\n\n @Watch(\"numFilesInProgress\")\n uploadNotifications(newNum: number, oldNum: number) {\n if (oldNum > 0 && newNum === 0) {\n setTimeout(() => {\n this.notif = \"\";\n this.internalErrorMessage = \"\";\n }, 20 * 1000);\n this.notif = uploaderMessages.finishedUploading;\n this.announce(uploaderMessages.finishedUploading);\n this.numFilesInProgress = null;\n clearInterval(this.srProgress);\n forceUpdate(this.el);\n } else if (newNum > 0 && newNum != oldNum) {\n this.notif = uploaderMessages.getFilesUploading(newNum);\n this.announce(uploaderMessages.getFilesUploading(newNum));\n forceUpdate(this.el);\n }\n }\n\n @Watch(\"errorMessage\")\n handleErrorMessageChange() {\n if (this.errorMessage) {\n this.announce(this.errorMessage);\n }\n }\n\n isValidSize(size: number) {\n return this.convertBytes(size, \"MB\").size <= this.effectiveMaxSize;\n }\n\n convertBytes(bytes: number, unit?: \"KB\" | \"MB\" | \"GB\" | \"TB\") {\n // https://stackoverflow.com/questions/2365100/converting-bytes-to-megabytes\n const unitOrder = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n let unitIndex = 0;\n let result = typeof bytes === \"number\" ? bytes : parseInt(bytes);\n\n if (unit) {\n // convert until result matches desired unit\n while (unitOrder.indexOf(unit) > unitIndex) {\n result /= 1024;\n unitIndex++;\n }\n } else {\n // convert until result is appropriate unit (value is under 1000)\n while (result > 1000) {\n result /= 1024;\n unitIndex++;\n }\n }\n return { size: result, unit: unitOrder[unitIndex] };\n }\n\n isDuplicate(name: string) {\n const hasDuplicateUploadingFile = this.filesToUpload.some((fileToUpload: File) => fileToUpload.name === name);\n const hasDuplicateUploadedFile = this.fileList.some((f) => {\n const filename: string = f.type ? f.name + \".\" + f.type : f.name;\n return filename === name;\n });\n\n return hasDuplicateUploadingFile || hasDuplicateUploadedFile;\n }\n\n isEmpty() {\n return !this.fileList.length && !this.errorList.length;\n }\n\n get isDisabled() {\n // disable if is the uploader is maxed out or if something is uploading\n return this.fileLimitReached || this.numFilesInProgress! > 0;\n }\n\n isItemUploading(item: UploadedFile) {\n return item.hasOwnProperty(\"progress\") && item.progress! < 100;\n }\n\n announce(message: string) {\n if (this.liveRegion.textContent === message) {\n message += \"\\u00A0\";\n }\n this.announcement = message;\n }\n\n clearErrors() {\n this.errorList = [];\n this.notif = \"\";\n this.internalErrorMessage = \"\";\n }\n\n handleFiles(ev: Event) {\n this.filesToUpload = [];\n const files = Array.from((ev.target! as HTMLInputElement).files!);\n const validTypes = this.fileTypes.split(\" \").join(\", \");\n\n if (!!this.maxFiles && this.fileList.length + files.length > this.maxFiles) {\n this.internalErrorMessage = uploaderMessages.fileLimitExceeded;\n this.announce(uploaderMessages.fileLimitExceeded);\n } else {\n files &&\n files.map((file) => {\n if (!hasValidType(file, this.fileTypes)) {\n const error = {\n name: file.name,\n message: uploaderMessages.getInvalidFileType(validTypes),\n };\n this.errorList.push(error);\n } else if (file.size === 0) {\n const error = {\n name: file.name,\n message: uploaderMessages.zeroFileSize,\n };\n this.errorList.push(error);\n } else if (!this.isValidSize(file.size)) {\n const error = {\n name: file.name,\n message: uploaderMessages.getFileTooLarge(this.effectiveMaxSize),\n };\n this.errorList.push(error);\n } else if (this.isDuplicate(file.name)) {\n const error = {\n name: file.name,\n message: uploaderMessages.duplicateName,\n };\n this.errorList.push(error);\n } else {\n this.filesToUpload.push(file);\n }\n });\n\n if (this.filesToUpload.length > 0) {\n this.numFilesInProgress = this.filesToUpload.length;\n this.wmUploaderFilesSelected.emit(this.filesToUpload);\n this.wmFilesSelected.emit(this.filesToUpload); // deprecated\n }\n }\n (ev.target! as HTMLInputElement).value = \"\"; // reset to ensure that onChange is triggered when the same file is selected a second time\n }\n\n componentWillLoad() {\n if (!this.buttonText) {\n throw new Error(\"wm-uploader: button-text is a required prop\");\n }\n\n if (this.type) {\n console.warn(\"wm-uploader: type has been deprecated as of v3.1.0. Please use uploader-type instead.\");\n }\n\n if (this.tempUploaderType === \"1\" && !this.emptyStateText) {\n throw new Error(\"wm-uploader: empty-state-text is a required prop\");\n }\n\n this.parseFiles();\n this.clearErrors();\n this.parseRejectedFiles();\n }\n\n componentDidLoad() {\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\n this.toggleTabbingOn();\n }\n }\n\n uploadButtonOnClick(ev: Event) {\n if (this.isDisabled) {\n // this is a temporary fix.\n // we need the disabled button to be programmatically focusable\n // to allow return focus after closing the browser file panel\n // since it's focusable the button should respond when activated\n // it looks disabled, and announces the reason why the action cannot\n // be taken when activated.\n ev.preventDefault();\n\n if (this.numFilesInProgress! > 0) {\n const srMsg = uploaderMessages.waitToUpload;\n this.announce(srMsg);\n } else if (this.fileLimitReached) {\n this.internalErrorMessage = uploaderMessages.fileLimitReached;\n this.announce(uploaderMessages.fileLimitReached);\n }\n } else {\n this.clearErrors();\n }\n }\n\n renderUploadSvg() {\n return (\n <svg class=\"upload-file\" width=\"91\" height=\"84\" viewBox=\"0 0 91 84\">\n <path\n transform=\"rotate(-180.000000) translate(-452, -255.5)\"\n fill=\"#eae8ec\"\n d=\"M361,249.681818 L361,197.318182 C361,194.118182 365.555061,191.5 371.122358,191.5 L391.316463,191.5 L391.286495,200.562515 L369.871211,200.600292 L369.885404,200.622146 L369.886423,246.655947 L443.657038,246.840767 L443.657038,200.622146 L421.683537,200.622146 L421.683537,191.5 L441.978865,191.5 C447.546162,191.5 452,194.118182 452,197.318182 L452,249.681818 C452,252.881818 447.546162,255.5 441.978865,255.5 L371.122358,255.5 C365.504449,255.5 361,252.881818 361,249.681818 Z M391.5,207 L406,221 L420.5,207 L409.625,207 L409.625,172 L402.375,172 L402.375,207 L391.5,207 Z\"\n ></path>\n </svg>\n );\n }\n\n renderIcon() {\n // mdi attachment icon (paper clip) is horizontal but we want it vertical\n const rotate = this.icon && this.icon === \"f066\";\n return (\n this.icon && (\n <span class={`mdi ${rotate ? \"rotate\" : \"\"}`}>{String.fromCodePoint(parseInt(`0x${this.icon}`))}</span>\n )\n );\n }\n\n renderInfo() {\n return this.info && this.tempUploaderType === \"2\" ? <span class=\"info\">{this.info}</span> : \"\";\n }\n\n renderNotif() {\n return <div class=\"notif\">{this.notif}</div>;\n }\n\n renderError() {\n return <div id=\"error\">{this.displayedErrorMessage}</div>;\n }\n\n renderUploadButton(classes: string) {\n let accessibleLabel = `${this.label && this.label !== this.buttonText ? `${this.label}, ` : \"\"}${this.buttonText}`;\n\n return (\n <div class=\"info-wrapper\">\n <input\n name={this.inputId}\n id={this.inputId}\n class=\"sr-only\"\n aria-label={accessibleLabel}\n aria-required={this.requiredField ? \"true\" : null}\n aria-describedby={`${this.displayedErrorMessage ? \"error \" : \"\"}file-count max-size accepted-types`}\n type=\"file\"\n multiple\n onClick={(ev) => this.uploadButtonOnClick(ev)}\n onChange={(ev) => this.handleFiles(ev)}\n />\n <label htmlFor={this.inputId} class={`wm-button ${classes}${this.isTabbing ? \" user-is-tabbing\" : \"\"}`}>\n {this.renderIcon()}\n {this.buttonText}\n </label>\n {this.renderInfo()}\n </div>\n );\n }\n\n renderEmptyState() {\n return (\n <div class=\"empty-block\">\n {this.renderUploadSvg()}\n <div class={`empty-message`}>{this.emptyStateText}</div>\n {this.renderUploadButton(\"-primary empty-button\")}\n {this.notif && this.renderNotif()}\n {this.displayedErrorMessage && this.renderError()}\n </div>\n );\n }\n\n renderErrorList() {\n let srMessage = this.errorList.reduce(function (acc, err) {\n return acc + `${err.name}: ${err.message} `;\n }, \"\");\n this.announce(srMessage);\n\n return (\n <ul class=\"error-list\">\n {this.errorList.map((err) => (\n <wm-file file={`{\"name\": \"${err.name}\"}`} error-message={err.message}></wm-file>\n ))}\n </ul>\n );\n }\n\n formatTimestamp(timestamp: string): string {\n const uploadDate = new Date(Date.parse(timestamp));\n const day = uploadDate.getDate();\n const month = uploadDate.getMonth() + 1;\n const year = uploadDate.getFullYear();\n const time = uploadDate.toLocaleTimeString(\"en-us\", { hour: \"numeric\", minute: \"2-digit\" });\n const formattedDate = `${month}/${day}/${year} ${time}`;\n\n return formattedDate;\n }\n\n renderInProgressFileList() {\n return (\n <ul class=\"inprogress-list\">\n {this.fileList\n .filter((item) => this.isItemUploading(item))\n .map((item) => (\n <wm-file file={JSON.stringify(item)} show-info={this.showInfo}></wm-file>\n ))}\n </ul>\n );\n }\n\n renderUploadedFileList() {\n return (\n <ul class=\"file-list\">\n {this.fileList\n .filter((item) => !this.isItemUploading(item))\n .map((item) => {\n item.lastUpdated = this.formatTimestamp(item.lastUpdated);\n return <wm-file id={`file-${item.id}`} file={JSON.stringify(item)} show-info={this.showInfo}></wm-file>;\n })}\n </ul>\n );\n }\n\n renderFiles() {\n // if we switch to accepting display format for the wm-uploader's file lastUpdateds, sorting by date will become impossible\n this.sortBy === \"name\"\n ? this.fileList.sort((a, b) => a.name.localeCompare(b.name))\n : this.fileList.sort((a, b) => Date.parse(a.lastUpdated) - Date.parse(b.lastUpdated));\n return (\n <div>\n {this.renderInProgressFileList()}\n {this.renderUploadedFileList()}\n </div>\n );\n }\n\n legacyRenderHeader() {\n return (\n <div class={`header ${this.tempUploaderType ? `type${this.tempUploaderType}` : \"\"}`}>\n <div class=\"slot-wrapper\">\n <slot />\n <div class={`notif-wrapper ${this.tempUploaderType ? `type${this.tempUploaderType}` : \"\"}`}>\n {this.renderUploadButton(`-secondary ${this.isDisabled ? \"disabled\" : \"\"}`)}\n {this.notif && this.renderNotif()}\n {this.displayedErrorMessage && this.renderError()}\n </div>\n </div>\n </div>\n );\n }\n\n renderHeader() {\n const validTypes = \".\" + this.fileTypes.split(\" \").join(\", .\");\n\n return (\n <div class={`header ${this.tempUploaderType ? `type${this.tempUploaderType}` : \"\"}`}>\n <div class={`notif-wrapper ${this.tempUploaderType ? `type${this.tempUploaderType}` : \"\"}`}>\n {this.renderUploadButton(`-secondary ${this.isDisabled ? \"disabled\" : \"\"}`)}\n {this.renderRequirements()}\n </div>\n <div id=\"accepted-types\" class=\"accepted-types\">\n {uploaderMessages.getAcceptedFileTypes(validTypes, this.fileTypes.split(\" \").length)}\n </div>\n {this.notif && this.renderNotif()}\n {this.displayedErrorMessage && this.renderError()}\n </div>\n );\n }\n\n renderRequirements() {\n return (\n <div class=\"requirements\">\n {this.maxFiles && (\n <span id=\"file-count\">{uploaderMessages.getFileCount(this.fileList.length, this.maxFiles)}</span>\n )}\n {this.maxSize && <span id=\"max-size\">{uploaderMessages.getMaxSize(this.effectiveMaxSize)}</span>}\n </div>\n );\n }\n\n renderFooter() {\n return (\n <div class=\"footer\">\n <div class={`notif-wrapper ${this.tempUploaderType ? `type${this.tempUploaderType}` : \"\"}`}>\n <div class=\"filecount-wrapper\">\n <div class=\"filecount\">{uploaderMessages.getFilesAdded(this.fileList.length)}</div>\n {this.renderUploadButton(`-primary ${this.isDisabled ? \"disabled\" : \"\"}`)}\n </div>\n {this.notif && this.renderNotif()}\n {this.displayedErrorMessage && this.renderError()}\n </div>\n </div>\n );\n }\n\n renderWithItems() {\n // it's possible progress is passed in as a string, so we need to check for \"100\" as well\n const hasNewlyUploadedFiles =\n this.fileList.filter((file) => file.progress === (typeof file.progress === \"number\" ? 100 : \"100\")).length > 0;\n return (\n <div>\n {!this.tempUploaderType && this.renderHeader()}\n {this.tempUploaderType === \"2\" && this.legacyRenderHeader()}\n <div\n class={`list-container type${this.tempUploaderType} ${\n !this.tempUploaderType && hasNewlyUploadedFiles ? \"checkmark-spacer\" : \"\"\n }`}\n >\n {this.errorList.length > 0 && this.renderErrorList()}\n {this.fileList.length > 0 && this.renderFiles()}\n </div>\n {this.tempUploaderType === \"1\" && this.renderFooter()}\n </div>\n );\n }\n\n renderLabel() {\n return (\n <div class={`wrapper ${this.displayedErrorMessage ? \"invalid\" : \"\"}`}>\n <div id=\"label\" class={`label`}>\n {this.label}\n {this.requiredField && (\n <span class=\"required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </div>\n </div>\n );\n }\n\n render() {\n return (\n <Host>\n {this.label && this.renderLabel()}\n {this.isEmpty() && this.tempUploaderType === \"1\" ? this.renderEmptyState() : this.renderWithItems()}\n <div\n ref={(el) => (this.liveRegion = el as HTMLDivElement)}\n class=\"live-region sr-only\"\n aria-live=\"assertive\" // since it's directly linked to the action the user took, it should be read in priority. With polite, some messages get dismissed in favor of the page title\n aria-atomic=\"true\"\n >\n {this.announcement}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as t,h as o,H as n,g as e}from"./p-1c23de4a.js";import{g as i}from"./p-888bec42.js";import{g as a,t as s,a as r}from"./p-c6a0f7e5.js";const b=':host .wm-button,wm-button .wm-button{-ms-transition:background-color 500ms cubic-bezier(0.4, 0, 0.2, 1), color 500ms cubic-bezier(0.4, 0, 0.2, 1), border 500ms cubic-bezier(0.4, 0, 0.2, 1);-webkit-transition:background-color 500ms cubic-bezier(0.4, 0, 0.2, 1), color 500ms cubic-bezier(0.4, 0, 0.2, 1), border 500ms cubic-bezier(0.4, 0, 0.2, 1);-moz-transition:background-color 500ms cubic-bezier(0.4, 0, 0.2, 1), color 500ms cubic-bezier(0.4, 0, 0.2, 1), border 500ms cubic-bezier(0.4, 0, 0.2, 1);transition:background-color 500ms cubic-bezier(0.4, 0, 0.2, 1), color 500ms cubic-bezier(0.4, 0, 0.2, 1), border 500ms cubic-bezier(0.4, 0, 0.2, 1);-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;width:inherit;border:2px solid #575195;color:#575195;font-family:inherit;font-size:0.75rem;font-weight:700;height:2.75rem;padding:0 1.3333333333em;cursor:pointer;position:relative;background:#fff;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;text-decoration:none;text-transform:uppercase;letter-spacing:0.01875rem;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}@media screen and (min-width: 48rem){:host .wm-button,wm-button .wm-button{height:3.3333333333em}}:host .wm-button.nowrap,wm-button .wm-button.nowrap{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host .wm-button:focus,wm-button .wm-button:focus{outline:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}:host .wm-button::-moz-focus-inner,wm-button .wm-button::-moz-focus-inner{border:0;outline:none}:host .wm-button.user-is-tabbing:focus:not(:disabled):not(.disabled) :host .wm-button.-textonly .button-text,wm-button .wm-button.user-is-tabbing:focus:not(:disabled):not(.disabled) :host .wm-button.-textonly .button-text,:host .wm-button.user-is-tabbing:focus:not(:disabled):not(.disabled) wm-button .wm-button.-textonly .button-text,wm-button .wm-button.user-is-tabbing:focus:not(:disabled):not(.disabled) wm-button .wm-button.-textonly .button-text{background:-webkit-gradient(linear, left top, right top, color-stop(66%, #3862e9), color-stop(0, transparent)) repeat-x;background:linear-gradient(90deg, #3862e9 66%, transparent 0) repeat-x;background-size:6px 3px;background-position:0 1em;border-radius:0;line-height:normal}:host .wm-button.user-is-tabbing:focus:not(.-textonly):not(:disabled):not(.disabled),wm-button .wm-button.user-is-tabbing:focus:not(.-textonly):not(:disabled):not(.disabled){-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}:host .wm-button.user-is-tabbing:focus:not(.-textonly):not(:disabled):not(.disabled):not(.dark),wm-button .wm-button.user-is-tabbing:focus:not(.-textonly):not(:disabled):not(.disabled):not(.dark){-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e}:host .wm-button.user-is-tabbing:focus:not(.-textonly):not(:disabled):not(.disabled):not(.dark)::-moz-focus-inner,wm-button .wm-button.user-is-tabbing:focus:not(.-textonly):not(:disabled):not(.disabled):not(.dark)::-moz-focus-inner{border:0}:host .wm-button.dark:not(.-textonly):not(:disabled):not(.disabled),wm-button .wm-button.dark:not(.-textonly):not(:disabled):not(.disabled){background:transparent;border:2px solid #fff;color:#fff}:host .wm-button.dark:not(.-textonly):not(:disabled):not(.disabled):hover,wm-button .wm-button.dark:not(.-textonly):not(:disabled):not(.disabled):hover{color:#575195;background:#e6e6e6;border:2px solid #e6e6e6}:host .wm-button.dark.user-is-tabbing:focus:not(.-textonly):not(:disabled):not(.disabled).dark,wm-button .wm-button.dark.user-is-tabbing:focus:not(.-textonly):not(:disabled):not(.disabled).dark{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #c6b4e3;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #c6b4e3;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #c6b4e3;outline:none}:host .wm-button:active:not(:disabled):not(.disabled):not(.-textonly):not(.-actionbutton):not(.displayedoption),wm-button .wm-button:active:not(:disabled):not(.disabled):not(.-textonly):not(.-actionbutton):not(.displayedoption){-ms-transform:scale(0.9, 0.9);-webkit-transform:scale(0.9, 0.9);-moz-transform:scale(0.9, 0.9);transform:scale(0.9, 0.9)}:host .wm-button .mdi,wm-button .wm-button .mdi{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:host .wm-button:not(.-icononly):not(.-navigational) .mdi,wm-button .wm-button:not(.-icononly):not(.-navigational) .mdi{margin-right:0.3125rem}:host .wm-button[dir=RTL] :not(.-icononly) .mdi,wm-button .wm-button[dir=RTL] :not(.-icononly) .mdi{margin-left:0.3125rem;margin-right:0}:host .wm-button.-primary:not(.-textonly),wm-button .wm-button.-primary:not(.-textonly){background:#575195;color:#fff}:host .wm-button.-primary:not(.-textonly):not(:focus),wm-button .wm-button.-primary:not(.-textonly):not(:focus){-webkit-box-shadow:0 2px 2px 0 rgba(87, 81, 149, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 2px 2px 0 rgba(87, 81, 149, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.2);box-shadow:0 2px 2px 0 rgba(87, 81, 149, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.2)}:host .wm-button.-primary:not(.-textonly):hover:not(:disabled):not(.disabled),wm-button .wm-button.-primary:not(.-textonly):hover:not(:disabled):not(.disabled){background:#464177}:host .wm-button.-primary:not(.-textonly).dark:not(:disabled):not(.disabled),wm-button .wm-button.-primary:not(.-textonly).dark:not(:disabled):not(.disabled){color:#575195;background:#fff;border:2px solid #fff}:host .wm-button.-primary:not(.-textonly).dark:not(:disabled):not(.disabled):hover,wm-button .wm-button.-primary:not(.-textonly).dark:not(:disabled):not(.disabled):hover{color:#575195;background:#e6e6e6;border:2px solid #e6e6e6}:host .wm-button.-secondary:hover:not(:disabled):not(.disabled),wm-button .wm-button.-secondary:hover:not(:disabled):not(.disabled),:host .wm-button.-selector:hover:not(:disabled):not(.disabled),wm-button .wm-button.-selector:hover:not(:disabled):not(.disabled),:host .wm-button.-icononly:hover:not(:disabled):not(.disabled),wm-button .wm-button.-icononly:hover:not(:disabled):not(.disabled){background:#464177;color:#fff}:host .wm-button.-textonly,wm-button .wm-button.-textonly{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:inline-block;letter-spacing:0;text-transform:none;text-align:initial;font-size:0.875rem;border:none;background:transparent;padding-left:0;padding-right:0;height:auto;border-radius:0;line-height:1}:host .wm-button.-textonly+.-textonly,wm-button .wm-button.-textonly+.-textonly{margin-left:0.3125rem}:host .wm-button.-textonly:focus,wm-button .wm-button.-textonly:focus{outline:none}:host .wm-button.-textonly::-moz-focus-inner,wm-button .wm-button.-textonly::-moz-focus-inner{border:0;outline:none}:host .wm-button.-textonly.user-is-tabbing:focus:not(:disabled):not(.disabled) .button-text,wm-button .wm-button.-textonly.user-is-tabbing:focus:not(:disabled):not(.disabled) .button-text{background:-webkit-gradient(linear, left top, right top, color-stop(66%, #3862e9), color-stop(0, transparent)) repeat-x;background:linear-gradient(90deg, #3862e9 66%, transparent 0) repeat-x;background-size:6px 3px;background-position:0 1em;border-radius:0;line-height:normal}:host .wm-button.-textonly.user-is-tabbing:focus:not(:disabled):not(.disabled).dark .button-text,wm-button .wm-button.-textonly.user-is-tabbing:focus:not(:disabled):not(.disabled).dark .button-text{background:-webkit-gradient(linear, left top, right top, color-stop(66%, #fff), color-stop(0, transparent)) repeat-x;background:linear-gradient(90deg, #fff 66%, transparent 0) repeat-x;background-size:6px 3px;background-position:0 1em;border-radius:0;line-height:normal}:host .wm-button.-textonly.small,wm-button .wm-button.-textonly.small{font-size:0.625rem}:host .wm-button.-textonly:hover:not(:disabled):not(.disabled):not(.-permanentlydelete),wm-button .wm-button.-textonly:hover:not(:disabled):not(.disabled):not(.-permanentlydelete){text-decoration:underline}:host .wm-button.-textonly.-permanentlydelete,wm-button .wm-button.-textonly.-permanentlydelete{color:#c0392b}:host .wm-button.-textonly.-permanentlydelete:hover:not(:disabled):not(.disabled):not(.dark),wm-button .wm-button.-textonly.-permanentlydelete:hover:not(:disabled):not(.disabled):not(.dark){text-decoration:underline;color:#c0392b !important}:host .wm-button.-textonly.dark,wm-button .wm-button.-textonly.dark{color:#fff}:host .wm-button.-textonly.dark:hover:not(:disabled):not(.disabled),wm-button .wm-button.-textonly.dark:hover:not(:disabled):not(.disabled){text-decoration:underline;color:#fff !important}:host .wm-button.-icononly,wm-button .wm-button.-icononly,:host .wm-button.-navigational,wm-button .wm-button.-navigational{-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;border-radius:50%;font-size:1rem;padding:0;height:auto;line-height:1;min-width:2.75rem;min-height:2.75rem;text-align:center;letter-spacing:normal}:host .wm-button.-icononly:not(:focus),wm-button .wm-button.-icononly:not(:focus),:host .wm-button.-navigational:not(:focus),wm-button .wm-button.-navigational:not(:focus){-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}@media screen and (min-width: 48rem){:host .wm-button.-icononly,wm-button .wm-button.-icononly,:host .wm-button.-navigational,wm-button .wm-button.-navigational{min-width:2.5rem;min-height:2.5rem}}:host .wm-button.-icononly,wm-button .wm-button.-icononly{border-width:1px !important}:host .wm-button.-icononly:before,wm-button .wm-button.-icononly:before{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:host .wm-button.-navigational,wm-button .wm-button.-navigational{border:none !important;background-color:transparent}:host .wm-button.-navigational:not(.dark):not(:disabled):not(.disabled),wm-button .wm-button.-navigational:not(.dark):not(:disabled):not(.disabled){color:#575195}:host .wm-button.-navigational:not(.dark):not(:disabled):not(.disabled):hover,wm-button .wm-button.-navigational:not(.dark):not(:disabled):not(.disabled):hover,:host .wm-button.-navigational:not(.dark):not(:disabled):not(.disabled).selected,wm-button .wm-button.-navigational:not(.dark):not(:disabled):not(.disabled).selected{background-color:#d7d6d9}:host .wm-button.-navigational:before,wm-button .wm-button.-navigational:before{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:host .wm-button.-permanentlydelete:not(.-textonly),wm-button .wm-button.-permanentlydelete:not(.-textonly){background:#c0392b;border-color:#c0392b;color:#fff}:host .wm-button.-permanentlydelete:not(.-textonly):hover:not(:disabled):not(.disabled):not(.dark),wm-button .wm-button.-permanentlydelete:not(.-textonly):hover:not(:disabled):not(.disabled):not(.dark){background:#9a2e22;border-color:#9a2e22}:host .wm-button.-pairnegative,wm-button .wm-button.-pairnegative{background:#cc4c3e;border-color:#cc4c3e;color:#fff}:host .wm-button.-pairnegative:hover:not(:disabled):not(.disabled),wm-button .wm-button.-pairnegative:hover:not(:disabled):not(.disabled){background:#a33d32;border-color:#a33d32}:host .wm-button.-pairpositive,wm-button .wm-button.-pairpositive{background:#15868d;border-color:#15868d;color:#fff}:host .wm-button.-pairpositive:hover:not(:disabled):not(.disabled),wm-button .wm-button.-pairpositive:hover:not(:disabled):not(.disabled){background:#116b71;border-color:#116b71}:host .wm-button.-selector,wm-button .wm-button.-selector,:host .wm-button.-selector-primary,wm-button .wm-button.-selector-primary{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;display:block;background:transparent;border:2px solid #575195;border-radius:3px;height:2.75rem;min-width:11.4375rem;padding:0 1.875rem 0 0.9375rem;line-height:normal;font-family:inherit;color:#575195;font-weight:700;font-size:0.75rem;text-transform:uppercase;letter-spacing:0.01875rem;text-align:left}@media screen and (min-width: 48rem){:host .wm-button.-selector,wm-button .wm-button.-selector,:host .wm-button.-selector-primary,wm-button .wm-button.-selector-primary{height:2.5rem}}:host .wm-button.-selector:before,wm-button .wm-button.-selector:before,:host .wm-button.-selector-primary:before,wm-button .wm-button.-selector-primary:before{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\\f140";position:absolute;right:0.5625rem;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:0.875rem;font-weight:700;pointer-events:none}:host .wm-button.-selector:active,wm-button .wm-button.-selector:active,:host .wm-button.-selector-primary:active,wm-button .wm-button.-selector-primary:active{-ms-transform:scale(1, 1) !important;-webkit-transform:scale(1, 1) !important;transform:scale(1, 1) !important}:host .wm-button.-selector::-moz-focus-inner,wm-button .wm-button.-selector::-moz-focus-inner,:host .wm-button.-selector-primary::-moz-focus-inner,wm-button .wm-button.-selector-primary::-moz-focus-inner{border:0}:host .wm-button.-selector .overflowcontrol,wm-button .wm-button.-selector .overflowcontrol,:host .wm-button.-selector-primary .overflowcontrol,wm-button .wm-button.-selector-primary .overflowcontrol{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:visible}:host .wm-button.-selector.dark:not(:disabled):not(.disabled):hover,wm-button .wm-button.-selector.dark:not(:disabled):not(.disabled):hover,:host .wm-button.-selector-primary.dark:not(:disabled):not(.disabled):hover,wm-button .wm-button.-selector-primary.dark:not(:disabled):not(.disabled):hover{color:#575195;background:#e6e6e6;border:2px solid #e6e6e6}:host .wm-button.-selector-primary,wm-button .wm-button.-selector-primary{background:#575195;color:#fff}:host .wm-button.-selector-primary:hover:not(:disabled):not(.disabled),wm-button .wm-button.-selector-primary:hover:not(:disabled):not(.disabled){background:#464177}:host .wm-button.-selector-primary.dark:not(:disabled):not(.disabled),wm-button .wm-button.-selector-primary.dark:not(:disabled):not(.disabled){color:#575195;background:#fff;border:2px solid #fff}:host .wm-button:disabled,wm-button .wm-button:disabled,:host .wm-button.disabled,wm-button .wm-button.disabled{background:inherit;border-color:#737373;color:#737373;cursor:default;pointer-events:none}:host .wm-button:disabled.-primary,wm-button .wm-button:disabled.-primary,:host .wm-button:disabled.-permanentlydelete,wm-button .wm-button:disabled.-permanentlydelete,:host .wm-button:disabled.-pairnegative,wm-button .wm-button:disabled.-pairnegative,:host .wm-button:disabled.-pairpositive,wm-button .wm-button:disabled.-pairpositive,:host .wm-button.disabled.-primary,wm-button .wm-button.disabled.-primary,:host .wm-button.disabled.-permanentlydelete,wm-button .wm-button.disabled.-permanentlydelete,:host .wm-button.disabled.-pairnegative,wm-button .wm-button.disabled.-pairnegative,:host .wm-button.disabled.-pairpositive,wm-button .wm-button.disabled.-pairpositive{background:#737373;color:#fff;border-color:#737373}:host .wm-button:disabled.-secondary,wm-button .wm-button:disabled.-secondary,:host .wm-button.disabled.-secondary,wm-button .wm-button.disabled.-secondary{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}:host .wm-button:disabled.-selector,wm-button .wm-button:disabled.-selector,:host .wm-button.disabled.-selector,wm-button .wm-button.disabled.-selector{color:#737373}:host .wm-button:disabled.-selector-primary,wm-button .wm-button:disabled.-selector-primary,:host .wm-button.disabled.-selector-primary,wm-button .wm-button.disabled.-selector-primary{background:#737373;color:#fff;border-color:#737373}:host .wm-button:disabled.-textonly,wm-button .wm-button:disabled.-textonly,:host .wm-button.disabled.-textonly,wm-button .wm-button.disabled.-textonly{color:#6b6b6b;background:transparent}:host .wm-button:disabled.dark.-secondary:not(.-permanentlydelete),wm-button .wm-button:disabled.dark.-secondary:not(.-permanentlydelete),:host .wm-button:disabled.dark.-selector,wm-button .wm-button:disabled.dark.-selector,:host .wm-button:disabled.dark.-textonly,wm-button .wm-button:disabled.dark.-textonly,:host .wm-button:disabled.dark.-navigational,wm-button .wm-button:disabled.dark.-navigational,:host .wm-button:disabled.dark.-icononly,wm-button .wm-button:disabled.dark.-icononly,:host .wm-button.disabled.dark.-secondary:not(.-permanentlydelete),wm-button .wm-button.disabled.dark.-secondary:not(.-permanentlydelete),:host .wm-button.disabled.dark.-selector,wm-button .wm-button.disabled.dark.-selector,:host .wm-button.disabled.dark.-textonly,wm-button .wm-button.disabled.dark.-textonly,:host .wm-button.disabled.dark.-navigational,wm-button .wm-button.disabled.dark.-navigational,:host .wm-button.disabled.dark.-icononly,wm-button .wm-button.disabled.dark.-icononly{color:#b5b5b5;border-color:#b5b5b5}:host .wm-button:disabled.dark.-primary,wm-button .wm-button:disabled.dark.-primary,:host .wm-button:disabled.dark.-selector-primary,wm-button .wm-button:disabled.dark.-selector-primary,:host .wm-button:disabled.dark.-permanentlydelete:not(.-textonly),wm-button .wm-button:disabled.dark.-permanentlydelete:not(.-textonly),:host .wm-button.disabled.dark.-primary,wm-button .wm-button.disabled.dark.-primary,:host .wm-button.disabled.dark.-selector-primary,wm-button .wm-button.disabled.dark.-selector-primary,:host .wm-button.disabled.dark.-permanentlydelete:not(.-textonly),wm-button .wm-button.disabled.dark.-permanentlydelete:not(.-textonly){background:#a6a6a6;border-color:#a6a6a6;color:#353b48}:host a.wm-button,wm-button a.wm-button,:host label.wm-button,wm-button label.wm-button{height:auto;padding-top:0.75rem;padding-bottom:0.75rem}:host([disabled]),:host(.button-disabled){pointer-events:none}:host([disabled=false]){pointer-events:initial}:host,wm-button{display:inline-block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;position:relative;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}:host .sr-only,wm-button .sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}';const d=class{constructor(o){t(this,o);this.btnPos={old:{},new:{}};this.id=a();this.ariaPopup=false;this.disabled=false;this.buttonType=null;this.buttonStyle=null;this.icon=undefined;this.iconSize=undefined;this.iconRotate=undefined;this.iconFlip=undefined;this.tooltip=undefined;this.labelForIdenticalButtons=undefined;this.tooltipPosition="bottom-right";this.permanentlyDelete=false;this.textWrap=true;this.customBackground=undefined;this.tooltipVisible=false;this.isTabbing=false}get isDisabled(){return s(this.disabled)}get tempButtonType(){return this.buttonType||this.buttonStyle||"secondary"}get isTruncated(){return!!this.buttonEl&&this.tempButtonType==="textonly"&&this.buttonEl.offsetWidth<this.buttonEl.scrollWidth}get hasTooltip(){return this.tempButtonType==="icononly"||this.tempButtonType==="navigational"||this.isTruncated}get tooltipEl(){return document.getElementById("wm-tooltip")}get buttonClasses(){let t="wm-button";t+=this.permanentlyDelete?" -permanentlydelete":"";t+=this.tempButtonType?" -"+this.tempButtonType:" -secondary";t+=this.textWrap?"":" nowrap";t+=this.isTabbing?" user-is-tabbing":"";t+=this.isTruncated?" -truncated":"";t+=this.customBackground==="dark"?" dark":"";return t}get iconStyles(){let t="";t+=this.iconRotate?`rotate(${this.iconRotate}deg)`:"";t+=this.iconFlip==="horizontal"?`scaleX(-1)`:"";t+=this.iconFlip==="vertical"?`scaleY(-1)`:"";return Object.assign(Object.assign({},this.iconSize&&{fontSize:this.iconSize}),(this.iconRotate||this.iconFlip)&&{transform:t})}toggleTabbingOn(){this.isTabbing=true}toggleTabbingOff(){this.isTabbing=false}handleScroll(){if(this.tooltipVisible){this.hideTooltip()}}validateType(t){const o=["primary","secondary","textonly","icononly","navigational","selector","selector-primary","pairpositive","pairnegative"].includes(t);if(!o){this.buttonType="secondary"}this.validateIcon()}validateDeprecatedType(t){const o=["primary","secondary","textonly","icononly","navigational","selector"].includes(t);if(!o){this.buttonStyle="secondary"}this.validateIcon()}updateIcon(){this.icon=i(this.icon)}validateIcon(){switch(this.tempButtonType){case"icononly":case"navigational":if(!this.icon){console.error("wm-button should have a valid 'icon' property when button-type is set to 'icononly' or 'navigational'.")}if(!this.tooltip){console.error("wm-button should have a valid 'tooltip' property when button-type is set to 'icononly' or 'navigational'.")}break;case"pairpositive":this.icon="f12c";break;case"pairnegative":this.icon="f739";break}}handleKeydown(t){switch(t.key){case"Enter":t.preventDefault();if(!this.isDisabled){this.el.click()}break}}componentWillLoad(){if(this.buttonStyle){console.warn("wm-button: button-style has been deprecated as of v3.1.0. Please use button-type instead.")}this.validateType(this.tempButtonType);if(this.icon){this.icon=this.icon=i(this.icon)}}componentDidLoad(){if(document.body.classList.contains("wmcl-user-is-tabbing")){this.toggleTabbingOn()}this.ariaPopup=!!this.el.getAttribute("aria-haspopup");this.btnPos.new=this.buttonEl.getBoundingClientRect()}showTooltip(){if(this.hasTooltip){let t="";if(this.isTruncated&&this.el.textContent){t=this.el.textContent}else if(this.tooltip){t=this.tooltip}this.tooltipEl.textContent=t;const o=t.match(/^[^\s]+$/);if(o){this.tooltipEl.classList.add("single-word");this.tooltipEl.style.setProperty("--wmTooltipMaxWidth","none")}else{this.tooltipEl.classList.remove("single-word");this.tooltipEl.style.removeProperty("--wmTooltipMaxWidth")}const n=r(this.tooltipPosition,this.buttonEl,this.tooltipEl);this.btnPos.old={};const e=this.tooltipEl.getBoundingClientRect();this.tooltipEl.style.transitionDelay="500ms";this.tooltipEl.style.opacity="1";setTimeout((()=>{this.tooltipVisible=true;this.positionTooltip(n,e)}),50)}}positionTooltip(t,o){if(this.tooltipVisible){window.requestAnimationFrame((()=>this.positionTooltip(t,o)))}this.btnPos.new=this.buttonEl.getBoundingClientRect();if(this.btnPos.new.top!=this.btnPos.old.top||this.btnPos.new.left!=this.btnPos.old.left){const n=(this.btnPos.new.height-o.height)/2;const e=(this.btnPos.new.width-o.width)/2;let i=this.btnPos.new.top+n;let a=this.btnPos.new.left+e;if(t.includes("top")){i=this.btnPos.new.top-o.height-8}if(t.includes("bottom")){i=this.btnPos.new.bottom+8}if(t.includes("left")){a=this.btnPos.new.left-o.width-8}if(t.includes("right")){a=this.btnPos.new.right+8}a=Math.max(a,24);this.tooltipEl.style.setProperty("--wmTooltipTop",i+"px");this.tooltipEl.style.setProperty("--wmTooltipLeft",a+"px");this.btnPos.old=this.btnPos.new}}hideTooltip(){if(this.hasTooltip){this.tooltipEl.style.transitionDelay="0s";this.tooltipEl.style.opacity="0";this.tooltipVisible=false}}showTooltipForKeyboardUsers(){if(this.isTabbing){this.showTooltip()}}getAriaLabel(){if(this.tempButtonType==="icononly"||this.tempButtonType==="navigational"){return this.labelForIdenticalButtons||this.tooltip}if(this.labelForIdenticalButtons){return this.labelForIdenticalButtons}}render(){return o(n,{class:this.isDisabled?"button-disabled":""},o("button",{id:this.id,class:`${this.buttonClasses}`,disabled:this.isDisabled,ref:t=>this.buttonEl=t,"aria-label":this.getAriaLabel(),"aria-hasPopup":this.ariaPopup?"menu":null,onMouseEnter:()=>this.showTooltip(),onMouseLeave:()=>this.hideTooltip(),onFocus:()=>this.showTooltipForKeyboardUsers(),onBlur:()=>this.hideTooltip(),onClick:()=>this.hideTooltip()},this.icon&&o("span",{class:"mdi",style:this.iconStyles},String.fromCodePoint(parseInt(`0x${this.icon}`))),o("span",{class:"button-text"},o("slot",null))))}static get delegatesFocus(){return true}get el(){return e(this)}static get watchers(){return{buttonType:["validateType"],buttonStyle:["validateDeprecatedType"],icon:["updateIcon"]}}};d.style=b;export{d as wm_button};
2
- //# sourceMappingURL=p-384c4981.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["wmButtonCss","Button","this","btnPos","old","new","id","generateId","ariaPopup","isDisabled","toBool","disabled","tempButtonType","buttonType","buttonStyle","isTruncated","buttonEl","offsetWidth","scrollWidth","hasTooltip","tooltipEl","document","getElementById","buttonClasses","classes","permanentlyDelete","textWrap","isTabbing","customBackground","iconStyles","transformStyle","iconRotate","iconFlip","Object","assign","iconSize","fontSize","transform","toggleTabbingOn","toggleTabbingOff","handleScroll","tooltipVisible","hideTooltip","validateType","newValue","valid","includes","validateIcon","validateDeprecatedType","updateIcon","icon","getIconCodeFromName","console","error","tooltip","handleKeydown","ev","key","preventDefault","el","click","componentWillLoad","warn","componentDidLoad","body","classList","contains","getAttribute","getBoundingClientRect","showTooltip","tooltipText","textContent","hasNoWhitespace","match","add","style","setProperty","remove","removeProperty","adjustedTooltipPlacement","adjustTooltipPlacement","tooltipPosition","tooltipRect","transitionDelay","opacity","setTimeout","positionTooltip","tPos","window","requestAnimationFrame","top","left","vDiff","height","hDiff","width","vPos","hPos","bottom","right","Math","max","showTooltipForKeyboardUsers","getAriaLabel","labelForIdenticalButtons","render","h","Host","class","ref","onMouseEnter","onMouseLeave","onFocus","onBlur","onClick","String","fromCodePoint","parseInt"],"sources":["./src/components/wm-button/wm-button.scss?tag=wm-button&encapsulation=shadow","./src/components/wm-button/wm-button.tsx"],"sourcesContent":[":host([disabled]),\n:host(.button-disabled) {\n pointer-events: none;\n}\n\n:host([disabled=\"false\"]) {\n // override disabled behavior from occuring when the string is \"false\", which would evaluate as truthy\n pointer-events: initial;\n}\n\n:host,\nwm-button {\n display: inline-block;\n width: fit-content;\n position: relative; // for tooltip\n @include box-shadow(none);\n\n .sr-only {\n @include srOnly;\n }\n\n @extend %wm-button;\n}\n","import { h, Component, Prop, Element, Listen, Watch, Host, State } from \"@stencil/core\";\nimport { getIconCodeFromName, TooltipPlacement, validButtonTypes } from \"../../global/interfaces\";\nimport { generateId, adjustTooltipPlacement, toBool } from \"../../global/functions\";\n\n@Component({\n tag: \"wm-button\",\n styleUrl: \"wm-button.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class Button {\n @Element() el!: HTMLWmButtonElement;\n private buttonEl!: HTMLButtonElement;\n\n // icon and tooltip have reflect set to true. Without reflect, the react wrappers don't expose the attribute\n // and the component throws errors when they are required (when buttonType is icononly or navigational)\n @Prop({ reflect: true }) disabled: boolean = false;\n get isDisabled(): boolean {\n // string \"false\" needs to be treated as bool False because react wrappers convert bool to string.\n return toBool(this.disabled);\n }\n @Prop({ mutable: true }) buttonType: validButtonTypes | null = null;\n @Prop({ mutable: true }) buttonStyle: validButtonTypes | null = null; // DEPRECATED in favor of button-type\n get tempButtonType(): validButtonTypes {\n // uses of this getter should be replaced with this.buttonType when buttonStyle is fully phased out\n // don't forget to reset this.buttonType's default value to secondary\n return this.buttonType || this.buttonStyle || \"secondary\";\n }\n @Prop({ reflect: true, mutable: true }) icon?: string;\n @Prop() iconSize?: string;\n @Prop() iconRotate?: number;\n @Prop() iconFlip?: \"horizontal\" | \"vertical\";\n @Prop({ reflect: true, mutable: true }) tooltip?: string;\n @Prop() labelForIdenticalButtons?: string;\n @Prop() tooltipPosition: TooltipPlacement = \"bottom-right\";\n @Prop() permanentlyDelete?: boolean = false;\n @Prop() textWrap: boolean = true;\n @Prop() customBackground?: string;\n @Prop({ mutable: true }) tooltipVisible = false; // this is not part of the documented API but we need to expose as prop in order to change it from the focus method defined in WillLoad()\n\n @State() isTabbing: boolean = false;\n\n private btnPos: any = { old: {}, new: {} }; // for tooltip position. old and new are DOMRect\n private id = generateId();\n private ariaPopup: boolean = false;\n\n get isTruncated(): boolean {\n return (\n !!this.buttonEl && this.tempButtonType === \"textonly\" && this.buttonEl.offsetWidth < this.buttonEl.scrollWidth\n );\n }\n\n get hasTooltip(): boolean {\n // tooltip is only rendered for icononly and navigational types, or if the button text is truncated\n return this.tempButtonType === \"icononly\" || this.tempButtonType === \"navigational\" || this.isTruncated;\n }\n\n get tooltipEl(): HTMLElement {\n return document.getElementById(\"wm-tooltip\")!;\n }\n\n get buttonClasses() {\n let classes = \"wm-button\";\n classes += this.permanentlyDelete ? \" -permanentlydelete\" : \"\";\n classes += this.tempButtonType ? \" -\" + this.tempButtonType : \" -secondary\";\n classes += this.textWrap ? \"\" : \" nowrap\";\n classes += this.isTabbing ? \" user-is-tabbing\" : \"\";\n classes += this.isTruncated ? \" -truncated\" : \"\";\n classes += this.customBackground === \"dark\" ? \" dark\" : \"\";\n return classes;\n }\n\n get iconStyles() {\n let transformStyle = \"\";\n transformStyle += this.iconRotate ? `rotate(${this.iconRotate}deg)` : \"\";\n transformStyle += this.iconFlip === \"horizontal\" ? `scaleX(-1)` : \"\";\n transformStyle += this.iconFlip === \"vertical\" ? `scaleY(-1)` : \"\";\n\n return {\n ...(this.iconSize && { fontSize: this.iconSize }),\n ...((this.iconRotate || this.iconFlip) && { transform: transformStyle }),\n };\n }\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n // we need to listen for scroll events during the capture phase because they do not bubble up\n // there can be layouts where the main content has 100vh and overflows\n // in these cases window will register no scroll events unless we catch on they way down\n @Listen(\"scroll\", { target: \"window\", capture: true })\n handleScroll() {\n if (this.tooltipVisible) {\n this.hideTooltip();\n }\n }\n\n @Watch(\"buttonType\")\n validateType(newValue: string) {\n const valid = [\n \"primary\",\n \"secondary\",\n \"textonly\",\n \"icononly\",\n \"navigational\",\n \"selector\",\n \"selector-primary\",\n \"pairpositive\",\n \"pairnegative\",\n ].includes(newValue);\n\n if (!valid) {\n this.buttonType = \"secondary\";\n }\n\n this.validateIcon();\n }\n\n // remove entire watcher after buttonStyle has been fully removed\n @Watch(\"buttonStyle\")\n validateDeprecatedType(newValue: string) {\n const valid = [\"primary\", \"secondary\", \"textonly\", \"icononly\", \"navigational\", \"selector\"].includes(newValue);\n\n if (!valid) {\n this.buttonStyle = \"secondary\";\n }\n\n this.validateIcon();\n }\n\n @Watch(\"icon\")\n updateIcon() {\n this.icon = getIconCodeFromName(this.icon!);\n }\n\n validateIcon() {\n switch (this.tempButtonType) {\n case \"icononly\":\n case \"navigational\":\n // if the style is icononly or navigational...\n // - an icon must be provided\n if (!this.icon) {\n console.error(\n \"wm-button should have a valid 'icon' property when button-type is set to 'icononly' or 'navigational'.\"\n );\n }\n // - if no tooltip text was passed and we couldn't generate one, throw an error\n if (!this.tooltip) {\n console.error(\n \"wm-button should have a valid 'tooltip' property when button-type is set to 'icononly' or 'navigational'.\"\n );\n }\n break;\n case \"pairpositive\":\n this.icon = \"f12c\";\n break;\n case \"pairnegative\":\n this.icon = \"f739\";\n break;\n }\n }\n\n @Listen(\"keydown\")\n handleKeydown(ev: KeyboardEvent) {\n switch (ev.key) {\n case \"Enter\":\n ev.preventDefault();\n if (!this.isDisabled) {\n this.el.click();\n }\n break;\n }\n }\n\n componentWillLoad() {\n if (this.buttonStyle) {\n console.warn(\"wm-button: button-style has been deprecated as of v3.1.0. Please use button-type instead.\");\n }\n\n this.validateType(this.tempButtonType);\n\n if (this.icon) {\n this.icon = this.icon = getIconCodeFromName(this.icon);\n }\n }\n\n componentDidLoad() {\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\n this.toggleTabbingOn();\n }\n\n this.ariaPopup = !!this.el.getAttribute(\"aria-haspopup\");\n\n this.btnPos.new = this.buttonEl.getBoundingClientRect();\n }\n\n showTooltip() {\n if (this.hasTooltip) {\n // set tooltip text\n let tooltipText = \"\";\n if (this.isTruncated && this.el.textContent) {\n // when truncated, tooltip text is the button's content\n tooltipText = this.el.textContent;\n } else if (this.tooltip) {\n // otherwise it is the tooltip property if present\n tooltipText = this.tooltip;\n }\n this.tooltipEl.textContent = tooltipText;\n\n // tooltip only has a maxWidth if it contains whitespace and can break\n const hasNoWhitespace = tooltipText.match(/^[^\\s]+$/);\n if (hasNoWhitespace) {\n this.tooltipEl.classList.add(\"single-word\");\n this.tooltipEl.style.setProperty(\"--wmTooltipMaxWidth\", \"none\");\n } else {\n this.tooltipEl.classList.remove(\"single-word\");\n this.tooltipEl.style.removeProperty(\"--wmTooltipMaxWidth\");\n }\n\n // adjust placement in case there is no space to place the tooltip where specified via prop\n // calculation outside of the function to keep it pure\n const adjustedTooltipPlacement = adjustTooltipPlacement(this.tooltipPosition, this.buttonEl, this.tooltipEl);\n\n this.btnPos.old = {};\n const tooltipRect = this.tooltipEl.getBoundingClientRect();\n this.tooltipEl.style.transitionDelay = \"500ms\";\n this.tooltipEl.style.opacity = \"1\";\n // This slight delay fixes an issue for keyboard users:\n // if they tab to a button out of screen bounds, the page scrolls\n // and hideTooltip() would be triggered before the tooltip would show\n setTimeout(() => {\n this.tooltipVisible = true;\n this.positionTooltip(adjustedTooltipPlacement, tooltipRect);\n }, 50);\n }\n }\n\n positionTooltip(tPos: string, tooltipRect: DOMRect) {\n if (this.tooltipVisible) {\n window.requestAnimationFrame(() => this.positionTooltip(tPos, tooltipRect));\n }\n this.btnPos.new = this.buttonEl.getBoundingClientRect();\n if (this.btnPos.new.top != this.btnPos.old.top || this.btnPos.new.left != this.btnPos.old.left) {\n // this is to figure out how to offset, given the size of the button and of the tooltip\n // to get the center positions, calculate the difference between the button width and the tooltip width\n const vDiff = (this.btnPos.new.height - tooltipRect.height) / 2;\n const hDiff = (this.btnPos.new.width - tooltipRect.width) / 2;\n // the naming convention defaults to center in the absence of a value\n // Values \"top\" and \"bottom\" imply horizontal centering; Values \"right\" and \"left\" imply vertical centering\n // therefore we first set to center first, then adjust accordingly\n let vPos = this.btnPos.new.top + vDiff;\n let hPos = this.btnPos.new.left + hDiff;\n\n if (tPos.includes(\"top\")) {\n vPos = this.btnPos.new.top - tooltipRect.height - 8;\n }\n if (tPos.includes(\"bottom\")) {\n vPos = this.btnPos.new.bottom + 8;\n }\n if (tPos.includes(\"left\")) {\n hPos = this.btnPos.new.left - tooltipRect.width - 8;\n }\n if (tPos.includes(\"right\")) {\n hPos = this.btnPos.new.right + 8;\n }\n\n // after all positioning has been calculated, if tooltip is off-screen or closer than 24px it is readjusted\n // this only occurs when the tooltip is overflowing to the left and is positioned top or bottom\n // (button placed too far left, or screen size under 268px)\n hPos = Math.max(hPos, 24);\n this.tooltipEl.style.setProperty(\"--wmTooltipTop\", vPos + \"px\");\n this.tooltipEl.style.setProperty(\"--wmTooltipLeft\", hPos + \"px\");\n // this.tooltipEl.style.top = vPos + \"px\";\n // this.tooltipEl.style.left = hPos + \"px\";\n // this.tooltipEl.style.top = (vPos / 16).toString() + \"rem\";\n // this.tooltipEl.style.left = (hPos / 16).toString() + \"rem\";\n\n this.btnPos.old = this.btnPos.new;\n }\n }\n\n hideTooltip() {\n if (this.hasTooltip) {\n this.tooltipEl.style.transitionDelay = \"0s\";\n this.tooltipEl.style.opacity = \"0\";\n this.tooltipVisible = false;\n }\n }\n\n showTooltipForKeyboardUsers() {\n if (this.isTabbing) {\n this.showTooltip();\n }\n }\n\n getAriaLabel() {\n if (this.tempButtonType === \"icononly\" || this.tempButtonType === \"navigational\") {\n return this.labelForIdenticalButtons || this.tooltip;\n }\n\n if (this.labelForIdenticalButtons) {\n return this.labelForIdenticalButtons;\n }\n }\n\n render() {\n return (\n <Host class={this.isDisabled ? \"button-disabled\" : \"\"}>\n <button\n id={this.id}\n class={`${this.buttonClasses}`}\n disabled={this.isDisabled}\n ref={(el) => (this.buttonEl = el as HTMLButtonElement)}\n aria-label={this.getAriaLabel()}\n aria-hasPopup={this.ariaPopup ? \"menu\" : null}\n onMouseEnter={() => this.showTooltip()}\n onMouseLeave={() => this.hideTooltip()}\n onFocus={() => this.showTooltipForKeyboardUsers()}\n onBlur={() => this.hideTooltip()}\n onClick={() => this.hideTooltip()}\n >\n {this.icon && (\n <span class=\"mdi\" style={this.iconStyles}>\n {String.fromCodePoint(parseInt(`0x${this.icon}`))}\n </span>\n )}\n <span class=\"button-text\">\n <slot />\n </span>\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"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"}