@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
@@ -2,9 +2,7 @@
2
2
 
3
3
  import * as Keyboard from '../../core/aria/keyboard.js';
4
4
  import * as RovingTabIndex from '../../core/aria/rovingtabindex.js';
5
- import {
6
- getPassiveEventListenerOption, iterateArrayLike, iterateSomeOfArrayLike, scrollToElement,
7
- } from '../../core/dom.js';
5
+ import { scrollToElement } from '../../core/dom.js';
8
6
 
9
7
  import * as TabItem from './item.js';
10
8
 
@@ -13,10 +11,8 @@ import * as TabItem from './item.js';
13
11
  * @return {void}
14
12
  */
15
13
  function onTabIndexZeroed(event) {
16
- /** @type {HTMLElement} */
17
- const tabListElement = (event.currentTarget);
18
- /** @type {HTMLElement} */
19
- const currentItem = (event.target);
14
+ const tabListElement = /** @type {HTMLElement} */ (event.currentTarget);
15
+ const currentItem = /** @type {HTMLElement} */ (event.target);
20
16
  RovingTabIndex.removeTabIndex(tabListElement.querySelectorAll('[role="tab"]'), [currentItem]);
21
17
  }
22
18
  /**
@@ -30,8 +26,7 @@ function onForwardArrowKey(event) {
30
26
  }
31
27
  event.preventDefault();
32
28
  event.stopPropagation();
33
- /** @type {HTMLElement} */
34
- const tabListElement = (event.currentTarget);
29
+ const tabListElement = /** @type {HTMLElement} */ (event.currentTarget);
35
30
  RovingTabIndex.selectNext(tabListElement.querySelectorAll('[role="tab"]'));
36
31
  }
37
32
 
@@ -46,8 +41,7 @@ function onBackArrowKey(event) {
46
41
  }
47
42
  event.preventDefault();
48
43
  event.stopPropagation();
49
- /** @type {HTMLElement} */
50
- const tabListElement = (event.currentTarget);
44
+ const tabListElement = /** @type {HTMLElement} */ (event.currentTarget);
51
45
  RovingTabIndex.selectPrevious(tabListElement.querySelectorAll('[role="tab"]'));
52
46
  }
53
47
 
