uikit 3.20.9-dev.b50e1953b → 3.20.9-dev.e2e1b058d
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 +2 -0
- 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 +1 -1
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +2 -4
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +13 -28
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +18 -33
- 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 +4 -10
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +18 -26
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +4 -10
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +17 -25
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +1 -1
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +1 -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 +125 -214
- 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 +155 -259
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/api/component.js +1 -1
- package/src/js/api/events.js +1 -1
- package/src/js/components/filter.js +1 -3
- package/src/js/components/internal/slider-transitioner.js +4 -0
- package/src/js/components/lightbox-panel.js +1 -3
- package/src/js/components/lightbox.js +5 -5
- package/src/js/components/slider-parallax.js +3 -9
- package/src/js/components/slider.js +1 -1
- package/src/js/core/accordion.js +2 -6
- package/src/js/core/alert.js +1 -3
- package/src/js/core/cover.js +6 -12
- package/src/js/core/drop.js +5 -13
- package/src/js/core/dropnav.js +14 -42
- package/src/js/core/form-custom.js +1 -3
- package/src/js/core/grid.js +4 -7
- package/src/js/core/height-match.js +1 -3
- package/src/js/core/inverse.js +31 -3
- package/src/js/core/modal.js +2 -1
- package/src/js/core/navbar.js +2 -6
- package/src/js/core/offcanvas.js +1 -3
- package/src/js/core/scrollspy-nav.js +2 -2
- package/src/js/core/scrollspy.js +1 -1
- package/src/js/core/sticky.js +18 -28
- package/src/js/core/switcher.js +7 -18
- package/src/js/core/toggle.js +6 -18
- package/src/js/core/video.js +6 -6
- package/src/js/mixin/internal/slideshow-transitioner.js +4 -0
- package/src/js/mixin/modal.js +1 -3
- package/src/js/mixin/slider-autoplay.js +1 -3
- package/src/js/mixin/slider-drag.js +2 -6
- package/src/js/mixin/slider-nav.js +4 -12
- package/src/js/mixin/slider-parallax.js +7 -3
- package/src/js/util/fastdom.js +24 -25
- package/src/js/util/viewport.js +8 -8
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.20.9-dev.
|
|
5
|
+
"version": "3.20.9-dev.e2e1b058d",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
package/src/js/api/component.js
CHANGED
|
@@ -78,7 +78,7 @@ export function attachToElement(element, instance) {
|
|
|
78
78
|
export function detachFromElement(element, instance) {
|
|
79
79
|
delete element[DATA]?.[instance.$options.name];
|
|
80
80
|
|
|
81
|
-
if (
|
|
81
|
+
if (isEmpty(element[DATA])) {
|
|
82
82
|
delete element[DATA];
|
|
83
83
|
}
|
|
84
84
|
}
|
package/src/js/api/events.js
CHANGED
|
@@ -24,7 +24,7 @@ export function registerEvent(instance, event, key) {
|
|
|
24
24
|
: { name: key, handler: event };
|
|
25
25
|
el = isFunction(el) ? el.call(instance, instance) : el || instance.$el;
|
|
26
26
|
|
|
27
|
-
if (!el || (isArray(el) && !el.length) || (filter && !filter.call(instance))) {
|
|
27
|
+
if (!el || (isArray(el) && !el.length) || (filter && !filter.call(instance, instance))) {
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -72,9 +72,7 @@ export default {
|
|
|
72
72
|
events: {
|
|
73
73
|
name: 'click keydown',
|
|
74
74
|
|
|
75
|
-
delegate() {
|
|
76
|
-
return `[${this.attrItem}],[data-${this.attrItem}]`;
|
|
77
|
-
},
|
|
75
|
+
delegate: ({ attrItem }) => `[${attrItem}],[data-${attrItem}]`,
|
|
78
76
|
|
|
79
77
|
handler(e) {
|
|
80
78
|
if (e.type === 'keydown' && e.keyCode !== keyMap.SPACE) {
|
|
@@ -31,13 +31,13 @@ export default {
|
|
|
31
31
|
events: {
|
|
32
32
|
name: 'click',
|
|
33
33
|
|
|
34
|
-
delegate() {
|
|
35
|
-
return `${this.toggle}:not(.uk-disabled)`;
|
|
36
|
-
},
|
|
34
|
+
delegate: ({ toggle }) => `${toggle}:not(.uk-disabled)`,
|
|
37
35
|
|
|
38
36
|
handler(e) {
|
|
39
|
-
e.
|
|
40
|
-
|
|
37
|
+
if (!e.defaultPrevented) {
|
|
38
|
+
e.preventDefault();
|
|
39
|
+
this.show(e.current);
|
|
40
|
+
}
|
|
41
41
|
},
|
|
42
42
|
},
|
|
43
43
|
|
|
@@ -18,9 +18,7 @@ export default {
|
|
|
18
18
|
|
|
19
19
|
self: true,
|
|
20
20
|
|
|
21
|
-
el()
|
|
22
|
-
return this.item;
|
|
23
|
-
},
|
|
21
|
+
el: ({ item }) => item,
|
|
24
22
|
|
|
25
23
|
handler({ type, detail: { percent, duration, timing, dir } }) {
|
|
26
24
|
fastdom.read(() => {
|
|
@@ -43,9 +41,7 @@ export default {
|
|
|
43
41
|
|
|
44
42
|
self: true,
|
|
45
43
|
|
|
46
|
-
el()
|
|
47
|
-
return this.item;
|
|
48
|
-
},
|
|
44
|
+
el: ({ item }) => item,
|
|
49
45
|
|
|
50
46
|
handler() {
|
|
51
47
|
Transition.cancel(this.$el);
|
|
@@ -57,9 +53,7 @@ export default {
|
|
|
57
53
|
|
|
58
54
|
self: true,
|
|
59
55
|
|
|
60
|
-
el()
|
|
61
|
-
return this.item;
|
|
62
|
-
},
|
|
56
|
+
el: ({ item }) => item,
|
|
63
57
|
|
|
64
58
|
handler({ type, detail: { percent, dir } }) {
|
|
65
59
|
fastdom.read(() => {
|
package/src/js/core/accordion.js
CHANGED
|
@@ -101,9 +101,7 @@ export default {
|
|
|
101
101
|
{
|
|
102
102
|
name: 'click keydown',
|
|
103
103
|
|
|
104
|
-
delegate() {
|
|
105
|
-
return `${this.targets} ${this.$props.toggle}`;
|
|
106
|
-
},
|
|
104
|
+
delegate: ({ targets, $props }) => `${targets} ${$props.toggle}`,
|
|
107
105
|
|
|
108
106
|
async handler(e) {
|
|
109
107
|
if (e.type === 'keydown' && e.keyCode !== keyMap.SPACE) {
|
|
@@ -123,9 +121,7 @@ export default {
|
|
|
123
121
|
|
|
124
122
|
self: true,
|
|
125
123
|
|
|
126
|
-
delegate()
|
|
127
|
-
return this.targets;
|
|
128
|
-
},
|
|
124
|
+
delegate: ({ targets }) => targets,
|
|
129
125
|
|
|
130
126
|
handler() {
|
|
131
127
|
this.$emit();
|
package/src/js/core/alert.js
CHANGED
package/src/js/core/cover.js
CHANGED
|
@@ -14,21 +14,19 @@ export default {
|
|
|
14
14
|
automute: true,
|
|
15
15
|
},
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
'
|
|
19
|
-
this.$emit('resize');
|
|
20
|
-
},
|
|
17
|
+
created() {
|
|
18
|
+
this.useObjectFit = isTag(this.$el, 'img', 'video');
|
|
21
19
|
},
|
|
22
20
|
|
|
23
21
|
observe: resize({
|
|
24
|
-
target: ({ $el }) =>
|
|
25
|
-
filter: ({
|
|
22
|
+
target: ({ $el }) => getPositionedParent($el) || parent($el),
|
|
23
|
+
filter: ({ useObjectFit }) => !useObjectFit,
|
|
26
24
|
}),
|
|
27
25
|
|
|
28
26
|
update: {
|
|
29
27
|
read() {
|
|
30
|
-
if (useObjectFit
|
|
31
|
-
return;
|
|
28
|
+
if (this.useObjectFit) {
|
|
29
|
+
return false;
|
|
32
30
|
}
|
|
33
31
|
|
|
34
32
|
const { ratio, cover } = Dimensions;
|
|
@@ -80,7 +78,3 @@ function getPositionedParent(el) {
|
|
|
80
78
|
}
|
|
81
79
|
}
|
|
82
80
|
}
|
|
83
|
-
|
|
84
|
-
function useObjectFit(el) {
|
|
85
|
-
return isTag(el, 'img', 'video');
|
|
86
|
-
}
|
package/src/js/core/drop.js
CHANGED
|
@@ -106,7 +106,7 @@ export default {
|
|
|
106
106
|
},
|
|
107
107
|
|
|
108
108
|
beforeConnect() {
|
|
109
|
-
this.clsDrop = this.$props.clsDrop ||
|
|
109
|
+
this.clsDrop = this.$props.clsDrop || this.$options.id;
|
|
110
110
|
},
|
|
111
111
|
|
|
112
112
|
connected() {
|
|
@@ -131,9 +131,7 @@ export default {
|
|
|
131
131
|
{
|
|
132
132
|
name: 'click',
|
|
133
133
|
|
|
134
|
-
delegate()
|
|
135
|
-
return '.uk-drop-close';
|
|
136
|
-
},
|
|
134
|
+
delegate: () => '.uk-drop-close',
|
|
137
135
|
|
|
138
136
|
handler(e) {
|
|
139
137
|
e.preventDefault();
|
|
@@ -144,9 +142,7 @@ export default {
|
|
|
144
142
|
{
|
|
145
143
|
name: 'click',
|
|
146
144
|
|
|
147
|
-
delegate()
|
|
148
|
-
return 'a[href*="#"]';
|
|
149
|
-
},
|
|
145
|
+
delegate: () => 'a[href*="#"]',
|
|
150
146
|
|
|
151
147
|
handler({ defaultPrevented, current }) {
|
|
152
148
|
const { hash } = current;
|
|
@@ -212,9 +208,7 @@ export default {
|
|
|
212
208
|
{
|
|
213
209
|
name: `${pointerEnter} focusin`,
|
|
214
210
|
|
|
215
|
-
filter()
|
|
216
|
-
return includes(this.mode, 'hover');
|
|
217
|
-
},
|
|
211
|
+
filter: ({ mode }) => includes(mode, 'hover'),
|
|
218
212
|
|
|
219
213
|
handler(e) {
|
|
220
214
|
if (!isTouch(e)) {
|
|
@@ -226,9 +220,7 @@ export default {
|
|
|
226
220
|
{
|
|
227
221
|
name: `${pointerLeave} focusout`,
|
|
228
222
|
|
|
229
|
-
filter()
|
|
230
|
-
return includes(this.mode, 'hover');
|
|
231
|
-
},
|
|
223
|
+
filter: ({ mode }) => includes(mode, 'hover'),
|
|
232
224
|
|
|
233
225
|
handler(e) {
|
|
234
226
|
if (!isTouch(e) && e.relatedTarget) {
|
package/src/js/core/dropnav.js
CHANGED
|
@@ -128,9 +128,7 @@ export default {
|
|
|
128
128
|
{
|
|
129
129
|
name: 'mouseover focusin',
|
|
130
130
|
|
|
131
|
-
delegate()
|
|
132
|
-
return this.selNavItem;
|
|
133
|
-
},
|
|
131
|
+
delegate: ({ selNavItem }) => selNavItem,
|
|
134
132
|
|
|
135
133
|
handler({ current }) {
|
|
136
134
|
const active = this.getActive();
|
|
@@ -151,9 +149,7 @@ export default {
|
|
|
151
149
|
|
|
152
150
|
self: true,
|
|
153
151
|
|
|
154
|
-
delegate()
|
|
155
|
-
return this.selNavItem;
|
|
156
|
-
},
|
|
152
|
+
delegate: ({ selNavItem }) => selNavItem,
|
|
157
153
|
|
|
158
154
|
handler(e) {
|
|
159
155
|
const { current, keyCode } = e;
|
|
@@ -171,13 +167,9 @@ export default {
|
|
|
171
167
|
{
|
|
172
168
|
name: 'keydown',
|
|
173
169
|
|
|
174
|
-
el()
|
|
175
|
-
return this.dropContainer;
|
|
176
|
-
},
|
|
170
|
+
el: ({ dropContainer }) => dropContainer,
|
|
177
171
|
|
|
178
|
-
delegate() {
|
|
179
|
-
return `.${this.clsDrop}`;
|
|
180
|
-
},
|
|
172
|
+
delegate: ({ clsDrop }) => `.${clsDrop}`,
|
|
181
173
|
|
|
182
174
|
handler(e) {
|
|
183
175
|
const { current, keyCode } = e;
|
|
@@ -220,13 +212,9 @@ export default {
|
|
|
220
212
|
{
|
|
221
213
|
name: 'mouseleave',
|
|
222
214
|
|
|
223
|
-
el()
|
|
224
|
-
return this.dropbar;
|
|
225
|
-
},
|
|
215
|
+
el: ({ dropbar }) => dropbar,
|
|
226
216
|
|
|
227
|
-
filter()
|
|
228
|
-
return this.dropbar;
|
|
229
|
-
},
|
|
217
|
+
filter: ({ dropbar }) => dropbar,
|
|
230
218
|
|
|
231
219
|
handler() {
|
|
232
220
|
const active = this.getActive();
|
|
@@ -244,13 +232,9 @@ export default {
|
|
|
244
232
|
{
|
|
245
233
|
name: 'beforeshow',
|
|
246
234
|
|
|
247
|
-
el()
|
|
248
|
-
return this.dropContainer;
|
|
249
|
-
},
|
|
235
|
+
el: ({ dropContainer }) => dropContainer,
|
|
250
236
|
|
|
251
|
-
filter()
|
|
252
|
-
return this.dropbar;
|
|
253
|
-
},
|
|
237
|
+
filter: ({ dropbar }) => dropbar,
|
|
254
238
|
|
|
255
239
|
handler({ target }) {
|
|
256
240
|
if (!this.isDropbarDrop(target)) {
|
|
@@ -268,13 +252,9 @@ export default {
|
|
|
268
252
|
{
|
|
269
253
|
name: 'show',
|
|
270
254
|
|
|
271
|
-
el()
|
|
272
|
-
return this.dropContainer;
|
|
273
|
-
},
|
|
255
|
+
el: ({ dropContainer }) => dropContainer,
|
|
274
256
|
|
|
275
|
-
filter()
|
|
276
|
-
return this.dropbar;
|
|
277
|
-
},
|
|
257
|
+
filter: ({ dropbar }) => dropbar,
|
|
278
258
|
|
|
279
259
|
handler({ target }) {
|
|
280
260
|
if (!this.isDropbarDrop(target)) {
|
|
@@ -306,13 +286,9 @@ export default {
|
|
|
306
286
|
{
|
|
307
287
|
name: 'beforehide',
|
|
308
288
|
|
|
309
|
-
el()
|
|
310
|
-
return this.dropContainer;
|
|
311
|
-
},
|
|
289
|
+
el: ({ dropContainer }) => dropContainer,
|
|
312
290
|
|
|
313
|
-
filter()
|
|
314
|
-
return this.dropbar;
|
|
315
|
-
},
|
|
291
|
+
filter: ({ dropbar }) => dropbar,
|
|
316
292
|
|
|
317
293
|
handler(e) {
|
|
318
294
|
const active = this.getActive();
|
|
@@ -333,13 +309,9 @@ export default {
|
|
|
333
309
|
{
|
|
334
310
|
name: 'hide',
|
|
335
311
|
|
|
336
|
-
el()
|
|
337
|
-
return this.dropContainer;
|
|
338
|
-
},
|
|
312
|
+
el: ({ dropContainer }) => dropContainer,
|
|
339
313
|
|
|
340
|
-
filter()
|
|
341
|
-
return this.dropbar;
|
|
342
|
-
},
|
|
314
|
+
filter: ({ dropbar }) => dropbar,
|
|
343
315
|
|
|
344
316
|
handler({ target }) {
|
|
345
317
|
if (!this.isDropbarDrop(target)) {
|
package/src/js/core/grid.js
CHANGED
|
@@ -123,14 +123,11 @@ export default {
|
|
|
123
123
|
|
|
124
124
|
{
|
|
125
125
|
read({ rows, scrollColumns, parallaxStart, parallaxEnd }) {
|
|
126
|
-
if (scrollColumns && positionedAbsolute(rows)) {
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
126
|
return {
|
|
131
|
-
scrolled:
|
|
132
|
-
|
|
133
|
-
|
|
127
|
+
scrolled:
|
|
128
|
+
scrollColumns && !positionedAbsolute(rows)
|
|
129
|
+
? scrolledOver(this.$el, parallaxStart, parallaxEnd)
|
|
130
|
+
: false,
|
|
134
131
|
};
|
|
135
132
|
},
|
|
136
133
|
|
package/src/js/core/inverse.js
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
$$,
|
|
3
|
+
css,
|
|
4
|
+
dimensions,
|
|
5
|
+
matches,
|
|
6
|
+
observeResize,
|
|
7
|
+
on,
|
|
8
|
+
parent,
|
|
9
|
+
replaceClass,
|
|
10
|
+
toNodes,
|
|
11
|
+
} from 'uikit-util';
|
|
2
12
|
import { intersection, mutation } from '../api/observables';
|
|
3
13
|
|
|
4
14
|
export default {
|
|
@@ -87,17 +97,19 @@ export default {
|
|
|
87
97
|
|
|
88
98
|
function findTargetColor(target) {
|
|
89
99
|
const { left, top, height, width } = dimensions(target);
|
|
100
|
+
const viewport = dimensions(window);
|
|
90
101
|
|
|
91
102
|
let last;
|
|
92
103
|
for (const percent of [0.25, 0.5, 0.75]) {
|
|
93
104
|
const elements = target.ownerDocument.elementsFromPoint(
|
|
94
|
-
Math.max(0, left
|
|
95
|
-
Math.max(0, top
|
|
105
|
+
Math.max(0, Math.min(left + width * percent, viewport.width - 1)),
|
|
106
|
+
Math.max(0, Math.min(top + height / 2, viewport.height - 1)),
|
|
96
107
|
);
|
|
97
108
|
|
|
98
109
|
for (const element of elements) {
|
|
99
110
|
if (
|
|
100
111
|
target.contains(element) ||
|
|
112
|
+
!checkVisibility(element) ||
|
|
101
113
|
(element.closest('[class*="-leave"]') &&
|
|
102
114
|
elements.some((el) => element !== el && matches(el, '[class*="-enter"]')))
|
|
103
115
|
) {
|
|
@@ -118,3 +130,19 @@ function findTargetColor(target) {
|
|
|
118
130
|
|
|
119
131
|
return last ? `uk-${last}` : '';
|
|
120
132
|
}
|
|
133
|
+
|
|
134
|
+
// TODO: once it becomes Baseline `element.checkVisibility({ opacityProperty: true, visibilityProperty: true })`
|
|
135
|
+
function checkVisibility(element) {
|
|
136
|
+
if (css(element, 'visibility') !== 'visible') {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
while (element) {
|
|
141
|
+
if (css(element, 'opacity') === '0') {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
element = parent(element);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return true;
|
|
148
|
+
}
|
package/src/js/core/modal.js
CHANGED
|
@@ -126,7 +126,7 @@ function install({ modal }) {
|
|
|
126
126
|
({ i18n }) => `<form class="uk-form-stacked">
|
|
127
127
|
<div class="uk-modal-body">
|
|
128
128
|
<label>${isString(message) ? message : html(message)}</label>
|
|
129
|
-
<input class="uk-input"
|
|
129
|
+
<input class="uk-input" autofocus>
|
|
130
130
|
</div>
|
|
131
131
|
<div class="uk-modal-footer uk-text-right">
|
|
132
132
|
<button class="uk-button uk-button-default uk-modal-close" type="button">${
|
|
@@ -142,6 +142,7 @@ function install({ modal }) {
|
|
|
142
142
|
|
|
143
143
|
const { $el } = promise.dialog;
|
|
144
144
|
const input = $('input', $el);
|
|
145
|
+
input.value = value || '';
|
|
145
146
|
on($el, 'show', () => input.select());
|
|
146
147
|
|
|
147
148
|
return promise;
|
package/src/js/core/navbar.js
CHANGED
|
@@ -39,9 +39,7 @@ export default {
|
|
|
39
39
|
{
|
|
40
40
|
name: 'show',
|
|
41
41
|
|
|
42
|
-
el()
|
|
43
|
-
return this.dropContainer;
|
|
44
|
-
},
|
|
42
|
+
el: ({ dropContainer }) => dropContainer,
|
|
45
43
|
|
|
46
44
|
handler({ target }) {
|
|
47
45
|
if (
|
|
@@ -56,9 +54,7 @@ export default {
|
|
|
56
54
|
{
|
|
57
55
|
name: 'hide',
|
|
58
56
|
|
|
59
|
-
el()
|
|
60
|
-
return this.dropContainer;
|
|
61
|
-
},
|
|
57
|
+
el: ({ dropContainer }) => dropContainer,
|
|
62
58
|
|
|
63
59
|
async handler() {
|
|
64
60
|
await awaitMacroTask();
|
package/src/js/core/offcanvas.js
CHANGED
|
@@ -68,9 +68,9 @@ export default {
|
|
|
68
68
|
if (scrollTop === max) {
|
|
69
69
|
active = length - 1;
|
|
70
70
|
} else {
|
|
71
|
+
const offsetBy = this.offset + offset(getCoveringElement()).height;
|
|
72
|
+
|
|
71
73
|
for (let i = 0; i < targets.length; i++) {
|
|
72
|
-
const fixedEl = getCoveringElement(targets[i]);
|
|
73
|
-
const offsetBy = this.offset + (fixedEl ? offset(fixedEl).height : 0);
|
|
74
74
|
if (offset(targets[i]).top - viewport.top - offsetBy > 0) {
|
|
75
75
|
break;
|
|
76
76
|
}
|
package/src/js/core/scrollspy.js
CHANGED
package/src/js/core/sticky.js
CHANGED
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
isVisible,
|
|
17
17
|
noop,
|
|
18
18
|
offsetPosition,
|
|
19
|
-
once,
|
|
20
19
|
parent,
|
|
21
20
|
query,
|
|
22
21
|
remove,
|
|
@@ -97,28 +96,28 @@ export default {
|
|
|
97
96
|
},
|
|
98
97
|
|
|
99
98
|
observe: [
|
|
100
|
-
viewport(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
99
|
+
viewport(),
|
|
100
|
+
scroll({ target: () => document.scrollingElement }),
|
|
101
|
+
resize({
|
|
102
|
+
target: ({ $el }) => [$el, parent($el), document.scrollingElement],
|
|
103
|
+
handler(entries) {
|
|
104
|
+
this.$emit(
|
|
105
|
+
this._data.resized && entries.some(({ target }) => target === parent(this.$el))
|
|
106
|
+
? 'update'
|
|
107
|
+
: 'resize',
|
|
108
|
+
);
|
|
109
|
+
this._data.resized = true;
|
|
105
110
|
},
|
|
106
111
|
}),
|
|
107
|
-
scroll({ target: () => document.scrollingElement }),
|
|
108
|
-
resize({ target: ({ $el }) => [$el, document.scrollingElement] }),
|
|
109
112
|
],
|
|
110
113
|
|
|
111
114
|
events: [
|
|
112
115
|
{
|
|
113
116
|
name: 'load hashchange popstate',
|
|
114
117
|
|
|
115
|
-
el()
|
|
116
|
-
return window;
|
|
117
|
-
},
|
|
118
|
+
el: () => window,
|
|
118
119
|
|
|
119
|
-
filter()
|
|
120
|
-
return this.targetOffset !== false;
|
|
121
|
-
},
|
|
120
|
+
filter: ({ targetOffset }) => targetOffset !== false,
|
|
122
121
|
|
|
123
122
|
handler() {
|
|
124
123
|
const { scrollingElement } = document;
|
|
@@ -142,29 +141,18 @@ export default {
|
|
|
142
141
|
});
|
|
143
142
|
},
|
|
144
143
|
},
|
|
145
|
-
{
|
|
146
|
-
name: 'transitionstart',
|
|
147
|
-
|
|
148
|
-
handler() {
|
|
149
|
-
this.transitionInProgress = once(
|
|
150
|
-
this.$el,
|
|
151
|
-
'transitionend transitioncancel',
|
|
152
|
-
() => (this.transitionInProgress = null),
|
|
153
|
-
);
|
|
154
|
-
},
|
|
155
|
-
},
|
|
156
144
|
],
|
|
157
145
|
|
|
158
146
|
update: [
|
|
159
147
|
{
|
|
160
|
-
read({ height, width, margin, sticky }) {
|
|
148
|
+
read({ height, width, margin, sticky }, types) {
|
|
161
149
|
this.inactive = !this.matchMedia || !isVisible(this.$el);
|
|
162
150
|
|
|
163
151
|
if (this.inactive) {
|
|
164
152
|
return;
|
|
165
153
|
}
|
|
166
154
|
|
|
167
|
-
const hide = this.isFixed &&
|
|
155
|
+
const hide = this.isFixed && types.has('update');
|
|
168
156
|
if (hide) {
|
|
169
157
|
preventTransition(this.target);
|
|
170
158
|
this.hide();
|
|
@@ -239,6 +227,7 @@ export default {
|
|
|
239
227
|
top: offsetPosition(referenceElement)[0],
|
|
240
228
|
sticky,
|
|
241
229
|
viewport,
|
|
230
|
+
maxScrollHeight,
|
|
242
231
|
};
|
|
243
232
|
},
|
|
244
233
|
|
|
@@ -283,8 +272,9 @@ export default {
|
|
|
283
272
|
elHeight,
|
|
284
273
|
height,
|
|
285
274
|
sticky,
|
|
275
|
+
maxScrollHeight,
|
|
286
276
|
}) {
|
|
287
|
-
const scroll = document.scrollingElement.scrollTop;
|
|
277
|
+
const scroll = Math.min(document.scrollingElement.scrollTop, maxScrollHeight);
|
|
288
278
|
const dir = prevScroll <= scroll ? 'down' : 'up';
|
|
289
279
|
const referenceElement = this.isFixed ? this.placeholder : this.$el;
|
|
290
280
|
|