@watermarkinsights/ripple 3.25.0-2 → 3.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/{chartFunctions-9dce0ea3.js → chartFunctions-2f04ab6a.js} +591 -591
  3. package/dist/cjs/chartFunctions-2f04ab6a.js.map +1 -0
  4. package/dist/cjs/{functions-53aff314.js → functions-d2d99997.js} +478 -478
  5. package/dist/cjs/{functions-53aff314.js.map → functions-d2d99997.js.map} +1 -1
  6. package/dist/cjs/{global-c22b1249.js → global-d0584d18.js} +63 -63
  7. package/dist/cjs/global-d0584d18.js.map +1 -0
  8. package/dist/cjs/{http-service-494d81de.js → http-service-9e8c4dd5.js} +50 -50
  9. package/dist/cjs/http-service-9e8c4dd5.js.map +1 -0
  10. package/dist/cjs/{interfaces-a3338581.js → interfaces-30a74c1f.js} +30 -30
  11. package/dist/cjs/interfaces-30a74c1f.js.map +1 -0
  12. package/dist/cjs/intl-a1ccf587.js +140 -0
  13. package/dist/cjs/intl-a1ccf587.js.map +1 -0
  14. package/dist/cjs/loader.cjs.js +2 -2
  15. package/dist/cjs/priv-chart-popover.cjs.entry.js +91 -91
  16. package/dist/cjs/priv-chart-popover.cjs.entry.js.map +1 -1
  17. package/dist/cjs/priv-datepicker.cjs.entry.js +657 -657
  18. package/dist/cjs/priv-datepicker.cjs.entry.js.map +1 -1
  19. package/dist/cjs/priv-navigator-button.cjs.entry.js +19 -19
  20. package/dist/cjs/priv-navigator-button.cjs.entry.js.map +1 -1
  21. package/dist/cjs/priv-navigator-item.cjs.entry.js +23 -23
  22. package/dist/cjs/priv-navigator-item.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ripple.cjs.js +2 -2
  24. package/dist/cjs/wm-action-menu_2.cjs.entry.js +334 -334
  25. package/dist/cjs/wm-action-menu_2.cjs.entry.js.map +1 -1
  26. package/dist/cjs/wm-button.cjs.entry.js +260 -260
  27. package/dist/cjs/wm-button.cjs.entry.js.map +1 -1
  28. package/dist/cjs/wm-chart-slice.cjs.entry.js +18 -18
  29. package/dist/cjs/wm-chart-slice.cjs.entry.js.map +1 -1
  30. package/dist/cjs/wm-chart.cjs.entry.js +179 -179
  31. package/dist/cjs/wm-chart.cjs.entry.js.map +1 -1
  32. package/dist/cjs/wm-datepicker.cjs.entry.js +264 -264
  33. package/dist/cjs/wm-datepicker.cjs.entry.js.map +1 -1
  34. package/dist/cjs/wm-file-list.cjs.entry.js +35 -35
  35. package/dist/cjs/wm-file-list.cjs.entry.js.map +1 -1
  36. package/dist/cjs/wm-file.cjs.entry.js +201 -201
  37. package/dist/cjs/wm-file.cjs.entry.js.map +1 -1
  38. package/dist/cjs/wm-input.cjs.entry.js +124 -140
  39. package/dist/cjs/wm-input.cjs.entry.js.map +1 -1
  40. package/dist/cjs/wm-modal-footer.cjs.entry.js +33 -33
  41. package/dist/cjs/wm-modal-footer.cjs.entry.js.map +1 -1
  42. package/dist/cjs/wm-modal-header.cjs.entry.js +32 -32
  43. package/dist/cjs/wm-modal-header.cjs.entry.js.map +1 -1
  44. package/dist/cjs/wm-modal.cjs.entry.js +152 -152
  45. package/dist/cjs/wm-modal.cjs.entry.js.map +1 -1
  46. package/dist/cjs/wm-navigation_3.cjs.entry.js +225 -230
  47. package/dist/cjs/wm-navigation_3.cjs.entry.js.map +1 -1
  48. package/dist/cjs/wm-navigator.cjs.entry.js +264 -264
  49. package/dist/cjs/wm-navigator.cjs.entry.js.map +1 -1
  50. package/dist/cjs/wm-network-uploader.cjs.entry.js +465 -467
  51. package/dist/cjs/wm-network-uploader.cjs.entry.js.map +1 -1
  52. package/dist/cjs/wm-option_2.cjs.entry.js +769 -772
  53. package/dist/cjs/wm-option_2.cjs.entry.js.map +1 -1
  54. package/dist/cjs/wm-pagination.cjs.entry.js +179 -179
  55. package/dist/cjs/wm-pagination.cjs.entry.js.map +1 -1
  56. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +155 -155
  57. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js.map +1 -1
  58. package/dist/cjs/wm-search.cjs.entry.js +185 -192
  59. package/dist/cjs/wm-search.cjs.entry.js.map +1 -1
  60. package/dist/cjs/wm-snackbar.cjs.entry.js +155 -159
  61. package/dist/cjs/wm-snackbar.cjs.entry.js.map +1 -1
  62. package/dist/cjs/wm-tab-item_3.cjs.entry.js +264 -264
  63. package/dist/cjs/wm-tab-item_3.cjs.entry.js.map +1 -1
  64. package/dist/cjs/wm-tag-input-row.cjs.entry.js +14 -14
  65. package/dist/cjs/wm-tag-input-row.cjs.entry.js.map +1 -1
  66. package/dist/cjs/wm-tag-input.cjs.entry.js +912 -924
  67. package/dist/cjs/wm-tag-input.cjs.entry.js.map +1 -1
  68. package/dist/cjs/wm-timepicker.cjs.entry.js +386 -386
  69. package/dist/cjs/wm-timepicker.cjs.entry.js.map +1 -1
  70. package/dist/cjs/wm-toggletip.cjs.entry.js +130 -130
  71. package/dist/cjs/wm-toggletip.cjs.entry.js.map +1 -1
  72. package/dist/cjs/wm-uploader.cjs.entry.js +441 -510
  73. package/dist/cjs/wm-uploader.cjs.entry.js.map +1 -1
  74. package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
  75. package/dist/cjs/wm-wrapper.cjs.entry.js.map +1 -1
  76. package/dist/collection/components/charts/chartFunctions.js +557 -557
  77. package/dist/collection/components/charts/chartFunctions.js.map +1 -1
  78. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +268 -270
  79. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js.map +1 -1
  80. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +126 -126
  81. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js.map +1 -1
  82. package/dist/collection/components/charts/wm-chart/wm-chart.js +447 -447
  83. package/dist/collection/components/charts/wm-chart/wm-chart.js.map +1 -1
  84. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +208 -208
  85. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js.map +1 -1
  86. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +144 -144
  87. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js.map +1 -1
  88. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +122 -122
  89. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js.map +1 -1
  90. package/dist/collection/components/wm-action-menu/wm-action-menu.js +473 -473
  91. package/dist/collection/components/wm-action-menu/wm-action-menu.js.map +1 -1
  92. package/dist/collection/components/wm-button/wm-button.js +576 -576
  93. package/dist/collection/components/wm-button/wm-button.js.map +1 -1
  94. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +984 -984
  95. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js.map +1 -1
  96. package/dist/collection/components/wm-datepicker/wm-datepicker.css +4 -4
  97. package/dist/collection/components/wm-datepicker/wm-datepicker.js +492 -492
  98. package/dist/collection/components/wm-datepicker/wm-datepicker.js.map +1 -1
  99. package/dist/collection/components/wm-file/wm-file.js +334 -334
  100. package/dist/collection/components/wm-file/wm-file.js.map +1 -1
  101. package/dist/collection/components/wm-file-list/wm-file-list.js +153 -153
  102. package/dist/collection/components/wm-file-list/wm-file-list.js.map +1 -1
  103. package/dist/collection/components/wm-input/wm-input.css +4 -4
  104. package/dist/collection/components/wm-input/wm-input.js +428 -444
  105. package/dist/collection/components/wm-input/wm-input.js.map +1 -1
  106. package/dist/collection/components/wm-menuitem/wm-menuitem.js +455 -455
  107. package/dist/collection/components/wm-menuitem/wm-menuitem.js.map +1 -1
  108. package/dist/collection/components/wm-modal/wm-modal-footer.js +139 -139
  109. package/dist/collection/components/wm-modal/wm-modal-footer.js.map +1 -1
  110. package/dist/collection/components/wm-modal/wm-modal-header.js +83 -83
  111. package/dist/collection/components/wm-modal/wm-modal-header.js.map +1 -1
  112. package/dist/collection/components/wm-modal/wm-modal.js +463 -463
  113. package/dist/collection/components/wm-modal/wm-modal.js.map +1 -1
  114. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +177 -177
  115. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js.map +1 -1
  116. package/dist/collection/components/wm-navigation/wm-navigation-item.js +131 -131
  117. package/dist/collection/components/wm-navigation/wm-navigation-item.js.map +1 -1
  118. package/dist/collection/components/wm-navigation/wm-navigation.js +218 -223
  119. package/dist/collection/components/wm-navigation/wm-navigation.js.map +1 -1
  120. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +107 -107
  121. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js.map +1 -1
  122. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +124 -124
  123. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js.map +1 -1
  124. package/dist/collection/components/wm-navigator/wm-navigator.js +468 -468
  125. package/dist/collection/components/wm-navigator/wm-navigator.js.map +1 -1
  126. package/dist/collection/components/wm-option/wm-option.js +436 -436
  127. package/dist/collection/components/wm-option/wm-option.js.map +1 -1
  128. package/dist/collection/components/wm-pagination/wm-pagination.js +371 -371
  129. package/dist/collection/components/wm-pagination/wm-pagination.js.map +1 -1
  130. package/dist/collection/components/wm-search/wm-search.css +5 -3
  131. package/dist/collection/components/wm-search/wm-search.js +440 -447
  132. package/dist/collection/components/wm-search/wm-search.js.map +1 -1
  133. package/dist/collection/components/wm-select/wm-select.css +4 -4
  134. package/dist/collection/components/wm-select/wm-select.js +1055 -1058
  135. package/dist/collection/components/wm-select/wm-select.js.map +1 -1
  136. package/dist/collection/components/wm-snackbar/wm-snackbar.js +283 -287
  137. package/dist/collection/components/wm-snackbar/wm-snackbar.js.map +1 -1
  138. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +212 -212
  139. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js.map +1 -1
  140. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +328 -328
  141. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js.map +1 -1
  142. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +109 -109
  143. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js.map +1 -1
  144. package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js +123 -123
  145. package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js.map +1 -1
  146. package/dist/collection/components/wm-tag-input/wm-tag-input.css +4 -4
  147. package/dist/collection/components/wm-tag-input/wm-tag-input.js +1267 -1279
  148. package/dist/collection/components/wm-tag-input/wm-tag-input.js.map +1 -1
  149. package/dist/collection/components/wm-timepicker/wm-timepicker.css +4 -4
  150. package/dist/collection/components/wm-timepicker/wm-timepicker.js +606 -606
  151. package/dist/collection/components/wm-timepicker/wm-timepicker.js.map +1 -1
  152. package/dist/collection/components/wm-toggletip/wm-toggletip.js +254 -254
  153. package/dist/collection/components/wm-toggletip/wm-toggletip.js.map +1 -1
  154. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +773 -775
  155. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js.map +1 -1
  156. package/dist/collection/components/wm-uploader/wm-uploader.js +965 -1034
  157. package/dist/collection/components/wm-uploader/wm-uploader.js.map +1 -1
  158. package/dist/collection/components/wm-wrapper/wm-wrapper.js +29 -29
  159. package/dist/collection/components/wm-wrapper/wm-wrapper.js.map +1 -1
  160. package/dist/collection/dev/scripts.js +20 -20
  161. package/dist/collection/global/__mocks__/functions.js +7 -7
  162. package/dist/collection/global/__mocks__/functions.js.map +1 -1
  163. package/dist/collection/global/functions.js +521 -521
  164. package/dist/collection/global/functions.js.map +1 -1
  165. package/dist/collection/global/global.js +70 -70
  166. package/dist/collection/global/global.js.map +1 -1
  167. package/dist/collection/global/interfaces.js +50 -50
  168. package/dist/collection/global/interfaces.js.map +1 -1
  169. package/dist/collection/global/intl.js +133 -7
  170. package/dist/collection/global/intl.js.map +1 -1
  171. package/dist/collection/global/services/__mocks__/http-service.js +131 -131
  172. package/dist/collection/global/services/__mocks__/http-service.js.map +1 -1
  173. package/dist/collection/global/services/http-service.js +51 -51
  174. package/dist/collection/global/services/http-service.js.map +1 -1
  175. package/dist/collection/lang/lang.js +6 -6
  176. package/dist/collection/lang/lang.js.map +1 -1
  177. package/dist/collection/lang/missing.js +43 -43
  178. package/dist/collection/lang/piglatin.js +93 -93
  179. package/dist/esm/{chartFunctions-1df8043a.js → chartFunctions-a72f5835.js} +591 -591
  180. package/dist/esm/chartFunctions-a72f5835.js.map +1 -0
  181. package/dist/esm/{functions-bb1309d0.js → functions-dc9964aa.js} +478 -478
  182. package/dist/esm/{functions-bb1309d0.js.map → functions-dc9964aa.js.map} +1 -1
  183. package/dist/esm/{global-2c5c2727.js → global-3d0ef32b.js} +63 -63
  184. package/dist/esm/global-3d0ef32b.js.map +1 -0
  185. package/dist/esm/{http-service-3dc3b3e7.js → http-service-5d037e16.js} +50 -50
  186. package/dist/esm/http-service-5d037e16.js.map +1 -0
  187. package/dist/esm/{interfaces-2b97fab2.js → interfaces-61c6305b.js} +30 -30
  188. package/dist/esm/interfaces-61c6305b.js.map +1 -0
  189. package/dist/esm/intl-4d4826dd.js +137 -0
  190. package/dist/esm/intl-4d4826dd.js.map +1 -0
  191. package/dist/esm/loader.js +2 -2
  192. package/dist/esm/polyfills/core-js.js +0 -0
  193. package/dist/esm/polyfills/dom.js +0 -0
  194. package/dist/esm/polyfills/es5-html-element.js +0 -0
  195. package/dist/esm/polyfills/index.js +0 -0
  196. package/dist/esm/polyfills/system.js +0 -0
  197. package/dist/esm/priv-chart-popover.entry.js +91 -91
  198. package/dist/esm/priv-chart-popover.entry.js.map +1 -1
  199. package/dist/esm/priv-datepicker.entry.js +657 -657
  200. package/dist/esm/priv-datepicker.entry.js.map +1 -1
  201. package/dist/esm/priv-navigator-button.entry.js +19 -19
  202. package/dist/esm/priv-navigator-button.entry.js.map +1 -1
  203. package/dist/esm/priv-navigator-item.entry.js +23 -23
  204. package/dist/esm/priv-navigator-item.entry.js.map +1 -1
  205. package/dist/esm/ripple.js +2 -2
  206. package/dist/esm/wm-action-menu_2.entry.js +334 -334
  207. package/dist/esm/wm-action-menu_2.entry.js.map +1 -1
  208. package/dist/esm/wm-button.entry.js +260 -260
  209. package/dist/esm/wm-button.entry.js.map +1 -1
  210. package/dist/esm/wm-chart-slice.entry.js +18 -18
  211. package/dist/esm/wm-chart-slice.entry.js.map +1 -1
  212. package/dist/esm/wm-chart.entry.js +179 -179
  213. package/dist/esm/wm-chart.entry.js.map +1 -1
  214. package/dist/esm/wm-datepicker.entry.js +264 -264
  215. package/dist/esm/wm-datepicker.entry.js.map +1 -1
  216. package/dist/esm/wm-file-list.entry.js +35 -35
  217. package/dist/esm/wm-file-list.entry.js.map +1 -1
  218. package/dist/esm/wm-file.entry.js +201 -201
  219. package/dist/esm/wm-file.entry.js.map +1 -1
  220. package/dist/esm/wm-input.entry.js +124 -140
  221. package/dist/esm/wm-input.entry.js.map +1 -1
  222. package/dist/esm/wm-modal-footer.entry.js +33 -33
  223. package/dist/esm/wm-modal-footer.entry.js.map +1 -1
  224. package/dist/esm/wm-modal-header.entry.js +32 -32
  225. package/dist/esm/wm-modal-header.entry.js.map +1 -1
  226. package/dist/esm/wm-modal.entry.js +152 -152
  227. package/dist/esm/wm-modal.entry.js.map +1 -1
  228. package/dist/esm/wm-navigation_3.entry.js +225 -230
  229. package/dist/esm/wm-navigation_3.entry.js.map +1 -1
  230. package/dist/esm/wm-navigator.entry.js +264 -264
  231. package/dist/esm/wm-navigator.entry.js.map +1 -1
  232. package/dist/esm/wm-network-uploader.entry.js +465 -467
  233. package/dist/esm/wm-network-uploader.entry.js.map +1 -1
  234. package/dist/esm/wm-option_2.entry.js +769 -772
  235. package/dist/esm/wm-option_2.entry.js.map +1 -1
  236. package/dist/esm/wm-pagination.entry.js +179 -179
  237. package/dist/esm/wm-pagination.entry.js.map +1 -1
  238. package/dist/esm/wm-progress-indicator_3.entry.js +155 -155
  239. package/dist/esm/wm-progress-indicator_3.entry.js.map +1 -1
  240. package/dist/esm/wm-search.entry.js +185 -192
  241. package/dist/esm/wm-search.entry.js.map +1 -1
  242. package/dist/esm/wm-snackbar.entry.js +155 -159
  243. package/dist/esm/wm-snackbar.entry.js.map +1 -1
  244. package/dist/esm/wm-tab-item_3.entry.js +264 -264
  245. package/dist/esm/wm-tab-item_3.entry.js.map +1 -1
  246. package/dist/esm/wm-tag-input-row.entry.js +14 -14
  247. package/dist/esm/wm-tag-input-row.entry.js.map +1 -1
  248. package/dist/esm/wm-tag-input.entry.js +912 -924
  249. package/dist/esm/wm-tag-input.entry.js.map +1 -1
  250. package/dist/esm/wm-timepicker.entry.js +386 -386
  251. package/dist/esm/wm-timepicker.entry.js.map +1 -1
  252. package/dist/esm/wm-toggletip.entry.js +130 -130
  253. package/dist/esm/wm-toggletip.entry.js.map +1 -1
  254. package/dist/esm/wm-uploader.entry.js +441 -510
  255. package/dist/esm/wm-uploader.entry.js.map +1 -1
  256. package/dist/esm/wm-wrapper.entry.js +12 -12
  257. package/dist/esm/wm-wrapper.entry.js.map +1 -1
  258. package/dist/esm-es5/{chartFunctions-1df8043a.js → chartFunctions-a72f5835.js} +2 -2
  259. package/dist/esm-es5/chartFunctions-a72f5835.js.map +1 -0
  260. package/dist/esm-es5/{functions-bb1309d0.js → functions-dc9964aa.js} +1 -1
  261. package/dist/esm-es5/{functions-bb1309d0.js.map → functions-dc9964aa.js.map} +1 -1
  262. package/dist/esm-es5/global-3d0ef32b.js +2 -0
  263. package/dist/esm-es5/global-3d0ef32b.js.map +1 -0
  264. package/dist/esm-es5/{http-service-3dc3b3e7.js → http-service-5d037e16.js} +1 -1
  265. package/dist/esm-es5/http-service-5d037e16.js.map +1 -0
  266. package/dist/esm-es5/{interfaces-2b97fab2.js → interfaces-61c6305b.js} +1 -1
  267. package/dist/esm-es5/interfaces-61c6305b.js.map +1 -0
  268. package/dist/esm-es5/intl-4d4826dd.js +2 -0
  269. package/dist/esm-es5/intl-4d4826dd.js.map +1 -0
  270. package/dist/esm-es5/loader.js +1 -1
  271. package/dist/esm-es5/loader.js.map +1 -1
  272. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  273. package/dist/esm-es5/priv-chart-popover.entry.js.map +1 -1
  274. package/dist/esm-es5/priv-datepicker.entry.js +1 -1
  275. package/dist/esm-es5/priv-datepicker.entry.js.map +1 -1
  276. package/dist/esm-es5/priv-navigator-button.entry.js.map +1 -1
  277. package/dist/esm-es5/priv-navigator-item.entry.js.map +1 -1
  278. package/dist/esm-es5/ripple.js +1 -1
  279. package/dist/esm-es5/ripple.js.map +1 -1
  280. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  281. package/dist/esm-es5/wm-action-menu_2.entry.js.map +1 -1
  282. package/dist/esm-es5/wm-button.entry.js +1 -1
  283. package/dist/esm-es5/wm-button.entry.js.map +1 -1
  284. package/dist/esm-es5/wm-chart-slice.entry.js.map +1 -1
  285. package/dist/esm-es5/wm-chart.entry.js +1 -1
  286. package/dist/esm-es5/wm-chart.entry.js.map +1 -1
  287. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  288. package/dist/esm-es5/wm-datepicker.entry.js.map +1 -1
  289. package/dist/esm-es5/wm-file-list.entry.js.map +1 -1
  290. package/dist/esm-es5/wm-file.entry.js +1 -1
  291. package/dist/esm-es5/wm-file.entry.js.map +1 -1
  292. package/dist/esm-es5/wm-input.entry.js +1 -1
  293. package/dist/esm-es5/wm-input.entry.js.map +1 -1
  294. package/dist/esm-es5/wm-modal-footer.entry.js.map +1 -1
  295. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  296. package/dist/esm-es5/wm-modal-header.entry.js.map +1 -1
  297. package/dist/esm-es5/wm-modal.entry.js +1 -1
  298. package/dist/esm-es5/wm-modal.entry.js.map +1 -1
  299. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  300. package/dist/esm-es5/wm-navigation_3.entry.js.map +1 -1
  301. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  302. package/dist/esm-es5/wm-navigator.entry.js.map +1 -1
  303. package/dist/esm-es5/wm-network-uploader.entry.js +1 -1
  304. package/dist/esm-es5/wm-network-uploader.entry.js.map +1 -1
  305. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  306. package/dist/esm-es5/wm-option_2.entry.js.map +1 -1
  307. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  308. package/dist/esm-es5/wm-pagination.entry.js.map +1 -1
  309. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  310. package/dist/esm-es5/wm-progress-indicator_3.entry.js.map +1 -1
  311. package/dist/esm-es5/wm-search.entry.js +1 -1
  312. package/dist/esm-es5/wm-search.entry.js.map +1 -1
  313. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  314. package/dist/esm-es5/wm-snackbar.entry.js.map +1 -1
  315. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  316. package/dist/esm-es5/wm-tab-item_3.entry.js.map +1 -1
  317. package/dist/esm-es5/wm-tag-input-row.entry.js.map +1 -1
  318. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  319. package/dist/esm-es5/wm-tag-input.entry.js.map +1 -1
  320. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  321. package/dist/esm-es5/wm-timepicker.entry.js.map +1 -1
  322. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  323. package/dist/esm-es5/wm-toggletip.entry.js.map +1 -1
  324. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  325. package/dist/esm-es5/wm-uploader.entry.js.map +1 -1
  326. package/dist/esm-es5/wm-wrapper.entry.js.map +1 -1
  327. package/dist/ripple/{p-3f6c7e6c.entry.js → p-002d067e.entry.js} +2 -2
  328. package/dist/ripple/p-002d067e.entry.js.map +1 -0
  329. package/dist/ripple/p-02a1000a.entry.js +2 -0
  330. package/dist/ripple/p-02a1000a.entry.js.map +1 -0
  331. package/dist/ripple/{p-21bb563a.system.entry.js → p-04ae66fd.system.entry.js} +2 -2
  332. package/dist/ripple/p-04ae66fd.system.entry.js.map +1 -0
  333. package/dist/ripple/{p-c38f6103.system.js → p-0826dc64.system.js} +2 -2
  334. package/dist/ripple/{p-c38f6103.system.js.map → p-0826dc64.system.js.map} +1 -1
  335. package/dist/ripple/{p-f5df5903.system.js → p-08b7ec08.system.js} +1 -1
  336. package/dist/ripple/p-08b7ec08.system.js.map +1 -0
  337. package/dist/ripple/{p-d5b0809e.entry.js → p-0ad3a708.entry.js} +2 -2
  338. package/dist/ripple/p-0ad3a708.entry.js.map +1 -0
  339. package/dist/ripple/p-0cd13c7d.system.entry.js +2 -0
  340. package/dist/ripple/p-0cd13c7d.system.entry.js.map +1 -0
  341. package/dist/ripple/p-0d7bccf7.entry.js.map +1 -1
  342. package/dist/ripple/p-0eb7b1b7.system.entry.js +2 -0
  343. package/dist/ripple/p-0eb7b1b7.system.entry.js.map +1 -0
  344. package/dist/ripple/{p-70768add.entry.js → p-11124a23.entry.js} +2 -2
  345. package/dist/ripple/p-11124a23.entry.js.map +1 -0
  346. package/dist/ripple/p-1808b90a.entry.js +2 -0
  347. package/dist/ripple/p-1808b90a.entry.js.map +1 -0
  348. package/dist/ripple/p-1fd20e05.system.entry.js +2 -0
  349. package/dist/ripple/p-1fd20e05.system.entry.js.map +1 -0
  350. package/dist/ripple/{p-f36b1c58.system.entry.js → p-23fa1ff6.system.entry.js} +2 -2
  351. package/dist/ripple/p-23fa1ff6.system.entry.js.map +1 -0
  352. package/dist/ripple/p-24a4cb11.system.entry.js.map +1 -1
  353. package/dist/ripple/p-2c2a7092.system.entry.js.map +1 -1
  354. package/dist/ripple/{p-9d02957d.system.js → p-313b6073.system.js} +1 -1
  355. package/dist/ripple/p-313b6073.system.js.map +1 -0
  356. package/dist/ripple/p-33558ec4.system.entry.js.map +1 -1
  357. package/dist/ripple/{p-28c12986.system.entry.js → p-33ec18d4.system.entry.js} +2 -2
  358. package/dist/ripple/p-33ec18d4.system.entry.js.map +1 -0
  359. package/dist/ripple/{p-7d0f3abe.entry.js → p-341aa131.entry.js} +2 -2
  360. package/dist/ripple/p-341aa131.entry.js.map +1 -0
  361. package/dist/ripple/p-3759b7af.system.entry.js.map +1 -1
  362. package/dist/ripple/p-38449dff.system.entry.js +2 -0
  363. package/dist/ripple/p-38449dff.system.entry.js.map +1 -0
  364. package/dist/ripple/{p-ee97c3f6.entry.js → p-384c4981.entry.js} +2 -2
  365. package/dist/ripple/p-384c4981.entry.js.map +1 -0
  366. package/dist/ripple/{p-b81ce905.system.entry.js → p-3869a69e.system.entry.js} +2 -2
  367. package/dist/ripple/p-3869a69e.system.entry.js.map +1 -0
  368. package/dist/ripple/p-4391166c.entry.js.map +1 -1
  369. package/dist/ripple/{p-e6e7cb2d.entry.js → p-43be123d.entry.js} +2 -2
  370. package/dist/ripple/p-43be123d.entry.js.map +1 -0
  371. package/dist/ripple/p-4a014591.entry.js.map +1 -1
  372. package/dist/ripple/p-4a06d0a9.system.entry.js +2 -0
  373. package/dist/ripple/p-4a06d0a9.system.entry.js.map +1 -0
  374. package/dist/ripple/p-4e02e2ae.entry.js +2 -0
  375. package/dist/ripple/p-4e02e2ae.entry.js.map +1 -0
  376. package/dist/ripple/p-56cd4d5e.entry.js +2 -0
  377. package/dist/ripple/p-56cd4d5e.entry.js.map +1 -0
  378. package/dist/ripple/p-59654f8e.entry.js.map +1 -1
  379. package/dist/ripple/p-5cc287d2.entry.js +2 -0
  380. package/dist/ripple/p-5cc287d2.entry.js.map +1 -0
  381. package/dist/ripple/{p-8eebf787.entry.js → p-7e0e6b00.entry.js} +2 -2
  382. package/dist/ripple/p-7e0e6b00.entry.js.map +1 -0
  383. package/dist/ripple/{p-0400599e.system.entry.js → p-833c622f.system.entry.js} +2 -2
  384. package/dist/ripple/p-833c622f.system.entry.js.map +1 -0
  385. package/dist/ripple/{p-b00991d9.system.entry.js → p-8613600d.system.entry.js} +2 -2
  386. package/dist/ripple/p-8613600d.system.entry.js.map +1 -0
  387. package/dist/ripple/{p-43f1298b.js → p-888bec42.js} +1 -1
  388. package/dist/ripple/p-888bec42.js.map +1 -0
  389. package/dist/ripple/p-889579fc.entry.js +2 -0
  390. package/dist/ripple/p-889579fc.entry.js.map +1 -0
  391. package/dist/ripple/p-8c51e9f8.system.entry.js.map +1 -1
  392. package/dist/ripple/{p-42158d44.entry.js → p-8db604d2.entry.js} +2 -2
  393. package/dist/ripple/p-8db604d2.entry.js.map +1 -0
  394. package/dist/ripple/{p-24ef6556.system.entry.js → p-91deb45f.system.entry.js} +2 -2
  395. package/dist/ripple/p-91deb45f.system.entry.js.map +1 -0
  396. package/dist/ripple/p-9338011f.system.entry.js +2 -0
  397. package/dist/ripple/p-9338011f.system.entry.js.map +1 -0
  398. package/dist/ripple/p-976b2789.system.entry.js.map +1 -1
  399. package/dist/ripple/{p-1aa16d42.js → p-994303f2.js} +2 -2
  400. package/dist/ripple/p-994303f2.js.map +1 -0
  401. package/dist/ripple/p-9b2dfb54.js +2 -0
  402. package/dist/ripple/p-9b2dfb54.js.map +1 -0
  403. package/dist/ripple/p-9b9eb944.entry.js.map +1 -1
  404. package/dist/ripple/{p-980afed1.system.entry.js → p-a6d64d8a.system.entry.js} +2 -2
  405. package/dist/ripple/p-a6d64d8a.system.entry.js.map +1 -0
  406. package/dist/ripple/{p-fd8070fb.js → p-a6d6eae7.js} +1 -1
  407. package/dist/ripple/p-a6d6eae7.js.map +1 -0
  408. package/dist/ripple/{p-219fbe2b.system.entry.js → p-a73cf968.system.entry.js} +2 -2
  409. package/dist/ripple/p-a73cf968.system.entry.js.map +1 -0
  410. package/dist/ripple/{p-76aafb99.system.entry.js → p-aed625c1.system.entry.js} +2 -2
  411. package/dist/ripple/p-aed625c1.system.entry.js.map +1 -0
  412. package/dist/ripple/{p-0d36ceba.system.entry.js → p-b5b521e4.system.entry.js} +2 -2
  413. package/dist/ripple/p-b5b521e4.system.entry.js.map +1 -0
  414. package/dist/ripple/{p-47d223f1.system.entry.js → p-b7451e73.system.entry.js} +2 -2
  415. package/dist/ripple/p-b7451e73.system.entry.js.map +1 -0
  416. package/dist/ripple/p-bafdcb4e.system.entry.js +2 -0
  417. package/dist/ripple/p-bafdcb4e.system.entry.js.map +1 -0
  418. package/dist/ripple/{p-262713b9.entry.js → p-bb45e122.entry.js} +2 -2
  419. package/dist/ripple/p-bb45e122.entry.js.map +1 -0
  420. package/dist/ripple/p-bd84628c.system.entry.js +2 -0
  421. package/dist/ripple/p-bd84628c.system.entry.js.map +1 -0
  422. package/dist/ripple/p-bf569af0.entry.js.map +1 -1
  423. package/dist/ripple/p-c094f6a8.entry.js +2 -0
  424. package/dist/ripple/p-c094f6a8.entry.js.map +1 -0
  425. package/dist/ripple/p-c36002b6.system.js +2 -0
  426. package/dist/ripple/p-c36002b6.system.js.map +1 -0
  427. package/dist/ripple/p-c5bf7db8.entry.js +2 -0
  428. package/dist/ripple/p-c5bf7db8.entry.js.map +1 -0
  429. package/dist/ripple/p-c68b3798.system.js +2 -0
  430. package/dist/ripple/p-c68b3798.system.js.map +1 -0
  431. package/dist/ripple/{p-05e0f901.js → p-c6a0f7e5.js} +1 -1
  432. package/dist/ripple/{p-05e0f901.js.map → p-c6a0f7e5.js.map} +1 -1
  433. package/dist/ripple/{p-bcba3ce8.entry.js → p-d46f5794.entry.js} +2 -2
  434. package/dist/ripple/p-d46f5794.entry.js.map +1 -0
  435. package/dist/ripple/{p-d7ffac2f.entry.js → p-d48313e0.entry.js} +2 -2
  436. package/dist/ripple/p-d48313e0.entry.js.map +1 -0
  437. package/dist/ripple/p-d939cb54.entry.js.map +1 -1
  438. package/dist/ripple/p-dbfd1640.system.entry.js.map +1 -1
  439. package/dist/ripple/{p-d7c55ce1.entry.js → p-e22854c1.entry.js} +2 -2
  440. package/dist/ripple/p-e22854c1.entry.js.map +1 -0
  441. package/dist/ripple/p-e70bb79f.js +2 -0
  442. package/dist/ripple/p-e70bb79f.js.map +1 -0
  443. package/dist/ripple/{p-e99a7f36.entry.js → p-ed82573a.entry.js} +2 -2
  444. package/dist/ripple/p-ed82573a.entry.js.map +1 -0
  445. package/dist/ripple/{p-bc28c815.system.js → p-f0fd8695.system.js} +1 -1
  446. package/dist/ripple/{p-bc28c815.system.js.map → p-f0fd8695.system.js.map} +1 -1
  447. package/dist/ripple/{p-e5f84104.system.entry.js → p-f312d59a.system.entry.js} +2 -2
  448. package/dist/ripple/p-f312d59a.system.entry.js.map +1 -0
  449. package/dist/ripple/{p-c19ddc00.system.entry.js → p-f59a495a.system.entry.js} +2 -2
  450. package/dist/ripple/p-f59a495a.system.entry.js.map +1 -0
  451. package/dist/ripple/{p-cc8ca6bd.system.js → p-f80eb8a5.system.js} +2 -2
  452. package/dist/ripple/p-f80eb8a5.system.js.map +1 -0
  453. package/dist/ripple/{p-1be55579.system.entry.js → p-fb67c39e.system.entry.js} +2 -2
  454. package/dist/ripple/p-fb67c39e.system.entry.js.map +1 -0
  455. package/dist/ripple/{p-20d0d019.entry.js → p-fc08d5e1.entry.js} +2 -2
  456. package/dist/ripple/p-fc08d5e1.entry.js.map +1 -0
  457. package/dist/ripple/{p-d7b946ed.entry.js → p-fe7da854.entry.js} +2 -2
  458. package/dist/ripple/p-fe7da854.entry.js.map +1 -0
  459. package/dist/ripple/ripple.esm.js +1 -1
  460. package/dist/ripple/ripple.esm.js.map +1 -1
  461. package/dist/ripple/ripple.js +1 -1
  462. package/dist/types/components/charts/chartFunctions.d.ts +37 -37
  463. package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +27 -0
  464. package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +11 -11
  465. package/dist/types/components/charts/wm-chart/wm-chart.d.ts +47 -0
  466. package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +29 -0
  467. package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +20 -0
  468. package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +10 -10
  469. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +49 -0
  470. package/dist/types/components/wm-button/wm-button.d.ts +49 -0
  471. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +80 -0
  472. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +42 -0
  473. package/dist/types/components/wm-file/wm-file.d.ts +42 -0
  474. package/dist/types/components/wm-file-list/wm-file-list.d.ts +16 -0
  475. package/dist/types/components/wm-input/wm-input.d.ts +45 -0
  476. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +34 -0
  477. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +14 -14
  478. package/dist/types/components/wm-modal/wm-modal-header.d.ts +10 -10
  479. package/dist/types/components/wm-modal/wm-modal.d.ts +40 -0
  480. package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +21 -0
  481. package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +13 -0
  482. package/dist/types/components/wm-navigation/wm-navigation.d.ts +26 -0
  483. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +10 -10
  484. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +13 -0
  485. package/dist/types/components/wm-navigator/wm-navigator.d.ts +61 -0
  486. package/dist/types/components/wm-option/wm-option.d.ts +34 -0
  487. package/dist/types/components/wm-pagination/wm-pagination.d.ts +32 -32
  488. package/dist/types/components/wm-search/wm-search.d.ts +77 -0
  489. package/dist/types/components/wm-select/wm-select.d.ts +101 -0
  490. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +31 -32
  491. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +37 -0
  492. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +52 -0
  493. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +20 -0
  494. package/dist/types/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.d.ts +11 -0
  495. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +135 -0
  496. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +62 -0
  497. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +28 -0
  498. package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +85 -0
  499. package/dist/types/components/wm-uploader/wm-uploader.d.ts +99 -0
  500. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +7 -7
  501. package/dist/types/components.d.ts +27 -27
  502. package/dist/types/global/__mocks__/functions.d.ts +6 -6
  503. package/dist/types/global/functions.d.ts +48 -48
  504. package/dist/types/global/global.d.ts +1 -1
  505. package/dist/types/global/interfaces.d.ts +74 -74
  506. package/dist/types/global/intl.d.ts +29 -1
  507. package/dist/types/global/services/__mocks__/http-service.d.ts +6 -6
  508. package/dist/types/global/services/http-service.d.ts +4 -4
  509. package/dist/types/lang/lang.d.ts +5 -5
  510. package/package.json +46 -46
  511. package/dist/cjs/chartFunctions-9dce0ea3.js.map +0 -1
  512. package/dist/cjs/global-c22b1249.js.map +0 -1
  513. package/dist/cjs/http-service-494d81de.js.map +0 -1
  514. package/dist/cjs/interfaces-a3338581.js.map +0 -1
  515. package/dist/cjs/intl-e14dc0a1.js +0 -13
  516. package/dist/cjs/intl-e14dc0a1.js.map +0 -1
  517. package/dist/esm/chartFunctions-1df8043a.js.map +0 -1
  518. package/dist/esm/global-2c5c2727.js.map +0 -1
  519. package/dist/esm/http-service-3dc3b3e7.js.map +0 -1
  520. package/dist/esm/interfaces-2b97fab2.js.map +0 -1
  521. package/dist/esm/intl-4153b9ef.js +0 -11
  522. package/dist/esm/intl-4153b9ef.js.map +0 -1
  523. package/dist/esm-es5/chartFunctions-1df8043a.js.map +0 -1
  524. package/dist/esm-es5/global-2c5c2727.js +0 -2
  525. package/dist/esm-es5/global-2c5c2727.js.map +0 -1
  526. package/dist/esm-es5/http-service-3dc3b3e7.js.map +0 -1
  527. package/dist/esm-es5/interfaces-2b97fab2.js.map +0 -1
  528. package/dist/esm-es5/intl-4153b9ef.js +0 -2
  529. package/dist/esm-es5/intl-4153b9ef.js.map +0 -1
  530. package/dist/ripple/p-0400599e.system.entry.js.map +0 -1
  531. package/dist/ripple/p-075607ac.entry.js +0 -2
  532. package/dist/ripple/p-075607ac.entry.js.map +0 -1
  533. package/dist/ripple/p-08d17d5a.entry.js +0 -2
  534. package/dist/ripple/p-08d17d5a.entry.js.map +0 -1
  535. package/dist/ripple/p-0d36ceba.system.entry.js.map +0 -1
  536. package/dist/ripple/p-124da634.entry.js +0 -2
  537. package/dist/ripple/p-124da634.entry.js.map +0 -1
  538. package/dist/ripple/p-1aa16d42.js.map +0 -1
  539. package/dist/ripple/p-1be55579.system.entry.js.map +0 -1
  540. package/dist/ripple/p-20d0d019.entry.js.map +0 -1
  541. package/dist/ripple/p-219fbe2b.system.entry.js.map +0 -1
  542. package/dist/ripple/p-21bb563a.system.entry.js.map +0 -1
  543. package/dist/ripple/p-241d4d41.system.entry.js +0 -2
  544. package/dist/ripple/p-241d4d41.system.entry.js.map +0 -1
  545. package/dist/ripple/p-24ef6556.system.entry.js.map +0 -1
  546. package/dist/ripple/p-262713b9.entry.js.map +0 -1
  547. package/dist/ripple/p-28c12986.system.entry.js.map +0 -1
  548. package/dist/ripple/p-3f6c7e6c.entry.js.map +0 -1
  549. package/dist/ripple/p-42158d44.entry.js.map +0 -1
  550. package/dist/ripple/p-43f1298b.js.map +0 -1
  551. package/dist/ripple/p-47d223f1.system.entry.js.map +0 -1
  552. package/dist/ripple/p-4d30004f.entry.js +0 -2
  553. package/dist/ripple/p-4d30004f.entry.js.map +0 -1
  554. package/dist/ripple/p-58b1415e.system.js +0 -2
  555. package/dist/ripple/p-58b1415e.system.js.map +0 -1
  556. package/dist/ripple/p-5cda4e9c.system.entry.js +0 -2
  557. package/dist/ripple/p-5cda4e9c.system.entry.js.map +0 -1
  558. package/dist/ripple/p-64f15a9e.system.entry.js +0 -2
  559. package/dist/ripple/p-64f15a9e.system.entry.js.map +0 -1
  560. package/dist/ripple/p-6e6b5b2c.system.entry.js +0 -2
  561. package/dist/ripple/p-6e6b5b2c.system.entry.js.map +0 -1
  562. package/dist/ripple/p-70768add.entry.js.map +0 -1
  563. package/dist/ripple/p-76aafb99.system.entry.js.map +0 -1
  564. package/dist/ripple/p-7d0f3abe.entry.js.map +0 -1
  565. package/dist/ripple/p-8aa85021.system.entry.js +0 -2
  566. package/dist/ripple/p-8aa85021.system.entry.js.map +0 -1
  567. package/dist/ripple/p-8eebf787.entry.js.map +0 -1
  568. package/dist/ripple/p-96b0ca93.system.js +0 -2
  569. package/dist/ripple/p-96b0ca93.system.js.map +0 -1
  570. package/dist/ripple/p-980afed1.system.entry.js.map +0 -1
  571. package/dist/ripple/p-9d02957d.system.js.map +0 -1
  572. package/dist/ripple/p-adbeb6a8.system.entry.js +0 -2
  573. package/dist/ripple/p-adbeb6a8.system.entry.js.map +0 -1
  574. package/dist/ripple/p-b00991d9.system.entry.js.map +0 -1
  575. package/dist/ripple/p-b81ce905.system.entry.js.map +0 -1
  576. package/dist/ripple/p-bcba3ce8.entry.js.map +0 -1
  577. package/dist/ripple/p-bf808ec4.entry.js +0 -2
  578. package/dist/ripple/p-bf808ec4.entry.js.map +0 -1
  579. package/dist/ripple/p-c19ddc00.system.entry.js.map +0 -1
  580. package/dist/ripple/p-cc8ca6bd.system.js.map +0 -1
  581. package/dist/ripple/p-ce52357e.js +0 -2
  582. package/dist/ripple/p-ce52357e.js.map +0 -1
  583. package/dist/ripple/p-d0f5773a.entry.js +0 -2
  584. package/dist/ripple/p-d0f5773a.entry.js.map +0 -1
  585. package/dist/ripple/p-d5b0809e.entry.js.map +0 -1
  586. package/dist/ripple/p-d7b946ed.entry.js.map +0 -1
  587. package/dist/ripple/p-d7c55ce1.entry.js.map +0 -1
  588. package/dist/ripple/p-d7ffac2f.entry.js.map +0 -1
  589. package/dist/ripple/p-dbf657c5.js +0 -2
  590. package/dist/ripple/p-dbf657c5.js.map +0 -1
  591. package/dist/ripple/p-e1b812ed.entry.js +0 -2
  592. package/dist/ripple/p-e1b812ed.entry.js.map +0 -1
  593. package/dist/ripple/p-e5f84104.system.entry.js.map +0 -1
  594. package/dist/ripple/p-e6e7cb2d.entry.js.map +0 -1
  595. package/dist/ripple/p-e99a7f36.entry.js.map +0 -1
  596. package/dist/ripple/p-ed14d37c.system.entry.js +0 -2
  597. package/dist/ripple/p-ed14d37c.system.entry.js.map +0 -1
  598. package/dist/ripple/p-ee97c3f6.entry.js.map +0 -1
  599. package/dist/ripple/p-f3130941.entry.js +0 -2
  600. package/dist/ripple/p-f3130941.entry.js.map +0 -1
  601. package/dist/ripple/p-f36b1c58.system.entry.js.map +0 -1
  602. package/dist/ripple/p-f4a622a9.system.entry.js +0 -2
  603. package/dist/ripple/p-f4a622a9.system.entry.js.map +0 -1
  604. package/dist/ripple/p-f5df5903.system.js.map +0 -1
  605. package/dist/ripple/p-fd8070fb.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["wmTagInputCss","TagInput","this","uid","el","id","generateId","openUp","tooltipVisible","debouncedUpdate","debounce","forceUpdate","row","column","csvToArray","selectedTags","options","focusedElement","shadowRoot","activeElement","listItemEls","Array","from","dropdownEl","querySelectorAll","tagEls","tagAreaEl","nonLockedTagEls","filter","tag","classList","contains","optionEls","wmRowEls","localRowEls","filteredRows","colValues","col1","col2","col3","col4","join","toLowerCase","inputEl","value","includes","nonLockedTagsList","list","tagInputType","tagsList","forEach","correspondingRowEl","locked","push","tagLimitReached","maxTags","length","noResultsMessage","intl","formatMessage","defaultMessage","description","componentMessages","addNewHelpText","selectionHelpText","maxTagsReachedMessage","tagAreaInstructions","tagsAddedMessage","defaultConfig","maxTagsReached","tagsAdded","userProvidedConfig","safeParseJSON","messageConfig","Object","assign","inputMinimumWidth","inputElStyles","getComputedStyle","tagElStyles","inputElBuffer","paddingLeft","paddingRight","marginLeft","marginRight","reduce","prev","curr","parseInt","replace","minimumWidth","Math","max","measureText","placeholder","width","generateTagAddedMessage","tagName","generateTagAlreadyAddedMessage","generateCharacterLimitLabel","characterLimit","limit","componentWillLoad","createPlaceholderDefault","addNew","label","console","error","consolidateSelectedTags","focus","firstFocusableTag","focusTag","resizeObserver","ResizeObserver","observe","componentDidLoad","remove","componentDidRender","positionInput","includesCaseInsensitive","optionsList","hasOptions","addAndSearchPlaceholder","searchPlaceholder","addPlaceholder","reflectSelectedTags","newValue","oldValue","isAddition","changedTag","val","map","querySelector","listToCSV","detail","tagChanged","wmTagInputChanged","emit","handleErrorMessageChange","errorMessage","announce","handleRowUpdate","closeIfNotElOrChild","ev","isntElOrChild","target","isExpanded","closeDropdown","dismissTooltip","hideTooltip","handleInputKeyDown","test","key","announceCharacterLimitWarning","stopPropagation","preventDefault","handleInputEnter","handleInputArrowDown","handleInputArrowUp","tablePosition","moveLeftCell","moveRightCell","handleInputBackspace","handleInputFocus","openDropdown","clearListItemFocus","handleInputChanged","charCount","clearCellFocus","announceExistingOptions","focusedListItem","handleListItemClick","submitInput","trim","handleTableRowClick","canAddNew","hasNonWhiteSpaceCharacters","match","addTag","addOption","resetInput","moveDownRow","moveDownListItem","moveUpRow","moveUpListItem","window","requestAnimationFrame","handleListItemKeyDown","typedEvTarget","click","item","dataset","option","rowId","referencedRow","isLocked","removeTag","handleTagAreaKeyDown","moveLeftTag","moveRightTag","handleTagAreaDelete","focusedTag","handleBlur","component","relatedTarget","fieldWrapperEl","handleCellMouseEnter","cell","contentWrapper","isTruncated","scrollWidth","clientWidth","showTooltip","innerText","handleTagAreaFocus","handleRemoveButtonClick","firstListItem","focusListItem","nextElementSibling","lastListItem","previousElementSibling","rowToFocus","focusCell","numCols","colHeaders","lastTag","firstTag","newOptionsList","optionAlreadyExists","concat","removeOption","filterCaseInsensitive","newTagsList","tagAlreadyAdded","tagExistsAsOption","x","textToAnnounce","tagRemovedMessage","devOptionsList","setAttribute","scrollIntoView","block","element","position","rowCells","cellToFocus","add","clearTagFocus","resetPosition","shouldOpenUp","clientHeight","message","liveRegionEl","textContent","liveRegionMessage","numResults","existingOptionsMessage","num","charLimit","charactersEnteredMessage","y","characterLimitReachedMessage","style","spaceAvailable","getBoundingClientRect","right","top","offsetTop","toString","lowercaseList","str","sortCaseInsensitive","sort","a","b","renderTags","lockedTags","unlockedTags","idx","tagText","targetList","h","class","role","tabIndex","onClick","renderDropdown","ref","renderHelpText","tabindex","renderAddNewButton","renderListItems","isFocused","isSelected","onKeyDown","onBlur","helpText","renderTagCounter","renderTable","onScroll","colWidths","renderTableHeaders","renderTableRows","header","overflowRule","colWrap","renderTableCells","localId","onMouseEnter","onMouseLeave","render","Host","labelPosition","htmlFor","requiredField","onFocus","autocomplete","maxLength","undefined","onInput","info"],"sources":["./src/components/wm-tag-input/wm-tag-input.scss?tag=wm-tag-input&encapsulation=shadow","./src/components/wm-tag-input/wm-tag-input.tsx"],"sourcesContent":[":host,\r\nwm-tag-input {\r\n font-family: inherit;\r\n width: 100%;\r\n display: block;\r\n\r\n * {\r\n box-sizing: border-box;\r\n font-size: 14px;\r\n }\r\n\r\n @include label;\r\n\r\n .wrapper {\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n }\r\n\r\n .field-wrapper {\r\n position: relative;\r\n width: 100%;\r\n border: 1px solid $input-border-color;\r\n @include border-radius(3px);\r\n\r\n &.focused {\r\n @include field-focus;\r\n }\r\n\r\n &.invalid {\r\n @include invalidBorder;\r\n }\r\n }\r\n\r\n .character-count {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: rem-calc(80);\r\n background-color: rgba(74, 74, 74, 0.05);\r\n font-size: rem-calc(14);\r\n font-weight: 500;\r\n align-self: stretch;\r\n }\r\n\r\n .tags-and-input-wrapper {\r\n position: relative;\r\n width: 100%;\r\n padding: rem-calc(8) rem-calc(4) rem-calc(8) 0;\r\n margin-bottom: rem-calc(-8);\r\n }\r\n\r\n .upper-row {\r\n width: 100%;\r\n display: flex;\r\n flex: 1;\r\n justify-content: space-between;\r\n &:before {\r\n align-self: flex-start;\r\n @include mdi-icon;\r\n content: \"\\f349\"; // magnifying glass\r\n color: $tag-input-search-icon-color;\r\n padding: rem-calc(12) rem-calc(8) rem-calc(12) rem-calc(12);\r\n }\r\n }\r\n\r\n .lower-row {\r\n width: 100%;\r\n min-height: rem-calc(30);\r\n }\r\n\r\n #max-tags {\r\n display: flex;\r\n align-items: center;\r\n min-height: rem-calc(30);\r\n background-color: $tag-input-max-tags-bg;\r\n padding: rem-calc(8) rem-calc(16);\r\n color: $tag-input-max-tags-color;\r\n font-size: rem-calc(14);\r\n border-top: 1px solid $tag-input-max-tags-border;\r\n border-radius: 0 0 3px 3px;\r\n }\r\n\r\n .tag-area {\r\n display: flex;\r\n flex-wrap: wrap;\r\n margin: 0;\r\n padding: 0;\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n [role=\"option\"] {\r\n display: inline-flex;\r\n align-items: center;\r\n height: rem-calc(28);\r\n list-style: none;\r\n color: $charcoal;\r\n background-color: rgba(3, 0, 0, 0.1);\r\n padding: rem-calc(8) rem-calc(10);\r\n margin-bottom: rem-calc(8);\r\n margin-right: rem-calc(4);\r\n margin-left: rem-calc(4);\r\n transition: background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);\r\n white-space: pre;\r\n\r\n &.highlight {\r\n animation: fadeIn 1s;\r\n @keyframes fadeIn {\r\n 0% {\r\n background-color: rgba(3, 0, 0, 0.1);\r\n }\r\n 50% {\r\n background-color: #c8dfcc;\r\n }\r\n\r\n 100% {\r\n background-color: rgba(3, 0, 0, 0.1);\r\n }\r\n }\r\n }\r\n\r\n &.focused {\r\n background-color: #d1d1d1;\r\n }\r\n\r\n &.locked {\r\n background-color: $tag-input-locked-tag-bg;\r\n color: white;\r\n }\r\n\r\n .icon {\r\n display: inline-flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: rem-calc(20);\r\n width: rem-calc(20);\r\n padding: 0;\r\n margin-left: rem-calc(8);\r\n &.remove-btn {\r\n border: 1px solid $periwinkle;\r\n color: $periwinkle;\r\n border-radius: 50%;\r\n cursor: pointer;\r\n transition: background-color 500ms cubic-bezier(0.4, 0, 0.2, 1), color 500ms cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n &:hover {\r\n color: white;\r\n background-color: $periwinkle;\r\n }\r\n\r\n &:before {\r\n @include mdi-icon;\r\n content: \"\\f156\";\r\n }\r\n }\r\n\r\n &.lock {\r\n color: white;\r\n &:before {\r\n @include mdi-icon;\r\n content: \"\\f341\";\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n input {\r\n font-family: inherit;\r\n border: none;\r\n height: rem-calc(28);\r\n padding: 0;\r\n margin-bottom: rem-calc(8);\r\n margin-right: rem-calc(4);\r\n padding-left: rem-calc(8);\r\n right: 0px;\r\n\r\n &.hidden {\r\n display: none;\r\n }\r\n &:focus {\r\n outline: none;\r\n }\r\n }\r\n\r\n .dropdown-wrapper {\r\n margin: 0;\r\n padding: 0;\r\n @include box-shadow(0 4px 15px 0 rgba(0, 0, 0, 0.2));\r\n @include transition(transform 0.25s ease);\r\n @include scale($xVal: 1, $yVal: 0);\r\n @include transformOrigin(center top);\r\n @include border-radius(3px);\r\n position: absolute;\r\n top: calc(100% + 2px);\r\n right: 0;\r\n background: #fff;\r\n z-index: 100;\r\n width: 100%;\r\n font-size: rem-calc(14);\r\n\r\n .dropdown {\r\n -webkit-overflow-scrolling: touch;\r\n overflow: auto;\r\n max-height: rem-calc(200);\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n &.open {\r\n @include scale($xVal: 1, $yVal: 1);\r\n }\r\n\r\n &.upwards {\r\n top: unset;\r\n bottom: calc(100% + 2px);\r\n @include transformOrigin(center bottom);\r\n }\r\n\r\n li,\r\n div {\r\n display: flex;\r\n align-items: center;\r\n padding: 0 rem-calc(16);\r\n background: #fff;\r\n list-style: none;\r\n height: rem-calc(43);\r\n white-space: pre;\r\n\r\n &[role=\"option\"],\r\n &.add-new-btn {\r\n cursor: pointer;\r\n color: $periwinkle;\r\n font-weight: bold;\r\n width: 100%;\r\n border: none;\r\n\r\n &[aria-selected=\"true\"] {\r\n color: $gray;\r\n font-style: italic;\r\n font-weight: normal;\r\n cursor: unset;\r\n }\r\n &:hover:not([aria-selected=\"true\"]),\r\n &.focused {\r\n outline: none;\r\n background: $background;\r\n }\r\n }\r\n\r\n &.help-text {\r\n color: $charcoal;\r\n height: auto;\r\n min-height: rem-calc(43);\r\n padding-top: rem-calc(4);\r\n padding-bottom: rem-calc(4);\r\n white-space: normal;\r\n }\r\n\r\n &:not(:last-child) {\r\n border-bottom: 2px solid rgba(#2e1b46, 0.05);\r\n }\r\n }\r\n }\r\n\r\n .info-text {\r\n font-style: italic;\r\n margin-top: rem-calc(4);\r\n }\r\n\r\n .table-wrapper {\r\n min-height: rem-calc(160);\r\n overflow: auto;\r\n margin-top: rem-calc(24);\r\n\r\n #table {\r\n width: 100%;\r\n border-spacing: 0px;\r\n &.fixed-widths {\r\n table-layout: fixed;\r\n }\r\n\r\n .headers {\r\n height: rem-calc(40);\r\n background-color: #eeedf4;\r\n th {\r\n text-align: left;\r\n font-size: rem-calc(12);\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n padding: 0 rem-calc(24);\r\n }\r\n }\r\n }\r\n\r\n tr {\r\n // the following colors are in a css-specificity order, do not move\r\n &:nth-child(even) {\r\n background-color: $tag-input-row-zebra-bg;\r\n }\r\n\r\n &.selected {\r\n background-color: $tag-input-row-selected-bg;\r\n // box-shadow to add border without affecting surrounding cell borders\r\n box-shadow: inset 0 0 0 1px $tag-input-row-selected-border;\r\n font-weight: 500;\r\n }\r\n\r\n &.focused:not(.locked),\r\n &:hover:not(.locked) {\r\n background-color: $tag-input-row-focused;\r\n box-shadow: none;\r\n }\r\n\r\n &.locked {\r\n td {\r\n cursor: auto;\r\n }\r\n\r\n td:first-child {\r\n .cell-content-wrapper:before {\r\n @include mdi-icon;\r\n content: \"\\f33e\";\r\n margin-right: rem-calc(8);\r\n color: $tag-input-row-lock-color;\r\n }\r\n }\r\n }\r\n }\r\n\r\n td {\r\n height: rem-calc(60);\r\n vertical-align: middle;\r\n padding: 0 rem-calc(24);\r\n cursor: pointer;\r\n &.focused {\r\n // from wm-navigation\r\n box-shadow: inset 0 2px 2px 0 rgb(244 243 246 / 20%), inset 0 2px 2px 0 rgb(0 0 0 / 10%),\r\n inset 0 0 4px 3px #61279e;\r\n }\r\n .cell-content-wrapper.trunc {\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .description {\r\n display: none;\r\n }\r\n }\r\n }\r\n\r\n .no-results {\r\n padding: rem-calc(20) rem-calc(24);\r\n }\r\n\r\n .sr-only {\r\n @include srOnly;\r\n }\r\n\r\n #error {\r\n @include errorMessage;\r\n }\r\n}\r\n","import {\r\n h,\r\n Component,\r\n Host,\r\n Element,\r\n Prop,\r\n Listen,\r\n State,\r\n Event,\r\n EventEmitter,\r\n Watch,\r\n forceUpdate,\r\n} from \"@stencil/core\";\r\nimport {\r\n csvToArray,\r\n debounce,\r\n generateId,\r\n hideTooltip,\r\n intl,\r\n measureText,\r\n safeParseJSON,\r\n shouldOpenUp,\r\n showTooltip,\r\n} from \"../../global/functions\";\r\n\r\ninterface TablePosition {\r\n row: number;\r\n column: number;\r\n}\r\n\r\ninterface MessageConfig {\r\n addNewHelpText: string;\r\n selectionHelpText: string;\r\n tagAreaInstructions: string;\r\n maxTagsReached: string;\r\n tagsAdded: string;\r\n}\r\n\r\n@Component({\r\n tag: \"wm-tag-input\",\r\n styleUrl: \"wm-tag-input.scss\",\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class TagInput {\r\n @Element() el!: HTMLWmTagInputElement;\r\n private inputEl!: HTMLInputElement;\r\n private dropdownEl!: HTMLDivElement;\r\n private tagAreaEl!: HTMLUListElement;\r\n private liveRegionEl!: HTMLDivElement;\r\n private fieldWrapperEl!: HTMLDivElement;\r\n\r\n @Prop() label!: string;\r\n @Prop() labelPosition: \"top\" | \"left\" | \"none\" = \"top\";\r\n @Prop({ mutable: true }) options: string = \"\"; // csv\r\n @Prop({ reflect: true, mutable: true }) selectedTags: string = \"\"; // csv\r\n @Prop() info?: string;\r\n @Prop() errorMessage?: string;\r\n @Prop() addNew: boolean = true;\r\n @Prop({ mutable: true }) placeholder?: string;\r\n @Prop() requiredField: boolean = false;\r\n @Prop() characterLimit: number = 50;\r\n @Prop() maxTags?: number;\r\n @Prop() tagInputType: \"dropdown\" | \"table\" = \"dropdown\";\r\n @Prop() colHeaders!: string;\r\n @Prop() colWidths?: string;\r\n @Prop() colWrap?: string;\r\n @Prop() messageConfig: string = \"\"; // JSON\r\n @Event() wmTagInputChanged!: EventEmitter<{\r\n value: string[] | HTMLWmTagInputRowElement[];\r\n tagChanged: string | HTMLWmTagInputRowElement;\r\n }>;\r\n\r\n private uid: string = this.el.id ? this.el.id : generateId();\r\n private openUp: boolean = false;\r\n private tooltipVisible: boolean = false;\r\n @State() focusedListItem!: HTMLLIElement | null;\r\n @State() focusedTag: HTMLLIElement | null = null;\r\n @State() tablePosition: TablePosition = { row: 0, column: 1 };\r\n @State() isExpanded: boolean = false;\r\n @State() tagsList: string[] = csvToArray(this.selectedTags);\r\n @State() optionsList: string[] = csvToArray(this.options);\r\n @State() charCount: number = 0;\r\n @State() liveRegionMessage = \"\";\r\n\r\n get focusedElement(): Element | null {\r\n return this.el.shadowRoot!.activeElement;\r\n }\r\n get listItemEls(): HTMLLIElement[] {\r\n return Array.from(this.dropdownEl.querySelectorAll(\"li\"));\r\n }\r\n get tagEls(): HTMLLIElement[] {\r\n return this.tagAreaEl ? Array.from(this.tagAreaEl.querySelectorAll(\".tag\")) : [];\r\n }\r\n get nonLockedTagEls(): HTMLLIElement[] {\r\n return this.tagEls.filter((tag) => !tag.classList.contains(\"locked\"));\r\n }\r\n get optionEls(): HTMLLIElement[] {\r\n return Array.from(this.dropdownEl.querySelectorAll(\".option\"));\r\n }\r\n get wmRowEls(): HTMLWmTagInputRowElement[] {\r\n return Array.from(this.el.querySelectorAll(\"wm-tag-input-row\"));\r\n }\r\n get localRowEls(): HTMLElement[] {\r\n return Array.from(this.el.shadowRoot!.querySelectorAll(\"tr\"));\r\n }\r\n get filteredRows(): HTMLWmTagInputRowElement[] {\r\n return this.wmRowEls.filter((row) => {\r\n const colValues = [row.col1, row.col2, row.col3, row.col4].join(\"\").toLowerCase();\r\n return this.inputEl && this.inputEl.value ? colValues.includes(this.inputEl.value.toLowerCase()) : true;\r\n });\r\n }\r\n get nonLockedTagsList() {\r\n let list: string[] = [];\r\n\r\n if (this.tagInputType === \"table\") {\r\n this.tagsList.forEach((id) => {\r\n const correspondingRowEl = this.wmRowEls.filter((row) => id === row.id)[0];\r\n if (!correspondingRowEl.locked) {\r\n list.push(id);\r\n }\r\n });\r\n } else if (this.tagInputType === \"dropdown\") {\r\n list = this.tagsList;\r\n }\r\n\r\n return list;\r\n }\r\n get tagLimitReached(): boolean {\r\n return !!(this.maxTags && this.tagsList.length >= this.maxTags);\r\n }\r\n\r\n get noResultsMessage() {\r\n return intl.formatMessage({\r\n id: \"tagInput.noResults\",\r\n defaultMessage: \"No results match your search.\",\r\n description: \"Message displayed when a user's search returns empty.\",\r\n });\r\n }\r\n\r\n get componentMessages(): MessageConfig {\r\n const addNewHelpText = intl.formatMessage({\r\n id: \"tagInput.addNewHelpText\",\r\n defaultMessage: \"Press the Enter or Comma key to add a new tag.\",\r\n description: \"Help text appearing in a dropdown. Use imperative\",\r\n });\r\n const selectionHelpText = intl.formatMessage({\r\n id: \"tagInput.selectionHelpText\",\r\n defaultMessage: \"Search and select a tag.\",\r\n description: \"Help text appearing in a dropdown. Use imperative\",\r\n });\r\n const maxTagsReachedMessage = intl.formatMessage({\r\n id: \"tagInput.maxTagsReached\",\r\n defaultMessage: \"No more tags can be added because the limit has been reached.\",\r\n });\r\n const tagAreaInstructions = intl.formatMessage({\r\n id: \"tagInput.tagAreaInstructions\",\r\n defaultMessage: \"tag selection. Press Backspace or Delete to remove a tag.\",\r\n });\r\n const tagsAddedMessage = intl.formatMessage({\r\n id: \"tagInput.tagsAdded\",\r\n defaultMessage: \"Tags added\",\r\n description: \"For the user to understand how close they are to the tag limit, followed by x/y count\",\r\n });\r\n\r\n const defaultConfig: MessageConfig = {\r\n addNewHelpText: addNewHelpText,\r\n selectionHelpText: selectionHelpText,\r\n maxTagsReached: maxTagsReachedMessage,\r\n tagAreaInstructions: tagAreaInstructions,\r\n tagsAdded: tagsAddedMessage,\r\n };\r\n\r\n const userProvidedConfig = safeParseJSON(this.messageConfig);\r\n\r\n return userProvidedConfig ? { ...defaultConfig, ...userProvidedConfig } : defaultConfig;\r\n }\r\n\r\n get inputMinimumWidth(): number {\r\n // 150px is the minimum width of the input field, or the length of the placeholder text\r\n const inputElStyles = getComputedStyle(this.inputEl);\r\n const tagElStyles = getComputedStyle(this.tagEls[this.tagEls.length - 1]);\r\n const inputElBuffer = [\r\n inputElStyles.paddingLeft,\r\n inputElStyles.paddingRight,\r\n inputElStyles.marginLeft,\r\n inputElStyles.marginRight,\r\n tagElStyles.marginRight,\r\n ].reduce((prev, curr) => prev + parseInt(curr.replace(\"px\", \"\")), 0);\r\n\r\n const minimumWidth = Math.max(150, measureText(this.inputEl, this.placeholder!).width + inputElBuffer);\r\n return minimumWidth;\r\n }\r\n\r\n generateTagAddedMessage(tag: string): string {\r\n return intl.formatMessage(\r\n {\r\n id: \"tagInput.tagAdded\",\r\n defaultMessage: \"{tagName} added.\",\r\n description: \"A confirmation for adding a tag.\",\r\n },\r\n { tagName: tag }\r\n );\r\n }\r\n\r\n generateTagAlreadyAddedMessage(tag: string): string {\r\n return intl.formatMessage(\r\n {\r\n id: \"tagInput.tagAlreadyAdded\",\r\n defaultMessage: \"{tagName} has already been added.\",\r\n description: \"An alert for adding a tag that is already present.\",\r\n },\r\n { tagName: tag }\r\n );\r\n }\r\n\r\n generateCharacterLimitLabel(characterLimit: number): string {\r\n return intl.formatMessage(\r\n {\r\n id: \"global.characterLimit\",\r\n defaultMessage: \"{limit, number} characters allowed.\",\r\n description: \"for screen readers\",\r\n },\r\n { limit: characterLimit }\r\n );\r\n }\r\n\r\n componentWillLoad() {\r\n if (!this.placeholder) {\r\n this.placeholder = this.createPlaceholderDefault(this.addNew, !!this.options);\r\n }\r\n if (!this.label) {\r\n console.error(\"wm-tag-input must have a label property\");\r\n }\r\n\r\n this.consolidateSelectedTags();\r\n\r\n this.el.focus = () => {\r\n const firstFocusableTag = this.nonLockedTagEls[0];\r\n if (firstFocusableTag) {\r\n this.tagAreaEl.focus();\r\n this.focusTag(firstFocusableTag);\r\n } else {\r\n this.inputEl.focus();\r\n }\r\n };\r\n\r\n // on resize of component, trigger componentDidRender -> positionInput\r\n const resizeObserver = new ResizeObserver(() => this.debouncedUpdate());\r\n resizeObserver.observe(this.el);\r\n }\r\n\r\n componentDidLoad() {\r\n // prevent highlighting of pre-selected tags\r\n this.tagEls.forEach((el) => el.classList.remove(\"highlight\"));\r\n }\r\n\r\n componentDidRender() {\r\n this.positionInput();\r\n }\r\n\r\n consolidateSelectedTags() {\r\n this.tagsList.forEach((tag) => {\r\n if (!this.includesCaseInsensitive(this.optionsList, tag)) {\r\n this.options += `${this.options.length > 0 ? \",\" : \"\"}${tag}`;\r\n }\r\n });\r\n\r\n this.optionsList = csvToArray(this.options);\r\n }\r\n\r\n createPlaceholderDefault(addNew: boolean, hasOptions: boolean): string {\r\n const addAndSearchPlaceholder = intl.formatMessage({\r\n id: \"tagInput.placeholderAddAndSearch\",\r\n defaultMessage: \"Add or search for a tag\",\r\n description: \"Placeholder text. Use imperative\",\r\n });\r\n const searchPlaceholder = intl.formatMessage({\r\n id: \"tagInput.placeholderSearch\",\r\n defaultMessage: \"Search and select a tag\",\r\n description: \"Placeholder text. Use imperative\",\r\n });\r\n const addPlaceholder = intl.formatMessage({\r\n id: \"tagInput.placeholderAdd\",\r\n defaultMessage: \"Add a new tag\",\r\n description: \"Placeholder text. Use imperative\",\r\n });\r\n\r\n let placeholder = \"\";\r\n if (addNew && hasOptions) {\r\n placeholder = addAndSearchPlaceholder;\r\n } else if (!addNew && hasOptions) {\r\n placeholder = searchPlaceholder;\r\n } else if (addNew) {\r\n placeholder = addPlaceholder;\r\n }\r\n return placeholder;\r\n }\r\n\r\n @Watch(\"tagsList\")\r\n reflectSelectedTags(newValue: string[], oldValue: string[]) {\r\n const isAddition = newValue.length > oldValue.length;\r\n let changedTag: string | HTMLWmTagInputRowElement = \"\";\r\n let selectedTags: string[] | HTMLWmTagInputRowElement[] = this.tagsList;\r\n\r\n if (isAddition) {\r\n changedTag = newValue.filter((val) => !oldValue.includes(val))[0];\r\n } else {\r\n changedTag = oldValue.filter((val) => !newValue.includes(val))[0];\r\n }\r\n\r\n // event emitted by type table uses element references instead of strings\r\n if (this.tagInputType === \"table\") {\r\n changedTag = this.wmRowEls.filter((row) => row.id === changedTag)[0];\r\n selectedTags = this.tagsList.map((id) => this.el.querySelector(`#${id}`) as HTMLWmTagInputRowElement);\r\n }\r\n\r\n this.selectedTags = this.listToCSV(this.tagsList);\r\n let detail = { value: selectedTags, tagChanged: changedTag };\r\n this.wmTagInputChanged.emit(detail);\r\n }\r\n\r\n @Watch(\"errorMessage\")\r\n handleErrorMessageChange() {\r\n if (this.errorMessage) {\r\n this.announce(this.errorMessage);\r\n }\r\n }\r\n\r\n @Listen(\"wmTagInputRowUpdated\")\r\n handleRowUpdate() {\r\n forceUpdate(this.el);\r\n }\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n closeIfNotElOrChild(ev: MouseEvent): void {\r\n const isntElOrChild = ev.target !== this.el && !this.el.shadowRoot!.contains(ev.target as HTMLElement);\r\n\r\n if (this.tagInputType === \"dropdown\" && isntElOrChild && this.isExpanded) {\r\n this.closeDropdown();\r\n }\r\n }\r\n\r\n // From wm-button\r\n // we need to listen for scroll events during the capture phase because they do not bubble up\r\n // there can be layouts where the main content has 100vh and overflows\r\n // in these cases window will register no scroll events unless we catch on they way down\r\n @Listen(\"scroll\", { target: \"window\", capture: true })\r\n dismissTooltip() {\r\n if (this.tooltipVisible) {\r\n hideTooltip();\r\n this.tooltipVisible = false;\r\n }\r\n }\r\n\r\n debouncedUpdate = debounce(() => forceUpdate(this.el), 30);\r\n\r\n handleInputKeyDown(ev: KeyboardEvent) {\r\n if (/^.$/.test(ev.key) && this.inputEl.value.length >= this.characterLimit) {\r\n this.announceCharacterLimitWarning(this.inputEl.value.length, this.characterLimit);\r\n }\r\n\r\n // prevent keydown triggering on tag area\r\n ev.stopPropagation();\r\n switch (ev.key) {\r\n case \"Enter\":\r\n case \",\":\r\n ev.preventDefault();\r\n this.handleInputEnter();\r\n break;\r\n case \"ArrowDown\":\r\n ev.preventDefault();\r\n this.handleInputArrowDown();\r\n break;\r\n case \"ArrowUp\":\r\n ev.preventDefault();\r\n this.handleInputArrowUp();\r\n break;\r\n case \"ArrowLeft\":\r\n ev.preventDefault();\r\n if (this.tagInputType === \"table\" && this.tablePosition.row) {\r\n this.moveLeftCell();\r\n }\r\n break;\r\n case \"ArrowRight\":\r\n ev.preventDefault();\r\n if (this.tagInputType === \"table\" && this.tablePosition.row) {\r\n this.moveRightCell();\r\n }\r\n break;\r\n case \"Escape\":\r\n if (this.tagInputType === \"dropdown\" && this.isExpanded) {\r\n this.closeDropdown();\r\n }\r\n break;\r\n case \"ArrowLeft\":\r\n case \"Backspace\":\r\n this.handleInputBackspace();\r\n break;\r\n }\r\n }\r\n\r\n handleInputFocus() {\r\n if (this.tagInputType === \"dropdown\") {\r\n this.openDropdown();\r\n this.clearListItemFocus();\r\n }\r\n // force update needed to apply styled state of field-wrapper el\r\n forceUpdate(this.el);\r\n }\r\n\r\n handleInputChanged(value: string) {\r\n this.charCount = value.length;\r\n\r\n if (this.tagInputType === \"dropdown\") {\r\n this.clearListItemFocus();\r\n if (this.charCount >= this.characterLimit - 5) {\r\n this.announceCharacterLimitWarning(this.charCount, this.characterLimit);\r\n }\r\n if (!this.isExpanded) {\r\n this.openDropdown();\r\n }\r\n } else if (this.tagInputType === \"table\") {\r\n this.clearCellFocus();\r\n }\r\n this.announceExistingOptions();\r\n }\r\n\r\n handleInputEnter() {\r\n if (this.tagInputType === \"dropdown\") {\r\n if (this.focusedListItem) {\r\n this.handleListItemClick(this.focusedListItem);\r\n } else {\r\n this.submitInput(this.addNew, this.inputEl.value.trim());\r\n }\r\n } else if (this.tagInputType === \"table\" && this.tablePosition.row > 0) {\r\n this.handleTableRowClick(this.localRowEls[this.tablePosition.row].id);\r\n }\r\n }\r\n\r\n submitInput(canAddNew: boolean, value: string) {\r\n const hasNonWhiteSpaceCharacters = value.match(/\\S/);\r\n if (canAddNew && hasNonWhiteSpaceCharacters) {\r\n this.addTag(value);\r\n this.optionsList = this.addOption(value);\r\n this.resetInput();\r\n }\r\n }\r\n\r\n handleInputArrowDown() {\r\n if (this.tagInputType === \"table\") {\r\n this.moveDownRow();\r\n } else if (this.tagInputType === \"dropdown\" && this.isExpanded) {\r\n this.moveDownListItem();\r\n } else if (this.tagInputType === \"dropdown\") {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n handleInputArrowUp() {\r\n if (this.tagInputType === \"table\") {\r\n this.moveUpRow();\r\n } else if (this.tagInputType === \"dropdown\" && this.isExpanded) {\r\n this.moveUpListItem();\r\n } else if (this.tagInputType === \"dropdown\") {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n handleInputBackspace() {\r\n if (this.inputEl.value === \"\" && this.tagsList.length > 0) {\r\n // wait for events to finish firing before redirecting focus\r\n // prevents double input in input area and tag area\r\n window.requestAnimationFrame(() => {\r\n if (this.nonLockedTagsList.length > 0) {\r\n this.tagAreaEl.focus();\r\n this.focusTag(this.tagEls[this.tagEls.length - 1]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleListItemKeyDown(ev: KeyboardEvent) {\r\n const typedEvTarget = ev.target as HTMLElement;\r\n\r\n switch (ev.key) {\r\n case \"Enter\":\r\n case \" \":\r\n ev.preventDefault();\r\n typedEvTarget.click();\r\n break;\r\n case \"ArrowDown\":\r\n ev.preventDefault();\r\n this.moveDownListItem();\r\n break;\r\n case \"ArrowUp\":\r\n ev.preventDefault();\r\n this.moveUpListItem();\r\n break;\r\n case \"Escape\":\r\n if (this.focusedElement !== this.inputEl) {\r\n this.inputEl.focus();\r\n } else if (this.tagInputType === \"dropdown\") {\r\n this.closeDropdown();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n handleListItemClick(item: HTMLElement) {\r\n const tag = item.dataset.option!.trim() || \"\";\r\n\r\n if (this.includesCaseInsensitive(this.tagsList, tag)) {\r\n this.announce(this.generateTagAlreadyAddedMessage(tag));\r\n } else {\r\n this.resetInput();\r\n this.addTag(tag);\r\n this.optionsList = this.addOption(tag);\r\n this.focusedListItem = null;\r\n }\r\n }\r\n\r\n handleTableRowClick(rowId: string) {\r\n const referencedRow = this.el.querySelector(`#${rowId}`) as HTMLWmTagInputRowElement;\r\n const isLocked = referencedRow.locked;\r\n\r\n if (!isLocked) {\r\n if (this.includesCaseInsensitive(this.tagsList, rowId)) {\r\n this.removeTag(rowId);\r\n } else if (!this.tagLimitReached) {\r\n this.addTag(rowId);\r\n this.resetInput();\r\n }\r\n }\r\n }\r\n\r\n handleTagAreaKeyDown(ev: KeyboardEvent) {\r\n switch (ev.key) {\r\n case \"ArrowLeft\":\r\n case \"ArrowUp\":\r\n ev.preventDefault();\r\n this.moveLeftTag();\r\n break;\r\n case \"ArrowRight\":\r\n case \"ArrowDown\":\r\n ev.preventDefault();\r\n this.moveRightTag();\r\n break;\r\n case \"Backspace\":\r\n case \"Delete\":\r\n this.handleTagAreaDelete();\r\n break;\r\n }\r\n }\r\n\r\n handleTagAreaDelete() {\r\n const isLocked = this.focusedTag && this.focusedTag.classList.contains(\"locked\");\r\n\r\n if (this.focusedTag && this.focusedTag.dataset.tag && !isLocked) {\r\n this.removeTag(this.focusedTag.dataset.tag);\r\n\r\n if (this.nonLockedTagsList.length === 0) {\r\n // focus input if no tags are left\r\n this.inputEl.focus();\r\n } else if (this.focusedTag === this.tagEls[this.tagEls.length - 1]) {\r\n // reassign focus if removing the last tag but there are still tags remaining\r\n this.focusedTag = this.tagEls[this.tagEls.length - 2];\r\n this.focusTag(this.focusedTag);\r\n }\r\n }\r\n }\r\n\r\n handleBlur(ev: FocusEvent, component: HTMLElement) {\r\n const isntElOrChild =\r\n ev.relatedTarget !== component && !this.el.shadowRoot!.contains(ev.relatedTarget as HTMLElement);\r\n\r\n this.dismissTooltip();\r\n this.clearCellFocus();\r\n\r\n if (isntElOrChild) {\r\n this.fieldWrapperEl.classList.remove(\"focused\");\r\n if (this.tagInputType === \"dropdown\") {\r\n this.closeDropdown();\r\n }\r\n }\r\n }\r\n\r\n handleCellMouseEnter(ev: MouseEvent) {\r\n const cell = ev.target as HTMLElement;\r\n const contentWrapper = cell.querySelector(\".cell-content-wrapper\")!;\r\n const isTruncated = contentWrapper.scrollWidth > contentWrapper.clientWidth;\r\n\r\n if (isTruncated) {\r\n // innerText is necessary vs textContent, as innerText ignores sr-only / display: none text\r\n showTooltip(\"bottom\", cell, cell.innerText!);\r\n this.tooltipVisible = true;\r\n }\r\n }\r\n\r\n handleTagAreaFocus() {\r\n if (this.tagInputType === \"dropdown\") {\r\n this.closeDropdown();\r\n }\r\n\r\n const firstFocusableTag = this.nonLockedTagEls[0];\r\n firstFocusableTag && this.focusTag(firstFocusableTag);\r\n }\r\n\r\n handleRemoveButtonClick(tag: string) {\r\n this.moveLeftTag();\r\n this.removeTag(tag);\r\n }\r\n\r\n moveDownListItem() {\r\n if (this.listItemEls.length > 0) {\r\n const firstListItem = this.listItemEls[0];\r\n\r\n if (!this.focusedListItem) {\r\n this.focusListItem(firstListItem);\r\n } else if (this.focusedListItem.nextElementSibling) {\r\n this.focusListItem(this.focusedListItem.nextElementSibling as HTMLLIElement);\r\n } else {\r\n this.focusListItem(firstListItem);\r\n }\r\n }\r\n }\r\n\r\n moveUpListItem() {\r\n if (this.listItemEls.length > 0) {\r\n const lastListItem = this.listItemEls[this.listItemEls.length - 1];\r\n\r\n if (!this.focusedListItem) {\r\n this.focusListItem(lastListItem);\r\n } else if (this.focusedListItem.previousElementSibling) {\r\n this.focusListItem(this.focusedListItem.previousElementSibling as HTMLLIElement);\r\n } else {\r\n this.clearListItemFocus();\r\n }\r\n }\r\n }\r\n\r\n moveDownRow() {\r\n if (this.filteredRows.length > 0) {\r\n if (this.tablePosition.row === 0) {\r\n this.tablePosition.row = 1;\r\n } else if (this.tablePosition.row === this.filteredRows.length) {\r\n this.tablePosition.row = 1;\r\n } else {\r\n this.tablePosition.row++;\r\n }\r\n\r\n // skip locked rows\r\n const rowToFocus = this.wmRowEls[this.tablePosition.row - 1] as HTMLWmTagInputRowElement;\r\n if (rowToFocus.locked) {\r\n this.moveDownRow();\r\n } else {\r\n this.focusCell(this.tablePosition);\r\n }\r\n }\r\n }\r\n\r\n moveUpRow() {\r\n if (this.filteredRows.length > 0) {\r\n if (this.tablePosition.row === 0) {\r\n this.tablePosition.row = this.filteredRows.length;\r\n } else if (this.tablePosition.row === 1) {\r\n this.tablePosition.row = 0;\r\n } else {\r\n this.tablePosition.row--;\r\n }\r\n\r\n // skip locked rows\r\n const rowToFocus = this.wmRowEls[this.tablePosition.row - 1] as HTMLWmTagInputRowElement;\r\n if (rowToFocus && rowToFocus.locked) {\r\n this.moveUpRow();\r\n } else if (rowToFocus) {\r\n this.focusCell(this.tablePosition);\r\n } else {\r\n this.clearCellFocus();\r\n }\r\n }\r\n }\r\n\r\n moveLeftCell() {\r\n if (this.tablePosition.column != 1) {\r\n this.tablePosition.column--;\r\n this.focusCell(this.tablePosition);\r\n }\r\n }\r\n\r\n moveRightCell() {\r\n const numCols = csvToArray(this.colHeaders).length;\r\n\r\n if (this.tablePosition.column < numCols) {\r\n this.tablePosition.column++;\r\n this.focusCell(this.tablePosition);\r\n }\r\n }\r\n\r\n moveLeftTag() {\r\n const lastTag = this.tagEls[this.tagEls.length - 1];\r\n if (this.focusedTag && this.tagEls.includes(this.focusedTag.previousElementSibling as HTMLLIElement)) {\r\n this.focusedTag = this.focusedTag.previousElementSibling as HTMLLIElement;\r\n } else {\r\n this.focusedTag = lastTag;\r\n }\r\n // skip locked tags\r\n if (this.focusedTag.classList.contains(\"locked\") && this.nonLockedTagEls.length > 0) {\r\n this.moveLeftTag();\r\n } else {\r\n this.focusTag(this.focusedTag);\r\n }\r\n }\r\n\r\n moveRightTag() {\r\n const firstTag = this.tagEls[0];\r\n if (this.focusedTag && this.tagEls.includes(this.focusedTag.nextElementSibling as HTMLLIElement)) {\r\n this.focusedTag = this.focusedTag.nextElementSibling as HTMLLIElement;\r\n } else {\r\n this.focusedTag = firstTag;\r\n }\r\n // skip locked tags\r\n if (this.focusedTag.classList.contains(\"locked\")) {\r\n this.moveRightTag();\r\n } else {\r\n this.focusTag(this.focusedTag);\r\n }\r\n }\r\n\r\n addOption(option: string): string[] {\r\n let newOptionsList = this.optionsList;\r\n const optionAlreadyExists = this.includesCaseInsensitive(this.optionsList, option);\r\n if (!optionAlreadyExists) {\r\n newOptionsList = newOptionsList.concat(option);\r\n }\r\n return newOptionsList;\r\n }\r\n\r\n removeOption(option: string) {\r\n this.optionsList = this.filterCaseInsensitive(this.optionsList, option);\r\n }\r\n\r\n addTag(tag: string): void {\r\n let newTagsList = this.tagsList;\r\n const tagAlreadyAdded = this.includesCaseInsensitive(this.tagsList, tag);\r\n const tagExistsAsOption = this.optionsList.filter((x) => x.toLowerCase() === tag.toLowerCase())[0];\r\n\r\n if (!tagAlreadyAdded) {\r\n let textToAnnounce = tag;\r\n if (this.tagInputType === \"table\") {\r\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\r\n textToAnnounce = referencedRow.col1!;\r\n }\r\n this.announce(this.generateTagAddedMessage(textToAnnounce));\r\n this.tagsList = newTagsList.concat(tagExistsAsOption || tag);\r\n // if maxTags has been reached, focus should go to the tagArea\r\n if (this.tagLimitReached) {\r\n this.tagAreaEl.focus();\r\n }\r\n }\r\n }\r\n\r\n removeTag(tag: string) {\r\n let textToAnnounce = tag;\r\n if (this.tagInputType === \"table\") {\r\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\r\n textToAnnounce = referencedRow.col1!;\r\n }\r\n const tagRemovedMessage = intl.formatMessage(\r\n { id: \"tagInput.tagRemoved\", defaultMessage: \"{tag} removed\" },\r\n { tag: textToAnnounce }\r\n );\r\n this.announce(tagRemovedMessage);\r\n this.tagsList = this.filterCaseInsensitive(this.tagsList, tag);\r\n\r\n if (this.tagInputType === \"dropdown\") {\r\n // if a tag was introduced by the user, also remove it from the dropdown options\r\n const devOptionsList = csvToArray(this.options);\r\n if (this.includesCaseInsensitive(this.optionsList, tag) && !this.includesCaseInsensitive(devOptionsList, tag)) {\r\n this.removeOption(tag);\r\n }\r\n }\r\n }\r\n\r\n focusListItem(item: HTMLLIElement): void {\r\n this.focusedListItem = item;\r\n this.inputEl.setAttribute(\"aria-activedescendant\", this.focusedListItem.id);\r\n item.scrollIntoView({ block: \"nearest\" });\r\n }\r\n\r\n focusTag(element: HTMLLIElement): void {\r\n if (element.classList.contains(\"locked\")) {\r\n this.focusedTag = null;\r\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", \"\");\r\n } else {\r\n this.focusedTag = element;\r\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", this.focusedTag.id);\r\n }\r\n }\r\n\r\n focusCell(position: TablePosition) {\r\n this.clearCellFocus(false);\r\n\r\n if (position.row) {\r\n const rowToFocus = this.localRowEls[position.row];\r\n const rowCells = rowToFocus.querySelectorAll(\"td\");\r\n const cellToFocus = rowCells[position.column - 1];\r\n const contentWrapper = cellToFocus.querySelector(\".cell-content-wrapper\")!;\r\n const isTruncated = contentWrapper.scrollWidth > contentWrapper.clientWidth;\r\n\r\n rowToFocus.classList.add(\"focused\");\r\n cellToFocus.classList.add(\"focused\");\r\n cellToFocus.scrollIntoView({ block: \"nearest\" });\r\n this.inputEl.setAttribute(\"aria-activedescendant\", cellToFocus.id);\r\n\r\n this.dismissTooltip();\r\n if (isTruncated) {\r\n // innerText is necessary vs textContent, as innerText ignores sr-only / display: none text\r\n showTooltip(\"bottom\", cellToFocus, cellToFocus.innerText!);\r\n this.tooltipVisible = true;\r\n }\r\n }\r\n }\r\n\r\n clearTagFocus() {\r\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", \"\");\r\n this.focusedTag = null;\r\n }\r\n\r\n clearCellFocus(resetPosition: boolean = true) {\r\n this.inputEl.setAttribute(\"aria-activedescendant\", \"\");\r\n if (resetPosition) {\r\n this.tablePosition = { row: 0, column: 1 };\r\n }\r\n\r\n this.localRowEls.forEach((row) => {\r\n row.classList.remove(\"focused\");\r\n row.querySelectorAll(\"td\").forEach((cell) => {\r\n cell.classList.remove(\"focused\");\r\n });\r\n });\r\n }\r\n\r\n openDropdown() {\r\n // given an offset of -2px because the dropdown is transformed downwards to avoid overlapping the focus border\r\n this.openUp = shouldOpenUp(this.el, this.dropdownEl, this.el.clientHeight, -2);\r\n this.isExpanded = true;\r\n }\r\n\r\n closeDropdown() {\r\n this.clearListItemFocus();\r\n this.isExpanded = false;\r\n }\r\n\r\n clearListItemFocus() {\r\n this.focusedListItem = null;\r\n this.inputEl.setAttribute(\"aria-activedescendant\", \"\");\r\n\r\n this.listItemEls.forEach((el) => {\r\n el.classList.remove(\"focused\");\r\n });\r\n }\r\n\r\n resetInput() {\r\n this.charCount = 0;\r\n this.inputEl.value = \"\";\r\n }\r\n\r\n announce(message: string) {\r\n // \\u00A0 is a non-breaking space character, which causes the message to be read as a new one\r\n if (this.liveRegionEl.textContent === message) {\r\n message += \"\\u00A0\";\r\n }\r\n this.liveRegionMessage = message;\r\n }\r\n\r\n announceExistingOptions() {\r\n // request animation frame to wait for re-rendering of filtered options\r\n window.requestAnimationFrame(() => {\r\n let numResults = 0;\r\n\r\n if (this.tagInputType === \"dropdown\") {\r\n numResults = this.optionEls.length;\r\n } else if (this.tagInputType === \"table\") {\r\n numResults = this.filteredRows.length;\r\n }\r\n\r\n const existingOptionsMessage = intl.formatMessage(\r\n {\r\n id: \"tagInput.existingOptions\",\r\n defaultMessage: \"{num, plural, one {1 existing option.} other {# existing options.}}\",\r\n },\r\n { num: numResults }\r\n );\r\n\r\n this.announce(existingOptionsMessage);\r\n });\r\n }\r\n\r\n announceCharacterLimitWarning(charCount: number, charLimit: number) {\r\n const charactersEnteredMessage = intl.formatMessage(\r\n {\r\n id: \"global.charactersEntered\",\r\n defaultMessage: \"{x, number} of {y, number} characters entered.\",\r\n description: \"for screen readers\",\r\n },\r\n { x: charCount, y: charLimit }\r\n );\r\n\r\n const characterLimitReachedMessage = intl.formatMessage({\r\n id: \"global.characterLimitReached\",\r\n defaultMessage: \"No additional characters will be entered.\",\r\n description: \"for screen readers\",\r\n });\r\n\r\n this.announce(`${charactersEnteredMessage}${charCount >= charLimit ? \" \" + characterLimitReachedMessage : \"\"}`);\r\n }\r\n\r\n positionInput() {\r\n const lastTag = this.tagEls[this.tagEls.length - 1];\r\n // default placement to fall back to when no tags are present, or not enough space is available\r\n this.inputEl.style.position = \"static\";\r\n this.inputEl.style.width = \"100%\";\r\n\r\n if (lastTag) {\r\n const spaceAvailable = this.tagAreaEl.getBoundingClientRect().right - lastTag.getBoundingClientRect().right;\r\n if (spaceAvailable >= this.inputMinimumWidth) {\r\n // because the input has right: 0px\r\n // all thats needed to properly place it is setting position: absolute, top, and width\r\n this.inputEl.style.position = \"absolute\";\r\n this.inputEl.style.top = lastTag.offsetTop.toString() + \"px\";\r\n this.inputEl.style.width =\r\n (this.tagAreaEl.getBoundingClientRect().right - lastTag.getBoundingClientRect().right - 8).toString() + \"px\";\r\n }\r\n }\r\n }\r\n\r\n /// Helpers\r\n\r\n listToCSV(list: string[]): string {\r\n return list.join(\",\");\r\n }\r\n\r\n includesCaseInsensitive(list: string[], element: string): boolean {\r\n const lowercaseList = list.map((str) => str.toLowerCase());\r\n return lowercaseList.includes(element.toLowerCase());\r\n }\r\n\r\n filterCaseInsensitive(list: string[], element: string): string[] {\r\n return list.filter((x) => x.toLowerCase() !== element.toLowerCase());\r\n }\r\n\r\n sortCaseInsensitive(list: string[]) {\r\n // The vanilla .sort method places words that start with capital letters above others (ASCII order)\r\n // so we need to pass in our own compare function to sort case-insensitive\r\n return list.sort((a, b) => {\r\n a = a.toLowerCase();\r\n b = b.toLowerCase();\r\n return a > b ? 1 : a < b ? -1 : 0;\r\n });\r\n }\r\n\r\n /// Renders\r\n\r\n renderTags() {\r\n let lockedTags: HTMLLIElement[] = [];\r\n let unlockedTags: HTMLLIElement[] = [];\r\n\r\n this.tagsList.forEach((tag, idx) => {\r\n const id = `tag${idx + 1}`;\r\n let tagText = \"\";\r\n let isLocked = false;\r\n\r\n if (this.tagInputType === \"dropdown\") {\r\n tagText = tag;\r\n } else if (this.tagInputType === \"table\") {\r\n // display table tags using col1 of the row with the same id\r\n // if one can't be found, display as empty\r\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\r\n tagText = referencedRow ? referencedRow.col1! : \"\";\r\n isLocked = referencedRow ? referencedRow.locked : false;\r\n }\r\n\r\n // make sure locked tags always appear in front of list\r\n const targetList = isLocked ? lockedTags : unlockedTags;\r\n targetList.push(\r\n <li\r\n id={id}\r\n class={`tag highlight ${this.focusedTag && this.focusedTag.id === id ? \"focused\" : \"\"} ${\r\n isLocked ? \"locked\" : \"\"\r\n }`}\r\n data-tag={tag}\r\n role=\"option\"\r\n >\r\n {tagText}\r\n {isLocked ? (\r\n <div class=\"icon lock\"></div>\r\n ) : (\r\n <button class=\"icon remove-btn\" tabIndex={-1} onClick={() => this.handleRemoveButtonClick(tag)}></button>\r\n )}\r\n </li>\r\n );\r\n });\r\n\r\n return [...lockedTags, ...unlockedTags];\r\n }\r\n\r\n renderDropdown() {\r\n return (\r\n <div\r\n class={`dropdown-wrapper ${this.isExpanded ? \"open\" : \"\"} ${this.openUp ? \"upwards\" : \"\"}`}\r\n ref={(el) => (this.dropdownEl = el as HTMLDivElement)}\r\n >\r\n <div id=\"help-text\" class=\"help-text\">\r\n {this.renderHelpText()}\r\n </div>\r\n <ul\r\n class=\"dropdown\"\r\n id=\"dropdown\"\r\n role=\"listbox\"\r\n aria-multiselectable=\"true\"\r\n aria-expanded={this.isExpanded ? \"true\" : false}\r\n aria-label={this.label}\r\n tabindex={-1}\r\n >\r\n {this.inputEl && this.renderAddNewButton()}\r\n {this.renderListItems(this.optionsList)}\r\n </ul>\r\n </div>\r\n );\r\n }\r\n\r\n renderListItems(optionsList: string[]) {\r\n optionsList = this.sortCaseInsensitive(optionsList);\r\n\r\n // filter by input\r\n if (this.inputEl && this.inputEl.value) {\r\n optionsList = this.optionsList.filter((option) =>\r\n option.toLowerCase().includes(this.inputEl.value.toLowerCase())\r\n );\r\n }\r\n\r\n return optionsList.map((option, idx) => {\r\n const id = `option${idx + 1}`;\r\n const isFocused = this.focusedListItem && this.focusedListItem.id === id;\r\n const isSelected = this.includesCaseInsensitive(this.tagsList, option);\r\n\r\n return (\r\n <li\r\n class={`option ${isFocused ? \"focused\" : \"\"}`}\r\n role=\"option\"\r\n id={id}\r\n data-option={option}\r\n aria-selected={isSelected ? \"true\" : \"false\"}\r\n aria-disabled={isSelected ? \"true\" : \"false\"}\r\n onKeyDown={(ev) => this.handleListItemKeyDown(ev)}\r\n onBlur={(ev) => this.handleBlur(ev, this.el)}\r\n onClick={(ev) => this.handleListItemClick(ev.target as HTMLElement)}\r\n >\r\n {option}\r\n </li>\r\n );\r\n });\r\n }\r\n\r\n renderAddNewButton() {\r\n const hasNonWhiteSpaceCharacters = this.inputEl.value.match(/\\S/);\r\n const optionAlreadyExists = this.includesCaseInsensitive(this.optionsList, this.inputEl.value.trim());\r\n if (this.addNew && hasNonWhiteSpaceCharacters && !optionAlreadyExists) {\r\n const id = `add-new-btn`;\r\n const isFocused = this.focusedListItem && this.focusedListItem.id === id;\r\n return (\r\n <li\r\n role=\"option\"\r\n class={`add-new-btn ${isFocused ? \"focused\" : \"\"}`}\r\n id={id}\r\n data-option={this.inputEl.value}\r\n onKeyDown={(ev) => this.handleListItemKeyDown(ev)}\r\n onBlur={(ev) => this.handleBlur(ev, this.el)}\r\n onClick={(ev) => this.handleListItemClick(ev.target as HTMLElement)}\r\n tabIndex={isFocused ? 0 : -1}\r\n >\r\n {`Add \"${this.inputEl.value.trim()}\"`}\r\n </li>\r\n );\r\n } else return \"\";\r\n }\r\n\r\n renderHelpText() {\r\n let helpText = \"\";\r\n\r\n if (this.optionsList.length > 0) {\r\n helpText += this.componentMessages.selectionHelpText;\r\n }\r\n if (this.addNew) {\r\n helpText += \" \" + this.componentMessages.addNewHelpText;\r\n }\r\n\r\n return helpText;\r\n }\r\n\r\n renderTagCounter() {\r\n if (this.maxTags) {\r\n return (\r\n <div class=\"lower-row\">\r\n <div id=\"max-tags\">\r\n {`${this.componentMessages.tagsAdded}: ${this.tagsList.length}/${this.maxTags}`}\r\n {this.tagLimitReached && ` - ${this.componentMessages.maxTagsReached}`}\r\n </div>\r\n </div>\r\n );\r\n }\r\n }\r\n\r\n renderTable() {\r\n return (\r\n <div class=\"table-wrapper\" onScroll={() => this.dismissTooltip()}>\r\n <table\r\n id=\"table\"\r\n role=\"grid\"\r\n class={`${this.colWidths ? \"fixed-widths\" : \"\"}`}\r\n aria-label={this.label}\r\n aria-multiselectable=\"true\"\r\n >\r\n {this.renderTableHeaders()}\r\n {this.filteredRows.length ? this.renderTableRows() : <div class=\"no-results\">{this.noResultsMessage}</div>}\r\n </table>\r\n </div>\r\n );\r\n }\r\n\r\n renderTableHeaders() {\r\n return (\r\n <tr class=\"headers\" role=\"row\">\r\n {csvToArray(this.colHeaders).map((header, idx) => {\r\n let overflowRule = \"wrap\";\r\n if (this.colWrap && csvToArray(this.colWrap)[idx]) {\r\n overflowRule = csvToArray(this.colWrap)[idx];\r\n }\r\n return (\r\n <th\r\n class={`header-cell ${overflowRule}`}\r\n role=\"columnheader\"\r\n // @ts-ignore\r\n width={this.colWidths ? csvToArray(this.colWidths)[idx] : \"\"}\r\n >\r\n {header}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n );\r\n }\r\n\r\n renderTableRows() {\r\n return this.filteredRows.map((row) => {\r\n const isSelected: boolean = this.includesCaseInsensitive(this.tagsList, row.id);\r\n\r\n return (\r\n <tr\r\n id={row.id}\r\n class={`${row.locked ? \"locked\" : \"\"} ${isSelected ? \"selected\" : \"\"}`}\r\n role=\"row\"\r\n onClick={() => this.handleTableRowClick(row.id)}\r\n >\r\n {this.renderTableCells(row)}\r\n </tr>\r\n );\r\n });\r\n }\r\n\r\n renderTableCells(row: HTMLWmTagInputRowElement) {\r\n const colValues = [row.col1, row.col2, row.col3, row.col4].filter((val) => !!val);\r\n const isSelected: boolean = this.includesCaseInsensitive(this.tagsList, row.id);\r\n\r\n return colValues.map((val, idx) => {\r\n const localId = `${row.id}-col${idx + 1}`;\r\n let overflowRule = \"wrap\";\r\n if (this.colWrap && csvToArray(this.colWrap)[idx]) {\r\n overflowRule = csvToArray(this.colWrap)[idx];\r\n }\r\n\r\n return (\r\n <td\r\n id={localId}\r\n role=\"gridcell\"\r\n aria-describedby={`${localId}-description`}\r\n aria-selected={isSelected.toString()}\r\n onMouseEnter={(ev) => this.handleCellMouseEnter(ev)}\r\n onMouseLeave={() => this.dismissTooltip()}\r\n >\r\n <div class={`cell-content-wrapper ${overflowRule}`}>{val}</div>\r\n <div class=\"description\" id={`${localId}-description`}>\r\n {row.locked ? \"locked\" : \"\"}\r\n </div>\r\n </td>\r\n );\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <Host id={this.uid}>\r\n <div class={`wrapper label-${this.labelPosition} ${this.errorMessage ? \"invalid\" : \"\"}`}>\r\n <div class=\"label-wrapper\">\r\n <label class=\"label\" htmlFor={`input${this.uid}`}>\r\n {this.label}\r\n {this.requiredField && (\r\n <span class=\"required\" aria-hidden=\"true\">\r\n *\r\n </span>\r\n )}\r\n </label>\r\n </div>\r\n <div\r\n class={`field-wrapper ${this.focusedElement ? \"focused\" : \"\"} ${this.errorMessage ? \"invalid\" : \"\"}`}\r\n ref={(el) => (this.fieldWrapperEl = el as HTMLDivElement)}\r\n >\r\n <div class=\"upper-row\">\r\n <div class=\"tags-and-input-wrapper\">\r\n {this.tagsList.length > 0 && (\r\n <ul\r\n ref={(el) => (this.tagAreaEl = el as HTMLUListElement)}\r\n class=\"tag-area\"\r\n role=\"listbox\"\r\n aria-activedescendant=\"\"\r\n aria-orientation=\"horizontal\"\r\n aria-label={`${this.label} ${\r\n this.tagsList.length > 0 ? this.componentMessages.tagAreaInstructions : \"\"\r\n }`}\r\n tabindex={this.nonLockedTagsList.length > 0 ? 0 : -1}\r\n aria-describedby={`info max-tags`}\r\n onFocus={() => this.handleTagAreaFocus()}\r\n onBlur={(ev) => {\r\n this.clearTagFocus();\r\n this.handleBlur(ev, this.el);\r\n }}\r\n onKeyDown={(ev) => this.handleTagAreaKeyDown(ev)}\r\n >\r\n {this.renderTags()}\r\n </ul>\r\n )}\r\n <input\r\n id={`input${this.uid}`}\r\n class={this.tagLimitReached ? \"hidden\" : \"\"}\r\n role=\"combobox\"\r\n ref={(el) => (this.inputEl = el as HTMLInputElement)}\r\n autocomplete=\"off\"\r\n aria-required={this.requiredField ? \"true\" : null}\r\n aria-controls={this.tagInputType}\r\n aria-describedby={`help-text${this.errorMessage ? \" error \" : \"\"}`}\r\n aria-label={`${this.label} ${\r\n this.tagInputType === \"dropdown\" ? this.generateCharacterLimitLabel(this.characterLimit) : \"\"\r\n }`}\r\n aria-expanded={this.tagInputType === \"dropdown\" ? this.isExpanded.toString() : null}\r\n placeholder={this.placeholder}\r\n maxLength={this.tagInputType === \"dropdown\" ? this.characterLimit : undefined}\r\n onInput={() => this.handleInputChanged(this.inputEl.value)}\r\n onBlur={(ev) => {\r\n this.handleBlur(ev, this.el);\r\n }}\r\n onFocus={() => this.handleInputFocus()}\r\n onKeyDown={(ev) => this.handleInputKeyDown(ev)}\r\n ></input>\r\n </div>\r\n {this.tagInputType === \"dropdown\" && (\r\n <div class=\"character-count\">\r\n {this.charCount}/{this.characterLimit}\r\n </div>\r\n )}\r\n </div>\r\n {this.renderTagCounter()}\r\n {this.tagInputType === \"dropdown\" && this.renderDropdown()}\r\n </div>\r\n {this.info && (\r\n <div id=\"info\" class=\"info-text\">\r\n {this.info}\r\n </div>\r\n )}\r\n {this.errorMessage && <div id=\"error\">{this.errorMessage}</div>}\r\n <div\r\n class=\"sr-only\"\r\n aria-live=\"assertive\"\r\n ref={(el) => (this.liveRegionEl = el as HTMLDivElement)}\r\n aria-atomic=\"true\"\r\n >\r\n {this.liveRegionMessage}\r\n </div>\r\n {this.tagInputType === \"table\" && this.renderTable()}\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["wmDatepickerCss","DatePicker","exports","this","lastCommittedValue","value","parsableEntry","isoEntry","eightDigitsEntry","dateFormats","US","intl","formatMessage","id","defaultMessage","INT","ISO","class_1","prototype","handleTabbingOn","dpWrapper","classList","add","handleTabbingOff","remove","handleError","errorMessage","generateError","clearError","processInput","handleInput","ev","target","handleBlur","shouldPreventValidation","preventValidation","isRelatedTarget","focusHandler","handlePopupBlurred","detail","relatedTarget","el","event","CustomEvent","dispatchEvent","getActiveElement","checkForFocusableElInShadow","document","activeElement","handleCellTriggered","dateElement","isoDate","getAttribute","textContent","inputEl","reformatDate","dateFormat","isFirstLoad","leftEmpty","requiredField","test","addSlashes","isValidDate","length","lastValidValue","wmDatepickerNewValidValue","emit","toFormat","date","dateArr","replace","split","padStart","join","input","parts","day","parseInt","month","year","monthLength","requiredDateErr","requiredFieldMessage","validDateErr","toLowerCase","displayError","substring","componentWillLoad","label","console","error","uid","generateId","componentDidLoad","render","_this","h","Host","class","concat","invalid","ref","d","labelPosition","htmlFor","title","disabled","type","name","placeholder","onFocus","bind","onInput","onBlur","Date","parentId"],"sources":["src/components/wm-datepicker/wm-datepicker.scss?tag=wm-datepicker&encapsulation=shadow","src/components/wm-datepicker/wm-datepicker.tsx"],"sourcesContent":[":host,\r\nwm-datepicker {\r\n font-family: inherit;\r\n\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n @include label;\r\n\r\n .wrapper {\r\n position: relative;\r\n\r\n .required {\r\n color: $datepicker-required-input;\r\n }\r\n\r\n .inner-wrapper {\r\n @include displayFlex();\r\n align-items: center;\r\n height: rem-calc(40);\r\n border: 1px solid;\r\n border-color: $datepicker-input-border-color;\r\n @include border-radius(3px);\r\n max-width: 236px; /* input is 200px or smaller, button is 36px */\r\n justify-content: space-between;\r\n position: relative;\r\n\r\n .date-input {\r\n -moz-border-top-left-radius: 3px;\r\n -webkit-border-top-left-radius: 3px;\r\n border-top-left-radius: 3px;\r\n -moz-border-bottom-left-radius: 3px;\r\n -webkit-border-bottom-left-radius: 3px;\r\n border-bottom-left-radius: 3px;\r\n border: none;\r\n font-size: rem-calc(14);\r\n padding: rem-calc(10 15 8);\r\n min-width: 0;\r\n height: 100%;\r\n flex: 1;\r\n margin: 0;\r\n\r\n &:disabled {\r\n background-color: $input-disabled-bg;\r\n color: $input-disabled-color;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n }\r\n }\r\n\r\n &.invalid {\r\n .inner-wrapper {\r\n @include invalidBorder;\r\n }\r\n\r\n .error {\r\n @include errorMessage;\r\n margin-bottom: 4px;\r\n top: 100%;\r\n left: 0;\r\n }\r\n }\r\n\r\n &.focus {\r\n .inner-wrapper {\r\n @include field-focus;\r\n }\r\n }\r\n }\r\n\r\n .user-is-tabbing {\r\n .toggle:focus {\r\n &:not(:active) {\r\n border: none;\r\n z-index: 11;\r\n }\r\n }\r\n }\r\n}\r\n","import { h, Component, Host, Element, Event, EventEmitter, Prop, Listen, Watch, State } from \"@stencil/core\";\r\nimport { generateId, checkForFocusableElInShadow, intl, isRelatedTarget } from \"../../global/functions\";\r\n\r\n@Component({\r\n tag: \"wm-datepicker\",\r\n styleUrl: \"wm-datepicker.scss\",\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class DatePicker {\r\n @Element() el!: HTMLWmDatepickerElement;\r\n private dpWrapper!: HTMLDivElement;\r\n private inputEl!: HTMLInputElement;\r\n\r\n @Prop({ mutable: true }) value?: string = \"\";\r\n @Prop() disabled: boolean = false;\r\n @Prop({ mutable: true }) dateFormat: string = \"US\";\r\n @Prop({ reflect: true }) errorMessage: string = \"\";\r\n @Prop({ mutable: true }) labelPosition: \"top\" | \"left\" | \"none\" = \"top\";\r\n @Prop({ mutable: true }) label: string = \"\";\r\n @Prop() requiredField: boolean = false;\r\n @Prop() requiredFieldMessage?: string;\r\n @Prop() preventValidation?: string; // id or series of ids, validation will not occur when clicking an element with this id\r\n @State() displayError: string = \"\";\r\n @Event() wmDatepickerNewValidValue!: EventEmitter;\r\n\r\n // we only want to fire the \"change\" event if the value has actually changed (that's\r\n // how native elements do it), so we need to keep in state the last committed value.\r\n private lastCommittedValue?: string = this.value;\r\n private lastValidValue?: string;\r\n private uid!: string;\r\n\r\n // 1, 2, or 4 digits, separator, 1 or 2 digits, separator, then 1 or 2 or 4 digits\r\n private parsableEntry = /^(\\d{1}|\\d{2}|\\d{4})[\\-\\.\\/]\\d{1,2}[\\-\\.\\/](\\d{1}|\\d{2}|\\d{4})$/;\r\n private isoEntry = /^\\d\\d\\d\\d[-]\\d\\d[-]\\d\\d$/;\r\n private eightDigitsEntry = /^\\d{8}$/;\r\n\r\n dateFormats: any = {\r\n US: intl.formatMessage({\r\n id: \"date.formatUS\",\r\n defaultMessage: \"mm/dd/yyyy\",\r\n }),\r\n INT: intl.formatMessage({\r\n id: \"date.formatINT\",\r\n defaultMessage: \"dd/mm/yyyy\",\r\n }),\r\n ISO: intl.formatMessage({\r\n id: \"date.formatISO\",\r\n defaultMessage: \"yyyy/mm/dd\",\r\n }),\r\n };\r\n\r\n @Listen(\"keydown\")\r\n handleTabbingOn() {\r\n this.dpWrapper && this.dpWrapper.classList.add(\"user-is-tabbing\");\r\n }\r\n\r\n @Listen(\"click\")\r\n handleTabbingOff() {\r\n this.dpWrapper && this.dpWrapper.classList.remove(\"user-is-tabbing\");\r\n }\r\n\r\n @Watch(\"errorMessage\")\r\n handleError() {\r\n if (this.errorMessage) {\r\n this.generateError();\r\n } else {\r\n this.clearError();\r\n this.processInput();\r\n }\r\n }\r\n\r\n handleInput(ev: Event) {\r\n // keep component's value in sync with input's value\r\n // validation only happens on blur and initial load,\r\n // but component's value should reflect user input at any time\r\n this.value = (ev.target! as HTMLInputElement).value; // same as this.inputEl.value\r\n }\r\n\r\n // this is input blur, not component blur\r\n handleBlur(ev: FocusEvent) {\r\n // do not validate if clicking to an element that should prevent validation (e.g. close button on modal)\r\n const shouldPreventValidation = this.preventValidation && isRelatedTarget(ev, this.preventValidation);\r\n if (!shouldPreventValidation) {\r\n this.processInput();\r\n }\r\n this.dpWrapper.classList.remove(\"focus\");\r\n }\r\n\r\n // this is input focus, not component focus\r\n focusHandler() {\r\n this.dpWrapper.classList.add(\"focus\");\r\n }\r\n\r\n @Listen(\"popupBlurred\")\r\n handlePopupBlurred(ev: CustomEvent) {\r\n // emit blur event when leaving component from priv-datepicker\r\n if (ev.detail.relatedTarget !== this.el) {\r\n const event = new CustomEvent(\"blur\");\r\n // @ts-ignore\r\n event.relatedTarget = ev.detail.relatedTarget;\r\n this.el.dispatchEvent(event);\r\n }\r\n }\r\n\r\n getActiveElement() {\r\n return checkForFocusableElInShadow(document.activeElement as HTMLElement);\r\n }\r\n\r\n @Listen(\"cellTriggered\")\r\n handleCellTriggered(ev: CustomEvent) {\r\n let dateElement = ev.detail as HTMLTableCellElement;\r\n let isoDate =\r\n dateElement.getAttribute(\"data-year\")! +\r\n \"-\" +\r\n dateElement.getAttribute(\"data-month\")! +\r\n \"-\" +\r\n dateElement.textContent!;\r\n this.inputEl.value = this.reformatDate(this.dateFormat, isoDate);\r\n this.processInput();\r\n\r\n // Create event to trigger onInput function on host element, to get the updated value\r\n // Because there are more ways to input than just typing, we are firing this event upon cellTriggered\r\n const event = new CustomEvent(\"input\");\r\n this.el.dispatchEvent(event);\r\n }\r\n\r\n processInput(isFirstLoad?: boolean) {\r\n // The required field error should not display on first load\r\n const leftEmpty = !isFirstLoad && this.requiredField;\r\n\r\n let isoDate = this.inputEl.value;\r\n\r\n //If input is 8 digits, add slashes as a courtesy and process anyway\r\n if (this.eightDigitsEntry.test(this.inputEl.value)) {\r\n this.inputEl.value = this.addSlashes(this.inputEl.value);\r\n }\r\n\r\n // if we don't have 2 separators we can't reformat so we'll return what was passed in\r\n if (this.parsableEntry.test(this.inputEl.value)) {\r\n //ISO format for submission\r\n isoDate = this.reformatDate(\"ISO\", this.inputEl.value);\r\n\r\n //User-specific format for display\r\n this.inputEl.value = this.reformatDate(this.dateFormat, isoDate);\r\n\r\n if (this.isValidDate(isoDate)) {\r\n //If there's no errorMessage on state, all errors can be cleared. If there IS an error message, it will clear any internal validation errors by overriding them.\r\n if (this.errorMessage) {\r\n this.generateError();\r\n } else {\r\n this.clearError();\r\n }\r\n //Prevents error from appearing if input field is empty\r\n } else if (this.inputEl.value.length) {\r\n this.generateError();\r\n }\r\n } else if (this.inputEl.value.length || leftEmpty || this.errorMessage) {\r\n this.generateError();\r\n } else if (!this.inputEl.value.length && !leftEmpty) {\r\n this.clearError();\r\n }\r\n\r\n // value is set to the reformated date or whatever the user passed\r\n this.value = isoDate;\r\n\r\n if (isoDate !== this.lastCommittedValue) {\r\n const event = new CustomEvent(\"change\");\r\n this.el.dispatchEvent(event);\r\n this.lastCommittedValue = this.value;\r\n }\r\n\r\n // event must fire after we set this.value\r\n // only fire if new valid value is different from the previous one\r\n if (this.isValidDate(isoDate) && isoDate !== this.lastValidValue) {\r\n this.wmDatepickerNewValidValue.emit();\r\n //Update prop passed into calendar to valid date\r\n this.lastValidValue = isoDate;\r\n }\r\n }\r\n\r\n // this function reformats date strings to/from the storage format ONLY. US -> INT and vice versa is not supported.\r\n reformatDate(toFormat: string, date?: string): string {\r\n if (!date) {\r\n return \"\";\r\n } else if (!this.parsableEntry.test(date)) {\r\n return date;\r\n } else {\r\n let dateArr = date.replace(/[\\-\\.]/gi, \"/\").split(\"/\");\r\n switch (toFormat) {\r\n case \"US\":\r\n case this.dateFormats[\"US\"]:\r\n return dateArr[1].padStart(2, \"0\") + \"/\" + dateArr[2].padStart(2, \"0\") + \"/\" + dateArr[0].padStart(4, \"20\");\r\n case \"INT\":\r\n case this.dateFormats[\"INT\"]:\r\n return dateArr[2].padStart(2, \"0\") + \"/\" + dateArr[1].padStart(2, \"0\") + \"/\" + dateArr[0].padStart(4, \"20\");\r\n case \"ISO\":\r\n case this.dateFormats[\"ISO\"]:\r\n if (this.dateFormat === \"US\" || this.dateFormat === this.dateFormats[\"US\"]) {\r\n return dateArr[2].padStart(4, \"20\") + \"-\" + dateArr[0].padStart(2, \"0\") + \"-\" + dateArr[1].padStart(2, \"0\");\r\n } else if (this.dateFormat === \"INT\" || this.dateFormat === this.dateFormats[\"INT\"]) {\r\n return dateArr[2].padStart(4, \"20\") + \"-\" + dateArr[1].padStart(2, \"0\") + \"-\" + dateArr[0].padStart(2, \"0\");\r\n } else if (this.dateFormat === \"ISO\" || this.dateFormat === this.dateFormats[\"ISO\"]) {\r\n return dateArr[0].padStart(4, \"20\") + \"-\" + dateArr[1].padStart(2, \"0\") + \"-\" + dateArr[2].padStart(2, \"0\");\r\n }\r\n default:\r\n return dateArr.join(\"/\");\r\n }\r\n }\r\n }\r\n\r\n isValidDate(input?: string) {\r\n // if it's not ISO it's not valid\r\n if (!input || !this.isoEntry.test(input)) {\r\n return false;\r\n } else {\r\n // Parse the ISO date parts to integers\r\n let parts = input.split(\"-\");\r\n let day = parseInt(parts[2], 10);\r\n let month = parseInt(parts[1], 10);\r\n let year = parseInt(parts[0], 10);\r\n // Check the ranges of month and year\r\n if (year < 1000 || year > 3000 || month == 0 || month > 12) return false;\r\n let monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n // Adjust for leap years\r\n if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) monthLength[1] = 29;\r\n // Check the range of the day\r\n return day > 0 && day <= monthLength[month - 1];\r\n }\r\n }\r\n\r\n generateError() {\r\n const requiredDateErr: string =\r\n this.requiredFieldMessage ||\r\n intl.formatMessage({\r\n id: \"date.requiredDateError\",\r\n defaultMessage: \"A date is required.\",\r\n });\r\n const validDateErr = intl.formatMessage(\r\n {\r\n id: \"date.invalidDate\",\r\n defaultMessage:\r\n \"Please enter a valid date in the format {dateFormat, select, us {mm/dd/yyyy} int {dd/mm/yyyy} other {yyyy/mm/dd}}.\",\r\n },\r\n { dateFormat: this.dateFormat.toLowerCase() }\r\n );\r\n if (this.errorMessage) {\r\n this.displayError = this.errorMessage;\r\n } else if (this.inputEl.value.length) {\r\n this.displayError = validDateErr;\r\n } else if (!this.inputEl.value.length && this.requiredField) {\r\n this.displayError = requiredDateErr;\r\n }\r\n }\r\n\r\n clearError() {\r\n this.displayError = \"\";\r\n }\r\n\r\n addSlashes(input: string) {\r\n if (this.dateFormat === \"ISO\" || this.dateFormat === this.dateFormats[\"ISO\"]) {\r\n return input.substring(0, 4) + \"/\" + input.substring(4, 6) + \"/\" + input.substring(6);\r\n } else {\r\n return input.substring(0, 2) + \"/\" + input.substring(2, 4) + \"/\" + input.substring(4);\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n if (this.label === \"\") {\r\n console.error(\r\n \"You must include a label prop for the datepicker input (for accessibility reasons), even if the label position is none.\"\r\n );\r\n }\r\n if (this.errorMessage) {\r\n this.generateError();\r\n }\r\n\r\n this.uid = this.el.id ? this.el.id : generateId();\r\n\r\n if (this.value && this.isValidDate(this.value)) {\r\n // update value passed into calendar so that it opens on the specified date\r\n this.lastValidValue = this.value;\r\n }\r\n }\r\n\r\n componentDidLoad() {\r\n // convert passed-in starting date from ISO to locale format, update displayed input to proper format\r\n this.inputEl.value = this.reformatDate(this.dateFormat, this.value);\r\n this.processInput(true);\r\n }\r\n\r\n render() {\r\n const dateFormat = intl.formatMessage(\r\n {\r\n id: \"date.format\",\r\n defaultMessage: \"{dateFormat, select, us {mm/dd/yyyy} int {dd/mm/yyyy} other {yyyy/mm/dd}}\",\r\n },\r\n { dateFormat: this.dateFormat.toLowerCase() }\r\n );\r\n return (\r\n <Host\r\n id={this.uid}\r\n aria-busy=\"false\"\r\n class={`${this.displayError ? \"invalid\" : \"\"}`}\r\n invalid={this.displayError ? \"true\" : null}\r\n >\r\n <div\r\n ref={(d) => (this.dpWrapper = d as HTMLDivElement)}\r\n class={`wrapper label-${this.labelPosition} ${this.displayError ? \"invalid\" : \"\"}`}\r\n >\r\n <div class=\"label-wrapper\">\r\n {this.labelPosition !== \"none\" && (\r\n <label\r\n id={`datepickerLabel-${this.uid}`}\r\n htmlFor={`date-input-${this.uid}`}\r\n class=\"label\"\r\n title={`${this.label} (${dateFormat})`}\r\n >\r\n {this.label}\r\n {this.requiredField && (\r\n <span aria-hidden=\"true\" class=\"required\">\r\n *\r\n </span>\r\n )}\r\n </label>\r\n )}\r\n </div>\r\n <div>\r\n <div class=\"inner-wrapper\">\r\n <input\r\n disabled={this.disabled}\r\n type=\"text\"\r\n id={`date-input-${this.uid}`}\r\n class=\"date-input\"\r\n name=\"date\"\r\n placeholder={dateFormat}\r\n onFocus={this.focusHandler.bind(this)}\r\n onInput={(ev) => this.handleInput(ev)}\r\n onBlur={(ev) => this.handleBlur(ev)}\r\n ref={(input) => (this.inputEl = input as HTMLInputElement)}\r\n aria-describedby={`error-${this.uid}`}\r\n aria-controls={`popup-${this.uid}`}\r\n aria-label={this.label}\r\n aria-required={this.requiredField ? \"true\" : null}\r\n />\r\n <priv-datepicker\r\n disabled={this.disabled}\r\n date={this.lastValidValue ? new Date(this.lastValidValue) : new Date()}\r\n parentId={this.uid}\r\n />\r\n </div>\r\n <div id={`error-${this.uid}`} class=\"error\" aria-live=\"assertive\" aria-atomic=\"true\">\r\n {this.displayError}\r\n </div>\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- var __spreadArray=this&&this.__spreadArray||function(a,n,s){if(s||arguments.length===2)for(var i=0,r=n.length,t;i<r;i++){if(t||!(i in n)){if(!t)t=Array.prototype.slice.call(n,0,i);t[i]=n[i]}}return a.concat(t||Array.prototype.slice.call(n))};System.register(["./p-7b2fc615.system.js","./p-bc28c815.system.js","./p-58b1415e.system.js"],(function(a){"use strict";var n,s,i,r,t,e,o,c,m;return{setters:[function(a){n=a.r;s=a.c;i=a.h;r=a.g},function(a){t=a.i;e=a.g;o=a.s;c=a.j},function(a){m=a.c}],execute:function(){var w='.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus:not(:active){-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-snackbar *{-webkit-box-sizing:border-box;box-sizing:border-box;margin:unset}:host .wm-snackbars,wm-snackbar .wm-snackbars{position:fixed;bottom:0;left:1.25rem;right:1.25rem;padding:0.25rem 0.625rem 1.875rem;z-index:2001;max-width:35.5rem;max-height:17.5rem;-webkit-overflow-scrolling:touch;overflow:auto}:host .wm-snackbars.empty,wm-snackbar .wm-snackbars.empty{-ms-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);-webkit-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);-moz-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);padding-top:0;padding-bottom:0}:host .wm-snackbars .wm-snack-wrapper,wm-snackbar .wm-snackbars .wm-snack-wrapper{width:100%;height:100%}:host .wm-snackbars .wm-snack-wrapper:not(:last-child),wm-snackbar .wm-snackbars .wm-snack-wrapper:not(:last-child){margin-bottom:1.25rem}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar{-webkit-box-shadow:0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);box-shadow:0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-ms-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);-webkit-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);-moz-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);font-size:0.875rem;color:#fff;padding:0.9375rem 1.875rem;background:#4a4a4a;opacity:0;left:0;position:relative;font-family:inherit}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link{letter-spacing:0;text-transform:none;font-size:0.875rem;border:none;background:transparent;padding-left:0;padding-right:0;height:auto;border-radius:0;line-height:1;color:#85dadf;margin:0 3.125rem 0 0.625rem;text-decoration:none;font-weight:600;cursor:pointer}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link.new-window::after,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link.new-window::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;display:inline;content:"\\f137";margin-left:0.25rem}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:hover,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:hover{text-decoration:underline}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:focus,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:focus{outline:none;border:none}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link::-moz-focus-inner,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link::-moz-focus-inner{border:0;outline:none}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar:not(:last-child),wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar:not(:last-child){margin-bottom:1.25rem}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar.active:not(button),wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar.active:not(button){opacity:1}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg{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;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;width:100%;position:relative;padding:0}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext{width:100%}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;border-radius:50%;background-color:#3b3b3b;color:#ffffff;cursor:pointer;border:none;font-size:1rem;padding:0;height:auto;line-height:1;min-width:2.75rem;min-height:2.75rem;text-align:center;letter-spacing:normal}@media screen and (min-width: 48rem){:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack{min-width:1.875rem;min-height:1.875rem}}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:before,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack: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:"\\f156"}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:hover,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:hover{background-color:#fff;color:#4a4a4a}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus{outline:none}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack::-moz-focus-inner,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack::-moz-focus-inner{border:0;outline:none}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:active,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack: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)}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .sr-only,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .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;top:0;left:0}:host .sr-only,wm-snackbar .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;top:0;left:0}.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus:not(:active)>.tooltip{clip:auto;width:auto;height:auto;opacity:1;-webkit-transition:opacity 500ms 500ms;transition:opacity 500ms 500ms;padding:0.375rem;top:2.75rem;left:2.75rem;white-space:nowrap;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media screen and (min-width: 48rem){.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus:not(:active)>.tooltip{top:2.0625rem;left:auto}}.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .link:focus:not(:active){outline:none;background:-webkit-gradient(linear, left top, right top, color-stop(66%, #85dadf), color-stop(0, transparent)) repeat-x;background:linear-gradient(90deg, #85dadf 66%, transparent 0) repeat-x;background-size:0.375rem 0.1875rem;background-position:0 1em;border-radius:0;line-height:normal}';var p=a("wm_snackbar",function(){function a(a){n(this,a);this.wmSnackbarSnackFinished=s(this,"wmSnackbarSnackFinished",7);this.userFinishedSnack=s(this,"userFinishedSnack",7);this.wmSnackbarActionTriggered=s(this,"wmSnackbarActionTriggered",7);this.userTriggeredAction=s(this,"userTriggeredAction",7);this.parsedNotifications=[];this.isTabbing=false;this.timers=[];this.newNotification=false;this.newWindowMessage=t.formatMessage({id:"global.newWindowLink",defaultMessage:"Opens in a new window."});this.notifications="[]"}a.prototype.updateSnacks=function(a){var n=this;var s=JSON.parse(a);var i=s.length;var r=this.parsedNotifications.length;this.parsedNotifications=[];for(var t=0;t<i;t++){var e={id:s[t].id.toString(),message:s[t].message.toString(),link:s[t].link.toString(),newWindow:!!s[t].newWindow};this.parsedNotifications=__spreadArray(__spreadArray([],this.parsedNotifications,true),[e],false)}if(r<this.parsedNotifications.length){var o=window.setTimeout((function(){return n.snackExpired()}),2e4);this.timers=__spreadArray([o],this.timers,true);this.storeElToFocusOnDismiss();this.newNotification=true}else{this.newNotification=false}};a.prototype.componentWillLoad=function(){this.uid=this.el.id?this.el.id:e()};a.prototype.componentDidUpdate=function(){this.isTabbing&&this.newNotification&&this.focusLinkAndDisableTimer();this.newNotification=false};a.prototype.toggleTabbingOn=function(){this.isTabbing=true};a.prototype.toggleTabbingOff=function(){this.isTabbing=false};a.prototype.focusLinkAndDisableTimer=function(){var a=this.parsedNotifications[0];if(a.link){var n=this.el.shadowRoot.querySelector("#action-".concat(a.id));n.focus();this.stopTimer(a)}};a.prototype.storeElToFocusOnDismiss=function(){var a=document.activeElement;while(a&&a.shadowRoot){a=a.shadowRoot.activeElement}this.focusOnDismiss=a};a.prototype.snackDismissed=function(a){this.endSnack(a);a.link&&this.isTabbing&&this.focusOnDismiss.focus()};a.prototype.snackExpired=function(){var a=this.parsedNotifications[this.parsedNotifications.length-1];this.endSnack(a)};a.prototype.endSnack=function(a){this.stopTimer(a);this.wmSnackbarSnackFinished.emit({id:a.id,message:a.message,link:a.link,newWindow:a.newWindow});this.userFinishedSnack.emit({id:a.id,message:a.message,link:a.link})};a.prototype.snackLinkClicked=function(a){this.stopTimer(a);this.wmSnackbarActionTriggered.emit({id:a.id,message:a.message,link:a.link,newWindow:a.newWindow});this.userTriggeredAction.emit({id:a.id,message:a.message,link:a.link})};a.prototype.stopTimer=function(a){var n=this;this.parsedNotifications.forEach((function(s,i){if(s.id===a.id){clearTimeout(n.timers[i]);n.timers=n.timers.filter((function(a,n){if(n!==i){return a}}))}}))};a.prototype.renderSnackbars=function(){var a=this;return this.parsedNotifications.map((function(n){return i("div",{class:"wm-snack-wrapper"},i("div",{id:"snack-".concat(a.uid),class:"wm-snackbar active neutral"},i("div",{class:"sr-only",tabindex:n.link?0:-1,onFocus:function(){return n.link&&a.snackDismissed(n)}}),i("div",{class:"wm-snackbarmsg"},i("div",{class:"msgtext"},i("span",null,n.message),n.link&&i("a",{id:"action-".concat(n.id),class:"link ".concat(n.newWindow?"new-window":""),"aria-label":"Click to ".concat(n.link,"...").concat(n.newWindow?" "+a.newWindowMessage:""),tabindex:0,onClick:function(){a.snackLinkClicked(n)},onKeyDown:function(s){return s.key==="Enter"&&a.snackLinkClicked(n)}},i("span",{"aria-hidden":"true"},n.link))),i("button",{id:"close-button-".concat(n.id),"aria-label":"Close this notification",class:"closesnack",tabindex:n.link?0:-1,onClick:function(){return a.snackDismissed(n)},onMouseEnter:function(a){return o("bottom",a.target,m)},onMouseLeave:function(){return c()},onFocus:function(n){return a.isTabbing&&o("bottom",n.target,m)},onBlur:function(){return c()}})),i("div",{class:"sr-only",tabindex:n.link?0:-1,onFocus:function(){return n.link&&a.snackDismissed(n)}})))}))};a.prototype.renderLiveRegion=function(){var a=this.parsedNotifications[0];var n=this.isTabbing?"":a.link;var s="".concat(a.message," ").concat(n);var i=this.el.shadowRoot.querySelector("#wm-live-region-".concat(this.uid));if(i){i.innerHTML="";var r=document.createElement("span");r.innerHTML=s;i.appendChild(r)}};a.prototype.render=function(){this.newNotification&&this.renderLiveRegion();var a=this.renderSnackbars();var n=this.parsedNotifications.length===0?"empty":"";return i("div",{class:"wm-snackbars ".concat(n," ").concat(this.isTabbing?"user-is-tabbing":"")},i("div",{class:"sr-only","aria-live":"polite","aria-atomic":"false",id:"wm-live-region-".concat(this.uid)}),a)};Object.defineProperty(a.prototype,"el",{get:function(){return r(this)},enumerable:false,configurable:true});Object.defineProperty(a,"watchers",{get:function(){return{notifications:["updateSnacks"]}},enumerable:false,configurable:true});return a}());p.style=w}}}));
2
- //# sourceMappingURL=p-f4a622a9.system.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["wmSnackbarCss","Snackbar","exports","this","parsedNotifications","isTabbing","timers","newNotification","newWindowMessage","intl","formatMessage","id","defaultMessage","class_1","prototype","updateSnacks","newValue","_this","parsedData","JSON","parse","length","prevNotificationsLength","i","toString","message","link","newWindow","__spreadArray","newTimer","window","setTimeout","snackExpired","storeElToFocusOnDismiss","componentWillLoad","uid","el","generateId","componentDidUpdate","focusLinkAndDisableTimer","toggleTabbingOn","toggleTabbingOff","latestNotification","shadowRoot","querySelector","concat","focus","stopTimer","triggeringButton","document","activeElement","focusOnDismiss","snackDismissed","notification","endSnack","wmSnackbarSnackFinished","emit","userFinishedSnack","snackLinkClicked","wmSnackbarActionTriggered","userTriggeredAction","forEach","notif","index","clearTimeout","filter","timer","ind","renderSnackbars","map","h","class","tabindex","onFocus","onClick","onKeyDown","ev","key","onMouseEnter","showTooltip","target","closeVerb","onMouseLeave","hideTooltip","onBlur","renderLiveRegion","srAnnouncement","region","innerHTML","wrapper","createElement","appendChild","render","snackbars","wrappingClass"],"sources":["src/components/wm-snackbar/wm-snackbar.scss?tag=wm-snackbar&encapsulation=shadow","src/components/wm-snackbar/wm-snackbar.tsx"],"sourcesContent":[":host,\r\nwm-snackbar {\r\n * {\r\n box-sizing: border-box;\r\n margin: unset; //Edge\r\n }\r\n\r\n .wm-snackbars {\r\n position: fixed;\r\n bottom: rem-calc(0);\r\n left: rem-calc(20);\r\n right: rem-calc(20);\r\n padding: rem-calc(4 10 30);\r\n z-index: 2001;\r\n max-width: rem-calc(568);\r\n max-height: rem-calc(280);\r\n -webkit-overflow-scrolling: touch;\r\n overflow: auto;\r\n\r\n &.empty {\r\n @include transition(all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1));\r\n padding-top: 0;\r\n padding-bottom: 0;\r\n }\r\n\r\n .wm-snack-wrapper {\r\n width: 100%;\r\n height: 100%;\r\n\r\n &:not(:last-child) {\r\n margin-bottom: rem-calc(20);\r\n }\r\n\r\n .wm-snackbar {\r\n @include shadow8;\r\n @include displayFlex;\r\n @include alignItems(center);\r\n @include transition(all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1));\r\n font-size: rem-calc(14);\r\n color: #fff;\r\n padding: rem-calc(15 30);\r\n background: #4a4a4a;\r\n opacity: 0;\r\n left: 0;\r\n position: relative;\r\n font-family: inherit;\r\n\r\n .link {\r\n letter-spacing: 0;\r\n text-transform: none;\r\n font-size: rem-calc(14);\r\n border: none;\r\n background: transparent;\r\n padding-left: 0;\r\n padding-right: 0;\r\n height: auto;\r\n border-radius: 0;\r\n line-height: 1;\r\n color: $snackbar-link-color;\r\n margin: rem-calc(0 50 0 10);\r\n text-decoration: none;\r\n font-weight: 600;\r\n cursor: pointer;\r\n\r\n &.new-window::after {\r\n @include mdi-icon;\r\n display: inline;\r\n content: \"\\f137\";\r\n margin-left: rem-calc(4);\r\n }\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n border: none;\r\n }\r\n\r\n &::-moz-focus-inner {\r\n border: 0;\r\n outline: none;\r\n }\r\n }\r\n\r\n &:not(:last-child) {\r\n margin-bottom: rem-calc(20);\r\n }\r\n\r\n &.active:not(button) {\r\n opacity: 1;\r\n }\r\n\r\n .wm-snackbarmsg {\r\n @include displayFlex;\r\n @include justifyContent(space-between);\r\n @include alignItems(center);\r\n // font-size: rem-calc(14);\r\n width: 100%;\r\n position: relative;\r\n padding: 0;\r\n\r\n .msgtext {\r\n width: 100%;\r\n }\r\n\r\n .closesnack {\r\n @include box-shadow(none);\r\n @include border-radius(50%);\r\n background-color: #3b3b3b;\r\n color: #ffffff;\r\n cursor: pointer;\r\n border: none;\r\n font-size: rem-calc(16);\r\n padding: 0;\r\n height: auto;\r\n line-height: 1;\r\n min-width: rem-calc(44);\r\n min-height: rem-calc(44);\r\n text-align: center;\r\n letter-spacing: normal;\r\n\r\n @media screen and (min-width: rem-calc(768)) {\r\n min-width: rem-calc(30);\r\n min-height: rem-calc(30);\r\n }\r\n\r\n &:before {\r\n @include mdi-icon;\r\n content: \"\\f156\";\r\n }\r\n\r\n &:hover {\r\n background-color: #fff;\r\n color: $snackbar-color;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &::-moz-focus-inner {\r\n border: 0;\r\n outline: none;\r\n }\r\n\r\n &:active {\r\n @include scale($xVal: 0.9, $yVal: 0.9);\r\n }\r\n }\r\n }\r\n\r\n .sr-only {\r\n @include srOnly;\r\n top: 0;\r\n left: 0;\r\n }\r\n }\r\n }\r\n }\r\n .sr-only {\r\n @include srOnly;\r\n top: 0;\r\n left: 0;\r\n }\r\n}\r\n.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus:not(:active) {\r\n @extend %focus-on-dark;\r\n\r\n > .tooltip {\r\n clip: auto;\r\n width: auto;\r\n height: auto;\r\n opacity: 1;\r\n transition: opacity 500ms 500ms;\r\n padding: rem-calc(6);\r\n top: rem-calc(44);\r\n left: rem-calc(44);\r\n white-space: nowrap;\r\n transform: translateX(-50%);\r\n @media screen and (min-width: rem-calc(768)) {\r\n top: rem-calc(33);\r\n left: auto;\r\n }\r\n }\r\n}\r\n\r\n.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .link:focus:not(:active) {\r\n outline: none;\r\n background: linear-gradient(90deg, $snackbar-link-color 66%, transparent 0) repeat-x;\r\n background-size: rem-calc(6px 3px);\r\n background-position: 0 1em;\r\n border-radius: 0;\r\n line-height: normal;\r\n}\r\n","import { h, Component, Element, Prop, Event, EventEmitter, Watch, Listen } from \"@stencil/core\";\r\nimport { generateId, hideTooltip, intl, showTooltip } from \"../../global/functions\";\r\nimport { Notification } from \"../../global/interfaces\";\r\nimport { closeVerb } from \"../../global/intl\";\r\n@Component({\r\n tag: \"wm-snackbar\",\r\n styleUrl: \"wm-snackbar.scss\",\r\n shadow: true,\r\n})\r\nexport class Snackbar {\r\n @Element() el!: HTMLElement;\r\n //Prop receives notifications as JSON string, which is later parsed into an array of objects.\r\n @Prop({ mutable: true, reflect: true }) notifications: string = \"[]\";\r\n\r\n private parsedNotifications: Array<Notification> = []; //Holds the parsed array\r\n private uid!: string;\r\n private focusOnDismiss!: HTMLElement;\r\n private isTabbing: boolean = false; //For screenreader purposes, to ensure link receives focus even after screenreader interprets \"enter\" as a \"click\"\r\n private timers: Array<number> = [];\r\n private newNotification: boolean = false;\r\n private newWindowMessage = intl.formatMessage({\r\n id: \"global.newWindowLink\",\r\n defaultMessage: \"Opens in a new window.\",\r\n });\r\n\r\n @Event() wmSnackbarSnackFinished!: EventEmitter<Object>;\r\n @Event() userFinishedSnack!: EventEmitter<Object>; // deprecated in favor of wmSnackbarSnackFinished\r\n @Event() wmSnackbarActionTriggered!: EventEmitter<Object>;\r\n @Event() userTriggeredAction!: EventEmitter<Object>; // deprecated in favor of wmSnackbarActionTriggered\r\n\r\n @Watch(\"notifications\")\r\n updateSnacks(newValue: string) {\r\n const parsedData = JSON.parse(newValue);\r\n const length = parsedData.length;\r\n const prevNotificationsLength = this.parsedNotifications.length;\r\n this.parsedNotifications = [];\r\n\r\n //Parse notifications received as props and store a reference to them\r\n for (let i = 0; i < length; i++) {\r\n let newNotification: any = {\r\n id: parsedData[i].id.toString(),\r\n message: parsedData[i].message.toString(),\r\n link: parsedData[i].link.toString(),\r\n newWindow: !!parsedData[i].newWindow,\r\n };\r\n this.parsedNotifications = [...this.parsedNotifications, newNotification];\r\n }\r\n\r\n //If a new notification was added, set a timer and store a reference to the current active element so that if focus must move to the notification, it can return the user where they were once they dismiss the notification.\r\n if (prevNotificationsLength < this.parsedNotifications.length) {\r\n const newTimer = window.setTimeout(() => this.snackExpired(), 20000);\r\n this.timers = [newTimer, ...this.timers];\r\n this.storeElToFocusOnDismiss();\r\n this.newNotification = true;\r\n } else {\r\n this.newNotification = false;\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n this.uid = this.el.id ? this.el.id : generateId();\r\n }\r\n\r\n //A change in the notificaiton prop will trigger the update function. The update's only role is to determine how focus should be managed when a notification is added.\r\n componentDidUpdate() {\r\n //If the user is tabbing and there's a new notification, focus the link and disable timer.\r\n this.isTabbing && this.newNotification && this.focusLinkAndDisableTimer();\r\n this.newNotification = false;\r\n }\r\n\r\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\r\n toggleTabbingOn() {\r\n this.isTabbing = true;\r\n }\r\n\r\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\r\n toggleTabbingOff() {\r\n this.isTabbing = false;\r\n }\r\n\r\n focusLinkAndDisableTimer() {\r\n //If the new notification has a link, focus the link and clear the timeout. This is for accessibility purposes, for keyboard/screenreader users.\r\n const latestNotification = this.parsedNotifications[0];\r\n\r\n if (latestNotification.link) {\r\n let link = this.el.shadowRoot!.querySelector(`#action-${latestNotification.id}`) as HTMLAnchorElement;\r\n link.focus();\r\n this.stopTimer(latestNotification);\r\n }\r\n }\r\n\r\n storeElToFocusOnDismiss() {\r\n let triggeringButton = document.activeElement! as HTMLElement;\r\n while (triggeringButton && triggeringButton.shadowRoot) {\r\n triggeringButton = triggeringButton.shadowRoot.activeElement as HTMLButtonElement;\r\n }\r\n this.focusOnDismiss = triggeringButton;\r\n }\r\n\r\n snackDismissed(notification: Notification) {\r\n this.endSnack(notification);\r\n //Focus should only be returned if it was moved in the first place, i.e., there was a link and the user was tabbing. Otherwise, for a mouse user, the user's focus would jump back to the triggering element.\r\n notification.link && this.isTabbing && this.focusOnDismiss.focus();\r\n }\r\n\r\n //Remove snack from notification list once timer runs out\r\n snackExpired() {\r\n const notification = this.parsedNotifications[this.parsedNotifications.length - 1];\r\n this.endSnack(notification);\r\n }\r\n\r\n endSnack(notification: Notification) {\r\n //App listens for userFinishedSnack event and deletes the emitted notification.\r\n this.stopTimer(notification);\r\n this.wmSnackbarSnackFinished.emit({\r\n id: notification.id,\r\n message: notification.message,\r\n link: notification.link,\r\n newWindow: notification.newWindow,\r\n });\r\n // deprecated\r\n this.userFinishedSnack.emit({\r\n id: notification.id,\r\n message: notification.message,\r\n link: notification.link,\r\n });\r\n }\r\n\r\n snackLinkClicked(notification: Notification) {\r\n //App listens for userTriggeredAction event, deletes emitted notification, and takes over focus.\r\n this.stopTimer(notification);\r\n this.wmSnackbarActionTriggered.emit({\r\n id: notification.id,\r\n message: notification.message,\r\n link: notification.link,\r\n newWindow: notification.newWindow,\r\n });\r\n // deprecated\r\n this.userTriggeredAction.emit({\r\n id: notification.id,\r\n message: notification.message,\r\n link: notification.link,\r\n });\r\n }\r\n\r\n //Delete the timer corresponding to the dismissed notification\r\n stopTimer(notification: Notification) {\r\n this.parsedNotifications.forEach((notif, index) => {\r\n if (notif.id === notification.id) {\r\n clearTimeout(this.timers[index]);\r\n this.timers = this.timers.filter((timer, ind) => {\r\n if (ind !== index) {\r\n return timer;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n renderSnackbars() {\r\n return this.parsedNotifications.map((notification) => (\r\n <div class=\"wm-snack-wrapper\">\r\n <div id={`snack-${this.uid}`} class=\"wm-snackbar active neutral\">\r\n <div\r\n class=\"sr-only\"\r\n tabindex={notification.link ? 0 : -1}\r\n onFocus={() => notification.link && this.snackDismissed(notification)}\r\n />\r\n\r\n <div class=\"wm-snackbarmsg\">\r\n <div class=\"msgtext\">\r\n <span>{notification.message}</span>\r\n {notification.link && (\r\n <a\r\n id={`action-${notification.id}`}\r\n class={`link ${notification.newWindow ? \"new-window\" : \"\"}`}\r\n aria-label={`Click to ${notification.link}...${\r\n notification.newWindow ? \" \" + this.newWindowMessage : \"\"\r\n }`}\r\n tabindex={0}\r\n onClick={() => {\r\n this.snackLinkClicked(notification);\r\n }}\r\n onKeyDown={(ev: KeyboardEvent) => ev.key === \"Enter\" && this.snackLinkClicked(notification)}\r\n >\r\n <span aria-hidden=\"true\">{notification.link}</span>\r\n </a>\r\n )}\r\n </div>\r\n <button\r\n id={`close-button-${notification.id}`}\r\n aria-label=\"Close this notification\"\r\n class=\"closesnack\"\r\n tabindex={notification.link ? 0 : -1}\r\n onClick={() => this.snackDismissed(notification)}\r\n onMouseEnter={(ev) => showTooltip(\"bottom\", ev.target as HTMLElement, closeVerb)}\r\n onMouseLeave={() => hideTooltip()}\r\n onFocus={(ev) => this.isTabbing && showTooltip(\"bottom\", ev.target as HTMLElement, closeVerb)}\r\n onBlur={() => hideTooltip()}\r\n ></button>\r\n </div>\r\n <div\r\n class=\"sr-only\"\r\n tabindex={notification.link ? 0 : -1}\r\n onFocus={() => notification.link && this.snackDismissed(notification)}\r\n />\r\n </div>\r\n </div>\r\n ));\r\n }\r\n\r\n renderLiveRegion() {\r\n const latestNotification = this.parsedNotifications[0];\r\n const link = this.isTabbing ? \"\" : latestNotification.link;\r\n const srAnnouncement = `${latestNotification.message} ${link}`;\r\n\r\n const region = this.el.shadowRoot!.querySelector(`#wm-live-region-${this.uid}`) as HTMLElement;\r\n\r\n if (region) {\r\n region.innerHTML = \"\";\r\n const wrapper = document.createElement(\"span\");\r\n wrapper.innerHTML = srAnnouncement;\r\n region.appendChild(wrapper);\r\n }\r\n }\r\n\r\n render() {\r\n this.newNotification && this.renderLiveRegion();\r\n const snackbars = this.renderSnackbars();\r\n const wrappingClass = this.parsedNotifications.length === 0 ? \"empty\" : \"\";\r\n\r\n return (\r\n <div class={`wm-snackbars ${wrappingClass} ${this.isTabbing ? \"user-is-tabbing\" : \"\"}`}>\r\n <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"false\" id={`wm-live-region-${this.uid}`}></div>\r\n {snackbars}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["getIconCodeFromName","icon","iconCodes","close","pencil","cancel","check","delete","magnify","export","defaultMode","getWmMode","exports","ref","getAttribute","document","documentElement"],"sources":["src/global/interfaces.ts"],"sourcesContent":["export type Notification = {\r\n message: string;\r\n id: string;\r\n link: string;\r\n newWindow: boolean;\r\n};\r\n\r\n// Create label for icon-only buttons\r\nexport type label = string | undefined;\r\n\r\nexport type CssClassMap = { [className: string]: boolean };\r\n\r\ninterface IconLabels {\r\n [index: string]: string;\r\n}\r\n\r\nexport type Product = {\r\n description?: string;\r\n samlLinkUrl?: string;\r\n iconUrl: string;\r\n id: string;\r\n linkUrl: string;\r\n name: string;\r\n};\r\n\r\n// products retrieved from endpoint:\r\nexport type NavigatorPayload = {\r\n connection_name?: string;\r\n current_product_id: string;\r\n email: string;\r\n logout_url: string;\r\n products: Product[];\r\n};\r\n\r\nexport type validButtonTypes =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"textonly\"\r\n | \"icononly\"\r\n | \"navigational\"\r\n | \"selector\"\r\n | \"selector-primary\"\r\n | \"pairpositive\"\r\n | \"pairnegative\";\r\n\r\n//List of icon codes with more indicative descriptors to create labels for icon-only buttons\r\nexport const iconLabels: IconLabels = {\r\n f156: \"Close\",\r\n f3eb: \"Edit\",\r\n f739: \"Cancel\",\r\n f12c: \"Save\",\r\n f1c0: \"Delete\",\r\n f349: \"Search\",\r\n f207: \"Export info\",\r\n f1d9: \"Open dropdown\",\r\n f04d: \"Go back\",\r\n f054: \"Go forward\",\r\n f141: \"Left\",\r\n f142: \"Right\",\r\n f35e: \"Menu left\",\r\n f35d: \"Toggle menu down\",\r\n f30d: \"Backspace\",\r\n f645: \"Sort hierarchically\",\r\n f4bb: \"Sort alphabetically\",\r\n};\r\n\r\n// For backwards compatibility, the icon prop accepts the icon name minus mdi- prefix, e.g. \"icon\"\r\n// this function converts the name to the corresponding code or returns what it was passed\r\ninterface IconCodes {\r\n [index: string]: string;\r\n}\r\nexport function getIconCodeFromName(icon: string): string {\r\n return iconCodes[icon] || icon;\r\n}\r\n\r\nconst iconCodes: IconCodes = {\r\n close: \"f156\",\r\n pencil: \"f3eb\",\r\n cancel: \"f739\",\r\n check: \"f12c\",\r\n delete: \"f1c0\",\r\n magnify: \"f349\",\r\n export: \"f207\",\r\n \"dots-vertical\": \"f1d9\",\r\n \"arrow-left\": \"f04d\",\r\n \"arrow-right\": \"f054\",\r\n \"chevron-left\": \"f141\",\r\n \"chevron-right\": \"f142\",\r\n \"menu-left\": \"f35e\",\r\n \"menu-down\": \"f35d\",\r\n \"keyboard-backspace\": \"f30d\",\r\n \"file-tree\": \"f645\",\r\n \"sort-alphabetical\": \"f4bb\",\r\n \"checkbox-marked-circle\": \"f133\",\r\n \"account-settings\": \"f630\",\r\n \"backup-restore\": \"f06f\",\r\n};\r\n\r\nexport const defaultMode = \"planning\";\r\n\r\nexport const getWmMode = (ref?: any) => {\r\n return ref.getAttribute(\"mode\") || document.documentElement.getAttribute(\"mode\") || defaultMode;\r\n};\r\n\r\nexport type TooltipPlacement =\r\n | \"top\"\r\n | \"bottom\"\r\n | \"left\"\r\n | \"right\"\r\n | \"bottom-left\"\r\n | \"bottom-right\"\r\n | \"top-right\"\r\n | \"top-left\";\r\n\r\nexport type SliceElement = (SVGElement | HTMLElement);\r\n\r\nexport type SliceDetails = {\r\n amount: number;\r\n perc: number;\r\n legend: string | null;\r\n color: string;\r\n offset: number;\r\n id: string;\r\n title: string | null;\r\n text: string | null;\r\n buttonText: string | null;\r\n sliceRef: Element;\r\n inSmallCluster: boolean;\r\n coords?: {x: number, y: number};\r\n};\r\n\r\nexport type ChartDetails = {\r\n size: number;\r\n colors: Array<string>;\r\n thickness?: number;\r\n padding: number;\r\n category: \"doughnut\" | \"stackedBar\" | \"simpleBar\";\r\n};\r\n\r\nexport type ChartType =\r\n // progress monitor types\r\n | \"doughnut\"\r\n | \"bar\"\r\n // chart types\r\n | \"doughnut1\"\r\n | \"doughnut2\"\r\n | \"doughnut2plus\"\r\n | \"doughnut3\"\r\n | \"bar2\"\r\n | \"bar3\"\r\n | \"bar4\"\r\n | \"bar5\"\r\n | \"bar6\"\r\n | \"bar7\"\r\n // deprecated\r\n | \"doughnut0\"\r\n | \"bar1\";\r\n\r\nexport type LegendItem = { key: string; color: string };\r\n\r\nexport type UploadedFile = {\r\n name: string;\r\n id: string;\r\n type: string;\r\n lastUpdated: string; // in display format\r\n progress?: number;\r\n fileActions?: string;\r\n size?: string; // in display format\r\n};\r\n"],"mappings":"yFAuEgBA,EAAoBC,GAClC,OAAOC,EAAUD,IAASA,CAC5B,CAEA,IAAMC,EAAuB,CAC3BC,MAAO,OACPC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,OAAQ,OACRC,QAAS,OACTC,OAAQ,OACR,gBAAiB,OACjB,aAAc,OACd,cAAe,OACf,eAAgB,OAChB,gBAAiB,OACjB,YAAa,OACb,YAAa,OACb,qBAAsB,OACtB,YAAa,OACb,oBAAqB,OACrB,yBAA0B,OAC1B,mBAAoB,OACpB,iBAAkB,QAGb,IAAMC,EAAc,W,IAEdC,EAASC,EAAA,KAAG,SAACC,GACxB,OAAOA,EAAIC,aAAa,SAAWC,SAASC,gBAAgBF,aAAa,SAAWJ,CACtF,G"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["getRequest","async","url","response","fetch","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","name","send"],"sources":["./src/global/services/http-service.tsx"],"sourcesContent":["export const getRequest = async (url: string) => {\r\n const response = await fetch(url);\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const postRequest = async (url: string, payload: Object) => {\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(payload),\r\n });\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const deleteRequest = async (url: string) => {\r\n const response = await fetch(url, { method: \"DELETE\" });\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const putRequest = (url: string, file: File, onProgress: Function) => {\r\n return new Promise((resolve, reject) => {\r\n // there's no way to track progress with the fetch API, so using XHR\r\n const req = new XMLHttpRequest();\r\n\r\n req.upload.addEventListener(\"progress\", (ev) => onProgress(ev));\r\n\r\n req.addEventListener(\"readystatechange\", function () {\r\n if (this.readyState === 4 && this.status === 200) {\r\n resolve(this);\r\n } else if (this.readyState === 4 && this.status !== 200) {\r\n reject();\r\n }\r\n });\r\n\r\n req.onerror = () => reject();\r\n req.open(\"PUT\", url, true);\r\n req.setRequestHeader(\"Content-Disposition\", `attachment;filename=\"${file.name}\"`);\r\n req.send(file);\r\n });\r\n};\r\n"],"mappings":"MAAaA,EAAaC,MAAOC,IAC/B,MAAMC,QAAiBC,MAAMF,GAC7B,KAAMC,KAAcA,EAASE,GAAI,CAC/B,aAAaF,EAASG,M,KACjB,CACL,MAAM,IAAIC,MAAMJ,EAASK,W,SAIhBC,EAAcR,MAAOC,EAAaQ,KAC7C,MAAMP,QAAiBC,MAAMF,EAAK,CAChCS,OAAQ,OACRC,QAAS,CAAE,eAAgB,mCAC3BC,KAAMC,KAAKC,UAAUL,KAEvB,KAAMP,KAAcA,EAASE,GAAI,CAC/B,aAAaF,EAASG,M,KACjB,CACL,MAAM,IAAIC,MAAMJ,EAASK,W,SAIhBQ,EAAgBf,MAAOC,IAClC,MAAMC,QAAiBC,MAAMF,EAAK,CAAES,OAAQ,WAC5C,KAAMR,KAAcA,EAASE,GAAI,CAC/B,aAAaF,EAASG,M,KACjB,CACL,MAAM,IAAIC,MAAMJ,EAASK,W,SAIhBS,EAAa,CAACf,EAAagB,EAAYC,IAC3C,IAAIC,SAAQ,CAACC,EAASC,KAE3B,MAAMC,EAAM,IAAIC,eAEhBD,EAAIE,OAAOC,iBAAiB,YAAaC,GAAOR,EAAWQ,KAE3DJ,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,IAAMT,IACpBC,EAAIS,KAAK,MAAO9B,EAAK,MACrBqB,EAAIU,iBAAiB,sBAAuB,wBAAwBf,EAAKgB,SACzEX,EAAIY,KAAKjB,EAAK,W"}