@shortfuse/materialdesignweb 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/.browserslistrc +2 -1
  2. package/.eslintrc.json +59 -8
  3. package/.stylelintrc.json +94 -49
  4. package/CHANGELOG.md +12 -0
  5. package/README.md +1 -3
  6. package/adapters/datatable/column.js +27 -54
  7. package/adapters/datatable/index.js +69 -81
  8. package/adapters/dom/index.js +32 -47
  9. package/adapters/search/index.js +107 -133
  10. package/components/appbar/_spec.scss +77 -137
  11. package/components/banner/_spec.scss +28 -63
  12. package/components/bottomnav/_spec.scss +46 -54
  13. package/components/bottomnav/index.js +15 -20
  14. package/components/bottomnav/item.js +4 -5
  15. package/components/button/README.md +1 -1
  16. package/components/button/_spec.scss +43 -42
  17. package/components/button/_theme.scss +27 -50
  18. package/components/card/_spec.scss +61 -69
  19. package/components/chip/_spec.scss +21 -44
  20. package/components/chip/_theme.scss +79 -151
  21. package/components/chip/index.js +6 -4
  22. package/components/datatable/_spec.scss +36 -99
  23. package/components/datatable/_theme.scss +98 -124
  24. package/components/datatable/cell.js +1 -2
  25. package/components/datatable/columnheader.js +1 -2
  26. package/components/datatable/index.js +33 -47
  27. package/components/datatable/row.js +4 -5
  28. package/components/dialog/_spec.scss +53 -63
  29. package/components/dialog/_theme.scss +7 -0
  30. package/components/dialog/index.js +62 -88
  31. package/components/divider/_spec.scss +6 -8
  32. package/components/elevation/_spec.scss +1 -1
  33. package/components/fab/_spec.scss +30 -42
  34. package/components/fab/index.js +4 -8
  35. package/components/grid/_spec.scss +68 -211
  36. package/components/layout/_mixins.scss +0 -22
  37. package/components/layout/_spec.scss +267 -363
  38. package/components/layout/_theme.scss +10 -35
  39. package/components/layout/index.js +40 -50
  40. package/components/list/_spec.scss +57 -91
  41. package/components/list/_theme.scss +75 -84
  42. package/components/list/content.js +9 -13
  43. package/components/list/index.js +34 -38
  44. package/components/list/item.js +8 -11
  45. package/components/list/secondary.js +8 -9
  46. package/components/menu/_spec.scss +134 -167
  47. package/components/menu/index.js +45 -61
  48. package/components/menu/item.js +11 -19
  49. package/components/progress/_spec.scss +43 -34
  50. package/components/selection/_spec.scss +123 -133
  51. package/components/selection/_theme.scss +88 -120
  52. package/components/selection/index.js +9 -15
  53. package/components/selection/input.js +3 -5
  54. package/components/selection/radiogroup.js +8 -15
  55. package/components/slider/_spec.scss +23 -28
  56. package/components/snackbar/_spec.scss +17 -62
  57. package/components/snackbar/index.js +15 -21
  58. package/components/tab/_spec.scss +35 -50
  59. package/components/tab/content.js +33 -28
  60. package/components/tab/index.js +30 -33
  61. package/components/tab/item.js +4 -5
  62. package/components/tab/list.js +22 -36
  63. package/components/textfield/README.md +2 -2
  64. package/components/textfield/_spec.scss +241 -287
  65. package/components/textfield/_theme.scss +197 -232
  66. package/components/textfield/index.js +8 -16
  67. package/components/tooltip/_spec.scss +23 -26
  68. package/components/type/_spec.scss +19 -16
  69. package/core/_breakpoint.scss +33 -33
  70. package/core/_elevation.scss +40 -0
  71. package/core/_length.scss +0 -1
  72. package/core/_platform.scss +0 -22
  73. package/core/_type.scss +7 -6
  74. package/core/aria/button.js +4 -5
  75. package/core/aria/keyboard.js +1 -2
  76. package/core/aria/rovingtabindex.js +14 -17
  77. package/core/aria/tab.js +1 -2
  78. package/core/dom.js +18 -109
  79. package/core/overlay/_spec.scss +5 -8
  80. package/core/overlay/_theme.scss +126 -150
  81. package/core/overlay/index.js +19 -32
  82. package/core/ripple/_spec.scss +16 -17
  83. package/core/ripple/_theme.scss +13 -33
  84. package/core/ripple/index.js +36 -44
  85. package/core/theme/_aliases.scss +15 -0
  86. package/core/theme/_config.scss +8 -2
  87. package/core/theme/_functions.scss +22 -0
  88. package/core/theme/_palettes.scss +0 -1
  89. package/core/{color → theme}/_spec.scss +0 -0
  90. package/core/theme/_theme.scss +268 -0
  91. package/core/theme/index.scss +4 -0
  92. package/core/transition/index.js +73 -76
  93. package/docs/_flex.scss +7 -1
  94. package/docs/_menuoptions.js +2 -2
  95. package/docs/_partials/_appbar.eta +12 -14
  96. package/docs/_partials/_header.eta +41 -44
  97. package/docs/_sample-utils.js +15 -20
  98. package/docs/docs.scss +123 -87
  99. package/docs/framework.scss +26 -0
  100. package/docs/index.eta +2 -6
  101. package/docs/index.js +7 -0
  102. package/docs/pages/appbar.eta +22 -28
  103. package/docs/pages/bottomnav.js +17 -14
  104. package/docs/pages/button.js +10 -10
  105. package/docs/pages/card.js +20 -22
  106. package/docs/pages/chip.js +11 -13
  107. package/docs/pages/color.js +35 -36
  108. package/docs/pages/datatable.js +11 -15
  109. package/docs/pages/dialog.eta +9 -11
  110. package/docs/pages/dialog.js +6 -9
  111. package/docs/pages/dom.js +6 -9
  112. package/docs/pages/elevation.eta +10 -10
  113. package/docs/pages/fab.js +2 -3
  114. package/docs/pages/grid.js +5 -5
  115. package/docs/pages/list.js +1 -2
  116. package/docs/pages/menu.eta +17 -19
  117. package/docs/pages/menu.js +7 -11
  118. package/docs/pages/overlay.js +1 -2
  119. package/docs/pages/progress.eta +2 -2
  120. package/docs/pages/progress.js +1 -1
  121. package/docs/pages/ripple.js +1 -2
  122. package/docs/pages/search.eta +20 -24
  123. package/docs/pages/search.js +24 -41
  124. package/docs/pages/selection.eta +2 -6
  125. package/docs/pages/selection.js +3 -4
  126. package/docs/pages/snackbar.js +3 -4
  127. package/docs/pages/tab.eta +61 -75
  128. package/docs/pages/tab.js +16 -15
  129. package/docs/pages/textfield.eta +9 -8
  130. package/docs/pages/textfield.js +26 -23
  131. package/docs/pages/tooltip.eta +10 -12
  132. package/docs/pages/transition.js +5 -7
  133. package/docs/postrender.js +7 -5
  134. package/docs/pwa/pwa.eta +14 -16
  135. package/docs/pwa/pwa.js +19 -27
  136. package/docs/pwa/pwa.scss +12 -7
  137. package/docs/themes/theme-colored.scss +9 -11
  138. package/docs/themes/theme-default.scss +0 -14
  139. package/index.scss +27 -0
  140. package/jsconfig.json +7 -3
  141. package/package.json +26 -15
  142. package/tsconfig.json +16 -0
  143. package/{webpack.config.cjs → webpack.config.js} +105 -58
  144. package/components/template/_theme.scss +0 -27
  145. package/components/textfield/_mixins.scss +0 -52
  146. package/core/color/_theme.scss +0 -390
  147. package/core/color/index.scss +0 -2
  148. package/core/theme/_mixins.scss +0 -172
  149. package/core/theme/_variables.scss +0 -24
  150. package/docs/_mixins.pug +0 -155
  151. package/docs/pages/appbar.pug +0 -78
  152. package/docs/pages/bottomnav.pug +0 -137
  153. package/docs/pages/button.pug +0 -121
  154. package/docs/pages/card.pug +0 -74
  155. package/docs/pages/chip.pug +0 -91
  156. package/docs/pages/color.pug +0 -121
  157. package/docs/pages/datatable.pug +0 -283
  158. package/docs/pages/dialog.pug +0 -132
  159. package/docs/pages/dom.pug +0 -22
  160. package/docs/pages/elevation.pug +0 -25
  161. package/docs/pages/fab.pug +0 -66
  162. package/docs/pages/grid.pug +0 -95
  163. package/docs/pages/layout.pug +0 -7
  164. package/docs/pages/list.pug +0 -326
  165. package/docs/pages/menu.pug +0 -205
  166. package/docs/pages/overlay.pug +0 -55
  167. package/docs/pages/progress.pug +0 -16
  168. package/docs/pages/ripple.pug +0 -21
  169. package/docs/pages/search.pug +0 -165
  170. package/docs/pages/selection.pug +0 -74
  171. package/docs/pages/slider.pug +0 -17
  172. package/docs/pages/snackbar.pug +0 -60
  173. package/docs/pages/tab.pug +0 -304
  174. package/docs/pages/textfield.pug +0 -360
  175. package/docs/pages/tooltip.pug +0 -78
  176. package/docs/pages/transition.pug +0 -76
  177. package/docs/pages/type.pug +0 -29
  178. package/docs/pwa/_dialogs.pug +0 -96
  179. package/docs/pwa/_menus.pug +0 -11
  180. package/docs/pwa/pwa.pug +0 -325
  181. package/docs/spec.scss +0 -26
  182. package/docs/themes/_component-themes.scss +0 -26
  183. package/docs/themes/theme-colored-fallbacks.scss +0 -17
  184. package/docs/themes/theme-default-fallbacks.scss +0 -17
