@aurelia-mdc-web/all 9.3.1-au2 → 9.3.3-au2

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 (621) hide show
  1. package/dist/alert/alert-configuration.js +15 -0
  2. package/dist/alert/alert-configuration.js.map +1 -0
  3. package/dist/alert/alert-modal/alert-modal.html +27 -0
  4. package/dist/alert/alert-modal/alert-modal.js +30 -0
  5. package/dist/alert/alert-modal/alert-modal.js.map +1 -0
  6. package/dist/alert/alert-modal/i-alert-modal-payload.js +14 -0
  7. package/dist/alert/alert-modal/i-alert-modal-payload.js.map +1 -0
  8. package/dist/alert/alert-service.js +106 -0
  9. package/dist/alert/alert-service.js.map +1 -0
  10. package/dist/alert/decorators/confirm-action.js +17 -0
  11. package/dist/alert/decorators/confirm-action.js.map +1 -0
  12. package/dist/alert/decorators/using-progress.js +27 -0
  13. package/dist/alert/decorators/using-progress.js.map +1 -0
  14. package/dist/alert/exceptions-tracker.js +8 -0
  15. package/dist/alert/exceptions-tracker.js.map +1 -0
  16. package/dist/alert/global-progress/global-progress.html +9 -0
  17. package/dist/alert/global-progress/global-progress.js +64 -0
  18. package/dist/alert/global-progress/global-progress.js.map +1 -0
  19. package/dist/alert/prompt-dialog/prompt-dialog.html +15 -0
  20. package/dist/alert/prompt-dialog/prompt-dialog.js +44 -0
  21. package/dist/alert/prompt-dialog/prompt-dialog.js.map +1 -0
  22. package/dist/banner/mdc-banner.html +21 -21
  23. package/dist/banner/mdc-banner.js +45 -42
  24. package/dist/banner/mdc-banner.js.map +1 -1
  25. package/dist/base/attributes/mdc-focus-trap.js +25 -22
  26. package/dist/base/attributes/mdc-focus-trap.js.map +1 -1
  27. package/dist/base/elements/i-validated-element.js +2 -1
  28. package/dist/base/elements/i-validated-element.js.map +1 -1
  29. package/dist/base/elements/mdc-promisify-reference.js +16 -13
  30. package/dist/base/elements/mdc-promisify-reference.js.map +1 -1
  31. package/dist/base/index.js +21 -9
  32. package/dist/base/index.js.map +1 -1
  33. package/dist/base/interceptors.js +12 -5
  34. package/dist/base/interceptors.js.map +1 -1
  35. package/dist/base/material-palette.js +4 -1
  36. package/dist/base/material-palette.js.map +1 -1
  37. package/dist/base/mdc-component.js +5 -1
  38. package/dist/base/mdc-component.js.map +1 -1
  39. package/dist/base/next-element.js +4 -1
  40. package/dist/base/next-element.js.map +1 -1
  41. package/dist/button/enhance-mdc-button.js +9 -6
  42. package/dist/button/enhance-mdc-button.js.map +1 -1
  43. package/dist/button/mdc-button-label.js +9 -6
  44. package/dist/button/mdc-button-label.js.map +1 -1
  45. package/dist/button/mdc-button.html +12 -12
  46. package/dist/button/mdc-button.js +30 -27
  47. package/dist/button/mdc-button.js.map +1 -1
  48. package/dist/card/mdc-card-action-buttons.js +9 -6
  49. package/dist/card/mdc-card-action-buttons.js.map +1 -1
  50. package/dist/card/mdc-card-action-icons.js +9 -6
  51. package/dist/card/mdc-card-action-icons.js.map +1 -1
  52. package/dist/card/mdc-card-actions/mdc-card-actions.html +3 -3
  53. package/dist/card/mdc-card-actions/mdc-card-actions.js +15 -12
  54. package/dist/card/mdc-card-actions/mdc-card-actions.js.map +1 -1
  55. package/dist/card/mdc-card-media/mdc-card-media.html +5 -5
  56. package/dist/card/mdc-card-media/mdc-card-media.js +18 -15
  57. package/dist/card/mdc-card-media/mdc-card-media.js.map +1 -1
  58. package/dist/card/mdc-card-primary-action.html +5 -5
  59. package/dist/card/mdc-card-primary-action.js +15 -12
  60. package/dist/card/mdc-card-primary-action.js.map +1 -1
  61. package/dist/card/mdc-card.html +3 -3
  62. package/dist/card/mdc-card.js +15 -12
  63. package/dist/card/mdc-card.js.map +1 -1
  64. package/dist/checkbox/mdc-checkbox.html +12 -12
  65. package/dist/checkbox/mdc-checkbox.js +38 -35
  66. package/dist/checkbox/mdc-checkbox.js.map +1 -1
  67. package/dist/chips/mdc-chip/mdc-chip.html +24 -24
  68. package/dist/chips/mdc-chip/mdc-chip.js +37 -34
  69. package/dist/chips/mdc-chip/mdc-chip.js.map +1 -1
  70. package/dist/chips/mdc-chip-action/enhance-mdc-chip-action.js +9 -6
  71. package/dist/chips/mdc-chip-action/enhance-mdc-chip-action.js.map +1 -1
  72. package/dist/chips/mdc-chip-action/mdc-chip-action.html +25 -25
  73. package/dist/chips/mdc-chip-action/mdc-chip-action.js +40 -37
  74. package/dist/chips/mdc-chip-action/mdc-chip-action.js.map +1 -1
  75. package/dist/chips/mdc-chip-set/mdc-chip-set.html +10 -10
  76. package/dist/chips/mdc-chip-set/mdc-chip-set.js +27 -24
  77. package/dist/chips/mdc-chip-set/mdc-chip-set.js.map +1 -1
  78. package/dist/circular-progress/mdc-circular-progress.html +38 -38
  79. package/dist/circular-progress/mdc-circular-progress.js +25 -22
  80. package/dist/circular-progress/mdc-circular-progress.js.map +1 -1
  81. package/dist/data-table/mdc-data-table-row.js +13 -10
  82. package/dist/data-table/mdc-data-table-row.js.map +1 -1
  83. package/dist/data-table/mdc-data-table.html +50 -49
  84. package/dist/data-table/mdc-data-table.js +183 -91
  85. package/dist/data-table/mdc-data-table.js.map +1 -1
  86. package/dist/dialog/mdc-dialog-actions.js +13 -10
  87. package/dist/dialog/mdc-dialog-actions.js.map +1 -1
  88. package/dist/dialog/mdc-dialog-content.js +9 -6
  89. package/dist/dialog/mdc-dialog-content.js.map +1 -1
  90. package/dist/dialog/mdc-dialog-service.js +20 -13
  91. package/dist/dialog/mdc-dialog-service.js.map +1 -1
  92. package/dist/dialog/mdc-dialog-title.js +9 -6
  93. package/dist/dialog/mdc-dialog-title.js.map +1 -1
  94. package/dist/dialog/mdc-dialog.html +14 -14
  95. package/dist/dialog/mdc-dialog.js +49 -46
  96. package/dist/dialog/mdc-dialog.js.map +1 -1
  97. package/dist/drawer/mdc-drawer-app-content.js +9 -6
  98. package/dist/drawer/mdc-drawer-app-content.js.map +1 -1
  99. package/dist/drawer/mdc-drawer-content.js +9 -6
  100. package/dist/drawer/mdc-drawer-content.js.map +1 -1
  101. package/dist/drawer/mdc-drawer-header/mdc-drawer-header.html +5 -5
  102. package/dist/drawer/mdc-drawer-header/mdc-drawer-header.js +17 -14
  103. package/dist/drawer/mdc-drawer-header/mdc-drawer-header.js.map +1 -1
  104. package/dist/drawer/mdc-drawer.html +6 -6
  105. package/dist/drawer/mdc-drawer.js +24 -21
  106. package/dist/drawer/mdc-drawer.js.map +1 -1
  107. package/dist/elevation/mdc-elevation.js +9 -6
  108. package/dist/elevation/mdc-elevation.js.map +1 -1
  109. package/dist/expandable/mdc-expandable.html +28 -28
  110. package/dist/expandable/mdc-expandable.js +20 -17
  111. package/dist/expandable/mdc-expandable.js.map +1 -1
  112. package/dist/fab/enhance-mdc-fab.js +9 -6
  113. package/dist/fab/enhance-mdc-fab.js.map +1 -1
  114. package/dist/fab/mdc-fab-icon.js +9 -6
  115. package/dist/fab/mdc-fab-icon.js.map +1 -1
  116. package/dist/fab/mdc-fab.html +13 -13
  117. package/dist/fab/mdc-fab.js +33 -30
  118. package/dist/fab/mdc-fab.js.map +1 -1
  119. package/dist/floating-label/mdc-floating-label.html +1 -1
  120. package/dist/floating-label/mdc-floating-label.js +16 -13
  121. package/dist/floating-label/mdc-floating-label.js.map +1 -1
  122. package/dist/form-field/mdc-form-field.html +6 -6
  123. package/dist/form-field/mdc-form-field.js +27 -24
  124. package/dist/form-field/mdc-form-field.js.map +1 -1
  125. package/dist/icon/mdc-icon.html +3 -3
  126. package/dist/icon/mdc-icon.js +10 -7
  127. package/dist/icon/mdc-icon.js.map +1 -1
  128. package/dist/icon-button/enhance-mdc-icon-button.js +9 -6
  129. package/dist/icon-button/enhance-mdc-icon-button.js.map +1 -1
  130. package/dist/icon-button/mdc-icon-button-icon/mdc-icon-button-icon.html +4 -4
  131. package/dist/icon-button/mdc-icon-button-icon/mdc-icon-button-icon.js +18 -15
  132. package/dist/icon-button/mdc-icon-button-icon/mdc-icon-button-icon.js.map +1 -1
  133. package/dist/icon-button/mdc-icon-button.html +11 -11
  134. package/dist/icon-button/mdc-icon-button.js +28 -25
  135. package/dist/icon-button/mdc-icon-button.js.map +1 -1
  136. package/dist/image-list/mdc-image-list-item/mdc-image-list-item.html +9 -9
  137. package/dist/image-list/mdc-image-list-item/mdc-image-list-item.js +22 -19
  138. package/dist/image-list/mdc-image-list-item/mdc-image-list-item.js.map +1 -1
  139. package/dist/image-list/mdc-image-list.html +7 -7
  140. package/dist/image-list/mdc-image-list.js +35 -32
  141. package/dist/image-list/mdc-image-list.js.map +1 -1
  142. package/dist/index.js +297 -139
  143. package/dist/index.js.map +1 -1
  144. package/dist/layout-grid/mdc-layout-grid-cell/mdc-layout-grid-cell.html +12 -12
  145. package/dist/layout-grid/mdc-layout-grid-cell/mdc-layout-grid-cell.js +36 -33
  146. package/dist/layout-grid/mdc-layout-grid-cell/mdc-layout-grid-cell.js.map +1 -1
  147. package/dist/layout-grid/mdc-layout-grid-inner.js +9 -6
  148. package/dist/layout-grid/mdc-layout-grid-inner.js.map +1 -1
  149. package/dist/layout-grid/mdc-layout-grid.html +8 -8
  150. package/dist/layout-grid/mdc-layout-grid.js +33 -30
  151. package/dist/layout-grid/mdc-layout-grid.js.map +1 -1
  152. package/dist/line-ripple/mdc-line-ripple.js +13 -10
  153. package/dist/line-ripple/mdc-line-ripple.js.map +1 -1
  154. package/dist/linear-progress/mdc-linear-progress.html +12 -12
  155. package/dist/linear-progress/mdc-linear-progress.js +26 -23
  156. package/dist/linear-progress/mdc-linear-progress.js.map +1 -1
  157. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-divider/mdc-deprecated-list-divider.html +4 -4
  158. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-divider/mdc-deprecated-list-divider.js +18 -15
  159. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-divider/mdc-deprecated-list-divider.js.map +1 -1
  160. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-group.js +17 -14
  161. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-group.js.map +1 -1
  162. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/enhance-mdc-deprecated-list-item.js +9 -6
  163. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/enhance-mdc-deprecated-list-item.js.map +1 -1
  164. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-graphic.js +9 -6
  165. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-graphic.js.map +1 -1
  166. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-meta.js +9 -6
  167. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-meta.js.map +1 -1
  168. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.html +8 -8
  169. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.js +28 -25
  170. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.js.map +1 -1
  171. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item-primary-text.js +9 -6
  172. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item-primary-text.js.map +1 -1
  173. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item-secondary-text.js +9 -6
  174. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item-secondary-text.js.map +1 -1
  175. package/dist/list/mdc-deprecated-list/mdc-deprecated-list.html +15 -15
  176. package/dist/list/mdc-deprecated-list/mdc-deprecated-list.js +78 -75
  177. package/dist/list/mdc-deprecated-list/mdc-deprecated-list.js.map +1 -1
  178. package/dist/list/mdc-list-divider/mdc-list-divider.html +7 -7
  179. package/dist/list/mdc-list-divider/mdc-list-divider.js +21 -18
  180. package/dist/list/mdc-list-divider/mdc-list-divider.js.map +1 -1
  181. package/dist/list/mdc-list-group.js +17 -14
  182. package/dist/list/mdc-list-group.js.map +1 -1
  183. package/dist/list/mdc-list-item/enhance-mdc-list-item.js +9 -6
  184. package/dist/list/mdc-list-item/enhance-mdc-list-item.js.map +1 -1
  185. package/dist/list/mdc-list-item/mdc-list-item-leading.js +9 -6
  186. package/dist/list/mdc-list-item/mdc-list-item-leading.js.map +1 -1
  187. package/dist/list/mdc-list-item/mdc-list-item-trailing.js +9 -6
  188. package/dist/list/mdc-list-item/mdc-list-item-trailing.js.map +1 -1
  189. package/dist/list/mdc-list-item/mdc-list-item.html +13 -13
  190. package/dist/list/mdc-list-item/mdc-list-item.js +40 -37
  191. package/dist/list/mdc-list-item/mdc-list-item.js.map +1 -1
  192. package/dist/list/mdc-list-item-overline-text.js +9 -6
  193. package/dist/list/mdc-list-item-overline-text.js.map +1 -1
  194. package/dist/list/mdc-list-item-primary-text.js +9 -6
  195. package/dist/list/mdc-list-item-primary-text.js.map +1 -1
  196. package/dist/list/mdc-list-item-secondary-text.js +9 -6
  197. package/dist/list/mdc-list-item-secondary-text.js.map +1 -1
  198. package/dist/list/mdc-list.html +5 -5
  199. package/dist/list/mdc-list.js +58 -55
  200. package/dist/list/mdc-list.js.map +1 -1
  201. package/dist/lookup/discardable-promise.js +5 -1
  202. package/dist/lookup/discardable-promise.js.map +1 -1
  203. package/dist/lookup/mdc-lookup-configuration.js +5 -1
  204. package/dist/lookup/mdc-lookup-configuration.js.map +1 -1
  205. package/dist/lookup/mdc-lookup.html +27 -27
  206. package/dist/lookup/mdc-lookup.js +74 -71
  207. package/dist/lookup/mdc-lookup.js.map +1 -1
  208. package/dist/mdc-configuration.js +15 -9
  209. package/dist/mdc-configuration.js.map +1 -1
  210. package/dist/menu/mdc-menu-selection-group-icon.js +9 -6
  211. package/dist/menu/mdc-menu-selection-group-icon.js.map +1 -1
  212. package/dist/menu/mdc-menu-selection-group.js +9 -6
  213. package/dist/menu/mdc-menu-selection-group.js.map +1 -1
  214. package/dist/menu/mdc-menu.html +6 -6
  215. package/dist/menu/mdc-menu.js +71 -68
  216. package/dist/menu/mdc-menu.js.map +1 -1
  217. package/dist/menu-surface/mdc-menu-surface-anchor.js +11 -8
  218. package/dist/menu-surface/mdc-menu-surface-anchor.js.map +1 -1
  219. package/dist/menu-surface/mdc-menu-surface.js +61 -58
  220. package/dist/menu-surface/mdc-menu-surface.js.map +1 -1
  221. package/dist/notched-outline/mdc-notched-outline.html +7 -7
  222. package/dist/notched-outline/mdc-notched-outline.js +20 -17
  223. package/dist/notched-outline/mdc-notched-outline.js.map +1 -1
  224. package/dist/radio/mdc-radio.html +9 -9
  225. package/dist/radio/mdc-radio.js +27 -24
  226. package/dist/radio/mdc-radio.js.map +1 -1
  227. package/dist/ripple/mdc-ripple.js +51 -48
  228. package/dist/ripple/mdc-ripple.js.map +1 -1
  229. package/dist/segmented-button/mdc-segmented-button-segment/enhance-mdc-segmented-button-segment.js +9 -6
  230. package/dist/segmented-button/mdc-segmented-button-segment/enhance-mdc-segmented-button-segment.js.map +1 -1
  231. package/dist/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.html +11 -11
  232. package/dist/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.js +27 -24
  233. package/dist/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.js.map +1 -1
  234. package/dist/segmented-button/mdc-segmented-button.html +3 -3
  235. package/dist/segmented-button/mdc-segmented-button.js +24 -21
  236. package/dist/segmented-button/mdc-segmented-button.js.map +1 -1
  237. package/dist/select/mdc-default-select-configuration.js +5 -1
  238. package/dist/select/mdc-default-select-configuration.js.map +1 -1
  239. package/dist/select/mdc-select-adapter-aurelia.js +2 -1
  240. package/dist/select/mdc-select-adapter-aurelia.js.map +1 -1
  241. package/dist/select/mdc-select-foundation-aurelia.js +47 -43
  242. package/dist/select/mdc-select-foundation-aurelia.js.map +1 -1
  243. package/dist/select/mdc-select-helper-text/mdc-select-helper-text.html +7 -7
  244. package/dist/select/mdc-select-helper-text/mdc-select-helper-text.js +27 -24
  245. package/dist/select/mdc-select-helper-text/mdc-select-helper-text.js.map +1 -1
  246. package/dist/select/mdc-select-icon.js +16 -13
  247. package/dist/select/mdc-select-icon.js.map +1 -1
  248. package/dist/select/mdc-select-value-observer.js +16 -12
  249. package/dist/select/mdc-select-value-observer.js.map +1 -1
  250. package/dist/select/mdc-select.html +38 -38
  251. package/dist/select/mdc-select.js +71 -68
  252. package/dist/select/mdc-select.js.map +1 -1
  253. package/dist/slider/mdc-slider-foundation-aurelia.js +6 -2
  254. package/dist/slider/mdc-slider-foundation-aurelia.js.map +1 -1
  255. package/dist/slider/mdc-slider.html +36 -36
  256. package/dist/slider/mdc-slider.js +79 -76
  257. package/dist/slider/mdc-slider.js.map +1 -1
  258. package/dist/snackbar/mdc-snackbar-service.js +8 -4
  259. package/dist/snackbar/mdc-snackbar-service.js.map +1 -1
  260. package/dist/snackbar/mdc-snackbar.html +14 -14
  261. package/dist/snackbar/mdc-snackbar.js +55 -52
  262. package/dist/snackbar/mdc-snackbar.js.map +1 -1
  263. package/dist/switch/enhance-mdc-switch.js +9 -6
  264. package/dist/switch/enhance-mdc-switch.js.map +1 -1
  265. package/dist/switch/mdc-switch.html +21 -21
  266. package/dist/switch/mdc-switch.js +16 -13
  267. package/dist/switch/mdc-switch.js.map +1 -1
  268. package/dist/tab-bar/indicator/mdc-tab-indicator.html +9 -9
  269. package/dist/tab-bar/indicator/mdc-tab-indicator.js +26 -23
  270. package/dist/tab-bar/indicator/mdc-tab-indicator.js.map +1 -1
  271. package/dist/tab-bar/mdc-tab-bar.html +6 -6
  272. package/dist/tab-bar/mdc-tab-bar.js +29 -26
  273. package/dist/tab-bar/mdc-tab-bar.js.map +1 -1
  274. package/dist/tab-bar/scroller/mdc-tab-scroller.html +11 -11
  275. package/dist/tab-bar/scroller/mdc-tab-scroller.js +25 -22
  276. package/dist/tab-bar/scroller/mdc-tab-scroller.js.map +1 -1
  277. package/dist/tab-bar/tab/mdc-tab.html +20 -20
  278. package/dist/tab-bar/tab/mdc-tab.js +44 -41
  279. package/dist/tab-bar/tab/mdc-tab.js.map +1 -1
  280. package/dist/text-field/enhance-mdc-text-field.js +9 -6
  281. package/dist/text-field/enhance-mdc-text-field.js.map +1 -1
  282. package/dist/text-field/mdc-default-text-field-configuration.js +5 -1
  283. package/dist/text-field/mdc-default-text-field-configuration.js.map +1 -1
  284. package/dist/text-field/mdc-inputmask.js +76 -0
  285. package/dist/text-field/mdc-inputmask.js.map +1 -0
  286. package/dist/text-field/mdc-text-field-character-counter.js +13 -10
  287. package/dist/text-field/mdc-text-field-character-counter.js.map +1 -1
  288. package/dist/text-field/mdc-text-field-helper-line/mdc-text-field-helper-line.html +7 -7
  289. package/dist/text-field/mdc-text-field-helper-line/mdc-text-field-helper-line.js +14 -11
  290. package/dist/text-field/mdc-text-field-helper-line/mdc-text-field-helper-line.js.map +1 -1
  291. package/dist/text-field/mdc-text-field-helper-text/mdc-text-field-helper-text.html +6 -6
  292. package/dist/text-field/mdc-text-field-helper-text/mdc-text-field-helper-text.js +22 -19
  293. package/dist/text-field/mdc-text-field-helper-text/mdc-text-field-helper-text.js.map +1 -1
  294. package/dist/text-field/mdc-text-field-icon.js +22 -19
  295. package/dist/text-field/mdc-text-field-icon.js.map +1 -1
  296. package/dist/text-field/mdc-text-field.html +29 -29
  297. package/dist/text-field/mdc-text-field.js +116 -113
  298. package/dist/text-field/mdc-text-field.js.map +1 -1
  299. package/dist/tooltip/mdc-default-tooltip-configuration.js +5 -1
  300. package/dist/tooltip/mdc-default-tooltip-configuration.js.map +1 -1
  301. package/dist/tooltip/mdc-tooltip-attribute.js +39 -36
  302. package/dist/tooltip/mdc-tooltip-attribute.js.map +1 -1
  303. package/dist/tooltip/mdc-tooltip.html +7 -7
  304. package/dist/tooltip/mdc-tooltip.js +66 -63
  305. package/dist/tooltip/mdc-tooltip.js.map +1 -1
  306. package/dist/top-app-bar/enhance-top-app-bar-actions.js +9 -6
  307. package/dist/top-app-bar/enhance-top-app-bar-actions.js.map +1 -1
  308. package/dist/top-app-bar/mdc-top-app-bar-action-item.js +9 -6
  309. package/dist/top-app-bar/mdc-top-app-bar-action-item.js.map +1 -1
  310. package/dist/top-app-bar/mdc-top-app-bar-fixed-adjust.js +9 -6
  311. package/dist/top-app-bar/mdc-top-app-bar-fixed-adjust.js.map +1 -1
  312. package/dist/top-app-bar/mdc-top-app-bar-nav-icon.js +9 -6
  313. package/dist/top-app-bar/mdc-top-app-bar-nav-icon.js.map +1 -1
  314. package/dist/top-app-bar/mdc-top-app-bar-row.js +9 -6
  315. package/dist/top-app-bar/mdc-top-app-bar-row.js.map +1 -1
  316. package/dist/top-app-bar/mdc-top-app-bar-section/mdc-top-app-bar-section.html +3 -3
  317. package/dist/top-app-bar/mdc-top-app-bar-section/mdc-top-app-bar-section.js +15 -12
  318. package/dist/top-app-bar/mdc-top-app-bar-section/mdc-top-app-bar-section.js.map +1 -1
  319. package/dist/top-app-bar/mdc-top-app-bar-title.js +9 -6
  320. package/dist/top-app-bar/mdc-top-app-bar-title.js.map +1 -1
  321. package/dist/top-app-bar/mdc-top-app-bar.html +9 -9
  322. package/dist/top-app-bar/mdc-top-app-bar.js +43 -40
  323. package/dist/top-app-bar/mdc-top-app-bar.js.map +1 -1
  324. package/dist/tree-view/i-tree-node.js +2 -1
  325. package/dist/tree-view/i-tree-node.js.map +1 -1
  326. package/dist/tree-view/mdc-tree-node-meta.js +9 -6
  327. package/dist/tree-view/mdc-tree-node-meta.js.map +1 -1
  328. package/dist/tree-view/mdc-tree-node.js +9 -6
  329. package/dist/tree-view/mdc-tree-node.js.map +1 -1
  330. package/dist/tree-view/mdc-tree-view.js +29 -25
  331. package/dist/tree-view/mdc-tree-view.js.map +1 -1
  332. package/dist/tree-view/node-filter.js +9 -6
  333. package/dist/tree-view/node-filter.js.map +1 -1
  334. package/dist/types/alert/alert-configuration.d.ts +8 -0
  335. package/dist/types/alert/alert-modal/alert-modal.d.ts +6 -0
  336. package/dist/types/alert/alert-modal/i-alert-modal-payload.d.ts +9 -0
  337. package/dist/types/alert/alert-service.d.ts +27 -0
  338. package/dist/types/alert/decorators/confirm-action.d.ts +3 -0
  339. package/dist/types/alert/decorators/using-progress.d.ts +6 -0
  340. package/dist/types/alert/exceptions-tracker.d.ts +3 -0
  341. package/dist/types/alert/global-progress/global-progress.d.ts +11 -0
  342. package/dist/types/alert/prompt-dialog/prompt-dialog.d.ts +21 -0
  343. package/dist/types/data-table/mdc-data-table.d.ts +16 -4
  344. package/dist/types/index.d.ts +11 -1
  345. package/dist/types/lookup/mdc-lookup.d.ts +3 -3
  346. package/dist/types/mdc-configuration.d.ts +2 -0
  347. package/dist/types/select/mdc-select.d.ts +3 -3
  348. package/dist/types/text-field/mdc-inputmask.d.ts +11 -0
  349. package/dist/types/text-field/mdc-text-field.d.ts +3 -3
  350. package/dist/types/tooltip/mdc-tooltip.d.ts +3 -3
  351. package/dist/types/validation/validate.d.ts +10 -0
  352. package/dist/typography/mdc-typography.js +60 -57
  353. package/dist/typography/mdc-typography.js.map +1 -1
  354. package/dist/validation/mdc-validation-controller-factory.js +10 -6
  355. package/dist/validation/mdc-validation-controller-factory.js.map +1 -1
  356. package/dist/validation/mdc-validation-result-presenter.js +5 -1
  357. package/dist/validation/mdc-validation-result-presenter.js.map +1 -1
  358. package/dist/validation/validate.js +27 -0
  359. package/dist/validation/validate.js.map +1 -0
  360. package/package.json +4 -2
  361. package/src/alert/alert-configuration.ts +11 -0
  362. package/src/alert/alert-modal/alert-modal.html +27 -0
  363. package/src/alert/alert-modal/alert-modal.scss +10 -0
  364. package/src/alert/alert-modal/alert-modal.ts +13 -0
  365. package/src/alert/alert-modal/i-alert-modal-payload.ts +9 -0
  366. package/src/alert/alert-service.ts +113 -0
  367. package/src/alert/decorators/confirm-action.ts +18 -0
  368. package/src/alert/decorators/using-progress.ts +30 -0
  369. package/src/alert/exceptions-tracker.ts +3 -0
  370. package/src/alert/global-progress/global-progress.html +9 -0
  371. package/src/alert/global-progress/global-progress.scss +38 -0
  372. package/src/alert/global-progress/global-progress.ts +27 -0
  373. package/src/alert/prompt-dialog/prompt-dialog.html +15 -0
  374. package/src/alert/prompt-dialog/prompt-dialog.ts +35 -0
  375. package/src/banner/mdc-banner.html +21 -21
  376. package/src/banner/mdc-banner.ts +116 -116
  377. package/src/base/attributes/mdc-focus-trap.ts +42 -42
  378. package/src/base/elements/i-validated-element.ts +12 -12
  379. package/src/base/elements/mdc-promisify-reference.ts +21 -21
  380. package/src/base/interceptors.ts +25 -25
  381. package/src/base/material-palette.md +7 -7
  382. package/src/base/material-palette.ts +22 -22
  383. package/src/base/mdc-component.ts +69 -69
  384. package/src/base/next-element.ts +39 -39
  385. package/src/button/enhance-mdc-button.ts +8 -8
  386. package/src/button/mdc-button-label.ts +15 -15
  387. package/src/button/mdc-button.html +12 -12
  388. package/src/button/mdc-button.ts +62 -62
  389. package/src/card/mdc-card-action-buttons.ts +19 -19
  390. package/src/card/mdc-card-action-icons.ts +19 -19
  391. package/src/card/mdc-card-actions/mdc-card-actions.html +3 -3
  392. package/src/card/mdc-card-actions/mdc-card-actions.ts +15 -15
  393. package/src/card/mdc-card-media/mdc-card-media.html +5 -5
  394. package/src/card/mdc-card-media/mdc-card-media.ts +21 -21
  395. package/src/card/mdc-card-primary-action.html +5 -5
  396. package/src/card/mdc-card-primary-action.ts +16 -16
  397. package/src/card/mdc-card.html +3 -3
  398. package/src/card/mdc-card.ts +16 -16
  399. package/src/checkbox/mdc-checkbox.html +12 -12
  400. package/src/checkbox/mdc-checkbox.ts +217 -217
  401. package/src/chips/mdc-chip/mdc-chip.html +24 -24
  402. package/src/chips/mdc-chip-action/enhance-mdc-chip-action.ts +8 -8
  403. package/src/chips/mdc-chip-action/mdc-chip-action.html +25 -25
  404. package/src/chips/mdc-chip-action/mdc-chip-action.ts +143 -143
  405. package/src/chips/mdc-chip-set/mdc-chip-set.html +10 -10
  406. package/src/chips/mdc-chip-set/mdc-chip-set.ts +117 -117
  407. package/src/circular-progress/mdc-circular-progress.html +38 -38
  408. package/src/circular-progress/mdc-circular-progress.ts +91 -91
  409. package/src/circular-progress/styles/_index.scss +1 -1
  410. package/src/circular-progress/styles/mdc-circular-progress.import.scss +1 -1
  411. package/src/circular-progress/styles/mdc-circular-progress.scss +14 -14
  412. package/src/data-table/mdc-data-table-row.ts +24 -24
  413. package/src/data-table/mdc-data-table.html +50 -49
  414. package/src/data-table/mdc-data-table.ts +111 -13
  415. package/src/data-table/styles/_index.scss +1 -0
  416. package/src/data-table/styles/mdc-data-table.import.scss +1 -0
  417. package/src/data-table/styles/mdc-data-table.scss +64 -0
  418. package/src/dialog/mdc-dialog-actions.ts +23 -23
  419. package/src/dialog/mdc-dialog-content.ts +11 -11
  420. package/src/dialog/mdc-dialog-service.ts +83 -80
  421. package/src/dialog/mdc-dialog-title.ts +8 -8
  422. package/src/dialog/mdc-dialog.html +14 -14
  423. package/src/dialog/mdc-dialog.ts +224 -224
  424. package/src/drawer/mdc-drawer-app-content.ts +11 -11
  425. package/src/drawer/mdc-drawer-content.ts +11 -11
  426. package/src/drawer/mdc-drawer-header/mdc-drawer-header.html +5 -5
  427. package/src/drawer/mdc-drawer-header/mdc-drawer-header.ts +18 -18
  428. package/src/drawer/mdc-drawer.html +6 -6
  429. package/src/drawer/mdc-drawer.ts +125 -125
  430. package/src/elevation/mdc-elevation.ts +23 -23
  431. package/src/expandable/mdc-expandable.html +28 -28
  432. package/src/expandable/styles/_icon-variables.scss +3 -3
  433. package/src/expandable/styles/_index.scss +1 -1
  434. package/src/expandable/styles/_mixins.scss +287 -287
  435. package/src/expandable/styles/_variables.scss +17 -17
  436. package/src/expandable/styles/mdc-expandable.import.scss +1 -1
  437. package/src/expandable/styles/mdc-expandable.scss +3 -3
  438. package/src/fab/enhance-mdc-fab.ts +8 -8
  439. package/src/fab/mdc-fab-icon.ts +15 -15
  440. package/src/fab/mdc-fab.html +13 -13
  441. package/src/fab/mdc-fab.ts +50 -50
  442. package/src/floating-label/mdc-floating-label.html +1 -1
  443. package/src/floating-label/mdc-floating-label.ts +44 -44
  444. package/src/form-field/mdc-form-field.html +6 -6
  445. package/src/icon/mdc-icon.html +3 -3
  446. package/src/icon/mdc-icon.ts +11 -11
  447. package/src/icon-button/enhance-mdc-icon-button.ts +8 -8
  448. package/src/icon-button/mdc-icon-button-icon/mdc-icon-button-icon.html +4 -4
  449. package/src/icon-button/mdc-icon-button-icon/mdc-icon-button-icon.ts +29 -29
  450. package/src/icon-button/mdc-icon-button.html +11 -11
  451. package/src/icon-button/mdc-icon-button.ts +69 -69
  452. package/src/image-list/mdc-image-list-item/mdc-image-list-item.html +9 -9
  453. package/src/image-list/mdc-image-list-item/mdc-image-list-item.ts +31 -31
  454. package/src/image-list/mdc-image-list.html +7 -7
  455. package/src/image-list/mdc-image-list.ts +73 -73
  456. package/src/image-list/styles/_index.scss +1 -1
  457. package/src/image-list/styles/mdc-image-list.import.scss +1 -1
  458. package/src/image-list/styles/mdc-image-list.scss +7 -7
  459. package/src/index.ts +17 -3
  460. package/src/layout-grid/mdc-layout-grid-cell/mdc-layout-grid-cell.html +12 -12
  461. package/src/layout-grid/mdc-layout-grid-cell/mdc-layout-grid-cell.ts +49 -49
  462. package/src/layout-grid/mdc-layout-grid-inner.ts +8 -8
  463. package/src/layout-grid/mdc-layout-grid.html +8 -8
  464. package/src/layout-grid/mdc-layout-grid.ts +67 -67
  465. package/src/layout-grid/styles/_index.scss +1 -1
  466. package/src/layout-grid/styles/mdc-layout-grid.import.scss +1 -1
  467. package/src/layout-grid/styles/mdc-layout-grid.scss +11 -11
  468. package/src/line-ripple/mdc-line-ripple.ts +41 -41
  469. package/src/linear-progress/mdc-linear-progress.html +12 -12
  470. package/src/linear-progress/mdc-linear-progress.ts +103 -103
  471. package/src/list/mdc-deprecated-list/mdc-deprecated-list-divider/mdc-deprecated-list-divider.html +4 -4
  472. package/src/list/mdc-deprecated-list/mdc-deprecated-list-divider/mdc-deprecated-list-divider.ts +18 -18
  473. package/src/list/mdc-deprecated-list/mdc-deprecated-list-group.ts +27 -27
  474. package/src/list/mdc-deprecated-list/mdc-deprecated-list-item/enhance-mdc-deprecated-list-item.ts +8 -8
  475. package/src/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-graphic.ts +15 -15
  476. package/src/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-meta.ts +15 -15
  477. package/src/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.html +8 -8
  478. package/src/list/mdc-deprecated-list/mdc-deprecated-list-item-primary-text.ts +11 -11
  479. package/src/list/mdc-deprecated-list/mdc-deprecated-list-item-secondary-text.ts +11 -11
  480. package/src/list/mdc-deprecated-list/mdc-deprecated-list.html +15 -15
  481. package/src/list/mdc-deprecated-list/mdc-deprecated-list.ts +331 -331
  482. package/src/list/mdc-list-divider/mdc-list-divider.html +7 -7
  483. package/src/list/mdc-list-divider/mdc-list-divider.ts +24 -24
  484. package/src/list/mdc-list-group.ts +27 -27
  485. package/src/list/mdc-list-item/enhance-mdc-list-item.ts +8 -8
  486. package/src/list/mdc-list-item/mdc-list-item-leading.ts +34 -34
  487. package/src/list/mdc-list-item/mdc-list-item-trailing.ts +36 -36
  488. package/src/list/mdc-list-item/mdc-list-item.html +13 -13
  489. package/src/list/mdc-list-item-overline-text.ts +8 -8
  490. package/src/list/mdc-list-item-primary-text.ts +11 -11
  491. package/src/list/mdc-list-item-secondary-text.ts +11 -11
  492. package/src/list/mdc-list.html +5 -5
  493. package/src/list/mdc-list.ts +300 -300
  494. package/src/lookup/discardable-promise.ts +24 -24
  495. package/src/lookup/mdc-lookup-configuration.ts +11 -11
  496. package/src/lookup/mdc-lookup.html +27 -27
  497. package/src/lookup/mdc-lookup.ts +5 -5
  498. package/src/mdc-configuration.ts +2 -0
  499. package/src/menu/mdc-menu-selection-group-icon.ts +11 -11
  500. package/src/menu/mdc-menu-selection-group.ts +4 -4
  501. package/src/menu/mdc-menu.html +6 -6
  502. package/src/menu-surface/mdc-menu-surface-anchor.ts +12 -12
  503. package/src/menu-surface/mdc-menu-surface.ts +275 -275
  504. package/src/notched-outline/mdc-notched-outline.html +7 -7
  505. package/src/notched-outline/mdc-notched-outline.ts +60 -60
  506. package/src/radio/mdc-radio.html +9 -9
  507. package/src/radio/mdc-radio.ts +162 -162
  508. package/src/resource.d.ts +22 -22
  509. package/src/ripple/mdc-ripple.ts +114 -114
  510. package/src/segmented-button/mdc-segmented-button-segment/enhance-mdc-segmented-button-segment.ts +8 -8
  511. package/src/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.html +11 -11
  512. package/src/segmented-button/mdc-segmented-button.html +3 -3
  513. package/src/segmented-button/mdc-segmented-button.ts +89 -89
  514. package/src/select/mdc-default-select-configuration.ts +3 -3
  515. package/src/select/mdc-select-adapter-aurelia.ts +213 -213
  516. package/src/select/mdc-select-foundation-aurelia.ts +484 -484
  517. package/src/select/mdc-select-helper-text/mdc-select-helper-text.html +7 -7
  518. package/src/select/mdc-select-helper-text/mdc-select-helper-text.ts +55 -55
  519. package/src/select/mdc-select-icon.ts +41 -41
  520. package/src/select/mdc-select-value-observer.ts +347 -346
  521. package/src/select/mdc-select.html +38 -38
  522. package/src/select/mdc-select.ts +480 -480
  523. package/src/slider/mdc-slider-foundation-aurelia.ts +13 -13
  524. package/src/slider/mdc-slider.html +36 -36
  525. package/src/slider/mdc-slider.ts +409 -409
  526. package/src/slider/styles/_index.scss +1 -1
  527. package/src/slider/styles/mdc-slider.import.scss +1 -1
  528. package/src/slider/styles/mdc-slider.scss +8 -8
  529. package/src/snackbar/mdc-snackbar-service.ts +48 -48
  530. package/src/snackbar/mdc-snackbar.html +14 -14
  531. package/src/snackbar/mdc-snackbar.ts +109 -109
  532. package/src/switch/enhance-mdc-switch.ts +8 -8
  533. package/src/switch/mdc-switch.html +21 -21
  534. package/src/switch/mdc-switch.ts +86 -86
  535. package/src/tab-bar/indicator/mdc-tab-indicator.html +9 -9
  536. package/src/tab-bar/indicator/mdc-tab-indicator.ts +51 -51
  537. package/src/tab-bar/mdc-tab-bar.html +6 -6
  538. package/src/tab-bar/mdc-tab-bar.ts +119 -119
  539. package/src/tab-bar/scroller/mdc-tab-scroller.html +11 -11
  540. package/src/tab-bar/scroller/mdc-tab-scroller.ts +85 -85
  541. package/src/tab-bar/tab/mdc-tab.html +20 -20
  542. package/src/tab-bar/tab/mdc-tab.ts +118 -118
  543. package/src/text-field/enhance-mdc-text-field.ts +12 -12
  544. package/src/text-field/mdc-default-text-field-configuration.ts +3 -3
  545. package/src/text-field/mdc-inputmask.ts +45 -0
  546. package/src/text-field/mdc-text-field-character-counter.ts +32 -32
  547. package/src/text-field/mdc-text-field-helper-line/mdc-text-field-helper-line.html +7 -7
  548. package/src/text-field/mdc-text-field-helper-line/mdc-text-field-helper-line.ts +37 -37
  549. package/src/text-field/mdc-text-field-helper-text/mdc-text-field-helper-text.html +6 -6
  550. package/src/text-field/mdc-text-field-helper-text/mdc-text-field-helper-text.ts +47 -47
  551. package/src/text-field/mdc-text-field-icon.ts +59 -59
  552. package/src/text-field/mdc-text-field.html +29 -29
  553. package/src/text-field/mdc-text-field.ts +535 -535
  554. package/src/tooltip/mdc-default-tooltip-configuration.ts +5 -5
  555. package/src/tooltip/mdc-tooltip-attribute.ts +118 -118
  556. package/src/tooltip/mdc-tooltip.html +7 -7
  557. package/src/tooltip/mdc-tooltip.ts +6 -6
  558. package/src/top-app-bar/enhance-top-app-bar-actions.ts +9 -9
  559. package/src/top-app-bar/mdc-top-app-bar-action-item.ts +12 -12
  560. package/src/top-app-bar/mdc-top-app-bar-fixed-adjust.ts +13 -13
  561. package/src/top-app-bar/mdc-top-app-bar-nav-icon.ts +12 -12
  562. package/src/top-app-bar/mdc-top-app-bar-row.ts +7 -7
  563. package/src/top-app-bar/mdc-top-app-bar-section/mdc-top-app-bar-section.html +3 -3
  564. package/src/top-app-bar/mdc-top-app-bar-section/mdc-top-app-bar-section.ts +9 -9
  565. package/src/top-app-bar/mdc-top-app-bar-title.ts +7 -7
  566. package/src/top-app-bar/mdc-top-app-bar.html +9 -9
  567. package/src/top-app-bar/mdc-top-app-bar.ts +93 -93
  568. package/src/tree-view/i-tree-node.ts +8 -8
  569. package/src/tree-view/mdc-tree-node-meta.ts +11 -11
  570. package/src/tree-view/mdc-tree-node.ts +4 -4
  571. package/src/tree-view/node-filter.ts +12 -12
  572. package/src/tree-view/styles/_index.scss +1 -1
  573. package/src/tree-view/styles/_mixins.scss +145 -145
  574. package/src/tree-view/styles/_variables.scss +8 -8
  575. package/src/tree-view/styles/mdc-tree-view.import.scss +1 -1
  576. package/src/tree-view/styles/mdc-tree-view.scss +3 -3
  577. package/src/typography/mdc-typography.ts +130 -130
  578. package/src/validation/mdc-validation-controller-factory.ts +20 -20
  579. package/src/validation/mdc-validation-result-presenter.ts +36 -36
  580. package/src/validation/validate.ts +32 -0
  581. package/styles/mdc-all.scss +53 -52
  582. package/src/banner/doc/api.json +0 -1106
  583. package/src/base/doc/api.json +0 -1408
  584. package/src/button/doc/api.json +0 -621
  585. package/src/card/doc/api.json +0 -214
  586. package/src/checkbox/doc/api.json +0 -1320
  587. package/src/chips/doc/api.json +0 -2533
  588. package/src/circular-progress/doc/api.json +0 -1085
  589. package/src/data-table/doc/api.json +0 -2064
  590. package/src/dialog/doc/api.json +0 -1667
  591. package/src/drawer/doc/api.json +0 -1416
  592. package/src/elevation/doc/api.json +0 -317
  593. package/src/expandable/doc/api.json +0 -677
  594. package/src/fab/doc/api.json +0 -396
  595. package/src/floating-label/doc/api.json +0 -914
  596. package/src/form-field/doc/api.json +0 -948
  597. package/src/icon/doc/api.json +0 -224
  598. package/src/icon-button/doc/api.json +0 -1109
  599. package/src/image-list/doc/api.json +0 -438
  600. package/src/layout-grid/doc/api.json +0 -600
  601. package/src/line-ripple/doc/api.json +0 -857
  602. package/src/linear-progress/doc/api.json +0 -949
  603. package/src/list/doc/api.json +0 -5725
  604. package/src/lookup/doc/api.json +0 -2370
  605. package/src/menu/doc/api.json +0 -2246
  606. package/src/menu-surface/doc/api.json +0 -1800
  607. package/src/notched-outline/doc/api.json +0 -943
  608. package/src/radio/doc/api.json +0 -1159
  609. package/src/ripple/doc/api.json +0 -1212
  610. package/src/segmented-button/doc/api.json +0 -1937
  611. package/src/select/doc/api.json +0 -4247
  612. package/src/slider/doc/api.json +0 -1954
  613. package/src/snackbar/doc/api.json +0 -1699
  614. package/src/switch/doc/api.json +0 -899
  615. package/src/tab-bar/doc/api.json +0 -4253
  616. package/src/text-field/doc/api.json +0 -3179
  617. package/src/tooltip/doc/api.json +0 -2531
  618. package/src/top-app-bar/doc/api.json +0 -1752
  619. package/src/tree-view/doc/api.json +0 -1710
  620. package/src/typography/doc/api.json +0 -3058
  621. package/src/validation/doc/api.json +0 -371