@@ -76,25 +70,21 @@ export function setupARIA(tabListElement) {
76
70
  * @return {void}
77
71
  */
78
72
  export function setIndicatorPosition(tabListElement, item, percentage, animate = false) {
79
- /** @type {HTMLElement} */
80
- const indicatorElement = (tabListElement.getElementsByClassName('mdw-tab__indicator')[0]);
73
+ const indicatorElement = /** @type {HTMLElement} */ (tabListElement.getElementsByClassName('mdw-tab__indicator')[0]);
81
74
  if (!indicatorElement) {
82
75
  return;
83
76
  }
84
77
  const items = (tabListElement.getElementsByClassName('mdw-tab__item'));
85
- /** @type {HTMLElement} */
86
- const leftItem = (item instanceof Element ? item : items.item(item));
78
+ const leftItem = /** @type {HTMLElement} */ (item instanceof Element ? item : items.item(item));
87
79
  let left = leftItem.offsetLeft;
88
80
  let right = left + leftItem.offsetWidth;
89
81
 
90
82
  if (percentage > 0) {
91
83
  left += (percentage * leftItem.offsetWidth);
92
- /** @type {HTMLElement} */
93
- let nextItem = (leftItem.nextElementSibling);
84
+ let nextItem = /** @type {HTMLElement} */ (leftItem.nextElementSibling);
94
85
  if (!nextItem.classList.contains('mdw-tab__item')) {
95
86
  // RTL
96
- /** @type {HTMLElement} */
97
- nextItem = (leftItem.previousElementSibling);
87
+ nextItem = /** @type {HTMLElement} */ (leftItem.previousElementSibling);
98
88
  }
99
89
  right = nextItem.offsetLeft + (percentage * nextItem.offsetWidth);
100
90
  }
@@ -115,10 +105,9 @@ export function setIndicatorPosition(tabListElement, item, percentage, animate =
115
105
  * @return {number}
116
106
  */
117
107
  export function getTabItemIndex(tabListElement, tabItemElement) {
118
- /** @type {HTMLCollectionOf<HTMLElement>} */
119
- const items = (tabListElement.getElementsByClassName('mdw-tab__item'));
108
+ const items = /** @type {HTMLCollectionOf<HTMLElement>} */ (tabListElement.getElementsByClassName('mdw-tab__item'));
120
109
  let tabItemIndex = -1;
121
- iterateSomeOfArrayLike(items, (el, index) => {
110
+ [...items].some((el, index) => {
122
111
  if (el === tabItemElement) {
123
112
  tabItemIndex = index;
124
113
  return true;
@@ -135,8 +124,7 @@ export function getTabItemIndex(tabListElement, tabItemElement) {
135
124
  * @return {void}
136
125
  */
137
126
  export function selectItemAtIndex(tabListElement, tabItemIndex, dispatchEvents = false) {
138
- /** @type {HTMLCollectionOf<HTMLElement>} */
139
- const items = (tabListElement.getElementsByClassName('mdw-tab__item'));
127
+ const items = /** @type {HTMLCollectionOf<HTMLElement>} */ (tabListElement.getElementsByClassName('mdw-tab__item'));
140
128
  if (dispatchEvents) {
141
129
  const item = items.item(tabItemIndex);
142
130
  if (item) {
@@ -144,7 +132,8 @@ export function selectItemAtIndex(tabListElement, tabItemIndex, dispatchEvents =
144
132
  }
145
133
  return;
146
134
  }
147
- iterateArrayLike(items, (el, index) => {
135
+ // eslint-disable-next-line github/array-foreach
136
+ [...items].forEach((el, index) => {
148
137
  if (tabItemIndex === index) {
149
138
  TabItem.setSelected(el, true, false);
150
139
  if (tabListElement.hasAttribute('mdw-scrollable')) {
@@ -164,15 +153,13 @@ export function onSelectedChangeEvent(event) {
164
153
  if (event.detail.value !== 'true') {
165
154
  return;
166
155
  }
167
- /** @type {HTMLElement} */
168
- const itemElement = (event.target);
169
- /** @type {HTMLElement} */
170
- const tabListElement = (event.currentTarget);
171
- iterateArrayLike(tabListElement.querySelectorAll('[role="tab"]'), (item) => {
156
+ const itemElement = /** @type {HTMLElement} */ (event.target);
157
+ const tabListElement = /** @type {HTMLElement} */ (event.currentTarget);
158
+ for (const item of tabListElement.querySelectorAll('[role="tab"]')) {
172
159
  if (item !== itemElement) {
173
160
  TabItem.setSelected(item, false, false);
174
161
  }
175
- });
162
+ }
176
163
  }
177
164
 
178
165
  /**
@@ -188,10 +175,9 @@ export function attach(tabListElement) {
188
175
  }
189
176
 
190
177
  setupARIA(tabListElement);
191
- iterateArrayLike(tabListElement.getElementsByClassName('mdw-tab__item'), TabItem.attach);
178
+ for (const element of tabListElement.getElementsByClassName('mdw-tab__item')) { TabItem.attach(element); }
192
179
  RovingTabIndex.setupTabIndexes(tabListElement.querySelectorAll('[role="tab"]'));
193
- tabListElement.addEventListener(TabItem.SELECTED_CHANGE_EVENT, onSelectedChangeEvent,
194
- getPassiveEventListenerOption());
180
+ tabListElement.addEventListener(TabItem.SELECTED_CHANGE_EVENT, onSelectedChangeEvent, { passive: true });
195
181
  tabListElement.addEventListener(Keyboard.FORWARD_ARROW_KEY, onForwardArrowKey);
196
182
  tabListElement.addEventListener(Keyboard.BACK_ARROW_KEY, onBackArrowKey);
197
183
  tabListElement.addEventListener(RovingTabIndex.TABINDEX_ZEROED, onTabIndexZeroed);
@@ -205,6 +191,6 @@ export function detach(tabListElement) {
205
191
  tabListElement.removeEventListener(TabItem.SELECTED_CHANGE_EVENT, onSelectedChangeEvent);
206
192
  tabListElement.removeEventListener(Keyboard.FORWARD_ARROW_KEY, onForwardArrowKey);
207
193
  tabListElement.removeEventListener(Keyboard.BACK_ARROW_KEY, onBackArrowKey);
208
- iterateArrayLike(tabListElement.querySelectorAll('[role="tab"]'), RovingTabIndex.detach);
209
- iterateArrayLike(tabListElement.getElementsByClassName('mdw-tab__item'), TabItem.detach);
194
+ for (const el of tabListElement.querySelectorAll('[role="tab"]')) RovingTabIndex.detach(el);
195
+ for (const el of tabListElement.getElementsByClassName('mdw-tab__item')) TabItem.detach(el);
210
196
  }
@@ -165,9 +165,9 @@ label.mdw-textfield(mdw-autosize mdw-outlined)
165
165
  # Javascript
166
166
 
167
167
  ```
168
- document.getElementsByClassName("mdw-textfield").forEach((element) => {
168
+ for (const element of document.getElementsByClassName("mdw-textfield")) {
169
169
  TextField.attach(element);
170
- });
170
+ }
171
171
  ```
172
172
 
173
173
  # Notes