@@ -32,11 +32,11 @@
32
32
  <%~ includeFile(T, { button: { borderInk:true , text:'Unfocusable when inactive' }}) %>
33
33
  <p>HTML Ordered List with (#) representing DOM position</p>
34
34
  <ol>
35
- <li class="mdw-tabs__panel__active-hide">(1) Layer hidden when active (peek only)</li>
36
- <li class="mdw-tabs__panel__active-remove">(2) Layer removed when active (peek only)</li>
35
+ <li class="mdw-tab__panel__active-hide">(1) Layer hidden when active (peek only)</li>
36
+ <li class="mdw-tab__panel__active-remove">(2) Layer removed when active (peek only)</li>
37
37
  <li>(3) Always visible</li>
38
- <li class="mdw-tabs__panel__inactive-hide">(4) Layer hidden when inactive (active only)</li>
39
- <li class="mdw-tabs__panel__inactive-remove">(5) Layer removed when inactive (active only)</li>
38
+ <li class="mdw-tab__panel__inactive-hide">(4) Layer hidden when inactive (active only)</li>
39
+ <li class="mdw-tab__panel__inactive-remove">(5) Layer removed when inactive (active only)</li>
40
40
  <li>(6) Always visible</li>
41
41
  </ol>
42
42
  </div>
@@ -47,11 +47,11 @@
47
47
  <%~ includeFile(T, { button: { borderInk:true , text:'Unfocusable when inactive' }}) %>
48
48
  <p>HTML Ordered List with (#) representing DOM position</p>
49
49
  <ol>
50
- <li class="mdw-tabs__panel__active-hide">(1) Layer hidden when active (peek only)</li>
51
- <li class="mdw-tabs__panel__active-remove">(2) Layer removed when active (peek only)</li>
50
+ <li class="mdw-tab__panel__active-hide">(1) Layer hidden when active (peek only)</li>
51
+ <li class="mdw-tab__panel__active-remove">(2) Layer removed when active (peek only)</li>
52
52
  <li>(3) Always visible</li>
53
- <li class="mdw-tabs__panel__inactive-hide">(4) Layer hidden when inactive (active only)</li>
54
- <li class="mdw-tabs__panel__inactive-remove">(5) Layer removed when inactive (active only)</li>
53
+ <li class="mdw-tab__panel__inactive-hide">(4) Layer hidden when inactive (active only)</li>
54
+ <li class="mdw-tab__panel__inactive-remove">(5) Layer removed when inactive (active only)</li>
55
55
  <li>(6) Always visible</li>
56
56
  </ol>
57
57
  </div>
@@ -62,11 +62,11 @@
62
62
  <%~ includeFile(T, { button: { borderInk:true , text:'Unfocusable when inactive' }}) %>
63
63
  <p>HTML Ordered List with (#) representing DOM position</p>
64
64
  <ol>
65
- <li class="mdw-tabs__panel__active-hide">(1) Layer hidden when active (peek only)</li>
66
- <li class="mdw-tabs__panel__active-remove">(2) Layer removed when active (peek only)</li>
65
+ <li class="mdw-tab__panel__active-hide">(1) Layer hidden when active (peek only)</li>
66
+ <li class="mdw-tab__panel__active-remove">(2) Layer removed when active (peek only)</li>
67
67
  <li>(3) Always visible</li>
68
- <li class="mdw-tabs__panel__inactive-hide">(4) Layer hidden when inactive (active only)</li>
69
- <li class="mdw-tabs__panel__inactive-remove">(5) Layer removed when inactive (active only)</li>
68
+ <li class="mdw-tab__panel__inactive-hide">(4) Layer hidden when inactive (active only)</li>
69
+ <li class="mdw-tab__panel__inactive-remove">(5) Layer removed when inactive (active only)</li>
70
70
  <li>(6) Always visible</li>
71
71
  </ol>
72
72
  </div>
@@ -147,15 +147,13 @@
147
147
  <div class="render-fill">
148
148
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'cyan 700', dark:true }) %>
149
149
  <div class="mdw-appbar mdw-theme" mdw-surface="cyan 500" mdw-dark mdw-prominent>
150
- <div class="mdw-appbar__action">
151
- <div class="mdw-appbar__start">
152
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
153
- </div>
154
- <div class="mdw-appbar__title">Page title</div>
155
- <div class="mdw-appbar__end">
156
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
157
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
158
- </div>
150
+ <div class="mdw-appbar__start">
151
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
152
+ </div>
153
+ <div class="mdw-appbar__title">Page title</div>
154
+ <div class="mdw-appbar__end">
155
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
156
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
159
157
  </div>
160
158
  <div class="mdw-tab">
161
159
  <div class="mdw-tab__list">
@@ -180,15 +178,13 @@
180
178
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'cyan 700', dark:true }) %>
181
179
  <div class="mdw-tab">
