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
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
import Animate from '../mixin/animate';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
$$,
|
|
4
|
+
append,
|
|
5
|
+
css,
|
|
6
|
+
data,
|
|
7
|
+
each,
|
|
8
|
+
fastdom,
|
|
9
|
+
children as getChildren,
|
|
10
|
+
hasClass,
|
|
11
|
+
includes,
|
|
12
|
+
isEmpty,
|
|
13
|
+
isEqual,
|
|
14
|
+
isUndefined,
|
|
15
|
+
matches,
|
|
16
|
+
parseOptions,
|
|
17
|
+
toggleClass,
|
|
18
|
+
trigger,
|
|
19
|
+
} from 'uikit-util';
|
|
3
20
|
|
|
4
21
|
export default {
|
|
5
|
-
|
|
6
22
|
mixins: [Animate],
|
|
7
23
|
|
|
8
24
|
args: 'target',
|
|
9
25
|
|
|
10
26
|
props: {
|
|
11
27
|
target: Boolean,
|
|
12
|
-
selActive: Boolean
|
|
28
|
+
selActive: Boolean,
|
|
13
29
|
},
|
|
14
30
|
|
|
15
31
|
data: {
|
|
@@ -17,35 +33,29 @@ export default {
|
|
|
17
33
|
selActive: false,
|
|
18
34
|
attrItem: 'uk-filter-control',
|
|
19
35
|
cls: 'uk-active',
|
|
20
|
-
duration: 250
|
|
36
|
+
duration: 250,
|
|
21
37
|
},
|
|
22
38
|
|
|
23
39
|
computed: {
|
|
24
|
-
|
|
25
40
|
toggles: {
|
|
26
|
-
|
|
27
|
-
get({attrItem}, $el) {
|
|
41
|
+
get({ attrItem }, $el) {
|
|
28
42
|
return $$(`[${attrItem}],[data-${attrItem}]`, $el);
|
|
29
43
|
},
|
|
30
44
|
|
|
31
45
|
watch() {
|
|
32
|
-
|
|
33
46
|
this.updateState();
|
|
34
47
|
|
|
35
48
|
if (this.selActive !== false) {
|
|
36
49
|
const actives = $$(this.selActive, this.$el);
|
|
37
|
-
this.toggles.forEach(el => toggleClass(el, this.cls, includes(actives, el)));
|
|
50
|
+
this.toggles.forEach((el) => toggleClass(el, this.cls, includes(actives, el)));
|
|
38
51
|
}
|
|
39
|
-
|
|
40
52
|
},
|
|
41
53
|
|
|
42
|
-
immediate: true
|
|
43
|
-
|
|
54
|
+
immediate: true,
|
|
44
55
|
},
|
|
45
56
|
|
|
46
57
|
children: {
|
|
47
|
-
|
|
48
|
-
get({target}, $el) {
|
|
58
|
+
get({ target }, $el) {
|
|
49
59
|
return $$(`${target} > *`, $el);
|
|
50
60
|
},
|
|
51
61
|
|
|
@@ -55,16 +65,12 @@ export default {
|
|
|
55
65
|
}
|
|
56
66
|
},
|
|
57
67
|
|
|
58
|
-
immediate: true
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
68
|
+
immediate: true,
|
|
69
|
+
},
|
|
62
70
|
},
|
|
63
71
|
|
|
64
72
|
events: [
|
|
65
|
-
|
|
66
73
|
{
|
|
67
|
-
|
|
68
74
|
name: 'click',
|
|
69
75
|
|
|
70
76
|
delegate() {
|
|
@@ -72,18 +78,13 @@ export default {
|
|
|
72
78
|
},
|
|
73
79
|
|
|
74
80
|
handler(e) {
|
|
75
|
-
|
|
76
81
|
e.preventDefault();
|
|
77
82
|
this.apply(e.current);
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
+
},
|
|
84
|
+
},
|
|
83
85
|
],
|
|
84
86
|
|
|
85
87
|
methods: {
|
|
86
|
-
|
|
87
88
|
apply(el) {
|
|
88
89
|
const prevState = this.getState();
|
|
89
90
|
const newState = mergeState(el, this.attrItem, this.getState());
|
|
@@ -95,34 +96,37 @@ export default {
|
|
|
95
96
|
|
|
96
97
|
getState() {
|
|
97
98
|
return this.toggles
|
|
98
|
-
.filter(item => hasClass(item, this.cls))
|
|
99
|
-
.reduce((state, el) => mergeState(el, this.attrItem, state), {
|
|
99
|
+
.filter((item) => hasClass(item, this.cls))
|
|
100
|
+
.reduce((state, el) => mergeState(el, this.attrItem, state), {
|
|
101
|
+
filter: { '': '' },
|
|
102
|
+
sort: [],
|
|
103
|
+
});
|
|
100
104
|
},
|
|
101
105
|
|
|
102
106
|
setState(state, animate = true) {
|
|
103
|
-
|
|
104
|
-
state = assign({filter: {'': ''}, sort: []}, state);
|
|
107
|
+
state = { filter: { '': '' }, sort: [], ...state };
|
|
105
108
|
|
|
106
109
|
trigger(this.$el, 'beforeFilter', [this, state]);
|
|
107
110
|
|
|
108
|
-
this.toggles.forEach(el =>
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
111
|
+
this.toggles.forEach((el) =>
|
|
112
|
+
toggleClass(el, this.cls, !!matchFilter(el, this.attrItem, state))
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
Promise.all(
|
|
116
|
+
$$(this.target, this.$el).map((target) => {
|
|
117
|
+
const filterFn = () => {
|
|
118
|
+
applyState(state, target, getChildren(target));
|
|
119
|
+
this.$update(this.$el);
|
|
120
|
+
};
|
|
121
|
+
return animate ? this.animate(filterFn, target) : filterFn();
|
|
122
|
+
})
|
|
123
|
+
).then(() => trigger(this.$el, 'afterFilter', [this]));
|
|
118
124
|
},
|
|
119
125
|
|
|
120
126
|
updateState() {
|
|
121
127
|
fastdom.write(() => this.setState(this.getState(), false));
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
|
|
128
|
+
},
|
|
129
|
+
},
|
|
126
130
|
};
|
|
127
131
|
|
|
128
132
|
function getFilter(el, attr) {
|
|
@@ -130,13 +134,13 @@ function getFilter(el, attr) {
|
|
|
130
134
|
}
|
|
131
135
|
|
|
132
136
|
function isEqualState(stateA, stateB) {
|
|
133
|
-
return ['filter', 'sort'].every(prop => isEqual(stateA[prop], stateB[prop]));
|
|
137
|
+
return ['filter', 'sort'].every((prop) => isEqual(stateA[prop], stateB[prop]));
|
|
134
138
|
}
|
|
135
139
|
|
|
136
140
|
function applyState(state, target, children) {
|
|
137
141
|
const selector = getSelector(state);
|
|
138
142
|
|
|
139
|
-
children.forEach(el => css(el, 'display', selector && !matches(el, selector) ? 'none' : ''));
|
|
143
|
+
children.forEach((el) => css(el, 'display', selector && !matches(el, selector) ? 'none' : ''));
|
|
140
144
|
|
|
141
145
|
const [sort, order] = state.sort;
|
|
142
146
|
|
|
@@ -149,14 +153,11 @@ function applyState(state, target, children) {
|
|
|
149
153
|
}
|
|
150
154
|
|
|
151
155
|
function mergeState(el, attr, state) {
|
|
152
|
-
|
|
153
156
|
const filterBy = getFilter(el, attr);
|
|
154
|
-
const {filter, group, sort, order = 'asc'} = filterBy;
|
|
157
|
+
const { filter, group, sort, order = 'asc' } = filterBy;
|
|
155
158
|
|
|
156
159
|
if (filter || isUndefined(sort)) {
|
|
157
|
-
|
|
158
160
|
if (group) {
|
|
159
|
-
|
|
160
161
|
if (filter) {
|
|
161
162
|
delete state.filter[''];
|
|
162
163
|
state.filter[group] = filter;
|
|
@@ -164,15 +165,12 @@ function mergeState(el, attr, state) {
|
|
|
164
165
|
delete state.filter[group];
|
|
165
166
|
|
|
166
167
|
if (isEmpty(state.filter) || '' in state.filter) {
|
|
167
|
-
state.filter = {'': filter || ''};
|
|
168
|
+
state.filter = { '': filter || '' };
|
|
168
169
|
}
|
|
169
|
-
|
|
170
170
|
}
|
|
171
|
-
|
|
172
171
|
} else {
|
|
173
|
-
state.filter = {'': filter || ''};
|
|
172
|
+
state.filter = { '': filter || '' };
|
|
174
173
|
}
|
|
175
|
-
|
|
176
174
|
}
|
|
177
175
|
|
|
178
176
|
if (!isUndefined(sort)) {
|
|
@@ -182,27 +180,33 @@ function mergeState(el, attr, state) {
|
|
|
182
180
|
return state;
|
|
183
181
|
}
|
|
184
182
|
|
|
185
|
-
function matchFilter(
|
|
186
|
-
|
|
187
|
-
|
|
183
|
+
function matchFilter(
|
|
184
|
+
el,
|
|
185
|
+
attr,
|
|
186
|
+
{ filter: stateFilter = { '': '' }, sort: [stateSort, stateOrder] }
|
|
187
|
+
) {
|
|
188
|
+
const { filter = '', group = '', sort, order = 'asc' } = getFilter(el, attr);
|
|
188
189
|
|
|
189
190
|
return isUndefined(sort)
|
|
190
|
-
? group in stateFilter && filter === stateFilter[group]
|
|
191
|
-
|
|
191
|
+
? (group in stateFilter && filter === stateFilter[group]) ||
|
|
192
|
+
(!filter && group && !(group in stateFilter) && !stateFilter[''])
|
|
192
193
|
: stateSort === sort && stateOrder === order;
|
|
193
194
|
}
|
|
194
195
|
|
|
195
196
|
function isEqualList(listA, listB) {
|
|
196
|
-
return listA.length === listB.length
|
|
197
|
-
&& listA.every(el => ~listB.indexOf(el));
|
|
197
|
+
return listA.length === listB.length && listA.every((el) => ~listB.indexOf(el));
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
function getSelector({filter}) {
|
|
200
|
+
function getSelector({ filter }) {
|
|
201
201
|
let selector = '';
|
|
202
|
-
each(filter, value => selector += value || '');
|
|
202
|
+
each(filter, (value) => (selector += value || ''));
|
|
203
203
|
return selector;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
function sortItems(nodes, sort, order) {
|
|
207
|
-
return
|
|
207
|
+
return [...nodes].sort(
|
|
208
|
+
(a, b) =>
|
|
209
|
+
data(a, sort).localeCompare(data(b, sort), undefined, { numeric: true }) *
|
|
210
|
+
(order === 'asc' || -1)
|
|
211
|
+
);
|
|
208
212
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export {default as Countdown} from './countdown';
|
|
2
|
-
export {default as Filter} from './filter';
|
|
3
|
-
export {default as Lightbox} from './lightbox';
|
|
4
|
-
export {default as LightboxPanel} from './lightbox-panel';
|
|
5
|
-
export {default as Notification} from './notification';
|
|
6
|
-
export {default as Parallax} from './parallax';
|
|
7
|
-
export {default as Slider} from './slider';
|
|
8
|
-
export {default as SliderParallax} from './slider-parallax';
|
|
9
|
-
export {default as Slideshow} from './slideshow';
|
|
10
|
-
export {default as SlideshowParallax} from './slideshow-parallax';
|
|
11
|
-
export {default as Sortable} from './sortable';
|
|
12
|
-
export {default as Tooltip} from './tooltip';
|
|
13
|
-
export {default as Upload} from './upload';
|
|
1
|
+
export { default as Countdown } from './countdown';
|
|
2
|
+
export { default as Filter } from './filter';
|
|
3
|
+
export { default as Lightbox } from './lightbox';
|
|
4
|
+
export { default as LightboxPanel } from './lightbox-panel';
|
|
5
|
+
export { default as Notification } from './notification';
|
|
6
|
+
export { default as Parallax } from './parallax';
|
|
7
|
+
export { default as Slider } from './slider';
|
|
8
|
+
export { default as SliderParallax } from './slider-parallax';
|
|
9
|
+
export { default as Slideshow } from './slideshow';
|
|
10
|
+
export { default as SlideshowParallax } from './slideshow-parallax';
|
|
11
|
+
export { default as Sortable } from './sortable';
|
|
12
|
+
export { default as Tooltip } from './tooltip';
|
|
13
|
+
export { default as Upload } from './upload';
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import Animations, {scale3d} from '../../mixin/internal/slideshow-animations';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export default assign({}, Animations, {
|
|
1
|
+
import Animations, { scale3d } from '../../mixin/internal/slideshow-animations';
|
|
2
|
+
import { css } from 'uikit-util';
|
|
5
3
|
|
|
4
|
+
export default {
|
|
5
|
+
...Animations,
|
|
6
6
|
fade: {
|
|
7
|
-
|
|
8
7
|
show() {
|
|
9
|
-
return [
|
|
10
|
-
{opacity: 0},
|
|
11
|
-
{opacity: 1}
|
|
12
|
-
];
|
|
8
|
+
return [{ opacity: 0 }, { opacity: 1 }];
|
|
13
9
|
},
|
|
14
10
|
|
|
15
11
|
percent(current) {
|
|
@@ -17,20 +13,15 @@ export default assign({}, Animations, {
|
|
|
17
13
|
},
|
|
18
14
|
|
|
19
15
|
translate(percent) {
|
|
20
|
-
return [
|
|
21
|
-
|
|
22
|
-
{opacity: percent}
|
|
23
|
-
];
|
|
24
|
-
}
|
|
25
|
-
|
|
16
|
+
return [{ opacity: 1 - percent }, { opacity: percent }];
|
|
17
|
+
},
|
|
26
18
|
},
|
|
27
19
|
|
|
28
20
|
scale: {
|
|
29
|
-
|
|
30
21
|
show() {
|
|
31
22
|
return [
|
|
32
|
-
{opacity: 0, transform: scale3d(1 - .2)},
|
|
33
|
-
{opacity: 1, transform: scale3d(1)}
|
|
23
|
+
{ opacity: 0, transform: scale3d(1 - 0.2) },
|
|
24
|
+
{ opacity: 1, transform: scale3d(1) },
|
|
34
25
|
];
|
|
35
26
|
},
|
|
36
27
|
|
|
@@ -40,11 +31,9 @@ export default assign({}, Animations, {
|
|
|
40
31
|
|
|
41
32
|
translate(percent) {
|
|
42
33
|
return [
|
|
43
|
-
{opacity: 1 - percent, transform: scale3d(1 - .2 * percent)},
|
|
44
|
-
{opacity: percent, transform: scale3d(1 - .2 + .2 * percent)}
|
|
34
|
+
{ opacity: 1 - percent, transform: scale3d(1 - 0.2 * percent) },
|
|
35
|
+
{ opacity: percent, transform: scale3d(1 - 0.2 + 0.2 * percent) },
|
|
45
36
|
];
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
});
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
import {translate} from '../../mixin/internal/slideshow-animations';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { translate } from '../../mixin/internal/slideshow-animations';
|
|
2
|
+
import {
|
|
3
|
+
children,
|
|
4
|
+
clamp,
|
|
5
|
+
createEvent,
|
|
6
|
+
css,
|
|
7
|
+
Deferred,
|
|
8
|
+
dimensions,
|
|
9
|
+
findIndex,
|
|
10
|
+
includes,
|
|
11
|
+
isRtl,
|
|
12
|
+
noop,
|
|
13
|
+
position,
|
|
14
|
+
Transition,
|
|
15
|
+
trigger,
|
|
16
|
+
} from 'uikit-util';
|
|
17
|
+
|
|
18
|
+
export default function (prev, next, dir, { center, easing, list }) {
|
|
6
19
|
const deferred = new Deferred();
|
|
7
20
|
|
|
8
21
|
const from = prev
|
|
@@ -13,26 +26,32 @@ export default function (prev, next, dir, {center, easing, list}) {
|
|
|
13
26
|
: from + dimensions(prev).width * dir * (isRtl ? -1 : 1);
|
|
14
27
|
|
|
15
28
|
return {
|
|
16
|
-
|
|
17
29
|
dir,
|
|
18
30
|
|
|
19
31
|
show(duration, percent = 0, linear) {
|
|
20
|
-
|
|
21
32
|
const timing = linear ? 'linear' : easing;
|
|
22
33
|
duration -= Math.round(duration * clamp(percent, -1, 1));
|
|
23
34
|
|
|
24
35
|
this.translate(percent);
|
|
25
36
|
|
|
26
37
|
percent = prev ? percent : clamp(percent, 0, 1);
|
|
27
|
-
triggerUpdate(this.getItemIn(), 'itemin', {percent, duration, timing, dir});
|
|
28
|
-
prev &&
|
|
38
|
+
triggerUpdate(this.getItemIn(), 'itemin', { percent, duration, timing, dir });
|
|
39
|
+
prev &&
|
|
40
|
+
triggerUpdate(this.getItemIn(true), 'itemout', {
|
|
41
|
+
percent: 1 - percent,
|
|
42
|
+
duration,
|
|
43
|
+
timing,
|
|
44
|
+
dir,
|
|
45
|
+
});
|
|
29
46
|
|
|
30
|
-
Transition
|
|
31
|
-
|
|
32
|
-
|
|
47
|
+
Transition.start(
|
|
48
|
+
list,
|
|
49
|
+
{ transform: translate(-to * (isRtl ? -1 : 1), 'px') },
|
|
50
|
+
duration,
|
|
51
|
+
timing
|
|
52
|
+
).then(deferred.resolve, noop);
|
|
33
53
|
|
|
34
54
|
return deferred.promise;
|
|
35
|
-
|
|
36
55
|
},
|
|
37
56
|
|
|
38
57
|
cancel() {
|
|
@@ -49,14 +68,20 @@ export default function (prev, next, dir, {center, easing, list}) {
|
|
|
49
68
|
},
|
|
50
69
|
|
|
51
70
|
translate(percent) {
|
|
52
|
-
|
|
53
71
|
const distance = this.getDistance() * dir * (isRtl ? -1 : 1);
|
|
54
72
|
|
|
55
|
-
css(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
73
|
+
css(
|
|
74
|
+
list,
|
|
75
|
+
'transform',
|
|
76
|
+
translate(
|
|
77
|
+
clamp(
|
|
78
|
+
-to + (distance - distance * percent),
|
|
79
|
+
-getWidth(list),
|
|
80
|
+
dimensions(list).width
|
|
81
|
+
) * (isRtl ? -1 : 1),
|
|
82
|
+
'px'
|
|
83
|
+
)
|
|
84
|
+
);
|
|
60
85
|
|
|
61
86
|
const actives = this.getActives();
|
|
62
87
|
const itemIn = this.getItemIn();
|
|
@@ -64,28 +89,28 @@ export default function (prev, next, dir, {center, easing, list}) {
|
|
|
64
89
|
|
|
65
90
|
percent = prev ? clamp(percent, -1, 1) : 0;
|
|
66
91
|
|
|
67
|
-
children(list)
|
|
92
|
+
for (const slide of children(list)) {
|
|
68
93
|
const isActive = includes(actives, slide);
|
|
69
94
|
const isIn = slide === itemIn;
|
|
70
95
|
const isOut = slide === itemOut;
|
|
71
|
-
const translateIn =
|
|
96
|
+
const translateIn =
|
|
97
|
+
isIn ||
|
|
98
|
+
(!isOut &&
|
|
99
|
+
(isActive ||
|
|
100
|
+
(dir * (isRtl ? -1 : 1) === -1) ^
|
|
101
|
+
(getElLeft(slide, list) > getElLeft(prev || next))));
|
|
72
102
|
|
|
73
103
|
triggerUpdate(slide, `itemtranslate${translateIn ? 'in' : 'out'}`, {
|
|
74
104
|
dir,
|
|
75
|
-
percent: isOut
|
|
76
|
-
? 1 - percent
|
|
77
|
-
: isIn
|
|
78
|
-
? percent
|
|
79
|
-
: isActive
|
|
80
|
-
? 1
|
|
81
|
-
: 0
|
|
105
|
+
percent: isOut ? 1 - percent : isIn ? percent : isActive ? 1 : 0,
|
|
82
106
|
});
|
|
83
|
-
}
|
|
84
|
-
|
|
107
|
+
}
|
|
85
108
|
},
|
|
86
109
|
|
|
87
110
|
percent() {
|
|
88
|
-
return Math.abs(
|
|
111
|
+
return Math.abs(
|
|
112
|
+
(css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from)
|
|
113
|
+
);
|
|
89
114
|
},
|
|
90
115
|
|
|
91
116
|
getDistance() {
|
|
@@ -93,7 +118,6 @@ export default function (prev, next, dir, {center, easing, list}) {
|
|
|
93
118
|
},
|
|
94
119
|
|
|
95
120
|
getItemIn(out = false) {
|
|
96
|
-
|
|
97
121
|
let actives = this.getActives();
|
|
98
122
|
let nextActives = inView(list, getLeft(next || prev, list, center));
|
|
99
123
|
|
|
@@ -103,26 +127,19 @@ export default function (prev, next, dir, {center, easing, list}) {
|
|
|
103
127
|
nextActives = temp;
|
|
104
128
|
}
|
|
105
129
|
|
|
106
|
-
return nextActives[findIndex(nextActives, el => !includes(actives, el))];
|
|
107
|
-
|
|
130
|
+
return nextActives[findIndex(nextActives, (el) => !includes(actives, el))];
|
|
108
131
|
},
|
|
109
132
|
|
|
110
133
|
getActives() {
|
|
111
134
|
return inView(list, getLeft(prev || next, list, center));
|
|
112
|
-
}
|
|
113
|
-
|
|
135
|
+
},
|
|
114
136
|
};
|
|
115
|
-
|
|
116
137
|
}
|
|
117
138
|
|
|
118
139
|
function getLeft(el, list, center) {
|
|
119
|
-
|
|
120
140
|
const left = getElLeft(el, list);
|
|
121
141
|
|
|
122
|
-
return center
|
|
123
|
-
? left - centerEl(el, list)
|
|
124
|
-
: Math.min(left, getMax(list));
|
|
125
|
-
|
|
142
|
+
return center ? left - centerEl(el, list) : Math.min(left, getMax(list));
|
|
126
143
|
}
|
|
127
144
|
|
|
128
145
|
export function getMax(list) {
|
|
@@ -138,16 +155,20 @@ function centerEl(el, list) {
|
|
|
138
155
|
}
|
|
139
156
|
|
|
140
157
|
export function getElLeft(el, list) {
|
|
141
|
-
return
|
|
158
|
+
return (
|
|
159
|
+
(el &&
|
|
160
|
+
(position(el).left + (isRtl ? dimensions(el).width - dimensions(list).width : 0)) *
|
|
161
|
+
(isRtl ? -1 : 1)) ||
|
|
162
|
+
0
|
|
163
|
+
);
|
|
142
164
|
}
|
|
143
165
|
|
|
144
166
|
function inView(list, listLeft) {
|
|
145
|
-
|
|
146
167
|
listLeft -= 1;
|
|
147
168
|
const listWidth = dimensions(list).width;
|
|
148
169
|
const listRight = listLeft + listWidth + 2;
|
|
149
170
|
|
|
150
|
-
return children(list).filter(slide => {
|
|
171
|
+
return children(list).filter((slide) => {
|
|
151
172
|
const slideLeft = getElLeft(slide, list);
|
|
152
173
|
const slideRight = slideLeft + Math.min(dimensions(slide).width, listWidth);
|
|
153
174
|
|