@watermarkinsights/ripple 0.0.0 → 0.1.0-alpha.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 (580) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -1
  3. package/dist/cjs/app-globals-f836e216.js +103 -0
  4. package/dist/cjs/chartFunctions-608adb05.js +908 -0
  5. package/dist/cjs/{functions-f2333f02.js → functions-b188d5b3.js} +6137 -1590
  6. package/dist/cjs/index-786066a1.js +1880 -0
  7. package/dist/cjs/interfaces-8419be91.js +59 -0
  8. package/dist/cjs/intl-01531391.js +283 -0
  9. package/dist/cjs/loader.cjs.js +7 -14
  10. package/dist/cjs/priv-calendar.cjs.entry.js +608 -0
  11. package/dist/cjs/priv-chart-popover-old.cjs.entry.js +146 -0
  12. package/dist/cjs/priv-chart-popover_2.cjs.entry.js +194 -0
  13. package/dist/cjs/priv-navigator-button.cjs.entry.js +19 -19
  14. package/dist/cjs/priv-navigator-item.cjs.entry.js +24 -23
  15. package/dist/cjs/priv-option-list.cjs.entry.js +391 -0
  16. package/dist/cjs/ripple.cjs.js +25 -0
  17. package/dist/cjs/wm-action-menu_2.cjs.entry.js +471 -302
  18. package/dist/cjs/wm-button.cjs.entry.js +263 -142
  19. package/dist/cjs/wm-chart-bar.cjs.entry.js +441 -0
  20. package/dist/cjs/wm-chart-column.cjs.entry.js +544 -0
  21. package/dist/cjs/wm-chart-slice.cjs.entry.js +17 -12
  22. package/dist/cjs/wm-chart.cjs.entry.js +133 -478
  23. package/dist/cjs/wm-date-range.cjs.entry.js +526 -0
  24. package/dist/cjs/wm-datepicker.cjs.entry.js +285 -224
  25. package/dist/cjs/wm-file-list.cjs.entry.js +23 -0
  26. package/dist/cjs/wm-file.cjs.entry.js +210 -0
  27. package/dist/cjs/wm-flyout.cjs.entry.js +181 -0
  28. package/dist/cjs/wm-input.cjs.entry.js +121 -100
  29. package/dist/cjs/wm-line-chart.cjs.entry.js +541 -0
  30. package/dist/cjs/wm-modal-pss_3.cjs.entry.js +220 -0
  31. package/dist/cjs/wm-modal_3.cjs.entry.js +223 -0
  32. package/dist/cjs/wm-navigation_3.cjs.entry.js +188 -0
  33. package/dist/cjs/wm-navigator.cjs.entry.js +305 -250
  34. package/dist/cjs/wm-nested-select.cjs.entry.js +320 -0
  35. package/dist/cjs/wm-optgroup.cjs.entry.js +74 -0
  36. package/dist/cjs/wm-option_2.cjs.entry.js +517 -465
  37. package/dist/cjs/wm-pagination.cjs.entry.js +218 -165
  38. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +204 -0
  39. package/dist/cjs/wm-search.cjs.entry.js +182 -217
  40. package/dist/cjs/wm-snackbar.cjs.entry.js +158 -142
  41. package/dist/cjs/wm-tab-item_3.cjs.entry.js +317 -276
  42. package/dist/cjs/wm-tag-input.cjs.entry.js +940 -500
  43. package/dist/cjs/wm-tag-option.cjs.entry.js +43 -0
  44. package/dist/cjs/wm-textarea.cjs.entry.js +94 -0
  45. package/dist/cjs/wm-timepicker.cjs.entry.js +276 -349
  46. package/dist/cjs/wm-toggletip.cjs.entry.js +238 -114
  47. package/dist/cjs/wm-uploader.cjs.entry.js +322 -323
  48. package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
  49. package/dist/collection/collection-manifest.json +104 -34
  50. package/dist/collection/components/charts/chartFunctions.js +833 -0
  51. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.css +995 -0
  52. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +340 -0
  53. package/dist/collection/components/charts/priv-chart-popover-old/priv-chart-popover-old.css +990 -0
  54. package/dist/collection/components/charts/priv-chart-popover-old/priv-chart-popover-old.js +263 -0
  55. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +125 -0
  56. package/dist/collection/components/charts/wm-chart/wm-chart.css +1326 -0
  57. package/dist/collection/components/charts/wm-chart/wm-chart.js +422 -0
  58. package/dist/collection/components/charts/wm-chart-bar/wm-chart-bar.css +1116 -0
  59. package/dist/collection/components/charts/wm-chart-bar/wm-chart-bar.js +579 -0
  60. package/dist/collection/components/charts/wm-chart-column/wm-chart-column.css +1169 -0
  61. package/dist/collection/components/charts/wm-chart-column/wm-chart-column.js +688 -0
  62. package/dist/collection/components/charts/wm-chart-legend/wm-chart-legend.css +932 -0
  63. package/dist/collection/components/charts/wm-chart-legend/wm-chart-legend.js +194 -0
  64. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.css +1208 -0
  65. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +862 -0
  66. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.css +1326 -0
  67. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +264 -0
  68. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.css +967 -0
  69. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +151 -0
  70. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +121 -0
  71. package/dist/collection/components/datepickers/datepicker.css +1137 -0
  72. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.css +1403 -0
  73. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +881 -0
  74. package/dist/collection/components/datepickers/wm-date-range.js +870 -0
  75. package/dist/collection/components/datepickers/wm-datepicker.js +579 -0
  76. package/dist/collection/components/selects/priv-option-list/priv-option-list.css +999 -0
  77. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +778 -0
  78. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.css +1259 -0
  79. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +626 -0
  80. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.css +909 -0
  81. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +258 -0
  82. package/dist/collection/components/selects/wm-option/wm-option.css +1033 -0
  83. package/dist/collection/components/selects/wm-option/wm-option.js +530 -0
  84. package/dist/collection/components/selects/wm-select/wm-select.css +1187 -0
  85. package/dist/collection/components/selects/wm-select/wm-select.js +705 -0
  86. package/dist/collection/components/wm-action-menu/wm-action-menu.css +1614 -50
  87. package/dist/collection/components/wm-action-menu/wm-action-menu.js +605 -387
  88. package/dist/collection/components/wm-button/wm-button.css +1440 -385
  89. package/dist/collection/components/wm-button/wm-button.js +538 -348
  90. package/dist/collection/components/wm-file/wm-file.css +1086 -0
  91. package/dist/collection/components/wm-file/wm-file.js +428 -0
  92. package/dist/collection/components/wm-file-list/wm-file-list.css +899 -0
  93. package/dist/collection/components/wm-file-list/wm-file-list.js +45 -0
  94. package/dist/collection/components/wm-flyout/wm-flyout.css +1117 -0
  95. package/dist/collection/components/wm-flyout/wm-flyout.js +449 -0
  96. package/dist/collection/components/wm-input/wm-input.css +965 -96
  97. package/dist/collection/components/wm-input/wm-input.js +466 -291
  98. package/dist/collection/components/wm-menuitem/wm-menuitem.css +919 -55
  99. package/dist/collection/components/wm-menuitem/wm-menuitem.js +402 -397
  100. package/dist/collection/components/wm-modal/wm-modal-footer.css +871 -28
  101. package/dist/collection/components/wm-modal/wm-modal-footer.js +139 -156
  102. package/dist/collection/components/wm-modal/wm-modal-header.css +864 -16
  103. package/dist/collection/components/wm-modal/wm-modal-header.js +76 -106
  104. package/dist/collection/components/wm-modal/wm-modal.css +921 -93
  105. package/dist/collection/components/wm-modal/wm-modal.js +337 -337
  106. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.css +931 -0
  107. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.js +138 -0
  108. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.css +925 -0
  109. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.js +82 -0
  110. package/dist/collection/components/wm-modal-pss/wm-modal-pss.css +1007 -0
  111. package/dist/collection/components/wm-modal-pss/wm-modal-pss.js +365 -0
  112. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +926 -0
  113. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +119 -0
  114. package/dist/collection/components/wm-navigation/wm-navigation-item.css +935 -0
  115. package/dist/collection/components/wm-navigation/wm-navigation-item.js +98 -0
  116. package/dist/collection/components/wm-navigation/wm-navigation.css +977 -0
  117. package/dist/collection/components/wm-navigation/wm-navigation.js +190 -0
  118. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.css +868 -33
  119. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +83 -94
  120. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.css +876 -25
  121. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +120 -110
  122. package/dist/collection/components/wm-navigator/wm-navigator.css +891 -38
  123. package/dist/collection/components/wm-navigator/wm-navigator.js +491 -456
  124. package/dist/collection/components/wm-pagination/wm-pagination.css +895 -68
  125. package/dist/collection/components/wm-pagination/wm-pagination.js +374 -340
  126. package/dist/collection/components/wm-search/wm-search.css +895 -73
  127. package/dist/collection/components/wm-search/wm-search.js +411 -421
  128. package/dist/collection/components/wm-snackbar/wm-snackbar.css +979 -160
  129. package/dist/collection/components/wm-snackbar/wm-snackbar.js +258 -235
  130. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.css +904 -50
  131. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +162 -198
  132. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.css +922 -29
  133. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +334 -292
  134. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.css +862 -13
  135. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +83 -100
  136. package/dist/collection/components/wm-tag-input/wm-tag-input.css +1212 -200
  137. package/dist/collection/components/wm-tag-input/wm-tag-input.js +1283 -702
  138. package/dist/collection/components/wm-tag-input/wm-tag-option/wm-tag-option.js +243 -0
  139. package/dist/collection/components/wm-textarea/wm-textarea.css +1065 -0
  140. package/dist/collection/components/wm-textarea/wm-textarea.js +319 -0
  141. package/dist/collection/components/wm-timepicker/wm-timepicker.css +962 -168
  142. package/dist/collection/components/wm-timepicker/wm-timepicker.js +539 -553
  143. package/dist/collection/components/wm-toggletip/wm-toggletip.css +1094 -148
  144. package/dist/collection/components/wm-toggletip/wm-toggletip.js +370 -211
  145. package/dist/collection/components/wm-uploader/wm-uploader.css +1756 -438
  146. package/dist/collection/components/wm-uploader/wm-uploader.js +607 -661
  147. package/dist/collection/components/wm-wrapper/wm-wrapper.js +26 -25
  148. package/dist/collection/dev/action-menu.js +18 -0
  149. package/dist/collection/dev/chart-bar.js +423 -0
  150. package/dist/collection/dev/chart-column.js +437 -0
  151. package/dist/collection/dev/chart-small.js +56 -0
  152. package/dist/collection/dev/chart.js +18 -0
  153. package/dist/collection/dev/date-range.js +6 -0
  154. package/dist/collection/dev/datepicker.js +46 -0
  155. package/dist/collection/dev/file-list.js +16 -0
  156. package/dist/collection/dev/file.js +0 -0
  157. package/dist/collection/dev/flyout.js +194 -0
  158. package/dist/collection/dev/input.js +6 -0
  159. package/dist/collection/dev/line-chart.js +45 -0
  160. package/dist/collection/dev/modal.js +48 -0
  161. package/dist/collection/dev/navigation.js +13 -0
  162. package/dist/collection/dev/navigator.js +34 -0
  163. package/dist/collection/dev/nested-select.js +36 -0
  164. package/dist/collection/dev/pagination.js +7 -0
  165. package/dist/collection/dev/progress-monitor.js +0 -0
  166. package/dist/collection/dev/pss-modal.js +8 -0
  167. package/dist/collection/dev/scripts.js +43 -14
  168. package/dist/collection/dev/search.js +72 -0
  169. package/dist/collection/dev/select.js +57 -0
  170. package/dist/collection/dev/snackbar.js +68 -0
  171. package/dist/collection/dev/tabs.js +44 -0
  172. package/dist/collection/dev/tag-input.js +32 -0
  173. package/dist/collection/dev/textarea.js +28 -0
  174. package/dist/collection/dev/timepicker.js +32 -0
  175. package/dist/collection/dev/toggletip.js +9 -0
  176. package/dist/collection/dev/uploader.js +139 -0
  177. package/dist/collection/global/__mocks__/functions.js +2 -1
  178. package/dist/collection/global/functions.js +853 -371
  179. package/dist/collection/global/global.js +88 -28
  180. package/dist/collection/global/interfaces.js +62 -39
  181. package/dist/collection/global/intl.js +274 -0
  182. package/dist/collection/global/services/__mocks__/http-service.js +112 -112
  183. package/dist/collection/global/services/http-service.js +41 -41
  184. package/dist/collection/lang/missing.js +43 -0
  185. package/dist/collection/lang/piglatin.js +11 -3
  186. package/dist/esm/app-globals-d0ca31a6.js +101 -0
  187. package/dist/esm/chartFunctions-4bc77b76.js +883 -0
  188. package/dist/esm/{functions-60034bf7.js → functions-de887809.js} +6110 -1584
  189. package/dist/esm/index-ef50bc01.js +1849 -0
  190. package/dist/esm/interfaces-7e50d034.js +55 -0
  191. package/dist/esm/intl-56b47a7b.js +277 -0
  192. package/dist/esm/loader.js +7 -14
  193. package/dist/esm/priv-calendar.entry.js +604 -0
  194. package/dist/esm/priv-chart-popover-old.entry.js +142 -0
  195. package/dist/esm/priv-chart-popover_2.entry.js +189 -0
  196. package/dist/esm/priv-navigator-button.entry.js +19 -19
  197. package/dist/esm/priv-navigator-item.entry.js +24 -23
  198. package/dist/esm/priv-option-list.entry.js +387 -0
  199. package/dist/esm/ripple.js +20 -0
  200. package/dist/esm/wm-action-menu_2.entry.js +471 -302
  201. package/dist/esm/wm-button.entry.js +263 -142
  202. package/dist/esm/wm-chart-bar.entry.js +437 -0
  203. package/dist/esm/wm-chart-column.entry.js +540 -0
  204. package/dist/esm/wm-chart-slice.entry.js +17 -12
  205. package/dist/esm/wm-chart.entry.js +133 -478
  206. package/dist/esm/wm-date-range.entry.js +522 -0
  207. package/dist/esm/wm-datepicker.entry.js +285 -224
  208. package/dist/esm/wm-file-list.entry.js +19 -0
  209. package/dist/esm/wm-file.entry.js +206 -0
  210. package/dist/esm/wm-flyout.entry.js +177 -0
  211. package/dist/esm/wm-input.entry.js +121 -100
  212. package/dist/esm/wm-line-chart.entry.js +537 -0
  213. package/dist/esm/wm-modal-pss_3.entry.js +214 -0
  214. package/dist/esm/wm-modal_3.entry.js +217 -0
  215. package/dist/esm/wm-navigation_3.entry.js +182 -0
  216. package/dist/esm/wm-navigator.entry.js +305 -250
  217. package/dist/esm/wm-nested-select.entry.js +316 -0
  218. package/dist/esm/wm-optgroup.entry.js +70 -0
  219. package/dist/esm/wm-option_2.entry.js +517 -465
  220. package/dist/esm/wm-pagination.entry.js +218 -165
  221. package/dist/esm/wm-progress-indicator_3.entry.js +198 -0
  222. package/dist/esm/wm-search.entry.js +182 -217
  223. package/dist/esm/wm-snackbar.entry.js +158 -142
  224. package/dist/esm/wm-tab-item_3.entry.js +317 -276
  225. package/dist/esm/wm-tag-input.entry.js +940 -500
  226. package/dist/esm/wm-tag-option.entry.js +39 -0
  227. package/dist/esm/wm-textarea.entry.js +90 -0
  228. package/dist/esm/wm-timepicker.entry.js +276 -349
  229. package/dist/esm/wm-toggletip.entry.js +238 -114
  230. package/dist/esm/wm-uploader.entry.js +322 -323
  231. package/dist/esm/wm-wrapper.entry.js +12 -12
  232. package/dist/esm-es5/app-globals-d0ca31a6.js +1 -0
  233. package/dist/esm-es5/chartFunctions-4bc77b76.js +1 -0
  234. package/dist/esm-es5/functions-de887809.js +1 -0
  235. package/dist/esm-es5/index-ef50bc01.js +1 -0
  236. package/dist/esm-es5/index.js +0 -0
  237. package/dist/esm-es5/interfaces-7e50d034.js +1 -0
  238. package/dist/esm-es5/intl-56b47a7b.js +1 -0
  239. package/dist/esm-es5/loader.js +1 -0
  240. package/dist/esm-es5/priv-calendar.entry.js +1 -0
  241. package/dist/esm-es5/priv-chart-popover-old.entry.js +1 -0
  242. package/dist/esm-es5/priv-chart-popover_2.entry.js +1 -0
  243. package/dist/esm-es5/priv-navigator-button.entry.js +1 -0
  244. package/dist/esm-es5/priv-navigator-item.entry.js +1 -0
  245. package/dist/esm-es5/priv-option-list.entry.js +1 -0
  246. package/dist/esm-es5/ripple.js +1 -0
  247. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -0
  248. package/dist/esm-es5/wm-button.entry.js +1 -0
  249. package/dist/esm-es5/wm-chart-bar.entry.js +1 -0
  250. package/dist/esm-es5/wm-chart-column.entry.js +1 -0
  251. package/dist/esm-es5/wm-chart-slice.entry.js +1 -0
  252. package/dist/esm-es5/wm-chart.entry.js +1 -0
  253. package/dist/esm-es5/wm-date-range.entry.js +1 -0
  254. package/dist/esm-es5/wm-datepicker.entry.js +1 -0
  255. package/dist/esm-es5/wm-file-list.entry.js +1 -0
  256. package/dist/esm-es5/wm-file.entry.js +1 -0
  257. package/dist/esm-es5/wm-flyout.entry.js +1 -0
  258. package/dist/esm-es5/wm-input.entry.js +1 -0
  259. package/dist/esm-es5/wm-line-chart.entry.js +1 -0
  260. package/dist/esm-es5/wm-modal-pss_3.entry.js +1 -0
  261. package/dist/esm-es5/wm-modal_3.entry.js +1 -0
  262. package/dist/esm-es5/wm-navigation_3.entry.js +1 -0
  263. package/dist/esm-es5/wm-navigator.entry.js +1 -0
  264. package/dist/esm-es5/wm-nested-select.entry.js +1 -0
  265. package/dist/esm-es5/wm-optgroup.entry.js +1 -0
  266. package/dist/esm-es5/wm-option_2.entry.js +1 -0
  267. package/dist/esm-es5/wm-pagination.entry.js +1 -0
  268. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -0
  269. package/dist/esm-es5/wm-search.entry.js +1 -0
  270. package/dist/esm-es5/wm-snackbar.entry.js +1 -0
  271. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -0
  272. package/dist/esm-es5/wm-tag-input.entry.js +1 -0
  273. package/dist/esm-es5/wm-tag-option.entry.js +1 -0
  274. package/dist/esm-es5/wm-textarea.entry.js +1 -0
  275. package/dist/esm-es5/wm-timepicker.entry.js +1 -0
  276. package/dist/esm-es5/wm-toggletip.entry.js +1 -0
  277. package/dist/esm-es5/wm-uploader.entry.js +1 -0
  278. package/dist/esm-es5/wm-wrapper.entry.js +1 -0
  279. package/dist/index.js +1 -1
  280. package/dist/loader/cdn.js +1 -2
  281. package/dist/loader/index.cjs.js +1 -2
  282. package/dist/loader/index.d.ts +13 -2
  283. package/dist/loader/index.es2017.js +1 -2
  284. package/dist/loader/index.js +1 -2
  285. package/dist/loader/package.json +2 -1
  286. package/dist/ripple/index.esm.js +0 -0
  287. package/dist/ripple/p-03a6850a.entry.js +1 -0
  288. package/dist/ripple/p-0c3162d5.system.entry.js +1 -0
  289. package/dist/ripple/p-0ec71f08.system.entry.js +1 -0
  290. package/dist/ripple/p-1032c0db.system.entry.js +1 -0
  291. package/dist/ripple/p-117c3d78.system.js +2 -0
  292. package/dist/ripple/p-12024d3b.system.entry.js +1 -0
  293. package/dist/ripple/p-13152ac1.system.entry.js +1 -0
  294. package/dist/ripple/p-1318ae67.entry.js +1 -0
  295. package/dist/ripple/p-137bf0c0.system.entry.js +1 -0
  296. package/dist/ripple/p-13bb6faf.entry.js +1 -0
  297. package/dist/ripple/p-16ff8110.entry.js +1 -0
  298. package/dist/ripple/p-1825d519.system.entry.js +1 -0
  299. package/dist/ripple/p-18417851.entry.js +1 -0
  300. package/dist/ripple/p-1c655f6b.entry.js +1 -0
  301. package/dist/ripple/p-1ce77857.system.entry.js +1 -0
  302. package/dist/ripple/p-1d76061a.entry.js +1 -0
  303. package/dist/ripple/p-22b57f73.system.entry.js +1 -0
  304. package/dist/ripple/p-24dfbf1d.system.entry.js +1 -0
  305. package/dist/ripple/p-28996d67.system.entry.js +1 -0
  306. package/dist/ripple/p-30118d12.system.entry.js +1 -0
  307. package/dist/ripple/p-32f3581a.entry.js +1 -0
  308. package/dist/ripple/p-334d8711.system.js +1 -0
  309. package/dist/ripple/p-3c8c5933.js +1 -0
  310. package/dist/ripple/p-436bf381.system.entry.js +1 -0
  311. package/dist/ripple/p-43843597.system.entry.js +1 -0
  312. package/dist/ripple/p-45999149.system.js +1 -0
  313. package/dist/ripple/p-48b596ae.entry.js +1 -0
  314. package/dist/ripple/p-4bab5360.system.js +1 -0
  315. package/dist/ripple/p-4ff0db4d.entry.js +1 -0
  316. package/dist/ripple/p-50ea2036.system.js +1 -0
  317. package/dist/ripple/p-57f1bafd.system.entry.js +1 -0
  318. package/dist/ripple/p-5b0e9165.entry.js +1 -0
  319. package/dist/ripple/p-6266fcbf.system.entry.js +1 -0
  320. package/dist/ripple/p-646e22d3.system.entry.js +1 -0
  321. package/dist/ripple/p-6950e8ed.system.js +1 -0
  322. package/dist/ripple/p-6c6da5db.entry.js +1 -0
  323. package/dist/ripple/p-6d2af8d9.system.entry.js +1 -0
  324. package/dist/ripple/p-6d46f775.system.entry.js +1 -0
  325. package/dist/ripple/p-6de0efee.entry.js +1 -0
  326. package/dist/ripple/p-7833db63.entry.js +1 -0
  327. package/dist/ripple/p-7b7c32af.entry.js +1 -0
  328. package/dist/ripple/p-817aa29c.entry.js +1 -0
  329. package/dist/ripple/p-82c9bd47.entry.js +1 -0
  330. package/dist/ripple/p-8480138d.entry.js +1 -0
  331. package/dist/ripple/p-85ef702d.entry.js +1 -0
  332. package/dist/ripple/p-86bcd942.system.entry.js +1 -0
  333. package/dist/ripple/p-8799bce9.entry.js +1 -0
  334. package/dist/ripple/p-8ac14bb1.system.js +1 -0
  335. package/dist/ripple/p-8dcc8c0c.entry.js +1 -0
  336. package/dist/ripple/p-8fa572a8.entry.js +1 -0
  337. package/dist/ripple/p-904545cc.js +1 -0
  338. package/dist/ripple/p-90cb5d27.system.entry.js +1 -0
  339. package/dist/ripple/p-9202ef69.system.entry.js +1 -0
  340. package/dist/ripple/p-9f971522.system.entry.js +1 -0
  341. package/dist/ripple/p-a5dc49c1.system.entry.js +1 -0
  342. package/dist/ripple/p-a73fb160.system.entry.js +1 -0
  343. package/dist/ripple/p-a9580e7a.system.entry.js +1 -0
  344. package/dist/ripple/p-b04a6351.entry.js +1 -0
  345. package/dist/ripple/p-b09998e1.entry.js +1 -0
  346. package/dist/ripple/p-b3a86ec4.system.entry.js +1 -0
  347. package/dist/ripple/p-b501f06c.entry.js +1 -0
  348. package/dist/ripple/p-b957033b.entry.js +1 -0
  349. package/dist/ripple/p-c2258438.entry.js +1 -0
  350. package/dist/ripple/p-ca3abcc0.system.entry.js +1 -0
  351. package/dist/ripple/p-cc455a6c.system.entry.js +1 -0
  352. package/dist/ripple/p-cda66d45.js +1 -0
  353. package/dist/ripple/p-cde2ca4d.system.entry.js +1 -0
  354. package/dist/ripple/p-cdf9c0e9.entry.js +1 -0
  355. package/dist/ripple/p-d0858afa.js +2 -0
  356. package/dist/ripple/p-d37f8f66.js +1 -0
  357. package/dist/ripple/p-d4ae193e.js +1 -0
  358. package/dist/ripple/p-d4d769a7.system.js +1 -0
  359. package/dist/ripple/p-d6a9000f.system.entry.js +1 -0
  360. package/dist/ripple/p-d6cd9f79.entry.js +1 -0
  361. package/dist/ripple/p-d9e4335e.entry.js +1 -0
  362. package/dist/ripple/p-dadf3ed3.entry.js +1 -0
  363. package/dist/ripple/p-dc3684b5.entry.js +1 -0
  364. package/dist/ripple/p-dca94e24.entry.js +1 -0
  365. package/dist/ripple/p-dcd6acc5.system.entry.js +1 -0
  366. package/dist/ripple/p-dd81e308.entry.js +1 -0
  367. package/dist/ripple/p-e11d9b06.system.entry.js +1 -0
  368. package/dist/ripple/p-e36e71dc.system.entry.js +1 -0
  369. package/dist/ripple/p-e6a81600.entry.js +1 -0
  370. package/dist/ripple/p-ef7d84da.system.entry.js +1 -0
  371. package/dist/ripple/p-f1de3153.entry.js +1 -0
  372. package/dist/ripple/p-f3e84476.system.entry.js +1 -0
  373. package/dist/ripple/p-f4d27fea.system.entry.js +1 -0
  374. package/dist/ripple/p-fcf4bd61.system.entry.js +1 -0
  375. package/dist/ripple/p-fd02c124.entry.js +1 -0
  376. package/dist/ripple/p-ffa20853.entry.js +1 -0
  377. package/dist/ripple/ripple.esm.js +1 -0
  378. package/dist/ripple/ripple.js +127 -0
  379. package/dist/types/components/charts/chartFunctions.d.ts +54 -0
  380. package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +35 -0
  381. package/dist/types/components/charts/priv-chart-popover-old/priv-chart-popover-old.d.ts +26 -0
  382. package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +11 -0
  383. package/dist/types/components/charts/wm-chart/wm-chart.d.ts +44 -0
  384. package/dist/types/components/charts/wm-chart-bar/wm-chart-bar.d.ts +62 -0
  385. package/dist/types/components/charts/wm-chart-column/wm-chart-column.d.ts +73 -0
  386. package/dist/types/components/charts/wm-chart-legend/wm-chart-legend.d.ts +26 -0
  387. package/dist/types/components/charts/wm-line-chart/wm-line-chart.d.ts +87 -0
  388. package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +34 -0
  389. package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +22 -0
  390. package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +10 -0
  391. package/dist/types/components/datepickers/priv-calendar/priv-calendar.d.ts +89 -0
  392. package/dist/types/components/datepickers/wm-date-range.d.ts +73 -0
  393. package/dist/types/components/datepickers/wm-datepicker.d.ts +54 -0
  394. package/dist/types/components/selects/priv-option-list/priv-option-list.d.ts +71 -0
  395. package/dist/types/components/selects/wm-nested-select/wm-nested-select.d.ts +62 -0
  396. package/dist/types/components/selects/wm-optgroup/wm-optgroup.d.ts +21 -0
  397. package/dist/types/components/selects/wm-option/wm-option.d.ts +40 -0
  398. package/dist/types/components/selects/wm-select/wm-select.d.ts +66 -0
  399. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +54 -40
  400. package/dist/types/components/wm-button/wm-button.d.ts +43 -34
  401. package/dist/types/components/wm-file/wm-file.d.ts +48 -0
  402. package/dist/types/components/wm-file-list/wm-file-list.d.ts +5 -0
  403. package/dist/types/components/wm-flyout/wm-flyout.d.ts +48 -0
  404. package/dist/types/components/wm-input/wm-input.d.ts +50 -28
  405. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +26 -27
  406. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +12 -13
  407. package/dist/types/components/wm-modal/wm-modal-header.d.ts +8 -10
  408. package/dist/types/components/wm-modal/wm-modal.d.ts +28 -31
  409. package/dist/types/components/wm-modal-pss/wm-modal-pss-footer.d.ts +14 -0
  410. package/dist/types/components/wm-modal-pss/wm-modal-pss-header.d.ts +10 -0
  411. package/dist/types/components/wm-modal-pss/wm-modal-pss.d.ts +35 -0
  412. package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +16 -0
  413. package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +9 -0
  414. package/dist/types/components/wm-navigation/wm-navigation.d.ts +24 -0
  415. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +6 -7
  416. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +10 -10
  417. package/dist/types/components/wm-navigator/wm-navigator.d.ts +55 -57
  418. package/dist/types/components/wm-pagination/wm-pagination.d.ts +31 -28
  419. package/dist/types/components/wm-search/wm-search.d.ts +71 -75
  420. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +27 -28
  421. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +30 -31
  422. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +32 -48
  423. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +14 -16
  424. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +121 -80
  425. package/dist/types/components/wm-tag-input/wm-tag-option/wm-tag-option.d.ts +18 -0
  426. package/dist/types/components/wm-textarea/wm-textarea.d.ts +31 -0
  427. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +49 -55
  428. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +36 -23
  429. package/dist/types/components/wm-uploader/wm-uploader.d.ts +64 -72
  430. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +4 -4
  431. package/dist/types/components.d.ts +1516 -211
  432. package/dist/types/global/__mocks__/functions.d.ts +2 -1
  433. package/dist/types/global/functions.d.ts +67 -11
  434. package/dist/types/global/interfaces.d.ts +152 -23
  435. package/dist/types/global/intl.d.ts +62 -0
  436. package/dist/types/global/services/__mocks__/http-service.d.ts +1 -1
  437. package/dist/types/stencil-public-runtime.d.ts +338 -219
  438. package/package.json +16 -22
  439. package/dist/cjs/app-globals-6b0c6e80.js +0 -110
  440. package/dist/cjs/app-globals-f1dd8fda.js +0 -47
  441. package/dist/cjs/componentlibrary.cjs.js +0 -20
  442. package/dist/cjs/css-shim-a7379e2b.js +0 -6
  443. package/dist/cjs/dom-3e7d9c3b.js +0 -75
  444. package/dist/cjs/functions-65513c61.js +0 -8360
  445. package/dist/cjs/global-6849642d.js +0 -38
  446. package/dist/cjs/http-service-494d81de.js +0 -57
  447. package/dist/cjs/http-service-9e8c4dd5.js +0 -57
  448. package/dist/cjs/index-298ebef1.js +0 -2976
  449. package/dist/cjs/interfaces-a3338581.js +0 -35
  450. package/dist/cjs/interfaces-b2beb752.js +0 -54
  451. package/dist/cjs/priv-chart-popover.cjs.entry.js +0 -89
  452. package/dist/cjs/priv-datepicker.cjs.entry.js +0 -672
  453. package/dist/cjs/shadow-css-09555044.js +0 -391
  454. package/dist/cjs/wm-action-menu.cjs.entry.js +0 -206
  455. package/dist/cjs/wm-menuitem.cjs.entry.js +0 -118
  456. package/dist/cjs/wm-modal-footer.cjs.entry.js +0 -43
  457. package/dist/cjs/wm-modal-header.cjs.entry.js +0 -45
  458. package/dist/cjs/wm-modal.cjs.entry.js +0 -149
  459. package/dist/cjs/wm-network-uploader.cjs.entry.js +0 -431
  460. package/dist/cjs/wm-option.cjs.entry.js +0 -123
  461. package/dist/cjs/wm-select.cjs.entry.js +0 -366
  462. package/dist/cjs/wm-tab-item.cjs.entry.js +0 -82
  463. package/dist/cjs/wm-tab-list.cjs.entry.js +0 -205
  464. package/dist/cjs/wm-tab-panel.cjs.entry.js +0 -42
  465. package/dist/collection/components/wm-chart/priv-chart-popover/priv-chart-popover.css +0 -132
  466. package/dist/collection/components/wm-chart/priv-chart-popover/priv-chart-popover.js +0 -232
  467. package/dist/collection/components/wm-chart/wm-chart-slice.js +0 -64
  468. package/dist/collection/components/wm-chart/wm-chart.css +0 -337
  469. package/dist/collection/components/wm-chart/wm-chart.js +0 -710
  470. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.css +0 -365
  471. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +0 -1003
  472. package/dist/collection/components/wm-datepicker/wm-datepicker.css +0 -211
  473. package/dist/collection/components/wm-datepicker/wm-datepicker.js +0 -445
  474. package/dist/collection/components/wm-option/wm-option.css +0 -162
  475. package/dist/collection/components/wm-option/wm-option.js +0 -394
  476. package/dist/collection/components/wm-select/wm-select.css +0 -315
  477. package/dist/collection/components/wm-select/wm-select.js +0 -676
  478. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.css +0 -642
  479. package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +0 -753
  480. package/dist/componentlibrary/app-globals-18876ad3.js +0 -45
  481. package/dist/componentlibrary/app-globals-307a1083.js +0 -108
  482. package/dist/componentlibrary/componentlibrary.css +0 -84
  483. package/dist/componentlibrary/componentlibrary.esm.js +0 -1
  484. package/dist/componentlibrary/css-shim-bbdf0cc6.js +0 -4
  485. package/dist/componentlibrary/dom-1f98a75f.js +0 -73
  486. package/dist/componentlibrary/functions-316c1b23.js +0 -8340
  487. package/dist/componentlibrary/http-service-5d037e16.js +0 -52
  488. package/dist/componentlibrary/index-d5997567.js +0 -2938
  489. package/dist/componentlibrary/interfaces-50753346.js +0 -51
  490. package/dist/componentlibrary/p-01bdfed8.js +0 -16
  491. package/dist/componentlibrary/p-0ca70ed4.entry.js +0 -1
  492. package/dist/componentlibrary/p-126bde92.entry.js +0 -1
  493. package/dist/componentlibrary/p-12a67d93.entry.js +0 -1
  494. package/dist/componentlibrary/p-188deaf5.entry.js +0 -1
  495. package/dist/componentlibrary/p-2514df6f.entry.js +0 -1
  496. package/dist/componentlibrary/p-269b8a5f.entry.js +0 -1
  497. package/dist/componentlibrary/p-35e57079.entry.js +0 -1
  498. package/dist/componentlibrary/p-414e20f7.entry.js +0 -1
  499. package/dist/componentlibrary/p-43f1298b.js +0 -1
  500. package/dist/componentlibrary/p-4d387ec6.entry.js +0 -1
  501. package/dist/componentlibrary/p-59ba81d6.entry.js +0 -1
  502. package/dist/componentlibrary/p-5e3cbec8.entry.js +0 -1
  503. package/dist/componentlibrary/p-5e81e830.entry.js +0 -1
  504. package/dist/componentlibrary/p-64ff5040.js +0 -1
  505. package/dist/componentlibrary/p-68a871d3.entry.js +0 -1
  506. package/dist/componentlibrary/p-996a7395.entry.js +0 -1
  507. package/dist/componentlibrary/p-9b460452.entry.js +0 -1
  508. package/dist/componentlibrary/p-a416e410.entry.js +0 -1
  509. package/dist/componentlibrary/p-d550a94f.entry.js +0 -1
  510. package/dist/componentlibrary/p-e4735c23.entry.js +0 -1
  511. package/dist/componentlibrary/p-e725f388.entry.js +0 -1
  512. package/dist/componentlibrary/p-e9532ae5.entry.js +0 -1
  513. package/dist/componentlibrary/p-edf6f848.entry.js +0 -1
  514. package/dist/componentlibrary/p-fd8070fb.js +0 -1
  515. package/dist/componentlibrary/priv-chart-popover.entry.js +0 -85
  516. package/dist/componentlibrary/priv-datepicker.entry.js +0 -668
  517. package/dist/componentlibrary/priv-navigator-button.entry.js +0 -25
  518. package/dist/componentlibrary/priv-navigator-item.entry.js +0 -30
  519. package/dist/componentlibrary/shadow-css-67b66845.js +0 -389
  520. package/dist/componentlibrary/wm-action-menu.entry.js +0 -202
  521. package/dist/componentlibrary/wm-button.entry.js +0 -148
  522. package/dist/componentlibrary/wm-chart-slice.entry.js +0 -18
  523. package/dist/componentlibrary/wm-chart.entry.js +0 -504
  524. package/dist/componentlibrary/wm-datepicker.entry.js +0 -258
  525. package/dist/componentlibrary/wm-input.entry.js +0 -106
  526. package/dist/componentlibrary/wm-menuitem.entry.js +0 -114
  527. package/dist/componentlibrary/wm-modal-footer.entry.js +0 -39
  528. package/dist/componentlibrary/wm-modal-header.entry.js +0 -41
  529. package/dist/componentlibrary/wm-modal.entry.js +0 -145
  530. package/dist/componentlibrary/wm-navigator.entry.js +0 -275
  531. package/dist/componentlibrary/wm-network-uploader.entry.js +0 -427
  532. package/dist/componentlibrary/wm-option.entry.js +0 -119
  533. package/dist/componentlibrary/wm-pagination.entry.js +0 -172
  534. package/dist/componentlibrary/wm-search.entry.js +0 -227
  535. package/dist/componentlibrary/wm-select.entry.js +0 -362
  536. package/dist/componentlibrary/wm-snackbar.entry.js +0 -156
  537. package/dist/componentlibrary/wm-tab-item.entry.js +0 -78
  538. package/dist/componentlibrary/wm-tab-list.entry.js +0 -201
  539. package/dist/componentlibrary/wm-tab-panel.entry.js +0 -38
  540. package/dist/componentlibrary/wm-tag-input.entry.js +0 -509
  541. package/dist/componentlibrary/wm-timepicker.entry.js +0 -382
  542. package/dist/componentlibrary/wm-toggletip.entry.js +0 -124
  543. package/dist/componentlibrary/wm-uploader.entry.js +0 -338
  544. package/dist/componentlibrary/wm-wrapper.entry.js +0 -17
  545. package/dist/esm/app-globals-18876ad3.js +0 -45
  546. package/dist/esm/app-globals-307a1083.js +0 -108
  547. package/dist/esm/componentlibrary.js +0 -18
  548. package/dist/esm/css-shim-bbdf0cc6.js +0 -4
  549. package/dist/esm/dom-1f98a75f.js +0 -73
  550. package/dist/esm/functions-316c1b23.js +0 -8340
  551. package/dist/esm/global-430cb201.js +0 -36
  552. package/dist/esm/http-service-3dc3b3e7.js +0 -52
  553. package/dist/esm/http-service-5d037e16.js +0 -52
  554. package/dist/esm/index-d5997567.js +0 -2938
  555. package/dist/esm/interfaces-2b97fab2.js +0 -32
  556. package/dist/esm/interfaces-50753346.js +0 -51
  557. package/dist/esm/polyfills/css-shim.js +0 -1
  558. package/dist/esm/priv-chart-popover.entry.js +0 -85
  559. package/dist/esm/priv-datepicker.entry.js +0 -668
  560. package/dist/esm/shadow-css-67b66845.js +0 -389
  561. package/dist/esm/wm-action-menu.entry.js +0 -202
  562. package/dist/esm/wm-menuitem.entry.js +0 -114
  563. package/dist/esm/wm-modal-footer.entry.js +0 -39
  564. package/dist/esm/wm-modal-header.entry.js +0 -41
  565. package/dist/esm/wm-modal.entry.js +0 -145
  566. package/dist/esm/wm-network-uploader.entry.js +0 -427
  567. package/dist/esm/wm-option.entry.js +0 -119
  568. package/dist/esm/wm-select.entry.js +0 -362
  569. package/dist/esm/wm-tab-item.entry.js +0 -78
  570. package/dist/esm/wm-tab-list.entry.js +0 -201
  571. package/dist/esm/wm-tab-panel.entry.js +0 -38
  572. package/dist/types/components/wm-chart/priv-chart-popover/priv-chart-popover.d.ts +0 -23
  573. package/dist/types/components/wm-chart/wm-chart-slice.d.ts +0 -8
  574. package/dist/types/components/wm-chart/wm-chart.d.ts +0 -77
  575. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +0 -75
  576. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +0 -39
  577. package/dist/types/components/wm-option/wm-option.d.ts +0 -28
  578. package/dist/types/components/wm-select/wm-select.d.ts +0 -63
  579. package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +0 -85
  580. /package/dist/{componentlibrary/index.esm.js → collection/dev/button.js} +0 -0