182
180
  <div class="mdw-tab__list-wrapper mdw-appbar mdw-theme" mdw-surface="cyan 500" mdw-dark>
183
- <div class="mdw-appbar__action">
184
- <div class="mdw-appbar__start">
185
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
186
- </div>
187
- <div class="mdw-appbar__title">Page title</div>
188
- <div class="mdw-appbar__end">
189
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
190
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
191
- </div>
181
+ <div class="mdw-appbar__start">
182
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
183
+ </div>
184
+ <div class="mdw-appbar__title">Page title</div>
185
+ <div class="mdw-appbar__end">
186
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
187
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
192
188
  </div>
193
189
  <div class="mdw-tab__list">
194
190
  <div class="mdw-tab__item mdw-theme" mdw-ink="yellow A400" mdw-overlay-default="medium">
@@ -216,15 +212,13 @@
216
212
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'background 600', dark:true }) %>
217
213
  <div class="mdw-tab">
218
214
  <div class="mdw-tab__list-wrapper mdw-appbar">
219
- <div class="mdw-appbar__action">
220
- <div class="mdw-appbar__start">
221
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
222
- </div>
223
- <div class="mdw-appbar__title">Page title</div>
224
- <div class="mdw-appbar__end">
225
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
226
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
227
- </div>
215
+ <div class="mdw-appbar__start">
216
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
217
+ </div>
218
+ <div class="mdw-appbar__title">Page title</div>
219
+ <div class="mdw-appbar__end">
220
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
221
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
228
222
  </div>
