uikit 3.14.4-dev.a02c81d72 → 3.14.4-dev.ae765cd84
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 +34 -17
- package/build/util.js +1 -0
- package/dist/css/uikit-core-rtl.css +339 -109
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +339 -109
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +359 -113
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +359 -113
- 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 +78 -129
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +78 -129
- 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 +4 -5
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +4 -5
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +1 -1
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +4 -5
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +1 -1
- 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 +92 -145
- 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 +460 -446
- package/dist/js/uikit-core.min.js +14 -1
- package/dist/js/uikit-icons.js +1 -1
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +460 -446
- package/dist/js/uikit.min.js +14 -1
- package/package.json +1 -1
- package/src/images/{backgrounds/nav-parent-close.svg → components/nav-parent-icon-large.svg} +0 -0
- package/src/images/{backgrounds/navbar-parent-close.svg → components/nav-parent-icon.svg} +0 -0
- package/src/images/{backgrounds/navbar-parent-open.svg → components/navbar-parent-icon.svg} +1 -1
- package/src/images/components/navbar-toggle-icon.svg +22 -3
- package/src/js/api/state.js +2 -2
- package/src/js/core/accordion.js +9 -17
- package/src/js/core/alert.js +35 -14
- package/src/js/core/drop.js +89 -62
- package/src/js/core/height-viewport.js +4 -2
- package/src/js/core/icon.js +16 -0
- package/src/js/core/index.js +2 -0
- package/src/js/core/leader.js +2 -2
- package/src/js/core/navbar.js +30 -45
- package/src/js/core/scroll.js +37 -10
- package/src/js/core/toggle.js +3 -5
- package/src/js/mixin/media.js +4 -5
- package/src/js/mixin/modal.js +9 -6
- package/src/js/mixin/position.js +24 -26
- package/src/js/mixin/style.js +11 -0
- package/src/js/mixin/togglable.js +80 -133
- package/src/js/util/animation.js +4 -3
- package/src/js/util/filter.js +3 -7
- package/src/js/util/position.js +107 -107
- package/src/js/util/style.js +4 -13
- package/src/js/util/viewport.js +3 -5
- package/src/less/components/_import.less +1 -0
- package/src/less/components/drop.less +1 -18
- package/src/less/components/dropbar.less +115 -0
- package/src/less/components/dropdown.less +11 -19
- package/src/less/components/leader.less +1 -1
- package/src/less/components/nav.less +218 -59
- package/src/less/components/navbar.less +54 -47
- package/src/less/components/utility.less +10 -2
- package/src/less/theme/_import.less +1 -0
- package/src/less/theme/dropbar.less +44 -0
- package/src/less/theme/dropdown.less +0 -11
- package/src/less/theme/nav.less +45 -7
- package/src/less/theme/navbar.less +1 -5
- package/src/scss/components/_import.scss +1 -0
- package/src/scss/components/drop.scss +1 -18
- package/src/scss/components/dropbar.scss +115 -0
- package/src/scss/components/dropdown.scss +11 -19
- package/src/scss/components/leader.scss +1 -1
- package/src/scss/components/nav.scss +167 -47
- package/src/scss/components/navbar.scss +42 -47
- package/src/scss/components/utility.scss +8 -1
- package/src/scss/mixins-theme.scss +92 -21
- package/src/scss/mixins.scss +89 -17
- package/src/scss/theme/_import.scss +1 -0
- package/src/scss/theme/dropbar.scss +44 -0
- package/src/scss/theme/dropdown.scss +0 -8
- package/src/scss/theme/nav.scss +43 -7
- package/src/scss/theme/navbar.scss +1 -5
- package/src/scss/variables-theme.scss +56 -19
- package/src/scss/variables.scss +45 -17
- package/tests/accordion.html +2 -2
- package/tests/alert.html +2 -2
- package/tests/countdown.html +1 -1
- package/tests/drop.html +442 -412
- package/tests/dropbar.html +456 -0
- package/tests/dropdown.html +8 -470
- package/tests/filter.html +9 -12
- package/tests/form.html +1 -1
- package/tests/index.html +126 -107
- package/tests/js/index.js +1 -4
- package/tests/lightbox.html +5 -5
- package/tests/list.html +8 -8
- package/tests/modal.html +13 -13
- package/tests/nav.html +117 -75
- package/tests/navbar.html +102 -237
- package/tests/offcanvas.html +17 -21
- package/tests/parallax.html +1 -1
- package/tests/position.html +18 -16
- package/tests/progress.html +9 -9
- package/tests/scroll.html +7 -10
- package/tests/search.html +5 -5
- package/tests/slider.html +6 -5
- package/tests/slideshow.html +8 -8
- package/tests/sortable.html +6 -8
- package/tests/sticky-navbar.html +6 -6
- package/tests/sticky.html +8 -8
- package/tests/switcher.html +1 -1
- package/tests/tab.html +1 -1
- package/tests/table.html +7 -7
- package/tests/toggle.html +2 -2
- package/tests/tooltip.html +1 -1
- package/tests/upload.html +11 -11
- package/tests/utility.html +19 -0
- package/src/images/backgrounds/nav-parent-open.svg +0 -3
package/src/js/core/navbar.js
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
offset,
|
|
20
20
|
once,
|
|
21
21
|
parent,
|
|
22
|
+
parents,
|
|
22
23
|
query,
|
|
23
24
|
remove,
|
|
24
25
|
selFocusable,
|
|
@@ -36,7 +37,9 @@ export default {
|
|
|
36
37
|
align: String,
|
|
37
38
|
offset: Number,
|
|
38
39
|
boundary: Boolean,
|
|
39
|
-
|
|
40
|
+
target: Boolean,
|
|
41
|
+
targetX: Boolean,
|
|
42
|
+
targetY: Boolean,
|
|
40
43
|
clsDrop: String,
|
|
41
44
|
delayShow: Number,
|
|
42
45
|
delayHide: Number,
|
|
@@ -53,9 +56,12 @@ export default {
|
|
|
53
56
|
offset: undefined,
|
|
54
57
|
delayShow: undefined,
|
|
55
58
|
delayHide: undefined,
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
flip: false,
|
|
60
|
+
shift: true,
|
|
58
61
|
boundary: true,
|
|
62
|
+
target: false,
|
|
63
|
+
targetX: false,
|
|
64
|
+
targetY: false,
|
|
59
65
|
dropbar: false,
|
|
60
66
|
dropbarAnchor: false,
|
|
61
67
|
duration: 200,
|
|
@@ -90,7 +96,7 @@ export default {
|
|
|
90
96
|
},
|
|
91
97
|
|
|
92
98
|
watch(dropbar) {
|
|
93
|
-
addClass(dropbar, 'uk-navbar-dropbar');
|
|
99
|
+
addClass(dropbar, 'uk-dropbar', 'uk-dropbar-top', 'uk-navbar-dropbar');
|
|
94
100
|
},
|
|
95
101
|
|
|
96
102
|
immediate: true,
|
|
@@ -106,7 +112,7 @@ export default {
|
|
|
106
112
|
|
|
107
113
|
if (this.dropContainer !== $el) {
|
|
108
114
|
for (const el of $$(`.${clsDrop}`, this.dropContainer)) {
|
|
109
|
-
const target = this.getDropdown(el)?.
|
|
115
|
+
const target = this.getDropdown(el)?.targetEl;
|
|
110
116
|
if (!includes(dropdowns, el) && target && within(target, this.$el)) {
|
|
111
117
|
dropdowns.push(el);
|
|
112
118
|
}
|
|
@@ -168,8 +174,8 @@ export default {
|
|
|
168
174
|
if (
|
|
169
175
|
active &&
|
|
170
176
|
includes(active.mode, 'hover') &&
|
|
171
|
-
active.
|
|
172
|
-
!within(active.
|
|
177
|
+
active.targetEl &&
|
|
178
|
+
!within(active.targetEl, current) &&
|
|
173
179
|
!active.isDelaying
|
|
174
180
|
) {
|
|
175
181
|
active.hide(false);
|
|
@@ -191,7 +197,7 @@ export default {
|
|
|
191
197
|
if (keyCode === keyMap.DOWN && hasAttr(current, 'aria-expanded')) {
|
|
192
198
|
e.preventDefault();
|
|
193
199
|
|
|
194
|
-
if (!active || active.
|
|
200
|
+
if (!active || active.targetEl !== current) {
|
|
195
201
|
current.click();
|
|
196
202
|
once(this.dropContainer, 'show', ({ target }) =>
|
|
197
203
|
focusFirstFocusableElement(target)
|
|
@@ -242,7 +248,7 @@ export default {
|
|
|
242
248
|
}
|
|
243
249
|
|
|
244
250
|
if (keyCode === keyMap.ESC) {
|
|
245
|
-
active?.
|
|
251
|
+
active?.targetEl?.focus();
|
|
246
252
|
}
|
|
247
253
|
|
|
248
254
|
handleNavItemNavigation(e, this.toggles, active);
|
|
@@ -313,39 +319,19 @@ export default {
|
|
|
313
319
|
return;
|
|
314
320
|
}
|
|
315
321
|
|
|
316
|
-
this._observer = observeResize(target, () =>
|
|
322
|
+
this._observer = observeResize(target, () => {
|
|
323
|
+
const targetOffsets = parents(target, `.${this.clsDrop}`)
|
|
324
|
+
.concat(target)
|
|
325
|
+
.map((el) => offset(el));
|
|
326
|
+
const minTop = Math.min(...targetOffsets.map(({ top }) => top));
|
|
327
|
+
const maxBottom = Math.max(...targetOffsets.map(({ bottom }) => bottom));
|
|
328
|
+
const dropbarOffset = offset(this.dropbar);
|
|
329
|
+
css(this.dropbar, 'top', this.dropbar.offsetTop - (dropbarOffset.top - minTop));
|
|
317
330
|
this.transitionTo(
|
|
318
|
-
|
|
319
|
-
offset(this.dropbar).top +
|
|
320
|
-
toFloat(css(target, 'marginBottom')),
|
|
331
|
+
maxBottom - minTop + toFloat(css(target, 'marginBottom')),
|
|
321
332
|
target
|
|
322
|
-
)
|
|
323
|
-
);
|
|
324
|
-
},
|
|
325
|
-
},
|
|
326
|
-
|
|
327
|
-
{
|
|
328
|
-
name: 'beforeposition',
|
|
329
|
-
|
|
330
|
-
el() {
|
|
331
|
-
return this.dropContainer;
|
|
332
|
-
},
|
|
333
|
-
|
|
334
|
-
filter() {
|
|
335
|
-
return this.dropbar;
|
|
336
|
-
},
|
|
337
|
-
|
|
338
|
-
handler(e, element, target, options) {
|
|
339
|
-
if (!this.isDropbarDrop(element)) {
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
const dropbarOffset = offset(this.dropbar);
|
|
344
|
-
|
|
345
|
-
css(element, 'maxWidth', dropbarOffset.width - options.viewportOffset * 2);
|
|
346
|
-
|
|
347
|
-
options.offset[1] = dropbarOffset.top - offset(target).bottom;
|
|
348
|
-
options.viewportOffset += dropbarOffset.left;
|
|
333
|
+
);
|
|
334
|
+
});
|
|
349
335
|
},
|
|
350
336
|
},
|
|
351
337
|
|
|
@@ -366,7 +352,7 @@ export default {
|
|
|
366
352
|
if (
|
|
367
353
|
matches(this.dropbar, ':hover') &&
|
|
368
354
|
active?.$el === e.target &&
|
|
369
|
-
!this.toggles.some((el) => active.
|
|
355
|
+
!this.toggles.some((el) => active.targetEl !== el && matches(el, ':focus'))
|
|
370
356
|
) {
|
|
371
357
|
e.preventDefault();
|
|
372
358
|
}
|
|
@@ -402,7 +388,7 @@ export default {
|
|
|
402
388
|
|
|
403
389
|
methods: {
|
|
404
390
|
getActive() {
|
|
405
|
-
return active && within(active.
|
|
391
|
+
return active && within(active.targetEl, this.$el) && active;
|
|
406
392
|
},
|
|
407
393
|
|
|
408
394
|
transitionTo(newHeight, el) {
|
|
@@ -435,15 +421,14 @@ export default {
|
|
|
435
421
|
},
|
|
436
422
|
|
|
437
423
|
isDropbarDrop(el) {
|
|
438
|
-
|
|
439
|
-
return drop && hasClass(el, this.clsDrop) && drop.align !== 'stretch';
|
|
424
|
+
return this.getDropdown(el) && hasClass(el, this.clsDrop);
|
|
440
425
|
},
|
|
441
426
|
},
|
|
442
427
|
};
|
|
443
428
|
|
|
444
429
|
function handleNavItemNavigation(e, toggles, active) {
|
|
445
430
|
const { current, keyCode } = e;
|
|
446
|
-
const target = active?.
|
|
431
|
+
const target = active?.targetEl || current;
|
|
447
432
|
const i = toggles.indexOf(target);
|
|
448
433
|
|
|
449
434
|
// Left
|
package/src/js/core/scroll.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $, scrollIntoView, trigger } from 'uikit-util';
|
|
1
|
+
import { $, off, on, scrollIntoView, trigger, within } from 'uikit-util';
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
props: {
|
|
@@ -9,6 +9,14 @@ export default {
|
|
|
9
9
|
offset: 0,
|
|
10
10
|
},
|
|
11
11
|
|
|
12
|
+
connected() {
|
|
13
|
+
registerClick(this);
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
disconnected() {
|
|
17
|
+
unregisterClick(this);
|
|
18
|
+
},
|
|
19
|
+
|
|
12
20
|
methods: {
|
|
13
21
|
async scrollTo(el) {
|
|
14
22
|
el = (el && $(el)) || document.body;
|
|
@@ -19,18 +27,37 @@ export default {
|
|
|
19
27
|
}
|
|
20
28
|
},
|
|
21
29
|
},
|
|
30
|
+
};
|
|
22
31
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
const components = new Set();
|
|
33
|
+
function registerClick(cmp) {
|
|
34
|
+
if (!components.size) {
|
|
35
|
+
on(document, 'click', clickHandler);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
components.add(cmp);
|
|
39
|
+
}
|
|
28
40
|
|
|
41
|
+
function unregisterClick(cmp) {
|
|
42
|
+
components.delete(cmp);
|
|
43
|
+
|
|
44
|
+
if (!components.length) {
|
|
45
|
+
off(document, 'click', clickHandler);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function clickHandler(e) {
|
|
50
|
+
if (e.defaultPrevented) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
for (const component of components) {
|
|
55
|
+
if (within(e.target, component.$el)) {
|
|
29
56
|
e.preventDefault();
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
57
|
+
component.scrollTo(getTargetElement(component.$el));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
34
61
|
|
|
35
62
|
export function getTargetElement(el) {
|
|
36
63
|
return document.getElementById(decodeURIComponent(el.hash).substring(1));
|
package/src/js/core/toggle.js
CHANGED
|
@@ -181,7 +181,7 @@ export default {
|
|
|
181
181
|
},
|
|
182
182
|
|
|
183
183
|
{
|
|
184
|
-
name: '
|
|
184
|
+
name: 'hide show',
|
|
185
185
|
|
|
186
186
|
self: true,
|
|
187
187
|
|
|
@@ -189,10 +189,8 @@ export default {
|
|
|
189
189
|
return this.target;
|
|
190
190
|
},
|
|
191
191
|
|
|
192
|
-
handler(
|
|
193
|
-
|
|
194
|
-
this.updateAria(toggled);
|
|
195
|
-
}
|
|
192
|
+
handler({ type }) {
|
|
193
|
+
this.updateAria(type === 'show');
|
|
196
194
|
},
|
|
197
195
|
},
|
|
198
196
|
|
package/src/js/mixin/media.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createEvent,
|
|
3
|
-
|
|
3
|
+
css,
|
|
4
4
|
isNumeric,
|
|
5
5
|
isString,
|
|
6
6
|
on,
|
|
@@ -19,7 +19,7 @@ export default {
|
|
|
19
19
|
},
|
|
20
20
|
|
|
21
21
|
connected() {
|
|
22
|
-
const media = toMedia(this.media);
|
|
22
|
+
const media = toMedia(this.media, this.$el);
|
|
23
23
|
this.matchMedia = true;
|
|
24
24
|
if (media) {
|
|
25
25
|
this.mediaObj = window.matchMedia(media);
|
|
@@ -40,11 +40,10 @@ export default {
|
|
|
40
40
|
},
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
function toMedia(value) {
|
|
43
|
+
function toMedia(value, element) {
|
|
44
44
|
if (isString(value)) {
|
|
45
45
|
if (startsWith(value, '@')) {
|
|
46
|
-
|
|
47
|
-
value = toFloat(getCssVar(name));
|
|
46
|
+
value = toFloat(css(element, `--uk-breakpoint-${value.substr(1)}`));
|
|
48
47
|
} else if (isNaN(value)) {
|
|
49
48
|
return value;
|
|
50
49
|
}
|
package/src/js/mixin/modal.js
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
includes,
|
|
10
10
|
isFocusable,
|
|
11
11
|
last,
|
|
12
|
+
noop,
|
|
12
13
|
on,
|
|
13
14
|
once,
|
|
14
15
|
parent,
|
|
@@ -134,8 +135,8 @@ export default {
|
|
|
134
135
|
);
|
|
135
136
|
|
|
136
137
|
if (this.overlay) {
|
|
137
|
-
once(this.$el, '
|
|
138
|
-
once(this.$el, '
|
|
138
|
+
once(this.$el, 'hidden', preventOverscroll(this.$el));
|
|
139
|
+
once(this.$el, 'hidden', preventBackgroundScroll());
|
|
139
140
|
}
|
|
140
141
|
|
|
141
142
|
if (this.stack) {
|
|
@@ -217,10 +218,6 @@ export default {
|
|
|
217
218
|
active.splice(active.indexOf(this), 1);
|
|
218
219
|
}
|
|
219
220
|
|
|
220
|
-
if (!active.length) {
|
|
221
|
-
css(document.body, 'overflowY', '');
|
|
222
|
-
}
|
|
223
|
-
|
|
224
221
|
css(this.$el, 'zIndex', '');
|
|
225
222
|
|
|
226
223
|
if (!active.some((modal) => modal.clsPage === this.clsPage)) {
|
|
@@ -337,7 +334,12 @@ export function preventOverscroll(el) {
|
|
|
337
334
|
return () => events.forEach((fn) => fn());
|
|
338
335
|
}
|
|
339
336
|
|
|
337
|
+
let prevented;
|
|
340
338
|
export function preventBackgroundScroll() {
|
|
339
|
+
if (prevented) {
|
|
340
|
+
return noop;
|
|
341
|
+
}
|
|
342
|
+
prevented = true;
|
|
341
343
|
const { body, documentElement } = document;
|
|
342
344
|
css(body, {
|
|
343
345
|
overflowY: width(window) > documentElement.clientWidth ? 'scroll' : '',
|
|
@@ -345,6 +347,7 @@ export function preventBackgroundScroll() {
|
|
|
345
347
|
});
|
|
346
348
|
css(documentElement, 'overflowY', 'hidden');
|
|
347
349
|
return () => {
|
|
350
|
+
prevented = false;
|
|
348
351
|
css(documentElement, 'overflowY', '');
|
|
349
352
|
css(body, { overflowY: '', touchAction: '' });
|
|
350
353
|
};
|
package/src/js/mixin/position.js
CHANGED
|
@@ -2,13 +2,11 @@ import {
|
|
|
2
2
|
css,
|
|
3
3
|
dimensions,
|
|
4
4
|
flipPosition,
|
|
5
|
-
getCssVar,
|
|
6
5
|
includes,
|
|
7
6
|
isRtl,
|
|
8
7
|
positionAt,
|
|
9
8
|
scrollParents,
|
|
10
9
|
toPx,
|
|
11
|
-
trigger,
|
|
12
10
|
} from 'uikit-util';
|
|
13
11
|
|
|
14
12
|
export default {
|
|
@@ -16,12 +14,16 @@ export default {
|
|
|
16
14
|
pos: String,
|
|
17
15
|
offset: null,
|
|
18
16
|
flip: Boolean,
|
|
17
|
+
shift: Boolean,
|
|
18
|
+
inset: Boolean,
|
|
19
19
|
},
|
|
20
20
|
|
|
21
21
|
data: {
|
|
22
22
|
pos: `bottom-${isRtl ? 'right' : 'left'}`,
|
|
23
|
-
flip: true,
|
|
24
23
|
offset: false,
|
|
24
|
+
flip: true,
|
|
25
|
+
shift: true,
|
|
26
|
+
inset: false,
|
|
25
27
|
},
|
|
26
28
|
|
|
27
29
|
connected() {
|
|
@@ -33,17 +35,19 @@ export default {
|
|
|
33
35
|
methods: {
|
|
34
36
|
positionAt(element, target, boundary) {
|
|
35
37
|
let offset = [this.getPositionOffset(element), this.getShiftOffset(element)];
|
|
38
|
+
const placement = [this.flip && 'flip', this.shift && 'shift'];
|
|
36
39
|
|
|
37
40
|
const attach = {
|
|
38
|
-
element: [flipPosition(this.dir), this.align],
|
|
41
|
+
element: [this.inset ? this.dir : flipPosition(this.dir), this.align],
|
|
39
42
|
target: [this.dir, this.align],
|
|
40
43
|
};
|
|
41
44
|
|
|
42
45
|
if (this.axis === 'y') {
|
|
43
46
|
for (const prop in attach) {
|
|
44
|
-
attach[prop]
|
|
47
|
+
attach[prop].reverse();
|
|
45
48
|
}
|
|
46
|
-
offset
|
|
49
|
+
offset.reverse();
|
|
50
|
+
placement.reverse();
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
const [scrollElement] = scrollParents(element, /auto|scroll/);
|
|
@@ -53,21 +57,13 @@ export default {
|
|
|
53
57
|
const elDim = dimensions(element);
|
|
54
58
|
css(element, { top: -elDim.height, left: -elDim.width });
|
|
55
59
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
flip: this.flip,
|
|
64
|
-
viewportOffset: this.getViewportOffset(element),
|
|
65
|
-
},
|
|
66
|
-
];
|
|
67
|
-
|
|
68
|
-
trigger(element, 'beforeposition', args);
|
|
69
|
-
|
|
70
|
-
positionAt(...args);
|
|
60
|
+
positionAt(element, target, {
|
|
61
|
+
attach,
|
|
62
|
+
offset,
|
|
63
|
+
boundary,
|
|
64
|
+
placement,
|
|
65
|
+
viewportOffset: this.getViewportOffset(element),
|
|
66
|
+
});
|
|
71
67
|
|
|
72
68
|
// Restore scroll position
|
|
73
69
|
scrollElement.scrollTop = scrollTop;
|
|
@@ -77,25 +73,27 @@ export default {
|
|
|
77
73
|
getPositionOffset(element) {
|
|
78
74
|
return (
|
|
79
75
|
toPx(
|
|
80
|
-
this.offset === false ?
|
|
76
|
+
this.offset === false ? css(element, '--uk-position-offset') : this.offset,
|
|
81
77
|
this.axis === 'x' ? 'width' : 'height',
|
|
82
78
|
element
|
|
83
|
-
) *
|
|
79
|
+
) *
|
|
80
|
+
(includes(['left', 'top'], this.dir) ? -1 : 1) *
|
|
81
|
+
(this.inset ? -1 : 1)
|
|
84
82
|
);
|
|
85
83
|
},
|
|
86
84
|
|
|
87
85
|
getShiftOffset(element) {
|
|
88
|
-
return
|
|
86
|
+
return this.align === 'center'
|
|
89
87
|
? 0
|
|
90
88
|
: toPx(
|
|
91
|
-
|
|
89
|
+
css(element, '--uk-position-shift-offset'),
|
|
92
90
|
this.axis === 'y' ? 'width' : 'height',
|
|
93
91
|
element
|
|
94
92
|
) * (includes(['left', 'top'], this.align) ? 1 : -1);
|
|
95
93
|
},
|
|
96
94
|
|
|
97
95
|
getViewportOffset(element) {
|
|
98
|
-
return toPx(
|
|
96
|
+
return toPx(css(element, '--uk-position-viewport-offset'));
|
|
99
97
|
},
|
|
100
98
|
},
|
|
101
99
|
};
|