@@ -1,300 +1,300 @@
1
- import { MdcComponent, booleanAttr } from '../base';
2
- import { MDCListFoundation, MDCListAdapter, strings, cssClasses, MDCListIndex, MDCListSelectionChangeDetail } from '@material/list';
3
- import { closest, matches } from '@material/dom/ponyfill';
4
- import { MdcListItem, IMdcListActionEventDetail } from './mdc-list-item/mdc-list-item';
5
- import { customElement, bindable, inject, CustomElement, slotted } from 'aurelia';
6
- import template from './mdc-list.html?raw';
7
-
8
- strings.ACTION_EVENT = strings.ACTION_EVENT.toLowerCase();
9
- strings.SELECTION_CHANGE_EVENT = strings.SELECTION_CHANGE_EVENT.toLowerCase();
10
-
11
- export const mdcListStrings = {
12
- ITEMS_CHANGED: 'mdclist:itemschanged'
13
- };
14
-
15
- /**
16
- * @selector mdc-list
17
- * @emits mdclist:action | Indicates that a list item with the specified index has been activated
18
- * @emits mdclist:itemschanged | Indicates that the list of items has changed
19
- */
20
- @inject(Element)
21
- @customElement({ name: 'mdc-list', template })
22
- export class MdcList extends MdcComponent<MDCListFoundation> {
23
-
24
- cssClasses = cssClasses;
25
-
26
- /** When enabled, the space and enter keys (or click event) will trigger an single list item to become selected and any other previous selected element to become deselected */
27
- @bindable({ set: booleanAttr })
28
- singleSelection: boolean;
29
- singleSelectionChanged() {
30
- this.foundation?.setSingleSelection(this.singleSelection);
31
- }
32
-
33
- /** Sets the selection logic to apply/remove the mdc-list-item--activated class */
34
- @bindable({ set: booleanAttr })
35
- activated: boolean;
36
- activatedChanged() {
37
- this.foundation?.setUseActivatedClass(this.activated);
38
- }
39
-
40
- @slotted({ query: 'mdc-list-item' })
41
- itemElements: HTMLElement[];
42
- itemsChanged() {
43
- this.emit(mdcListStrings.ITEMS_CHANGED, { items: this.itemElements }, true);
44
- }
45
-
46
- get items(): MdcListItem[] {
47
- return (this.itemElements ?? []).map(x => CustomElement.for<MdcListItem>(x).viewModel);
48
- }
49
-
50
- @bindable({ set: booleanAttr })
51
- typeahead: boolean;
52
- typeaheadChanged(hasTypeahead: boolean) {
53
- this.foundation?.setHasTypeahead(hasTypeahead);
54
- }
55
-
56
- /** Prevent list items receive styles for hover, focus, and press states (including the ripple) */
57
- @bindable({ set: booleanAttr })
58
- nonInteractive: boolean;
59
-
60
- /** Sets the list to allow the up arrow on the first element to focus the last element of the list and vice versa */
61
- @bindable({ set: booleanAttr })
62
- wrapFocus: boolean;
63
- wrapFocusChanged() {
64
- this.foundation?.setWrapFocus(this.wrapFocus);
65
- }
66
-
67
- initialSyncWithDOM() {
68
- this.singleSelectionChanged();
69
- this.activatedChanged();
70
- this.typeaheadChanged(this.typeahead);
71
- this.wrapFocusChanged();
72
- this.layout();
73
- this.initializeListType();
74
- }
75
-
76
- get listElements(): Element[] {
77
- return Array.from(this.root.querySelectorAll(`.${cssClasses.LIST_ITEM_CLASS}`));
78
- }
79
-
80
- /**
81
- * Extracts the primary text from a list item.
82
- * @param item The list item element.
83
- * @return The primary text in the element.
84
- */
85
- getPrimaryText(item: Element): string {
86
- const primaryText = item.querySelector(`.${cssClasses.LIST_ITEM_PRIMARY_TEXT_CLASS}`);
87
- if (primaryText) {
88
- return primaryText.textContent ?? '';
89
- }
90
-
91
- const singleLineText = item.querySelector(`.${cssClasses.LIST_ITEM_TEXT_CLASS}`);
92
- return singleLineText?.textContent ?? '';
93
- }
94
-
95
- getDefaultFoundation() {
96
- // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
97
- // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
98
- const adapter: MDCListAdapter = {
99
- addClassForElementIndex: (index, className) => {
100
- const element = this.listElements[index];
101
- if (element) {
102
- element.classList.add(className);
103
- }
104
- },
105
- focusItemAtIndex: (index) => {
106
- const element = this.listElements[index] as HTMLElement | undefined;
107
- if (element) {
108
- element.focus();
109
- }
110
- },
111
- getAttributeForElementIndex: (index, attr) => this.listElements[index].getAttribute(attr),
112
- getFocusedElementIndex: () => this.listElements.indexOf(document.activeElement!),
113
- getListItemCount: () => this.listElements.length,
114
- getPrimaryTextAtIndex: (index) => this.getPrimaryText(this.listElements[index]),
115
- hasCheckboxAtIndex: (index) => {
116
- const listItem = this.listElements[index];
117
- return !!listItem.querySelector(strings.CHECKBOX_SELECTOR);
118
- },
119
- hasRadioAtIndex: (index) => {
120
- const listItem = this.listElements[index];
121
- return !!listItem.querySelector(strings.RADIO_SELECTOR);
122
- },
123
- isCheckboxCheckedAtIndex: (index) => {
124
- const listItem = this.listElements[index];
125
- const toggleEl = listItem.querySelector<HTMLInputElement>(strings.CHECKBOX_SELECTOR);
126
- return toggleEl!.checked;
127
- },
128
- isFocusInsideList: () => {
129
- return this.root !== document.activeElement && this.root.contains(document.activeElement);
130
- },
131
- isRootFocused: () => document.activeElement === this.root,
132
- listItemAtIndexHasClass: (index, className) => this.listElements[index].classList.contains(className),
133
- notifyAction: (index) => {
134
- const listItem = this.listElements[index];
135
- if (!listItem.hasAttribute('no-list-action')) {
136
- const data = CustomElement.for<MdcListItem>(listItem).viewModel.value;
137
- this.emit<IMdcListActionEventDetail>(strings.ACTION_EVENT, { index, data }, /** shouldBubble */ true);
138
- }
139
- },
140
- notifySelectionChange: (changedIndices: number[]) => {
141
- this.emit<MDCListSelectionChangeDetail>(strings.SELECTION_CHANGE_EVENT,
142
- { changedIndices }, /** shouldBubble */ true);
143
- },
144
- removeClassForElementIndex: (index, className) => {
145
- const element = this.listElements[index];
146
- if (element) {
147
- element.classList.remove(className);
148
- }
149
- },
150
- setAttributeForElementIndex: (index, attr, value) => {
151
- const element = this.listElements[index];
152
- if (element) {
153
- element.setAttribute(attr, value);
154
- }
155
- },
156
- setCheckedCheckboxOrRadioAtIndex: (index, isChecked) => {
157
- const listItem = this.listElements[index];
158
- const toggleEl = listItem.querySelector<HTMLInputElement>(strings.CHECKBOX_RADIO_SELECTOR);
159
- if (toggleEl?.disabled) {
160
- return;
161
- }
162
- toggleEl!.checked = isChecked;
163
-
164
- const event = document.createEvent('Event');
165
- event.initEvent('change', true, true);
166
- toggleEl!.dispatchEvent(event);
167
- },
168
- setTabIndexForListItemChildren: (listItemIndex, tabIndexValue) => {
169
- const element = this.listElements[listItemIndex];
170
- const listItemChildren: Element[] =
171
- [].slice.call(element.querySelectorAll(strings.CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));
172
- listItemChildren.forEach((el) => el.setAttribute('tabindex', tabIndexValue));
173
- },
174
- };
175
- return new MDCListFoundation(adapter);
176
- }
177
-
178
- /**
179
- * @hidden
180
- * Used to figure out which list item this event is targetting. Or returns -1 if
181
- * there is no list item
182
- */
183
- private getListItemIndex_(evt: Event) {
184
- const eventTarget = evt.target as Element;
185
- const nearestParent = closest(eventTarget, `.${cssClasses.LIST_ITEM_CLASS}, .${cssClasses.ROOT}`);
186
-
187
- // Get the index of the element if it is a list item.
188
- if (nearestParent && matches(nearestParent, `.${cssClasses.LIST_ITEM_CLASS}`)) {
189
- return this.listElements.indexOf(nearestParent);
190
- }
191
-
192
- return -1;
193
- }
194
-
195
- /**
196
- * @hidden
197
- * Used to figure out which element was clicked before sending the event to the foundation.
198
- */
199
- handleFocusInEvent_(evt: FocusEvent) {
200
- const index = this.getListItemIndex_(evt);
201
- this.foundation?.handleFocusIn(index);
202
- }
203
-
204
- /**
205
- * @hidden
206
- * Used to figure out which element was clicked before sending the event to the foundation.
207
- */
208
- handleFocusOutEvent_(evt: FocusEvent) {
209
- const index = this.getListItemIndex_(evt);
210
- this.foundation?.handleFocusOut(index);
211
- }
212
-
213
- /**
214
- * @hidden
215
- * Used to figure out which element was focused when keydown event occurred before sending the event to the
216
- * foundation.
217
- */
218
- handleKeydownEvent_(evt: KeyboardEvent) {
219
- const index = this.getListItemIndex_(evt);
220
- const target = evt.target as Element;
221
- if (!target.hasAttribute('not-selectable')) {
222
- this.foundation?.handleKeydown(evt, target.classList.contains(cssClasses.LIST_ITEM_CLASS), index);
223
- }
224
- return true;
225
- }
226
-
227
- /**
228
- * @hidden
229
- * Used to figure out which element was clicked before sending the event to the foundation.
230
- */
231
- handleClickEvent_(evt: MouseEvent) {
232
- const index = this.getListItemIndex_(evt);
233
- const target = evt.target as Element;
234
- // Toggle the checkbox only if it's not the target of the event, or the checkbox will have 2 change events.
235
- const isCheckboxAlreadyUpdatedInAdapter = matches(target, strings.CHECKBOX_RADIO_SELECTOR);
236
- this.foundation?.handleClick(index, isCheckboxAlreadyUpdatedInAdapter, evt);
237
- return true;
238
- }
239
-
240
- /**
241
- * @hidden
242
- * @return Whether typeahead is currently matching a user-specified prefix.
243
- */
244
- get typeaheadInProgress(): boolean {
245
- return this.foundation!.isTypeaheadInProgress();
246
- }
247
-
248
- /**
249
- * @hidden
250
- * Given the next desired character from the user, adds it to the typeahead
251
- * buffer. Then, attempts to find the next option matching the buffer. Wraps
252
- * around if at the end of options.
253
- *
254
- * @param nextChar The next character to add to the prefix buffer.
255
- * @param startingIndex The index from which to start matching. Defaults to
256
- * the currently focused index.
257
- * @return The index of the matched item.
258
- */
259
- typeaheadMatchItem(nextChar: string, startingIndex?: number): number {
260
- return this.foundation!.typeaheadMatchItem(nextChar, startingIndex, /** skipFocus */ true);
261
- }
262
-
263
- layout() {
264
- this.foundation?.layout();
265
- }
266
-
267
- get selectedIndex(): MDCListIndex {
268
- return this.foundation!.getSelectedIndex();
269
- }
270
-
271
- set selectedIndex(index: MDCListIndex) {
272
- this.foundation?.setSelectedIndex(index);
273
- }
274
-
275
- /**
276
- * @hidden
277
- * Initialize selectedIndex value based on pre-selected checkbox list items, single selection or radio.
278
- */
279
- initializeListType() {
280
- const checkboxListItems = this.root.querySelectorAll(strings.ARIA_ROLE_CHECKBOX_SELECTOR);
281
- const radioSelectedListItem = this.root.querySelector(strings.ARIA_CHECKED_RADIO_SELECTOR);
282
-
283
- if (checkboxListItems.length) {
284
- const preselectedItems = this.root.querySelectorAll(strings.ARIA_CHECKED_CHECKBOX_SELECTOR);
285
- this.selectedIndex = [].map.call(preselectedItems, (listItem: Element) => this.listElements.indexOf(listItem)) as number[];
286
- } else if (radioSelectedListItem) {
287
- this.selectedIndex = this.listElements.indexOf(radioSelectedListItem);
288
- }
289
- }
290
- }
291
-
292
- /** @hidden */
293
- export interface IMdcListElement extends HTMLElement {
294
- $au: {
295
- 'au:resource:custom-element': {
296
- viewModel: MdcList;
297
- };
298
- };
299
- }
300
-
1
+ import { MdcComponent, booleanAttr } from '../base';
2
+ import { MDCListFoundation, MDCListAdapter, strings, cssClasses, MDCListIndex, MDCListSelectionChangeDetail } from '@material/list';
3
+ import { closest, matches } from '@material/dom/ponyfill';
4
+ import { MdcListItem, IMdcListActionEventDetail } from './mdc-list-item/mdc-list-item';
5
+ import { customElement, bindable, inject, CustomElement, slotted } from 'aurelia';
6
+ import template from './mdc-list.html?raw';
7
+
8
+ strings.ACTION_EVENT = strings.ACTION_EVENT.toLowerCase();
9
+ strings.SELECTION_CHANGE_EVENT = strings.SELECTION_CHANGE_EVENT.toLowerCase();
10
+
11
+ export const mdcListStrings = {
12
+ ITEMS_CHANGED: 'mdclist:itemschanged'
13
+ };
14
+
15
+ /**
16
+ * @selector mdc-list
17
+ * @emits mdclist:action | Indicates that a list item with the specified index has been activated
18
+ * @emits mdclist:itemschanged | Indicates that the list of items has changed
19
+ */
20
+ @inject(Element)
21
+ @customElement({ name: 'mdc-list', template })
22
+ export class MdcList extends MdcComponent<MDCListFoundation> {
23
+
24
+ cssClasses = cssClasses;
25
+
26
+ /** When enabled, the space and enter keys (or click event) will trigger an single list item to become selected and any other previous selected element to become deselected */
27
+ @bindable({ set: booleanAttr })
28
+ singleSelection: boolean;
29
+ singleSelectionChanged() {
30
+ this.foundation?.setSingleSelection(this.singleSelection);
31
+ }
32
+
33
+ /** Sets the selection logic to apply/remove the mdc-list-item--activated class */
34
+ @bindable({ set: booleanAttr })
35
+ activated: boolean;
36
+ activatedChanged() {
37
+ this.foundation?.setUseActivatedClass(this.activated);
38
+ }
39
+
40
+ @slotted({ query: 'mdc-list-item' })
41
+ itemElements: HTMLElement[];
42
+ itemsChanged() {
43
+ this.emit(mdcListStrings.ITEMS_CHANGED, { items: this.itemElements }, true);
44
+ }
45
+
46
+ get items(): MdcListItem[] {
47
+ return (this.itemElements ?? []).map(x => CustomElement.for<MdcListItem>(x).viewModel);
48
+ }
49
+
50
+ @bindable({ set: booleanAttr })
51
+ typeahead: boolean;
52
+ typeaheadChanged(hasTypeahead: boolean) {
53
+ this.foundation?.setHasTypeahead(hasTypeahead);
54
+ }
55
+
56
+ /** Prevent list items receive styles for hover, focus, and press states (including the ripple) */
57
+ @bindable({ set: booleanAttr })
58
+ nonInteractive: boolean;
59
+
60
+ /** Sets the list to allow the up arrow on the first element to focus the last element of the list and vice versa */
61
+ @bindable({ set: booleanAttr })
62
+ wrapFocus: boolean;
63
+ wrapFocusChanged() {
64
+ this.foundation?.setWrapFocus(this.wrapFocus);
65
+ }
66
+
67
+ initialSyncWithDOM() {
68
+ this.singleSelectionChanged();
69
+ this.activatedChanged();
70
+ this.typeaheadChanged(this.typeahead);
71
+ this.wrapFocusChanged();
72
+ this.layout();
73
+ this.initializeListType();
74
+ }
75
+
76
+ get listElements(): Element[] {
77
+ return Array.from(this.root.querySelectorAll(`.${cssClasses.LIST_ITEM_CLASS}`));
78
+ }
79
+
80
+ /**
81
+ * Extracts the primary text from a list item.
82
+ * @param item The list item element.
83
+ * @return The primary text in the element.
84
+ */
85
+ getPrimaryText(item: Element): string {
86
+ const primaryText = item.querySelector(`.${cssClasses.LIST_ITEM_PRIMARY_TEXT_CLASS}`);
87
+ if (primaryText) {
88
+ return primaryText.textContent ?? '';
89
+ }
90
+
91
+ const singleLineText = item.querySelector(`.${cssClasses.LIST_ITEM_TEXT_CLASS}`);
92
+ return singleLineText?.textContent ?? '';
93
+ }
94
+
95
+ getDefaultFoundation() {
96
+ // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
97
+ // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
98
+ const adapter: MDCListAdapter = {
99
+ addClassForElementIndex: (index, className) => {
100
+ const element = this.listElements[index];
101
+ if (element) {
102
+ element.classList.add(className);
103
+ }
104
+ },
105
+ focusItemAtIndex: (index) => {
106
+ const element = this.listElements[index] as HTMLElement | undefined;
107
+ if (element) {
108
+ element.focus();
109
+ }
110
+ },
111
+ getAttributeForElementIndex: (index, attr) => this.listElements[index].getAttribute(attr),
112
+ getFocusedElementIndex: () => this.listElements.indexOf(document.activeElement!),
113
+ getListItemCount: () => this.listElements.length,
114
+ getPrimaryTextAtIndex: (index) => this.getPrimaryText(this.listElements[index]),
115
+ hasCheckboxAtIndex: (index) => {
116
+ const listItem = this.listElements[index];
117
+ return !!listItem.querySelector(strings.CHECKBOX_SELECTOR);
118
+ },
119
+ hasRadioAtIndex: (index) => {
120
+ const listItem = this.listElements[index];
121
+ return !!listItem.querySelector(strings.RADIO_SELECTOR);
122
+ },
123
+ isCheckboxCheckedAtIndex: (index) => {
124
+ const listItem = this.listElements[index];
125
+ const toggleEl = listItem.querySelector<HTMLInputElement>(strings.CHECKBOX_SELECTOR);
126
+ return toggleEl!.checked;
127
+ },
128
+ isFocusInsideList: () => {
129
+ return this.root !== document.activeElement && this.root.contains(document.activeElement);
130
+ },
131
+ isRootFocused: () => document.activeElement === this.root,
132
+ listItemAtIndexHasClass: (index, className) => this.listElements[index].classList.contains(className),
133
+ notifyAction: (index) => {
134
+ const listItem = this.listElements[index];
135
+ if (!listItem.hasAttribute('no-list-action')) {
136
+ const data = CustomElement.for<MdcListItem>(listItem).viewModel.value;
137
+ this.emit<IMdcListActionEventDetail>(strings.ACTION_EVENT, { index, data }, /** shouldBubble */ true);
138
+ }
139
+ },
140
+ notifySelectionChange: (changedIndices: number[]) => {
141
+ this.emit<MDCListSelectionChangeDetail>(strings.SELECTION_CHANGE_EVENT,
142
+ { changedIndices }, /** shouldBubble */ true);
143
+ },
144
+ removeClassForElementIndex: (index, className) => {
145
+ const element = this.listElements[index];
146
+ if (element) {
147
+ element.classList.remove(className);
148
+ }
149
+ },
150
+ setAttributeForElementIndex: (index, attr, value) => {
151
+ const element = this.listElements[index];
152
+ if (element) {
153
+ element.setAttribute(attr, value);
154
+ }
155
+ },
156
+ setCheckedCheckboxOrRadioAtIndex: (index, isChecked) => {
157
+ const listItem = this.listElements[index];
158
+ const toggleEl = listItem.querySelector<HTMLInputElement>(strings.CHECKBOX_RADIO_SELECTOR);
159
+ if (toggleEl?.disabled) {
160
+ return;
161
+ }
162
+ toggleEl!.checked = isChecked;
163
+
164
+ const event = document.createEvent('Event');
165
+ event.initEvent('change', true, true);
166
+ toggleEl!.dispatchEvent(event);
167
+ },
168
+ setTabIndexForListItemChildren: (listItemIndex, tabIndexValue) => {
169
+ const element = this.listElements[listItemIndex];
170
+ const listItemChildren: Element[] =
171
+ [].slice.call(element.querySelectorAll(strings.CHILD_ELEMENTS_TO_TOGGLE_TABINDEX));
172
+ listItemChildren.forEach((el) => el.setAttribute('tabindex', tabIndexValue));
173
+ },
174
+ };
175
+ return new MDCListFoundation(adapter);
176
+ }
177
+
178
+ /**
179
+ * @hidden
180
+ * Used to figure out which list item this event is targetting. Or returns -1 if
181
+ * there is no list item
182
+ */
183
+ private getListItemIndex_(evt: Event) {
184
+ const eventTarget = evt.target as Element;
185
+ const nearestParent = closest(eventTarget, `.${cssClasses.LIST_ITEM_CLASS}, .${cssClasses.ROOT}`);
186
+
187
+ // Get the index of the element if it is a list item.
188
+ if (nearestParent && matches(nearestParent, `.${cssClasses.LIST_ITEM_CLASS}`)) {
189
+ return this.listElements.indexOf(nearestParent);
190
+ }
191
+
192
+ return -1;
193
+ }
194
+
195
+ /**
196
+ * @hidden
197
+ * Used to figure out which element was clicked before sending the event to the foundation.
198
+ */
199
+ handleFocusInEvent_(evt: FocusEvent) {
200
+ const index = this.getListItemIndex_(evt);
201
+ this.foundation?.handleFocusIn(index);
202
+ }
203
+
204
+ /**
205
+ * @hidden
206
+ * Used to figure out which element was clicked before sending the event to the foundation.
207
+ */
208
+ handleFocusOutEvent_(evt: FocusEvent) {
209
+ const index = this.getListItemIndex_(evt);
210
+ this.foundation?.handleFocusOut(index);
211
+ }
212
+
213
+ /**
214
+ * @hidden
215
+ * Used to figure out which element was focused when keydown event occurred before sending the event to the
216
+ * foundation.
217
+ */
218
+ handleKeydownEvent_(evt: KeyboardEvent) {
219
+ const index = this.getListItemIndex_(evt);
220
+ const target = evt.target as Element;
221
+ if (!target.hasAttribute('not-selectable')) {
222
+ this.foundation?.handleKeydown(evt, target.classList.contains(cssClasses.LIST_ITEM_CLASS), index);
223
+ }
224
+ return true;
225
+ }
226
+
227
+ /**
228
+ * @hidden
229
+ * Used to figure out which element was clicked before sending the event to the foundation.
230
+ */
231
+ handleClickEvent_(evt: MouseEvent) {
232
+ const index = this.getListItemIndex_(evt);
233
+ const target = evt.target as Element;
234
+ // Toggle the checkbox only if it's not the target of the event, or the checkbox will have 2 change events.
235
+ const isCheckboxAlreadyUpdatedInAdapter = matches(target, strings.CHECKBOX_RADIO_SELECTOR);
236
+ this.foundation?.handleClick(index, isCheckboxAlreadyUpdatedInAdapter, evt);
237
+ return true;
238
+ }
239
+
240
+ /**
241
+ * @hidden
242
+ * @return Whether typeahead is currently matching a user-specified prefix.
243
+ */
244
+ get typeaheadInProgress(): boolean {
245
+ return this.foundation!.isTypeaheadInProgress();
246
+ }
247
+
248
+ /**
249
+ * @hidden
250
+ * Given the next desired character from the user, adds it to the typeahead
251
+ * buffer. Then, attempts to find the next option matching the buffer. Wraps
252
+ * around if at the end of options.
253
+ *
254
+ * @param nextChar The next character to add to the prefix buffer.
255
+ * @param startingIndex The index from which to start matching. Defaults to
256
+ * the currently focused index.
257
+ * @return The index of the matched item.
258
+ */
259
+ typeaheadMatchItem(nextChar: string, startingIndex?: number): number {
260
+ return this.foundation!.typeaheadMatchItem(nextChar, startingIndex, /** skipFocus */ true);
261
+ }
262
+
263
+ layout() {
264
+ this.foundation?.layout();
265
+ }
266
+
267
+ get selectedIndex(): MDCListIndex {
268
+ return this.foundation!.getSelectedIndex();
269
+ }
270
+
271
+ set selectedIndex(index: MDCListIndex) {
272
+ this.foundation?.setSelectedIndex(index);
273
+ }
274
+
275
+ /**
276
+ * @hidden
277
+ * Initialize selectedIndex value based on pre-selected checkbox list items, single selection or radio.
278
+ */
279
+ initializeListType() {
280
+ const checkboxListItems = this.root.querySelectorAll(strings.ARIA_ROLE_CHECKBOX_SELECTOR);
281
+ const radioSelectedListItem = this.root.querySelector(strings.ARIA_CHECKED_RADIO_SELECTOR);
282
+
283
+ if (checkboxListItems.length) {
284
+ const preselectedItems = this.root.querySelectorAll(strings.ARIA_CHECKED_CHECKBOX_SELECTOR);
285
+ this.selectedIndex = [].map.call(preselectedItems, (listItem: Element) => this.listElements.indexOf(listItem)) as number[];
286
+ } else if (radioSelectedListItem) {
287
+ this.selectedIndex = this.listElements.indexOf(radioSelectedListItem);
288
+ }
289
+ }
290
+ }
291
+
292
+ /** @hidden */
293
+ export interface IMdcListElement extends HTMLElement {
294
+ $au: {
295
+ 'au:resource:custom-element': {
296
+ viewModel: MdcList;
297
+ };
298
+ };
299
+ }
300
+
@@ -1,24 +1,24 @@
1
- /**
2
- * A wrapper-promise which rejects when discarded
3
- */
4
- export class DiscardablePromise<T> implements PromiseLike<T> {
5
- constructor(private promise: Promise<T>) { }
6
-
7
- static discarded = Symbol('discarded');
8
-
9
- isDiscarded: boolean;
10
-
11
- then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: unknown) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2> {
12
- return this.promise.then(async x => {
13
- if (this.isDiscarded) {
14
- return Promise.reject(DiscardablePromise.discarded);
15
- } else {
16
- return Promise.resolve(x);
17
- }
18
- }).then(onfulfilled, onrejected);
19
- }
20
-
21
- discard() {
22
- this.isDiscarded = true;
23
- }
24
- }
1
+ /**
2
+ * A wrapper-promise which rejects when discarded
3
+ */
4
+ export class DiscardablePromise<T> implements PromiseLike<T> {
5
+ constructor(private promise: Promise<T>) { }
6
+
7
+ static discarded = Symbol('discarded');
8
+
9
+ isDiscarded: boolean;
10
+
11
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: unknown) => TResult2 | PromiseLike<TResult2>): PromiseLike<TResult1 | TResult2> {
12
+ return this.promise.then(async x => {
13
+ if (this.isDiscarded) {
14
+ return Promise.reject(DiscardablePromise.discarded);
15
+ } else {
16
+ return Promise.resolve(x);
17
+ }
18
+ }).then(onfulfilled, onrejected);
19
+ }
20
+
21
+ discard() {
22
+ this.isDiscarded = true;
23
+ }
24
+ }