229
223
  <div class="mdw-tab__list">
230
224
  <div class="mdw-tab__item mdw-theme" mdw-ink="cyan A700" mdw-overlay-default="medium">
@@ -251,15 +245,13 @@
251
245
  <div class="render-fill">
252
246
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'cyan 700', dark:true }) %>
253
247
  <div class="mdw-appbar mdw-theme" mdw-surface="cyan 500" mdw-dark>
254
- <div class="mdw-appbar__action">
255
- <div class="mdw-appbar__start">
256
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
257
- </div>
258
- <div class="mdw-appbar__title">Page title</div>
259
- <div class="mdw-appbar__end">
260
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
261
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
262
- </div>
248
+ <div class="mdw-appbar__start">
249
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
250
+ </div>
251
+ <div class="mdw-appbar__title">Page title</div>
252
+ <div class="mdw-appbar__end">
253
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
254
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
263
255
  </div>
264
256
  <div class="mdw-tab">
265
257
  <div class="mdw-tab__list">
@@ -286,15 +278,13 @@
286
278
  <div class="render-fill">
287
279
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'background 600', dark:true }) %>
288
280
  <div class="mdw-appbar">
289
- <div class="mdw-appbar__action">
290
- <div class="mdw-appbar__start">
291
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
292
- </div>
293
- <div class="mdw-appbar__title">Page title</div>
294
- <div class="mdw-appbar__end">
295
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
296
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
297
- </div>
281
+ <div class="mdw-appbar__start">
282
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
283
+ </div>
284
+ <div class="mdw-appbar__title">Page title</div>
285
+ <div class="mdw-appbar__end">
286
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
287
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
298
288
  </div>
299
289
  <div class="mdw-tab">
300
290
  <div class="mdw-tab__list">
@@ -319,15 +309,13 @@
319
309
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'cyan 700', dark:true }) %>
320
310
  <div class="mdw-tab">
321
311
  <div class="mdw-tab__list-wrapper mdw-appbar mdw-theme" mdw-surface="cyan 500" mdw-dark>
322
- <div class="mdw-appbar__action">
323
- <div class="mdw-appbar__start">
324
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
325
- </div>
326
- <div class="mdw-appbar__title">Clustered</div>
327
- <div class="mdw-appbar__end">
328
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
329
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
330
- </div>
312
+ <div class="mdw-appbar__start">
313
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
314
+ </div>
315
+ <div class="mdw-appbar__title">Clustered</div>
316
+ <div class="mdw-appbar__end">
317
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
318
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
331
319
  </div>
332
320
  <div class="mdw-tab__list" style="align-self:center;">
333
321
  <div class="mdw-tab__item mdw-theme" mdw-ink="yellow A400" mdw-overlay-default="medium">
@@ -358,15 +346,13 @@
358
346
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'cyan 700', dark:true }) %>
359
347
  <div class="mdw-tab">
360
348
  <div class="mdw-appbar mdw-theme" mdw-surface="cyan 500" mdw-dark>
361
- <div class="mdw-appbar__action">
362
- <div class="mdw-appbar__start">
363
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
364
- </div>
365
- <div class="mdw-appbar__title">Scrollable</div>
366
- <div class="mdw-appbar__end">
367
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
368
- <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
369
- </div>
349
+ <div class="mdw-appbar__start">
350
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'menu' }}) %>
351
+ </div>
352
+ <div class="mdw-appbar__title">Scrollable</div>
353
+ <div class="mdw-appbar__end">
354
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'search' }}) %>
355
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons', text:'more_vert' }}) %>
370
356
  </div>
371
357
  <div class="mdw-tab__list" mdw-scrollable>
372
358
  <div class="mdw-tab__item mdw-theme" mdw-ink="yellow A400" mdw-overlay-default="medium">
package/docs/pages/tab.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Button from '../../components/button/index.js';
2
2
  import * as Tab from '../../components/tab/index.js';
3
- import { iterateArrayLike, setTextNode } from '../../core/dom.js';
3
+ import { setTextNode } from '../../core/dom.js';
4
4
  import { convertElementToCode } from '../_sample-utils.js';
5
5
 
6
6
  /** @type {HTMLElement} */
@@ -8,24 +8,26 @@ let sampleComponent;
8
8
 
9
9
  /** @return {void} */
