uikit 3.11.2-dev.19d26d0f9 → 3.11.2-dev.21a5b7139
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 +16 -1
- 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 +42 -17
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +42 -17
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +42 -17
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +42 -17
- 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 +410 -437
- 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 +724 -846
- 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 +587 -616
- 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 +153 -161
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +5293 -6602
- 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 +8114 -9862
- 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 +80 -101
- package/src/js/components/countdown.js +23 -49
- 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 +65 -44
- 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 +17 -38
- 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 +73 -61
- package/src/js/components/slideshow-parallax.js +1 -1
- package/src/js/components/slideshow.js +8 -13
- package/src/js/components/sortable.js +121 -102
- package/src/js/components/tooltip.js +41 -31
- package/src/js/components/upload.js +46 -53
- package/src/js/core/accordion.js +54 -49
- 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 +107 -93
- 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 +15 -28
- package/src/js/core/height-viewport.js +28 -35
- package/src/js/core/icon.js +38 -50
- package/src/js/core/img.js +57 -58
- package/src/js/core/index.js +39 -39
- package/src/js/core/leader.js +9 -18
- package/src/js/core/margin.js +10 -24
- package/src/js/core/modal.js +50 -36
- package/src/js/core/nav.js +2 -4
- package/src/js/core/navbar.js +112 -84
- 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 +34 -51
- package/src/js/core/sticky.js +151 -93
- 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 +63 -65
- 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 +62 -63
- package/src/js/mixin/slider-nav.js +25 -34
- 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 +6 -12
- package/src/js/util/class.js +14 -52
- package/src/js/util/dimensions.js +56 -43
- package/src/js/util/dom.js +36 -54
- 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 +53 -45
- package/src/js/util/promise.js +0 -191
- package/src/js/util/selector.js +39 -48
- package/src/js/util/style.js +36 -46
- package/src/js/util/viewport.js +75 -64
- package/src/less/components/flex.less +0 -9
- package/src/less/components/navbar.less +0 -7
- package/src/less/components/utility.less +22 -0
- package/src/scss/components/flex.scss +0 -9
- package/src/scss/components/form.scss +3 -3
- package/src/scss/components/icon.scss +2 -2
- package/src/scss/components/navbar.scss +0 -7
- package/src/scss/components/search.scss +1 -1
- package/src/scss/components/utility.scss +22 -0
- package/src/scss/variables-theme.scss +6 -6
- package/src/scss/variables.scss +6 -6
- package/tests/js/index.js +114 -85
- package/tests/sticky-parallax.html +44 -41
- package/tests/sticky.html +20 -3
- package/src/js/mixin/flex-bug.js +0 -56
package/src/js/util/dom.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {once} from './event';
|
|
2
|
-
import {parent} from './filter';
|
|
3
|
-
import {find, findAll} from './selector';
|
|
4
|
-
import {isElement, isString, isUndefined, toNode, toNodes} from './lang';
|
|
1
|
+
import { once } from './event';
|
|
2
|
+
import { parent } from './filter';
|
|
3
|
+
import { find, findAll } from './selector';
|
|
4
|
+
import { isElement, isString, isUndefined, startsWith, toNode, toNodes } from './lang';
|
|
5
5
|
|
|
6
6
|
export function ready(fn) {
|
|
7
|
-
|
|
8
7
|
if (document.readyState !== 'loading') {
|
|
9
8
|
fn();
|
|
10
9
|
return;
|
|
@@ -14,62 +13,48 @@ export function ready(fn) {
|
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
export function empty(element) {
|
|
17
|
-
|
|
18
|
-
element.innerHTML = '';
|
|
19
|
-
return element;
|
|
16
|
+
return replaceChildren(element, '');
|
|
20
17
|
}
|
|
21
18
|
|
|
22
19
|
export function html(parent, html) {
|
|
23
|
-
|
|
24
|
-
return isUndefined(html)
|
|
25
|
-
? parent.innerHTML
|
|
26
|
-
: append(parent.hasChildNodes() ? empty(parent) : parent, html);
|
|
20
|
+
return isUndefined(html) ? $(parent).innerHTML : replaceChildren(parent, html);
|
|
27
21
|
}
|
|
28
22
|
|
|
29
|
-
export function
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
export function replaceChildren(parent, element) {
|
|
24
|
+
const nodes = $$(element);
|
|
25
|
+
$(parent).replaceChildren(...nodes);
|
|
26
|
+
return nodes;
|
|
27
|
+
}
|
|
32
28
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
29
|
+
export function prepend(parent, element) {
|
|
30
|
+
const nodes = $$(element);
|
|
31
|
+
$(parent).prepend(...nodes);
|
|
32
|
+
return nodes;
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
export function append(parent, element) {
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
const nodes = $$(element);
|
|
37
|
+
$(parent).append(...nodes);
|
|
38
|
+
return nodes;
|
|
43
39
|
}
|
|
44
40
|
|
|
45
41
|
export function before(ref, element) {
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
const nodes = $$(element);
|
|
43
|
+
$(ref).before(...nodes);
|
|
44
|
+
return nodes;
|
|
48
45
|
}
|
|
49
46
|
|
|
50
47
|
export function after(ref, element) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
: append(ref.parentNode, element)
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function insertNodes(element, fn) {
|
|
59
|
-
element = isString(element) ? fragment(element) : element;
|
|
60
|
-
return element
|
|
61
|
-
? 'length' in element
|
|
62
|
-
? toNodes(element).map(fn)
|
|
63
|
-
: fn(element)
|
|
64
|
-
: null;
|
|
48
|
+
const nodes = $$(element);
|
|
49
|
+
$(ref).after(...nodes);
|
|
50
|
+
return nodes;
|
|
65
51
|
}
|
|
66
52
|
|
|
67
53
|
export function remove(element) {
|
|
68
|
-
toNodes(element).forEach(element => element.
|
|
54
|
+
toNodes(element).forEach((element) => element.remove());
|
|
69
55
|
}
|
|
70
56
|
|
|
71
57
|
export function wrapAll(element, structure) {
|
|
72
|
-
|
|
73
58
|
structure = toNode(before(element, structure));
|
|
74
59
|
|
|
75
60
|
while (structure.firstChild) {
|
|
@@ -82,16 +67,20 @@ export function wrapAll(element, structure) {
|
|
|
82
67
|
}
|
|
83
68
|
|
|
84
69
|
export function wrapInner(element, structure) {
|
|
85
|
-
return toNodes(
|
|
86
|
-
element.
|
|
87
|
-
|
|
70
|
+
return toNodes(
|
|
71
|
+
toNodes(element).map((element) =>
|
|
72
|
+
element.hasChildNodes
|
|
73
|
+
? wrapAll(toNodes(element.childNodes), structure)
|
|
74
|
+
: append(element, structure)
|
|
75
|
+
)
|
|
76
|
+
);
|
|
88
77
|
}
|
|
89
78
|
|
|
90
79
|
export function unwrap(element) {
|
|
91
80
|
toNodes(element)
|
|
92
81
|
.map(parent)
|
|
93
82
|
.filter((value, index, self) => self.indexOf(value) === index)
|
|
94
|
-
.forEach(parent => {
|
|
83
|
+
.forEach((parent) => {
|
|
95
84
|
before(parent, parent.childNodes);
|
|
96
85
|
remove(parent);
|
|
97
86
|
});
|
|
@@ -101,7 +90,6 @@ const fragmentRe = /^\s*<(\w+|!)[^>]*>/;
|
|
|
101
90
|
const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
|
|
102
91
|
|
|
103
92
|
export function fragment(html) {
|
|
104
|
-
|
|
105
93
|
const matches = singleTagRe.exec(html);
|
|
106
94
|
if (matches) {
|
|
107
95
|
return document.createElement(matches[1]);
|
|
@@ -115,11 +103,9 @@ export function fragment(html) {
|
|
|
115
103
|
}
|
|
116
104
|
|
|
117
105
|
return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;
|
|
118
|
-
|
|
119
106
|
}
|
|
120
107
|
|
|
121
108
|
export function apply(node, fn) {
|
|
122
|
-
|
|
123
109
|
if (!isElement(node)) {
|
|
124
110
|
return;
|
|
125
111
|
}
|
|
@@ -134,17 +120,13 @@ export function apply(node, fn) {
|
|
|
134
120
|
}
|
|
135
121
|
|
|
136
122
|
export function $(selector, context) {
|
|
137
|
-
return isHtml(selector)
|
|
138
|
-
? toNode(fragment(selector))
|
|
139
|
-
: find(selector, context);
|
|
123
|
+
return isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);
|
|
140
124
|
}
|
|
141
125
|
|
|
142
126
|
export function $$(selector, context) {
|
|
143
|
-
return isHtml(selector)
|
|
144
|
-
? toNodes(fragment(selector))
|
|
145
|
-
: findAll(selector, context);
|
|
127
|
+
return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);
|
|
146
128
|
}
|
|
147
129
|
|
|
148
130
|
function isHtml(str) {
|
|
149
|
-
return isString(str) && (str
|
|
131
|
+
return isString(str) && startsWith(str.trim(), '<');
|
|
150
132
|
}
|
package/src/js/util/env.js
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
import {attr} from './attr';
|
|
1
|
+
import { attr } from './attr';
|
|
3
2
|
|
|
4
3
|
export const inBrowser = typeof window !== 'undefined';
|
|
5
|
-
export const isIE = inBrowser && /msie|trident/i.test(window.navigator.userAgent);
|
|
6
4
|
export const isRtl = inBrowser && attr(document.documentElement, 'dir') === 'rtl';
|
|
7
5
|
|
|
8
|
-
const
|
|
6
|
+
export const hasTouch = inBrowser && 'ontouchstart' in window;
|
|
9
7
|
const hasPointerEvents = inBrowser && window.PointerEvent;
|
|
10
|
-
export const hasTouch = inBrowser && (hasTouchEvents
|
|
11
|
-
|| window.DocumentTouch && document instanceof DocumentTouch
|
|
12
|
-
|| navigator.maxTouchPoints); // IE >=11
|
|
13
8
|
|
|
14
|
-
export const pointerDown = hasPointerEvents ? 'pointerdown' :
|
|
15
|
-
export const pointerMove = hasPointerEvents ? 'pointermove' :
|
|
16
|
-
export const pointerUp = hasPointerEvents ? 'pointerup' :
|
|
17
|
-
export const pointerEnter = hasPointerEvents ? 'pointerenter' :
|
|
18
|
-
export const pointerLeave = hasPointerEvents ? 'pointerleave' :
|
|
9
|
+
export const pointerDown = hasPointerEvents ? 'pointerdown' : hasTouch ? 'touchstart' : 'mousedown';
|
|
10
|
+
export const pointerMove = hasPointerEvents ? 'pointermove' : hasTouch ? 'touchmove' : 'mousemove';
|
|
11
|
+
export const pointerUp = hasPointerEvents ? 'pointerup' : hasTouch ? 'touchend' : 'mouseup';
|
|
12
|
+
export const pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouch ? '' : 'mouseenter';
|
|
13
|
+
export const pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouch ? '' : 'mouseleave';
|
|
19
14
|
export const pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';
|
package/src/js/util/event.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {isArray, isBoolean, isFunction, isString, toNode, toNodes} from './lang';
|
|
1
|
+
import { findAll } from './selector';
|
|
2
|
+
import { closest, within } from './filter';
|
|
3
|
+
import { isArray, isFunction, isString, toNode, toNodes } from './lang';
|
|
5
4
|
|
|
6
5
|
export function on(...args) {
|
|
7
|
-
|
|
8
|
-
let [targets, type, selector, listener, useCapture] = getArgs(args);
|
|
9
|
-
|
|
10
|
-
targets = toEventTargets(targets);
|
|
6
|
+
let [targets, types, selector, listener, useCapture = false] = getArgs(args);
|
|
11
7
|
|
|
12
8
|
if (listener.length > 1) {
|
|
13
9
|
listener = detail(listener);
|
|
14
10
|
}
|
|
15
11
|
|
|
16
|
-
if (useCapture
|
|
12
|
+
if (useCapture?.self) {
|
|
17
13
|
listener = selfFilter(listener);
|
|
18
14
|
}
|
|
19
15
|
|
|
@@ -21,80 +17,92 @@ export function on(...args) {
|
|
|
21
17
|
listener = delegate(selector, listener);
|
|
22
18
|
}
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
for (const type of types) {
|
|
21
|
+
for (const target of targets) {
|
|
22
|
+
target.addEventListener(type, listener, useCapture);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
targets.forEach(target =>
|
|
28
|
-
target.addEventListener(type, listener, useCapture)
|
|
29
|
-
)
|
|
30
|
-
);
|
|
31
|
-
return () => off(targets, type, listener, useCapture);
|
|
26
|
+
return () => off(targets, types, listener, useCapture);
|
|
32
27
|
}
|
|
33
28
|
|
|
34
|
-
export function off(
|
|
35
|
-
useCapture =
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
);
|
|
29
|
+
export function off(...args) {
|
|
30
|
+
let [targets, types, , listener, useCapture = false] = getArgs(args);
|
|
31
|
+
for (const type of types) {
|
|
32
|
+
for (const target of targets) {
|
|
33
|
+
target.removeEventListener(type, listener, useCapture);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
42
36
|
}
|
|
43
37
|
|
|
44
38
|
export function once(...args) {
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
const [element, types, selector, listener, useCapture = false, condition] = getArgs(args);
|
|
40
|
+
const off = on(
|
|
41
|
+
element,
|
|
42
|
+
types,
|
|
43
|
+
selector,
|
|
44
|
+
(e) => {
|
|
45
|
+
const result = !condition || condition(e);
|
|
46
|
+
if (result) {
|
|
47
|
+
off();
|
|
48
|
+
listener(e, result);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
useCapture
|
|
52
|
+
);
|
|
54
53
|
|
|
55
54
|
return off;
|
|
56
55
|
}
|
|
57
56
|
|
|
58
57
|
export function trigger(targets, event, detail) {
|
|
59
|
-
return toEventTargets(targets).
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
return toEventTargets(targets).every((target) =>
|
|
59
|
+
target.dispatchEvent(createEvent(event, true, true, detail))
|
|
60
|
+
);
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
export function createEvent(e, bubbles = true, cancelable = false, detail) {
|
|
65
64
|
if (isString(e)) {
|
|
66
|
-
|
|
67
|
-
event.initCustomEvent(e, bubbles, cancelable, detail);
|
|
68
|
-
e = event;
|
|
65
|
+
e = new CustomEvent(e, { bubbles, cancelable, detail });
|
|
69
66
|
}
|
|
70
67
|
|
|
71
68
|
return e;
|
|
72
69
|
}
|
|
73
70
|
|
|
74
71
|
function getArgs(args) {
|
|
72
|
+
// Event targets
|
|
73
|
+
args[0] = toEventTargets(args[0]);
|
|
74
|
+
|
|
75
|
+
// Event types
|
|
76
|
+
if (isString(args[1])) {
|
|
77
|
+
args[1] = args[1].split(' ');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Delegate?
|
|
75
81
|
if (isFunction(args[2])) {
|
|
76
82
|
args.splice(2, 0, false);
|
|
77
83
|
}
|
|
84
|
+
|
|
78
85
|
return args;
|
|
79
86
|
}
|
|
80
87
|
|
|
81
88
|
function delegate(selector, listener) {
|
|
82
|
-
return e => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
return (e) => {
|
|
90
|
+
const current =
|
|
91
|
+
selector[0] === '>'
|
|
92
|
+
? findAll(selector, e.currentTarget)
|
|
93
|
+
.reverse()
|
|
94
|
+
.filter((element) => within(e.target, element))[0]
|
|
95
|
+
: closest(e.target, selector);
|
|
87
96
|
|
|
88
97
|
if (current) {
|
|
89
98
|
e.current = current;
|
|
90
99
|
listener.call(this, e);
|
|
91
100
|
}
|
|
92
|
-
|
|
93
101
|
};
|
|
94
102
|
}
|
|
95
103
|
|
|
96
104
|
function detail(listener) {
|
|
97
|
-
return e => isArray(e.detail) ? listener(e, ...e.detail) : listener(e);
|
|
105
|
+
return (e) => (isArray(e.detail) ? listener(e, ...e.detail) : listener(e));
|
|
98
106
|
}
|
|
99
107
|
|
|
100
108
|
function selfFilter(listener) {
|
|
@@ -105,12 +113,6 @@ function selfFilter(listener) {
|
|
|
105
113
|
};
|
|
106
114
|
}
|
|
107
115
|
|
|
108
|
-
function useCaptureFilter(options) {
|
|
109
|
-
return options && isIE && !isBoolean(options)
|
|
110
|
-
? !!options.capture
|
|
111
|
-
: options;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
116
|
function isEventTarget(target) {
|
|
115
117
|
return target && 'addEventListener' in target;
|
|
116
118
|
}
|
|
@@ -123,10 +125,10 @@ export function toEventTargets(target) {
|
|
|
123
125
|
return isArray(target)
|
|
124
126
|
? target.map(toEventTarget).filter(Boolean)
|
|
125
127
|
: isString(target)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
? findAll(target)
|
|
129
|
+
: isEventTarget(target)
|
|
130
|
+
? [target]
|
|
131
|
+
: toNodes(target);
|
|
130
132
|
}
|
|
131
133
|
|
|
132
134
|
export function isTouch(e) {
|
|
@@ -134,8 +136,7 @@ export function isTouch(e) {
|
|
|
134
136
|
}
|
|
135
137
|
|
|
136
138
|
export function getEventPos(e) {
|
|
137
|
-
const {
|
|
138
|
-
const {clientX: x, clientY: y} = touches && touches[0] || changedTouches && changedTouches[0] || e;
|
|
139
|
+
const { clientX: x, clientY: y } = e.touches?.[0] || e.changedTouches?.[0] || e;
|
|
139
140
|
|
|
140
|
-
return {x, y};
|
|
141
|
+
return { x, y };
|
|
141
142
|
}
|
package/src/js/util/fastdom.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {Promise} from './promise';
|
|
2
1
|
/*
|
|
3
2
|
Based on:
|
|
4
3
|
Copyright (c) 2016 Wilson Page wilsonpage@me.com
|
|
@@ -6,7 +5,6 @@ import {Promise} from './promise';
|
|
|
6
5
|
*/
|
|
7
6
|
|
|
8
7
|
export const fastdom = {
|
|
9
|
-
|
|
10
8
|
reads: [],
|
|
11
9
|
writes: [],
|
|
12
10
|
|
|
@@ -27,8 +25,7 @@ export const fastdom = {
|
|
|
27
25
|
remove(this.writes, task);
|
|
28
26
|
},
|
|
29
27
|
|
|
30
|
-
flush
|
|
31
|
-
|
|
28
|
+
flush,
|
|
32
29
|
};
|
|
33
30
|
|
|
34
31
|
function flush(recursion) {
|
|
@@ -44,7 +41,6 @@ function flush(recursion) {
|
|
|
44
41
|
|
|
45
42
|
const RECURSION_LIMIT = 4;
|
|
46
43
|
function scheduleFlush(recursion) {
|
|
47
|
-
|
|
48
44
|
if (fastdom.scheduled) {
|
|
49
45
|
return;
|
|
50
46
|
}
|
|
@@ -55,7 +51,6 @@ function scheduleFlush(recursion) {
|
|
|
55
51
|
} else {
|
|
56
52
|
requestAnimationFrame(() => flush(1));
|
|
57
53
|
}
|
|
58
|
-
|
|
59
54
|
}
|
|
60
55
|
|
|
61
56
|
function runTasks(tasks) {
|
package/src/js/util/filter.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {isDocument, isElement, isString, noop, startsWith, toNode, toNodes} from './lang';
|
|
1
|
+
import { isElement, isString, startsWith, toNode, toNodes } from './lang';
|
|
3
2
|
|
|
4
3
|
const voidElements = {
|
|
5
4
|
area: true,
|
|
@@ -17,19 +16,21 @@ const voidElements = {
|
|
|
17
16
|
param: true,
|
|
18
17
|
source: true,
|
|
19
18
|
track: true,
|
|
20
|
-
wbr: true
|
|
19
|
+
wbr: true,
|
|
21
20
|
};
|
|
22
21
|
export function isVoidElement(element) {
|
|
23
|
-
return toNodes(element).some(element => voidElements[element.tagName.toLowerCase()]);
|
|
22
|
+
return toNodes(element).some((element) => voidElements[element.tagName.toLowerCase()]);
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
export function isVisible(element) {
|
|
27
|
-
return toNodes(element).some(
|
|
26
|
+
return toNodes(element).some(
|
|
27
|
+
(element) => element.offsetWidth || element.offsetHeight || element.getClientRects().length
|
|
28
|
+
);
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
export const selInput = 'input,select,textarea,button';
|
|
31
32
|
export function isInput(element) {
|
|
32
|
-
return toNodes(element).some(element => matches(element, selInput));
|
|
33
|
+
return toNodes(element).some((element) => matches(element, selInput));
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
export const selFocusable = `${selInput},a[href],[tabindex]`;
|
|
@@ -43,45 +44,29 @@ export function parent(element) {
|
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
export function filter(element, selector) {
|
|
46
|
-
return toNodes(element).filter(element => matches(element, selector));
|
|
47
|
+
return toNodes(element).filter((element) => matches(element, selector));
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
const elProto = inBrowser ? Element.prototype : {};
|
|
50
|
-
const matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector || noop;
|
|
51
|
-
|
|
52
50
|
export function matches(element, selector) {
|
|
53
|
-
return toNodes(element).some(element =>
|
|
51
|
+
return toNodes(element).some((element) => element.matches(selector));
|
|
54
52
|
}
|
|
55
53
|
|
|
56
|
-
const closestFn = elProto.closest || function (selector) {
|
|
57
|
-
let ancestor = this;
|
|
58
|
-
|
|
59
|
-
do {
|
|
60
|
-
|
|
61
|
-
if (matches(ancestor, selector)) {
|
|
62
|
-
return ancestor;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
} while ((ancestor = parent(ancestor)));
|
|
66
|
-
};
|
|
67
|
-
|
|
68
54
|
export function closest(element, selector) {
|
|
69
|
-
|
|
70
55
|
if (startsWith(selector, '>')) {
|
|
71
56
|
selector = selector.slice(1);
|
|
72
57
|
}
|
|
73
58
|
|
|
74
59
|
return isElement(element)
|
|
75
|
-
?
|
|
76
|
-
: toNodes(element)
|
|
60
|
+
? element.closest(selector)
|
|
61
|
+
: toNodes(element)
|
|
62
|
+
.map((element) => closest(element, selector))
|
|
63
|
+
.filter(Boolean);
|
|
77
64
|
}
|
|
78
65
|
|
|
79
66
|
export function within(element, selector) {
|
|
80
|
-
return
|
|
81
|
-
? element
|
|
82
|
-
|
|
83
|
-
: toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains
|
|
84
|
-
: matches(element, selector) || !!closest(element, selector);
|
|
67
|
+
return isString(selector)
|
|
68
|
+
? matches(element, selector) || !!closest(element, selector)
|
|
69
|
+
: element === selector || toNode(selector).contains(toNode(element));
|
|
85
70
|
}
|
|
86
71
|
|
|
87
72
|
export function parents(element, selector) {
|
|
@@ -103,7 +88,5 @@ export function children(element, selector) {
|
|
|
103
88
|
}
|
|
104
89
|
|
|
105
90
|
export function index(element, ref) {
|
|
106
|
-
return ref
|
|
107
|
-
? toNodes(element).indexOf(toNode(ref))
|
|
108
|
-
: children(parent(element)).indexOf(element);
|
|
91
|
+
return ref ? toNodes(element).indexOf(toNode(ref)) : children(parent(element)).indexOf(element);
|
|
109
92
|
}
|
package/src/js/util/index.js
CHANGED