@aurelia-mdc-web/all 9.3.3-au2 → 9.3.4-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 (326) hide show
  1. package/dist/alert/alert-configuration.js +5 -9
  2. package/dist/alert/alert-configuration.js.map +1 -1
  3. package/dist/alert/alert-modal/alert-modal.js +8 -11
  4. package/dist/alert/alert-modal/alert-modal.js.map +1 -1
  5. package/dist/alert/alert-modal/alert-modal.scss +10 -0
  6. package/dist/alert/alert-modal/i-alert-modal-payload.js +1 -5
  7. package/dist/alert/alert-modal/i-alert-modal-payload.js.map +1 -1
  8. package/dist/alert/alert-service.js +23 -27
  9. package/dist/alert/alert-service.js.map +1 -1
  10. package/dist/alert/decorators/confirm-action.js +1 -4
  11. package/dist/alert/decorators/confirm-action.js.map +1 -1
  12. package/dist/alert/decorators/using-progress.js +1 -4
  13. package/dist/alert/decorators/using-progress.js.map +1 -1
  14. package/dist/alert/exceptions-tracker.js +1 -5
  15. package/dist/alert/exceptions-tracker.js.map +1 -1
  16. package/dist/alert/global-progress/global-progress.js +24 -27
  17. package/dist/alert/global-progress/global-progress.js.map +1 -1
  18. package/dist/alert/global-progress/global-progress.scss +38 -0
  19. package/dist/alert/prompt-dialog/prompt-dialog.js +9 -12
  20. package/dist/alert/prompt-dialog/prompt-dialog.js.map +1 -1
  21. package/dist/banner/mdc-banner.js +42 -45
  22. package/dist/banner/mdc-banner.js.map +1 -1
  23. package/dist/base/attributes/mdc-focus-trap.js +22 -25
  24. package/dist/base/attributes/mdc-focus-trap.js.map +1 -1
  25. package/dist/base/elements/i-validated-element.js +1 -2
  26. package/dist/base/elements/mdc-promisify-reference.js +13 -16
  27. package/dist/base/elements/mdc-promisify-reference.js.map +1 -1
  28. package/dist/base/index.js +9 -21
  29. package/dist/base/index.js.map +1 -1
  30. package/dist/base/interceptors.js +5 -12
  31. package/dist/base/interceptors.js.map +1 -1
  32. package/dist/base/material-palette.js +1 -4
  33. package/dist/base/material-palette.js.map +1 -1
  34. package/dist/base/mdc-component.js +1 -5
  35. package/dist/base/mdc-component.js.map +1 -1
  36. package/dist/base/next-element.js +1 -4
  37. package/dist/base/next-element.js.map +1 -1
  38. package/dist/button/enhance-mdc-button.js +6 -9
  39. package/dist/button/enhance-mdc-button.js.map +1 -1
  40. package/dist/button/mdc-button-label.js +6 -9
  41. package/dist/button/mdc-button-label.js.map +1 -1
  42. package/dist/button/mdc-button.js +27 -30
  43. package/dist/button/mdc-button.js.map +1 -1
  44. package/dist/card/mdc-card-action-buttons.js +6 -9
  45. package/dist/card/mdc-card-action-buttons.js.map +1 -1
  46. package/dist/card/mdc-card-action-icons.js +6 -9
  47. package/dist/card/mdc-card-action-icons.js.map +1 -1
  48. package/dist/card/mdc-card-actions/mdc-card-actions.js +12 -15
  49. package/dist/card/mdc-card-actions/mdc-card-actions.js.map +1 -1
  50. package/dist/card/mdc-card-media/mdc-card-media.js +15 -18
  51. package/dist/card/mdc-card-media/mdc-card-media.js.map +1 -1
  52. package/dist/card/mdc-card-primary-action.js +12 -15
  53. package/dist/card/mdc-card-primary-action.js.map +1 -1
  54. package/dist/card/mdc-card.js +12 -15
  55. package/dist/card/mdc-card.js.map +1 -1
  56. package/dist/checkbox/mdc-checkbox.js +35 -38
  57. package/dist/checkbox/mdc-checkbox.js.map +1 -1
  58. package/dist/chips/mdc-chip/mdc-chip.js +34 -37
  59. package/dist/chips/mdc-chip/mdc-chip.js.map +1 -1
  60. package/dist/chips/mdc-chip-action/enhance-mdc-chip-action.js +6 -9
  61. package/dist/chips/mdc-chip-action/enhance-mdc-chip-action.js.map +1 -1
  62. package/dist/chips/mdc-chip-action/mdc-chip-action.js +37 -40
  63. package/dist/chips/mdc-chip-action/mdc-chip-action.js.map +1 -1
  64. package/dist/chips/mdc-chip-set/mdc-chip-set.js +24 -27
  65. package/dist/chips/mdc-chip-set/mdc-chip-set.js.map +1 -1
  66. package/dist/chips/styles/_index.scss +1 -0
  67. package/dist/chips/styles/mdc-chips.import.scss +1 -0
  68. package/dist/chips/styles/mdc-chips.scss +11 -0
  69. package/dist/circular-progress/mdc-circular-progress.js +22 -25
  70. package/dist/circular-progress/mdc-circular-progress.js.map +1 -1
  71. package/dist/circular-progress/styles/_index.scss +1 -0
  72. package/dist/circular-progress/styles/mdc-circular-progress.import.scss +1 -0
  73. package/dist/circular-progress/styles/mdc-circular-progress.scss +14 -0
  74. package/dist/data-table/mdc-data-table-row.js +10 -13
  75. package/dist/data-table/mdc-data-table-row.js.map +1 -1
  76. package/dist/data-table/mdc-data-table.js +88 -91
  77. package/dist/data-table/mdc-data-table.js.map +1 -1
  78. package/dist/data-table/styles/_index.scss +1 -0
  79. package/dist/data-table/styles/mdc-data-table.import.scss +1 -0
  80. package/dist/data-table/styles/mdc-data-table.scss +64 -0
  81. package/dist/dialog/mdc-dialog-actions.js +10 -13
  82. package/dist/dialog/mdc-dialog-actions.js.map +1 -1
  83. package/dist/dialog/mdc-dialog-content.js +6 -9
  84. package/dist/dialog/mdc-dialog-content.js.map +1 -1
  85. package/dist/dialog/mdc-dialog-service.js +13 -17
  86. package/dist/dialog/mdc-dialog-service.js.map +1 -1
  87. package/dist/dialog/mdc-dialog-title.js +6 -9
  88. package/dist/dialog/mdc-dialog-title.js.map +1 -1
  89. package/dist/dialog/mdc-dialog.js +46 -49
  90. package/dist/dialog/mdc-dialog.js.map +1 -1
  91. package/dist/drawer/mdc-drawer-app-content.js +6 -9
  92. package/dist/drawer/mdc-drawer-app-content.js.map +1 -1
  93. package/dist/drawer/mdc-drawer-content.js +6 -9
  94. package/dist/drawer/mdc-drawer-content.js.map +1 -1
  95. package/dist/drawer/mdc-drawer-header/mdc-drawer-header.js +14 -17
  96. package/dist/drawer/mdc-drawer-header/mdc-drawer-header.js.map +1 -1
  97. package/dist/drawer/mdc-drawer.js +21 -24
  98. package/dist/drawer/mdc-drawer.js.map +1 -1
  99. package/dist/drawer/styles/_index.scss +1 -0
  100. package/dist/drawer/styles/mdc-drawer.import.scss +1 -0
  101. package/dist/drawer/styles/mdc-drawer.scss +0 -0
  102. package/dist/elevation/mdc-elevation.js +6 -9
  103. package/dist/elevation/mdc-elevation.js.map +1 -1
  104. package/dist/expandable/mdc-expandable.js +17 -20
  105. package/dist/expandable/mdc-expandable.js.map +1 -1
  106. package/dist/expandable/styles/_icon-variables.scss +3 -0
  107. package/dist/expandable/styles/_index.scss +1 -0
  108. package/dist/expandable/styles/_mixins.scss +287 -0
  109. package/dist/expandable/styles/_variables.scss +17 -0
  110. package/dist/expandable/styles/mdc-expandable.import.scss +1 -0
  111. package/dist/expandable/styles/mdc-expandable.scss +3 -0
  112. package/dist/fab/enhance-mdc-fab.js +6 -9
  113. package/dist/fab/enhance-mdc-fab.js.map +1 -1
  114. package/dist/fab/mdc-fab-icon.js +6 -9
  115. package/dist/fab/mdc-fab-icon.js.map +1 -1
  116. package/dist/fab/mdc-fab.js +30 -33
  117. package/dist/fab/mdc-fab.js.map +1 -1
  118. package/dist/floating-label/mdc-floating-label.js +13 -16
  119. package/dist/floating-label/mdc-floating-label.js.map +1 -1
  120. package/dist/form-field/mdc-form-field.js +24 -27
  121. package/dist/form-field/mdc-form-field.js.map +1 -1
  122. package/dist/icon/mdc-icon.js +7 -10
  123. package/dist/icon/mdc-icon.js.map +1 -1
  124. package/dist/icon-button/enhance-mdc-icon-button.js +6 -9
  125. package/dist/icon-button/enhance-mdc-icon-button.js.map +1 -1
  126. package/dist/icon-button/mdc-icon-button-icon/mdc-icon-button-icon.js +15 -18
  127. package/dist/icon-button/mdc-icon-button-icon/mdc-icon-button-icon.js.map +1 -1
  128. package/dist/icon-button/mdc-icon-button.js +25 -28
  129. package/dist/icon-button/mdc-icon-button.js.map +1 -1
  130. package/dist/image-list/mdc-image-list-item/mdc-image-list-item.js +19 -22
  131. package/dist/image-list/mdc-image-list-item/mdc-image-list-item.js.map +1 -1
  132. package/dist/image-list/mdc-image-list.js +18 -21
  133. package/dist/image-list/mdc-image-list.js.map +1 -1
  134. package/dist/image-list/styles/_index.scss +1 -0
  135. package/dist/image-list/styles/mdc-image-list.import.scss +1 -0
  136. package/dist/image-list/styles/mdc-image-list.scss +7 -0
  137. package/dist/index.js +151 -297
  138. package/dist/index.js.map +1 -1
  139. package/dist/layout-grid/mdc-layout-grid-cell/mdc-layout-grid-cell.js +33 -36
  140. package/dist/layout-grid/mdc-layout-grid-cell/mdc-layout-grid-cell.js.map +1 -1
  141. package/dist/layout-grid/mdc-layout-grid-inner.js +6 -9
  142. package/dist/layout-grid/mdc-layout-grid-inner.js.map +1 -1
  143. package/dist/layout-grid/mdc-layout-grid.js +30 -33
  144. package/dist/layout-grid/mdc-layout-grid.js.map +1 -1
  145. package/dist/layout-grid/styles/_index.scss +1 -0
  146. package/dist/layout-grid/styles/mdc-layout-grid.import.scss +1 -0
  147. package/dist/layout-grid/styles/mdc-layout-grid.scss +11 -0
  148. package/dist/line-ripple/mdc-line-ripple.js +10 -13
  149. package/dist/line-ripple/mdc-line-ripple.js.map +1 -1
  150. package/dist/linear-progress/mdc-linear-progress.js +23 -26
  151. package/dist/linear-progress/mdc-linear-progress.js.map +1 -1
  152. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-divider/mdc-deprecated-list-divider.js +15 -18
  153. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-divider/mdc-deprecated-list-divider.js.map +1 -1
  154. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-group.js +14 -17
  155. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-group.js.map +1 -1
  156. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/enhance-mdc-deprecated-list-item.js +6 -9
  157. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/enhance-mdc-deprecated-list-item.js.map +1 -1
  158. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-graphic.js +6 -9
  159. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-graphic.js.map +1 -1
  160. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-meta.js +6 -9
  161. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item-meta.js.map +1 -1
  162. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.js +25 -28
  163. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item/mdc-deprecated-list-item.js.map +1 -1
  164. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item-primary-text.js +6 -9
  165. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item-primary-text.js.map +1 -1
  166. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item-secondary-text.js +6 -9
  167. package/dist/list/mdc-deprecated-list/mdc-deprecated-list-item-secondary-text.js.map +1 -1
  168. package/dist/list/mdc-deprecated-list/mdc-deprecated-list.js +75 -78
  169. package/dist/list/mdc-deprecated-list/mdc-deprecated-list.js.map +1 -1
  170. package/dist/list/mdc-list-divider/mdc-list-divider.js +18 -21
  171. package/dist/list/mdc-list-divider/mdc-list-divider.js.map +1 -1
  172. package/dist/list/mdc-list-group.js +14 -17
  173. package/dist/list/mdc-list-group.js.map +1 -1
  174. package/dist/list/mdc-list-item/enhance-mdc-list-item.js +6 -9
  175. package/dist/list/mdc-list-item/enhance-mdc-list-item.js.map +1 -1
  176. package/dist/list/mdc-list-item/mdc-list-item-leading.js +6 -9
  177. package/dist/list/mdc-list-item/mdc-list-item-leading.js.map +1 -1
  178. package/dist/list/mdc-list-item/mdc-list-item-trailing.js +6 -9
  179. package/dist/list/mdc-list-item/mdc-list-item-trailing.js.map +1 -1
  180. package/dist/list/mdc-list-item/mdc-list-item.js +37 -40
  181. package/dist/list/mdc-list-item/mdc-list-item.js.map +1 -1
  182. package/dist/list/mdc-list-item-overline-text.js +6 -9
  183. package/dist/list/mdc-list-item-overline-text.js.map +1 -1
  184. package/dist/list/mdc-list-item-primary-text.js +6 -9
  185. package/dist/list/mdc-list-item-primary-text.js.map +1 -1
  186. package/dist/list/mdc-list-item-secondary-text.js +6 -9
  187. package/dist/list/mdc-list-item-secondary-text.js.map +1 -1
  188. package/dist/list/mdc-list.js +55 -58
  189. package/dist/list/mdc-list.js.map +1 -1
  190. package/dist/list/styles/_index.scss +1 -0
  191. package/dist/list/styles/mdc-list.import.scss +1 -0
  192. package/dist/list/styles/mdc-list.scss +6 -0
  193. package/dist/lookup/discardable-promise.js +1 -5
  194. package/dist/lookup/discardable-promise.js.map +1 -1
  195. package/dist/lookup/mdc-lookup-configuration.js +1 -5
  196. package/dist/lookup/mdc-lookup-configuration.js.map +1 -1
  197. package/dist/lookup/mdc-lookup.js +66 -69
  198. package/dist/lookup/mdc-lookup.js.map +1 -1
  199. package/dist/mdc-configuration.js +11 -15
  200. package/dist/mdc-configuration.js.map +1 -1
  201. package/dist/menu/mdc-menu-selection-group-icon.js +6 -9
  202. package/dist/menu/mdc-menu-selection-group-icon.js.map +1 -1
  203. package/dist/menu/mdc-menu-selection-group.js +6 -9
  204. package/dist/menu/mdc-menu-selection-group.js.map +1 -1
  205. package/dist/menu/mdc-menu.js +68 -71
  206. package/dist/menu/mdc-menu.js.map +1 -1
  207. package/dist/menu-surface/mdc-menu-surface-anchor.js +8 -11
  208. package/dist/menu-surface/mdc-menu-surface-anchor.js.map +1 -1
  209. package/dist/menu-surface/mdc-menu-surface.js +58 -61
  210. package/dist/menu-surface/mdc-menu-surface.js.map +1 -1
  211. package/dist/notched-outline/mdc-notched-outline.js +17 -20
  212. package/dist/notched-outline/mdc-notched-outline.js.map +1 -1
  213. package/dist/radio/mdc-radio.js +24 -27
  214. package/dist/radio/mdc-radio.js.map +1 -1
  215. package/dist/ripple/mdc-ripple.js +48 -51
  216. package/dist/ripple/mdc-ripple.js.map +1 -1
  217. package/dist/ripple/styles/_index.scss +1 -0
  218. package/dist/ripple/styles/mdc-ripple.import.scss +1 -0
  219. package/dist/ripple/styles/mdc-ripple.scss +10 -0
  220. package/dist/segmented-button/mdc-segmented-button-segment/enhance-mdc-segmented-button-segment.js +6 -9
  221. package/dist/segmented-button/mdc-segmented-button-segment/enhance-mdc-segmented-button-segment.js.map +1 -1
  222. package/dist/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.js +24 -27
  223. package/dist/segmented-button/mdc-segmented-button-segment/mdc-segmented-button-segment.js.map +1 -1
  224. package/dist/segmented-button/mdc-segmented-button.js +21 -24
  225. package/dist/segmented-button/mdc-segmented-button.js.map +1 -1
  226. package/dist/select/mdc-default-select-configuration.js +1 -5
  227. package/dist/select/mdc-default-select-configuration.js.map +1 -1
  228. package/dist/select/mdc-select-adapter-aurelia.js +1 -2
  229. package/dist/select/mdc-select-adapter-aurelia.js.map +1 -1
  230. package/dist/select/mdc-select-foundation-aurelia.js +43 -47
  231. package/dist/select/mdc-select-foundation-aurelia.js.map +1 -1
  232. package/dist/select/mdc-select-helper-text/mdc-select-helper-text.js +24 -27
  233. package/dist/select/mdc-select-helper-text/mdc-select-helper-text.js.map +1 -1
  234. package/dist/select/mdc-select-icon.js +13 -16
  235. package/dist/select/mdc-select-icon.js.map +1 -1
  236. package/dist/select/mdc-select-value-observer.js +11 -14
  237. package/dist/select/mdc-select-value-observer.js.map +1 -1
  238. package/dist/select/mdc-select.js +64 -67
  239. package/dist/select/mdc-select.js.map +1 -1
  240. package/dist/slider/mdc-slider-foundation-aurelia.js +2 -6
  241. package/dist/slider/mdc-slider-foundation-aurelia.js.map +1 -1
  242. package/dist/slider/mdc-slider.js +76 -79
  243. package/dist/slider/mdc-slider.js.map +1 -1
  244. package/dist/slider/styles/_index.scss +1 -0
  245. package/dist/slider/styles/mdc-slider.import.scss +1 -0
  246. package/dist/slider/styles/mdc-slider.scss +8 -0
  247. package/dist/snackbar/mdc-snackbar-service.js +4 -8
  248. package/dist/snackbar/mdc-snackbar-service.js.map +1 -1
  249. package/dist/snackbar/mdc-snackbar.js +52 -55
  250. package/dist/snackbar/mdc-snackbar.js.map +1 -1
  251. package/dist/switch/enhance-mdc-switch.js +6 -9
  252. package/dist/switch/enhance-mdc-switch.js.map +1 -1
  253. package/dist/switch/mdc-switch.js +13 -16
  254. package/dist/switch/mdc-switch.js.map +1 -1
  255. package/dist/tab-bar/indicator/mdc-tab-indicator.js +23 -26
  256. package/dist/tab-bar/indicator/mdc-tab-indicator.js.map +1 -1
  257. package/dist/tab-bar/mdc-tab-bar.js +26 -29
  258. package/dist/tab-bar/mdc-tab-bar.js.map +1 -1
  259. package/dist/tab-bar/scroller/mdc-tab-scroller.js +22 -25
  260. package/dist/tab-bar/scroller/mdc-tab-scroller.js.map +1 -1
  261. package/dist/tab-bar/tab/mdc-tab.js +41 -44
  262. package/dist/tab-bar/tab/mdc-tab.js.map +1 -1
  263. package/dist/text-field/enhance-mdc-text-field.js +6 -9
  264. package/dist/text-field/enhance-mdc-text-field.js.map +1 -1
  265. package/dist/text-field/mdc-default-text-field-configuration.js +1 -5
  266. package/dist/text-field/mdc-default-text-field-configuration.js.map +1 -1
  267. package/dist/text-field/mdc-inputmask.js +12 -15
  268. package/dist/text-field/mdc-inputmask.js.map +1 -1
  269. package/dist/text-field/mdc-text-field-character-counter.js +10 -13
  270. package/dist/text-field/mdc-text-field-character-counter.js.map +1 -1
  271. package/dist/text-field/mdc-text-field-helper-line/mdc-text-field-helper-line.js +11 -14
  272. package/dist/text-field/mdc-text-field-helper-line/mdc-text-field-helper-line.js.map +1 -1
  273. package/dist/text-field/mdc-text-field-helper-text/mdc-text-field-helper-text.js +19 -22
  274. package/dist/text-field/mdc-text-field-helper-text/mdc-text-field-helper-text.js.map +1 -1
  275. package/dist/text-field/mdc-text-field-icon.js +19 -22
  276. package/dist/text-field/mdc-text-field-icon.js.map +1 -1
  277. package/dist/text-field/mdc-text-field.js +109 -112
  278. package/dist/text-field/mdc-text-field.js.map +1 -1
  279. package/dist/text-field/styles/_index.scss +1 -0
  280. package/dist/text-field/styles/mdc-text-field.import.scss +1 -0
  281. package/dist/text-field/styles/mdc-text-field.scss +8 -0
  282. package/dist/tooltip/mdc-default-tooltip-configuration.js +1 -5
  283. package/dist/tooltip/mdc-default-tooltip-configuration.js.map +1 -1
  284. package/dist/tooltip/mdc-tooltip-attribute.js +36 -39
  285. package/dist/tooltip/mdc-tooltip-attribute.js.map +1 -1
  286. package/dist/tooltip/mdc-tooltip.js +57 -60
  287. package/dist/tooltip/mdc-tooltip.js.map +1 -1
  288. package/dist/top-app-bar/enhance-top-app-bar-actions.js +6 -9
  289. package/dist/top-app-bar/enhance-top-app-bar-actions.js.map +1 -1
  290. package/dist/top-app-bar/mdc-top-app-bar-action-item.js +6 -9
  291. package/dist/top-app-bar/mdc-top-app-bar-action-item.js.map +1 -1
  292. package/dist/top-app-bar/mdc-top-app-bar-fixed-adjust.js +6 -9
  293. package/dist/top-app-bar/mdc-top-app-bar-fixed-adjust.js.map +1 -1
  294. package/dist/top-app-bar/mdc-top-app-bar-nav-icon.js +6 -9
  295. package/dist/top-app-bar/mdc-top-app-bar-nav-icon.js.map +1 -1
  296. package/dist/top-app-bar/mdc-top-app-bar-row.js +6 -9
  297. package/dist/top-app-bar/mdc-top-app-bar-row.js.map +1 -1
  298. package/dist/top-app-bar/mdc-top-app-bar-section/mdc-top-app-bar-section.js +12 -15
  299. package/dist/top-app-bar/mdc-top-app-bar-section/mdc-top-app-bar-section.js.map +1 -1
  300. package/dist/top-app-bar/mdc-top-app-bar-title.js +6 -9
  301. package/dist/top-app-bar/mdc-top-app-bar-title.js.map +1 -1
  302. package/dist/top-app-bar/mdc-top-app-bar.js +40 -43
  303. package/dist/top-app-bar/mdc-top-app-bar.js.map +1 -1
  304. package/dist/tree-view/i-tree-node.js +1 -2
  305. package/dist/tree-view/mdc-tree-node-meta.js +6 -9
  306. package/dist/tree-view/mdc-tree-node-meta.js.map +1 -1
  307. package/dist/tree-view/mdc-tree-node.js +6 -9
  308. package/dist/tree-view/mdc-tree-node.js.map +1 -1
  309. package/dist/tree-view/mdc-tree-view.js +25 -29
  310. package/dist/tree-view/mdc-tree-view.js.map +1 -1
  311. package/dist/tree-view/node-filter.js +6 -9
  312. package/dist/tree-view/node-filter.js.map +1 -1
  313. package/dist/tree-view/styles/_index.scss +1 -0
  314. package/dist/tree-view/styles/_mixins.scss +145 -0
  315. package/dist/tree-view/styles/_variables.scss +8 -0
  316. package/dist/tree-view/styles/mdc-tree-view.import.scss +1 -0
  317. package/dist/tree-view/styles/mdc-tree-view.scss +3 -0
  318. package/dist/typography/mdc-typography.js +57 -60
  319. package/dist/typography/mdc-typography.js.map +1 -1
  320. package/dist/validation/mdc-validation-controller-factory.js +6 -10
  321. package/dist/validation/mdc-validation-controller-factory.js.map +1 -1
  322. package/dist/validation/mdc-validation-result-presenter.js +1 -5
  323. package/dist/validation/mdc-validation-result-presenter.js.map +1 -1
  324. package/dist/validation/validate.js +1 -4
  325. package/dist/validation/validate.js.map +1 -1
  326. package/package.json +2 -2
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MdcSelectValueObserver = void 0;
4
- const tslib_1 = require("tslib");
5
- const runtime_1 = require("@aurelia/runtime");
6
- const runtime_html_1 = require("@aurelia/runtime-html");
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { subscriberCollection, AccessorType, } from '@aurelia/runtime';
3
+ import { CustomElement } from '@aurelia/runtime-html';
7
4
  // const hasOwn = Object.prototype.hasOwnProperty;
