uikit 3.11.2-dev.fb043abc2 → 3.12.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/.eslintrc.json +4 -49
- package/.prettierignore +14 -0
- package/.prettierrc.json +13 -0
- package/.webstorm.js +3 -3
- package/CHANGELOG.md +51 -20
- package/build/.eslintrc.json +1 -3
- package/build/build.js +26 -28
- package/build/icons.js +7 -11
- package/build/less.js +48 -36
- package/build/package.json +2 -2
- package/build/prefix.js +21 -18
- package/build/publishDev.js +6 -8
- package/build/release.js +20 -17
- package/build/scope.js +21 -11
- package/build/scss.js +72 -39
- package/build/util.js +71 -62
- package/build/wrapper/icons.js +0 -2
- package/dist/css/uikit-core-rtl.css +133 -201
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +133 -201
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +135 -207
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +135 -207
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +66 -138
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +408 -439
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +1091 -1319
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +1137 -1396
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +94 -114
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +347 -361
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +345 -360
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +749 -843
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +345 -360
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +628 -798
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +587 -620
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +324 -356
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +156 -167
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +5317 -6554
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +7 -9
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +8018 -9698
- package/dist/js/uikit.min.js +1 -1
- package/jsconfig.json +1 -1
- package/package.json +64 -60
- package/src/js/api/boot.js +25 -32
- package/src/js/api/component.js +15 -28
- package/src/js/api/global.js +6 -12
- package/src/js/api/hooks.js +14 -33
- package/src/js/api/instance.js +7 -15
- package/src/js/api/state.js +199 -187
- package/src/js/components/countdown.js +32 -85
- package/src/js/components/filter.js +70 -66
- package/src/js/components/index.js +13 -13
- package/src/js/components/internal/lightbox-animations.js +14 -25
- package/src/js/components/internal/slider-preload.js +9 -0
- package/src/js/components/internal/slider-transitioner.js +66 -45
- package/src/js/components/internal/slideshow-animations.js +46 -64
- package/src/js/components/lightbox-panel.js +107 -105
- package/src/js/components/lightbox.js +17 -39
- package/src/js/components/notification.js +49 -43
- package/src/js/components/parallax.js +16 -30
- package/src/js/components/slider-parallax.js +13 -23
- package/src/js/components/slider.js +117 -89
- package/src/js/components/slideshow-parallax.js +1 -1
- package/src/js/components/slideshow.js +15 -13
- package/src/js/components/sortable.js +125 -106
- package/src/js/components/tooltip.js +41 -31
- package/src/js/components/upload.js +53 -63
- package/src/js/core/accordion.js +58 -48
- package/src/js/core/alert.js +9 -17
- package/src/js/core/core.js +17 -69
- package/src/js/core/cover.js +15 -15
- package/src/js/core/drop.js +110 -94
- package/src/js/core/form-custom.js +22 -27
- package/src/js/core/gif.js +3 -7
- package/src/js/core/grid.js +57 -58
- package/src/js/core/height-match.js +16 -29
- package/src/js/core/height-viewport.js +30 -34
- package/src/js/core/icon.js +47 -52
- package/src/js/core/img.js +153 -143
- package/src/js/core/index.js +39 -39
- package/src/js/core/leader.js +9 -18
- package/src/js/core/margin.js +21 -37
- package/src/js/core/modal.js +49 -36
- package/src/js/core/nav.js +2 -4
- package/src/js/core/navbar.js +113 -85
- package/src/js/core/offcanvas.js +51 -54
- package/src/js/core/overflow-auto.js +13 -17
- package/src/js/core/responsive.js +14 -12
- package/src/js/core/scroll.js +10 -20
- package/src/js/core/scrollspy-nav.js +34 -31
- package/src/js/core/scrollspy.js +37 -54
- package/src/js/core/sticky.js +161 -128
- package/src/js/core/svg.js +68 -83
- package/src/js/core/switcher.js +56 -47
- package/src/js/core/tab.js +7 -10
- package/src/js/core/toggle.js +69 -68
- package/src/js/core/video.js +22 -21
- package/src/js/mixin/animate.js +19 -20
- package/src/js/mixin/class.js +2 -4
- package/src/js/mixin/container.js +7 -11
- package/src/js/mixin/internal/animate-fade.js +73 -30
- package/src/js/mixin/internal/animate-slide.js +58 -41
- package/src/js/mixin/internal/slideshow-animations.js +7 -14
- package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
- package/src/js/mixin/lazyload.js +20 -0
- package/src/js/mixin/media.js +5 -10
- package/src/js/mixin/modal.js +89 -66
- package/src/js/mixin/parallax.js +149 -107
- package/src/js/mixin/position.js +26 -20
- package/src/js/mixin/slider-autoplay.js +12 -21
- package/src/js/mixin/slider-drag.js +64 -65
- package/src/js/mixin/slider-nav.js +26 -35
- package/src/js/mixin/slider-reactive.js +2 -8
- package/src/js/mixin/slider.js +47 -60
- package/src/js/mixin/slideshow.js +12 -22
- package/src/js/mixin/swipe.js +72 -0
- package/src/js/mixin/togglable.js +89 -63
- package/src/js/uikit-core.js +2 -4
- package/src/js/uikit.js +2 -4
- package/src/js/util/ajax.js +25 -40
- package/src/js/util/animation.js +77 -75
- package/src/js/util/attr.js +17 -21
- package/src/js/util/class.js +14 -52
- package/src/js/util/dimensions.js +58 -45
- package/src/js/util/dom.js +37 -66
- package/src/js/util/env.js +7 -12
- package/src/js/util/event.js +60 -59
- package/src/js/util/fastdom.js +1 -6
- package/src/js/util/filter.js +18 -36
- package/src/js/util/index.js +1 -1
- package/src/js/util/lang.js +82 -121
- package/src/js/util/mouse.js +19 -17
- package/src/js/util/observer.js +36 -0
- package/src/js/util/options.js +35 -49
- package/src/js/util/player.js +41 -36
- package/src/js/util/position.js +54 -46
- package/src/js/util/selector.js +43 -58
- package/src/js/util/style.js +39 -49
- package/src/js/util/viewport.js +75 -64
- package/src/less/components/base.less +10 -33
- package/src/less/components/flex.less +0 -9
- package/src/less/components/form-range.less +48 -95
- package/src/less/components/form.less +0 -1
- package/src/less/components/height.less +3 -0
- package/src/less/components/leader.less +0 -1
- package/src/less/components/lightbox.less +0 -1
- package/src/less/components/modal.less +3 -7
- package/src/less/components/navbar.less +0 -7
- package/src/less/components/progress.less +14 -36
- package/src/less/components/slider.less +0 -3
- package/src/less/components/slideshow.less +0 -3
- package/src/less/components/text.less +16 -32
- package/src/less/components/utility.less +25 -0
- package/src/scss/components/base.scss +10 -33
- package/src/scss/components/flex.scss +0 -9
- package/src/scss/components/form-range.scss +48 -95
- package/src/scss/components/form.scss +3 -4
- package/src/scss/components/height.scss +3 -0
- package/src/scss/components/icon.scss +2 -2
- package/src/scss/components/leader.scss +0 -1
- package/src/scss/components/lightbox.scss +0 -1
- package/src/scss/components/modal.scss +3 -7
- package/src/scss/components/navbar.scss +0 -7
- package/src/scss/components/progress.scss +14 -36
- package/src/scss/components/search.scss +1 -1
- package/src/scss/components/slider.scss +0 -3
- package/src/scss/components/slideshow.scss +0 -3
- package/src/scss/components/text.scss +16 -32
- package/src/scss/components/utility.scss +25 -0
- package/src/scss/mixins-theme.scss +1 -1
- package/src/scss/mixins.scss +1 -1
- package/src/scss/variables-theme.scss +9 -9
- package/src/scss/variables.scss +9 -9
- package/tests/align.html +10 -10
- package/tests/animation.html +2 -2
- package/tests/article.html +2 -2
- package/tests/base.html +3 -3
- package/tests/card.html +10 -10
- package/tests/column.html +3 -3
- package/tests/comment.html +9 -9
- package/tests/countdown.html +10 -8
- package/tests/dotnav.html +3 -3
- package/tests/image.html +296 -64
- package/tests/images/image-type.avif +0 -0
- package/tests/images/image-type.jpeg +0 -0
- package/tests/images/image-type.webp +0 -0
- package/tests/index.html +8 -8
- package/tests/js/index.js +114 -85
- package/tests/lightbox.html +10 -10
- package/tests/marker.html +2 -2
- package/tests/modal.html +8 -9
- package/tests/navbar.html +2 -2
- package/tests/overlay.html +7 -7
- package/tests/parallax.html +16 -7
- package/tests/position.html +12 -12
- package/tests/slidenav.html +12 -12
- package/tests/slider.html +20 -20
- package/tests/sortable.html +1 -1
- package/tests/sticky-parallax.html +57 -72
- package/tests/sticky.html +14 -3
- package/tests/svg.html +6 -6
- package/tests/table.html +11 -11
- package/tests/thumbnav.html +12 -12
- package/tests/transition.html +30 -30
- package/tests/utility.html +50 -33
- package/tests/video.html +1 -1
- package/tests/width.html +1 -1
- package/src/js/mixin/flex-bug.js +0 -56
- package/src/js/util/promise.js +0 -191
- package/tests/images/animated.gif +0 -0
package/src/js/core/svg.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
$,
|
|
3
|
+
$$,
|
|
4
|
+
after,
|
|
5
|
+
append,
|
|
6
|
+
attr,
|
|
7
|
+
includes,
|
|
8
|
+
isTag,
|
|
9
|
+
isVisible,
|
|
10
|
+
isVoidElement,
|
|
11
|
+
memoize,
|
|
12
|
+
noop,
|
|
13
|
+
once,
|
|
14
|
+
remove,
|
|
15
|
+
removeAttr,
|
|
16
|
+
startsWith,
|
|
17
|
+
toFloat,
|
|
18
|
+
} from 'uikit-util';
|
|
2
19
|
|
|
3
20
|
export default {
|
|
4
|
-
|
|
5
21
|
args: 'src',
|
|
6
22
|
|
|
7
23
|
props: {
|
|
@@ -15,14 +31,14 @@ export default {
|
|
|
15
31
|
class: String,
|
|
16
32
|
strokeAnimation: Boolean,
|
|
17
33
|
focusable: Boolean, // IE 11
|
|
18
|
-
attributes: 'list'
|
|
34
|
+
attributes: 'list',
|
|
19
35
|
},
|
|
20
36
|
|
|
21
37
|
data: {
|
|
22
38
|
ratio: 1,
|
|
23
39
|
include: ['style', 'class', 'focusable'],
|
|
24
40
|
class: '',
|
|
25
|
-
strokeAnimation: false
|
|
41
|
+
strokeAnimation: false,
|
|
26
42
|
},
|
|
27
43
|
|
|
28
44
|
beforeConnect() {
|
|
@@ -30,15 +46,12 @@ export default {
|
|
|
30
46
|
},
|
|
31
47
|
|
|
32
48
|
connected() {
|
|
33
|
-
|
|
34
49
|
if (!this.icon && includes(this.src, '#')) {
|
|
35
50
|
[this.src, this.icon] = this.src.split('#');
|
|
36
51
|
}
|
|
37
52
|
|
|
38
|
-
this.svg = this.getSvg().then(el => {
|
|
39
|
-
|
|
53
|
+
this.svg = this.getSvg().then((el) => {
|
|
40
54
|
if (this._connected) {
|
|
41
|
-
|
|
42
55
|
const svg = insertSVG(el, this.$el);
|
|
43
56
|
|
|
44
57
|
if (this.svgEl && svg !== this.svgEl) {
|
|
@@ -47,16 +60,13 @@ export default {
|
|
|
47
60
|
|
|
48
61
|
this.applyAttributes(svg, el);
|
|
49
62
|
this.$emit();
|
|
50
|
-
return this.svgEl = svg;
|
|
63
|
+
return (this.svgEl = svg);
|
|
51
64
|
}
|
|
52
|
-
|
|
53
65
|
}, noop);
|
|
54
|
-
|
|
55
66
|
},
|
|
56
67
|
|
|
57
68
|
disconnected() {
|
|
58
|
-
|
|
59
|
-
this.svg.then(svg => {
|
|
69
|
+
this.svg.then((svg) => {
|
|
60
70
|
if (this._connected) {
|
|
61
71
|
return;
|
|
62
72
|
}
|
|
@@ -67,15 +77,12 @@ export default {
|
|
|
67
77
|
|
|
68
78
|
remove(svg);
|
|
69
79
|
this.svgEl = null;
|
|
70
|
-
|
|
71
80
|
});
|
|
72
81
|
|
|
73
82
|
this.svg = null;
|
|
74
|
-
|
|
75
83
|
},
|
|
76
84
|
|
|
77
85
|
update: {
|
|
78
|
-
|
|
79
86
|
read() {
|
|
80
87
|
return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));
|
|
81
88
|
},
|
|
@@ -84,22 +91,23 @@ export default {
|
|
|
84
91
|
applyAnimation(this.svgEl);
|
|
85
92
|
},
|
|
86
93
|
|
|
87
|
-
type: ['resize']
|
|
88
|
-
|
|
94
|
+
type: ['resize'],
|
|
89
95
|
},
|
|
90
96
|
|
|
91
97
|
methods: {
|
|
98
|
+
async getSvg() {
|
|
99
|
+
if (isTag(this.$el, 'img') && !this.$el.complete && this.$el.loading === 'lazy') {
|
|
100
|
+
return new Promise((resolve) =>
|
|
101
|
+
once(this.$el, 'load', () => resolve(this.getSvg()))
|
|
102
|
+
);
|
|
103
|
+
}
|
|
92
104
|
|
|
93
|
-
|
|
94
|
-
return loadSVG(this.src).then(svg =>
|
|
95
|
-
parseSVG(svg, this.icon) || Promise.reject('SVG not found.')
|
|
96
|
-
);
|
|
105
|
+
return parseSVG(await loadSVG(this.src), this.icon) || Promise.reject('SVG not found.');
|
|
97
106
|
},
|
|
98
107
|
|
|
99
108
|
applyAttributes(el, ref) {
|
|
100
|
-
|
|
101
109
|
for (const prop in this.$options.props) {
|
|
102
|
-
if (includes(this.include, prop) &&
|
|
110
|
+
if (includes(this.include, prop) && prop in this) {
|
|
103
111
|
attr(el, prop, this[prop]);
|
|
104
112
|
}
|
|
105
113
|
}
|
|
@@ -114,65 +122,48 @@ export default {
|
|
|
114
122
|
}
|
|
115
123
|
|
|
116
124
|
const props = ['width', 'height'];
|
|
117
|
-
let dimensions = props.map(prop => this[prop]);
|
|
125
|
+
let dimensions = props.map((prop) => this[prop]);
|
|
118
126
|
|
|
119
|
-
if (!dimensions.some(val => val)) {
|
|
120
|
-
dimensions = props.map(prop => attr(ref, prop));
|
|
127
|
+
if (!dimensions.some((val) => val)) {
|
|
128
|
+
dimensions = props.map((prop) => attr(ref, prop));
|
|
121
129
|
}
|
|
122
130
|
|
|
123
131
|
const viewBox = attr(ref, 'viewBox');
|
|
124
|
-
if (viewBox && !dimensions.some(val => val)) {
|
|
132
|
+
if (viewBox && !dimensions.some((val) => val)) {
|
|
125
133
|
dimensions = viewBox.split(' ').slice(2);
|
|
126
134
|
}
|
|
127
135
|
|
|
128
|
-
dimensions.forEach((val, i) =>
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
+
dimensions.forEach((val, i) => attr(el, props[i], toFloat(val) * this.ratio || null));
|
|
137
|
+
},
|
|
138
|
+
},
|
|
136
139
|
};
|
|
137
140
|
|
|
138
|
-
const loadSVG = memoize(src =>
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (!src) {
|
|
142
|
-
reject();
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
|
|
141
|
+
const loadSVG = memoize(async (src) => {
|
|
142
|
+
if (src) {
|
|
146
143
|
if (startsWith(src, 'data:')) {
|
|
147
|
-
|
|
144
|
+
return decodeURIComponent(src.split(',')[1]);
|
|
148
145
|
} else {
|
|
149
|
-
|
|
150
|
-
ajax(src).then(
|
|
151
|
-
xhr => resolve(xhr.response),
|
|
152
|
-
() => reject('SVG not found.')
|
|
153
|
-
);
|
|
154
|
-
|
|
146
|
+
return (await fetch(src)).text();
|
|
155
147
|
}
|
|
156
|
-
}
|
|
157
|
-
);
|
|
148
|
+
} else {
|
|
149
|
+
return Promise.reject();
|
|
150
|
+
}
|
|
151
|
+
});
|
|
158
152
|
|
|
159
153
|
function parseSVG(svg, icon) {
|
|
160
|
-
|
|
161
154
|
if (icon && includes(svg, '<symbol')) {
|
|
162
155
|
svg = parseSymbols(svg, icon) || svg;
|
|
163
156
|
}
|
|
164
157
|
|
|
165
158
|
svg = $(svg.substr(svg.indexOf('<svg')));
|
|
166
|
-
return svg
|
|
159
|
+
return svg?.hasChildNodes() && svg;
|
|
167
160
|
}
|
|
168
161
|
|
|
169
162
|
const symbolRe = /<symbol([^]*?id=(['"])(.+?)\2[^]*?<\/)symbol>/g;
|
|
170
163
|
const symbols = {};
|
|
171
164
|
|
|
172
165
|
function parseSymbols(svg, icon) {
|
|
173
|
-
|
|
174
166
|
if (!symbols[svg]) {
|
|
175
|
-
|
|
176
167
|
symbols[svg] = {};
|
|
177
168
|
|
|
178
169
|
symbolRe.lastIndex = 0;
|
|
@@ -181,59 +172,53 @@ function parseSymbols(svg, icon) {
|
|
|
181
172
|
while ((match = symbolRe.exec(svg))) {
|
|
182
173
|
symbols[svg][match[3]] = `<svg xmlns="http://www.w3.org/2000/svg"${match[1]}svg>`;
|
|
183
174
|
}
|
|
184
|
-
|
|
185
175
|
}
|
|
186
176
|
|
|
187
177
|
return symbols[svg][icon];
|
|
188
178
|
}
|
|
189
179
|
|
|
190
180
|
function applyAnimation(el) {
|
|
191
|
-
|
|
192
181
|
const length = getMaxPathLength(el);
|
|
193
182
|
|
|
194
183
|
if (length) {
|
|
195
184
|
el.style.setProperty('--uk-animation-stroke', length);
|
|
196
185
|
}
|
|
197
|
-
|
|
198
186
|
}
|
|
199
187
|
|
|
200
188
|
export function getMaxPathLength(el) {
|
|
201
|
-
return Math.ceil(
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
189
|
+
return Math.ceil(
|
|
190
|
+
Math.max(
|
|
191
|
+
0,
|
|
192
|
+
...$$('[stroke]', el).map((stroke) => {
|
|
193
|
+
try {
|
|
194
|
+
return stroke.getTotalLength();
|
|
195
|
+
} catch (e) {
|
|
196
|
+
return 0;
|
|
197
|
+
}
|
|
198
|
+
})
|
|
199
|
+
)
|
|
200
|
+
);
|
|
208
201
|
}
|
|
209
202
|
|
|
210
203
|
function insertSVG(el, root) {
|
|
211
|
-
|
|
212
|
-
if (isVoidElement(root) || root.tagName === 'CANVAS') {
|
|
213
|
-
|
|
204
|
+
if (isVoidElement(root) || isTag(root, 'canvas')) {
|
|
214
205
|
root.hidden = true;
|
|
215
206
|
|
|
216
207
|
const next = root.nextElementSibling;
|
|
217
|
-
return equals(el, next)
|
|
218
|
-
? next
|
|
219
|
-
: after(root, el);
|
|
220
|
-
|
|
208
|
+
return equals(el, next) ? next : after(root, el);
|
|
221
209
|
}
|
|
222
210
|
|
|
223
211
|
const last = root.lastElementChild;
|
|
224
|
-
return equals(el, last)
|
|
225
|
-
? last
|
|
226
|
-
: append(root, el);
|
|
212
|
+
return equals(el, last) ? last : append(root, el);
|
|
227
213
|
}
|
|
228
214
|
|
|
229
215
|
function equals(el, other) {
|
|
230
|
-
return
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
function isSVG(el) {
|
|
234
|
-
return el && el.tagName === 'svg';
|
|
216
|
+
return isTag(el, 'svg') && isTag(other, 'svg') && innerHTML(el) === innerHTML(other);
|
|
235
217
|
}
|
|
236
218
|
|
|
237
219
|
function innerHTML(el) {
|
|
238
|
-
return (
|
|
220
|
+
return (
|
|
221
|
+
el.innerHTML ||
|
|
222
|
+
new XMLSerializer().serializeToString(el).replace(/<svg.*?>(.*?)<\/svg>/g, '$1')
|
|
223
|
+
).replace(/\s/g, '');
|
|
239
224
|
}
|
package/src/js/core/switcher.js
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
|
+
import Lazyload from '../mixin/lazyload';
|
|
2
|
+
import Swipe from '../mixin/swipe';
|
|
1
3
|
import Togglable from '../mixin/togglable';
|
|
2
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
$$,
|
|
6
|
+
attr,
|
|
7
|
+
children,
|
|
8
|
+
css,
|
|
9
|
+
data,
|
|
10
|
+
endsWith,
|
|
11
|
+
findIndex,
|
|
12
|
+
getIndex,
|
|
13
|
+
hasClass,
|
|
14
|
+
matches,
|
|
15
|
+
queryAll,
|
|
16
|
+
toggleClass,
|
|
17
|
+
toNodes,
|
|
18
|
+
within,
|
|
19
|
+
} from 'uikit-util';
|
|
3
20
|
|
|
4
21
|
export default {
|
|
5
|
-
|
|
6
|
-
mixins: [Togglable],
|
|
22
|
+
mixins: [Lazyload, Swipe, Togglable],
|
|
7
23
|
|
|
8
24
|
args: 'connect',
|
|
9
25
|
|
|
@@ -12,7 +28,6 @@ export default {
|
|
|
12
28
|
toggle: String,
|
|
13
29
|
itemNav: String,
|
|
14
30
|
active: Number,
|
|
15
|
-
swiping: Boolean
|
|
16
31
|
},
|
|
17
32
|
|
|
18
33
|
data: {
|
|
@@ -20,42 +35,35 @@ export default {
|
|
|
20
35
|
toggle: '> * > :first-child',
|
|
21
36
|
itemNav: false,
|
|
22
37
|
active: 0,
|
|
23
|
-
swiping: true,
|
|
24
38
|
cls: 'uk-active',
|
|
25
|
-
attrItem: 'uk-switcher-item'
|
|
39
|
+
attrItem: 'uk-switcher-item',
|
|
26
40
|
},
|
|
27
41
|
|
|
28
42
|
computed: {
|
|
29
|
-
|
|
30
43
|
connects: {
|
|
31
|
-
|
|
32
|
-
get({connect}, $el) {
|
|
44
|
+
get({ connect }, $el) {
|
|
33
45
|
return queryAll(connect, $el);
|
|
34
46
|
},
|
|
35
47
|
|
|
36
48
|
watch(connects) {
|
|
37
|
-
|
|
38
49
|
if (this.swiping) {
|
|
39
50
|
css(connects, 'touch-action', 'pan-y pinch-zoom');
|
|
40
51
|
}
|
|
41
52
|
|
|
42
53
|
const index = this.index();
|
|
43
|
-
this.connects.forEach(el =>
|
|
44
|
-
children(el).forEach((child, i) =>
|
|
45
|
-
toggleClass(child, this.cls, i === index)
|
|
46
|
-
)
|
|
54
|
+
this.connects.forEach((el) =>
|
|
55
|
+
children(el).forEach((child, i) => toggleClass(child, this.cls, i === index))
|
|
47
56
|
);
|
|
48
|
-
|
|
49
57
|
},
|
|
50
58
|
|
|
51
|
-
immediate: true
|
|
52
|
-
|
|
59
|
+
immediate: true,
|
|
53
60
|
},
|
|
54
61
|
|
|
55
62
|
toggles: {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
63
|
+
get({ toggle }, $el) {
|
|
64
|
+
return $$(toggle, $el).filter(
|
|
65
|
+
(el) => !matches(el, '.uk-disabled *, .uk-disabled, [disabled]')
|
|
66
|
+
);
|
|
59
67
|
},
|
|
60
68
|
|
|
61
69
|
watch(toggles) {
|
|
@@ -63,20 +71,26 @@ export default {
|
|
|
63
71
|
this.show(~active ? active : toggles[this.active] || toggles[0]);
|
|
64
72
|
},
|
|
65
73
|
|
|
66
|
-
immediate: true
|
|
67
|
-
|
|
74
|
+
immediate: true,
|
|
68
75
|
},
|
|
69
76
|
|
|
70
77
|
children() {
|
|
71
|
-
return children(this.$el).filter(child =>
|
|
72
|
-
|
|
78
|
+
return children(this.$el).filter((child) =>
|
|
79
|
+
this.toggles.some((toggle) => within(toggle, child))
|
|
80
|
+
);
|
|
81
|
+
},
|
|
73
82
|
|
|
83
|
+
swipeTarget() {
|
|
84
|
+
return this.connects;
|
|
85
|
+
},
|
|
74
86
|
},
|
|
75
87
|
|
|
76
|
-
|
|
88
|
+
connected() {
|
|
89
|
+
this.lazyload(this.$el, this.connects);
|
|
90
|
+
},
|
|
77
91
|
|
|
92
|
+
events: [
|
|
78
93
|
{
|
|
79
|
-
|
|
80
94
|
name: 'click',
|
|
81
95
|
|
|
82
96
|
delegate() {
|
|
@@ -86,8 +100,7 @@ export default {
|
|
|
86
100
|
handler(e) {
|
|
87
101
|
e.preventDefault();
|
|
88
102
|
this.show(e.current);
|
|
89
|
-
}
|
|
90
|
-
|
|
103
|
+
},
|
|
91
104
|
},
|
|
92
105
|
|
|
93
106
|
{
|
|
@@ -104,7 +117,7 @@ export default {
|
|
|
104
117
|
handler(e) {
|
|
105
118
|
e.preventDefault();
|
|
106
119
|
this.show(data(e.current, this.attrItem));
|
|
107
|
-
}
|
|
120
|
+
},
|
|
108
121
|
},
|
|
109
122
|
|
|
110
123
|
{
|
|
@@ -118,21 +131,18 @@ export default {
|
|
|
118
131
|
return this.connects;
|
|
119
132
|
},
|
|
120
133
|
|
|
121
|
-
handler({type}) {
|
|
134
|
+
handler({ type }) {
|
|
122
135
|
this.show(endsWith(type, 'Left') ? 'next' : 'previous');
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
136
|
+
},
|
|
137
|
+
},
|
|
126
138
|
],
|
|
127
139
|
|
|
128
140
|
methods: {
|
|
129
|
-
|
|
130
141
|
index() {
|
|
131
|
-
return findIndex(this.children, el => hasClass(el, this.cls));
|
|
142
|
+
return findIndex(this.children, (el) => hasClass(el, this.cls));
|
|
132
143
|
},
|
|
133
144
|
|
|
134
145
|
show(item) {
|
|
135
|
-
|
|
136
146
|
const prev = this.index();
|
|
137
147
|
const next = getIndex(
|
|
138
148
|
this.children[getIndex(item, this.toggles, prev)],
|
|
@@ -148,15 +158,14 @@ export default {
|
|
|
148
158
|
attr(this.toggles[i], 'aria-expanded', next === i);
|
|
149
159
|
});
|
|
150
160
|
|
|
151
|
-
this.connects.forEach(({children}) =>
|
|
152
|
-
this.toggleElement(
|
|
153
|
-
hasClass(child, this.cls)
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
)
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
|
|
161
|
+
this.connects.forEach(async ({ children }) => {
|
|
162
|
+
await this.toggleElement(
|
|
163
|
+
toNodes(children).filter((child) => hasClass(child, this.cls)),
|
|
164
|
+
false,
|
|
165
|
+
prev >= 0
|
|
166
|
+
);
|
|
167
|
+
await this.toggleElement(children[next], true, prev >= 0);
|
|
168
|
+
});
|
|
169
|
+
},
|
|
170
|
+
},
|
|
162
171
|
};
|
package/src/js/core/tab.js
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
import Switcher from './switcher';
|
|
2
2
|
import Class from '../mixin/class';
|
|
3
|
-
import {hasClass} from 'uikit-util';
|
|
3
|
+
import { hasClass } from 'uikit-util';
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
|
-
|
|
7
6
|
mixins: [Class],
|
|
8
7
|
|
|
9
8
|
extends: Switcher,
|
|
10
9
|
|
|
11
10
|
props: {
|
|
12
|
-
media: Boolean
|
|
11
|
+
media: Boolean,
|
|
13
12
|
},
|
|
14
13
|
|
|
15
14
|
data: {
|
|
16
15
|
media: 960,
|
|
17
|
-
attrItem: 'uk-tab-item'
|
|
16
|
+
attrItem: 'uk-tab-item',
|
|
18
17
|
},
|
|
19
18
|
|
|
20
19
|
connected() {
|
|
21
|
-
|
|
22
20
|
const cls = hasClass(this.$el, 'uk-tab-left')
|
|
23
21
|
? 'uk-tab-left'
|
|
24
22
|
: hasClass(this.$el, 'uk-tab-right')
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
? 'uk-tab-right'
|
|
24
|
+
: false;
|
|
27
25
|
|
|
28
26
|
if (cls) {
|
|
29
|
-
this.$create('toggle', this.$el, {cls, mode: 'media', media: this.media});
|
|
27
|
+
this.$create('toggle', this.$el, { cls, mode: 'media', media: this.media });
|
|
30
28
|
}
|
|
31
|
-
}
|
|
32
|
-
|
|
29
|
+
},
|
|
33
30
|
};
|