@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 +1 @@
1
- {"file":"wm-tag-input.entry.js","mappings":"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","names":[],"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"],"version":3}
1
+ {"file":"wm-tag-input.entry.js","mappings":"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","names":[],"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,\nwm-tag-input {\n font-family: inherit;\n width: 100%;\n display: block;\n\n * {\n box-sizing: border-box;\n font-size: 14px;\n }\n\n @include label;\n\n .wrapper {\n width: 100%;\n height: 100%;\n position: relative;\n }\n\n .field-wrapper {\n position: relative;\n width: 100%;\n border: 1px solid $input-border-color;\n @include border-radius(3px);\n\n &.focused {\n @include field-focus;\n }\n\n &.invalid {\n @include invalidBorder;\n }\n }\n\n .character-count {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: rem-calc(80);\n background-color: rgba(74, 74, 74, 0.05);\n font-size: rem-calc(14);\n font-weight: 500;\n align-self: stretch;\n }\n\n .tags-and-input-wrapper {\n position: relative;\n width: 100%;\n padding: rem-calc(8) rem-calc(4) rem-calc(8) 0;\n margin-bottom: rem-calc(-8);\n }\n\n .upper-row {\n width: 100%;\n display: flex;\n flex: 1;\n justify-content: space-between;\n &:before {\n align-self: flex-start;\n @include mdi-icon;\n content: \"\\f349\"; // magnifying glass\n color: $tag-input-search-icon-color;\n padding: rem-calc(12) rem-calc(8) rem-calc(12) rem-calc(12);\n }\n }\n\n .lower-row {\n width: 100%;\n min-height: rem-calc(30);\n }\n\n #max-tags {\n display: flex;\n align-items: center;\n min-height: rem-calc(30);\n background-color: $tag-input-max-tags-bg;\n padding: rem-calc(8) rem-calc(16);\n color: $tag-input-max-tags-color;\n font-size: rem-calc(14);\n border-top: 1px solid $tag-input-max-tags-border;\n border-radius: 0 0 3px 3px;\n }\n\n .tag-area {\n display: flex;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n\n &:focus {\n outline: none;\n }\n\n [role=\"option\"] {\n display: inline-flex;\n align-items: center;\n height: rem-calc(28);\n list-style: none;\n color: $charcoal;\n background-color: rgba(3, 0, 0, 0.1);\n padding: rem-calc(8) rem-calc(10);\n margin-bottom: rem-calc(8);\n margin-right: rem-calc(4);\n margin-left: rem-calc(4);\n transition: background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n white-space: pre;\n\n &.highlight {\n animation: fadeIn 1s;\n @keyframes fadeIn {\n 0% {\n background-color: rgba(3, 0, 0, 0.1);\n }\n 50% {\n background-color: #c8dfcc;\n }\n\n 100% {\n background-color: rgba(3, 0, 0, 0.1);\n }\n }\n }\n\n &.focused {\n background-color: #d1d1d1;\n }\n\n &.locked {\n background-color: $tag-input-locked-tag-bg;\n color: white;\n }\n\n .icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n height: rem-calc(20);\n width: rem-calc(20);\n padding: 0;\n margin-left: rem-calc(8);\n &.remove-btn {\n border: 1px solid $periwinkle;\n color: $periwinkle;\n border-radius: 50%;\n cursor: pointer;\n transition: background-color 500ms cubic-bezier(0.4, 0, 0.2, 1), color 500ms cubic-bezier(0.4, 0, 0.2, 1);\n\n &:hover {\n color: white;\n background-color: $periwinkle;\n }\n\n &:before {\n @include mdi-icon;\n content: \"\\f156\";\n }\n }\n\n &.lock {\n color: white;\n &:before {\n @include mdi-icon;\n content: \"\\f341\";\n }\n }\n }\n }\n }\n\n input {\n font-family: inherit;\n border: none;\n height: rem-calc(28);\n padding: 0;\n margin-bottom: rem-calc(8);\n margin-right: rem-calc(4);\n padding-left: rem-calc(8);\n right: 0px;\n\n &.hidden {\n display: none;\n }\n &:focus {\n outline: none;\n }\n }\n\n .dropdown-wrapper {\n margin: 0;\n padding: 0;\n @include box-shadow(0 4px 15px 0 rgba(0, 0, 0, 0.2));\n @include transition(transform 0.25s ease);\n @include scale($xVal: 1, $yVal: 0);\n @include transformOrigin(center top);\n @include border-radius(3px);\n position: absolute;\n top: calc(100% + 2px);\n right: 0;\n background: #fff;\n z-index: 100;\n width: 100%;\n font-size: rem-calc(14);\n\n .dropdown {\n -webkit-overflow-scrolling: touch;\n overflow: auto;\n max-height: rem-calc(200);\n margin: 0;\n padding: 0;\n }\n\n &.open {\n @include scale($xVal: 1, $yVal: 1);\n }\n\n &.upwards {\n top: unset;\n bottom: calc(100% + 2px);\n @include transformOrigin(center bottom);\n }\n\n li,\n div {\n display: flex;\n align-items: center;\n padding: 0 rem-calc(16);\n background: #fff;\n list-style: none;\n height: rem-calc(43);\n white-space: pre;\n\n &[role=\"option\"],\n &.add-new-btn {\n cursor: pointer;\n color: $periwinkle;\n font-weight: bold;\n width: 100%;\n border: none;\n\n &[aria-selected=\"true\"] {\n color: $gray;\n font-style: italic;\n font-weight: normal;\n cursor: unset;\n }\n &:hover:not([aria-selected=\"true\"]),\n &.focused {\n outline: none;\n background: $background;\n }\n }\n\n &.help-text {\n color: $charcoal;\n height: auto;\n min-height: rem-calc(43);\n padding-top: rem-calc(4);\n padding-bottom: rem-calc(4);\n white-space: normal;\n }\n\n &:not(:last-child) {\n border-bottom: 2px solid rgba(#2e1b46, 0.05);\n }\n }\n }\n\n .info-text {\n font-style: italic;\n margin-top: rem-calc(4);\n }\n\n .table-wrapper {\n min-height: rem-calc(160);\n overflow: auto;\n margin-top: rem-calc(24);\n\n #table {\n width: 100%;\n border-spacing: 0px;\n &.fixed-widths {\n table-layout: fixed;\n }\n\n .headers {\n height: rem-calc(40);\n background-color: #eeedf4;\n th {\n text-align: left;\n font-size: rem-calc(12);\n font-weight: 700;\n text-transform: uppercase;\n padding: 0 rem-calc(24);\n }\n }\n }\n\n tr {\n // the following colors are in a css-specificity order, do not move\n &:nth-child(even) {\n background-color: $tag-input-row-zebra-bg;\n }\n\n &.selected {\n background-color: $tag-input-row-selected-bg;\n // box-shadow to add border without affecting surrounding cell borders\n box-shadow: inset 0 0 0 1px $tag-input-row-selected-border;\n font-weight: 500;\n }\n\n &.focused:not(.locked),\n &:hover:not(.locked) {\n background-color: $tag-input-row-focused;\n box-shadow: none;\n }\n\n &.locked {\n td {\n cursor: auto;\n }\n\n td:first-child {\n .cell-content-wrapper:before {\n @include mdi-icon;\n content: \"\\f33e\";\n margin-right: rem-calc(8);\n color: $tag-input-row-lock-color;\n }\n }\n }\n }\n\n td {\n height: rem-calc(60);\n vertical-align: middle;\n padding: 0 rem-calc(24);\n cursor: pointer;\n &.focused {\n // from wm-navigation\n box-shadow: inset 0 2px 2px 0 rgb(244 243 246 / 20%), inset 0 2px 2px 0 rgb(0 0 0 / 10%),\n inset 0 0 4px 3px #61279e;\n }\n .cell-content-wrapper.trunc {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .description {\n display: none;\n }\n }\n }\n\n .no-results {\n padding: rem-calc(20) rem-calc(24);\n }\n\n .sr-only {\n @include srOnly;\n }\n\n #error {\n @include errorMessage;\n }\n}\n","import {\n h,\n Component,\n Host,\n Element,\n Prop,\n Listen,\n State,\n Event,\n EventEmitter,\n Watch,\n forceUpdate,\n} from \"@stencil/core\";\nimport {\n csvToArray,\n debounce,\n generateId,\n hideTooltip,\n intl,\n measureText,\n safeParseJSON,\n shouldOpenUp,\n showTooltip,\n} from \"../../global/functions\";\nimport { globalMessages } from \"../../global/intl\";\n\ninterface TablePosition {\n row: number;\n column: number;\n}\n\ninterface MessageConfig {\n addNewHelpText: string;\n selectionHelpText: string;\n tagAreaInstructions: string;\n maxTagsReached: string;\n tagsAdded: string;\n}\n\n@Component({\n tag: \"wm-tag-input\",\n styleUrl: \"wm-tag-input.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class TagInput {\n @Element() el!: HTMLWmTagInputElement;\n private inputEl!: HTMLInputElement;\n private dropdownEl!: HTMLDivElement;\n private tagAreaEl!: HTMLUListElement;\n private liveRegionEl!: HTMLDivElement;\n private fieldWrapperEl!: HTMLDivElement;\n\n @Prop() label!: string;\n @Prop() labelPosition: \"top\" | \"left\" | \"none\" = \"top\";\n @Prop({ mutable: true }) options: string = \"\"; // csv\n @Prop({ reflect: true, mutable: true }) selectedTags: string = \"\"; // csv\n @Prop() info?: string;\n @Prop() errorMessage?: string;\n @Prop() addNew: boolean = true;\n @Prop({ mutable: true }) placeholder?: string;\n @Prop() requiredField: boolean = false;\n @Prop() characterLimit: number = 50;\n @Prop() maxTags?: number;\n @Prop() tagInputType: \"dropdown\" | \"table\" = \"dropdown\";\n @Prop() colHeaders!: string;\n @Prop() colWidths?: string;\n @Prop() colWrap?: string;\n @Prop() messageConfig: string = \"\"; // JSON\n @Event() wmTagInputChanged!: EventEmitter<{\n value: string[] | HTMLWmTagInputRowElement[];\n tagChanged: string | HTMLWmTagInputRowElement;\n }>;\n\n private uid: string = this.el.id ? this.el.id : generateId();\n private openUp: boolean = false;\n private tooltipVisible: boolean = false;\n @State() focusedListItem!: HTMLLIElement | null;\n @State() focusedTag: HTMLLIElement | null = null;\n @State() tablePosition: TablePosition = { row: 0, column: 1 };\n @State() isExpanded: boolean = false;\n @State() tagsList: string[] = csvToArray(this.selectedTags);\n @State() optionsList: string[] = csvToArray(this.options);\n @State() charCount: number = 0;\n @State() liveRegionMessage = \"\";\n\n get focusedElement(): Element | null {\n return this.el.shadowRoot!.activeElement;\n }\n get listItemEls(): HTMLLIElement[] {\n return Array.from(this.dropdownEl.querySelectorAll(\"li\"));\n }\n get tagEls(): HTMLLIElement[] {\n return this.tagAreaEl ? Array.from(this.tagAreaEl.querySelectorAll(\".tag\")) : [];\n }\n get nonLockedTagEls(): HTMLLIElement[] {\n return this.tagEls.filter((tag) => !tag.classList.contains(\"locked\"));\n }\n get optionEls(): HTMLLIElement[] {\n return Array.from(this.dropdownEl.querySelectorAll(\".option\"));\n }\n get wmRowEls(): HTMLWmTagInputRowElement[] {\n return Array.from(this.el.querySelectorAll(\"wm-tag-input-row\"));\n }\n get localRowEls(): HTMLElement[] {\n return Array.from(this.el.shadowRoot!.querySelectorAll(\"tr\"));\n }\n get filteredRows(): HTMLWmTagInputRowElement[] {\n return this.wmRowEls.filter((row) => {\n const colValues = [row.col1, row.col2, row.col3, row.col4].join(\"\").toLowerCase();\n return this.inputEl && this.inputEl.value ? colValues.includes(this.inputEl.value.toLowerCase()) : true;\n });\n }\n get nonLockedTagsList() {\n let list: string[] = [];\n\n if (this.tagInputType === \"table\") {\n this.tagsList.forEach((id) => {\n const correspondingRowEl = this.wmRowEls.filter((row) => id === row.id)[0];\n if (!correspondingRowEl.locked) {\n list.push(id);\n }\n });\n } else if (this.tagInputType === \"dropdown\") {\n list = this.tagsList;\n }\n\n return list;\n }\n get tagLimitReached(): boolean {\n return !!(this.maxTags && this.tagsList.length >= this.maxTags);\n }\n\n get noResultsMessage() {\n return intl.formatMessage({\n id: \"tagInput.noResults\",\n defaultMessage: \"No results match your search.\",\n description: \"Message displayed when a user's search returns empty.\",\n });\n }\n\n get componentMessages(): MessageConfig {\n const addNewHelpText = intl.formatMessage({\n id: \"tagInput.addNewHelpText\",\n defaultMessage: \"Press the Enter or Comma key to add a new tag.\",\n description: \"Help text appearing in a dropdown. Use imperative\",\n });\n const selectionHelpText = intl.formatMessage({\n id: \"tagInput.selectionHelpText\",\n defaultMessage: \"Search and select a tag.\",\n description: \"Help text appearing in a dropdown. Use imperative\",\n });\n const maxTagsReachedMessage = intl.formatMessage({\n id: \"tagInput.maxTagsReached\",\n defaultMessage: \"No more tags can be added because the limit has been reached.\",\n });\n const tagAreaInstructions = intl.formatMessage({\n id: \"tagInput.tagAreaInstructions\",\n defaultMessage: \"tag selection. Press Backspace or Delete to remove a tag.\",\n });\n const tagsAddedMessage = intl.formatMessage({\n id: \"tagInput.tagsAdded\",\n defaultMessage: \"Tags added\",\n description: \"For the user to understand how close they are to the tag limit, followed by x/y count\",\n });\n\n const defaultConfig: MessageConfig = {\n addNewHelpText: addNewHelpText,\n selectionHelpText: selectionHelpText,\n maxTagsReached: maxTagsReachedMessage,\n tagAreaInstructions: tagAreaInstructions,\n tagsAdded: tagsAddedMessage,\n };\n\n const userProvidedConfig = safeParseJSON(this.messageConfig);\n\n return userProvidedConfig ? { ...defaultConfig, ...userProvidedConfig } : defaultConfig;\n }\n\n get inputMinimumWidth(): number {\n // 150px is the minimum width of the input field, or the length of the placeholder text\n const inputElStyles = getComputedStyle(this.inputEl);\n const tagElStyles = getComputedStyle(this.tagEls[this.tagEls.length - 1]);\n const inputElBuffer = [\n inputElStyles.paddingLeft,\n inputElStyles.paddingRight,\n inputElStyles.marginLeft,\n inputElStyles.marginRight,\n tagElStyles.marginRight,\n ].reduce((prev, curr) => prev + parseInt(curr.replace(\"px\", \"\")), 0);\n\n const minimumWidth = Math.max(150, measureText(this.inputEl, this.placeholder!).width + inputElBuffer);\n return minimumWidth;\n }\n\n generateTagAddedMessage(tag: string): string {\n return intl.formatMessage(\n {\n id: \"tagInput.tagAdded\",\n defaultMessage: \"{tagName} added.\",\n description: \"A confirmation for adding a tag.\",\n },\n { tagName: tag }\n );\n }\n\n generateTagAlreadyAddedMessage(tag: string): string {\n return intl.formatMessage(\n {\n id: \"tagInput.tagAlreadyAdded\",\n defaultMessage: \"{tagName} has already been added.\",\n description: \"An alert for adding a tag that is already present.\",\n },\n { tagName: tag }\n );\n }\n\n componentWillLoad() {\n if (!this.placeholder) {\n this.placeholder = this.createPlaceholderDefault(this.addNew, !!this.options);\n }\n if (!this.label) {\n console.error(\"wm-tag-input must have a label property\");\n }\n\n this.consolidateSelectedTags();\n\n this.el.focus = () => {\n const firstFocusableTag = this.nonLockedTagEls[0];\n if (firstFocusableTag) {\n this.tagAreaEl.focus();\n this.focusTag(firstFocusableTag);\n } else {\n this.inputEl.focus();\n }\n };\n\n // on resize of component, trigger componentDidRender -> positionInput\n const resizeObserver = new ResizeObserver(() => this.debouncedUpdate());\n resizeObserver.observe(this.el);\n }\n\n componentDidLoad() {\n // prevent highlighting of pre-selected tags\n this.tagEls.forEach((el) => el.classList.remove(\"highlight\"));\n }\n\n componentDidRender() {\n this.positionInput();\n }\n\n consolidateSelectedTags() {\n this.tagsList.forEach((tag) => {\n if (!this.includesCaseInsensitive(this.optionsList, tag)) {\n this.options += `${this.options.length > 0 ? \",\" : \"\"}${tag}`;\n }\n });\n\n this.optionsList = csvToArray(this.options);\n }\n\n createPlaceholderDefault(addNew: boolean, hasOptions: boolean): string {\n const addAndSearchPlaceholder = intl.formatMessage({\n id: \"tagInput.placeholderAddAndSearch\",\n defaultMessage: \"Add or search for a tag\",\n description: \"Placeholder text. Use imperative\",\n });\n const searchPlaceholder = intl.formatMessage({\n id: \"tagInput.placeholderSearch\",\n defaultMessage: \"Search and select a tag\",\n description: \"Placeholder text. Use imperative\",\n });\n const addPlaceholder = intl.formatMessage({\n id: \"tagInput.placeholderAdd\",\n defaultMessage: \"Add a new tag\",\n description: \"Placeholder text. Use imperative\",\n });\n\n let placeholder = \"\";\n if (addNew && hasOptions) {\n placeholder = addAndSearchPlaceholder;\n } else if (!addNew && hasOptions) {\n placeholder = searchPlaceholder;\n } else if (addNew) {\n placeholder = addPlaceholder;\n }\n return placeholder;\n }\n\n @Watch(\"tagsList\")\n reflectSelectedTags(newValue: string[], oldValue: string[]) {\n const isAddition = newValue.length > oldValue.length;\n let changedTag: string | HTMLWmTagInputRowElement = \"\";\n let selectedTags: string[] | HTMLWmTagInputRowElement[] = this.tagsList;\n\n if (isAddition) {\n changedTag = newValue.filter((val) => !oldValue.includes(val))[0];\n } else {\n changedTag = oldValue.filter((val) => !newValue.includes(val))[0];\n }\n\n // event emitted by type table uses element references instead of strings\n if (this.tagInputType === \"table\") {\n changedTag = this.wmRowEls.filter((row) => row.id === changedTag)[0];\n selectedTags = this.tagsList.map((id) => this.el.querySelector(`#${id}`) as HTMLWmTagInputRowElement);\n }\n\n this.selectedTags = this.listToCSV(this.tagsList);\n let detail = { value: selectedTags, tagChanged: changedTag };\n this.wmTagInputChanged.emit(detail);\n }\n\n @Watch(\"errorMessage\")\n handleErrorMessageChange() {\n if (this.errorMessage) {\n this.announce(this.errorMessage);\n }\n }\n\n @Listen(\"wmTagInputRowUpdated\")\n handleRowUpdate() {\n forceUpdate(this.el);\n }\n\n @Listen(\"click\", { target: \"document\" })\n closeIfNotElOrChild(ev: MouseEvent): void {\n const isntElOrChild = ev.target !== this.el && !this.el.shadowRoot!.contains(ev.target as HTMLElement);\n\n if (this.tagInputType === \"dropdown\" && isntElOrChild && this.isExpanded) {\n this.closeDropdown();\n }\n }\n\n // From wm-button\n // we need to listen for scroll events during the capture phase because they do not bubble up\n // there can be layouts where the main content has 100vh and overflows\n // in these cases window will register no scroll events unless we catch on they way down\n @Listen(\"scroll\", { target: \"window\", capture: true })\n dismissTooltip() {\n if (this.tooltipVisible) {\n hideTooltip();\n this.tooltipVisible = false;\n }\n }\n\n debouncedUpdate = debounce(() => forceUpdate(this.el), 30);\n\n handleInputKeyDown(ev: KeyboardEvent) {\n if (/^.$/.test(ev.key) && this.inputEl.value.length >= this.characterLimit) {\n this.announce(this.generateCharacterLimitWarning(this.inputEl.value.length, this.characterLimit));\n }\n\n // prevent keydown triggering on tag area\n ev.stopPropagation();\n switch (ev.key) {\n case \"Enter\":\n case \",\":\n ev.preventDefault();\n this.handleInputEnter();\n break;\n case \"ArrowDown\":\n ev.preventDefault();\n this.handleInputArrowDown();\n break;\n case \"ArrowUp\":\n ev.preventDefault();\n this.handleInputArrowUp();\n break;\n case \"ArrowLeft\":\n ev.preventDefault();\n if (this.tagInputType === \"table\" && this.tablePosition.row) {\n this.moveLeftCell();\n }\n break;\n case \"ArrowRight\":\n ev.preventDefault();\n if (this.tagInputType === \"table\" && this.tablePosition.row) {\n this.moveRightCell();\n }\n break;\n case \"Escape\":\n if (this.tagInputType === \"dropdown\" && this.isExpanded) {\n this.closeDropdown();\n }\n break;\n case \"ArrowLeft\":\n case \"Backspace\":\n this.handleInputBackspace();\n break;\n }\n }\n\n handleInputFocus() {\n if (this.tagInputType === \"dropdown\") {\n this.openDropdown();\n this.clearListItemFocus();\n }\n // force update needed to apply styled state of field-wrapper el\n forceUpdate(this.el);\n }\n\n handleInputChanged(value: string) {\n this.charCount = value.length;\n\n if (this.tagInputType === \"dropdown\") {\n this.clearListItemFocus();\n if (this.charCount >= this.characterLimit - 5) {\n this.announce(this.generateCharacterLimitWarning(this.charCount, this.characterLimit));\n }\n if (!this.isExpanded) {\n this.openDropdown();\n }\n } else if (this.tagInputType === \"table\") {\n this.clearCellFocus();\n }\n this.announceExistingOptions();\n }\n\n handleInputEnter() {\n if (this.tagInputType === \"dropdown\") {\n if (this.focusedListItem) {\n this.handleListItemClick(this.focusedListItem);\n } else {\n this.submitInput(this.addNew, this.inputEl.value.trim());\n }\n } else if (this.tagInputType === \"table\" && this.tablePosition.row > 0) {\n this.handleTableRowClick(this.localRowEls[this.tablePosition.row].id);\n }\n }\n\n submitInput(canAddNew: boolean, value: string) {\n const hasNonWhiteSpaceCharacters = value.match(/\\S/);\n if (canAddNew && hasNonWhiteSpaceCharacters) {\n this.addTag(value);\n this.optionsList = this.addOption(value);\n this.resetInput();\n }\n }\n\n handleInputArrowDown() {\n if (this.tagInputType === \"table\") {\n this.moveDownRow();\n } else if (this.tagInputType === \"dropdown\" && this.isExpanded) {\n this.moveDownListItem();\n } else if (this.tagInputType === \"dropdown\") {\n this.openDropdown();\n }\n }\n\n handleInputArrowUp() {\n if (this.tagInputType === \"table\") {\n this.moveUpRow();\n } else if (this.tagInputType === \"dropdown\" && this.isExpanded) {\n this.moveUpListItem();\n } else if (this.tagInputType === \"dropdown\") {\n this.openDropdown();\n }\n }\n\n handleInputBackspace() {\n if (this.inputEl.value === \"\" && this.tagsList.length > 0) {\n // wait for events to finish firing before redirecting focus\n // prevents double input in input area and tag area\n window.requestAnimationFrame(() => {\n if (this.nonLockedTagsList.length > 0) {\n this.tagAreaEl.focus();\n this.focusTag(this.tagEls[this.tagEls.length - 1]);\n }\n });\n }\n }\n\n handleListItemKeyDown(ev: KeyboardEvent) {\n const typedEvTarget = ev.target as HTMLElement;\n\n switch (ev.key) {\n case \"Enter\":\n case \" \":\n ev.preventDefault();\n typedEvTarget.click();\n break;\n case \"ArrowDown\":\n ev.preventDefault();\n this.moveDownListItem();\n break;\n case \"ArrowUp\":\n ev.preventDefault();\n this.moveUpListItem();\n break;\n case \"Escape\":\n if (this.focusedElement !== this.inputEl) {\n this.inputEl.focus();\n } else if (this.tagInputType === \"dropdown\") {\n this.closeDropdown();\n }\n break;\n }\n }\n\n handleListItemClick(item: HTMLElement) {\n const tag = item.dataset.option!.trim() || \"\";\n\n if (this.includesCaseInsensitive(this.tagsList, tag)) {\n this.announce(this.generateTagAlreadyAddedMessage(tag));\n } else {\n this.resetInput();\n this.addTag(tag);\n this.optionsList = this.addOption(tag);\n this.focusedListItem = null;\n }\n }\n\n handleTableRowClick(rowId: string) {\n const referencedRow = this.el.querySelector(`#${rowId}`) as HTMLWmTagInputRowElement;\n const isLocked = referencedRow.locked;\n\n if (!isLocked) {\n if (this.includesCaseInsensitive(this.tagsList, rowId)) {\n this.removeTag(rowId);\n } else if (!this.tagLimitReached) {\n this.addTag(rowId);\n this.resetInput();\n }\n }\n }\n\n handleTagAreaKeyDown(ev: KeyboardEvent) {\n switch (ev.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n ev.preventDefault();\n this.moveLeftTag();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n ev.preventDefault();\n this.moveRightTag();\n break;\n case \"Backspace\":\n case \"Delete\":\n this.handleTagAreaDelete();\n break;\n }\n }\n\n handleTagAreaDelete() {\n const isLocked = this.focusedTag && this.focusedTag.classList.contains(\"locked\");\n\n if (this.focusedTag && this.focusedTag.dataset.tag && !isLocked) {\n this.removeTag(this.focusedTag.dataset.tag);\n\n if (this.nonLockedTagsList.length === 0) {\n // focus input if no tags are left\n this.inputEl.focus();\n } else if (this.focusedTag === this.tagEls[this.tagEls.length - 1]) {\n // reassign focus if removing the last tag but there are still tags remaining\n this.focusedTag = this.tagEls[this.tagEls.length - 2];\n this.focusTag(this.focusedTag);\n }\n }\n }\n\n handleBlur(ev: FocusEvent, component: HTMLElement) {\n const isntElOrChild =\n ev.relatedTarget !== component && !this.el.shadowRoot!.contains(ev.relatedTarget as HTMLElement);\n\n this.dismissTooltip();\n this.clearCellFocus();\n\n if (isntElOrChild) {\n this.fieldWrapperEl.classList.remove(\"focused\");\n if (this.tagInputType === \"dropdown\") {\n this.closeDropdown();\n }\n }\n }\n\n handleCellMouseEnter(ev: MouseEvent) {\n const cell = ev.target as HTMLElement;\n const contentWrapper = cell.querySelector(\".cell-content-wrapper\")!;\n const isTruncated = contentWrapper.scrollWidth > contentWrapper.clientWidth;\n\n if (isTruncated) {\n // innerText is necessary vs textContent, as innerText ignores sr-only / display: none text\n showTooltip(\"bottom\", cell, cell.innerText!);\n this.tooltipVisible = true;\n }\n }\n\n handleTagAreaFocus() {\n if (this.tagInputType === \"dropdown\") {\n this.closeDropdown();\n }\n\n const firstFocusableTag = this.nonLockedTagEls[0];\n firstFocusableTag && this.focusTag(firstFocusableTag);\n }\n\n handleRemoveButtonClick(tag: string) {\n this.moveLeftTag();\n this.removeTag(tag);\n }\n\n moveDownListItem() {\n if (this.listItemEls.length > 0) {\n const firstListItem = this.listItemEls[0];\n\n if (!this.focusedListItem) {\n this.focusListItem(firstListItem);\n } else if (this.focusedListItem.nextElementSibling) {\n this.focusListItem(this.focusedListItem.nextElementSibling as HTMLLIElement);\n } else {\n this.focusListItem(firstListItem);\n }\n }\n }\n\n moveUpListItem() {\n if (this.listItemEls.length > 0) {\n const lastListItem = this.listItemEls[this.listItemEls.length - 1];\n\n if (!this.focusedListItem) {\n this.focusListItem(lastListItem);\n } else if (this.focusedListItem.previousElementSibling) {\n this.focusListItem(this.focusedListItem.previousElementSibling as HTMLLIElement);\n } else {\n this.clearListItemFocus();\n }\n }\n }\n\n moveDownRow() {\n if (this.filteredRows.length > 0) {\n if (this.tablePosition.row === 0) {\n this.tablePosition.row = 1;\n } else if (this.tablePosition.row === this.filteredRows.length) {\n this.tablePosition.row = 1;\n } else {\n this.tablePosition.row++;\n }\n\n // skip locked rows\n const rowToFocus = this.wmRowEls[this.tablePosition.row - 1] as HTMLWmTagInputRowElement;\n if (rowToFocus.locked) {\n this.moveDownRow();\n } else {\n this.focusCell(this.tablePosition);\n }\n }\n }\n\n moveUpRow() {\n if (this.filteredRows.length > 0) {\n if (this.tablePosition.row === 0) {\n this.tablePosition.row = this.filteredRows.length;\n } else if (this.tablePosition.row === 1) {\n this.tablePosition.row = 0;\n } else {\n this.tablePosition.row--;\n }\n\n // skip locked rows\n const rowToFocus = this.wmRowEls[this.tablePosition.row - 1] as HTMLWmTagInputRowElement;\n if (rowToFocus && rowToFocus.locked) {\n this.moveUpRow();\n } else if (rowToFocus) {\n this.focusCell(this.tablePosition);\n } else {\n this.clearCellFocus();\n }\n }\n }\n\n moveLeftCell() {\n if (this.tablePosition.column != 1) {\n this.tablePosition.column--;\n this.focusCell(this.tablePosition);\n }\n }\n\n moveRightCell() {\n const numCols = csvToArray(this.colHeaders).length;\n\n if (this.tablePosition.column < numCols) {\n this.tablePosition.column++;\n this.focusCell(this.tablePosition);\n }\n }\n\n moveLeftTag() {\n const lastTag = this.tagEls[this.tagEls.length - 1];\n if (this.focusedTag && this.tagEls.includes(this.focusedTag.previousElementSibling as HTMLLIElement)) {\n this.focusedTag = this.focusedTag.previousElementSibling as HTMLLIElement;\n } else {\n this.focusedTag = lastTag;\n }\n // skip locked tags\n if (this.focusedTag.classList.contains(\"locked\") && this.nonLockedTagEls.length > 0) {\n this.moveLeftTag();\n } else {\n this.focusTag(this.focusedTag);\n }\n }\n\n moveRightTag() {\n const firstTag = this.tagEls[0];\n if (this.focusedTag && this.tagEls.includes(this.focusedTag.nextElementSibling as HTMLLIElement)) {\n this.focusedTag = this.focusedTag.nextElementSibling as HTMLLIElement;\n } else {\n this.focusedTag = firstTag;\n }\n // skip locked tags\n if (this.focusedTag.classList.contains(\"locked\")) {\n this.moveRightTag();\n } else {\n this.focusTag(this.focusedTag);\n }\n }\n\n addOption(option: string): string[] {\n let newOptionsList = this.optionsList;\n const optionAlreadyExists = this.includesCaseInsensitive(this.optionsList, option);\n if (!optionAlreadyExists) {\n newOptionsList = newOptionsList.concat(option);\n }\n return newOptionsList;\n }\n\n removeOption(option: string) {\n this.optionsList = this.filterCaseInsensitive(this.optionsList, option);\n }\n\n addTag(tag: string): void {\n let newTagsList = this.tagsList;\n const tagAlreadyAdded = this.includesCaseInsensitive(this.tagsList, tag);\n const tagExistsAsOption = this.optionsList.filter((x) => x.toLowerCase() === tag.toLowerCase())[0];\n\n if (!tagAlreadyAdded) {\n let textToAnnounce = tag;\n if (this.tagInputType === \"table\") {\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\n textToAnnounce = referencedRow.col1!;\n }\n this.announce(this.generateTagAddedMessage(textToAnnounce));\n this.tagsList = newTagsList.concat(tagExistsAsOption || tag);\n // if maxTags has been reached, focus should go to the tagArea\n if (this.tagLimitReached) {\n this.tagAreaEl.focus();\n }\n }\n }\n\n removeTag(tag: string) {\n let textToAnnounce = tag;\n if (this.tagInputType === \"table\") {\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\n textToAnnounce = referencedRow.col1!;\n }\n const tagRemovedMessage = intl.formatMessage(\n { id: \"tagInput.tagRemoved\", defaultMessage: \"{tag} removed\" },\n { tag: textToAnnounce }\n );\n this.announce(tagRemovedMessage);\n this.tagsList = this.filterCaseInsensitive(this.tagsList, tag);\n\n if (this.tagInputType === \"dropdown\") {\n // if a tag was introduced by the user, also remove it from the dropdown options\n const devOptionsList = csvToArray(this.options);\n if (this.includesCaseInsensitive(this.optionsList, tag) && !this.includesCaseInsensitive(devOptionsList, tag)) {\n this.removeOption(tag);\n }\n }\n }\n\n focusListItem(item: HTMLLIElement): void {\n this.focusedListItem = item;\n this.inputEl.setAttribute(\"aria-activedescendant\", this.focusedListItem.id);\n item.scrollIntoView({ block: \"nearest\" });\n }\n\n focusTag(element: HTMLLIElement): void {\n if (element.classList.contains(\"locked\")) {\n this.focusedTag = null;\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", \"\");\n } else {\n this.focusedTag = element;\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", this.focusedTag.id);\n }\n }\n\n focusCell(position: TablePosition) {\n this.clearCellFocus(false);\n\n if (position.row) {\n const rowToFocus = this.localRowEls[position.row];\n const rowCells = rowToFocus.querySelectorAll(\"td\");\n const cellToFocus = rowCells[position.column - 1];\n const contentWrapper = cellToFocus.querySelector(\".cell-content-wrapper\")!;\n const isTruncated = contentWrapper.scrollWidth > contentWrapper.clientWidth;\n\n rowToFocus.classList.add(\"focused\");\n cellToFocus.classList.add(\"focused\");\n cellToFocus.scrollIntoView({ block: \"nearest\" });\n this.inputEl.setAttribute(\"aria-activedescendant\", cellToFocus.id);\n\n this.dismissTooltip();\n if (isTruncated) {\n // innerText is necessary vs textContent, as innerText ignores sr-only / display: none text\n showTooltip(\"bottom\", cellToFocus, cellToFocus.innerText!);\n this.tooltipVisible = true;\n }\n }\n }\n\n clearTagFocus() {\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", \"\");\n this.focusedTag = null;\n }\n\n clearCellFocus(resetPosition: boolean = true) {\n this.inputEl.setAttribute(\"aria-activedescendant\", \"\");\n if (resetPosition) {\n this.tablePosition = { row: 0, column: 1 };\n }\n\n this.localRowEls.forEach((row) => {\n row.classList.remove(\"focused\");\n row.querySelectorAll(\"td\").forEach((cell) => {\n cell.classList.remove(\"focused\");\n });\n });\n }\n\n openDropdown() {\n // given an offset of -2px because the dropdown is transformed downwards to avoid overlapping the focus border\n this.openUp = shouldOpenUp(this.el, this.dropdownEl, this.el.clientHeight, -2);\n this.isExpanded = true;\n }\n\n closeDropdown() {\n this.clearListItemFocus();\n this.isExpanded = false;\n }\n\n clearListItemFocus() {\n this.focusedListItem = null;\n this.inputEl.setAttribute(\"aria-activedescendant\", \"\");\n\n this.listItemEls.forEach((el) => {\n el.classList.remove(\"focused\");\n });\n }\n\n resetInput() {\n this.charCount = 0;\n this.inputEl.value = \"\";\n }\n\n announce(message: string) {\n // \\u00A0 is a non-breaking space character, which causes the message to be read as a new one\n if (this.liveRegionEl.textContent === message) {\n message += \"\\u00A0\";\n }\n this.liveRegionMessage = message;\n }\n\n announceExistingOptions() {\n // request animation frame to wait for re-rendering of filtered options\n window.requestAnimationFrame(() => {\n let numResults = 0;\n\n if (this.tagInputType === \"dropdown\") {\n numResults = this.optionEls.length;\n } else if (this.tagInputType === \"table\") {\n numResults = this.filteredRows.length;\n }\n\n const existingOptionsMessage = intl.formatMessage(\n {\n id: \"tagInput.existingOptions\",\n defaultMessage: \"{num, plural, one {1 existing option.} other {# existing options.}}\",\n },\n { num: numResults }\n );\n\n this.announce(existingOptionsMessage);\n });\n }\n\n generateCharacterLimitWarning(charCount: number, charLimit: number): string {\n let message = globalMessages.getCharactersEntered(charCount, charLimit);\n if (charCount >= charLimit) {\n message += ` ${globalMessages.characterLimitReached}`;\n }\n return message;\n }\n\n positionInput() {\n const lastTag = this.tagEls[this.tagEls.length - 1];\n // default placement to fall back to when no tags are present, or not enough space is available\n this.inputEl.style.position = \"static\";\n this.inputEl.style.width = \"100%\";\n\n if (lastTag) {\n const spaceAvailable = this.tagAreaEl.getBoundingClientRect().right - lastTag.getBoundingClientRect().right;\n if (spaceAvailable >= this.inputMinimumWidth) {\n // because the input has right: 0px\n // all thats needed to properly place it is setting position: absolute, top, and width\n this.inputEl.style.position = \"absolute\";\n this.inputEl.style.top = lastTag.offsetTop.toString() + \"px\";\n this.inputEl.style.width =\n (this.tagAreaEl.getBoundingClientRect().right - lastTag.getBoundingClientRect().right - 8).toString() + \"px\";\n }\n }\n }\n\n /// Helpers\n\n listToCSV(list: string[]): string {\n return list.join(\",\");\n }\n\n includesCaseInsensitive(list: string[], element: string): boolean {\n const lowercaseList = list.map((str) => str.toLowerCase());\n return lowercaseList.includes(element.toLowerCase());\n }\n\n filterCaseInsensitive(list: string[], element: string): string[] {\n return list.filter((x) => x.toLowerCase() !== element.toLowerCase());\n }\n\n sortCaseInsensitive(list: string[]) {\n // The vanilla .sort method places words that start with capital letters above others (ASCII order)\n // so we need to pass in our own compare function to sort case-insensitive\n return list.sort((a, b) => {\n a = a.toLowerCase();\n b = b.toLowerCase();\n return a > b ? 1 : a < b ? -1 : 0;\n });\n }\n\n /// Renders\n\n renderTags() {\n let lockedTags: HTMLLIElement[] = [];\n let unlockedTags: HTMLLIElement[] = [];\n\n this.tagsList.forEach((tag, idx) => {\n const id = `tag${idx + 1}`;\n let tagText = \"\";\n let isLocked = false;\n\n if (this.tagInputType === \"dropdown\") {\n tagText = tag;\n } else if (this.tagInputType === \"table\") {\n // display table tags using col1 of the row with the same id\n // if one can't be found, display as empty\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\n tagText = referencedRow ? referencedRow.col1! : \"\";\n isLocked = referencedRow ? referencedRow.locked : false;\n }\n\n // make sure locked tags always appear in front of list\n const targetList = isLocked ? lockedTags : unlockedTags;\n targetList.push(\n <li\n id={id}\n class={`tag highlight ${this.focusedTag && this.focusedTag.id === id ? \"focused\" : \"\"} ${\n isLocked ? \"locked\" : \"\"\n }`}\n data-tag={tag}\n role=\"option\"\n >\n {tagText}\n {isLocked ? (\n <div class=\"icon lock\"></div>\n ) : (\n <button class=\"icon remove-btn\" tabIndex={-1} onClick={() => this.handleRemoveButtonClick(tag)}></button>\n )}\n </li>\n );\n });\n\n return [...lockedTags, ...unlockedTags];\n }\n\n renderDropdown() {\n return (\n <div\n class={`dropdown-wrapper ${this.isExpanded ? \"open\" : \"\"} ${this.openUp ? \"upwards\" : \"\"}`}\n ref={(el) => (this.dropdownEl = el as HTMLDivElement)}\n >\n <div id=\"help-text\" class=\"help-text\">\n {this.renderHelpText()}\n </div>\n <ul\n class=\"dropdown\"\n id=\"dropdown\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n aria-expanded={this.isExpanded ? \"true\" : false}\n aria-label={this.label}\n tabindex={-1}\n >\n {this.inputEl && this.renderAddNewButton()}\n {this.renderListItems(this.optionsList)}\n </ul>\n </div>\n );\n }\n\n renderListItems(optionsList: string[]) {\n optionsList = this.sortCaseInsensitive(optionsList);\n\n // filter by input\n if (this.inputEl && this.inputEl.value) {\n optionsList = this.optionsList.filter((option) =>\n option.toLowerCase().includes(this.inputEl.value.toLowerCase())\n );\n }\n\n return optionsList.map((option, idx) => {\n const id = `option${idx + 1}`;\n const isFocused = this.focusedListItem && this.focusedListItem.id === id;\n const isSelected = this.includesCaseInsensitive(this.tagsList, option);\n\n return (\n <li\n class={`option ${isFocused ? \"focused\" : \"\"}`}\n role=\"option\"\n id={id}\n data-option={option}\n aria-selected={isSelected ? \"true\" : \"false\"}\n aria-disabled={isSelected ? \"true\" : \"false\"}\n onKeyDown={(ev) => this.handleListItemKeyDown(ev)}\n onBlur={(ev) => this.handleBlur(ev, this.el)}\n onClick={(ev) => this.handleListItemClick(ev.target as HTMLElement)}\n >\n {option}\n </li>\n );\n });\n }\n\n renderAddNewButton() {\n const hasNonWhiteSpaceCharacters = this.inputEl.value.match(/\\S/);\n const optionAlreadyExists = this.includesCaseInsensitive(this.optionsList, this.inputEl.value.trim());\n if (this.addNew && hasNonWhiteSpaceCharacters && !optionAlreadyExists) {\n const id = `add-new-btn`;\n const isFocused = this.focusedListItem && this.focusedListItem.id === id;\n return (\n <li\n role=\"option\"\n class={`add-new-btn ${isFocused ? \"focused\" : \"\"}`}\n id={id}\n data-option={this.inputEl.value}\n onKeyDown={(ev) => this.handleListItemKeyDown(ev)}\n onBlur={(ev) => this.handleBlur(ev, this.el)}\n onClick={(ev) => this.handleListItemClick(ev.target as HTMLElement)}\n tabIndex={isFocused ? 0 : -1}\n >\n {`Add \"${this.inputEl.value.trim()}\"`}\n </li>\n );\n } else return \"\";\n }\n\n renderHelpText() {\n let helpText = \"\";\n\n if (this.optionsList.length > 0) {\n helpText += this.componentMessages.selectionHelpText;\n }\n if (this.addNew) {\n helpText += \" \" + this.componentMessages.addNewHelpText;\n }\n\n return helpText;\n }\n\n renderTagCounter() {\n if (this.maxTags) {\n return (\n <div class=\"lower-row\">\n <div id=\"max-tags\">\n {`${this.componentMessages.tagsAdded}: ${this.tagsList.length}/${this.maxTags}`}\n {this.tagLimitReached && ` - ${this.componentMessages.maxTagsReached}`}\n </div>\n </div>\n );\n }\n }\n\n renderTable() {\n return (\n <div class=\"table-wrapper\" onScroll={() => this.dismissTooltip()}>\n <table\n id=\"table\"\n role=\"grid\"\n class={`${this.colWidths ? \"fixed-widths\" : \"\"}`}\n aria-label={this.label}\n aria-multiselectable=\"true\"\n >\n {this.renderTableHeaders()}\n {this.filteredRows.length ? this.renderTableRows() : <div class=\"no-results\">{this.noResultsMessage}</div>}\n </table>\n </div>\n );\n }\n\n renderTableHeaders() {\n return (\n <tr class=\"headers\" role=\"row\">\n {csvToArray(this.colHeaders).map((header, idx) => {\n let overflowRule = \"wrap\";\n if (this.colWrap && csvToArray(this.colWrap)[idx]) {\n overflowRule = csvToArray(this.colWrap)[idx];\n }\n return (\n <th\n class={`header-cell ${overflowRule}`}\n role=\"columnheader\"\n // @ts-ignore\n width={this.colWidths ? csvToArray(this.colWidths)[idx] : \"\"}\n >\n {header}\n </th>\n );\n })}\n </tr>\n );\n }\n\n renderTableRows() {\n return this.filteredRows.map((row) => {\n const isSelected: boolean = this.includesCaseInsensitive(this.tagsList, row.id);\n\n return (\n <tr\n id={row.id}\n class={`${row.locked ? \"locked\" : \"\"} ${isSelected ? \"selected\" : \"\"}`}\n role=\"row\"\n onClick={() => this.handleTableRowClick(row.id)}\n >\n {this.renderTableCells(row)}\n </tr>\n );\n });\n }\n\n renderTableCells(row: HTMLWmTagInputRowElement) {\n const colValues = [row.col1, row.col2, row.col3, row.col4].filter((val) => !!val);\n const isSelected: boolean = this.includesCaseInsensitive(this.tagsList, row.id);\n\n return colValues.map((val, idx) => {\n const localId = `${row.id}-col${idx + 1}`;\n let overflowRule = \"wrap\";\n if (this.colWrap && csvToArray(this.colWrap)[idx]) {\n overflowRule = csvToArray(this.colWrap)[idx];\n }\n\n return (\n <td\n id={localId}\n role=\"gridcell\"\n aria-describedby={`${localId}-description`}\n aria-selected={isSelected.toString()}\n onMouseEnter={(ev) => this.handleCellMouseEnter(ev)}\n onMouseLeave={() => this.dismissTooltip()}\n >\n <div class={`cell-content-wrapper ${overflowRule}`}>{val}</div>\n <div class=\"description\" id={`${localId}-description`}>\n {row.locked ? \"locked\" : \"\"}\n </div>\n </td>\n );\n });\n }\n\n render() {\n return (\n <Host id={this.uid}>\n <div class={`wrapper label-${this.labelPosition} ${this.errorMessage ? \"invalid\" : \"\"}`}>\n <div class=\"label-wrapper\">\n <label class=\"label\" htmlFor={`input${this.uid}`}>\n {this.label}\n {this.requiredField && (\n <span class=\"required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n </div>\n <div\n class={`field-wrapper ${this.focusedElement ? \"focused\" : \"\"} ${this.errorMessage ? \"invalid\" : \"\"}`}\n ref={(el) => (this.fieldWrapperEl = el as HTMLDivElement)}\n >\n <div class=\"upper-row\">\n <div class=\"tags-and-input-wrapper\">\n {this.tagsList.length > 0 && (\n <ul\n ref={(el) => (this.tagAreaEl = el as HTMLUListElement)}\n class=\"tag-area\"\n role=\"listbox\"\n aria-activedescendant=\"\"\n aria-orientation=\"horizontal\"\n aria-label={`${this.label} ${\n this.tagsList.length > 0 ? this.componentMessages.tagAreaInstructions : \"\"\n }`}\n tabindex={this.nonLockedTagsList.length > 0 ? 0 : -1}\n aria-describedby={`info max-tags`}\n onFocus={() => this.handleTagAreaFocus()}\n onBlur={(ev) => {\n this.clearTagFocus();\n this.handleBlur(ev, this.el);\n }}\n onKeyDown={(ev) => this.handleTagAreaKeyDown(ev)}\n >\n {this.renderTags()}\n </ul>\n )}\n <input\n id={`input${this.uid}`}\n class={this.tagLimitReached ? \"hidden\" : \"\"}\n role=\"combobox\"\n ref={(el) => (this.inputEl = el as HTMLInputElement)}\n autocomplete=\"off\"\n aria-required={this.requiredField ? \"true\" : null}\n aria-controls={this.tagInputType}\n aria-describedby={`help-text${this.errorMessage ? \" error \" : \"\"}`}\n aria-label={`${this.label} ${\n this.tagInputType === \"dropdown\" ? globalMessages.getCharacterLimit(this.characterLimit) : \"\"\n }`}\n aria-expanded={this.tagInputType === \"dropdown\" ? this.isExpanded.toString() : null}\n placeholder={this.placeholder}\n maxLength={this.tagInputType === \"dropdown\" ? this.characterLimit : undefined}\n onInput={() => this.handleInputChanged(this.inputEl.value)}\n onBlur={(ev) => {\n this.handleBlur(ev, this.el);\n }}\n onFocus={() => this.handleInputFocus()}\n onKeyDown={(ev) => this.handleInputKeyDown(ev)}\n ></input>\n </div>\n {this.tagInputType === \"dropdown\" && (\n <div class=\"character-count\">\n {this.charCount}/{this.characterLimit}\n </div>\n )}\n </div>\n {this.renderTagCounter()}\n {this.tagInputType === \"dropdown\" && this.renderDropdown()}\n </div>\n {this.info && (\n <div id=\"info\" class=\"info-text\">\n {this.info}\n </div>\n )}\n {this.errorMessage && <div id=\"error\">{this.errorMessage}</div>}\n <div\n class=\"sr-only\"\n aria-live=\"assertive\"\n ref={(el) => (this.liveRegionEl = el as HTMLDivElement)}\n aria-atomic=\"true\"\n >\n {this.liveRegionMessage}\n </div>\n {this.tagInputType === \"table\" && this.renderTable()}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}