10
10
  function onWindowResize() {
11
- iterateArrayLike(document.getElementsByClassName('mdw-tab'), Tab.onResize);
11
+ for (const element of document.getElementsByClassName('mdw-tab')) { Tab.onResize(element); }
12
12
  }
13
13
 
14
14
  /** @return {void} */
15
15
  function updateSampleCode() {
16
16
  // Strip automatic attributes and classes
17
17
  Tab.detach(sampleComponent);
18
- iterateArrayLike(sampleComponent.getElementsByClassName('mdw-tab__item'), (el) => {
18
+ for (const el of sampleComponent.getElementsByClassName('mdw-tab__item')) {
19
19
  el.classList.remove('mdw-overlay');
20
20
  el.classList.remove('mdw-ripple');
21
21
  el.removeAttribute('mdw-overlay-off');
22
- });
22
+ }
23
23
  const indicator = sampleComponent.getElementsByClassName('mdw-tab__indicator')[0];
24
24
  indicator.removeAttribute('style');
25
25
 
26
26
  const htmlCodeElement = document.getElementsByClassName('component-html')[0];
27
- setTextNode(htmlCodeElement, convertElementToCode(sampleComponent,
28
- document.getElementById('usePug').getAttribute('aria-pressed') === 'true'));
27
+ setTextNode(htmlCodeElement, convertElementToCode(
28
+ sampleComponent,
29
+ document.getElementById('usePug').getAttribute('aria-pressed') === 'true',
30
+ ));
29
31
 
30
32
  Tab.attach(sampleComponent);
31
33
 
@@ -53,11 +55,11 @@ function setupPugButton() {
53
55
 
54
56
  /** @return {void} */
55
57
  function initializeSampleComponents() {
56
- iterateArrayLike(document.getElementsByClassName('mdw-tab'), Tab.attach);
58
+ for (const element of document.getElementsByClassName('mdw-tab')) { Tab.attach(element); }
57
59
  window.addEventListener('resize', onWindowResize);
58
- iterateArrayLike(document.getElementsByTagName('form'), (formElement) => {
60
+ for (const formElement of document.getElementsByTagName('form')) {
59
61
  formElement.reset();
60
- });
62
+ }
61
63
  }
62
64
 
63
65
  /**
@@ -65,8 +67,7 @@ function initializeSampleComponents() {
65
67
  * @return {void}
66
68
  */
67
69
  function onOptionChange(event) {
68
- /** @type {HTMLInputElement} */
69
- const inputElement = (event.currentTarget);
70
+ const inputElement = /** @type {HTMLInputElement} */ (event.currentTarget);
70
71
  const { name, value, checked } = inputElement;
71
72
  const tabListElement = sampleComponent.querySelector('.mdw-tab__list');
72
73
 
@@ -99,12 +100,12 @@ function onOptionChange(event) {
99
100
  break;
100
101
  default:
101
102
  tabListElement.setAttribute('mdw-surface', value.replace(/ (light|dark)/, ''));
102
- if (value.indexOf(' light') === -1) {
103
+ if (!value.includes(' light')) {
103
104
  tabListElement.removeAttribute('mdw-light');
104
105
  } else {
105
106
  tabListElement.setAttribute('mdw-light', '');
106
107
  }
107
- if (value.indexOf(' dark') === -1) {
108
+ if (!value.includes(' dark')) {
108
109
  tabListElement.removeAttribute('mdw-dark');
109
110
  } else {
110
111
  tabListElement.setAttribute('mdw-dark', '');
@@ -141,9 +142,9 @@ function onOptionChange(event) {
141
142
  function setupComponentOptions() {
142
143
  setupPugButton();
143
144
  sampleComponent = document.querySelector('.component-sample .mdw-tab');
144
- iterateArrayLike(document.querySelectorAll('input[name]'), (el) => {
145
+ for (const el of document.querySelectorAll('input[name]')) {
145
146
  el.addEventListener('change', onOptionChange);
146
- });
147
+ }
147
148
  }
148
149
 
149
150
  initializeSampleComponents();
@@ -58,6 +58,7 @@
58
58
  <div class="mdw-type" mdw-style="subtitle">Attributes</div>
59
59
  <div class="docs-option-list">
60
60
  <%~ includeFile(T, { selection: { ink:'secondary', name:'autosize', checked:true, text:'Autosize' }}) %>
61
+ <%~ includeFile(T, { selection: { ink:'secondary', name:'dense', text:'Dense' }}) %>
61
62
  <%~ includeFile(T, { selection: { ink:'secondary', name:'disabled', text:'Disabled' }}) %>
62
63
  <%~ includeFile(T, { selection: { ink:'secondary', name:'4minlength', text:'4 Min Length' }}) %>
63
64
  <%~ includeFile(T, { selection: { ink:'secondary', name:'required', text:'Required' }}) %>
@@ -75,7 +76,7 @@
75
76
  <div class="mdw-grid__item" mdw-colspan="100%">
76
77
  <h6 class="mdw-type">Samples</h6>
77
78
  </div>
78
- <div class="mdw-grid__item" mdw-colspan="4" flex-justify-content="center">
79
+ <div class="mdw-grid__item" mdw-colspan="6" flex-justify-content="center">
79
80
  <div class="render-fill">
80
81
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'primary 700', dark:true }) %>
81
82
  <%~ includeFile('../_partials/_appbar.eta', { surface: 'primary 500', dark: true, start:['arrow_back'], end: ['more_vert'], body: 'Application' }) %>
@@ -118,7 +119,7 @@
118
119
  <%~ includeFile('../_partials/_androidnavbar.eta') %>
119
120
  </div>
120
121
  </div>
121
- <div class="mdw-grid__item" mdw-colspan="4" flex-justify-content="center">
122
+ <div class="mdw-grid__item" mdw-colspan="6" flex-justify-content="center">
122
123
  <div class="render-fill">
123
124
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'secondary 300', light:true }) %>
124
125
  <%~ includeFile('../_partials/_appbar.eta', { surface: 'secondary 100', light: true, start: ['arrow_back'], end: ['search'], body: 'Auto-fill styling' }) %>
@@ -203,7 +204,7 @@
203
204
  <%~ includeFile('../_partials/_androidnavbar.eta') %>
204
205
  </div>
205
206
  </div>
206
- <div class="mdw-grid__item" mdw-colspan="4" flex-justify-content="center">
207
+ <div class="mdw-grid__item" mdw-colspan="6" flex-justify-content="center">
207
208
  <div class="render-fill">
208
209
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'secondary 800', dark:true }) %>
209
210
  <%~ includeFile('../_partials/_appbar.eta', { surface: 'secondary 700', dark: true, start: ['arrow_back'], end: ['search'] }) %>
@@ -275,7 +276,7 @@
275
276
  <%~ includeFile('../_partials/_androidnavbar.eta') %>
276
277
  </div>
277
278
  </div>
278
- <div class="mdw-grid__item" mdw-colspan="4" flex-justify-content="center">
279
+ <div class="mdw-grid__item" mdw-colspan="6" flex-justify-content="center">
279
280
  <div class="render-fill">
280
281
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'primary 700', dark:true }) %>
281
282
  <%~ includeFile('../_partials/_appbar.eta', { surface: 'primary 500', dark: true, start: ['arrow_back'], end: ['done'] }) %>
