uikit 3.11.2-dev.9433cd5fd → 3.11.2-dev.946d2efea
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 +46 -29
- 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 +133 -201
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +133 -201
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +135 -207
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +135 -207
- 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 +408 -439
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +1091 -1319
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +1137 -1396
- 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 +347 -361
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +345 -360
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +749 -843
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +345 -360
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +628 -798
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +587 -620
- 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 +156 -167
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +5323 -6536
- 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 +8181 -9810
- 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 +15 -28
- package/src/js/api/global.js +6 -12
- package/src/js/api/hooks.js +14 -33
- package/src/js/api/instance.js +7 -15
- package/src/js/api/state.js +199 -187
- package/src/js/components/countdown.js +26 -52
- package/src/js/components/filter.js +70 -66
- package/src/js/components/index.js +13 -13
- package/src/js/components/internal/lightbox-animations.js +14 -25
- package/src/js/components/internal/slider-preload.js +9 -0
- package/src/js/components/internal/slider-transitioner.js +66 -45
- package/src/js/components/internal/slideshow-animations.js +46 -64
- package/src/js/components/lightbox-panel.js +107 -105
- package/src/js/components/lightbox.js +17 -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 +117 -89
- package/src/js/components/slideshow-parallax.js +1 -1
- package/src/js/components/slideshow.js +15 -13
- package/src/js/components/sortable.js +125 -106
- package/src/js/components/tooltip.js +41 -31
- package/src/js/components/upload.js +53 -63
- package/src/js/core/accordion.js +58 -48
- package/src/js/core/alert.js +9 -17
- package/src/js/core/core.js +17 -69
- package/src/js/core/cover.js +15 -15
- package/src/js/core/drop.js +109 -93
- package/src/js/core/form-custom.js +22 -27
- 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 +30 -34
- package/src/js/core/icon.js +47 -52
- package/src/js/core/img.js +96 -83
- 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 +49 -36
- package/src/js/core/nav.js +2 -4
- package/src/js/core/navbar.js +112 -88
- package/src/js/core/offcanvas.js +51 -54
- 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 +161 -128
- package/src/js/core/svg.js +68 -83
- package/src/js/core/switcher.js +56 -47
- package/src/js/core/tab.js +7 -10
- package/src/js/core/toggle.js +69 -68
- package/src/js/core/video.js +22 -21
- 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 +58 -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/lazyload.js +20 -0
- package/src/js/mixin/media.js +5 -10
- package/src/js/mixin/modal.js +89 -66
- package/src/js/mixin/parallax.js +149 -107
- 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 +47 -60
- package/src/js/mixin/slideshow.js +12 -22
- package/src/js/mixin/swipe.js +72 -0
- package/src/js/mixin/togglable.js +89 -63
- package/src/js/uikit-core.js +2 -4
- package/src/js/uikit.js +2 -4
- package/src/js/util/ajax.js +25 -40
- package/src/js/util/animation.js +77 -75
- package/src/js/util/attr.js +17 -21
- package/src/js/util/class.js +14 -52
- package/src/js/util/dimensions.js +58 -45
- package/src/js/util/dom.js +39 -66
- 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 +1 -1
- package/src/js/util/lang.js +82 -121
- package/src/js/util/mouse.js +19 -17
- package/src/js/util/observer.js +36 -0
- package/src/js/util/options.js +32 -46
- package/src/js/util/player.js +41 -36
- package/src/js/util/position.js +54 -46
- package/src/js/util/selector.js +43 -58
- package/src/js/util/style.js +39 -49
- package/src/js/util/viewport.js +75 -64
- package/src/less/components/base.less +10 -33
- package/src/less/components/flex.less +0 -9
- package/src/less/components/form-range.less +48 -95
- package/src/less/components/form.less +0 -1
- package/src/less/components/height.less +3 -0
- package/src/less/components/leader.less +0 -1
- package/src/less/components/lightbox.less +0 -1
- package/src/less/components/modal.less +3 -7
- package/src/less/components/navbar.less +0 -7
- package/src/less/components/progress.less +14 -36
- package/src/less/components/slider.less +0 -3
- package/src/less/components/slideshow.less +0 -3
- package/src/less/components/text.less +16 -32
- package/src/less/components/utility.less +25 -0
- package/src/scss/components/base.scss +10 -33
- package/src/scss/components/flex.scss +0 -9
- package/src/scss/components/form-range.scss +48 -95
- package/src/scss/components/form.scss +3 -4
- package/src/scss/components/height.scss +3 -0
- package/src/scss/components/icon.scss +2 -2
- package/src/scss/components/leader.scss +0 -1
- package/src/scss/components/lightbox.scss +0 -1
- package/src/scss/components/modal.scss +3 -7
- package/src/scss/components/navbar.scss +0 -7
- package/src/scss/components/progress.scss +14 -36
- package/src/scss/components/search.scss +1 -1
- package/src/scss/components/slider.scss +0 -3
- package/src/scss/components/slideshow.scss +0 -3
- package/src/scss/components/text.scss +16 -32
- package/src/scss/components/utility.scss +25 -0
- package/src/scss/mixins-theme.scss +1 -1
- package/src/scss/mixins.scss +1 -1
- package/src/scss/variables-theme.scss +9 -9
- package/src/scss/variables.scss +9 -9
- package/tests/align.html +10 -10
- package/tests/animation.html +2 -2
- package/tests/article.html +2 -2
- package/tests/base.html +3 -3
- package/tests/card.html +10 -10
- package/tests/column.html +3 -3
- package/tests/comment.html +9 -9
- package/tests/dotnav.html +3 -3
- package/tests/image.html +296 -48
- package/tests/images/image-type.avif +0 -0
- package/tests/images/image-type.jpeg +0 -0
- package/tests/images/image-type.webp +0 -0
- package/tests/index.html +8 -8
- package/tests/js/index.js +114 -85
- package/tests/lightbox.html +10 -10
- package/tests/marker.html +2 -2
- package/tests/modal.html +8 -9
- package/tests/navbar.html +2 -2
- package/tests/overlay.html +7 -7
- package/tests/parallax.html +16 -7
- package/tests/position.html +12 -12
- package/tests/slidenav.html +12 -12
- package/tests/slider.html +20 -20
- package/tests/sortable.html +1 -1
- package/tests/sticky-parallax.html +56 -71
- package/tests/svg.html +6 -6
- package/tests/table.html +11 -11
- package/tests/thumbnav.html +12 -12
- package/tests/transition.html +30 -30
- package/tests/utility.html +50 -33
- package/tests/video.html +1 -1
- package/tests/width.html +1 -1
- package/src/js/mixin/flex-bug.js +0 -56
- package/src/js/util/promise.js +0 -191
- package/tests/images/animated.gif +0 -0
- package/tests/images/test.avif +0 -0
- package/tests/images/test.webp +0 -0
package/src/js/core/img.js
CHANGED
|
@@ -1,142 +1,157 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
append,
|
|
3
|
+
attr,
|
|
4
|
+
children,
|
|
5
|
+
createEvent,
|
|
6
|
+
css,
|
|
7
|
+
data,
|
|
8
|
+
escape,
|
|
9
|
+
fragment,
|
|
10
|
+
hasAttr,
|
|
11
|
+
hasIntersectionObserver,
|
|
12
|
+
includes,
|
|
13
|
+
isArray,
|
|
14
|
+
isEmpty,
|
|
15
|
+
isTag,
|
|
16
|
+
observeIntersection,
|
|
17
|
+
parent,
|
|
18
|
+
parseOptions,
|
|
19
|
+
queryAll,
|
|
20
|
+
removeAttr,
|
|
21
|
+
startsWith,
|
|
22
|
+
toFloat,
|
|
23
|
+
toPx,
|
|
24
|
+
trigger,
|
|
25
|
+
} from 'uikit-util';
|
|
26
|
+
|
|
27
|
+
const nativeLazyLoad = 'loading' in HTMLImageElement.prototype;
|
|
2
28
|
|
|
3
29
|
export default {
|
|
4
|
-
|
|
5
30
|
args: 'dataSrc',
|
|
6
31
|
|
|
7
32
|
props: {
|
|
8
33
|
dataSrc: String,
|
|
9
|
-
|
|
34
|
+
sources: String,
|
|
10
35
|
offsetTop: String,
|
|
11
36
|
offsetLeft: String,
|
|
12
|
-
target: String
|
|
37
|
+
target: String,
|
|
38
|
+
loading: String,
|
|
13
39
|
},
|
|
14
40
|
|
|
15
41
|
data: {
|
|
16
42
|
dataSrc: '',
|
|
17
|
-
|
|
43
|
+
sources: false,
|
|
18
44
|
offsetTop: '50vh',
|
|
19
45
|
offsetLeft: '50vw',
|
|
20
|
-
target: false
|
|
46
|
+
target: false,
|
|
47
|
+
loading: 'lazy',
|
|
21
48
|
},
|
|
22
49
|
|
|
23
50
|
computed: {
|
|
24
|
-
|
|
25
51
|
target: {
|
|
26
|
-
|
|
27
|
-
get({target}) {
|
|
52
|
+
get({ target }) {
|
|
28
53
|
return [this.$el, ...queryAll(target, this.$el)];
|
|
29
54
|
},
|
|
30
55
|
|
|
31
56
|
watch() {
|
|
32
|
-
this
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
57
|
+
this.$reset();
|
|
58
|
+
},
|
|
59
|
+
},
|
|
37
60
|
},
|
|
38
61
|
|
|
39
62
|
connected() {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
setSrcAttrs(this.$el, this.dataSrc);
|
|
63
|
+
if (this.loading !== 'lazy' || !hasIntersectionObserver) {
|
|
64
|
+
this.load();
|
|
43
65
|
return;
|
|
44
66
|
}
|
|
45
67
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
68
|
+
if (nativeLazyLoad && isImg(this.$el)) {
|
|
69
|
+
this.$el.loading = 'lazy';
|
|
70
|
+
setSrcAttrs(this.$el);
|
|
71
|
+
|
|
72
|
+
if (this.target.length === 1) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
49
76
|
|
|
77
|
+
ensureSrcAttribute(this.$el);
|
|
78
|
+
|
|
79
|
+
this.registerObserver(
|
|
80
|
+
observeIntersection(
|
|
81
|
+
this.target,
|
|
82
|
+
(entries, observer) => {
|
|
83
|
+
this.load();
|
|
84
|
+
observer.disconnect();
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
rootMargin: `${toPx(this.offsetTop, 'height')}px ${toPx(
|
|
88
|
+
this.offsetLeft,
|
|
89
|
+
'width'
|
|
90
|
+
)}px`,
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
);
|
|
50
94
|
},
|
|
51
95
|
|
|
52
96
|
disconnected() {
|
|
53
|
-
|
|
97
|
+
if (this._data.image) {
|
|
98
|
+
this._data.image.onload = '';
|
|
99
|
+
}
|
|
54
100
|
},
|
|
55
101
|
|
|
56
102
|
update: {
|
|
57
|
-
|
|
58
103
|
write(store) {
|
|
59
104
|
if (!this.observer || isImg(this.$el)) {
|
|
60
105
|
return false;
|
|
61
106
|
}
|
|
107
|
+
|
|
62
108
|
const srcset = data(this.$el, 'data-srcset');
|
|
63
109
|
if (srcset && window.devicePixelRatio !== 1) {
|
|
64
|
-
|
|
65
110
|
const bgSize = css(this.$el, 'backgroundSize');
|
|
66
111
|
if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
|
|
67
112
|
store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
|
|
68
113
|
css(this.$el, 'backgroundSize', `${store.bgSize}px`);
|
|
69
114
|
}
|
|
70
|
-
|
|
71
115
|
}
|
|
72
|
-
|
|
73
116
|
},
|
|
74
117
|
|
|
75
|
-
events: ['resize']
|
|
76
|
-
|
|
118
|
+
events: ['resize'],
|
|
77
119
|
},
|
|
78
120
|
|
|
79
121
|
methods: {
|
|
80
|
-
|
|
81
|
-
load(entries) {
|
|
82
|
-
|
|
83
|
-
// Old chromium based browsers (UC Browser) did not implement `isIntersecting`
|
|
84
|
-
if (!entries.some(entry => isUndefined(entry.isIntersecting) || entry.isIntersecting)) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
122
|
+
load() {
|
|
88
123
|
if (this._data.image) {
|
|
89
124
|
return this._data.image;
|
|
90
125
|
}
|
|
91
126
|
|
|
92
127
|
const image = isImg(this.$el)
|
|
93
128
|
? this.$el
|
|
94
|
-
: getImageFromElement(
|
|
95
|
-
this.$el,
|
|
96
|
-
this.dataSrc,
|
|
97
|
-
this.dataSources
|
|
98
|
-
);
|
|
129
|
+
: getImageFromElement(this.$el, this.dataSrc, this.sources);
|
|
99
130
|
|
|
100
|
-
|
|
131
|
+
removeAttr(image, 'loading');
|
|
101
132
|
setSrcAttrs(this.$el, image.currentSrc);
|
|
102
|
-
|
|
103
|
-
this.observer.disconnect();
|
|
133
|
+
return (this._data.image = image);
|
|
104
134
|
},
|
|
105
|
-
|
|
106
|
-
observe() {
|
|
107
|
-
if (this._connected && !this._data.image) {
|
|
108
|
-
this.target.forEach(el => this.observer.observe(el));
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
135
|
+
},
|
|
114
136
|
};
|
|
115
137
|
|
|
116
138
|
function setSrcAttrs(el, src) {
|
|
117
|
-
|
|
118
139
|
if (isImg(el)) {
|
|
119
|
-
|
|
120
140
|
const parentNode = parent(el);
|
|
121
141
|
const elements = isPicture(parentNode) ? children(parentNode) : [el];
|
|
122
|
-
elements.forEach(el => setSourceProps(el, el));
|
|
123
|
-
src && attr(el, 'src', src);
|
|
124
|
-
|
|
142
|
+
elements.forEach((el) => setSourceProps(el, el));
|
|
125
143
|
} else if (src) {
|
|
126
|
-
|
|
127
144
|
const change = !includes(el.style.backgroundImage, src);
|
|
128
145
|
if (change) {
|
|
129
146
|
css(el, 'backgroundImage', `url(${escape(src)})`);
|
|
130
147
|
trigger(el, createEvent('load', false));
|
|
131
148
|
}
|
|
132
|
-
|
|
133
149
|
}
|
|
134
|
-
|
|
135
150
|
}
|
|
136
151
|
|
|
137
152
|
const srcProps = ['data-src', 'data-srcset', 'sizes'];
|
|
138
153
|
function setSourceProps(sourceEl, targetEl) {
|
|
139
|
-
srcProps.forEach(prop => {
|
|
154
|
+
srcProps.forEach((prop) => {
|
|
140
155
|
const value = data(sourceEl, prop);
|
|
141
156
|
if (value) {
|
|
142
157
|
attr(targetEl, prop.replace(/^(data-)+/, ''), value);
|
|
@@ -145,31 +160,27 @@ function setSourceProps(sourceEl, targetEl) {
|
|
|
145
160
|
}
|
|
146
161
|
|
|
147
162
|
function getImageFromElement(el, src, sources) {
|
|
148
|
-
|
|
149
|
-
if (!src) {
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
163
|
const img = new Image();
|
|
154
164
|
|
|
155
165
|
wrapInPicture(img, sources);
|
|
156
166
|
setSourceProps(el, img);
|
|
157
|
-
img.onload = () =>
|
|
167
|
+
img.onload = () => {
|
|
168
|
+
setSrcAttrs(el, img.currentSrc);
|
|
169
|
+
};
|
|
158
170
|
attr(img, 'src', src);
|
|
159
171
|
return img;
|
|
160
172
|
}
|
|
161
173
|
|
|
162
174
|
function wrapInPicture(img, sources) {
|
|
163
|
-
|
|
164
175
|
sources = parseSources(sources);
|
|
165
176
|
|
|
166
177
|
if (sources.length) {
|
|
167
178
|
const picture = fragment('<picture>');
|
|
168
|
-
|
|
179
|
+
for (const attrs of sources) {
|
|
169
180
|
const source = fragment('<source>');
|
|
170
181
|
attr(source, attrs);
|
|
171
182
|
append(picture, source);
|
|
172
|
-
}
|
|
183
|
+
}
|
|
173
184
|
append(picture, img);
|
|
174
185
|
}
|
|
175
186
|
}
|
|
@@ -193,7 +204,7 @@ function parseSources(sources) {
|
|
|
193
204
|
sources = [sources];
|
|
194
205
|
}
|
|
195
206
|
|
|
196
|
-
return sources.filter(source => !isEmpty(source));
|
|
207
|
+
return sources.filter((source) => !isEmpty(source));
|
|
197
208
|
}
|
|
198
209
|
|
|
199
210
|
const sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
|
|
@@ -217,11 +228,11 @@ const additionRe = /[+-]?(\d+)/g;
|
|
|
217
228
|
function evaluateSize(size) {
|
|
218
229
|
return startsWith(size, 'calc')
|
|
219
230
|
? size
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
231
|
+
.slice(5, -1)
|
|
232
|
+
.replace(sizeRe, (size) => toPx(size))
|
|
233
|
+
.replace(/ /g, '')
|
|
234
|
+
.match(additionRe)
|
|
235
|
+
.reduce((a, b) => a + +b, 0)
|
|
225
236
|
: size;
|
|
226
237
|
}
|
|
227
238
|
|
|
@@ -230,17 +241,19 @@ function getSourceSize(srcset, sizes) {
|
|
|
230
241
|
const srcSize = toPx(sizesToPixel(sizes));
|
|
231
242
|
const descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort((a, b) => a - b);
|
|
232
243
|
|
|
233
|
-
return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
|
|
244
|
+
return descriptors.filter((size) => size >= srcSize)[0] || descriptors.pop() || '';
|
|
234
245
|
}
|
|
235
246
|
|
|
236
|
-
function
|
|
237
|
-
|
|
247
|
+
function ensureSrcAttribute(el) {
|
|
248
|
+
if (isImg(el) && !hasAttr(el, 'src')) {
|
|
249
|
+
attr(el, 'src', 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"></svg>');
|
|
250
|
+
}
|
|
238
251
|
}
|
|
239
252
|
|
|
240
|
-
function
|
|
241
|
-
return
|
|
253
|
+
function isPicture(el) {
|
|
254
|
+
return isTag(el, 'picture');
|
|
242
255
|
}
|
|
243
256
|
|
|
244
|
-
function
|
|
245
|
-
return el
|
|
257
|
+
function isImg(el) {
|
|
258
|
+
return isTag(el, 'img');
|
|
246
259
|
}
|
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
|
}
|