8
5
  const childObserverOptions = {
9
6
  childList: true,
@@ -11,7 +8,7 @@ const childObserverOptions = {
11
8
  characterData: true
12
9
  };
13
10
  let MdcSelectValueObserver = (() => {
14
- let _classDecorators = [(0, runtime_1.subscriberCollection)()];
11
+ let _classDecorators = [subscriberCollection()];
15
12
  let _classDescriptor;
16
13
  let _classExtraInitializers = [];
17
14
  let _classThis;
@@ -19,10 +16,10 @@ let MdcSelectValueObserver = (() => {
19
16
  static { _classThis = this; }
20
17
  static {
21
18
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
22
- tslib_1.__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
19
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
23
20
  MdcSelectValueObserver = _classThis = _classDescriptor.value;
24
21
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
25
- tslib_1.__runInitializers(_classThis, _classExtraInitializers);
22
+ __runInitializers(_classThis, _classExtraInitializers);
26
23
  }
27
24
  currentValue = void 0;
28
25
  oldValue = void 0;
@@ -31,7 +28,7 @@ let MdcSelectValueObserver = (() => {
31
28
  hasChanges = false;
32
29
  // ObserverType.Layout is not always true
33
30
  // but for simplicity, always treat as such
34
- type = (runtime_1.AccessorType.Node | runtime_1.AccessorType.Observer | runtime_1.AccessorType.Layout);
31
+ type = (AccessorType.Node | AccessorType.Observer | AccessorType.Layout);
35
32
  arrayObserver = void 0;
36
33
  nodeObserver = void 0;
37
34
  observing = false;
@@ -47,7 +44,7 @@ let MdcSelectValueObserver = (() => {
47
44
  // do not pass the value to the element if options has never been set
48
45
  // the value will be passed on when options do arrive
49
46
  if (this.optionsWereSet) {
50
- runtime_html_1.CustomElement.for(this.obj).viewModel.setValue(this.currentValue, skipNotify);
47
+ CustomElement.for(this.obj).viewModel.setValue(this.currentValue, skipNotify);
51
48
  }
52
49
  }
53
50
  getValue() {
@@ -135,7 +132,7 @@ let MdcSelectValueObserver = (() => {
135
132
  // 3. assign `value` to `this.currentValue`
136
133
  // 4. return `true` to signal value has changed
137
134
  const obj = this.obj;
138
- const options = runtime_html_1.CustomElement.for(obj).viewModel.items ?? [];
135
+ const options = CustomElement.for(obj).viewModel.items ?? [];
139
136
  const len = options.length;
140
137
  // const currentValue = this.currentValue;
141
138
  let i = 0;
@@ -207,7 +204,7 @@ let MdcSelectValueObserver = (() => {
207
204
  return true;
208
205
  }
209
206
  start() {
210
- const vm = runtime_html_1.CustomElement.for(this.obj).viewModel;
207
+ const vm = CustomElement.for(this.obj).viewModel;
211
208
  vm.initialised.then(() => {
212
209
  (this.nodeObserver = new this.obj.ownerDocument.defaultView.MutationObserver(records => this.handleNodeChange(records)))
213
210
  .observe(vm.menu.root, childObserverOptions);
@@ -283,5 +280,5 @@ let MdcSelectValueObserver = (() => {
283
280
  };
284
281
  return MdcSelectValueObserver = _classThis;
285
282
  })();
286
- exports.MdcSelectValueObserver = MdcSelectValueObserver;
283
+ export { MdcSelectValueObserver };
287
284
  //# sourceMappingURL=mdc-select-value-observer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mdc-select-value-observer.js","sourceRoot":"","sources":["../../src/select/mdc-select-value-observer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n subscriberCollection,\n AccessorType,\n} from '@aurelia/runtime';\n\nimport type {\n ICollectionObserver,\n IndexMap,\n IObserver,\n IObserverLocator,\n ISubscriber,\n ISubscriberCollection,\n} from '@aurelia/runtime';\n\nimport { INode, CustomElement } from '@aurelia/runtime-html';\nimport { IMdcSelectElement, MdcSelect } from './mdc-select';\n\n// const hasOwn = Object.prototype.hasOwnProperty;\nconst childObserverOptions = {\n childList: true,\n subtree: true,\n characterData: true\n};\n\n// function defaultMatcher(a: unknown, b: unknown): boolean {\n// return a === b;\n// }\n\nexport interface IOptionElement extends HTMLOptionElement {\n model?: unknown;\n}\n\nexport interface MdcSelectValueObserver extends\n ISubscriberCollection { }\n\nexport interface INodeObserverConfigBase {\n /**\n * Indicates the list of events can be used to observe a particular property\n */\n readonly events: string[];\n /**\n * Indicates whether this property is readonly, so observer wont attempt to assign value\n * example: input.files\n */\n readonly readonly?: boolean;\n /**\n * A default value to assign to the corresponding property if the incoming value is null/undefined\n */\n readonly default?: unknown;\n}\n\n\nexport interface INodeObserver extends IObserver {\n /**\n * Instruct this node observer event observation behavior\n */\n useConfig(config: INodeObserverConfigBase): void;\n}\n\n@subscriberCollection()\nexport class MdcSelectValueObserver implements INodeObserver {\n public currentValue: unknown = void 0;\n public oldValue: unknown = void 0;\n\n public readonly obj: IMdcSelectElement;\n public config: INodeObserverConfigBase;\n\n public hasChanges: boolean = false;\n // ObserverType.Layout is not always true\n // but for simplicity, always treat as such\n public type: AccessorType = (AccessorType.Node | AccessorType.Observer | AccessorType.Layout) as AccessorType;\n\n public arrayObserver?: ICollectionObserver<'array'> = void 0;\n public nodeObserver?: MutationObserver = void 0;\n\n private observing: boolean = false;\n private listened: boolean = false;\n\n public constructor(\n obj: INode,\n // deepscan-disable-next-line\n _key: PropertyKey,\n config: INodeObserverConfigBase,\n _: IObserverLocator\n ) {\n this.obj = obj as unknown as IMdcSelectElement;\n this.config = config;\n }\n\n optionsWereSet: boolean;\n\n setElementValue(skipNotify: boolean) {\n // do not pass the value to the element if options has never been set\n // the value will be passed on when options do arrive\n if (this.optionsWereSet) {\n CustomElement.for<MdcSelect>(this.obj).viewModel.setValue(this.currentValue, skipNotify);\n }\n }\n\n public getValue(): unknown {\n // is it safe to assume the observer has the latest value?\n // todo: ability to turn on/off cache based on type\n return this.observing\n ? this.currentValue\n // : this.obj.multiple\n // ? Array.from(this.obj.options).map(o => o.value)\n : this.obj.value;\n }\n\n public setValue(newValue: unknown): void {\n this.oldValue = this.currentValue;\n this.currentValue = newValue;\n this.hasChanges = newValue !== this.oldValue;\n // this.observeArray(newValue instanceof Array ? newValue : null);\n if (this.optionsWereSet) {\n this.flushChanges();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public flushChanges(): void {\n if (this.hasChanges) {\n this.hasChanges = false;\n this.synchronizeOptions();\n }\n }\n\n public handleCollectionChange(): void {\n // always sync \"selected\" property of <options/>\n // immediately whenever the array notifies its mutation\n this.synchronizeOptions();\n }\n\n public notify(): void {\n const oldValue = this.oldValue;\n const newValue = this.currentValue;\n if (newValue === oldValue) {\n return;\n }\n this.subs.notify(newValue, oldValue);\n }\n\n public handleEvent(): void {\n const shouldNotify = this.synchronizeValue();\n if (shouldNotify) {\n this.subs.notify(this.currentValue, this.oldValue);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public synchronizeOptions(_indexMap?: IndexMap): void {\n this.setElementValue(true);\n // const { currentValue, obj } = this;\n // // const isArray = Array.isArray(currentValue);\n // // const matcher = obj.matcher !== void 0 ? obj.matcher : defaultMatcher;\n // // const matcher = defaultMatcher;\n // const options = CustomElement.for<MdcSelect>(obj).viewModel.items;\n // let i = options.length;\n\n // while (i-- > 0) {\n // // const option = options[i];\n // // const optionValue = hasOwn.call(option, 'model') ? option.model : option.value;\n // // const optionValue = option.value;\n // // if (isArray) {\n // // option.selected = (currentValue as unknown[]).findIndex(item => !!matcher(optionValue, item)) !== -1;\n // // continue;\n // // }\n // if (!this.optionsWereSet) {\n // this.optionsWereSet = true;\n // this.setElementValue(true);\n // }\n // // option.selected = !!matcher(optionValue, currentValue);\n // }\n }\n\n public synchronizeValue(): boolean {\n // Spec for synchronizing value from `<select/>` to `SelectObserver`\n // When synchronizing value to observed <select/> element, do the following steps:\n // A. If `<select/>` is multiple\n // 1. Check if current value, called `currentValue` is an array\n // a. If not an array, return true to signal value has changed\n // b. If is an array:\n // i. gather all current selected <option/>, in to array called `values`\n // ii. loop through the `currentValue` array and remove items that are nolonger selected based on matcher\n // iii. loop through the `values` array and add items that are selected based on matcher\n // iv. Return false to signal value hasn't changed\n // B. If the select is single\n // 1. Let `value` equal the first selected option, if no option selected, then `value` is `null`\n // 2. assign `this.currentValue` to `this.oldValue`\n // 3. assign `value` to `this.currentValue`\n // 4. return `true` to signal value has changed\n const obj = this.obj;\n const options = CustomElement.for<MdcSelect>(obj).viewModel.items ?? [];\n const len = options.length;\n // const currentValue = this.currentValue;\n let i = 0;\n\n /*\n if (obj.multiple) {\n // A.\n if (!(currentValue instanceof Array)) {\n // A.1.a\n return true;\n }\n // A.1.b\n // multi select\n let option: IOptionElement;\n const matcher = obj.matcher ?? defaultMatcher;\n // A.1.b.i\n const values: unknown[] = [];\n while (i < len) {\n option = options[i];\n if (option.selected) {\n values.push(hasOwn.call(option, 'model')\n ? option.model\n : option.value\n );\n }\n ++i;\n }\n // A.1.b.ii\n i = 0;\n while (i < currentValue.length) {\n const a = currentValue[i];\n // Todo: remove arrow fn\n if (values.findIndex(b => !!matcher(a, b)) === -1) {\n currentValue.splice(i, 1);\n } else {\n ++i;\n }\n }\n // A.1.b.iii\n i = 0;\n while (i < values.length) {\n const a = values[i];\n // Todo: remove arrow fn\n if (currentValue.findIndex(b => !!matcher(a, b)) === -1) {\n currentValue.push(a);\n }\n ++i;\n }\n // A.1.b.iv\n return false;\n }\n */\n // B. single select\n // B.1\n let value: unknown = undefined;\n while (i < len) {\n const option = options[i];\n if (option.value === this.obj.value) {\n // value = hasOwn.call(option, 'model') ? option.model : option.value;\n value = option.value;\n break;\n }\n ++i;\n }\n // B.2\n this.oldValue = this.currentValue;\n // B.3\n this.currentValue = value;\n // B.4\n return true;\n }\n\n private start(): void {\n const vm = CustomElement.for<MdcSelect>(this.obj).viewModel;\n vm.initialised.then(() => {\n (this.nodeObserver = new this.obj.ownerDocument.defaultView!.MutationObserver(records => this.handleNodeChange(records)))\n .observe(vm.menu.root, childObserverOptions);\n // this.observeArray(this.currentValue instanceof Array ? this.currentValue : null);\n this.observing = true;\n if (vm.items?.length) {\n this.optionsWereSet = true;\n this.synchronizeOptions();\n }\n });\n }\n\n private stop(): void {\n this.optionsWereSet = false;\n this.nodeObserver?.disconnect();\n this.arrayObserver?.unsubscribe(this);\n this.nodeObserver\n = this.arrayObserver\n = void 0;\n this.observing = false;\n }\n\n // todo: observe all kind of collection\n // private observeArray(array: unknown[] | null): void {\n // this.arrayObserver?.unsubscribe(this);\n // this.arrayObserver = void 0;\n // if (array !== null) {\n // if (!this.obj.multiple) {\n // throw new Error('Only null or Array instances can be bound to a multi-select.');\n // }\n // (this.arrayObserver = this.observerLocator.getArrayObserver(array)).subscribe(this);\n // }\n // }\n\n public handleNodeChange(records: MutationRecord[]): void {\n if (records.find(x => x.type === 'childList'\n && (Array.from(x.addedNodes).find(y => (y as HTMLElement).tagName === 'MDC-LIST-ITEM')\n || Array.from(x.removedNodes).find(y => (y as HTMLElement).tagName === 'MDC-LIST-ITEM'))\n )) {\n this.optionsWereSet = true;\n this.synchronizeOptions();\n const shouldNotify = this.synchronizeValue();\n if (shouldNotify) {\n this.notify();\n }\n }\n }\n\n public subscribe(subscriber: ISubscriber): void {\n if (this.subs.add(subscriber) && this.subs.count === 1) {\n for (const e of this.config.events) {\n this.obj.addEventListener(e, this);\n }\n this.listened = true;\n this.start();\n }\n }\n\n public unsubscribe(subscriber: ISubscriber): void {\n if (this.subs.remove(subscriber) && this.subs.count === 0) {\n for (const e of this.config.events) {\n this.obj.removeEventListener(e, this);\n }\n this.listened = false;\n this.stop();\n }\n }\n\n useConfig(config: INodeObserverConfigBase): void {\n this.config = config;\n if (this.listened) {\n for (const e of this.config.events) {\n this.obj.removeEventListener(e, this);\n }\n for (const e of this.config.events) {\n this.obj.addEventListener(e, this);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"mdc-select-value-observer.js","sourceRoot":"","sources":["../../src/select/mdc-select-value-observer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n subscriberCollection,\n AccessorType,\n} from '@aurelia/runtime';\n\nimport type {\n ICollectionObserver,\n IndexMap,\n IObserver,\n IObserverLocator,\n ISubscriber,\n ISubscriberCollection,\n} from '@aurelia/runtime';\n\nimport { INode, CustomElement } from '@aurelia/runtime-html';\nimport { IMdcSelectElement, MdcSelect } from './mdc-select';\n\n// const hasOwn = Object.prototype.hasOwnProperty;\nconst childObserverOptions = {\n childList: true,\n subtree: true,\n characterData: true\n};\n\n// function defaultMatcher(a: unknown, b: unknown): boolean {\n// return a === b;\n// }\n\nexport interface IOptionElement extends HTMLOptionElement {\n model?: unknown;\n}\n\nexport interface MdcSelectValueObserver extends\n ISubscriberCollection { }\n\nexport interface INodeObserverConfigBase {\n /**\n * Indicates the list of events can be used to observe a particular property\n */\n readonly events: string[];\n /**\n * Indicates whether this property is readonly, so observer wont attempt to assign value\n * example: input.files\n */\n readonly readonly?: boolean;\n /**\n * A default value to assign to the corresponding property if the incoming value is null/undefined\n */\n readonly default?: unknown;\n}\n\n\nexport interface INodeObserver extends IObserver {\n /**\n * Instruct this node observer event observation behavior\n */\n useConfig(config: INodeObserverConfigBase): void;\n}\n\n@subscriberCollection()\nexport class MdcSelectValueObserver implements INodeObserver {\n public currentValue: unknown = void 0;\n public oldValue: unknown = void 0;\n\n public readonly obj: IMdcSelectElement;\n public config: INodeObserverConfigBase;\n\n public hasChanges: boolean = false;\n // ObserverType.Layout is not always true\n // but for simplicity, always treat as such\n public type: AccessorType = (AccessorType.Node | AccessorType.Observer | AccessorType.Layout) as AccessorType;\n\n public arrayObserver?: ICollectionObserver<'array'> = void 0;\n public nodeObserver?: MutationObserver = void 0;\n\n private observing: boolean = false;\n private listened: boolean = false;\n\n public constructor(\n obj: INode,\n // deepscan-disable-next-line\n _key: PropertyKey,\n config: INodeObserverConfigBase,\n _: IObserverLocator\n ) {\n this.obj = obj as unknown as IMdcSelectElement;\n this.config = config;\n }\n\n optionsWereSet: boolean;\n\n setElementValue(skipNotify: boolean) {\n // do not pass the value to the element if options has never been set\n // the value will be passed on when options do arrive\n if (this.optionsWereSet) {\n CustomElement.for<MdcSelect>(this.obj).viewModel.setValue(this.currentValue, skipNotify);\n }\n }\n\n public getValue(): unknown {\n // is it safe to assume the observer has the latest value?\n // todo: ability to turn on/off cache based on type\n return this.observing\n ? this.currentValue\n // : this.obj.multiple\n // ? Array.from(this.obj.options).map(o => o.value)\n : this.obj.value;\n }\n\n public setValue(newValue: unknown): void {\n this.oldValue = this.currentValue;\n this.currentValue = newValue;\n this.hasChanges = newValue !== this.oldValue;\n // this.observeArray(newValue instanceof Array ? newValue : null);\n if (this.optionsWereSet) {\n this.flushChanges();\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public flushChanges(): void {\n if (this.hasChanges) {\n this.hasChanges = false;\n this.synchronizeOptions();\n }\n }\n\n public handleCollectionChange(): void {\n // always sync \"selected\" property of <options/>\n // immediately whenever the array notifies its mutation\n this.synchronizeOptions();\n }\n\n public notify(): void {\n const oldValue = this.oldValue;\n const newValue = this.currentValue;\n if (newValue === oldValue) {\n return;\n }\n this.subs.notify(newValue, oldValue);\n }\n\n public handleEvent(): void {\n const shouldNotify = this.synchronizeValue();\n if (shouldNotify) {\n this.subs.notify(this.currentValue, this.oldValue);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public synchronizeOptions(_indexMap?: IndexMap): void {\n this.setElementValue(true);\n // const { currentValue, obj } = this;\n // // const isArray = Array.isArray(currentValue);\n // // const matcher = obj.matcher !== void 0 ? obj.matcher : defaultMatcher;\n // // const matcher = defaultMatcher;\n // const options = CustomElement.for<MdcSelect>(obj).viewModel.items;\n // let i = options.length;\n\n // while (i-- > 0) {\n // // const option = options[i];\n // // const optionValue = hasOwn.call(option, 'model') ? option.model : option.value;\n // // const optionValue = option.value;\n // // if (isArray) {\n // // option.selected = (currentValue as unknown[]).findIndex(item => !!matcher(optionValue, item)) !== -1;\n // // continue;\n // // }\n // if (!this.optionsWereSet) {\n // this.optionsWereSet = true;\n // this.setElementValue(true);\n // }\n // // option.selected = !!matcher(optionValue, currentValue);\n // }\n }\n\n public synchronizeValue(): boolean {\n // Spec for synchronizing value from `<select/>` to `SelectObserver`\n // When synchronizing value to observed <select/> element, do the following steps:\n // A. If `<select/>` is multiple\n // 1. Check if current value, called `currentValue` is an array\n // a. If not an array, return true to signal value has changed\n // b. If is an array:\n // i. gather all current selected <option/>, in to array called `values`\n // ii. loop through the `currentValue` array and remove items that are nolonger selected based on matcher\n // iii. loop through the `values` array and add items that are selected based on matcher\n // iv. Return false to signal value hasn't changed\n // B. If the select is single\n // 1. Let `value` equal the first selected option, if no option selected, then `value` is `null`\n // 2. assign `this.currentValue` to `this.oldValue`\n // 3. assign `value` to `this.currentValue`\n // 4. return `true` to signal value has changed\n const obj = this.obj;\n const options = CustomElement.for<MdcSelect>(obj).viewModel.items ?? [];\n const len = options.length;\n // const currentValue = this.currentValue;\n let i = 0;\n\n /*\n if (obj.multiple) {\n // A.\n if (!(currentValue instanceof Array)) {\n // A.1.a\n return true;\n }\n // A.1.b\n // multi select\n let option: IOptionElement;\n const matcher = obj.matcher ?? defaultMatcher;\n // A.1.b.i\n const values: unknown[] = [];\n while (i < len) {\n option = options[i];\n if (option.selected) {\n values.push(hasOwn.call(option, 'model')\n ? option.model\n : option.value\n );\n }\n ++i;\n }\n // A.1.b.ii\n i = 0;\n while (i < currentValue.length) {\n const a = currentValue[i];\n // Todo: remove arrow fn\n if (values.findIndex(b => !!matcher(a, b)) === -1) {\n currentValue.splice(i, 1);\n } else {\n ++i;\n }\n }\n // A.1.b.iii\n i = 0;\n while (i < values.length) {\n const a = values[i];\n // Todo: remove arrow fn\n if (currentValue.findIndex(b => !!matcher(a, b)) === -1) {\n currentValue.push(a);\n }\n ++i;\n }\n // A.1.b.iv\n return false;\n }\n */\n // B. single select\n // B.1\n let value: unknown = undefined;\n while (i < len) {\n const option = options[i];\n if (option.value === this.obj.value) {\n // value = hasOwn.call(option, 'model') ? option.model : option.value;\n value = option.value;\n break;\n }\n ++i;\n }\n // B.2\n this.oldValue = this.currentValue;\n // B.3\n this.currentValue = value;\n // B.4\n return true;\n }\n\n private start(): void {\n const vm = CustomElement.for<MdcSelect>(this.obj).viewModel;\n vm.initialised.then(() => {\n (this.nodeObserver = new this.obj.ownerDocument.defaultView!.MutationObserver(records => this.handleNodeChange(records)))\n .observe(vm.menu.root, childObserverOptions);\n // this.observeArray(this.currentValue instanceof Array ? this.currentValue : null);\n this.observing = true;\n if (vm.items?.length) {\n this.optionsWereSet = true;\n this.synchronizeOptions();\n }\n });\n }\n\n private stop(): void {\n this.optionsWereSet = false;\n this.nodeObserver?.disconnect();\n this.arrayObserver?.unsubscribe(this);\n this.nodeObserver\n = this.arrayObserver\n = void 0;\n this.observing = false;\n }\n\n // todo: observe all kind of collection\n // private observeArray(array: unknown[] | null): void {\n // this.arrayObserver?.unsubscribe(this);\n // this.arrayObserver = void 0;\n // if (array !== null) {\n // if (!this.obj.multiple) {\n // throw new Error('Only null or Array instances can be bound to a multi-select.');\n // }\n // (this.arrayObserver = this.observerLocator.getArrayObserver(array)).subscribe(this);\n // }\n // }\n\n public handleNodeChange(records: MutationRecord[]): void {\n if (records.find(x => x.type === 'childList'\n && (Array.from(x.addedNodes).find(y => (y as HTMLElement).tagName === 'MDC-LIST-ITEM')\n || Array.from(x.removedNodes).find(y => (y as HTMLElement).tagName === 'MDC-LIST-ITEM'))\n )) {\n this.optionsWereSet = true;\n this.synchronizeOptions();\n const shouldNotify = this.synchronizeValue();\n if (shouldNotify) {\n this.notify();\n }\n }\n }\n\n public subscribe(subscriber: ISubscriber): void {\n if (this.subs.add(subscriber) && this.subs.count === 1) {\n for (const e of this.config.events) {\n this.obj.addEventListener(e, this);\n }\n this.listened = true;\n this.start();\n }\n }\n\n public unsubscribe(subscriber: ISubscriber): void {\n if (this.subs.remove(subscriber) && this.subs.count === 0) {\n for (const e of this.config.events) {\n this.obj.removeEventListener(e, this);\n }\n this.listened = false;\n this.stop();\n }\n }\n\n useConfig(config: INodeObserverConfigBase): void {\n this.config = config;\n if (this.listened) {\n for (const e of this.config.events) {\n this.obj.removeEventListener(e, this);\n }\n for (const e of this.config.events) {\n this.obj.addEventListener(e, this);\n }\n }\n }\n}\n"]}
@@ -1,26 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MdcSelect = void 0;
4
- const tslib_1 = require("tslib");
5
- const base_1 = require("../base");
6
- const select_1 = require("@material/select");
7
- const aurelia_1 = require("aurelia");
8
- const mdc_select_icon_1 = require("./mdc-select-icon");
9
- const mdc_select_helper_text_1 = require("./mdc-select-helper-text/mdc-select-helper-text");
10
- const mdc_select_foundation_aurelia_1 = require("./mdc-select-foundation-aurelia");
11
- const runtime_html_1 = require("@aurelia/runtime-html");
12
- const mdc_select_html_raw_1 = tslib_1.__importDefault(require("./mdc-select.html?raw"));
13
- const mdc_configuration_1 = require("../mdc-configuration");
14
- select_1.strings.CHANGE_EVENT = select_1.strings.CHANGE_EVENT.toLowerCase();
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { MdcComponent, booleanAttr } from '../base';
3
+ import { cssClasses, strings } from '@material/select';
4
+ import { inject, customElement, IPlatform, bindable } from 'aurelia';
5
+ import { mdcIconStrings } from './mdc-select-icon';
6
+ import { mdcHelperTextCssClasses } from './mdc-select-helper-text/mdc-select-helper-text';
7
+ import { MDCSelectFoundationAurelia } from './mdc-select-foundation-aurelia';
8
+ import { processContent, BindingMode, CustomElement, CustomAttribute } from '@aurelia/runtime-html';
9
+ import template from './mdc-select.html?raw';
10
+ import { MdcConfiguration } from '../mdc-configuration';
11
+ strings.CHANGE_EVENT = strings.CHANGE_EVENT.toLowerCase();
15
12
  let selectId = 0;
16
13
  /**
17
14
  * @selector mdc-select
18
15
  * @emits mdcselect:change | Emitted if user changed the value
19
16
  */
20
17
  let MdcSelect = (() => {
21
- let _classDecorators = [(0, aurelia_1.inject)(Element, aurelia_1.IPlatform, mdc_configuration_1.MdcConfiguration), (0, aurelia_1.customElement)({ name: 'mdc-select', template: mdc_select_html_raw_1.default }), (0, runtime_html_1.processContent)(function processContent(node, platform) {
18
+ let _classDecorators = [inject(Element, IPlatform, MdcConfiguration), customElement({ name: 'mdc-select', template }), processContent(function processContent(node, platform) {
22
19
  const el = node;
23
- const leadingIcon = el.querySelector(`[${mdc_select_icon_1.mdcIconStrings.ATTRIBUTE}]`);
20
+ const leadingIcon = el.querySelector(`[${mdcIconStrings.ATTRIBUTE}]`);
24
21
  leadingIcon?.remove();
25
22
  const template = platform.document.createElement('template');
26
23
  template.setAttribute('au-slot', '');
@@ -40,7 +37,7 @@ let MdcSelect = (() => {
40
37
  let _classDescriptor;
41
38
  let _classExtraInitializers = [];
42
39
  let _classThis;
43
- let _classSuper = base_1.MdcComponent;
40
+ let _classSuper = MdcComponent;
44
41
  let _label_decorators;
45
42
  let _label_initializers = [];
46
43
  let _label_extraInitializers = [];
@@ -69,26 +66,26 @@ let MdcSelect = (() => {
69
66
  static { _classThis = this; }
70
67
  static {
71
68
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
72
- _label_decorators = [(0, aurelia_1.bindable)()];
73
- _outlined_decorators = [(0, aurelia_1.bindable)({ set: base_1.booleanAttr })];
74
- _required_decorators = [(0, aurelia_1.bindable)({ set: base_1.booleanAttr })];
75
- _disabled_decorators = [(0, aurelia_1.bindable)({ set: base_1.booleanAttr })];
76
- _hoistToBody_decorators = [(0, aurelia_1.bindable)({ set: base_1.booleanAttr, mode: runtime_html_1.BindingMode.oneTime })];
77
- _fixed_decorators = [(0, aurelia_1.bindable)({ set: base_1.booleanAttr, mode: runtime_html_1.BindingMode.oneTime })];
78
- _anchorMargin_decorators = [(0, aurelia_1.bindable)()];
79
- _naturalWidth_decorators = [(0, aurelia_1.bindable)({ set: base_1.booleanAttr })];
80
- tslib_1.__esDecorate(null, null, _label_decorators, { kind: "field", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
81
- tslib_1.__esDecorate(null, null, _outlined_decorators, { kind: "field", name: "outlined", static: false, private: false, access: { has: obj => "outlined" in obj, get: obj => obj.outlined, set: (obj, value) => { obj.outlined = value; } }, metadata: _metadata }, _outlined_initializers, _outlined_extraInitializers);
82
- tslib_1.__esDecorate(null, null, _required_decorators, { kind: "field", name: "required", static: false, private: false, access: { has: obj => "required" in obj, get: obj => obj.required, set: (obj, value) => { obj.required = value; } }, metadata: _metadata }, _required_initializers, _required_extraInitializers);
83
- tslib_1.__esDecorate(null, null, _disabled_decorators, { kind: "field", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
84
- tslib_1.__esDecorate(null, null, _hoistToBody_decorators, { kind: "field", name: "hoistToBody", static: false, private: false, access: { has: obj => "hoistToBody" in obj, get: obj => obj.hoistToBody, set: (obj, value) => { obj.hoistToBody = value; } }, metadata: _metadata }, _hoistToBody_initializers, _hoistToBody_extraInitializers);
85
- tslib_1.__esDecorate(null, null, _fixed_decorators, { kind: "field", name: "fixed", static: false, private: false, access: { has: obj => "fixed" in obj, get: obj => obj.fixed, set: (obj, value) => { obj.fixed = value; } }, metadata: _metadata }, _fixed_initializers, _fixed_extraInitializers);
86
- tslib_1.__esDecorate(null, null, _anchorMargin_decorators, { kind: "field", name: "anchorMargin", static: false, private: false, access: { has: obj => "anchorMargin" in obj, get: obj => obj.anchorMargin, set: (obj, value) => { obj.anchorMargin = value; } }, metadata: _metadata }, _anchorMargin_initializers, _anchorMargin_extraInitializers);
87
- tslib_1.__esDecorate(null, null, _naturalWidth_decorators, { kind: "field", name: "naturalWidth", static: false, private: false, access: { has: obj => "naturalWidth" in obj, get: obj => obj.naturalWidth, set: (obj, value) => { obj.naturalWidth = value; } }, metadata: _metadata }, _naturalWidth_initializers, _naturalWidth_extraInitializers);
88
- tslib_1.__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
69
+ _label_decorators = [bindable()];
70
+ _outlined_decorators = [bindable({ set: booleanAttr })];
71
+ _required_decorators = [bindable({ set: booleanAttr })];
72
+ _disabled_decorators = [bindable({ set: booleanAttr })];
73
+ _hoistToBody_decorators = [bindable({ set: booleanAttr, mode: BindingMode.oneTime })];
74
+ _fixed_decorators = [bindable({ set: booleanAttr, mode: BindingMode.oneTime })];
75
+ _anchorMargin_decorators = [bindable()];
76
+ _naturalWidth_decorators = [bindable({ set: booleanAttr })];
77
+ __esDecorate(null, null, _label_decorators, { kind: "field", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
78
+ __esDecorate(null, null, _outlined_decorators, { kind: "field", name: "outlined", static: false, private: false, access: { has: obj => "outlined" in obj, get: obj => obj.outlined, set: (obj, value) => { obj.outlined = value; } }, metadata: _metadata }, _outlined_initializers, _outlined_extraInitializers);
79
+ __esDecorate(null, null, _required_decorators, { kind: "field", name: "required", static: false, private: false, access: { has: obj => "required" in obj, get: obj => obj.required, set: (obj, value) => { obj.required = value; } }, metadata: _metadata }, _required_initializers, _required_extraInitializers);
80
+ __esDecorate(null, null, _disabled_decorators, { kind: "field", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
81
+ __esDecorate(null, null, _hoistToBody_decorators, { kind: "field", name: "hoistToBody", static: false, private: false, access: { has: obj => "hoistToBody" in obj, get: obj => obj.hoistToBody, set: (obj, value) => { obj.hoistToBody = value; } }, metadata: _metadata }, _hoistToBody_initializers, _hoistToBody_extraInitializers);
82
+ __esDecorate(null, null, _fixed_decorators, { kind: "field", name: "fixed", static: false, private: false, access: { has: obj => "fixed" in obj, get: obj => obj.fixed, set: (obj, value) => { obj.fixed = value; } }, metadata: _metadata }, _fixed_initializers, _fixed_extraInitializers);
83
+ __esDecorate(null, null, _anchorMargin_decorators, { kind: "field", name: "anchorMargin", static: false, private: false, access: { has: obj => "anchorMargin" in obj, get: obj => obj.anchorMargin, set: (obj, value) => { obj.anchorMargin = value; } }, metadata: _metadata }, _anchorMargin_initializers, _anchorMargin_extraInitializers);
84
+ __esDecorate(null, null, _naturalWidth_decorators, { kind: "field", name: "naturalWidth", static: false, private: false, access: { has: obj => "naturalWidth" in obj, get: obj => obj.naturalWidth, set: (obj, value) => { obj.naturalWidth = value; } }, metadata: _metadata }, _naturalWidth_initializers, _naturalWidth_extraInitializers);
85
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
89
86
  MdcSelect = _classThis = _classDescriptor.value;
90
87
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
91
- tslib_1.__runInitializers(_classThis, _classExtraInitializers);
88
+ __runInitializers(_classThis, _classExtraInitializers);
92
89
  }
93
90
  platform;
94
91
  configuration;
@@ -115,17 +112,17 @@ let MdcSelect = (() => {
115
112
  outline;
116
113
  errors = new Map();
117
114
  /** Sets the select label */
118
- label = tslib_1.__runInitializers(this, _label_initializers, void 0);
115
+ label = __runInitializers(this, _label_initializers, void 0);
119
116
  labelChanged() {
120
117
  this.platform.domQueue.queueTask(() => this.foundation?.layout());
121
118
  }
122
119
  /** Styles the select as an outlined select */
123
- outlined = (tslib_1.__runInitializers(this, _label_extraInitializers), tslib_1.__runInitializers(this, _outlined_initializers, void 0));
120
+ outlined = (__runInitializers(this, _label_extraInitializers), __runInitializers(this, _outlined_initializers, void 0));
124
121
  outlinedChanged() {
125
122
  this.platform.domQueue.queueTask(() => this.foundation?.layout());
126
123
  }
127
124
  /** Makes the value required */
128
- required = (tslib_1.__runInitializers(this, _outlined_extraInitializers), tslib_1.__runInitializers(this, _required_initializers, void 0));
125
+ required = (__runInitializers(this, _outlined_extraInitializers), __runInitializers(this, _required_initializers, void 0));
129
126
  requiredChanged() {
130
127
  if (this.required) {
131
128
  this.selectAnchor?.setAttribute('aria-required', 'true');
@@ -137,21 +134,21 @@ let MdcSelect = (() => {
137
134
  this.platform.domWriteQueue.queueTask(() => this.foundation?.layout());
138
135
  }
139
136
  /** Enables/disables the select */
140
- disabled = (tslib_1.__runInitializers(this, _required_extraInitializers), tslib_1.__runInitializers(this, _disabled_initializers, void 0));
137
+ disabled = (__runInitializers(this, _required_extraInitializers), __runInitializers(this, _disabled_initializers, void 0));
141
138
  disabledChanged() {
142
139
  if (this.disabled !== undefined) {
143
140
  this.foundation?.setDisabled(this.disabled);
144
141
  }
145
142
  }
146
143
  /** Hoists the select DOM to document.body */
147
- hoistToBody = (tslib_1.__runInitializers(this, _disabled_extraInitializers), tslib_1.__runInitializers(this, _hoistToBody_initializers, void 0));
144
+ hoistToBody = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _hoistToBody_initializers, void 0));
148
145
  /** Sets the select DOM position to fixed */
149
- fixed = (tslib_1.__runInitializers(this, _hoistToBody_extraInitializers), tslib_1.__runInitializers(this, _fixed_initializers, void 0));
146
+ fixed = (__runInitializers(this, _hoistToBody_extraInitializers), __runInitializers(this, _fixed_initializers, void 0));
150
147
  /** Sets the margin between the select input and the dropdown */
151
- anchorMargin = (tslib_1.__runInitializers(this, _fixed_extraInitializers), tslib_1.__runInitializers(this, _anchorMargin_initializers, void 0));
148
+ anchorMargin = (__runInitializers(this, _fixed_extraInitializers), __runInitializers(this, _anchorMargin_initializers, void 0));
152
149
  /** Sets the select dropdown width to match content */
153
- naturalWidth = (tslib_1.__runInitializers(this, _anchorMargin_extraInitializers), tslib_1.__runInitializers(this, _naturalWidth_initializers, void 0));
154
- _value = tslib_1.__runInitializers(this, _naturalWidth_extraInitializers);
150
+ naturalWidth = (__runInitializers(this, _anchorMargin_extraInitializers), __runInitializers(this, _naturalWidth_initializers, void 0));
151
+ _value = __runInitializers(this, _naturalWidth_extraInitializers);
155
152
  get value() {
156
153
  if (this.foundation) {
157
154
  return this.foundation.getValue();
@@ -197,15 +194,15 @@ let MdcSelect = (() => {
197
194
  }
198
195
  async attaching() {
199
196
  const nextSibling = this.root.nextElementSibling;
200
- if (nextSibling?.tagName === mdc_select_helper_text_1.mdcHelperTextCssClasses.ROOT.toUpperCase()) {
201
- this.helperText = runtime_html_1.CustomElement.for(nextSibling).viewModel;
197
+ if (nextSibling?.tagName === mdcHelperTextCssClasses.ROOT.toUpperCase()) {
198
+ this.helperText = CustomElement.for(nextSibling).viewModel;
202
199
  await this.helperText.initialised;
203
200
  }
204
201
  }
205
202
  beforeFoundationCreated() {
206
- const leadingIconEl = this.root.querySelector(`${select_1.strings.LEADING_ICON_SELECTOR}`);
203
+ const leadingIconEl = this.root.querySelector(`${strings.LEADING_ICON_SELECTOR}`);
207
204
  if (leadingIconEl) {
208
- this.leadingIcon = runtime_html_1.CustomAttribute.for(leadingIconEl, mdc_select_icon_1.mdcIconStrings.ATTRIBUTE)?.viewModel;
205
+ this.leadingIcon = CustomAttribute.for(leadingIconEl, mdcIconStrings.ATTRIBUTE)?.viewModel;
209
206
  }
210
207
  this.menu.list_.singleSelection = true;
211
208
  }
@@ -229,7 +226,7 @@ let MdcSelect = (() => {
229
226
  ...this.getOutlineAdapterMethods(),
230
227
  ...this.getLabelAdapterMethods(),
231
228
  };
232
- return new mdc_select_foundation_aurelia_1.MDCSelectFoundationAurelia(adapter, this.getFoundationMap());
229
+ return new MDCSelectFoundationAurelia(adapter, this.getFoundationMap());
233
230
  }
234
231
  getSelectAdapterMethods() {
235
232
  return {
@@ -257,7 +254,7 @@ let MdcSelect = (() => {
257
254
  : '';
258
255
  },
259
256
  closeMenu: () => { this.menu.open = false; },
260
- getAnchorElement: () => this.root.querySelector(select_1.strings.SELECT_ANCHOR_SELECTOR),
257
+ getAnchorElement: () => this.root.querySelector(strings.SELECT_ANCHOR_SELECTOR),
261
258
  setMenuAnchorElement: (anchorEl) => {
262
259
  this.menu.anchor = anchorEl;
263
260
  },
@@ -281,7 +278,7 @@ let MdcSelect = (() => {
281
278
  this.menu.items[index].focus();
282
279
  },
283
280
  getMenuItemCount: () => this.menu.items.length,
284
- getMenuItemValues: () => this.menu.items.map(x => runtime_html_1.CustomElement.for(x).viewModel.value),
281
+ getMenuItemValues: () => this.menu.items.map(x => CustomElement.for(x).viewModel.value),
285
282
  getMenuItemTextAtIndex: (index) => this.menu.getPrimaryTextAtIndex(index),
286
283
  isTypeaheadInProgress: () => this.menu.typeaheadInProgress,
287
284
  typeaheadMatchItem: (nextChar, startingIndex) => this.menu.typeaheadMatchItem(nextChar, startingIndex),
@@ -301,7 +298,7 @@ let MdcSelect = (() => {
301
298
  deactivateBottomLine: () => this.lineRipple?.deactivate(),
302
299
  notifyChange: (value) => {
303
300
  const index = this.selectedIndex;
304
- this.emit(select_1.strings.CHANGE_EVENT, { value, index }, true /* shouldBubble */);
301
+ this.emit(strings.CHANGE_EVENT, { value, index }, true /* shouldBubble */);
305
302
  this.emit('change', { value, index }, true /* shouldBubble */);
306
303
  },
307
304
  };
@@ -332,7 +329,7 @@ let MdcSelect = (() => {
332
329
  this.foundation?.handleBlur();
333
330
  // if class is set it means the menu is open,
334
331
  // do not emit blur since "conceptually" the element is still active
335
- if (!this.root.classList.contains(select_1.cssClasses.FOCUSED)) {
332
+ if (!this.root.classList.contains(cssClasses.FOCUSED)) {
336
333
  this.emit('blur', {}, true);
337
334
  }
338
335
  }
@@ -352,7 +349,7 @@ let MdcSelect = (() => {
352
349
  }
353
350
  handleMenuClosed() {
354
351
  this.foundation?.handleMenuClosed();
355
- if (!this.root.classList.contains(select_1.cssClasses.FOCUSED)) {
352
+ if (!this.root.classList.contains(cssClasses.FOCUSED)) {
356
353
  this.emit('blur', {}, true);
357
354
  }
358
355
  }
@@ -391,71 +388,71 @@ let MdcSelect = (() => {
391
388
  };
392
389
  return MdcSelect = _classThis;
393
390
  })();
394
- exports.MdcSelect = MdcSelect;
391
+ export { MdcSelect };
395
392
  function defineMdcSelectElementApis(element) {
396
393
  Object.defineProperties(element, {
397
394
  value: {
398
395
  get() {
399
- return runtime_html_1.CustomElement.for(this).viewModel.value;
396
+ return CustomElement.for(this).viewModel.value;
400
397
  },
401
398
  set(value) {
402
399
  // aurelia binding converts "undefined" and "null" into empty string
403
400
  // this does not translate well into "empty" menu items when several selects are bound to the same field
404
- runtime_html_1.CustomElement.for(this).viewModel.value = value === '' ? undefined : value;
401
+ CustomElement.for(this).viewModel.value = value === '' ? undefined : value;
405
402
  },
406
403
  configurable: true
407
404
  },
408
405
  options: {
409
406
  get() {
410
- return runtime_html_1.CustomElement.for(this).viewModel.root.querySelectorAll('.mdc-list-item');
407
+ return CustomElement.for(this).viewModel.root.querySelectorAll('.mdc-list-item');
411
408
  },
412
409
  configurable: true
413
410
  },
414
411
  selectedIndex: {
415
412
  get() {
416
- return runtime_html_1.CustomElement.for(this).viewModel.selectedIndex;
413
+ return CustomElement.for(this).viewModel.selectedIndex;
417
414
  },
418
415
  set(value) {
419
- runtime_html_1.CustomElement.for(this).viewModel.selectedIndex = value;
416
+ CustomElement.for(this).viewModel.selectedIndex = value;
420
417
  },
421
418
  configurable: true
422
419
  },
423
420
  valid: {
424
421
  get() {
425
- return runtime_html_1.CustomElement.for(this).viewModel.valid;
422
+ return CustomElement.for(this).viewModel.valid;
426
423
  },
427
424
  set(value) {
428
- runtime_html_1.CustomElement.for(this).viewModel.valid = value;
425
+ CustomElement.for(this).viewModel.valid = value;
429
426
  },
430
427
  configurable: true
431
428
  },
432
429
  addError: {
433
430
  value(error) {
434
- runtime_html_1.CustomElement.for(this).viewModel.addError(error);
431
+ CustomElement.for(this).viewModel.addError(error);
435
432
  },
436
433
  configurable: true
437
434
  },
438
435
  removeError: {
439
436
  value(error) {
440
- runtime_html_1.CustomElement.for(this).viewModel.removeError(error);
437
+ CustomElement.for(this).viewModel.removeError(error);
441
438
  },
442
439
  configurable: true
443
440
  },
444
441
  renderErrors: {
445
442
  value() {
446
- runtime_html_1.CustomElement.for(this).viewModel.renderErrors();
443
+ CustomElement.for(this).viewModel.renderErrors();
447
444
  },
448
445
  configurable: true
449
446
  },
450
447
  focus: {
451
448
  value() {
452
- runtime_html_1.CustomElement.for(this).viewModel.focus();
449
+ CustomElement.for(this).viewModel.focus();
453
450
  },
454
451
  configurable: true
455
452
  },
456
453
  blur: {
457
454
  value() {
458
- runtime_html_1.CustomElement.for(this).viewModel.blur();
455
+ CustomElement.for(this).viewModel.blur();
459
456
  },
460
457
  configurable: true
461
458
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mdc-select.js","sourceRoot":"","sources":["../../src/select/mdc-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { MdcComponent, IValidatedElement, IError, booleanAttr } from '../base';\nimport { cssClasses, MDCSelectFoundationMap, MDCSelectEventDetail, strings } from '@material/select';\nimport { inject, customElement, INode, IPlatform, bindable } from 'aurelia';\nimport { MdcSelectIcon, IMdcSelectIconElement, mdcIconStrings } from './mdc-select-icon';\nimport { MdcSelectHelperText, mdcHelperTextCssClasses } from './mdc-select-helper-text/mdc-select-helper-text';\nimport { MDCNotchedOutline } from '@material/notched-outline';\nimport { MDCMenuItemEvent, Corner } from '@material/menu';\nimport { MDCSelectFoundationAurelia } from './mdc-select-foundation-aurelia';\nimport { MDCSelectAdapterAurelia } from './mdc-select-adapter-aurelia';\nimport { MDCMenuDistance } from '@material/menu-surface';\nimport { processContent, BindingMode, CustomElement, CustomAttribute } from '@aurelia/runtime-html';\nimport template from './mdc-select.html?raw';\nimport { MdcFloatingLabel } from '../floating-label/mdc-floating-label';\nimport { MdcLineRipple } from '../line-ripple/mdc-line-ripple';\nimport { MdcListItem } from '../list/mdc-list-item/mdc-list-item';\nimport { MdcMenu } from '../menu/mdc-menu';\nimport { MdcConfiguration } from '../mdc-configuration';\n\nstrings.CHANGE_EVENT = strings.CHANGE_EVENT.toLowerCase();\n\nlet selectId = 0;\n\n/**\n * @selector mdc-select\n * @emits mdcselect:change | Emitted if user changed the value\n */\n@inject(Element, IPlatform, MdcConfiguration)\n@customElement({ name: 'mdc-select', template })\n@processContent(function processContent(node: INode, platform: IPlatform) {\n const el = node as Element;\n\n const leadingIcon = el.querySelector(`[${mdcIconStrings.ATTRIBUTE}]`);\n leadingIcon?.remove();\n\n const template = platform.document.createElement('template');\n template.setAttribute('au-slot', '');\n template.innerHTML = el.innerHTML;\n el.innerHTML = '';\n el.appendChild(template);\n\n // move icon to the slot - this allows omitting slot specification\n if (leadingIcon) {\n const div = platform.document.createElement('div');\n div.appendChild(leadingIcon);\n const iconTemplate = platform.document.createElement('template');\n iconTemplate.setAttribute('au-slot', 'leading-icon');\n iconTemplate.innerHTML = div.innerHTML;\n el.appendChild(iconTemplate);\n }\n}\n)\nexport class MdcSelect extends MdcComponent<MDCSelectFoundationAurelia> {\n constructor(root: HTMLElement, private platform: IPlatform, private configuration: MdcConfiguration) {\n super(root);\n this.outlined = this.configuration.select.outlined;\n defineMdcSelectElementApis(this.root);\n this.root.id = this.id;\n }\n\n id: string = `mdc-select-${++selectId}`;\n public menu: MdcMenu;\n private selectAnchor: HTMLElement;\n private selectedText: HTMLElement;\n\n private menuElement?: Element;\n\n get items(): MdcListItem[] | undefined {\n return this.menu.list_?.items;\n }\n\n private leadingIcon?: MdcSelectIcon;\n\n private helperText?: MdcSelectHelperText;\n private lineRipple?: MdcLineRipple;\n private mdcLabel: MdcFloatingLabel;\n private outline?: MDCNotchedOutline;\n errors = new Map<IError, boolean>();\n\n /** Sets the select label */\n @bindable()\n label: string;\n labelChanged() {\n this.platform.domQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Styles the select as an outlined select */\n @bindable({ set: booleanAttr })\n outlined?: boolean;\n outlinedChanged() {\n this.platform.domQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Makes the value required */\n @bindable({ set: booleanAttr })\n required: boolean;\n requiredChanged() {\n if (this.required) {\n this.selectAnchor?.setAttribute('aria-required', 'true');\n } else {\n this.selectAnchor?.removeAttribute('aria-required');\n }\n this.foundation?.setRequired(this.required ?? false);\n this.platform.domWriteQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Enables/disables the select */\n @bindable({ set: booleanAttr })\n disabled?: boolean;\n disabledChanged() {\n if (this.disabled !== undefined) {\n this.foundation?.setDisabled(this.disabled);\n }\n }\n\n /** Hoists the select DOM to document.body */\n @bindable({ set: booleanAttr, mode: BindingMode.oneTime })\n hoistToBody: boolean;\n\n /** Sets the select DOM position to fixed */\n @bindable({ set: booleanAttr, mode: BindingMode.oneTime })\n fixed: boolean;\n\n /** Sets the margin between the select input and the dropdown */\n @bindable()\n anchorMargin: Partial<MDCMenuDistance>;\n\n /** Sets the select dropdown width to match content */\n @bindable({ set: booleanAttr })\n naturalWidth: boolean;\n\n private _value: unknown;\n get value(): unknown {\n if (this.foundation) {\n return this.foundation.getValue();\n } else {\n return this._value;\n }\n }\n\n set value(value: unknown) {\n this.setValue(value);\n }\n\n setValue(value: unknown, skipNotify: boolean = false) {\n this._value = value;\n if (this.foundation) {\n this.foundation.setValue(value, skipNotify);\n this.foundation.layout();\n }\n }\n\n get valid(): boolean {\n return this.foundation?.isValid() ?? true;\n }\n\n set valid(value: boolean) {\n this.foundation?.setValid(value);\n }\n\n get selectedIndex(): number {\n return this.foundation!.getSelectedIndex();\n }\n\n set selectedIndex(selectedIndex: number) {\n this.foundation?.setSelectedIndex(selectedIndex, /** closeMenu */ true);\n }\n\n addError(error: IError) {\n this.errors.set(error, true);\n this.valid = false;\n }\n\n removeError(error: IError) {\n this.errors.delete(error);\n this.valid = this.errors.size === 0;\n }\n\n renderErrors() {\n if (this.helperText) {\n this.helperText.errors = Array.from(this.errors.keys()).filter(x => x.message !== null).map(x => x.message!);\n }\n }\n\n async attaching() {\n const nextSibling = this.root.nextElementSibling;\n if (nextSibling?.tagName === mdcHelperTextCssClasses.ROOT.toUpperCase()) {\n this.helperText = CustomElement.for<MdcSelectHelperText>(nextSibling).viewModel;\n await this.helperText.initialised;\n }\n }\n\n beforeFoundationCreated() {\n const leadingIconEl = this.root.querySelector<IMdcSelectIconElement>(`${strings.LEADING_ICON_SELECTOR}`);\n if (leadingIconEl) {\n this.leadingIcon = CustomAttribute.for<MdcSelectIcon>(leadingIconEl, mdcIconStrings.ATTRIBUTE)?.viewModel;\n }\n this.menu.list_!.singleSelection = true;\n }\n\n initialSyncWithDOM() {\n // set initial value without emitting change events\n this.foundation?.setValue(this._value, true);\n this.foundation?.layout();\n this.errors = new Map<IError, boolean>();\n this.valid = true;\n\n this.labelChanged();\n this.disabledChanged();\n this.outlinedChanged();\n this.requiredChanged();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCSelectAdapterAurelia = {\n ...this.getSelectAdapterMethods(),\n ...this.getCommonAdapterMethods(),\n ...this.getOutlineAdapterMethods(),\n ...this.getLabelAdapterMethods(),\n };\n return new MDCSelectFoundationAurelia(adapter, this.getFoundationMap());\n }\n\n private getSelectAdapterMethods() {\n return {\n setSelectedText: (text: string) => {\n this.selectedText.textContent = text;\n },\n isSelectAnchorFocused: () => document.activeElement === this.selectAnchor,\n getSelectAnchorAttr: (attr: string) => this.selectAnchor.getAttribute(attr),\n setSelectAnchorAttr: (attr: string, value: string) => {\n this.selectAnchor.setAttribute(attr, value);\n },\n removeSelectAnchorAttr: (attr: string) => {\n this.selectAnchor.removeAttribute(attr);\n },\n addMenuClass: (className: string) => {\n this.menuElement?.classList.add(className);\n },\n removeMenuClass: (className: string) => {\n this.menuElement?.classList.remove(className);\n },\n openMenu: () => {\n this.menu.open = true;\n this.menu.root.style.minWidth = this.menu.root.style.maxWidth = (this.hoistToBody || this.fixed) && !this.naturalWidth\n ? `${this.root.clientWidth}px`\n : '';\n },\n closeMenu: () => { this.menu.open = false; },\n getAnchorElement: () => this.root.querySelector(strings.SELECT_ANCHOR_SELECTOR)!,\n setMenuAnchorElement: (anchorEl: HTMLElement) => {\n this.menu.anchor = anchorEl;\n },\n setMenuAnchorCorner: (anchorCorner: Corner) => {\n this.menu.setAnchorCorner(anchorCorner);\n },\n setMenuWrapFocus: (wrapFocus: boolean) => {\n this.menu.wrapFocus = wrapFocus;\n },\n getSelectedIndex: () => {\n const index = this.menu.selectedIndex;\n return index instanceof Array ? index[0] : index;\n },\n setSelectedIndex: (index: number) => {\n this.menu.selectedIndex = index;\n },\n removeAttributeAtIndex: (index: number, attributeName: string) => {\n this.menu.items[index].removeAttribute(attributeName);\n },\n focusMenuItemAtIndex: (index: number) => {\n (this.menu.items[index] as HTMLElement).focus();\n },\n getMenuItemCount: () => this.menu.items.length,\n getMenuItemValues: () => this.menu.items.map(x => CustomElement.for<MdcListItem>(x).viewModel.value),\n getMenuItemTextAtIndex: (index: number) => this.menu.getPrimaryTextAtIndex(index),\n isTypeaheadInProgress: () => this.menu.typeaheadInProgress,\n typeaheadMatchItem: (nextChar: string, startingIndex: number) => this.menu.typeaheadMatchItem(nextChar, startingIndex),\n };\n }\n\n private getCommonAdapterMethods() {\n return {\n addClass: (className: string) => {\n this.root.classList.add(className);\n },\n removeClass: (className: string) => {\n this.root.classList.remove(className);\n },\n hasClass: (className: string) => this.root.classList.contains(className),\n setRippleCenter: (normalizedX: number) => this.lineRipple?.setRippleCenter(normalizedX),\n activateBottomLine: () => this.lineRipple?.activate(),\n deactivateBottomLine: () => this.lineRipple?.deactivate(),\n notifyChange: (value: string) => {\n const index = this.selectedIndex;\n this.emit<MDCSelectEventDetail>(strings.CHANGE_EVENT, { value, index }, true /* shouldBubble */);\n this.emit<MDCSelectEventDetail>('change', { value, index }, true /* shouldBubble */);\n },\n };\n }\n\n private getOutlineAdapterMethods() {\n return {\n hasOutline: () => Boolean(this.outline),\n notchOutline: (labelWidth: number) => this.outline?.notch(labelWidth),\n closeOutline: () => this.outline?.closeNotch(),\n };\n }\n\n private getLabelAdapterMethods() {\n return {\n hasLabel: () => !!this.mdcLabel,\n floatLabel: (shouldFloat: boolean) => this.mdcLabel?.float(shouldFloat),\n getLabelWidth: () => this.mdcLabel ? this.mdcLabel.getWidth() : 0,\n setLabelRequired: (isRequired: boolean) => this.mdcLabel?.setRequired(isRequired),\n };\n }\n\n handleChange() {\n this.foundation?.handleChange();\n this.emit('change', {}, true);\n }\n\n handleFocus() {\n this.foundation?.handleFocus();\n }\n\n handleBlur() {\n this.foundation?.handleBlur();\n // if class is set it means the menu is open,\n // do not emit blur since \"conceptually\" the element is still active\n if (!this.root.classList.contains(cssClasses.FOCUSED)) {\n this.emit('blur', {}, true);\n }\n }\n\n handleClick(evt: MouseEvent) {\n this.selectAnchor.focus();\n this.foundation?.handleClick(this.getNormalizedXCoordinate(evt));\n }\n\n handleKeydown(evt: KeyboardEvent) {\n this.foundation?.handleKeydown(evt);\n return true;\n }\n\n handleMenuItemAction(evt: MDCMenuItemEvent) {\n this.foundation?.handleMenuItemAction(evt.detail.index);\n }\n\n handleMenuOpened() {\n this.foundation?.handleMenuOpened();\n }\n\n handleMenuClosed() {\n this.foundation?.handleMenuClosed();\n if (!this.root.classList.contains(cssClasses.FOCUSED)) {\n this.emit('blur', {}, true);\n }\n }\n\n handleItemsChanged() {\n this.foundation?.layoutOptions();\n this.foundation?.layout();\n }\n\n focus() {\n this.selectAnchor.focus();\n }\n\n blur() {\n this.selectAnchor.blur();\n }\n\n /**\n * @hidden\n * Calculates where the line ripple should start based on the x coordinate within the component.\n */\n private getNormalizedXCoordinate(evt: MouseEvent | TouchEvent): number {\n const targetClientRect = (evt.target as Element).getBoundingClientRect();\n const xCoordinate =\n this.isTouchEvent(evt) ? evt.touches[0].clientX : evt.clientX;\n return xCoordinate - targetClientRect.left;\n }\n\n private isTouchEvent(evt: MouseEvent | TouchEvent): evt is TouchEvent {\n return Boolean((evt as TouchEvent).touches);\n }\n\n /**\n * @hidden\n * Returns a map of all subcomponents to subfoundations.\n */\n private getFoundationMap(): Partial<MDCSelectFoundationMap> {\n return {\n helperText: this.helperText?.foundation,\n leadingIcon: this.leadingIcon?.foundation\n };\n }\n}\n\n/** @hidden */\nexport interface IMdcSelectElement extends IValidatedElement {\n $au: {\n 'au:resource:custom-element': {\n viewModel: MdcSelect;\n };\n };\n value: unknown;\n}\n\nfunction defineMdcSelectElementApis(element: HTMLElement) {\n Object.defineProperties(element, {\n value: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.value;\n },\n set(this: IMdcSelectElement, value: unknown) {\n // aurelia binding converts \"undefined\" and \"null\" into empty string\n // this does not translate well into \"empty\" menu items when several selects are bound to the same field\n CustomElement.for<MdcSelect>(this).viewModel.value = value === '' ? undefined : value;\n },\n configurable: true\n },\n options: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.root.querySelectorAll('.mdc-list-item');\n },\n configurable: true\n },\n selectedIndex: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.selectedIndex;\n },\n set(this: IMdcSelectElement, value: number) {\n CustomElement.for<MdcSelect>(this).viewModel.selectedIndex = value;\n },\n configurable: true\n },\n valid: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.valid;\n },\n set(this: IMdcSelectElement, value: boolean) {\n CustomElement.for<MdcSelect>(this).viewModel.valid = value;\n },\n configurable: true\n },\n addError: {\n value(this: IMdcSelectElement, error: IError) {\n CustomElement.for<MdcSelect>(this).viewModel.addError(error);\n },\n configurable: true\n },\n removeError: {\n value(this: IMdcSelectElement, error: IError) {\n CustomElement.for<MdcSelect>(this).viewModel.removeError(error);\n },\n configurable: true\n },\n renderErrors: {\n value(this: IMdcSelectElement): void {\n CustomElement.for<MdcSelect>(this).viewModel.renderErrors();\n },\n configurable: true\n },\n focus: {\n value(this: IMdcSelectElement) {\n CustomElement.for<MdcSelect>(this).viewModel.focus();\n },\n configurable: true\n },\n blur: {\n value(this: IMdcSelectElement) {\n CustomElement.for<MdcSelect>(this).viewModel.blur();\n },\n configurable: true\n }\n });\n}\n"]}
1
+ {"version":3,"file":"mdc-select.js","sourceRoot":"","sources":["../../src/select/mdc-select.ts"],"names":[],"mappings":"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","sourcesContent":["import { MdcComponent, IValidatedElement, IError, booleanAttr } from '../base';\nimport { cssClasses, MDCSelectFoundationMap, MDCSelectEventDetail, strings } from '@material/select';\nimport { inject, customElement, INode, IPlatform, bindable } from 'aurelia';\nimport { MdcSelectIcon, IMdcSelectIconElement, mdcIconStrings } from './mdc-select-icon';\nimport { MdcSelectHelperText, mdcHelperTextCssClasses } from './mdc-select-helper-text/mdc-select-helper-text';\nimport { MDCNotchedOutline } from '@material/notched-outline';\nimport { MDCMenuItemEvent, Corner } from '@material/menu';\nimport { MDCSelectFoundationAurelia } from './mdc-select-foundation-aurelia';\nimport { MDCSelectAdapterAurelia } from './mdc-select-adapter-aurelia';\nimport { MDCMenuDistance } from '@material/menu-surface';\nimport { processContent, BindingMode, CustomElement, CustomAttribute } from '@aurelia/runtime-html';\nimport template from './mdc-select.html?raw';\nimport { MdcFloatingLabel } from '../floating-label/mdc-floating-label';\nimport { MdcLineRipple } from '../line-ripple/mdc-line-ripple';\nimport { MdcListItem } from '../list/mdc-list-item/mdc-list-item';\nimport { MdcMenu } from '../menu/mdc-menu';\nimport { MdcConfiguration } from '../mdc-configuration';\n\nstrings.CHANGE_EVENT = strings.CHANGE_EVENT.toLowerCase();\n\nlet selectId = 0;\n\n/**\n * @selector mdc-select\n * @emits mdcselect:change | Emitted if user changed the value\n */\n@inject(Element, IPlatform, MdcConfiguration)\n@customElement({ name: 'mdc-select', template })\n@processContent(function processContent(node: INode, platform: IPlatform) {\n const el = node as Element;\n\n const leadingIcon = el.querySelector(`[${mdcIconStrings.ATTRIBUTE}]`);\n leadingIcon?.remove();\n\n const template = platform.document.createElement('template');\n template.setAttribute('au-slot', '');\n template.innerHTML = el.innerHTML;\n el.innerHTML = '';\n el.appendChild(template);\n\n // move icon to the slot - this allows omitting slot specification\n if (leadingIcon) {\n const div = platform.document.createElement('div');\n div.appendChild(leadingIcon);\n const iconTemplate = platform.document.createElement('template');\n iconTemplate.setAttribute('au-slot', 'leading-icon');\n iconTemplate.innerHTML = div.innerHTML;\n el.appendChild(iconTemplate);\n }\n}\n)\nexport class MdcSelect extends MdcComponent<MDCSelectFoundationAurelia> {\n constructor(root: HTMLElement, private platform: IPlatform, private configuration: MdcConfiguration) {\n super(root);\n this.outlined = this.configuration.select.outlined;\n defineMdcSelectElementApis(this.root);\n this.root.id = this.id;\n }\n\n id: string = `mdc-select-${++selectId}`;\n public menu: MdcMenu;\n private selectAnchor: HTMLElement;\n private selectedText: HTMLElement;\n\n private menuElement?: Element;\n\n get items(): MdcListItem[] | undefined {\n return this.menu.list_?.items;\n }\n\n private leadingIcon?: MdcSelectIcon;\n\n private helperText?: MdcSelectHelperText;\n private lineRipple?: MdcLineRipple;\n private mdcLabel: MdcFloatingLabel;\n private outline?: MDCNotchedOutline;\n errors = new Map<IError, boolean>();\n\n /** Sets the select label */\n @bindable()\n label: string;\n labelChanged() {\n this.platform.domQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Styles the select as an outlined select */\n @bindable({ set: booleanAttr })\n outlined?: boolean;\n outlinedChanged() {\n this.platform.domQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Makes the value required */\n @bindable({ set: booleanAttr })\n required: boolean;\n requiredChanged() {\n if (this.required) {\n this.selectAnchor?.setAttribute('aria-required', 'true');\n } else {\n this.selectAnchor?.removeAttribute('aria-required');\n }\n this.foundation?.setRequired(this.required ?? false);\n this.platform.domWriteQueue.queueTask(() => this.foundation?.layout());\n }\n\n /** Enables/disables the select */\n @bindable({ set: booleanAttr })\n disabled?: boolean;\n disabledChanged() {\n if (this.disabled !== undefined) {\n this.foundation?.setDisabled(this.disabled);\n }\n }\n\n /** Hoists the select DOM to document.body */\n @bindable({ set: booleanAttr, mode: BindingMode.oneTime })\n hoistToBody: boolean;\n\n /** Sets the select DOM position to fixed */\n @bindable({ set: booleanAttr, mode: BindingMode.oneTime })\n fixed: boolean;\n\n /** Sets the margin between the select input and the dropdown */\n @bindable()\n anchorMargin: Partial<MDCMenuDistance>;\n\n /** Sets the select dropdown width to match content */\n @bindable({ set: booleanAttr })\n naturalWidth: boolean;\n\n private _value: unknown;\n get value(): unknown {\n if (this.foundation) {\n return this.foundation.getValue();\n } else {\n return this._value;\n }\n }\n\n set value(value: unknown) {\n this.setValue(value);\n }\n\n setValue(value: unknown, skipNotify: boolean = false) {\n this._value = value;\n if (this.foundation) {\n this.foundation.setValue(value, skipNotify);\n this.foundation.layout();\n }\n }\n\n get valid(): boolean {\n return this.foundation?.isValid() ?? true;\n }\n\n set valid(value: boolean) {\n this.foundation?.setValid(value);\n }\n\n get selectedIndex(): number {\n return this.foundation!.getSelectedIndex();\n }\n\n set selectedIndex(selectedIndex: number) {\n this.foundation?.setSelectedIndex(selectedIndex, /** closeMenu */ true);\n }\n\n addError(error: IError) {\n this.errors.set(error, true);\n this.valid = false;\n }\n\n removeError(error: IError) {\n this.errors.delete(error);\n this.valid = this.errors.size === 0;\n }\n\n renderErrors() {\n if (this.helperText) {\n this.helperText.errors = Array.from(this.errors.keys()).filter(x => x.message !== null).map(x => x.message!);\n }\n }\n\n async attaching() {\n const nextSibling = this.root.nextElementSibling;\n if (nextSibling?.tagName === mdcHelperTextCssClasses.ROOT.toUpperCase()) {\n this.helperText = CustomElement.for<MdcSelectHelperText>(nextSibling).viewModel;\n await this.helperText.initialised;\n }\n }\n\n beforeFoundationCreated() {\n const leadingIconEl = this.root.querySelector<IMdcSelectIconElement>(`${strings.LEADING_ICON_SELECTOR}`);\n if (leadingIconEl) {\n this.leadingIcon = CustomAttribute.for<MdcSelectIcon>(leadingIconEl, mdcIconStrings.ATTRIBUTE)?.viewModel;\n }\n this.menu.list_!.singleSelection = true;\n }\n\n initialSyncWithDOM() {\n // set initial value without emitting change events\n this.foundation?.setValue(this._value, true);\n this.foundation?.layout();\n this.errors = new Map<IError, boolean>();\n this.valid = true;\n\n this.labelChanged();\n this.disabledChanged();\n this.outlinedChanged();\n this.requiredChanged();\n }\n\n getDefaultFoundation() {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n const adapter: MDCSelectAdapterAurelia = {\n ...this.getSelectAdapterMethods(),\n ...this.getCommonAdapterMethods(),\n ...this.getOutlineAdapterMethods(),\n ...this.getLabelAdapterMethods(),\n };\n return new MDCSelectFoundationAurelia(adapter, this.getFoundationMap());\n }\n\n private getSelectAdapterMethods() {\n return {\n setSelectedText: (text: string) => {\n this.selectedText.textContent = text;\n },\n isSelectAnchorFocused: () => document.activeElement === this.selectAnchor,\n getSelectAnchorAttr: (attr: string) => this.selectAnchor.getAttribute(attr),\n setSelectAnchorAttr: (attr: string, value: string) => {\n this.selectAnchor.setAttribute(attr, value);\n },\n removeSelectAnchorAttr: (attr: string) => {\n this.selectAnchor.removeAttribute(attr);\n },\n addMenuClass: (className: string) => {\n this.menuElement?.classList.add(className);\n },\n removeMenuClass: (className: string) => {\n this.menuElement?.classList.remove(className);\n },\n openMenu: () => {\n this.menu.open = true;\n this.menu.root.style.minWidth = this.menu.root.style.maxWidth = (this.hoistToBody || this.fixed) && !this.naturalWidth\n ? `${this.root.clientWidth}px`\n : '';\n },\n closeMenu: () => { this.menu.open = false; },\n getAnchorElement: () => this.root.querySelector(strings.SELECT_ANCHOR_SELECTOR)!,\n setMenuAnchorElement: (anchorEl: HTMLElement) => {\n this.menu.anchor = anchorEl;\n },\n setMenuAnchorCorner: (anchorCorner: Corner) => {\n this.menu.setAnchorCorner(anchorCorner);\n },\n setMenuWrapFocus: (wrapFocus: boolean) => {\n this.menu.wrapFocus = wrapFocus;\n },\n getSelectedIndex: () => {\n const index = this.menu.selectedIndex;\n return index instanceof Array ? index[0] : index;\n },\n setSelectedIndex: (index: number) => {\n this.menu.selectedIndex = index;\n },\n removeAttributeAtIndex: (index: number, attributeName: string) => {\n this.menu.items[index].removeAttribute(attributeName);\n },\n focusMenuItemAtIndex: (index: number) => {\n (this.menu.items[index] as HTMLElement).focus();\n },\n getMenuItemCount: () => this.menu.items.length,\n getMenuItemValues: () => this.menu.items.map(x => CustomElement.for<MdcListItem>(x).viewModel.value),\n getMenuItemTextAtIndex: (index: number) => this.menu.getPrimaryTextAtIndex(index),\n isTypeaheadInProgress: () => this.menu.typeaheadInProgress,\n typeaheadMatchItem: (nextChar: string, startingIndex: number) => this.menu.typeaheadMatchItem(nextChar, startingIndex),\n };\n }\n\n private getCommonAdapterMethods() {\n return {\n addClass: (className: string) => {\n this.root.classList.add(className);\n },\n removeClass: (className: string) => {\n this.root.classList.remove(className);\n },\n hasClass: (className: string) => this.root.classList.contains(className),\n setRippleCenter: (normalizedX: number) => this.lineRipple?.setRippleCenter(normalizedX),\n activateBottomLine: () => this.lineRipple?.activate(),\n deactivateBottomLine: () => this.lineRipple?.deactivate(),\n notifyChange: (value: string) => {\n const index = this.selectedIndex;\n this.emit<MDCSelectEventDetail>(strings.CHANGE_EVENT, { value, index }, true /* shouldBubble */);\n this.emit<MDCSelectEventDetail>('change', { value, index }, true /* shouldBubble */);\n },\n };\n }\n\n private getOutlineAdapterMethods() {\n return {\n hasOutline: () => Boolean(this.outline),\n notchOutline: (labelWidth: number) => this.outline?.notch(labelWidth),\n closeOutline: () => this.outline?.closeNotch(),\n };\n }\n\n private getLabelAdapterMethods() {\n return {\n hasLabel: () => !!this.mdcLabel,\n floatLabel: (shouldFloat: boolean) => this.mdcLabel?.float(shouldFloat),\n getLabelWidth: () => this.mdcLabel ? this.mdcLabel.getWidth() : 0,\n setLabelRequired: (isRequired: boolean) => this.mdcLabel?.setRequired(isRequired),\n };\n }\n\n handleChange() {\n this.foundation?.handleChange();\n this.emit('change', {}, true);\n }\n\n handleFocus() {\n this.foundation?.handleFocus();\n }\n\n handleBlur() {\n this.foundation?.handleBlur();\n // if class is set it means the menu is open,\n // do not emit blur since \"conceptually\" the element is still active\n if (!this.root.classList.contains(cssClasses.FOCUSED)) {\n this.emit('blur', {}, true);\n }\n }\n\n handleClick(evt: MouseEvent) {\n this.selectAnchor.focus();\n this.foundation?.handleClick(this.getNormalizedXCoordinate(evt));\n }\n\n handleKeydown(evt: KeyboardEvent) {\n this.foundation?.handleKeydown(evt);\n return true;\n }\n\n handleMenuItemAction(evt: MDCMenuItemEvent) {\n this.foundation?.handleMenuItemAction(evt.detail.index);\n }\n\n handleMenuOpened() {\n this.foundation?.handleMenuOpened();\n }\n\n handleMenuClosed() {\n this.foundation?.handleMenuClosed();\n if (!this.root.classList.contains(cssClasses.FOCUSED)) {\n this.emit('blur', {}, true);\n }\n }\n\n handleItemsChanged() {\n this.foundation?.layoutOptions();\n this.foundation?.layout();\n }\n\n focus() {\n this.selectAnchor.focus();\n }\n\n blur() {\n this.selectAnchor.blur();\n }\n\n /**\n * @hidden\n * Calculates where the line ripple should start based on the x coordinate within the component.\n */\n private getNormalizedXCoordinate(evt: MouseEvent | TouchEvent): number {\n const targetClientRect = (evt.target as Element).getBoundingClientRect();\n const xCoordinate =\n this.isTouchEvent(evt) ? evt.touches[0].clientX : evt.clientX;\n return xCoordinate - targetClientRect.left;\n }\n\n private isTouchEvent(evt: MouseEvent | TouchEvent): evt is TouchEvent {\n return Boolean((evt as TouchEvent).touches);\n }\n\n /**\n * @hidden\n * Returns a map of all subcomponents to subfoundations.\n */\n private getFoundationMap(): Partial<MDCSelectFoundationMap> {\n return {\n helperText: this.helperText?.foundation,\n leadingIcon: this.leadingIcon?.foundation\n };\n }\n}\n\n/** @hidden */\nexport interface IMdcSelectElement extends IValidatedElement {\n $au: {\n 'au:resource:custom-element': {\n viewModel: MdcSelect;\n };\n };\n value: unknown;\n}\n\nfunction defineMdcSelectElementApis(element: HTMLElement) {\n Object.defineProperties(element, {\n value: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.value;\n },\n set(this: IMdcSelectElement, value: unknown) {\n // aurelia binding converts \"undefined\" and \"null\" into empty string\n // this does not translate well into \"empty\" menu items when several selects are bound to the same field\n CustomElement.for<MdcSelect>(this).viewModel.value = value === '' ? undefined : value;\n },\n configurable: true\n },\n options: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.root.querySelectorAll('.mdc-list-item');\n },\n configurable: true\n },\n selectedIndex: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.selectedIndex;\n },\n set(this: IMdcSelectElement, value: number) {\n CustomElement.for<MdcSelect>(this).viewModel.selectedIndex = value;\n },\n configurable: true\n },\n valid: {\n get(this: IMdcSelectElement) {\n return CustomElement.for<MdcSelect>(this).viewModel.valid;\n },\n set(this: IMdcSelectElement, value: boolean) {\n CustomElement.for<MdcSelect>(this).viewModel.valid = value;\n },\n configurable: true\n },\n addError: {\n value(this: IMdcSelectElement, error: IError) {\n CustomElement.for<MdcSelect>(this).viewModel.addError(error);\n },\n configurable: true\n },\n removeError: {\n value(this: IMdcSelectElement, error: IError) {\n CustomElement.for<MdcSelect>(this).viewModel.removeError(error);\n },\n configurable: true\n },\n renderErrors: {\n value(this: IMdcSelectElement): void {\n CustomElement.for<MdcSelect>(this).viewModel.renderErrors();\n },\n configurable: true\n },\n focus: {\n value(this: IMdcSelectElement) {\n CustomElement.for<MdcSelect>(this).viewModel.focus();\n },\n configurable: true\n },\n blur: {\n value(this: IMdcSelectElement) {\n CustomElement.for<MdcSelect>(this).viewModel.blur();\n },\n configurable: true\n }\n });\n}\n"]}