@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.
- package/.browserslistrc +2 -1
- package/.eslintrc.json +59 -8
- package/.stylelintrc.json +94 -49
- package/CHANGELOG.md +12 -0
- package/README.md +1 -3
- package/adapters/datatable/column.js +27 -54
- package/adapters/datatable/index.js +69 -81
- package/adapters/dom/index.js +32 -47
- package/adapters/search/index.js +107 -133
- package/components/appbar/_spec.scss +77 -137
- package/components/banner/_spec.scss +28 -63
- package/components/bottomnav/_spec.scss +46 -54
- package/components/bottomnav/index.js +15 -20
- package/components/bottomnav/item.js +4 -5
- package/components/button/README.md +1 -1
- package/components/button/_spec.scss +43 -42
- package/components/button/_theme.scss +27 -50
- package/components/card/_spec.scss +61 -69
- package/components/chip/_spec.scss +21 -44
- package/components/chip/_theme.scss +79 -151
- package/components/chip/index.js +6 -4
- package/components/datatable/_spec.scss +36 -99
- package/components/datatable/_theme.scss +98 -124
- package/components/datatable/cell.js +1 -2
- package/components/datatable/columnheader.js +1 -2
- package/components/datatable/index.js +33 -47
- package/components/datatable/row.js +4 -5
- package/components/dialog/_spec.scss +53 -63
- package/components/dialog/_theme.scss +7 -0
- package/components/dialog/index.js +62 -88
- package/components/divider/_spec.scss +6 -8
- package/components/elevation/_spec.scss +1 -1
- package/components/fab/_spec.scss +30 -42
- package/components/fab/index.js +4 -8
- package/components/grid/_spec.scss +68 -211
- package/components/layout/_mixins.scss +0 -22
- package/components/layout/_spec.scss +267 -363
- package/components/layout/_theme.scss +10 -35
- package/components/layout/index.js +40 -50
- package/components/list/_spec.scss +57 -91
- package/components/list/_theme.scss +75 -84
- package/components/list/content.js +9 -13
- package/components/list/index.js +34 -38
- package/components/list/item.js +8 -11
- package/components/list/secondary.js +8 -9
- package/components/menu/_spec.scss +134 -167
- package/components/menu/index.js +45 -61
- package/components/menu/item.js +11 -19
- package/components/progress/_spec.scss +43 -34
- package/components/selection/_spec.scss +123 -133
- package/components/selection/_theme.scss +88 -120
- package/components/selection/index.js +9 -15
- package/components/selection/input.js +3 -5
- package/components/selection/radiogroup.js +8 -15
- package/components/slider/_spec.scss +23 -28
- package/components/snackbar/_spec.scss +17 -62
- package/components/snackbar/index.js +15 -21
- package/components/tab/_spec.scss +35 -50
- package/components/tab/content.js +33 -28
- package/components/tab/index.js +30 -33
- package/components/tab/item.js +4 -5
- package/components/tab/list.js +22 -36
- package/components/textfield/README.md +2 -2
- package/components/textfield/_spec.scss +241 -287
- package/components/textfield/_theme.scss +197 -232
- package/components/textfield/index.js +8 -16
- package/components/tooltip/_spec.scss +23 -26
- package/components/type/_spec.scss +19 -16
- package/core/_breakpoint.scss +33 -33
- package/core/_elevation.scss +40 -0
- package/core/_length.scss +0 -1
- package/core/_platform.scss +0 -22
- package/core/_type.scss +7 -6
- package/core/aria/button.js +4 -5
- package/core/aria/keyboard.js +1 -2
- package/core/aria/rovingtabindex.js +14 -17
- package/core/aria/tab.js +1 -2
- package/core/dom.js +18 -109
- package/core/overlay/_spec.scss +5 -8
- package/core/overlay/_theme.scss +126 -150
- package/core/overlay/index.js +19 -32
- package/core/ripple/_spec.scss +16 -17
- package/core/ripple/_theme.scss +13 -33
- package/core/ripple/index.js +36 -44
- package/core/theme/_aliases.scss +15 -0
- package/core/theme/_config.scss +8 -2
- package/core/theme/_functions.scss +22 -0
- package/core/theme/_palettes.scss +0 -1
- package/core/{color → theme}/_spec.scss +0 -0
- package/core/theme/_theme.scss +268 -0
- package/core/theme/index.scss +4 -0
- package/core/transition/index.js +73 -76
- package/docs/_flex.scss +7 -1
- package/docs/_menuoptions.js +2 -2
- package/docs/_partials/_appbar.eta +12 -14
- package/docs/_partials/_header.eta +41 -44
- package/docs/_sample-utils.js +15 -20
- package/docs/docs.scss +123 -87
- package/docs/framework.scss +26 -0
- package/docs/index.eta +2 -6
- package/docs/index.js +7 -0
- package/docs/pages/appbar.eta +22 -28
- package/docs/pages/bottomnav.js +17 -14
- package/docs/pages/button.js +10 -10
- package/docs/pages/card.js +20 -22
- package/docs/pages/chip.js +11 -13
- package/docs/pages/color.js +35 -36
- package/docs/pages/datatable.js +11 -15
- package/docs/pages/dialog.eta +9 -11
- package/docs/pages/dialog.js +6 -9
- package/docs/pages/dom.js +6 -9
- package/docs/pages/elevation.eta +10 -10
- package/docs/pages/fab.js +2 -3
- package/docs/pages/grid.js +5 -5
- package/docs/pages/list.js +1 -2
- package/docs/pages/menu.eta +17 -19
- package/docs/pages/menu.js +7 -11
- package/docs/pages/overlay.js +1 -2
- package/docs/pages/progress.eta +2 -2
- package/docs/pages/progress.js +1 -1
- package/docs/pages/ripple.js +1 -2
- package/docs/pages/search.eta +20 -24
- package/docs/pages/search.js +24 -41
- package/docs/pages/selection.eta +2 -6
- package/docs/pages/selection.js +3 -4
- package/docs/pages/snackbar.js +3 -4
- package/docs/pages/tab.eta +61 -75
- package/docs/pages/tab.js +16 -15
- package/docs/pages/textfield.eta +9 -8
- package/docs/pages/textfield.js +26 -23
- package/docs/pages/tooltip.eta +10 -12
- package/docs/pages/transition.js +5 -7
- package/docs/postrender.js +7 -5
- package/docs/pwa/pwa.eta +14 -16
- package/docs/pwa/pwa.js +19 -27
- package/docs/pwa/pwa.scss +12 -7
- package/docs/themes/theme-colored.scss +9 -11
- package/docs/themes/theme-default.scss +0 -14
- package/index.scss +27 -0
- package/jsconfig.json +7 -3
- package/package.json +26 -15
- package/tsconfig.json +16 -0
- package/{webpack.config.cjs → webpack.config.js} +105 -58
- package/components/template/_theme.scss +0 -27
- package/components/textfield/_mixins.scss +0 -52
- package/core/color/_theme.scss +0 -390
- package/core/color/index.scss +0 -2
- package/core/theme/_mixins.scss +0 -172
- package/core/theme/_variables.scss +0 -24
- package/docs/_mixins.pug +0 -155
- package/docs/pages/appbar.pug +0 -78
- package/docs/pages/bottomnav.pug +0 -137
- package/docs/pages/button.pug +0 -121
- package/docs/pages/card.pug +0 -74
- package/docs/pages/chip.pug +0 -91
- package/docs/pages/color.pug +0 -121
- package/docs/pages/datatable.pug +0 -283
- package/docs/pages/dialog.pug +0 -132
- package/docs/pages/dom.pug +0 -22
- package/docs/pages/elevation.pug +0 -25
- package/docs/pages/fab.pug +0 -66
- package/docs/pages/grid.pug +0 -95
- package/docs/pages/layout.pug +0 -7
- package/docs/pages/list.pug +0 -326
- package/docs/pages/menu.pug +0 -205
- package/docs/pages/overlay.pug +0 -55
- package/docs/pages/progress.pug +0 -16
- package/docs/pages/ripple.pug +0 -21
- package/docs/pages/search.pug +0 -165
- package/docs/pages/selection.pug +0 -74
- package/docs/pages/slider.pug +0 -17
- package/docs/pages/snackbar.pug +0 -60
- package/docs/pages/tab.pug +0 -304
- package/docs/pages/textfield.pug +0 -360
- package/docs/pages/tooltip.pug +0 -78
- package/docs/pages/transition.pug +0 -76
- package/docs/pages/type.pug +0 -29
- package/docs/pwa/_dialogs.pug +0 -96
- package/docs/pwa/_menus.pug +0 -11
- package/docs/pwa/pwa.pug +0 -325
- package/docs/spec.scss +0 -26
- package/docs/themes/_component-themes.scss +0 -26
- package/docs/themes/theme-colored-fallbacks.scss +0 -17
- package/docs/themes/theme-default-fallbacks.scss +0 -17
package/components/tab/list.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
169
|
-
|
|
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
|
-
|
|
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
|
-
|
|
209
|
-
|
|
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")
|
|
168
|
+
for (const element of document.getElementsByClassName("mdw-textfield")) {
|
|
169
169
|
TextField.attach(element);
|
|
170
|
-
}
|
|
170
|
+
}
|
|
171
171
|
```
|
|
172
172
|
|
|
173
173
|
# Notes
|