uikit 3.14.3 → 3.14.4-dev.10a07fe5a
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 +22 -0
- package/dist/css/uikit-core-rtl.css +84 -29
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +84 -29
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +90 -44
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +90 -44
- 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 +189 -26
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +189 -26
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +1 -1
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +1 -1
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +1 -1
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +1 -1
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +1 -1
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +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 +135 -34
- 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 +801 -617
- 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 +801 -617
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/core/accordion.js +3 -3
- package/src/js/core/alert.js +1 -1
- package/src/js/core/drop.js +47 -20
- package/src/js/core/height-viewport.js +14 -9
- package/src/js/core/navbar.js +11 -9
- package/src/js/core/offcanvas.js +1 -47
- package/src/js/core/switcher.js +1 -1
- package/src/js/mixin/modal.js +90 -4
- package/src/js/mixin/position.js +44 -13
- package/src/js/mixin/togglable.js +105 -24
- package/src/js/util/animation.js +1 -0
- package/src/js/util/viewport.js +21 -10
- package/src/less/components/drop.less +19 -5
- package/src/less/components/dropdown.less +21 -5
- package/src/less/components/margin.less +13 -14
- package/src/less/components/modal.less +19 -4
- package/src/less/components/nav.less +1 -1
- package/src/less/components/navbar.less +56 -25
- package/src/less/components/offcanvas.less +21 -21
- package/src/less/components/position.less +1 -1
- package/src/less/components/utility.less +0 -1
- package/src/less/theme/dropdown.less +11 -0
- package/src/less/theme/navbar.less +12 -12
- package/src/scss/components/drop.scss +19 -5
- package/src/scss/components/dropdown.scss +21 -5
- package/src/scss/components/margin.scss +13 -14
- package/src/scss/components/modal.scss +19 -4
- package/src/scss/components/nav.scss +1 -1
- package/src/scss/components/navbar.scss +45 -14
- package/src/scss/components/offcanvas.scss +21 -21
- package/src/scss/components/position.scss +1 -1
- package/src/scss/components/utility.scss +0 -1
- package/src/scss/mixins-theme.scss +8 -12
- package/src/scss/mixins.scss +2 -0
- package/src/scss/theme/dropdown.scss +8 -0
- package/src/scss/theme/navbar.scss +9 -0
- package/src/scss/variables-theme.scss +27 -11
- package/src/scss/variables.scss +25 -11
- package/tests/drop.html +151 -2
- package/tests/dropdown.html +228 -13
- package/tests/height-viewport.html +62 -0
- package/tests/navbar.html +325 -18
- package/tests/offcanvas.html +8 -8
- package/tests/sticky-navbar.html +132 -0
|
@@ -5,13 +5,15 @@ import {
|
|
|
5
5
|
css,
|
|
6
6
|
fastdom,
|
|
7
7
|
hasClass,
|
|
8
|
-
height,
|
|
9
8
|
includes,
|
|
10
9
|
isBoolean,
|
|
11
10
|
isFunction,
|
|
12
11
|
isVisible,
|
|
13
12
|
noop,
|
|
13
|
+
offset,
|
|
14
14
|
removeClass,
|
|
15
|
+
scrollParents,
|
|
16
|
+
startsWith,
|
|
15
17
|
toFloat,
|
|
16
18
|
toggleClass,
|
|
17
19
|
toNodes,
|
|
@@ -41,7 +43,7 @@ export default {
|
|
|
41
43
|
|
|
42
44
|
initProps: {
|
|
43
45
|
overflow: '',
|
|
44
|
-
|
|
46
|
+
maxHeight: '',
|
|
45
47
|
paddingTop: '',
|
|
46
48
|
paddingBottom: '',
|
|
47
49
|
marginTop: '',
|
|
@@ -51,7 +53,7 @@ export default {
|
|
|
51
53
|
|
|
52
54
|
hideProps: {
|
|
53
55
|
overflow: 'hidden',
|
|
54
|
-
|
|
56
|
+
maxHeight: 0,
|
|
55
57
|
paddingTop: 0,
|
|
56
58
|
paddingBottom: 0,
|
|
57
59
|
marginTop: 0,
|
|
@@ -66,7 +68,7 @@ export default {
|
|
|
66
68
|
},
|
|
67
69
|
|
|
68
70
|
hasTransition({ animation }) {
|
|
69
|
-
return
|
|
71
|
+
return startsWith(animation[0], 'slide');
|
|
70
72
|
},
|
|
71
73
|
},
|
|
72
74
|
|
|
@@ -81,18 +83,13 @@ export default {
|
|
|
81
83
|
return Promise.reject();
|
|
82
84
|
}
|
|
83
85
|
|
|
84
|
-
if (!animate) {
|
|
85
|
-
Animation.cancel(el);
|
|
86
|
-
Transition.cancel(el);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
86
|
const promise = (
|
|
90
87
|
isFunction(animate)
|
|
91
88
|
? animate
|
|
92
89
|
: animate === false || !this.hasAnimation
|
|
93
|
-
? this
|
|
90
|
+
? toggleInstant(this)
|
|
94
91
|
: this.hasTransition
|
|
95
|
-
?
|
|
92
|
+
? toggleTransition(this)
|
|
96
93
|
: toggleAnimation(this)
|
|
97
94
|
)(el, show);
|
|
98
95
|
|
|
@@ -156,7 +153,25 @@ export default {
|
|
|
156
153
|
},
|
|
157
154
|
};
|
|
158
155
|
|
|
159
|
-
|
|
156
|
+
function toggleInstant({ _toggle }) {
|
|
157
|
+
return (el, show) => {
|
|
158
|
+
Animation.cancel(el);
|
|
159
|
+
Transition.cancel(el);
|
|
160
|
+
return _toggle(el, show);
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function toggleTransition(cmp) {
|
|
165
|
+
switch (cmp.animation[0]) {
|
|
166
|
+
case 'slide-left':
|
|
167
|
+
return slideHorizontal(cmp);
|
|
168
|
+
case 'slide-right':
|
|
169
|
+
return slideHorizontal(cmp, true);
|
|
170
|
+
}
|
|
171
|
+
return slide(cmp);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export function slide({
|
|
160
175
|
isToggled,
|
|
161
176
|
duration,
|
|
162
177
|
velocity,
|
|
@@ -167,11 +182,14 @@ export function toggleHeight({
|
|
|
167
182
|
}) {
|
|
168
183
|
return (el, show) => {
|
|
169
184
|
const inProgress = Transition.inProgress(el);
|
|
170
|
-
const inner =
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
185
|
+
const inner =
|
|
186
|
+
!inProgress && el.hasChildNodes()
|
|
187
|
+
? toFloat(css(el.firstElementChild, 'marginTop')) +
|
|
188
|
+
toFloat(css(el.lastElementChild, 'marginBottom'))
|
|
189
|
+
: 0;
|
|
190
|
+
const currentHeight = isVisible(el) ? toFloat(css(el, 'height')) + inner : 0;
|
|
191
|
+
|
|
192
|
+
const props = inProgress ? css(el, Object.keys(initProps)) : show ? hideProps : initProps;
|
|
175
193
|
|
|
176
194
|
Transition.cancel(el);
|
|
177
195
|
|
|
@@ -179,34 +197,97 @@ export function toggleHeight({
|
|
|
179
197
|
_toggle(el, true);
|
|
180
198
|
}
|
|
181
199
|
|
|
182
|
-
|
|
200
|
+
css(el, 'maxHeight', '');
|
|
183
201
|
|
|
184
202
|
// Update child components first
|
|
185
203
|
fastdom.flush();
|
|
186
204
|
|
|
187
|
-
const endHeight =
|
|
188
|
-
duration = velocity *
|
|
205
|
+
const endHeight = toFloat(css(el, 'height')) + inner;
|
|
206
|
+
duration = velocity * endHeight + duration;
|
|
189
207
|
|
|
190
|
-
|
|
208
|
+
css(el, { ...props, maxHeight: currentHeight });
|
|
191
209
|
|
|
192
210
|
return (
|
|
193
211
|
show
|
|
194
212
|
? Transition.start(
|
|
195
213
|
el,
|
|
196
|
-
{ ...initProps, overflow: 'hidden',
|
|
197
|
-
|
|
214
|
+
{ ...initProps, overflow: 'hidden', maxHeight: endHeight },
|
|
215
|
+
duration * (1 - currentHeight / endHeight),
|
|
198
216
|
transition
|
|
199
217
|
)
|
|
200
218
|
: Transition.start(
|
|
201
219
|
el,
|
|
202
220
|
hideProps,
|
|
203
|
-
|
|
221
|
+
duration * (currentHeight / endHeight),
|
|
204
222
|
transition
|
|
205
223
|
).then(() => _toggle(el, false))
|
|
206
224
|
).then(() => css(el, initProps));
|
|
207
225
|
};
|
|
208
226
|
}
|
|
209
227
|
|
|
228
|
+
function slideHorizontal({ isToggled, duration, velocity, transition, _toggle }, right) {
|
|
229
|
+
return (el, show) => {
|
|
230
|
+
const visible = isVisible(el);
|
|
231
|
+
const marginLeft = toFloat(css(el, 'marginLeft'));
|
|
232
|
+
|
|
233
|
+
Transition.cancel(el);
|
|
234
|
+
|
|
235
|
+
const [scrollElement] = scrollParents(el);
|
|
236
|
+
css(scrollElement, 'overflowX', 'hidden');
|
|
237
|
+
|
|
238
|
+
if (!isToggled(el)) {
|
|
239
|
+
_toggle(el, true);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
const width = toFloat(css(el, 'width'));
|
|
243
|
+
duration = velocity * width + duration;
|
|
244
|
+
|
|
245
|
+
const percent = visible ? ((width + marginLeft * (right ? -1 : 1)) / width) * 100 : 0;
|
|
246
|
+
const offsetEl = offset(el);
|
|
247
|
+
const useClipPath = right
|
|
248
|
+
? offsetEl.right < scrollElement.clientWidth
|
|
249
|
+
: Math.round(offsetEl.left) > 0;
|
|
250
|
+
|
|
251
|
+
css(el, {
|
|
252
|
+
clipPath: useClipPath
|
|
253
|
+
? right
|
|
254
|
+
? `polygon(0 0,${percent}% 0,${percent}% 100%,0 100%)`
|
|
255
|
+
: `polygon(${100 - percent}% 0,100% 0,100% 100%,${100 - percent}% 100%)`
|
|
256
|
+
: '',
|
|
257
|
+
marginLeft: (((100 - percent) * (right ? 1 : -1)) / 100) * width,
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
return (
|
|
261
|
+
show
|
|
262
|
+
? Transition.start(
|
|
263
|
+
el,
|
|
264
|
+
{
|
|
265
|
+
clipPath: useClipPath ? `polygon(0 0,100% 0,100% 100%,0 100%)` : '',
|
|
266
|
+
marginLeft: 0,
|
|
267
|
+
},
|
|
268
|
+
duration * (1 - percent / 100),
|
|
269
|
+
transition
|
|
270
|
+
)
|
|
271
|
+
: Transition.start(
|
|
272
|
+
el,
|
|
273
|
+
{
|
|
274
|
+
clipPath: useClipPath
|
|
275
|
+
? right
|
|
276
|
+
? `polygon(0 0,0 0,0 100%,0 100%)`
|
|
277
|
+
: `polygon(100% 0,100% 0,100% 100%,100% 100%)`
|
|
278
|
+
: '',
|
|
279
|
+
marginLeft: (right ? 1 : -1) * width,
|
|
280
|
+
},
|
|
281
|
+
duration * (percent / 100),
|
|
282
|
+
transition
|
|
283
|
+
).then(() => _toggle(el, false))
|
|
284
|
+
).then(() => {
|
|
285
|
+
css(scrollElement, 'overflowX', '');
|
|
286
|
+
css(el, { clipPath: '', marginLeft: '' });
|
|
287
|
+
});
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
|
|
210
291
|
function toggleAnimation(cmp) {
|
|
211
292
|
return (el, show) => {
|
|
212
293
|
Animation.cancel(el);
|
package/src/js/util/animation.js
CHANGED
|
@@ -5,6 +5,7 @@ import { startsWith, toNodes } from './lang';
|
|
|
5
5
|
import { addClass, hasClass, removeClass, removeClasses } from './class';
|
|
6
6
|
|
|
7
7
|
export function transition(element, props, duration = 400, timing = 'linear') {
|
|
8
|
+
duration = Math.round(duration);
|
|
8
9
|
return Promise.all(
|
|
9
10
|
toNodes(element).map(
|
|
10
11
|
(element) =>
|
package/src/js/util/viewport.js
CHANGED
|
@@ -128,7 +128,7 @@ export function scrolledOver(element, startOffset = 0, endOffset = 0) {
|
|
|
128
128
|
return clamp((scrollTop - start) / (end - start));
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
export function scrollParents(element, overflowRe = /auto|scroll|hidden/, scrollable = false) {
|
|
131
|
+
export function scrollParents(element, overflowRe = /auto|scroll|hidden|clip/, scrollable = false) {
|
|
132
132
|
const scrollEl = scrollingElement(element);
|
|
133
133
|
|
|
134
134
|
let ancestors = parents(element).reverse();
|
|
@@ -151,18 +151,33 @@ export function scrollParents(element, overflowRe = /auto|scroll|hidden/, scroll
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
export function offsetViewport(scrollElement) {
|
|
154
|
-
|
|
154
|
+
const window = toWindow(scrollElement);
|
|
155
|
+
const {
|
|
156
|
+
document: { body, documentElement },
|
|
157
|
+
} = window;
|
|
158
|
+
let viewportElement =
|
|
159
|
+
scrollElement === scrollingElement(scrollElement) || scrollElement === body
|
|
160
|
+
? window
|
|
161
|
+
: scrollElement;
|
|
162
|
+
|
|
163
|
+
const { visualViewport } = window;
|
|
164
|
+
if (isWindow(viewportElement) && visualViewport) {
|
|
165
|
+
let { height, width, scale, pageTop: top, pageLeft: left } = visualViewport;
|
|
166
|
+
height = Math.round(height * scale);
|
|
167
|
+
width = Math.round(width * scale);
|
|
168
|
+
return { height, width, top, left, bottom: top + height, right: left + width };
|
|
169
|
+
}
|
|
155
170
|
|
|
156
171
|
let rect = offset(viewportElement);
|
|
157
172
|
for (let [prop, dir, start, end] of [
|
|
158
173
|
['width', 'x', 'left', 'right'],
|
|
159
174
|
['height', 'y', 'top', 'bottom'],
|
|
160
175
|
]) {
|
|
161
|
-
if (
|
|
162
|
-
rect[start] += toFloat(css(viewportElement, `border${ucfirst(start)}Width`));
|
|
163
|
-
} else {
|
|
176
|
+
if (isWindow(viewportElement)) {
|
|
164
177
|
// iOS 12 returns <body> as scrollingElement
|
|
165
|
-
viewportElement =
|
|
178
|
+
viewportElement = documentElement;
|
|
179
|
+
} else {
|
|
180
|
+
rect[start] += toFloat(css(viewportElement, `border${ucfirst(start)}Width`));
|
|
166
181
|
}
|
|
167
182
|
rect[prop] = rect[dir] = viewportElement[`client${ucfirst(prop)}`];
|
|
168
183
|
rect[end] = rect[prop] + rect[start];
|
|
@@ -173,7 +188,3 @@ export function offsetViewport(scrollElement) {
|
|
|
173
188
|
function scrollingElement(element) {
|
|
174
189
|
return toWindow(element).document.scrollingElement;
|
|
175
190
|
}
|
|
176
|
-
|
|
177
|
-
function getViewport(scrollElement) {
|
|
178
|
-
return scrollElement === scrollingElement(scrollElement) ? window : scrollElement;
|
|
179
|
-
}
|
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
// Component: `uk-drop`
|
|
5
5
|
//
|
|
6
|
-
// Modifiers: `uk-drop-
|
|
7
|
-
// `uk-drop-bottom-*`
|
|
8
|
-
// `uk-drop-left-*`
|
|
9
|
-
// `uk-drop-right-*`
|
|
6
|
+
// Modifiers: `uk-drop-stretch`
|
|
10
7
|
// `uk-drop-stack`
|
|
11
8
|
// `uk-drop-grid`
|
|
12
9
|
//
|
|
@@ -22,6 +19,7 @@
|
|
|
22
19
|
|
|
23
20
|
@drop-z-index: @global-z-index + 20;
|
|
24
21
|
@drop-margin: @global-margin;
|
|
22
|
+
@drop-viewport-margin: 15px;
|
|
25
23
|
@drop-width: 300px;
|
|
26
24
|
|
|
27
25
|
|
|
@@ -42,7 +40,7 @@
|
|
|
42
40
|
position: absolute;
|
|
43
41
|
z-index: @drop-z-index;
|
|
44
42
|
--uk-position-offset: @drop-margin;
|
|
45
|
-
--uk-position-viewport-offset:
|
|
43
|
+
--uk-position-viewport-offset: @drop-viewport-margin;
|
|
46
44
|
/* 3 */
|
|
47
45
|
box-sizing: border-box;
|
|
48
46
|
width: @drop-width;
|
|
@@ -52,6 +50,22 @@
|
|
|
52
50
|
.uk-drop.uk-open { display: block; }
|
|
53
51
|
|
|
54
52
|
|
|
53
|
+
/* Stretch modifier
|
|
54
|
+
========================================================================== */
|
|
55
|
+
|
|
56
|
+
/*
|
|
57
|
+
* 1. Allow scrolling
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
.uk-drop-stretch {
|
|
61
|
+
--uk-position-offset: 0;
|
|
62
|
+
--uk-position-viewport-offset: 0;
|
|
63
|
+
/* 1 */
|
|
64
|
+
overflow-y: auto;
|
|
65
|
+
-webkit-overflow-scrolling: touch;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
55
69
|
/* Grid modifiers
|
|
56
70
|
========================================================================== */
|
|
57
71
|
|
|
@@ -5,10 +5,7 @@
|
|
|
5
5
|
//
|
|
6
6
|
// Adopted: `uk-dropdown-nav`
|
|
7
7
|
//
|
|
8
|
-
// Modifiers: `uk-dropdown-
|
|
9
|
-
// `uk-dropdown-bottom-*`
|
|
10
|
-
// `uk-dropdown-left-*`
|
|
11
|
-
// `uk-dropdown-right-*`
|
|
8
|
+
// Modifiers: `uk-dropdown-stretch`
|
|
12
9
|
// `uk-dropdown-stack`
|
|
13
10
|
// `uk-dropdown-grid`
|
|
14
11
|
//
|
|
@@ -22,6 +19,7 @@
|
|
|
22
19
|
|
|
23
20
|
@dropdown-z-index: @global-z-index + 20;
|
|
24
21
|
@dropdown-margin: @global-small-margin;
|
|
22
|
+
@dropdown-viewport-margin: 15px;
|
|
25
23
|
@dropdown-min-width: 200px;
|
|
26
24
|
@dropdown-padding: 15px;
|
|
27
25
|
@dropdown-background: @global-muted-background;
|
|
@@ -55,7 +53,7 @@
|
|
|
55
53
|
position: absolute;
|
|
56
54
|
z-index: @dropdown-z-index;
|
|
57
55
|
--uk-position-offset: @dropdown-margin;
|
|
58
|
-
--uk-position-viewport-offset:
|
|
56
|
+
--uk-position-viewport-offset: @dropdown-viewport-margin;
|
|
59
57
|
/* 3 */
|
|
60
58
|
box-sizing: border-box;
|
|
61
59
|
min-width: @dropdown-min-width;
|
|
@@ -71,6 +69,23 @@
|
|
|
71
69
|
.uk-dropdown.uk-open { display: block; }
|
|
72
70
|
|
|
73
71
|
|
|
72
|
+
/* Stretch modifier
|
|
73
|
+
========================================================================== */
|
|
74
|
+
|
|
75
|
+
/*
|
|
76
|
+
* 1. Allow scrolling
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
.uk-dropdown-stretch {
|
|
80
|
+
--uk-position-offset: 0;
|
|
81
|
+
--uk-position-viewport-offset: 0;
|
|
82
|
+
/* 1 */
|
|
83
|
+
overflow-y: auto;
|
|
84
|
+
-webkit-overflow-scrolling: touch;
|
|
85
|
+
.hook-dropdown-stretch();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
74
89
|
/* Nav
|
|
75
90
|
* Adopts `uk-nav`
|
|
76
91
|
========================================================================== */
|
|
@@ -145,6 +160,7 @@
|
|
|
145
160
|
.hook-dropdown-misc();
|
|
146
161
|
|
|
147
162
|
.hook-dropdown() {}
|
|
163
|
+
.hook-dropdown-stretch() {}
|
|
148
164
|
.hook-dropdown-nav() {}
|
|
149
165
|
.hook-dropdown-nav-item() {}
|
|
150
166
|
.hook-dropdown-nav-item-hover() {}
|
|
@@ -193,20 +193,20 @@
|
|
|
193
193
|
/* Remove
|
|
194
194
|
========================================================================== */
|
|
195
195
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
196
|
+
.uk-margin-remove { margin: 0 !important; }
|
|
197
|
+
.uk-margin-remove-top { margin-top: 0 !important; }
|
|
198
|
+
.uk-margin-remove-bottom { margin-bottom: 0 !important; }
|
|
199
|
+
.uk-margin-remove-left { margin-left: 0 !important; }
|
|
200
|
+
.uk-margin-remove-right { margin-right: 0 !important; }
|
|
201
|
+
|
|
202
|
+
.uk-margin-remove-vertical {
|
|
203
|
+
margin-top: 0 !important;
|
|
204
|
+
margin-bottom: 0 !important;
|
|
205
|
+
}
|
|
206
206
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
.uk-margin-remove-adjacent + *,
|
|
208
|
+
.uk-margin-remove-first-child > :first-child { margin-top: 0 !important; }
|
|
209
|
+
.uk-margin-remove-last-child > :last-child { margin-bottom: 0 !important; }
|
|
210
210
|
|
|
211
211
|
/* Phone landscape and bigger */
|
|
212
212
|
@media (min-width: @breakpoint-small) {
|
|
@@ -241,7 +241,6 @@
|
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
|
|
244
|
-
|
|
245
244
|
// Hooks
|
|
246
245
|
// ========================================================================
|
|
247
246
|
|
|
@@ -40,15 +40,21 @@
|
|
|
40
40
|
|
|
41
41
|
@modal-container-width: 1200px;
|
|
42
42
|
|
|
43
|
-
@modal-body-padding-horizontal:
|
|
44
|
-
@modal-body-padding-vertical:
|
|
43
|
+
@modal-body-padding-horizontal: 20px;
|
|
44
|
+
@modal-body-padding-vertical: 20px;
|
|
45
|
+
@modal-body-padding-horizontal-s: @global-gutter;
|
|
46
|
+
@modal-body-padding-vertical-s: @global-gutter;
|
|
45
47
|
|
|
46
|
-
@modal-header-padding-horizontal:
|
|
48
|
+
@modal-header-padding-horizontal: 20px;
|
|
47
49
|
@modal-header-padding-vertical: (@modal-header-padding-horizontal / 2);
|
|
50
|
+
@modal-header-padding-horizontal-s: @global-gutter;
|
|
51
|
+
@modal-header-padding-vertical-s: (@modal-header-padding-horizontal-s / 2);
|
|
48
52
|
@modal-header-background: @global-muted-background;
|
|
49
53
|
|
|
50
|
-
@modal-footer-padding-horizontal:
|
|
54
|
+
@modal-footer-padding-horizontal: 20px;
|
|
51
55
|
@modal-footer-padding-vertical: (@modal-footer-padding-horizontal / 2);
|
|
56
|
+
@modal-footer-padding-horizontal-s: @global-gutter;
|
|
57
|
+
@modal-footer-padding-vertical-s: (@modal-footer-padding-horizontal-s / 2);
|
|
52
58
|
@modal-footer-background: @global-muted-background;
|
|
53
59
|
|
|
54
60
|
@modal-title-font-size: @global-xlarge-font-size;
|
|
@@ -228,6 +234,15 @@
|
|
|
228
234
|
.hook-modal-footer();
|
|
229
235
|
}
|
|
230
236
|
|
|
237
|
+
/* Phone landscape and bigger */
|
|
238
|
+
@media (min-width: @breakpoint-small) {
|
|
239
|
+
|
|
240
|
+
.uk-modal-body { padding: @modal-body-padding-vertical-s @modal-body-padding-horizontal-s; }
|
|
241
|
+
.uk-modal-header { padding: @modal-header-padding-vertical-s @modal-header-padding-horizontal-s; }
|
|
242
|
+
.uk-modal-footer { padding: @modal-footer-padding-vertical-s @modal-footer-padding-horizontal-s; }
|
|
243
|
+
|
|
244
|
+
}
|
|
245
|
+
|
|
231
246
|
/*
|
|
232
247
|
* Remove margin from the last-child
|
|
233
248
|
*/
|
|
@@ -37,8 +37,11 @@
|
|
|
37
37
|
// ========================================================================
|
|
38
38
|
|
|
39
39
|
@navbar-background: @global-muted-background;
|
|
40
|
+
@navbar-gap: 0px; // Must have a unit because of `calc`
|
|
40
41
|
@navbar-color-mode: none;
|
|
41
42
|
|
|
43
|
+
@navbar-nav-gap: 0px; // Must have a unit because of `calc`
|
|
44
|
+
|
|
42
45
|
@navbar-nav-item-height: 80px;
|
|
43
46
|
@navbar-nav-item-padding-horizontal: 15px;
|
|
44
47
|
@navbar-nav-item-color: @global-muted-color;
|
|
@@ -48,6 +51,7 @@
|
|
|
48
51
|
@navbar-nav-item-onclick-color: @global-emphasis-color;
|
|
49
52
|
@navbar-nav-item-active-color: @global-emphasis-color;
|
|
50
53
|
|
|
54
|
+
@navbar-item-padding-horizontal: @navbar-nav-item-padding-horizontal;
|
|
51
55
|
@navbar-item-color: @global-color;
|
|
52
56
|
|
|
53
57
|
@navbar-toggle-color: @global-muted-color;
|
|
@@ -56,11 +60,14 @@
|
|
|
56
60
|
@navbar-subtitle-font-size: @global-small-font-size;
|
|
57
61
|
|
|
58
62
|
@navbar-dropdown-z-index: @global-z-index + 20;
|
|
59
|
-
@navbar-dropdown-margin:
|
|
63
|
+
@navbar-dropdown-margin: 0;
|
|
64
|
+
@navbar-dropdown-shift-margin: 0;
|
|
65
|
+
@navbar-dropdown-viewport-margin: 15px;
|
|
60
66
|
@navbar-dropdown-width: 200px;
|
|
61
67
|
@navbar-dropdown-padding: 15px;
|
|
62
68
|
@navbar-dropdown-background: @global-muted-background;
|
|
63
69
|
@navbar-dropdown-color: @global-color;
|
|
70
|
+
@navbar-dropdown-color-mode: none;
|
|
64
71
|
@navbar-dropdown-grid-gutter-horizontal: @global-gutter;
|
|
65
72
|
@navbar-dropdown-grid-gutter-vertical: @navbar-dropdown-grid-gutter-horizontal;
|
|
66
73
|
|
|
@@ -117,16 +124,13 @@
|
|
|
117
124
|
|
|
118
125
|
/*
|
|
119
126
|
* 1. Align navs and items vertically if they have a different height
|
|
120
|
-
* 2. Note: IE 11 requires an extra `div` which affects the center selector
|
|
121
127
|
*/
|
|
122
128
|
|
|
123
129
|
.uk-navbar-left,
|
|
124
130
|
.uk-navbar-right,
|
|
125
|
-
|
|
126
|
-
.uk-navbar-center,
|
|
127
|
-
.uk-navbar-center-left > *,
|
|
128
|
-
.uk-navbar-center-right > * {
|
|
131
|
+
[class*='uk-navbar-center'] {
|
|
129
132
|
display: flex;
|
|
133
|
+
gap: @navbar-gap;
|
|
130
134
|
/* 1 */
|
|
131
135
|
align-items: center;
|
|
132
136
|
}
|
|
@@ -168,8 +172,8 @@
|
|
|
168
172
|
top: 0;
|
|
169
173
|
}
|
|
170
174
|
|
|
171
|
-
.uk-navbar-center-left { right:
|
|
172
|
-
.uk-navbar-center-right { left: 100
|
|
175
|
+
.uk-navbar-center-left { right: ~'calc(100% + @{navbar-gap})'; }
|
|
176
|
+
.uk-navbar-center-right { left: ~'calc(100% + @{navbar-gap})'; }
|
|
173
177
|
|
|
174
178
|
[class*='uk-navbar-center-'] {
|
|
175
179
|
width: max-content;
|
|
@@ -186,6 +190,7 @@
|
|
|
186
190
|
|
|
187
191
|
.uk-navbar-nav {
|
|
188
192
|
display: flex;
|
|
193
|
+
gap: @navbar-nav-gap;
|
|
189
194
|
/* 1 */
|
|
190
195
|
margin: 0;
|
|
191
196
|
padding: 0;
|
|
@@ -267,6 +272,7 @@
|
|
|
267
272
|
========================================================================== */
|
|
268
273
|
|
|
269
274
|
.uk-navbar-item {
|
|
275
|
+
padding: 0 @navbar-item-padding-horizontal;
|
|
270
276
|
color: @navbar-item-color;
|
|
271
277
|
.hook-navbar-item();
|
|
272
278
|
}
|
|
@@ -362,7 +368,8 @@
|
|
|
362
368
|
position: absolute;
|
|
363
369
|
z-index: @navbar-dropdown-z-index;
|
|
364
370
|
--uk-position-offset: @navbar-dropdown-margin;
|
|
365
|
-
--uk-position-
|
|
371
|
+
--uk-position-shift-offset: @navbar-dropdown-shift-margin;
|
|
372
|
+
--uk-position-viewport-offset: @navbar-dropdown-viewport-margin;
|
|
366
373
|
/* 3 */
|
|
367
374
|
box-sizing: border-box;
|
|
368
375
|
width: @navbar-dropdown-width;
|
|
@@ -377,6 +384,10 @@
|
|
|
377
384
|
/* Show */
|
|
378
385
|
.uk-navbar-dropdown.uk-open { display: block; }
|
|
379
386
|
|
|
387
|
+
|
|
388
|
+
.uk-navbar-dropdown:extend(.uk-light all) when (@navbar-dropdown-color-mode = light) {}
|
|
389
|
+
.uk-navbar-dropdown:extend(.uk-dark all) when (@navbar-dropdown-color-mode = dark) {}
|
|
390
|
+
|
|
380
391
|
/*
|
|
381
392
|
* Grid
|
|
382
393
|
* Adopts `uk-grid`
|
|
@@ -401,22 +412,41 @@
|
|
|
401
412
|
.uk-navbar-dropdown-width-4:not(.uk-navbar-dropdown-stack) { width: (@navbar-dropdown-width * 4); }
|
|
402
413
|
.uk-navbar-dropdown-width-5:not(.uk-navbar-dropdown-stack) { width: (@navbar-dropdown-width * 5); }
|
|
403
414
|
|
|
415
|
+
/*
|
|
416
|
+
* Stretch modifier
|
|
417
|
+
* 1. Allow scrolling
|
|
418
|
+
*/
|
|
419
|
+
|
|
420
|
+
.uk-navbar-dropdown-stretch {
|
|
421
|
+
--uk-position-offset: 0;
|
|
422
|
+
--uk-position-shift-offset: 0;
|
|
423
|
+
--uk-position-viewport-offset: 0;
|
|
424
|
+
/* 1 */
|
|
425
|
+
overflow-y: auto;
|
|
426
|
+
-webkit-overflow-scrolling: touch;
|
|
427
|
+
.hook-navbar-dropdown-stretch();
|
|
428
|
+
}
|
|
429
|
+
|
|
404
430
|
/*
|
|
405
431
|
* Dropbar modifier
|
|
406
|
-
* 1.
|
|
407
|
-
* 2.
|
|
408
|
-
* 3.
|
|
432
|
+
* 1. Reset dropdown width to prevent to early shifting
|
|
433
|
+
* 2. Set position
|
|
434
|
+
* 3. Bottom padding for dropbar
|
|
435
|
+
* 4. Horizontal padding
|
|
409
436
|
*/
|
|
410
437
|
|
|
411
438
|
.uk-navbar-dropdown-dropbar {
|
|
412
439
|
/* 1 */
|
|
440
|
+
width: auto;
|
|
441
|
+
/* 2 */
|
|
413
442
|
--uk-position-offset: @navbar-dropdown-dropbar-margin-top;
|
|
414
443
|
--uk-position-viewport-offset: 0;
|
|
415
|
-
/* 2 */
|
|
416
|
-
margin-bottom: @navbar-dropdown-dropbar-margin-bottom;
|
|
417
444
|
/* 3 */
|
|
445
|
+
margin-bottom: @navbar-dropdown-dropbar-margin-bottom;
|
|
446
|
+
/* 4 */
|
|
418
447
|
padding-left: @navbar-dropdown-dropbar-padding-horizontal;
|
|
419
448
|
padding-right: @navbar-dropdown-dropbar-padding-horizontal;
|
|
449
|
+
--uk-position-shift-offset: 0;
|
|
420
450
|
.hook-navbar-dropdown-dropbar();
|
|
421
451
|
}
|
|
422
452
|
|
|
@@ -513,24 +543,25 @@
|
|
|
513
543
|
.hook-navbar-nav-item-onclick() {}
|
|
514
544
|
.hook-navbar-nav-item-active() {}
|
|
515
545
|
.hook-navbar-item() {}
|
|
516
|
-
.hook-navbar-toggle(){}
|
|
517
|
-
.hook-navbar-toggle-hover(){}
|
|
518
|
-
.hook-navbar-toggle-icon(){}
|
|
519
|
-
.hook-navbar-toggle-icon-hover(){}
|
|
546
|
+
.hook-navbar-toggle() {}
|
|
547
|
+
.hook-navbar-toggle-hover() {}
|
|
548
|
+
.hook-navbar-toggle-icon() {}
|
|
549
|
+
.hook-navbar-toggle-icon-hover() {}
|
|
520
550
|
.hook-navbar-subtitle() {}
|
|
521
|
-
.hook-navbar-primary(){}
|
|
522
|
-
.hook-navbar-transparent(){}
|
|
523
|
-
.hook-navbar-sticky(){}
|
|
524
|
-
.hook-navbar-dropdown(){}
|
|
525
|
-
.hook-navbar-dropdown-
|
|
526
|
-
.hook-navbar-dropdown-
|
|
551
|
+
.hook-navbar-primary() {}
|
|
552
|
+
.hook-navbar-transparent() {}
|
|
553
|
+
.hook-navbar-sticky() {}
|
|
554
|
+
.hook-navbar-dropdown() {}
|
|
555
|
+
.hook-navbar-dropdown-stretch() {}
|
|
556
|
+
.hook-navbar-dropdown-dropbar() {}
|
|
557
|
+
.hook-navbar-dropdown-nav() {}
|
|
527
558
|
.hook-navbar-dropdown-nav-item() {}
|
|
528
559
|
.hook-navbar-dropdown-nav-item-hover() {}
|
|
529
560
|
.hook-navbar-dropdown-nav-item-active() {}
|
|
530
561
|
.hook-navbar-dropdown-nav-subtitle() {}
|
|
531
562
|
.hook-navbar-dropdown-nav-header() {}
|
|
532
563
|
.hook-navbar-dropdown-nav-divider() {}
|
|
533
|
-
.hook-navbar-dropbar(){}
|
|
564
|
+
.hook-navbar-dropbar() {}
|
|
534
565
|
.hook-navbar-misc() {}
|
|
535
566
|
|
|
536
567
|
|