@@ -335,7 +336,7 @@
335
336
  <%~ includeFile('../_partials/_androidnavbar.eta') %>
336
337
  </div>
337
338
  </div>
338
- <div class="mdw-grid__item" mdw-colspan="4" flex-justify-content="center">
339
+ <div class="mdw-grid__item" mdw-colspan="6" flex-justify-content="center">
339
340
  <div class="render-fill">
340
341
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'amber 600', dark:true }) %>
341
342
  <%~ includeFile('../_partials/_appbar.eta', { surface: 'amber 400', dark: true, start: ['arrow_back'], end: ['done'] }) %>
@@ -369,7 +370,7 @@
369
370
  <%~ includeFile('../_partials/_androidnavbar.eta') %>
370
371
  </div>
371
372
  </div>
372
- <div class="mdw-grid__item" mdw-colspan="4" flex-justify-content="center">
373
+ <div class="mdw-grid__item" mdw-colspan="6" flex-justify-content="center">
373
374
  <div class="render-fill">
374
375
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'amber 700', dark:true }) %>
375
376
  <%~ includeFile('../_partials/_appbar.eta', { surface: 'amber 400', dark: true, start: ['arrow_back'], end: ['done'] }) %>
@@ -407,7 +408,7 @@
407
408
  <%~ includeFile('../_partials/_androidnavbar.eta') %>
408
409
  </div>
409
410
  </div>
410
- <div class="mdw-grid__item js" mdw-colspan="4">
411
+ <div class="mdw-grid__item js" mdw-colspan="6">
411
412
  <div class="render-fill">
412
413
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'primary 700', dark:true }) %>
413
414
  <%~ includeFile('../_partials/_appbar.eta', { surface: 'primary 500', dark: true, start: ['arrow_back'], end: ['done'], text: 'With Javascript' }) %>
@@ -480,7 +481,7 @@
480
481
  <%~ includeFile('../_partials/_androidnavbar.eta') %>
481
482
  </div>
482
483
  </div>
483
- <div class="mdw-grid__item" mdw-colspan="4"></div>
484
+ <div class="mdw-grid__item" mdw-colspan="6"></div>
484
485
  <div class="mdw-grid__item" mdw-colspan="4"></div>
485
486
  </div>
486
487
  <script src="textfield.min.js"></script>
@@ -1,10 +1,9 @@
1
1
  import * as TextField from '../../components/textfield/index.js';
2
- import { iterateArrayLike } from '../../core/dom.js';
3
2
  import { convertElementToCode } from '../_sample-utils.js';
4
3
 
5
4
  /** @return {void} */
6
5
  function initializeSampleComponents() {
7
- iterateArrayLike(document.querySelectorAll('.js .mdw-textfield'), TextField.attach);
6
+ for (const el of document.querySelectorAll('.js .mdw-textfield')) TextField.attach(el);
8
7
  }
9
8
 
10
9
  /** @type {HTMLElement} */
