uikit 3.11.2-dev.c2430c233 → 3.11.2-dev.c7ed3c19b
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 +5 -0
- 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 +1 -1
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +1 -1
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +1 -1
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +1 -1
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +88 -133
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +409 -438
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +1116 -1305
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +1164 -1383
- 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 +294 -345
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +292 -344
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +727 -850
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +292 -344
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +615 -799
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +588 -619
- 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 +155 -167
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +5356 -6705
- 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 +8116 -9909
- 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 +23 -27
- package/src/js/api/global.js +6 -12
- package/src/js/api/hooks.js +13 -32
- package/src/js/api/instance.js +7 -15
- package/src/js/api/state.js +65 -82
- package/src/js/components/countdown.js +24 -50
- package/src/js/components/filter.js +71 -66
- package/src/js/components/index.js +13 -13
- package/src/js/components/internal/lightbox-animations.js +11 -23
- package/src/js/components/internal/slider-transitioner.js +66 -45
- package/src/js/components/internal/slideshow-animations.js +42 -61
- package/src/js/components/lightbox-panel.js +135 -109
- package/src/js/components/lightbox.js +18 -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 +75 -64
- package/src/js/components/slideshow-parallax.js +1 -1
- package/src/js/components/slideshow.js +8 -13
- package/src/js/components/sortable.js +125 -106
- package/src/js/components/tooltip.js +41 -31
- package/src/js/components/upload.js +52 -63
- package/src/js/core/accordion.js +53 -48
- package/src/js/core/alert.js +10 -17
- package/src/js/core/core.js +74 -53
- package/src/js/core/cover.js +11 -15
- package/src/js/core/drop.js +106 -92
- package/src/js/core/form-custom.js +20 -25
- 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 +28 -35
- package/src/js/core/icon.js +38 -50
- package/src/js/core/img.js +59 -58
- 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 +50 -36
- package/src/js/core/nav.js +2 -4
- package/src/js/core/navbar.js +112 -88
- package/src/js/core/offcanvas.js +49 -53
- 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 +130 -91
- package/src/js/core/svg.js +60 -79
- package/src/js/core/switcher.js +47 -46
- package/src/js/core/tab.js +7 -10
- package/src/js/core/toggle.js +64 -66
- package/src/js/core/video.js +11 -22
- 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 +61 -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/media.js +5 -10
- package/src/js/mixin/modal.js +89 -66
- package/src/js/mixin/parallax.js +53 -48
- 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 +51 -50
- package/src/js/mixin/slideshow.js +13 -19
- package/src/js/mixin/togglable.js +90 -63
- package/src/js/uikit-core.js +2 -4
- package/src/js/uikit.js +2 -4
- package/src/js/util/ajax.js +27 -43
- package/src/js/util/animation.js +82 -75
- package/src/js/util/attr.js +17 -21
- package/src/js/util/class.js +14 -52
- package/src/js/util/dimensions.js +56 -43
- package/src/js/util/dom.js +40 -73
- 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 +17 -34
- package/src/js/util/index.js +0 -1
- package/src/js/util/lang.js +79 -119
- package/src/js/util/mouse.js +19 -17
- package/src/js/util/options.js +44 -49
- package/src/js/util/player.js +40 -36
- package/src/js/util/position.js +54 -46
- package/src/js/util/selector.js +34 -49
- package/src/js/util/style.js +36 -46
- package/src/js/util/viewport.js +75 -64
- package/tests/js/index.js +114 -85
- package/src/js/mixin/flex-bug.js +0 -56
- package/src/js/util/promise.js +0 -191
package/src/js/core/img.js
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createEvent,
|
|
3
|
+
css,
|
|
4
|
+
Dimensions,
|
|
5
|
+
escape,
|
|
6
|
+
getImage,
|
|
7
|
+
includes,
|
|
8
|
+
isUndefined,
|
|
9
|
+
queryAll,
|
|
10
|
+
startsWith,
|
|
11
|
+
toFloat,
|
|
12
|
+
toPx,
|
|
13
|
+
trigger,
|
|
14
|
+
} from 'uikit-util';
|
|
2
15
|
|
|
3
16
|
export default {
|
|
4
|
-
|
|
5
17
|
args: 'dataSrc',
|
|
6
18
|
|
|
7
19
|
props: {
|
|
@@ -12,7 +24,7 @@ export default {
|
|
|
12
24
|
height: Number,
|
|
13
25
|
offsetTop: String,
|
|
14
26
|
offsetLeft: String,
|
|
15
|
-
target: String
|
|
27
|
+
target: String,
|
|
16
28
|
},
|
|
17
29
|
|
|
18
30
|
data: {
|
|
@@ -23,24 +35,23 @@ export default {
|
|
|
23
35
|
height: false,
|
|
24
36
|
offsetTop: '50vh',
|
|
25
37
|
offsetLeft: '50vw',
|
|
26
|
-
target: false
|
|
38
|
+
target: false,
|
|
27
39
|
},
|
|
28
40
|
|
|
29
41
|
computed: {
|
|
30
|
-
|
|
31
|
-
cacheKey({dataSrc}) {
|
|
42
|
+
cacheKey({ dataSrc }) {
|
|
32
43
|
return `${this.$name}.${dataSrc}`;
|
|
33
44
|
},
|
|
34
45
|
|
|
35
|
-
width({width, dataWidth}) {
|
|
46
|
+
width({ width, dataWidth }) {
|
|
36
47
|
return width || dataWidth;
|
|
37
48
|
},
|
|
38
49
|
|
|
39
|
-
height({height, dataHeight}) {
|
|
50
|
+
height({ height, dataHeight }) {
|
|
40
51
|
return height || dataHeight;
|
|
41
52
|
},
|
|
42
53
|
|
|
43
|
-
sizes({sizes, dataSizes}) {
|
|
54
|
+
sizes({ sizes, dataSizes }) {
|
|
44
55
|
return sizes || dataSizes;
|
|
45
56
|
},
|
|
46
57
|
|
|
@@ -49,29 +60,25 @@ export default {
|
|
|
49
60
|
},
|
|
50
61
|
|
|
51
62
|
target: {
|
|
52
|
-
|
|
53
|
-
get({target}) {
|
|
63
|
+
get({ target }) {
|
|
54
64
|
return [this.$el, ...queryAll(target, this.$el)];
|
|
55
65
|
},
|
|
56
66
|
|
|
57
67
|
watch() {
|
|
58
68
|
this.observe();
|
|
59
|
-
}
|
|
60
|
-
|
|
69
|
+
},
|
|
61
70
|
},
|
|
62
71
|
|
|
63
|
-
offsetTop({offsetTop}) {
|
|
72
|
+
offsetTop({ offsetTop }) {
|
|
64
73
|
return toPx(offsetTop, 'height');
|
|
65
74
|
},
|
|
66
75
|
|
|
67
|
-
offsetLeft({offsetLeft}) {
|
|
76
|
+
offsetLeft({ offsetLeft }) {
|
|
68
77
|
return toPx(offsetLeft, 'width');
|
|
69
|
-
}
|
|
70
|
-
|
|
78
|
+
},
|
|
71
79
|
},
|
|
72
80
|
|
|
73
81
|
connected() {
|
|
74
|
-
|
|
75
82
|
if (!window.IntersectionObserver) {
|
|
76
83
|
setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
|
|
77
84
|
return;
|
|
@@ -84,11 +91,10 @@ export default {
|
|
|
84
91
|
}
|
|
85
92
|
|
|
86
93
|
this.observer = new IntersectionObserver(this.load, {
|
|
87
|
-
rootMargin: `${this.offsetTop}px ${this.offsetLeft}px
|
|
94
|
+
rootMargin: `${this.offsetTop}px ${this.offsetLeft}px`,
|
|
88
95
|
});
|
|
89
96
|
|
|
90
97
|
requestAnimationFrame(this.observe);
|
|
91
|
-
|
|
92
98
|
},
|
|
93
99
|
|
|
94
100
|
disconnected() {
|
|
@@ -96,9 +102,7 @@ export default {
|
|
|
96
102
|
},
|
|
97
103
|
|
|
98
104
|
update: {
|
|
99
|
-
|
|
100
|
-
read({image}) {
|
|
101
|
-
|
|
105
|
+
read({ image }) {
|
|
102
106
|
if (!this.observer) {
|
|
103
107
|
return false;
|
|
104
108
|
}
|
|
@@ -111,81 +115,78 @@ export default {
|
|
|
111
115
|
return false;
|
|
112
116
|
}
|
|
113
117
|
|
|
114
|
-
image &&
|
|
115
|
-
|
|
118
|
+
image &&
|
|
119
|
+
image.then(
|
|
120
|
+
(img) => img && img.currentSrc !== '' && setSrcAttrs(this.$el, currentSrc(img))
|
|
121
|
+
);
|
|
116
122
|
},
|
|
117
123
|
|
|
118
124
|
write(data) {
|
|
119
|
-
|
|
120
125
|
if (this.dataSrcset && window.devicePixelRatio !== 1) {
|
|
121
|
-
|
|
122
126
|
const bgSize = css(this.$el, 'backgroundSize');
|
|
123
127
|
if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === data.bgSize) {
|
|
124
128
|
data.bgSize = getSourceSize(this.dataSrcset, this.sizes);
|
|
125
129
|
css(this.$el, 'backgroundSize', `${data.bgSize}px`);
|
|
126
130
|
}
|
|
127
|
-
|
|
128
131
|
}
|
|
129
|
-
|
|
130
132
|
},
|
|
131
133
|
|
|
132
|
-
events: ['resize']
|
|
133
|
-
|
|
134
|
+
events: ['resize'],
|
|
134
135
|
},
|
|
135
136
|
|
|
136
137
|
methods: {
|
|
137
|
-
|
|
138
138
|
load(entries) {
|
|
139
|
-
|
|
140
139
|
// Old chromium based browsers (UC Browser) did not implement `isIntersecting`
|
|
141
|
-
if (
|
|
140
|
+
if (
|
|
141
|
+
!entries.some((entry) => isUndefined(entry.isIntersecting) || entry.isIntersecting)
|
|
142
|
+
) {
|
|
142
143
|
return;
|
|
143
144
|
}
|
|
144
145
|
|
|
145
|
-
this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
146
|
+
this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(
|
|
147
|
+
(img) => {
|
|
148
|
+
setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
|
|
149
|
+
storage[this.cacheKey] = currentSrc(img);
|
|
150
|
+
return img;
|
|
151
|
+
},
|
|
152
|
+
(e) => trigger(this.$el, new e.constructor(e.type, e))
|
|
153
|
+
);
|
|
152
154
|
|
|
153
155
|
this.observer.disconnect();
|
|
154
156
|
},
|
|
155
157
|
|
|
156
158
|
observe() {
|
|
157
159
|
if (this._connected && !this._data.image) {
|
|
158
|
-
|
|
160
|
+
for (const el of this.target) {
|
|
161
|
+
this.observer.observe(el);
|
|
162
|
+
}
|
|
159
163
|
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
+
},
|
|
165
|
+
},
|
|
164
166
|
};
|
|
165
167
|
|
|
166
168
|
function setSrcAttrs(el, src, srcset, sizes) {
|
|
167
|
-
|
|
168
169
|
if (isImg(el)) {
|
|
169
170
|
const set = (prop, val) => val && val !== el[prop] && (el[prop] = val);
|
|
170
171
|
set('sizes', sizes);
|
|
171
172
|
set('srcset', srcset);
|
|
172
173
|
set('src', src);
|
|
173
174
|
} else if (src) {
|
|
174
|
-
|
|
175
175
|
const change = !includes(el.style.backgroundImage, src);
|
|
176
176
|
if (change) {
|
|
177
177
|
css(el, 'backgroundImage', `url(${escape(src)})`);
|
|
178
178
|
trigger(el, createEvent('load', false));
|
|
179
179
|
}
|
|
180
|
-
|
|
181
180
|
}
|
|
182
|
-
|
|
183
181
|
}
|
|
184
182
|
|
|
185
183
|
function getPlaceholderImage(width, height, sizes) {
|
|
186
|
-
|
|
187
184
|
if (sizes) {
|
|
188
|
-
({width, height} = Dimensions.ratio(
|
|
185
|
+
({ width, height } = Dimensions.ratio(
|
|
186
|
+
{ width, height },
|
|
187
|
+
'width',
|
|
188
|
+
toPx(sizesToPixel(sizes))
|
|
189
|
+
));
|
|
189
190
|
}
|
|
190
191
|
|
|
191
192
|
return `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}"></svg>`;
|
|
@@ -212,11 +213,11 @@ const additionRe = /[+-]?(\d+)/g;
|
|
|
212
213
|
function evaluateSize(size) {
|
|
213
214
|
return startsWith(size, 'calc')
|
|
214
215
|
? size
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
216
|
+
.slice(5, -1)
|
|
217
|
+
.replace(sizeRe, (size) => toPx(size))
|
|
218
|
+
.replace(/ /g, '')
|
|
219
|
+
.match(additionRe)
|
|
220
|
+
.reduce((a, b) => a + +b, 0)
|
|
220
221
|
: size;
|
|
221
222
|
}
|
|
222
223
|
|
|
@@ -225,7 +226,7 @@ function getSourceSize(srcset, sizes) {
|
|
|
225
226
|
const srcSize = toPx(sizesToPixel(sizes));
|
|
226
227
|
const descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort((a, b) => a - b);
|
|
227
228
|
|
|
228
|
-
return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
|
|
229
|
+
return descriptors.filter((size) => size >= srcSize)[0] || descriptors.pop() || '';
|
|
229
230
|
}
|
|
230
231
|
|
|
231
232
|
function isImg(el) {
|
package/src/js/core/index.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
export {default as Accordion} from './accordion';
|
|
2
|
-
export {default as Alert} from './alert';
|
|
3
|
-
export {default as Cover} from './cover';
|
|
4
|
-
export {default as Drop, default as Dropdown} from './drop';
|
|
5
|
-
export {default as FormCustom} from './form-custom';
|
|
6
|
-
export {default as Gif} from './gif';
|
|
7
|
-
export {default as Grid} from './grid';
|
|
8
|
-
export {default as HeightMatch} from './height-match';
|
|
9
|
-
export {default as HeightViewport} from './height-viewport';
|
|
10
|
-
export {default as Icon} from './icon';
|
|
11
|
-
export {default as Img} from './img';
|
|
12
|
-
export {default as Leader} from './leader';
|
|
13
|
-
export {default as Margin} from './margin';
|
|
14
|
-
export {default as Modal} from './modal';
|
|
15
|
-
export {default as Nav} from './nav';
|
|
16
|
-
export {default as Navbar} from './navbar';
|
|
17
|
-
export {default as Offcanvas} from './offcanvas';
|
|
18
|
-
export {default as OverflowAuto} from './overflow-auto';
|
|
19
|
-
export {default as Responsive} from './responsive';
|
|
20
|
-
export {default as Scroll} from './scroll';
|
|
21
|
-
export {default as Scrollspy} from './scrollspy';
|
|
22
|
-
export {default as ScrollspyNav} from './scrollspy-nav';
|
|
23
|
-
export {default as Sticky} from './sticky';
|
|
24
|
-
export {default as Svg} from './svg';
|
|
25
|
-
export {default as Switcher} from './switcher';
|
|
26
|
-
export {default as Tab} from './tab';
|
|
27
|
-
export {default as Toggle} from './toggle';
|
|
28
|
-
export {default as Video} from './video';
|
|
1
|
+
export { default as Accordion } from './accordion';
|
|
2
|
+
export { default as Alert } from './alert';
|
|
3
|
+
export { default as Cover } from './cover';
|
|
4
|
+
export { default as Drop, default as Dropdown } from './drop';
|
|
5
|
+
export { default as FormCustom } from './form-custom';
|
|
6
|
+
export { default as Gif } from './gif';
|
|
7
|
+
export { default as Grid } from './grid';
|
|
8
|
+
export { default as HeightMatch } from './height-match';
|
|
9
|
+
export { default as HeightViewport } from './height-viewport';
|
|
10
|
+
export { default as Icon } from './icon';
|
|
11
|
+
export { default as Img } from './img';
|
|
12
|
+
export { default as Leader } from './leader';
|
|
13
|
+
export { default as Margin } from './margin';
|
|
14
|
+
export { default as Modal } from './modal';
|
|
15
|
+
export { default as Nav } from './nav';
|
|
16
|
+
export { default as Navbar } from './navbar';
|
|
17
|
+
export { default as Offcanvas } from './offcanvas';
|
|
18
|
+
export { default as OverflowAuto } from './overflow-auto';
|
|
19
|
+
export { default as Responsive } from './responsive';
|
|
20
|
+
export { default as Scroll } from './scroll';
|
|
21
|
+
export { default as Scrollspy } from './scrollspy';
|
|
22
|
+
export { default as ScrollspyNav } from './scrollspy-nav';
|
|
23
|
+
export { default as Sticky } from './sticky';
|
|
24
|
+
export { default as Svg } from './svg';
|
|
25
|
+
export { default as Switcher } from './switcher';
|
|
26
|
+
export { default as Tab } from './tab';
|
|
27
|
+
export { default as Toggle } from './toggle';
|
|
28
|
+
export { default as Video } from './video';
|
|
29
29
|
|
|
30
30
|
// Icon components
|
|
31
|
-
export {Close} from './icon';
|
|
32
|
-
export {Spinner} from './icon';
|
|
33
|
-
export {Slidenav as SlidenavNext} from './icon';
|
|
34
|
-
export {Slidenav as SlidenavPrevious} from './icon';
|
|
35
|
-
export {Search as SearchIcon} from './icon';
|
|
36
|
-
export {IconComponent as Marker} from './icon';
|
|
37
|
-
export {IconComponent as NavbarToggleIcon} from './icon';
|
|
38
|
-
export {IconComponent as OverlayIcon} from './icon';
|
|
39
|
-
export {IconComponent as PaginationNext} from './icon';
|
|
40
|
-
export {IconComponent as PaginationPrevious} from './icon';
|
|
41
|
-
export {IconComponent as Totop} from './icon';
|
|
31
|
+
export { Close } from './icon';
|
|
32
|
+
export { Spinner } from './icon';
|
|
33
|
+
export { Slidenav as SlidenavNext } from './icon';
|
|
34
|
+
export { Slidenav as SlidenavPrevious } from './icon';
|
|
35
|
+
export { Search as SearchIcon } from './icon';
|
|
36
|
+
export { IconComponent as Marker } from './icon';
|
|
37
|
+
export { IconComponent as NavbarToggleIcon } from './icon';
|
|
38
|
+
export { IconComponent as OverlayIcon } from './icon';
|
|
39
|
+
export { IconComponent as PaginationNext } from './icon';
|
|
40
|
+
export { IconComponent as PaginationPrevious } from './icon';
|
|
41
|
+
export { IconComponent as Totop } from './icon';
|
package/src/js/core/leader.js
CHANGED
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
import Class from '../mixin/class';
|
|
2
2
|
import Media from '../mixin/media';
|
|
3
|
-
import {attr, getCssVar, toggleClass, unwrap, wrapInner} from 'uikit-util';
|
|
3
|
+
import { attr, getCssVar, toggleClass, unwrap, wrapInner } from 'uikit-util';
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
|
-
|
|
7
6
|
mixins: [Class, Media],
|
|
8
7
|
|
|
9
8
|
props: {
|
|
10
|
-
fill: String
|
|
9
|
+
fill: String,
|
|
11
10
|
},
|
|
12
11
|
|
|
13
12
|
data: {
|
|
14
13
|
fill: '',
|
|
15
14
|
clsWrapper: 'uk-leader-fill',
|
|
16
15
|
clsHide: 'uk-leader-hide',
|
|
17
|
-
attrFill: 'data-fill'
|
|
16
|
+
attrFill: 'data-fill',
|
|
18
17
|
},
|
|
19
18
|
|
|
20
19
|
computed: {
|
|
21
|
-
|
|
22
|
-
fill({fill}) {
|
|
20
|
+
fill({ fill }) {
|
|
23
21
|
return fill || getCssVar('leader-fill-content');
|
|
24
|
-
}
|
|
25
|
-
|
|
22
|
+
},
|
|
26
23
|
},
|
|
27
24
|
|
|
28
25
|
connected() {
|
|
@@ -34,9 +31,7 @@ export default {
|
|
|
34
31
|
},
|
|
35
32
|
|
|
36
33
|
update: {
|
|
37
|
-
|
|
38
|
-
read({changed, width}) {
|
|
39
|
-
|
|
34
|
+
read({ changed, width }) {
|
|
40
35
|
const prev = width;
|
|
41
36
|
|
|
42
37
|
width = Math.floor(this.$el.offsetWidth / 2);
|
|
@@ -45,23 +40,19 @@ export default {
|
|
|
45
40
|
width,
|
|
46
41
|
fill: this.fill,
|
|
47
42
|
changed: changed || prev !== width,
|
|
48
|
-
hide: !this.matchMedia
|
|
43
|
+
hide: !this.matchMedia,
|
|
49
44
|
};
|
|
50
45
|
},
|
|
51
46
|
|
|
52
47
|
write(data) {
|
|
53
|
-
|
|
54
48
|
toggleClass(this.wrapper, this.clsHide, data.hide);
|
|
55
49
|
|
|
56
50
|
if (data.changed) {
|
|
57
51
|
data.changed = false;
|
|
58
52
|
attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));
|
|
59
53
|
}
|
|
60
|
-
|
|
61
54
|
},
|
|
62
55
|
|
|
63
|
-
events: ['resize']
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
56
|
+
events: ['resize'],
|
|
57
|
+
},
|
|
67
58
|
};
|
package/src/js/core/margin.js
CHANGED
|
@@ -1,42 +1,37 @@
|
|
|
1
|
-
import {isRtl, isVisible, offsetPosition, toggleClass} from 'uikit-util';
|
|
1
|
+
import { isRtl, isVisible, offsetPosition, toggleClass } from 'uikit-util';
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
|
-
|
|
5
4
|
props: {
|
|
6
5
|
margin: String,
|
|
7
|
-
firstColumn: Boolean
|
|
6
|
+
firstColumn: Boolean,
|
|
8
7
|
},
|
|
9
8
|
|
|
10
9
|
data: {
|
|
11
10
|
margin: 'uk-margin-small-top',
|
|
12
|
-
firstColumn: 'uk-first-column'
|
|
11
|
+
firstColumn: 'uk-first-column',
|
|
13
12
|
},
|
|
14
13
|
|
|
15
14
|
update: {
|
|
16
|
-
|
|
17
15
|
read() {
|
|
18
|
-
|
|
19
16
|
const rows = getRows(this.$el.children);
|
|
20
17
|
|
|
21
18
|
return {
|
|
22
19
|
rows,
|
|
23
|
-
columns: getColumns(rows)
|
|
20
|
+
columns: getColumns(rows),
|
|
24
21
|
};
|
|
25
22
|
},
|
|
26
23
|
|
|
27
|
-
write({columns, rows}) {
|
|
28
|
-
for (
|
|
29
|
-
for (
|
|
30
|
-
toggleClass(
|
|
31
|
-
toggleClass(
|
|
24
|
+
write({ columns, rows }) {
|
|
25
|
+
for (const row of rows) {
|
|
26
|
+
for (const column of row) {
|
|
27
|
+
toggleClass(column, this.margin, rows[0] !== row);
|
|
28
|
+
toggleClass(column, this.firstColumn, !!~columns[0].indexOf(column));
|
|
32
29
|
}
|
|
33
30
|
}
|
|
34
31
|
},
|
|
35
32
|
|
|
36
|
-
events: ['resize']
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
33
|
+
events: ['resize'],
|
|
34
|
+
},
|
|
40
35
|
};
|
|
41
36
|
|
|
42
37
|
export function getRows(items) {
|
|
@@ -44,38 +39,30 @@ export function getRows(items) {
|
|
|
44
39
|
}
|
|
45
40
|
|
|
46
41
|
function getColumns(rows) {
|
|
47
|
-
|
|
48
42
|
const columns = [];
|
|
49
43
|
|
|
50
|
-
for (
|
|
51
|
-
const sorted = sortBy(
|
|
44
|
+
for (const row of rows) {
|
|
45
|
+
const sorted = sortBy(row, 'left', 'right');
|
|
52
46
|
for (let j = 0; j < sorted.length; j++) {
|
|
53
|
-
columns[j] =
|
|
47
|
+
columns[j] = columns[j] ? columns[j].concat(sorted[j]) : sorted[j];
|
|
54
48
|
}
|
|
55
49
|
}
|
|
56
50
|
|
|
57
|
-
return isRtl
|
|
58
|
-
? columns.reverse()
|
|
59
|
-
: columns;
|
|
51
|
+
return isRtl ? columns.reverse() : columns;
|
|
60
52
|
}
|
|
61
53
|
|
|
62
54
|
function sortBy(items, startProp, endProp) {
|
|
63
|
-
|
|
64
55
|
const sorted = [[]];
|
|
65
56
|
|
|
66
|
-
for (
|
|
67
|
-
|
|
68
|
-
const el = items[i];
|
|
69
|
-
|
|
57
|
+
for (const el of items) {
|
|
70
58
|
if (!isVisible(el)) {
|
|
71
59
|
continue;
|
|
72
60
|
}
|
|
73
61
|
|
|
74
62
|
let dim = getOffset(el);
|
|
75
63
|
|
|
76
|
-
for (let
|
|
77
|
-
|
|
78
|
-
const current = sorted[j];
|
|
64
|
+
for (let i = sorted.length - 1; i >= 0; i--) {
|
|
65
|
+
const current = sorted[i];
|
|
79
66
|
|
|
80
67
|
if (!current[0]) {
|
|
81
68
|
current.push(el);
|
|
@@ -100,21 +87,18 @@ function sortBy(items, startProp, endProp) {
|
|
|
100
87
|
break;
|
|
101
88
|
}
|
|
102
89
|
|
|
103
|
-
if (
|
|
90
|
+
if (i === 0) {
|
|
104
91
|
sorted.unshift([el]);
|
|
105
92
|
break;
|
|
106
93
|
}
|
|
107
|
-
|
|
108
94
|
}
|
|
109
|
-
|
|
110
95
|
}
|
|
111
96
|
|
|
112
97
|
return sorted;
|
|
113
98
|
}
|
|
114
99
|
|
|
115
100
|
function getOffset(element, offset = false) {
|
|
116
|
-
|
|
117
|
-
let {offsetTop, offsetLeft, offsetHeight, offsetWidth} = element;
|
|
101
|
+
let { offsetTop, offsetLeft, offsetHeight, offsetWidth } = element;
|
|
118
102
|
|
|
119
103
|
if (offset) {
|
|
120
104
|
[offsetTop, offsetLeft] = offsetPosition(element);
|
|
@@ -124,6 +108,6 @@ function getOffset(element, offset = false) {
|
|
|
124
108
|
top: offsetTop,
|
|
125
109
|
left: offsetLeft,
|
|
126
110
|
bottom: offsetTop + offsetHeight,
|
|
127
|
-
right: offsetLeft + offsetWidth
|
|
111
|
+
right: offsetLeft + offsetWidth,
|
|
128
112
|
};
|
|
129
113
|
}
|