uikit 3.14.4-dev.ca199f7a7 → 3.14.4-dev.e3664d0d2
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/CHANGELOG.md +3 -0
- package/dist/css/uikit-core-rtl.css +12 -4
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +12 -4
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +12 -4
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +12 -4
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +1 -1
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +1 -1
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +22 -7
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +22 -7
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +1 -1
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +1 -1
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +1 -1
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +22 -7
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +1 -1
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +22 -7
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +3 -3
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +8 -1
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +1 -1
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +32 -35
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +1 -1
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +79 -67
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/components/sortable.js +2 -3
- package/src/js/core/height-viewport.js +9 -5
- package/src/js/core/sticky.js +8 -9
- package/src/js/mixin/position.js +8 -0
- package/src/js/mixin/slider-drag.js +20 -8
- package/src/js/util/dimensions.js +6 -6
- package/src/js/util/position.js +1 -0
- package/src/js/util/viewport.js +2 -27
- package/src/less/components/utility.less +12 -3
- package/src/scss/components/utility.scss +12 -3
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "uikit",
|
|
3
3
|
"title": "UIkit",
|
|
4
4
|
"description": "UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.",
|
|
5
|
-
"version": "3.14.4-dev.
|
|
5
|
+
"version": "3.14.4-dev.e3664d0d2",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
|
@@ -26,7 +26,6 @@ import {
|
|
|
26
26
|
remove,
|
|
27
27
|
removeClass,
|
|
28
28
|
scrollParents,
|
|
29
|
-
scrollTop,
|
|
30
29
|
toggleClass,
|
|
31
30
|
Transition,
|
|
32
31
|
trigger,
|
|
@@ -313,7 +312,7 @@ function trackScroll(pos) {
|
|
|
313
312
|
let last = Date.now();
|
|
314
313
|
trackTimer = setInterval(() => {
|
|
315
314
|
let { x, y } = pos;
|
|
316
|
-
y += scrollTop
|
|
315
|
+
y += document.scrollingElement.scrollTop;
|
|
317
316
|
|
|
318
317
|
const dist = (Date.now() - last) * 0.3;
|
|
319
318
|
last = Date.now();
|
|
@@ -334,7 +333,7 @@ function trackScroll(pos) {
|
|
|
334
333
|
}
|
|
335
334
|
|
|
336
335
|
if (scroll > 0 && scroll < scrollHeight - height) {
|
|
337
|
-
scrollTop
|
|
336
|
+
scrollEl.scrollTop = scroll;
|
|
338
337
|
return true;
|
|
339
338
|
}
|
|
340
339
|
});
|
|
@@ -56,14 +56,18 @@ export default {
|
|
|
56
56
|
0
|
|
57
57
|
);
|
|
58
58
|
} else {
|
|
59
|
+
const isScrollingElement = document.scrollingElement === scrollElement;
|
|
60
|
+
|
|
59
61
|
// on mobile devices (iOS and Android) window.innerHeight !== 100vh
|
|
60
|
-
minHeight = `calc(${
|
|
61
|
-
document.scrollingElement === scrollElement ? '100vh' : `${viewportHeight}px`
|
|
62
|
-
}`;
|
|
62
|
+
minHeight = `calc(${isScrollingElement ? '100vh' : `${viewportHeight}px`}`;
|
|
63
63
|
|
|
64
64
|
if (this.offsetTop) {
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
if (isScrollingElement) {
|
|
66
|
+
const top = offsetPosition(this.$el)[0] - offsetPosition(scrollElement)[0];
|
|
67
|
+
minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : '';
|
|
68
|
+
} else {
|
|
69
|
+
minHeight += ` - ${css(scrollElement, 'paddingTop')}`;
|
|
70
|
+
}
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
if (this.offsetBottom === true) {
|
package/src/js/core/sticky.js
CHANGED
|
@@ -23,7 +23,6 @@ import {
|
|
|
23
23
|
remove,
|
|
24
24
|
removeClass,
|
|
25
25
|
replaceClass,
|
|
26
|
-
scrollTop,
|
|
27
26
|
toFloat,
|
|
28
27
|
toggleClass,
|
|
29
28
|
toPx,
|
|
@@ -125,7 +124,9 @@ export default {
|
|
|
125
124
|
},
|
|
126
125
|
|
|
127
126
|
handler() {
|
|
128
|
-
|
|
127
|
+
const { scrollingElement } = document;
|
|
128
|
+
|
|
129
|
+
if (!location.hash || scrollingElement.scrollTop === 0) {
|
|
129
130
|
return;
|
|
130
131
|
}
|
|
131
132
|
|
|
@@ -134,13 +135,11 @@ export default {
|
|
|
134
135
|
const elOffset = getOffset(this.$el);
|
|
135
136
|
|
|
136
137
|
if (this.isFixed && intersectRect(targetOffset, elOffset)) {
|
|
137
|
-
scrollTop
|
|
138
|
-
window,
|
|
138
|
+
scrollingElement.scrollTop =
|
|
139
139
|
targetOffset.top -
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
);
|
|
140
|
+
elOffset.height -
|
|
141
|
+
toPx(this.targetOffset, 'height', this.placeholder) -
|
|
142
|
+
toPx(this.offset, 'height', this.placeholder);
|
|
144
143
|
}
|
|
145
144
|
});
|
|
146
145
|
},
|
|
@@ -238,7 +237,7 @@ export default {
|
|
|
238
237
|
start,
|
|
239
238
|
end,
|
|
240
239
|
}) {
|
|
241
|
-
const scroll = scrollTop
|
|
240
|
+
const scroll = document.scrollingElement.scrollTop;
|
|
242
241
|
const dir = prevScroll <= scroll ? 'down' : 'up';
|
|
243
242
|
|
|
244
243
|
return {
|
package/src/js/mixin/position.js
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
includes,
|
|
7
7
|
isRtl,
|
|
8
8
|
positionAt,
|
|
9
|
+
scrollParents,
|
|
9
10
|
toPx,
|
|
10
11
|
} from 'uikit-util';
|
|
11
12
|
|
|
@@ -44,6 +45,9 @@ export default {
|
|
|
44
45
|
offset = offset.reverse();
|
|
45
46
|
}
|
|
46
47
|
|
|
48
|
+
const [scrollElement] = scrollParents(element, /auto|scroll/);
|
|
49
|
+
const { scrollTop, scrollLeft } = scrollElement;
|
|
50
|
+
|
|
47
51
|
// Ensure none positioned element does not generate scrollbars
|
|
48
52
|
const elDim = dimensions(element);
|
|
49
53
|
css(element, { top: -elDim.height, left: -elDim.width });
|
|
@@ -55,6 +59,10 @@ export default {
|
|
|
55
59
|
flip: this.flip,
|
|
56
60
|
viewportOffset: this.getViewportOffset(element),
|
|
57
61
|
});
|
|
62
|
+
|
|
63
|
+
// Restore scroll position
|
|
64
|
+
scrollElement.scrollTop = scrollTop;
|
|
65
|
+
scrollElement.scrollLeft = scrollLeft;
|
|
58
66
|
},
|
|
59
67
|
|
|
60
68
|
getPositionOffset(element) {
|
|
@@ -5,16 +5,18 @@ import {
|
|
|
5
5
|
includes,
|
|
6
6
|
isRtl,
|
|
7
7
|
isTouch,
|
|
8
|
+
noop,
|
|
8
9
|
off,
|
|
9
10
|
on,
|
|
10
|
-
pointerCancel,
|
|
11
|
-
pointerDown,
|
|
12
|
-
pointerMove,
|
|
13
|
-
pointerUp,
|
|
14
11
|
selInput,
|
|
15
12
|
trigger,
|
|
16
13
|
} from 'uikit-util';
|
|
17
14
|
|
|
15
|
+
const pointerOptions = { passive: false, capture: true };
|
|
16
|
+
const pointerDown = 'touchstart mousedown';
|
|
17
|
+
const pointerMove = 'touchmove mousemove';
|
|
18
|
+
const pointerUp = 'touchend touchcancel mouseup click input';
|
|
19
|
+
|
|
18
20
|
export default {
|
|
19
21
|
props: {
|
|
20
22
|
draggable: Boolean,
|
|
@@ -69,6 +71,16 @@ export default {
|
|
|
69
71
|
e.preventDefault();
|
|
70
72
|
},
|
|
71
73
|
},
|
|
74
|
+
|
|
75
|
+
{
|
|
76
|
+
// iOS workaround for slider stopping if swiping fast
|
|
77
|
+
name: `${pointerMove} ${pointerUp}`,
|
|
78
|
+
el() {
|
|
79
|
+
return this.list;
|
|
80
|
+
},
|
|
81
|
+
handler: noop,
|
|
82
|
+
...pointerOptions,
|
|
83
|
+
},
|
|
72
84
|
],
|
|
73
85
|
|
|
74
86
|
methods: {
|
|
@@ -89,10 +101,10 @@ export default {
|
|
|
89
101
|
this.prevIndex = this.index;
|
|
90
102
|
}
|
|
91
103
|
|
|
92
|
-
on(document, pointerMove, this.move,
|
|
104
|
+
on(document, pointerMove, this.move, pointerOptions);
|
|
93
105
|
|
|
94
106
|
// 'input' event is triggered by video controls
|
|
95
|
-
on(document,
|
|
107
|
+
on(document, pointerUp, this.end, pointerOptions);
|
|
96
108
|
|
|
97
109
|
css(this.list, 'userSelect', 'none');
|
|
98
110
|
},
|
|
@@ -172,8 +184,8 @@ export default {
|
|
|
172
184
|
},
|
|
173
185
|
|
|
174
186
|
end() {
|
|
175
|
-
off(document, pointerMove, this.move,
|
|
176
|
-
off(document,
|
|
187
|
+
off(document, pointerMove, this.move, pointerOptions);
|
|
188
|
+
off(document, pointerUp, this.end, pointerOptions);
|
|
177
189
|
|
|
178
190
|
if (this.dragging) {
|
|
179
191
|
this.dragging = null;
|
|
@@ -94,13 +94,13 @@ export function position(element) {
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
export function offsetPosition(element) {
|
|
97
|
-
const offset = [0, 0];
|
|
98
|
-
|
|
99
97
|
element = toNode(element);
|
|
100
98
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
const offset = [element.offsetTop, element.offsetLeft];
|
|
100
|
+
|
|
101
|
+
while ((element = element.offsetParent)) {
|
|
102
|
+
offset[0] += element.offsetTop + toFloat(css(element, `borderTopWidth`));
|
|
103
|
+
offset[1] += element.offsetLeft + toFloat(css(element, `borderLeftWidth`));
|
|
104
104
|
|
|
105
105
|
if (css(element, 'position') === 'fixed') {
|
|
106
106
|
const win = toWindow(element);
|
|
@@ -108,7 +108,7 @@ export function offsetPosition(element) {
|
|
|
108
108
|
offset[1] += win.scrollX;
|
|
109
109
|
return offset;
|
|
110
110
|
}
|
|
111
|
-
}
|
|
111
|
+
}
|
|
112
112
|
|
|
113
113
|
return offset;
|
|
114
114
|
}
|
package/src/js/util/position.js
CHANGED
package/src/js/util/viewport.js
CHANGED
|
@@ -1,18 +1,7 @@
|
|
|
1
1
|
import { css } from './style';
|
|
2
2
|
import { isVisible, parents } from './filter';
|
|
3
3
|
import { offset, offsetPosition } from './dimensions';
|
|
4
|
-
import {
|
|
5
|
-
clamp,
|
|
6
|
-
findIndex,
|
|
7
|
-
intersectRect,
|
|
8
|
-
isDocument,
|
|
9
|
-
isUndefined,
|
|
10
|
-
isWindow,
|
|
11
|
-
toFloat,
|
|
12
|
-
toNode,
|
|
13
|
-
toWindow,
|
|
14
|
-
ucfirst,
|
|
15
|
-
} from './lang';
|
|
4
|
+
import { clamp, findIndex, intersectRect, isWindow, toFloat, toWindow, ucfirst } from './lang';
|
|
16
5
|
|
|
17
6
|
export function isInView(element, offsetTop = 0, offsetLeft = 0) {
|
|
18
7
|
if (!isVisible(element)) {
|
|
@@ -35,20 +24,6 @@ export function isInView(element, offsetTop = 0, offsetLeft = 0) {
|
|
|
35
24
|
);
|
|
36
25
|
}
|
|
37
26
|
|
|
38
|
-
export function scrollTop(element, top) {
|
|
39
|
-
if (isWindow(element) || isDocument(element)) {
|
|
40
|
-
element = scrollingElement(element);
|
|
41
|
-
} else {
|
|
42
|
-
element = toNode(element);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (isUndefined(top)) {
|
|
46
|
-
return element.scrollTop;
|
|
47
|
-
} else {
|
|
48
|
-
element.scrollTop = top;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
27
|
export function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
|
|
53
28
|
const parents = isVisible(element) ? scrollParents(element) : [];
|
|
54
29
|
return parents.reduce(
|
|
@@ -90,7 +65,7 @@ export function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
|
|
|
90
65
|
(function step() {
|
|
91
66
|
const percent = ease(clamp((Date.now() - start) / duration));
|
|
92
67
|
|
|
93
|
-
scrollTop
|
|
68
|
+
element.scrollTop = scroll + top * percent;
|
|
94
69
|
|
|
95
70
|
// scroll more if we have not reached our destination
|
|
96
71
|
if (percent === 1) {
|
|
@@ -384,18 +384,27 @@
|
|
|
384
384
|
========================================================================== */
|
|
385
385
|
|
|
386
386
|
/*
|
|
387
|
-
* 1.
|
|
387
|
+
* 1. Style
|
|
388
|
+
* 2. Required for `a`
|
|
389
|
+
* 3. Behave like image but can be overridden through flex utility classes
|
|
388
390
|
*/
|
|
389
391
|
|
|
390
392
|
.uk-logo {
|
|
393
|
+
/* 1 */
|
|
391
394
|
font-size: @logo-font-size;
|
|
392
395
|
font-family: @logo-font-family;
|
|
393
396
|
color: @logo-color;
|
|
394
|
-
/*
|
|
397
|
+
/* 2 */
|
|
395
398
|
text-decoration: none;
|
|
396
399
|
.hook-logo();
|
|
397
400
|
}
|
|
398
401
|
|
|
402
|
+
/* 3 */
|
|
403
|
+
:where(.uk-logo) {
|
|
404
|
+
display: inline-block;
|
|
405
|
+
vertical-align: middle;
|
|
406
|
+
}
|
|
407
|
+
|
|
399
408
|
/* Hover */
|
|
400
409
|
.uk-logo:hover {
|
|
401
410
|
color: @logo-hover-color;
|
|
@@ -404,7 +413,7 @@
|
|
|
404
413
|
.hook-logo-hover();
|
|
405
414
|
}
|
|
406
415
|
|
|
407
|
-
.uk-logo > :where(img, svg, video) { display:
|
|
416
|
+
.uk-logo > :where(img, svg, video) { display: block; }
|
|
408
417
|
|
|
409
418
|
.uk-logo-inverse { display: none; }
|
|
410
419
|
|
|
@@ -384,18 +384,27 @@ $dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3)
|
|
|
384
384
|
========================================================================== */
|
|
385
385
|
|
|
386
386
|
/*
|
|
387
|
-
* 1.
|
|
387
|
+
* 1. Style
|
|
388
|
+
* 2. Required for `a`
|
|
389
|
+
* 3. Behave like image but can be overridden through flex utility classes
|
|
388
390
|
*/
|
|
389
391
|
|
|
390
392
|
.uk-logo {
|
|
393
|
+
/* 1 */
|
|
391
394
|
font-size: $logo-font-size;
|
|
392
395
|
font-family: $logo-font-family;
|
|
393
396
|
color: $logo-color;
|
|
394
|
-
/*
|
|
397
|
+
/* 2 */
|
|
395
398
|
text-decoration: none;
|
|
396
399
|
@if(mixin-exists(hook-logo)) {@include hook-logo();}
|
|
397
400
|
}
|
|
398
401
|
|
|
402
|
+
/* 3 */
|
|
403
|
+
:where(.uk-logo) {
|
|
404
|
+
display: inline-block;
|
|
405
|
+
vertical-align: middle;
|
|
406
|
+
}
|
|
407
|
+
|
|
399
408
|
/* Hover */
|
|
400
409
|
.uk-logo:hover {
|
|
401
410
|
color: $logo-hover-color;
|
|
@@ -404,7 +413,7 @@ $dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3)
|
|
|
404
413
|
@if(mixin-exists(hook-logo-hover)) {@include hook-logo-hover();}
|
|
405
414
|
}
|
|
406
415
|
|
|
407
|
-
.uk-logo > :where(img, svg, video) { display:
|
|
416
|
+
.uk-logo > :where(img, svg, video) { display: block; }
|
|
408
417
|
|
|
409
418
|
.uk-logo-inverse { display: none; }
|
|
410
419
|
|