@@ -101,6 +100,13 @@ function onOptionChange(event) {
101
100
  sampleComponent.removeAttribute('mdw-outlined');
102
101
  }
103
102
  break;
103
+ case 'dense':
104
+ if (checked) {
105
+ sampleComponent.setAttribute('mdw-dense', '');
106
+ } else {
107
+ sampleComponent.removeAttribute('mdw-dense');
108
+ }
109
+ break;
104
110
  case 'disabled':
105
111
  if (checked) {
106
112
  sampleComponent.getElementsByClassName('mdw-textfield__input')[0].setAttribute('disabled', '');
@@ -132,7 +138,7 @@ function onOptionChange(event) {
132
138
  sampleComponent.appendChild(prefixText);
133
139
  }
134
140
  } else if (prefixText) {
135
- prefixText.parentElement.removeChild(prefixText);
141
+ prefixText.remove();
136
142
  }
137
143
  break;
138
144
  case 'suffix':
@@ -145,7 +151,7 @@ function onOptionChange(event) {
145
151
  sampleComponent.appendChild(suffixText);
146
152
  }
147
153
  } else if (suffixText) {
148
- suffixText.parentElement.removeChild(suffixText);
154
+ suffixText.remove();
149
155
  }
150
156
  break;
151
157
  case 'signifier':
@@ -163,7 +169,7 @@ function onOptionChange(event) {
163
169
  }
164
170
  }
165
171
  } else if (signifierElement) {
166
- signifierElement.parentElement.removeChild(signifierElement);
172
+ signifierElement.remove();
167
173
  }
168
174
  break;
169
175
  case 'helper-text':
@@ -176,7 +182,7 @@ function onOptionChange(event) {
176
182
  sampleComponent.appendChild(helperText);
177
183
  }
178
184
  } else if (helperText) {
179
- helperText.parentElement.removeChild(helperText);
185
+ helperText.remove();
180
186
  }
181
187
  break;
182
188
  case 'error-text':
@@ -189,7 +195,7 @@ function onOptionChange(event) {
189
195
  sampleComponent.appendChild(errorText);
190
196
  }
191
197
  } else if (errorText) {
192
- errorText.parentElement.removeChild(errorText);
198
+ errorText.remove();
193
199
  }
194
200
  break;
195
201
  case 'ink':