@@ -1,673 +1,619 @@
1
- import { Component, Element, Event, h, Host, Prop, State, Listen, Watch } from "@stencil/core";
2
- import { forceUpdate } from "@stencil/core";
3
- import { intl, generateId, hasValidType } from "../../global/functions";
1
+ import { h, Host, forceUpdate, } from "@stencil/core";
2
+ import { uploaderMessages } from "../../global/intl";
3
+ import { intl, hideTooltip, showTooltip } from "../../global/functions";
4
4
  export class Uploader {
5
- constructor() {
6
- this.type = "1";
7
- this.fileTypes = "pdf txt log xml doc docx xls xlsx ppt pptx gif jpg jpeg png csv";
8
- this.maxSize = 100; // in Mb
9
- this.sortBy = "date"; // name is descending (a -> z), date is ascending (earlier -> later)
10
- this.fileList = []; // the string above transformed into the actual array
11
- this.filesToUpload = []; // input.files that passed validation
12
- this.isTabbing = false;
13
- this.errorList = []; // for errors on a particular file
14
- this.inputId = generateId();
15
- }
16
- toggleTabbingOn() {
17
- this.isTabbing = true;
18
- }
19
- toggleTabbingOff() {
20
- this.isTabbing = false;
21
- }
22
- handleUploadProgress(ev) {
23
- this.fileList.map((i) => {
24
- if (i.id === ev.detail.id) {
25
- i.progress = ev.detail.progress;
26
- forceUpdate(this.el);
27
- }
28
- });
29
- if (ev.detail.progress === 100) {
30
- // inProgressList is not a perfect reflection of how many files are uploading
31
- // because even after progress reached 100% the item should remain in the array
32
- // (should only be removed once it appears in fileList)
33
- this.numFilesInProgress -= 1;
34
- }
35
- // aggregate the percentages for SR to announce progress
36
- if (!this.srProgress && this.numFilesInProgress) {
37
- const total = this.numFilesInProgress; // if we don't reassign this number changes when a file is done and the percentage becomes wrong
38
- this.srProgress = setInterval(() => {
39
- const aggregate = this.fileList.reduce((avg, item) => (item.progress ? avg + item.progress : avg), 0);
40
- if (this.liveRegion) {
41
- this.liveRegion.innerHTML = intl.formatMessage({
42
- id: "uploader.uploadProgress",
43
- defaultMessage: "Upload progress: {percentage}%",
44
- }, { percentage: Math.floor(aggregate / total) });
5
+ constructor() {
6
+ this.batchCount = 0; // used to calculate the aggregate upload progress
7
+ this.prevUploadCount = 0; // comparison to determine whether or not to announce updated count
8
+ this.label = undefined;
9
+ this.uploaderType = "select";
10
+ this.dropArea = "component";
11
+ this.buttonText = undefined;
12
+ this.icon = undefined;
13
+ this.fileTypes = "pdf txt log xml doc docx xls xlsx ppt pptx gif jpg jpeg png csv";
14
+ this.maxSize = undefined;
15
+ this.maxFiles = undefined;
16
+ this.errorMessage = undefined;
17
+ this.requiredField = undefined;
18
+ this.showInfo = "time";
19
+ this.isTabbing = false;
20
+ this.notif = "";
21
+ this.isCondensed = false;
22
+ }
23
+ get isDisabled() {
24
+ // disable if is the uploader is maxed out or if something is uploading
25
+ return this.fileLimitReached || this.inProgressFileEls.length > 0;
26
+ }
27
+ get fileEls() {
28
+ return Array.from(this.el.querySelectorAll("wm-file"));
29
+ }
30
+ get inProgressFileEls() {
31
+ return this.fileEls.filter((file) => file.progress !== undefined && file.progress < 100);
32
+ }
33
+ get uploadedFileEls() {
34
+ return this.fileEls.filter((file) => !file.errorMessage);
35
+ }
36
+ get fileLimitReached() {
37
+ return this.maxFiles && this.uploadedFileEls.length >= this.maxFiles;
38
+ }
39
+ get validTypes() {
40
+ return "." + this.fileTypes.split(" ").join(", .");
41
+ }
42
+ toggleTabbingOn() {
43
+ this.isTabbing = true;
44
+ }
45
+ toggleTabbingOff() {
46
+ this.isTabbing = false;
47
+ }
48
+ handleFileErrorCleared() {
49
+ this.uploadButtonEl.focus();
50
+ }
51
+ handleFileDelete(ev) {
52
+ const focusableFileEls = this.fileEls.filter((file) => !!file.fileActions);
53
+ this.deletedEl = ev.target;
54
+ const index = focusableFileEls.indexOf(this.deletedEl);
55
+ // actual focus will called only after el is removed from DOM
56
+ if (focusableFileEls.length === 1) {
57
+ // it was the only item, focus the upload button
58
+ this.elToFocusOnDelete = this.uploadButtonEl;
45
59
  }
46
- }, 5000);
47
- }
48
- }
49
- parseFiles() {
50
- if (!!this.files) {
51
- if (typeof this.files === "string") {
52
- const list = JSON.parse(this.files);
53
- if (typeof list === "object") {
54
- this.fileList = list;
60
+ else if (index === focusableFileEls.length - 1) {
61
+ // it's the last item, focus the previous file
62
+ const fileToFocus = focusableFileEls[index - 1];
63
+ const fileActionButtons = fileToFocus.shadowRoot.querySelectorAll("wm-button");
64
+ this.elToFocusOnDelete = fileActionButtons[fileActionButtons.length - 1];
55
65
  }
56
66
  else {
57
- throw new Error("could not parse string passed to files attribute");
67
+ // otherwise focus the next file
68
+ const fileToFocus = focusableFileEls[index + 1];
69
+ const fileActionButtons = fileToFocus.shadowRoot.querySelectorAll("wm-button");
70
+ this.elToFocusOnDelete = fileActionButtons[fileActionButtons.length - 1];
58
71
  }
59
- }
60
- else {
61
- throw new Error("Attribute 'files' should be a string");
62
- }
63
- }
64
- }
65
- parseRejectedFiles() {
66
- if (!!this.rejectedFiles) {
67
- if (typeof this.files === "string") {
68
- const list = JSON.parse(this.rejectedFiles);
69
- if (typeof list === "object") {
70
- this.errorList = list;
72
+ }
73
+ announceError() {
74
+ if (this.errorMessage) {
75
+ setTimeout(() => this.announce(this.errorMessage, this.politeLiveRegionEl), 100);
71
76
  }
72
- else {
73
- throw new Error("could not parse string passed to errors attribute");
77
+ }
78
+ ///////// Drop Event Handling ////////
79
+ handleDocumentDragEnter() {
80
+ if (this.uploaderType == "drop") {
81
+ this.beginDropListening();
74
82
  }
75
- }
76
- else {
77
- throw new Error("Attribute 'rejected-files' should be a string");
78
- }
79
- }
80
- }
81
- setMaxSize() {
82
- // Max size can't be set above 100Mb
83
- this.maxSize = this.maxSize > 100 ? 100 : this.maxSize;
84
- }
85
- uploadNotifications(newNum, oldNum) {
86
- if (oldNum > 0 && newNum === 0) {
87
- setTimeout(() => {
88
- this.notif = null;
89
- }, 20 * 1000);
90
- const message = intl.formatMessage({
91
- id: "uploader.finishedUploading",
92
- defaultMessage: "Finished uploading",
93
- });
94
- this.notif = { id: 5, message };
95
- if (this.liveRegion) {
96
- this.liveRegion.innerHTML = message;
97
- }
98
- this.numFilesInProgress = null;
99
- clearInterval(this.srProgress);
100
- forceUpdate(this.el);
101
- }
102
- else if (newNum > 0 && newNum != oldNum) {
103
- const message = intl.formatMessage({
104
- id: "uploader.filesUploading",
105
- defaultMessage: "{num, plural, one {1 file uploading} other {# files uploading}}",
106
- }, { num: newNum });
107
- this.notif = { id: 6, message };
108
- if (this.liveRegion) {
109
- this.liveRegion.innerHTML = message;
110
- }
111
- forceUpdate(this.el);
112
- }
113
- }
114
- isValidSize(size) {
115
- // https://stackoverflow.com/questions/2365100/converting-bytes-to-megabytes
116
- return size / 1024 / 1024 <= this.maxSize;
117
- }
118
- isDuplicate(name) {
119
- return this.fileList.find((f) => {
120
- const filename = f.type ? f.name + "." + f.type : f.name;
121
- return filename === name;
122
- });
123
- }
124
- isEmpty() {
125
- return !this.fileList.length && !this.errorList.length;
126
- }
127
- isDisabled() {
128
- const isMax = !!this.maxFiles && this.fileList.length >= this.maxFiles;
129
- if (!this.notif) {
130
- if (isMax) {
131
- const errMessage = intl.formatMessage({
132
- id: "uploader.fileUploadLimit",
133
- defaultMessage: "You have reached the file upload limit.",
134
- });
135
- this.notif = { id: 1, message: errMessage };
136
- if (this.liveRegion) {
137
- this.liveRegion.innerHTML = errMessage;
83
+ }
84
+ handleDocumentMouseOut() {
85
+ if (this.uploaderType == "drop" && this.dropAreaEl) {
86
+ this.endDropListening();
87
+ }
88
+ }
89
+ handleDocumentDragLeave(ev) {
90
+ if (this.uploaderType == "drop") {
91
+ // Do not end drop listening for events that bubble up from children of this uploader
92
+ if (ev.target.closest("wm-uploader") == this.el) {
93
+ this.endDropListening();
94
+ }
95
+ }
96
+ }
97
+ handleDocumentVisibilityChange() {
98
+ // If a file is dropped outside of the drop area, if the browser opens the file in new tab, a dragleave event is not fired. This handles that case
99
+ if (this.uploaderType == "drop") {
100
+ this.endDropListening();
101
+ }
102
+ }
103
+ handleDragEnter(ev) {
104
+ if (this.uploaderType == "drop") {
105
+ ev.preventDefault();
106
+ this.el.classList.add("dragging");
107
+ }
108
+ }
109
+ handleDragOver(ev) {
110
+ if (this.uploaderType == "drop") {
111
+ ev.preventDefault();
112
+ }
113
+ }
114
+ handleDragLeave(ev) {
115
+ if (this.uploaderType == "drop") {
116
+ ev.preventDefault();
117
+ this.endDropListening();
118
+ this.el.classList.remove("dragging");
119
+ }
120
+ }
121
+ handleDrop(ev) {
122
+ if (this.uploaderType == "drop") {
123
+ ev.preventDefault();
124
+ this.el.classList.remove("dragging");
125
+ this.endDropListening();
126
+ if (ev.dataTransfer.files) {
127
+ const files = Array.from(ev.dataTransfer.files);
128
+ if (files.length > 0) {
129
+ this.batchCount = files.length;
130
+ this.wmUploaderFilesSelected.emit(files);
131
+ }
132
+ }
138
133
  }
139
- }
140
- else {
141
- this.notif = null;
142
- }
143
- }
144
- else if (this.notif.id === 1) {
145
- // to make sure SR don't repeat the error, don't reset it if it already is showing
146
- // just dismiss it if isMax is not true anymore
147
- if (!isMax) {
148
- this.notif = null;
149
- }
150
- // finally do nothing if error 2 is showing (special case when user selects too many files)
151
- }
152
- // disable if is the uploader is maxed out or if something is uploading
153
- return isMax || this.numFilesInProgress > 0;
154
- }
155
- isItemUploading(item) {
156
- return item.hasOwnProperty("progress") && item.progress < 100;
157
- }
158
- clearErrors() {
159
- this.errorList = [];
160
- this.notif = null;
161
- }
162
- handleFiles(ev) {
163
- this.filesToUpload = [];
164
- const validTypes = this.fileTypes.split(" ").join(", ");
165
- const files = Array.from(ev.target.files);
166
- if (!!this.maxFiles && this.fileList.length + files.length > this.maxFiles) {
167
- const errMessage = intl.formatMessage({
168
- id: "uploader.fileUploadExceeded",
169
- defaultMessage: "The number of selected files exceeds the limit.",
170
- });
171
- this.notif = { id: 2, message: errMessage };
172
- if (this.liveRegion) {
173
- this.liveRegion.innerHTML = errMessage;
174
- }
175
- }
176
- else {
177
- files &&
178
- files.map((file) => {
179
- if (!hasValidType(file, this.fileTypes)) {
180
- const error = {
181
- name: file.name,
182
- message: intl.formatMessage({
183
- id: "uploader.invalidFileType",
184
- defaultMessage: "The file type is invalid. Accepted types: {validTypes}",
185
- }, { validTypes }),
186
- };
187
- this.errorList.push(error);
188
- }
189
- else if (!this.isValidSize(file.size)) {
190
- const error = {
191
- name: file.name,
192
- message: intl.formatMessage({
193
- id: "uploader.fileTooLarge",
194
- defaultMessage: "The selected file is too large. Maximum file size is {size}Mb",
195
- }, { size: this.maxSize }),
196
- };
197
- this.errorList.push(error);
198
- }
199
- else if (this.isDuplicate(file.name)) {
200
- const error = {
201
- name: file.name,
202
- message: intl.formatMessage({
203
- id: "uploader.duplicateName",
204
- defaultMessage: "A file with this name already exists.",
205
- }),
206
- };
207
- this.errorList.push(error);
208
- }
209
- else {
210
- this.filesToUpload.push(file);
211
- }
134
+ }
135
+ beginDropListening() {
136
+ if (this.dropArea == "page") {
137
+ this.dropOverlayEl.showPopover();
138
+ }
139
+ this.dropAreaEl.classList.add("listening");
140
+ }
141
+ endDropListening() {
142
+ if (this.dropArea == "page") {
143
+ this.dropOverlayEl.hidePopover();
144
+ }
145
+ this.dropAreaEl.classList.remove("listening");
146
+ }
147
+ componentDidLoad() {
148
+ if (document.body.classList.contains("wmcl-user-is-tabbing")) {
149
+ this.toggleTabbingOn();
150
+ }
151
+ const mutationObserver = new MutationObserver((mutationRecordList) => mutationRecordList.forEach((mutationRecord) => this.handleChildMutation(mutationRecord)));
152
+ mutationObserver.observe(this.el, {
153
+ childList: true,
154
+ subtree: true,
155
+ attributes: true,
156
+ attributeOldValue: true,
157
+ attributeFilter: ["progress"],
212
158
  });
213
- if (this.filesToUpload.length > 0) {
214
- this.numFilesInProgress = this.filesToUpload.length;
215
- this.wmFilesSelected.emit(this.filesToUpload);
216
- }
217
- }
218
- ev.target.value = ""; // reset to ensure that onChange is triggered when the same file is selected a second time
219
- }
220
- downloadFile(file) {
221
- this.clearErrors();
222
- this.wmDownloadFile.emit(file.id);
223
- }
224
- deleteFile(file) {
225
- this.clearErrors();
226
- forceUpdate(this.el); // for the button to stop being disabled if num files become < max-files
227
- this.wmDeleteFile.emit(file.id);
228
- }
229
- componentWillLoad() {
230
- if (!this.buttonText) {
231
- throw new Error("wm-uploader: button-text is a required prop");
232
- }
233
- if (this.type === "1" && !this.emptyStateText) {
234
- throw new Error("wm-uploader: empty-state-text is a required prop");
235
- }
236
- this.setMaxSize();
237
- this.parseFiles();
238
- this.clearErrors();
239
- this.parseRejectedFiles();
240
- }
241
- componentDidLoad() {
242
- // awkward way to handle Edge bug where file input dialog doesn't open on Enter key
243
- // first, detect polyfill by checking the class name that it adds to the component
244
- // (it's important NOT to execute the code below in normal browsers as it would open the dialog twice)
245
- this.el.classList.contains("sc-wm-uploader-h") &&
246
- // then add an even listener to force a click event when Enter key is pressed
247
- this.inputEl &&
248
- this.inputEl.addEventListener("keydown", (ev) => {
249
- if (this.inputEl && ev.keyCode === 13) {
250
- this.inputEl.click();
159
+ }
160
+ handleChildMutation(mutationRecord) {
161
+ if (mutationRecord.type === "attributes") {
162
+ this.handleProgressUpdate(mutationRecord);
163
+ }
164
+ else if (mutationRecord.type === "childList") {
165
+ // if user prompted the removal of a single file (they hit the delete button)
166
+ // re-assigning focus handled here because component shouldn't assume the node removal based on the event firing
167
+ const removedEls = mutationRecord.removedNodes;
168
+ const removedEl = removedEls[0];
169
+ if (removedEls.length === 1 && removedEl === this.deletedEl && this.elToFocusOnDelete) {
170
+ this.elToFocusOnDelete.focus();
171
+ this.deletedEl = null;
172
+ this.elToFocusOnDelete = null;
173
+ }
174
+ // on added wm-files, if wm-file has an error, announce
175
+ if (mutationRecord.addedNodes.length > 0) {
176
+ mutationRecord.addedNodes.forEach((addedFile) => {
177
+ if (addedFile.errorMessage) {
178
+ setTimeout(() => this.announce(addedFile.errorMessage, this.politeLiveRegionEl), 500);
179
+ }
180
+ });
181
+ }
182
+ forceUpdate(this.el); // forceUpdate to rerender filecount
183
+ }
184
+ }
185
+ handleProgressUpdate(mutationRecord) {
186
+ const uploadCount = this.inProgressFileEls.length;
187
+ if (uploadCount !== 0) {
188
+ const changeInUploadingFiles = this.prevUploadCount !== uploadCount;
189
+ changeInUploadingFiles &&
190
+ this.announce(uploaderMessages.getFilesUploading(uploadCount), this.assertiveLiveRegionEl);
191
+ this.notif = uploaderMessages.getFilesUploading(uploadCount);
192
+ this.prevUploadCount = uploadCount;
193
+ if (this.batchCount < uploadCount) {
194
+ this.batchCount = uploadCount;
195
+ }
196
+ if (!this.srProgress) {
197
+ this.srProgress = setInterval(() => {
198
+ const aggregate = this.fileEls.reduce((avg, item) => (item.progress ? avg + item.progress : avg), 0);
199
+ const percentage = this.batchCount > 0 ? Math.floor(aggregate / this.batchCount) : 0;
200
+ this.announce(uploaderMessages.getUploadProgress(percentage), this.assertiveLiveRegionEl);
201
+ }, 5000);
202
+ }
203
+ }
204
+ else if (uploadCount === 0 && mutationRecord.oldValue && parseInt(mutationRecord.oldValue) < 100) {
205
+ // if final file progress completes
206
+ this.uploadButtonEl.value = "";
207
+ this.batchCount = 0;
208
+ this.notif = uploaderMessages.finishedUploading;
209
+ this.announce(uploaderMessages.finishedUploading, this.assertiveLiveRegionEl);
210
+ clearInterval(this.srProgress);
211
+ setTimeout(() => {
212
+ this.notif = "";
213
+ }, 20 * 1000);
214
+ }
215
+ }
216
+ handleUploadButtonClick(ev) {
217
+ if (this.isDisabled) {
218
+ // this is a temporary fix.
219
+ // we need the disabled button to be programmatically focusable
220
+ // to allow return focus after closing the browser file panel
221
+ // since it's focusable the button should respond when activated
222
+ // it looks disabled, and announces the reason why the action cannot
223
+ // be taken when activated.
224
+ ev.preventDefault();
225
+ if (this.inProgressFileEls.length > 0) {
226
+ this.announce(uploaderMessages.waitToUpload, this.assertiveLiveRegionEl);
227
+ }
228
+ else if (this.fileLimitReached) {
229
+ this.announce(uploaderMessages.fileLimitReached, this.assertiveLiveRegionEl);
230
+ }
231
+ }
232
+ else {
233
+ this.uploadButtonEl.value = ""; // when making a new selection, always reset the value so onChange is triggered (even if the same file is selected)
234
+ }
235
+ }
236
+ handleUploadButtonChange() {
237
+ if (this.uploadButtonEl.files) {
238
+ const files = Array.from(this.uploadButtonEl.files);
239
+ if (files.length > 0) {
240
+ this.batchCount = files.length;
241
+ this.wmUploaderFilesSelected.emit(files);
242
+ }
243
+ }
244
+ }
245
+ handleLabelMouseEnter(ev) {
246
+ const labelEl = ev.target;
247
+ if (labelEl.scrollWidth > labelEl.clientWidth) {
248
+ showTooltip("right", labelEl, this.label);
249
+ }
250
+ }
251
+ announce(message, liveRegionEl) {
252
+ if (liveRegionEl.textContent === message) {
253
+ message += "\u00A0";
254
+ }
255
+ liveRegionEl.textContent = message;
256
+ }
257
+ renderIcon() {
258
+ const defaultIconSize = "0.875rem";
259
+ if (this.icon.match(/^#/)) {
260
+ // Icon ID
261
+ return h("span", { class: `svg-icon svg-${this.icon.slice(1)}`, style: { "--icon-size": defaultIconSize } });
251
262
  }
252
- });
253
- if (document.body.classList.contains("wmcl-user-is-tabbing")) {
254
- this.toggleTabbingOn();
255
- }
256
- }
257
- renderUploadSvg() {
258
- return (h("svg", { class: "upload-file", width: "91", height: "84", viewBox: "0 0 91 84" },
259
- h("path", { transform: "rotate(-180.000000) translate(-452, -255.5)", fill: "#eae8ec", d: "M361,249.681818 L361,197.318182 C361,194.118182 365.555061,191.5 371.122358,191.5 L391.316463,191.5 L391.286495,200.562515 L369.871211,200.600292 L369.885404,200.622146 L369.886423,246.655947 L443.657038,246.840767 L443.657038,200.622146 L421.683537,200.622146 L421.683537,191.5 L441.978865,191.5 C447.546162,191.5 452,194.118182 452,197.318182 L452,249.681818 C452,252.881818 447.546162,255.5 441.978865,255.5 L371.122358,255.5 C365.504449,255.5 361,252.881818 361,249.681818 Z M391.5,207 L406,221 L420.5,207 L409.625,207 L409.625,172 L402.375,172 L402.375,207 L391.5,207 Z" })));
260
- }
261
- renderIcon() {
262
- // mdi attachment icon (paper clip) is horizontal but we want it vertical
263
- const rotate = this.icon && this.icon === "f066";
264
- return (this.icon && (h("span", { class: `mdi ${rotate ? "rotate" : ""}` }, String.fromCodePoint(parseInt(`0x${this.icon}`)))));
265
- }
266
- renderInfo() {
267
- return this.info && this.type === "2" ? h("span", { class: "info" }, this.info) : "";
268
- }
269
- renderNotif() {
270
- return this.notif ? h("div", { class: "notif" }, this.notif.message) : "";
271
- }
272
- renderUploadButton(classes) {
273
- return (h("div", { class: "info-wrapper" },
274
- h("input", { ref: (el) => (this.inputEl = el), name: this.inputId, id: this.inputId, class: "sr-only", type: "file", multiple: true, onClick: () => this.clearErrors(), onChange: (e) => this.handleFiles(e), disabled: this.isDisabled() }),
275
- h("label", { htmlFor: this.inputId, class: `wm-button ${classes}${this.isTabbing ? " user-is-tabbing" : ""}` },
276
- this.renderIcon(),
277
- this.buttonText),
278
- this.renderInfo()));
279
- }
280
- renderEmptyState() {
281
- return (h("div", { class: "empty-block" },
282
- this.renderUploadSvg(),
283
- h("div", { class: `empty-message` }, this.emptyStateText),
284
- this.renderUploadButton("-primary empty-button"),
285
- this.renderNotif()));
286
- }
287
- renderErrorList() {
288
- if (!!this.errorList.length) {
289
- if (this.liveRegion) {
290
- let srMessage = this.errorList.reduce(function (acc, err) {
291
- return acc + `${err.name}: ${err.message} `;
292
- }, "");
293
- this.liveRegion.innerHTML = srMessage;
294
- }
295
- return (h("ul", { class: "error-list" }, this.errorList.map((err) => (h("li", null,
296
- h("div", { class: "file --error" },
297
- h("div", { class: "file-info" },
298
- h("span", { class: "filename" }, err.name))),
299
- h("div", { class: "error-message" }, err.message))))));
300
- }
301
- }
302
- renderFileInProgress(item) {
303
- const filename = item.type ? item.name + "." + item.type : item.name;
304
- return (h("li", null,
305
- h("div", { class: "file --progress" },
306
- h("div", { class: "progress", style: {
307
- background: `linear-gradient(to right, rgba(67, 126, 142, 1) ${item.progress}%, transparent ${item.progress}%)`,
308
- } }),
309
- h("div", { class: "file-info" },
310
- h("span", { class: "filename" },
311
- filename,
312
- " ",
313
- h("span", { class: "sr-only" }, "uploading"))))));
314
- }
315
- renderFile(item) {
316
- return (h("li", null,
317
- h("div", { class: "file --saved" },
318
- h("div", { class: "file-info" },
319
- h("span", { class: "filename" }, item.name + "." + item.type)),
320
- h("div", { class: "file-controls" },
321
- h("wm-button", { class: "download-button", "button-style": "icononly", tooltip: "download", "tooltip-position": "bottom", "label-for-identical-buttons": `download ${item.name}`, icon: "f1da", onClick: () => this.downloadFile(item) }),
322
- h("wm-button", { class: "delete-button", "button-style": "icononly", tooltip: "remove", "tooltip-position": "bottom", "label-for-identical-buttons": `remove ${item.name}`, icon: "f1c0", onClick: () => this.deleteFile(item) })))));
323
- }
324
- renderFileList() {
325
- if (this.fileList) {
326
- this.sortBy === "name"
327
- ? this.fileList.sort((a, b) => a.name.localeCompare(b.name))
328
- : this.fileList.sort((a, b) => Date.parse(a.lastUpdated) - Date.parse(b.lastUpdated));
329
- return (h("div", null,
330
- h("ul", { class: "inprogress-list" }, this.fileList.filter((item) => this.isItemUploading(item)).map((item) => this.renderFileInProgress(item))),
331
- h("ul", { class: "file-list" }, this.fileList.filter((item) => !this.isItemUploading(item)).map((item) => this.renderFile(item)))));
332
- }
333
- }
334
- renderHeader() {
335
- return (this.type === "2" && (h("div", { class: "header" },
336
- h("div", { class: "slot-wrapper" },
337
- h("slot", null),
338
- h("div", { class: "notif-wrapper" },
339
- this.renderUploadButton(`-secondary ${this.isDisabled() ? "disabled" : ""}`),
340
- this.renderNotif())))));
341
- }
342
- renderFooter() {
343
- return (this.type === "1" && (h("div", { class: "footer" },
344
- h("div", { class: "notif-wrapper" },
345
- h("div", { class: "filecount-wrapper" },
346
- h("div", { class: "filecount" }, intl.formatMessage({
347
- id: "uploader.filesAdded",
348
- defaultMessage: "{numFiles, plural, one {1 file added} other {# files added}}",
349
- }, { numFiles: this.fileList.length })),
350
- this.renderUploadButton(`-primary ${this.isDisabled() ? "disabled" : ""}`)),
351
- this.renderNotif()))));
352
- }
353
- renderWithItems() {
354
- return (h("div", null,
355
- this.renderHeader(),
356
- h("div", { class: `list-container type${this.type}` },
357
- this.renderErrorList(),
358
- this.renderFileList()),
359
- this.renderFooter()));
360
- }
361
- render() {
362
- return (h(Host, null,
363
- this.isEmpty() && this.type === "1" ? this.renderEmptyState() : this.renderWithItems(),
364
- h("div", { ref: (el) => (this.liveRegion = el), class: "live-region sr-only", "aria-live": "assertive" // since it's directly linked to the action the user took, it should be read in priority. With polite, some messages get dismissed in favor of the page title
365
- , "aria-atomic": "true" })));
366
- }
367
- static get is() { return "wm-uploader"; }
368
- static get encapsulation() { return "shadow"; }
369
- static get originalStyleUrls() { return {
370
- "$": ["wm-uploader.scss"]
371
- }; }
372
- static get styleUrls() { return {
373
- "$": ["wm-uploader.css"]
374
- }; }
375
- static get properties() { return {
376
- "type": {
377
- "type": "string",
378
- "mutable": false,
379
- "complexType": {
380
- "original": "\"1\" | \"2\"",
381
- "resolved": "\"1\" | \"2\"",
382
- "references": {}
383
- },
384
- "required": false,
385
- "optional": false,
386
- "docs": {
387
- "tags": [],
388
- "text": ""
389
- },
390
- "attribute": "type",
391
- "reflect": false,
392
- "defaultValue": "\"1\""
393
- },
394
- "buttonText": {
395
- "type": "string",
396
- "mutable": false,
397
- "complexType": {
398
- "original": "string",
399
- "resolved": "string",
400
- "references": {}
401
- },
402
- "required": true,
403
- "optional": false,
404
- "docs": {
405
- "tags": [],
406
- "text": ""
407
- },
408
- "attribute": "button-text",
409
- "reflect": false
410
- },
411
- "info": {
412
- "type": "string",
413
- "mutable": false,
414
- "complexType": {
415
- "original": "string",
416
- "resolved": "string | undefined",
417
- "references": {}
418
- },
419
- "required": false,
420
- "optional": true,
421
- "docs": {
422
- "tags": [],
423
- "text": ""
424
- },
425
- "attribute": "info",
426
- "reflect": false
427
- },
428
- "emptyStateText": {
429
- "type": "string",
430
- "mutable": false,
431
- "complexType": {
432
- "original": "string",
433
- "resolved": "string",
434
- "references": {}
435
- },
436
- "required": true,
437
- "optional": false,
438
- "docs": {
439
- "tags": [],
440
- "text": ""
441
- },
442
- "attribute": "empty-state-text",
443
- "reflect": false
444
- },
445
- "icon": {
446
- "type": "string",
447
- "mutable": false,
448
- "complexType": {
449
- "original": "string",
450
- "resolved": "string",
451
- "references": {}
452
- },
453
- "required": true,
454
- "optional": false,
455
- "docs": {
456
- "tags": [],
457
- "text": ""
458
- },
459
- "attribute": "icon",
460
- "reflect": false
461
- },
462
- "fileTypes": {
463
- "type": "string",
464
- "mutable": false,
465
- "complexType": {
466
- "original": "string",
467
- "resolved": "string",
468
- "references": {}
469
- },
470
- "required": false,
471
- "optional": false,
472
- "docs": {
473
- "tags": [],
474
- "text": ""
475
- },
476
- "attribute": "file-types",
477
- "reflect": false,
478
- "defaultValue": "\"pdf txt log xml doc docx xls xlsx ppt pptx gif jpg jpeg png csv\""
479
- },
480
- "maxSize": {
481
- "type": "number",
482
- "mutable": false,
483
- "complexType": {
484
- "original": "number",
485
- "resolved": "number",
486
- "references": {}
487
- },
488
- "required": false,
489
- "optional": false,
490
- "docs": {
491
- "tags": [],
492
- "text": ""
493
- },
494
- "attribute": "max-size",
495
- "reflect": false,
496
- "defaultValue": "100"
497
- },
498
- "maxFiles": {
499
- "type": "number",
500
- "mutable": false,
501
- "complexType": {
502
- "original": "number",
503
- "resolved": "number | undefined",
504
- "references": {}
505
- },
506
- "required": false,
507
- "optional": true,
508
- "docs": {
509
- "tags": [],
510
- "text": ""
511
- },
512
- "attribute": "max-files",
513
- "reflect": false
514
- },
515
- "sortBy": {
516
- "type": "string",
517
- "mutable": false,
518
- "complexType": {
519
- "original": "\"name\" | \"date\"",
520
- "resolved": "\"date\" | \"name\"",
521
- "references": {}
522
- },
523
- "required": false,
524
- "optional": false,
525
- "docs": {
526
- "tags": [],
527
- "text": ""
528
- },
529
- "attribute": "sort-by",
530
- "reflect": false,
531
- "defaultValue": "\"date\""
532
- },
533
- "files": {
534
- "type": "string",
535
- "mutable": false,
536
- "complexType": {
537
- "original": "string",
538
- "resolved": "string | undefined",
539
- "references": {}
540
- },
541
- "required": false,
542
- "optional": true,
543
- "docs": {
544
- "tags": [],
545
- "text": ""
546
- },
547
- "attribute": "files",
548
- "reflect": false
549
- },
550
- "filesToUpload": {
551
- "type": "unknown",
552
- "mutable": false,
553
- "complexType": {
554
- "original": "File[]",
555
- "resolved": "File[]",
556
- "references": {
557
- "File": {
558
- "location": "global"
559
- }
263
+ else if (this.icon.match(/^\/\S*[#]\S*/)) {
264
+ // starts with /, any number of non-whitespace characters, followed by #, followed by any non-whitespace characters
265
+ // Relative Path & Symbol
266
+ return (h("svg", { xmlns: "http://www.w3.org/2000/svg", class: "svg-icon", style: { "--icon-fill": "currentColor", "--icon-size": defaultIconSize }, fill: "currentColor" }, h("use", { href: this.icon })));
267
+ }
268
+ else {
269
+ // MDI
270
+ return (h("span", { class: "mdi", "aria-hidden": "true" }, String.fromCodePoint(parseInt(`0x${this.icon}`))));
271
+ }
272
+ }
273
+ renderUploadButton() {
274
+ let accessibleLabel = `${this.label && this.label !== this.buttonText ? `${this.label}, ` : ""}${this.buttonText}`;
275
+ return (h("div", { class: "button-wrapper" }, h("input", { name: "input", id: "input", ref: (el) => (this.uploadButtonEl = el), class: "sr-only", "aria-label": accessibleLabel, "aria-required": this.requiredField ? "true" : null, "aria-describedby": `${this.errorMessage ? "error " : ""}file-count max-size accepted-types`, type: "file", multiple: true, onClick: (ev) => this.handleUploadButtonClick(ev), onChange: () => this.handleUploadButtonChange() }), h("label", { htmlFor: "input", class: `wm-button -secondary ${this.isDisabled ? "disabled" : ""}` }, this.icon && this.renderIcon(), this.buttonText), this.uploaderType == "select" && this.renderFileCount()));
276
+ }
277
+ renderDropButton() {
278
+ let accessibleLabel = `${this.label && this.label !== this.buttonText ? `${this.label}, ` : ""}${uploaderMessages.dropInstructions}`;
279
+ return (h("div", { class: "button-wrapper -drop" }, h("input", { name: "input", id: "input", ref: (el) => (this.uploadButtonEl = el), class: "sr-only", "aria-label": accessibleLabel, "aria-required": this.requiredField ? "true" : null, "aria-describedby": `${this.errorMessage ? "error " : ""}file-count max-size accepted-types`, type: "file", multiple: true, onClick: (ev) => this.handleUploadButtonClick(ev), onChange: () => this.handleUploadButtonChange() }), h("label", { htmlFor: "input", class: `${this.isDisabled ? "disabled" : ""}` }, h("div", { class: "prompt" }, h("span", { class: "upload-arrow" }), h("span", { id: "drop-text", class: `wm-button -textonly ${this.isDisabled ? "disabled" : ""}` }, h("span", { class: "default-text" }, uploaderMessages.dropInstructions), h("span", { class: "dragging-text" }, uploaderMessages.dropFile))), this.renderFileCount())));
280
+ }
281
+ renderHeader() {
282
+ return (h("div", { class: "header" }, h("div", { class: "notif-wrapper" }, this.uploaderType == "select" ? this.renderUploadButton() : this.renderDropButton(), this.renderRequirements()), this.notif && h("div", { class: "notif" }, this.notif), h("div", { id: "error" }, this.errorMessage)));
283
+ }
284
+ renderFileCount() {
285
+ if (this.maxFiles) {
286
+ return h("div", { id: "file-count" }, uploaderMessages.getFileCount(this.uploadedFileEls.length, this.maxFiles));
560
287
  }
561
- },
562
- "required": false,
563
- "optional": false,
564
- "docs": {
565
- "tags": [],
566
- "text": ""
567
- },
568
- "defaultValue": "[]"
569
- },
570
- "rejectedFiles": {
571
- "type": "string",
572
- "mutable": false,
573
- "complexType": {
574
- "original": "string",
575
- "resolved": "string | undefined",
576
- "references": {}
577
- },
578
- "required": false,
579
- "optional": true,
580
- "docs": {
581
- "tags": [],
582
- "text": ""
583
- },
584
- "attribute": "rejected-files",
585
- "reflect": false
586
- }
587
- }; }
588
- static get states() { return {
589
- "isTabbing": {},
590
- "errorList": {},
591
- "notif": {},
592
- "numFilesInProgress": {}
593
- }; }
594
- static get events() { return [{
595
- "method": "wmFilesSelected",
596
- "name": "wmFilesSelected",
597
- "bubbles": true,
598
- "cancelable": true,
599
- "composed": true,
600
- "docs": {
601
- "tags": [],
602
- "text": ""
603
- },
604
- "complexType": {
605
- "original": "any",
606
- "resolved": "any",
607
- "references": {}
608
- }
609
- }, {
610
- "method": "wmDeleteFile",
611
- "name": "wmDeleteFile",
612
- "bubbles": true,
613
- "cancelable": true,
614
- "composed": true,
615
- "docs": {
616
- "tags": [],
617
- "text": ""
618
- },
619
- "complexType": {
620
- "original": "any",
621
- "resolved": "any",
622
- "references": {}
623
- }
624
- }, {
625
- "method": "wmDownloadFile",
626
- "name": "wmDownloadFile",
627
- "bubbles": true,
628
- "cancelable": true,
629
- "composed": true,
630
- "docs": {
631
- "tags": [],
632
- "text": ""
633
- },
634
- "complexType": {
635
- "original": "any",
636
- "resolved": "any",
637
- "references": {}
638
- }
639
- }]; }
640
- static get elementRef() { return "el"; }
641
- static get watchers() { return [{
642
- "propName": "files",
643
- "methodName": "parseFiles"
644
- }, {
645
- "propName": "rejectedFiles",
646
- "methodName": "parseRejectedFiles"
647
- }, {
648
- "propName": "maxSize",
649
- "methodName": "setMaxSize"
650
- }, {
651
- "propName": "numFilesInProgress",
652
- "methodName": "uploadNotifications"
653
- }]; }
654
- static get listeners() { return [{
655
- "name": "wmUserIsTabbing",
656
- "method": "toggleTabbingOn",
657
- "target": "window",
658
- "capture": false,
659
- "passive": false
660
- }, {
661
- "name": "wmUserIsNotTabbing",
662
- "method": "toggleTabbingOff",
663
- "target": "window",
664
- "capture": false,
665
- "passive": false
666
- }, {
667
- "name": "wmUploadProgress",
668
- "method": "handleUploadProgress",
669
- "target": undefined,
670
- "capture": false,
671
- "passive": false
672
- }]; }
288
+ }
289
+ renderRequirements() {
290
+ const maxSizeMessage = intl.formatMessage({
291
+ id: "uploader.maxSize",
292
+ defaultMessage: "<b>Maximum File Size:</b> {maxSize}",
293
+ description: "An indicator of the maximum file size the uploader allows",
294
+ }, {
295
+ maxSize: this.maxSize,
296
+ b: (chunks) => h("span", { style: { "font-weight": "600" } }, chunks),
297
+ });
298
+ const acceptedTypesMessage = intl.formatMessage({
299
+ id: "uploader.acceptedFileTypes",
300
+ defaultMessage: "<b>Accepted File {amount, plural, =1 {Type} other {Types}}:</b> {fileTypes}",
301
+ }, {
302
+ fileTypes: this.validTypes,
303
+ amount: this.fileTypes.split(" ").length,
304
+ b: (chunks) => h("span", { style: { "font-weight": "600" } }, chunks),
305
+ });
306
+ return (h("details", { class: "requirements" }, h("summary", null, h("span", { class: "title-text" }, uploaderMessages.fileRequirements)), h("div", { class: "requirements-wrapper" }, h("div", { id: "accepted-types", class: "accepted-types" }, acceptedTypesMessage), this.maxSize && h("span", { id: "max-size" }, maxSizeMessage))));
307
+ }
308
+ renderListContainer() {
309
+ const hasNewlyUploadedFiles = this.fileEls.filter((file) => file.progress && file.progress === 100).length;
310
+ return (h("div", { class: `list-container ${hasNewlyUploadedFiles ? "checkmark-spacer" : ""}` }, h("ul", { class: "file-list" }, h("slot", null))));
311
+ }
312
+ renderLabel() {
313
+ return (h("div", { class: `wrapper ${this.errorMessage ? "invalid" : ""}` }, h("div", { class: "label-wrapper" }, h("div", { id: "label", class: `label`, onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label), this.requiredField && (h("div", { class: "required", "aria-hidden": "true" }, "*")))));
314
+ }
315
+ renderDropArea() {
316
+ return (h("div", { class: `drop-area -${this.dropArea}`, ref: (el) => (this.dropAreaEl = el), onDragEnter: (ev) => this.handleDragEnter(ev), onDragOver: (ev) => this.handleDragOver(ev), onDragLeave: (ev) => this.handleDragLeave(ev), onDrop: (ev) => this.handleDrop(ev) }, this.dropArea == "page" && (h("div", { ref: (el) => (this.dropOverlayEl = el), class: "drop-overlay", popover: "manual" }, h("span", { class: "upload-arrow" }), h("span", null, "Drop to Upload")))));
317
+ }
318
+ render() {
319
+ return (h(Host, { key: 'ba107068957e362e4f7955665fb88ebf5b6cc496', class: `-${this.dropArea}` }, this.uploaderType == "drop" && this.renderDropArea(), this.label && this.renderLabel(), this.renderHeader(), this.renderListContainer(), h("div", { key: '4f66e5d79375d338f5ac9927f92eecafe150505c', ref: (el) => (this.assertiveLiveRegionEl = el), class: "live-region sr-only", "aria-live": "assertive" // since it's directly linked to the action the user took, it should be read in priority. With polite, some messages get dismissed in favor of the page title
320
+ ,
321
+ "aria-atomic": "true" }), h("div", { key: '976a43710c6b906925e5a081f1518890a901a644', ref: (el) => (this.politeLiveRegionEl = el), class: "live-region sr-only", "aria-live": "polite", "aria-atomic": "true" })));
322
+ }
323
+ static get is() { return "wm-uploader"; }
324
+ static get encapsulation() { return "shadow"; }
325
+ static get delegatesFocus() { return true; }
326
+ static get originalStyleUrls() {
327
+ return {
328
+ "$": ["wm-uploader.scss"]
329
+ };
330
+ }
331
+ static get styleUrls() {
332
+ return {
333
+ "$": ["wm-uploader.css"]
334
+ };
335
+ }
336
+ static get properties() {
337
+ return {
338
+ "label": {
339
+ "type": "string",
340
+ "mutable": false,
341
+ "complexType": {
342
+ "original": "string",
343
+ "resolved": "string | undefined",
344
+ "references": {}
345
+ },
346
+ "required": false,
347
+ "optional": true,
348
+ "docs": {
349
+ "tags": [],
350
+ "text": ""
351
+ },
352
+ "attribute": "label",
353
+ "reflect": false
354
+ },
355
+ "uploaderType": {
356
+ "type": "string",
357
+ "mutable": false,
358
+ "complexType": {
359
+ "original": "\"select\" | \"drop\"",
360
+ "resolved": "\"drop\" | \"select\"",
361
+ "references": {}
362
+ },
363
+ "required": false,
364
+ "optional": false,
365
+ "docs": {
366
+ "tags": [],
367
+ "text": ""
368
+ },
369
+ "attribute": "uploader-type",
370
+ "reflect": false,
371
+ "defaultValue": "\"select\""
372
+ },
373
+ "dropArea": {
374
+ "type": "string",
375
+ "mutable": false,
376
+ "complexType": {
377
+ "original": "\"component\" | \"page\"",
378
+ "resolved": "\"component\" | \"page\"",
379
+ "references": {}
380
+ },
381
+ "required": false,
382
+ "optional": false,
383
+ "docs": {
384
+ "tags": [],
385
+ "text": ""
386
+ },
387
+ "attribute": "drop-area",
388
+ "reflect": false,
389
+ "defaultValue": "\"component\""
390
+ },
391
+ "buttonText": {
392
+ "type": "string",
393
+ "mutable": false,
394
+ "complexType": {
395
+ "original": "string",
396
+ "resolved": "string",
397
+ "references": {}
398
+ },
399
+ "required": true,
400
+ "optional": false,
401
+ "docs": {
402
+ "tags": [],
403
+ "text": ""
404
+ },
405
+ "attribute": "button-text",
406
+ "reflect": false
407
+ },
408
+ "icon": {
409
+ "type": "string",
410
+ "mutable": false,
411
+ "complexType": {
412
+ "original": "string",
413
+ "resolved": "string",
414
+ "references": {}
415
+ },
416
+ "required": true,
417
+ "optional": false,
418
+ "docs": {
419
+ "tags": [],
420
+ "text": ""
421
+ },
422
+ "attribute": "icon",
423
+ "reflect": false
424
+ },
425
+ "fileTypes": {
426
+ "type": "string",
427
+ "mutable": false,
428
+ "complexType": {
429
+ "original": "string",
430
+ "resolved": "string",
431
+ "references": {}
432
+ },
433
+ "required": false,
434
+ "optional": false,
435
+ "docs": {
436
+ "tags": [],
437
+ "text": ""
438
+ },
439
+ "attribute": "file-types",
440
+ "reflect": false,
441
+ "defaultValue": "\"pdf txt log xml doc docx xls xlsx ppt pptx gif jpg jpeg png csv\""
442
+ },
443
+ "maxSize": {
444
+ "type": "string",
445
+ "mutable": false,
446
+ "complexType": {
447
+ "original": "string",
448
+ "resolved": "string | undefined",
449
+ "references": {}
450
+ },
451
+ "required": false,
452
+ "optional": true,
453
+ "docs": {
454
+ "tags": [],
455
+ "text": ""
456
+ },
457
+ "attribute": "max-size",
458
+ "reflect": false
459
+ },
460
+ "maxFiles": {
461
+ "type": "number",
462
+ "mutable": false,
463
+ "complexType": {
464
+ "original": "number",
465
+ "resolved": "number | undefined",
466
+ "references": {}
467
+ },
468
+ "required": false,
469
+ "optional": true,
470
+ "docs": {
471
+ "tags": [],
472
+ "text": ""
473
+ },
474
+ "attribute": "max-files",
475
+ "reflect": false
476
+ },
477
+ "errorMessage": {
478
+ "type": "string",
479
+ "mutable": false,
480
+ "complexType": {
481
+ "original": "string",
482
+ "resolved": "string | undefined",
483
+ "references": {}
484
+ },
485
+ "required": false,
486
+ "optional": true,
487
+ "docs": {
488
+ "tags": [],
489
+ "text": ""
490
+ },
491
+ "attribute": "error-message",
492
+ "reflect": false
493
+ },
494
+ "requiredField": {
495
+ "type": "boolean",
496
+ "mutable": false,
497
+ "complexType": {
498
+ "original": "boolean",
499
+ "resolved": "boolean | undefined",
500
+ "references": {}
501
+ },
502
+ "required": false,
503
+ "optional": true,
504
+ "docs": {
505
+ "tags": [],
506
+ "text": ""
507
+ },
508
+ "attribute": "required-field",
509
+ "reflect": false
510
+ },
511
+ "showInfo": {
512
+ "type": "string",
513
+ "mutable": false,
514
+ "complexType": {
515
+ "original": "\"size\" | \"time\" | \"none\"",
516
+ "resolved": "\"none\" | \"size\" | \"time\"",
517
+ "references": {}
518
+ },
519
+ "required": false,
520
+ "optional": false,
521
+ "docs": {
522
+ "tags": [],
523
+ "text": ""
524
+ },
525
+ "attribute": "show-info",
526
+ "reflect": false,
527
+ "defaultValue": "\"time\""
528
+ }
529
+ };
530
+ }
531
+ static get states() {
532
+ return {
533
+ "isTabbing": {},
534
+ "notif": {},
535
+ "isCondensed": {}
536
+ };
537
+ }
538
+ static get events() {
539
+ return [{
540
+ "method": "wmUploaderFilesSelected",
541
+ "name": "wmUploaderFilesSelected",
542
+ "bubbles": true,
543
+ "cancelable": true,
544
+ "composed": true,
545
+ "docs": {
546
+ "tags": [],
547
+ "text": ""
548
+ },
549
+ "complexType": {
550
+ "original": "File[]",
551
+ "resolved": "File[]",
552
+ "references": {
553
+ "File": {
554
+ "location": "global",
555
+ "id": "global::File"
556
+ }
557
+ }
558
+ }
559
+ }];
560
+ }
561
+ static get elementRef() { return "el"; }
562
+ static get watchers() {
563
+ return [{
564
+ "propName": "errorMessage",
565
+ "methodName": "announceError"
566
+ }];
567
+ }
568
+ static get listeners() {
569
+ return [{
570
+ "name": "wmUserIsTabbing",
571
+ "method": "toggleTabbingOn",
572
+ "target": "window",
573
+ "capture": false,
574
+ "passive": false
575
+ }, {
576
+ "name": "wmUserIsNotTabbing",
577
+ "method": "toggleTabbingOff",
578
+ "target": "window",
579
+ "capture": false,
580
+ "passive": false
581
+ }, {
582
+ "name": "wmFileErrorCleared",
583
+ "method": "handleFileErrorCleared",
584
+ "target": undefined,
585
+ "capture": false,
586
+ "passive": false
587
+ }, {
588
+ "name": "wmFileDelete",
589
+ "method": "handleFileDelete",
590
+ "target": undefined,
591
+ "capture": false,
592
+ "passive": false
593
+ }, {
594
+ "name": "dragenter",
595
+ "method": "handleDocumentDragEnter",
596
+ "target": "document",
597
+ "capture": false,
598
+ "passive": true
599
+ }, {
600
+ "name": "mouseout",
601
+ "method": "handleDocumentMouseOut",
602
+ "target": "document",
603
+ "capture": false,
604
+ "passive": true
605
+ }, {
606
+ "name": "dragleave",
607
+ "method": "handleDocumentDragLeave",
608
+ "target": "document",
609
+ "capture": false,
610
+ "passive": true
611
+ }, {
612
+ "name": "visibilitychange",
613
+ "method": "handleDocumentVisibilityChange",
614
+ "target": "document",
615
+ "capture": false,
616
+ "passive": false
617
+ }];
618
+ }
673
619
  }