@@ -207,7 +213,8 @@ function onOptionChange(event) {
207
213
 
208
214
  if (inputElement.tagName.toLowerCase() !== desiredTagName) {
209
215
  const newElement = document.createElement(desiredTagName);
210
- for (let i = inputElement.attributes.length - 1; i >= 0; i -= 1) {
216
+ let i = inputElement.attributes.length;
217
+ while (i--) {
211
218
  const attr = inputElement.attributes.item(i);
212
219
  newElement.attributes.setNamedItem(attr.cloneNode());
213
220
  }
@@ -215,18 +222,14 @@ function onOptionChange(event) {
215
222
  inputElement = newElement;
216
223
  let dropdown = sampleComponent.getElementsByClassName('mdw-textfield__icon')[0];
217
224
  if (desiredTagName === 'select') {
218
- const option1 = document.createElement('option');
219
- option1.setAttribute('value', '');
220
- option1.textContent = 'Empty';
221
- const option2 = document.createElement('option');
222
- option2.setAttribute('value', 'option1');
223
- option2.textContent = 'Option 1';
224
- const option3 = document.createElement('option');
225
- option3.setAttribute('value', 'option2');
226
- option3.textContent = 'Option 2';
227
- inputElement.appendChild(option1);
228
- inputElement.appendChild(option2);
229
- inputElement.appendChild(option3);
225
+ for (const [valueAttr, textContent] of [['', 'Empty'], ['option1', 'Option 1'], ['option2', 'Option 2']]) {
226
+ const option = document.createElement('option');
227
+ option.className = 'mdw-theme';
228
+ option.setAttribute('mdw-surface', 'card');
229
+ option.setAttribute('value', valueAttr);
230
+ option.textContent = textContent;
231
+ inputElement.appendChild(option);
232
+ }
230
233
  if (!dropdown) {
231
234
  dropdown = document.createElement('div');
232
235
  dropdown.classList.add('mdw-textfield__icon');
@@ -234,7 +237,7 @@ function onOptionChange(event) {
234
237
  sampleComponent.appendChild(dropdown);
235
238
  }
236
239
  } else if (dropdown) {
237
- dropdown.parentElement.removeChild(dropdown);
240
+ dropdown.remove();
238
241
  }
239
242
  }
240
243
  inputElement.removeAttribute('rows');
@@ -244,9 +247,9 @@ function onOptionChange(event) {
244
247
  /** @return {void} */
245
248
  function setupComponentOptions() {
246
249
  sampleComponent = document.querySelector('.component-sample .mdw-textfield');
247
- iterateArrayLike(document.querySelectorAll('input[name]'), (el) => {
250
+ for (const el of document.querySelectorAll('input[name]')) {
248
251
  el.addEventListener('change', onOptionChange);
249
- });
252
+ }
250
253
  }
251
254
 
252
255
  initializeSampleComponents();
@@ -4,19 +4,17 @@
4
4
  <div class="render">
5
5
  <%~ includeFile('../_partials/_androidstatusbar.eta', { surface:'cyan 700', dark:true }) %>
6
6
  <div class="mdw-appbar mdw-theme" mdw-surface="cyan 500" mdw-dark>
7
- <div class="mdw-appbar__action">
8
- <div class="mdw-appbar__start">
9
- <div class="mdw-tooltip__wrapper">
10
- <%~ includeFile(T, { button: { icon:true , class:'material-icons mdw-tooltip__target', text:'menu' }}) %>
11
- <div class="mdw-tooltip mdw-theme" mdw-surface="background 700" mdw-dark mdw-align="start">Menu</div>
12
- </div>
7
+ <div class="mdw-appbar__start">
8
+ <div class="mdw-tooltip__wrapper">
9
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons mdw-tooltip__target', text:'menu' }}) %>
10
+ <div class="mdw-tooltip mdw-theme" mdw-surface="background 700" mdw-dark mdw-align="start">Menu</div>
13
11
  </div>
14
- <div class="mdw-appbar__title" style="color:white;">Inbox</div>
15
- <div class="mdw-appbar__end">
16
- <div class="mdw-tooltip__wrapper">
17
- <%~ includeFile(T, { button: { icon:true , class:'material-icons mdw-tooltip__target', text:'search' }}) %>
18
- <div class="mdw-tooltip mdw-theme" mdw-surface="background 700" mdw-dark mdw-align="end">Search</div>
19
- </div>
12
+ </div>
13
+ <div class="mdw-appbar__title" style="color:white;">Inbox</div>
14
+ <div class="mdw-appbar__end">
15
+ <div class="mdw-tooltip__wrapper">
16
+ <%~ includeFile(T, { button: { icon:true , class:'material-icons mdw-tooltip__target', text:'search' }}) %>
17
+ <div class="mdw-tooltip mdw-theme" mdw-surface="background 700" mdw-dark mdw-align="end">Search</div>
20
18
  </div>
21
19
  </div>
22
20
  </div>
@@ -1,10 +1,9 @@
1
- import { iterateArrayLike } from '../../core/dom.js';
2
1
  import * as Overlay from '../../core/overlay/index.js';
3
2
  import * as Ripple from '../../core/ripple/index.js';
4
3
  import * as Transition from '../../core/transition/index.js';
5
4
 
6
- iterateArrayLike(document.getElementsByClassName('mdw-overlay'), Overlay.attach);
7
- iterateArrayLike(document.getElementsByClassName('mdw-ripple'), Ripple.attach);
5
+ for (const element of document.getElementsByClassName('mdw-overlay')) { Overlay.attach(element); }
6
+ for (const element of document.getElementsByClassName('mdw-ripple')) { Ripple.attach(element); }
8
7
 
9
8
  /** @type {HTMLElement} */
10
9
  let target1;
@@ -48,7 +47,6 @@ function onItemClick(event) {
48
47
  target2 = null;
49
48
  }
50
49
 
51
- iterateArrayLike(
52
- document.getElementsByClassName('demo-core-item'),
53
- (item) => item.addEventListener('click', onItemClick),
54
- );
50
+ for (const item of document.getElementsByClassName('demo-core-item')) {
51
+ item.addEventListener('click', onItemClick);
52
+ }
@@ -2,12 +2,13 @@ import * as Button from '../components/button/index.js';
2
2
  import * as Layout from '../components/layout/index.js';
3
3
  import * as ListContent from '../components/list/content.js';
4
4
  import * as List from '../components/list/index.js';
5
- import { iterateArrayLike } from '../core/dom.js';
6
5
 
7
6
  const navDrawer = document.getElementsByClassName('mdw-layout__navdrawer')[0];
8
7
  List.attachAll(navDrawer);
9
8
  Layout.attach();
10
- iterateArrayLike(document.querySelectorAll('.mdw-layout__appbar .mdw-button'), Button.attach);
9
+ for (const element of document.querySelectorAll('.mdw-layout__appbar .mdw-button')) {
10
+ Button.attach(element);
11
+ }
11
12
 
12
13
  navDrawer.querySelector('[aria-current]').scrollIntoView({
13
14
  behavior: 'auto',
@@ -17,12 +18,13 @@ navDrawer.querySelector('[aria-current]').scrollIntoView({
17
18
 
18
19
  /** @return {void} */
19
20
  function clearCurrentPage() {
20
- iterateArrayLike(navDrawer.querySelectorAll('[aria-current]'), (item) => item.removeAttribute('aria-current'));
21
+ for (const item of navDrawer.querySelectorAll('[aria-current]')) {
22
+ item.removeAttribute('aria-current');
23
+ }
21
24
  }
22
25
 
23
26
  navDrawer.addEventListener(ListContent.ACTIVATE_EVENT, (event) => {
24
- /** @type {HTMLElement} */
25
- const item = (event.target);
27
+ const item = /** @type {HTMLElement} */ (event.target);
26
28
  ListContent.setSelected(item, true);
27
29
  if (item instanceof HTMLAnchorElement) {
28
30
  if (item.hasAttribute('aria-current')) {