uikit 3.14.4-dev.fef7412a0 → 3.15.1-dev.a99898921

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.
Files changed (66) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/css/uikit-core-rtl.css +4 -3
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +4 -3
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +3 -2
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +3 -2
  9. package/dist/css/uikit.min.css +1 -1
  10. package/dist/js/components/countdown.js +1 -1
  11. package/dist/js/components/countdown.min.js +1 -1
  12. package/dist/js/components/filter.js +1 -1
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +3 -1
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +3 -1
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +1 -1
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +1 -1
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +1 -1
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +9 -2
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +1 -1
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +9 -2
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +1 -1
  31. package/dist/js/components/sortable.min.js +1 -1
  32. package/dist/js/components/tooltip.js +3 -1
  33. package/dist/js/components/tooltip.min.js +1 -1
  34. package/dist/js/components/upload.js +1 -1
  35. package/dist/js/components/upload.min.js +1 -1
  36. package/dist/js/uikit-core.js +84 -70
  37. package/dist/js/uikit-core.min.js +2 -2
  38. package/dist/js/uikit-icons.js +1 -1
  39. package/dist/js/uikit-icons.min.js +1 -1
  40. package/dist/js/uikit.js +84 -70
  41. package/dist/js/uikit.min.js +2 -2
  42. package/package.json +1 -1
  43. package/src/js/core/drop.js +2 -2
  44. package/src/js/core/navbar.js +5 -5
  45. package/src/js/core/switcher.js +4 -5
  46. package/src/js/core/toggle.js +1 -2
  47. package/src/js/mixin/lazyload.js +8 -1
  48. package/src/js/mixin/togglable.js +2 -0
  49. package/src/js/util/position.js +61 -55
  50. package/src/less/components/nav.less +3 -1
  51. package/src/less/components/navbar.less +9 -3
  52. package/src/less/theme/navbar.less +4 -0
  53. package/src/scss/components/nav.scss +3 -1
  54. package/src/scss/components/navbar.scss +9 -3
  55. package/src/scss/mixins-theme.scss +2 -0
  56. package/src/scss/mixins.scss +2 -0
  57. package/src/scss/theme/navbar.scss +4 -0
  58. package/src/scss/variables-theme.scss +3 -1
  59. package/src/scss/variables.scss +3 -1
  60. package/tests/flex.html +36 -36
  61. package/tests/grid.html +22 -22
  62. package/tests/height.html +6 -6
  63. package/tests/index.html +3 -3
  64. package/tests/modal.html +2 -2
  65. package/tests/pagination.html +6 -6
  66. package/tests/utility.html +16 -16
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "uikit",
3
3
  "title": "UIkit",
4
4
  "description": "UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.",
5
- "version": "3.14.4-dev.fef7412a0",
5
+ "version": "3.15.1-dev.a99898921",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -277,7 +277,7 @@ export default {
277
277
 
278
278
  (() => {
279
279
  const observer = observeResize(
280
- scrollParents(this.$el).concat(this.targetEl),
280
+ scrollParents(this.$el).concat(this.target),
281
281
  update
282
282
  );
283
283
  return () => observer.disconnect();
@@ -409,7 +409,7 @@ export default {
409
409
  this.$el.hidden = true;
410
410
 
411
411
  const boundary = query(this.boundary, this.$el);
412
- const boundaryOffset = offsetViewport(boundary || window);
412
+ const boundaryOffset = offset(boundary || window);
413
413
  const viewports = this.target.map((target) => offsetViewport(scrollParents(target)[0]));
414
414
  const viewportOffset = this.getViewportOffset(this.$el);
415
415
 
@@ -18,7 +18,6 @@ import {
18
18
  observeResize,
19
19
  offset,
20
20
  once,
21
- parent,
22
21
  parents,
23
22
  query,
24
23
  remove,
@@ -74,7 +73,7 @@ export default {
74
73
  },
75
74
 
76
75
  dropbarAnchor({ dropbarAnchor }, $el) {
77
- return query(dropbarAnchor, $el);
76
+ return query(dropbarAnchor, $el) || $el;
78
77
  },
79
78
 
80
79
  pos({ align }) {
@@ -295,8 +294,8 @@ export default {
295
294
  return;
296
295
  }
297
296
 
298
- if (!parent(this.dropbar)) {
299
- after(this.dropbarAnchor || this.$el, this.dropbar);
297
+ if (this.dropbar.previousElementSibling !== this.dropbarAnchor) {
298
+ after(this.dropbarAnchor, this.dropbar);
300
299
  }
301
300
 
302
301
  addClass(target, `${this.clsDrop}-dropbar`);
@@ -319,7 +318,8 @@ export default {
319
318
  return;
320
319
  }
321
320
 
322
- this._observer = observeResize(target, () => {
321
+ const drop = this.getDropdown(target);
322
+ this._observer = observeResize([drop.$el, ...drop.target], () => {
323
323
  const targetOffsets = parents(target, `.${this.clsDrop}`)
324
324
  .concat(target)
325
325
  .map((el) => offset(el));
@@ -52,9 +52,10 @@ export default {
52
52
  }
53
53
 
54
54
  const index = this.index();
55
- this.connects.forEach((el) =>
56
- children(el).forEach((child, i) => toggleClass(child, this.cls, i === index))
57
- );
55
+ this.connects.forEach((el) => {
56
+ children(el).forEach((child, i) => toggleClass(child, this.cls, i === index));
57
+ this.lazyload(this.$el, children(el));
58
+ });
58
59
  },
59
60
 
60
61
  immediate: true,
@@ -87,8 +88,6 @@ export default {
87
88
  },
88
89
 
89
90
  connected() {
90
- this.lazyload(this.$el, this.connects);
91
-
92
91
  // check for connects
93
92
  ready(() => this.$emit());
94
93
  },
@@ -51,6 +51,7 @@ export default {
51
51
 
52
52
  watch() {
53
53
  this.updateAria();
54
+ this.lazyload(this.$el, this.target);
54
55
  },
55
56
 
56
57
  immediate: true,
@@ -62,8 +63,6 @@ export default {
62
63
  attr(this.$el, 'tabindex', '0');
63
64
  }
64
65
 
65
- this.lazyload(this.$el, this.target);
66
-
67
66
  // check for target
68
67
  ready(() => this.$emit());
69
68
  },
@@ -1,13 +1,20 @@
1
1
  import { $$, isFunction, observeIntersection, removeAttr, toNodes } from 'uikit-util';
2
2
 
3
3
  export default {
4
+ data: {
5
+ preload: 5,
6
+ },
7
+
4
8
  methods: {
5
9
  lazyload(observeTargets = this.$el, targets = this.$el) {
6
10
  this.registerObserver(
7
11
  observeIntersection(observeTargets, (entries, observer) => {
8
12
  for (const el of toNodes(isFunction(targets) ? targets() : targets)) {
9
- $$('[loading="lazy"]', el).forEach((el) => removeAttr(el, 'loading'));
13
+ $$('[loading="lazy"]', el)
14
+ .slice(0, this.preload - 1)
15
+ .forEach((el) => removeAttr(el, 'loading'));
10
16
  }
17
+
11
18
  for (const el of entries
12
19
  .filter(({ isIntersecting }) => isIntersecting)
13
20
  .map(({ target }) => target)) {
@@ -209,6 +209,8 @@ export function toggleTransition(cmp) {
209
209
  css(el, {
210
210
  padding: 0,
211
211
  border: 0,
212
+ minWidth: 0,
213
+ minHeight: 0,
212
214
  [marginStartProp]: 0,
213
215
  width: dim.width,
214
216
  height: dim.height,
@@ -28,35 +28,13 @@ export function positionAt(element, target, options) {
28
28
 
29
29
  function getPosition(element, target, options) {
30
30
  const position = attachTo(element, target, options);
31
-
32
- let {
33
- attach: { element: elAttach, target: targetAttach },
34
- offset: elOffset,
35
- boundary,
36
- viewportOffset,
37
- placement,
38
- } = options;
31
+ const { boundary, viewportOffset = 0, placement } = options;
39
32
 
40
33
  let offsetPosition = position;
41
34
  for (const [i, [prop, , start, end]] of Object.entries(dirs)) {
42
- let viewports = scrollParents(target[i]);
43
- const [scrollElement] = viewports;
44
-
45
- let viewport = getIntersectionArea(...viewports.map(offsetViewport));
46
-
47
- if (viewportOffset) {
48
- viewport[start] += viewportOffset;
49
- viewport[end] -= viewportOffset;
50
- }
51
-
52
- if (boundary) {
53
- viewport = getIntersectionArea(viewport, offsetViewport(boundary));
54
- }
55
-
56
- const isInStartViewport = position[start] >= viewport[start];
57
- const isInEndViewport = position[end] <= viewport[end];
35
+ const viewport = getViewport(target[i], viewportOffset, boundary, i);
58
36
 
59
- if (isInStartViewport && isInEndViewport) {
37
+ if (isWithin(position, viewport, i)) {
60
38
  continue;
61
39
  }
62
40
 
@@ -64,17 +42,20 @@ function getPosition(element, target, options) {
64
42
 
65
43
  // Flip
66
44
  if (placement[i] === 'flip') {
45
+ const attach = options.attach.target[i];
67
46
  if (
68
- (targetAttach[i] === end && isInEndViewport) ||
69
- (targetAttach[i] === start && isInStartViewport)
47
+ (attach === end && position[end] <= viewport[end]) ||
48
+ (attach === start && position[start] >= viewport[start])
70
49
  ) {
71
50
  continue;
72
51
  }
73
52
 
74
53
  offsetBy = flip(element, target, options, i)[start] - position[start];
75
54
 
76
- if (!isInScrollArea(applyOffset(position, offsetBy, i), scrollElement, i)) {
77
- if (isInScrollArea(position, scrollElement, i)) {
55
+ const scrollArea = getScrollArea(target[i], viewportOffset, i);
56
+
57
+ if (!isWithin(applyOffset(position, offsetBy, i), scrollArea, i)) {
58
+ if (isWithin(position, scrollArea, i)) {
78
59
  continue;
79
60
  }
80
61
 
@@ -82,18 +63,9 @@ function getPosition(element, target, options) {
82
63
  return false;
83
64
  }
84
65
 
85
- const newPos = getPosition(element, target, {
86
- ...options,
87
- attach: {
88
- element: elAttach.map(flipAxis).reverse(),
89
- target: targetAttach.map(flipAxis).reverse(),
90
- },
91
- offset: elOffset.reverse(),
92
- placement: placement.reverse(),
93
- recursion: true,
94
- });
95
-
96
- if (newPos && isInScrollArea(newPos, scrollElement, 1 - i)) {
66
+ const newPos = flipAxis(element, target, options);
67
+
68
+ if (newPos && isWithin(newPos, scrollArea, 1 - i)) {
97
69
  return newPos;
98
70
  }
99
71
 
@@ -103,6 +75,7 @@ function getPosition(element, target, options) {
103
75
  // Shift
104
76
  } else if (placement[i] === 'shift') {
105
77
  const targetDim = offset(target[i]);
78
+ const { offset: elOffset } = options;
106
79
  offsetBy =
107
80
  clamp(
108
81
  clamp(position[start], viewport[start], viewport[end] - position[prop]),
@@ -159,6 +132,30 @@ function moveBy(attach, end, dim) {
159
132
  return attach === 'center' ? dim / 2 : attach === end ? dim : 0;
160
133
  }
161
134
 
135
+ function getViewport(element, viewportOffset, boundary, i) {
136
+ let viewport = getIntersectionArea(...scrollParents(element).map(offsetViewport));
137
+
138
+ if (viewportOffset) {
139
+ viewport[dirs[i][2]] += viewportOffset;
140
+ viewport[dirs[i][3]] -= viewportOffset;
141
+ }
142
+
143
+ if (boundary) {
144
+ viewport = getIntersectionArea(viewport, offset(boundary));
145
+ }
146
+
147
+ return viewport;
148
+ }
149
+
150
+ function getScrollArea(element, viewportOffset, i) {
151
+ const [prop, , start, end] = dirs[i];
152
+ const [scrollElement] = scrollParents(element);
153
+ const viewport = offsetViewport(scrollElement);
154
+ viewport[start] -= scrollElement[`scroll${ucfirst(start)}`] - viewportOffset;
155
+ viewport[end] = viewport[start] + scrollElement[`scroll${ucfirst(prop)}`] - viewportOffset;
156
+ return viewport;
157
+ }
158
+
162
159
  function getIntersectionArea(...rects) {
163
160
  let area = {};
164
161
  for (const rect of rects) {
@@ -170,13 +167,9 @@ function getIntersectionArea(...rects) {
170
167
  return area;
171
168
  }
172
169
 
173
- function isInScrollArea(position, scrollElement, dir) {
174
- const viewport = offsetViewport(scrollElement, false);
175
- const [prop, , start, end] = dirs[dir];
176
- viewport[start] -= scrollElement[`scroll${ucfirst(start)}`];
177
- viewport[end] = viewport[start] + scrollElement[`scroll${ucfirst(prop)}`];
178
-
179
- return position[start] >= viewport[start] && position[end] <= viewport[end];
170
+ function isWithin(positionA, positionB, i) {
171
+ const [, , start, end] = dirs[i];
172
+ return positionA[start] >= positionB[start] && positionA[end] <= positionB[end];
180
173
  }
181
174
 
182
175
  function flip(element, target, { offset, attach }, i) {
@@ -189,6 +182,19 @@ function flip(element, target, { offset, attach }, i) {
189
182
  });
190
183
  }
191
184
 
185
+ function flipAxis(element, target, options) {
186
+ return getPosition(element, target, {
187
+ ...options,
188
+ attach: {
189
+ element: options.attach.element.map(flipAttachAxis).reverse(),
190
+ target: options.attach.target.map(flipAttachAxis).reverse(),
191
+ },
192
+ offset: options.offset.reverse(),
193
+ placement: options.placement.reverse(),
194
+ recursion: true,
195
+ });
196
+ }
197
+
192
198
  function flipAttach(attach, i) {
193
199
  const newAttach = [...attach];
194
200
  const index = dirs[i].indexOf(attach[i]);
@@ -198,13 +204,7 @@ function flipAttach(attach, i) {
198
204
  return newAttach;
199
205
  }
200
206
 
201
- function flipOffset(offset, i) {
202
- offset = [...offset];
203
- offset[i] *= -1;
204
- return offset;
205
- }
206
-
207
- function flipAxis(prop) {
207
+ function flipAttachAxis(prop) {
208
208
  for (let i = 0; i < dirs.length; i++) {
209
209
  const index = dirs[i].indexOf(prop);
210
210
  if (~index) {
@@ -212,3 +212,9 @@ function flipAxis(prop) {
212
212
  }
213
213
  }
214
214
  }
215
+
216
+ function flipOffset(offset, i) {
217
+ offset = [...offset];
218
+ offset[i] *= -1;
219
+ return offset;
220
+ }
@@ -33,6 +33,8 @@
33
33
  @nav-sublist-deeper-padding-left: 15px;
34
34
  @nav-sublist-item-padding-vertical: 2px;
35
35
 
36
+ @nav-parent-icon-margin-left: 4px;
37
+
36
38
  @nav-header-padding-vertical: @nav-item-padding-vertical;
37
39
  @nav-header-padding-horizontal: @nav-item-padding-horizontal;
38
40
  @nav-header-font-size: @global-small-font-size;
@@ -441,7 +443,7 @@ ul.uk-nav-sub {
441
443
  .uk-nav-center .uk-nav-sub ul { padding-left: 0; }
442
444
 
443
445
  /* Parent icon */
444
- .uk-nav-center .uk-nav-parent-icon { margin-left: 0; }
446
+ .uk-nav-center .uk-nav-parent-icon { margin-left: @nav-parent-icon-margin-left; }
445
447
 
446
448
 
447
449
  /* Style modifier
@@ -77,13 +77,14 @@
77
77
  @navbar-dropdown-large-shift-margin: 0;
78
78
  @navbar-dropdown-large-padding: 40px;
79
79
 
80
+ @navbar-dropdown-dropbar-shift-margin: 0;
80
81
  @navbar-dropdown-dropbar-padding-top: @navbar-dropdown-padding;
81
82
  @navbar-dropdown-dropbar-padding-bottom: @navbar-dropdown-dropbar-padding-top;
82
- @navbar-dropdown-dropbar-padding-horizontal: @navbar-nav-item-padding-horizontal;
83
83
  @navbar-dropdown-dropbar-viewport-margin: 15px;
84
84
  @navbar-dropdown-dropbar-viewport-margin-s: @global-gutter;
85
85
  @navbar-dropdown-dropbar-viewport-margin-m: @global-medium-gutter;
86
86
 
87
+ @navbar-dropdown-dropbar-large-shift-margin: 0;
87
88
  @navbar-dropdown-dropbar-large-padding-top: @navbar-dropdown-large-padding;
88
89
  @navbar-dropdown-dropbar-large-padding-bottom: @navbar-dropdown-dropbar-large-padding-top;
89
90
 
@@ -444,6 +445,7 @@
444
445
  .uk-navbar-dropdown-large {
445
446
  --uk-position-shift-offset: @navbar-dropdown-large-shift-margin;
446
447
  padding: @navbar-dropdown-large-padding;
448
+ .hook-navbar-dropdown-large();
447
449
  }
448
450
 
449
451
  /*
@@ -459,9 +461,9 @@
459
461
  /* 2 */
460
462
  background: transparent;
461
463
  /* 3 */
462
- padding: @navbar-dropdown-dropbar-padding-top @navbar-dropdown-dropbar-padding-horizontal @navbar-dropdown-dropbar-padding-bottom @navbar-dropdown-dropbar-padding-horizontal;
464
+ padding: @navbar-dropdown-dropbar-padding-top 0 @navbar-dropdown-dropbar-padding-bottom 0;
463
465
  --uk-position-offset: 0;
464
- --uk-position-shift-offset: 0;
466
+ --uk-position-shift-offset: @navbar-dropdown-dropbar-shift-margin;
465
467
  --uk-position-viewport-offset: @navbar-dropdown-dropbar-viewport-margin;
466
468
  .hook-navbar-dropdown-dropbar();
467
469
  }
@@ -481,8 +483,10 @@
481
483
  }
482
484
 
483
485
  .uk-navbar-dropdown-dropbar-large {
486
+ --uk-position-shift-offset: @navbar-dropdown-dropbar-large-shift-margin;
484
487
  padding-top: @navbar-dropdown-dropbar-large-padding-top;
485
488
  padding-bottom: @navbar-dropdown-dropbar-large-padding-bottom;
489
+ .hook-navbar-dropdown-dropbar-large();
486
490
  }
487
491
 
488
492
 
@@ -594,7 +598,9 @@
594
598
  .hook-navbar-transparent() {}
595
599
  .hook-navbar-sticky() {}
596
600
  .hook-navbar-dropdown() {}
601
+ .hook-navbar-dropdown-large() {}
597
602
  .hook-navbar-dropdown-dropbar() {}
603
+ .hook-navbar-dropdown-dropbar-large() {}
598
604
  .hook-navbar-dropdown-nav() {}
599
605
  .hook-navbar-dropdown-nav-item() {}
600
606
  .hook-navbar-dropdown-nav-item-hover() {}
@@ -101,8 +101,12 @@
101
101
 
102
102
  .hook-navbar-dropdown() { box-shadow: @navbar-dropdown-box-shadow; }
103
103
 
104
+ .hook-navbar-dropdown-large() {}
105
+
104
106
  .hook-navbar-dropdown-dropbar() { box-shadow: none; }
105
107
 
108
+ .hook-navbar-dropdown-dropbar-large() {}
109
+
106
110
 
107
111
  // Dropdown nav
108
112
  // ========================================================================
@@ -33,6 +33,8 @@ $nav-sublist-padding-left: 15px !default;
33
33
  $nav-sublist-deeper-padding-left: 15px !default;
34
34
  $nav-sublist-item-padding-vertical: 2px !default;
35
35
 
36
+ $nav-parent-icon-margin-left: 4px !default;
37
+
36
38
  $nav-header-padding-vertical: $nav-item-padding-vertical !default;
37
39
  $nav-header-padding-horizontal: $nav-item-padding-horizontal !default;
38
40
  $nav-header-font-size: $global-small-font-size !default;
@@ -441,7 +443,7 @@ ul.uk-nav-sub {
441
443
  .uk-nav-center .uk-nav-sub ul { padding-left: 0; }
442
444
 
443
445
  /* Parent icon */
444
- .uk-nav-center .uk-nav-parent-icon { margin-left: 0; }
446
+ .uk-nav-center .uk-nav-parent-icon { margin-left: $nav-parent-icon-margin-left; }
445
447
 
446
448
 
447
449
  /* Style modifier
@@ -77,13 +77,14 @@ $navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-ho
77
77
  $navbar-dropdown-large-shift-margin: 0 !default;
78
78
  $navbar-dropdown-large-padding: 40px !default;
79
79
 
80
+ $navbar-dropdown-dropbar-shift-margin: 0 !default;
80
81
  $navbar-dropdown-dropbar-padding-top: $navbar-dropdown-padding !default;
81
82
  $navbar-dropdown-dropbar-padding-bottom: $navbar-dropdown-dropbar-padding-top !default;
82
- $navbar-dropdown-dropbar-padding-horizontal: $navbar-nav-item-padding-horizontal !default;
83
83
  $navbar-dropdown-dropbar-viewport-margin: 15px !default;
84
84
  $navbar-dropdown-dropbar-viewport-margin-s: $global-gutter !default;
85
85
  $navbar-dropdown-dropbar-viewport-margin-m: $global-medium-gutter !default;
86
86
 
87
+ $navbar-dropdown-dropbar-large-shift-margin: 0 !default;
87
88
  $navbar-dropdown-dropbar-large-padding-top: $navbar-dropdown-large-padding !default;
88
89
  $navbar-dropdown-dropbar-large-padding-bottom: $navbar-dropdown-dropbar-large-padding-top !default;
89
90
 
@@ -444,6 +445,7 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
444
445
  .uk-navbar-dropdown-large {
445
446
  --uk-position-shift-offset: #{$navbar-dropdown-large-shift-margin};
446
447
  padding: $navbar-dropdown-large-padding;
448
+ @if(mixin-exists(hook-navbar-dropdown-large)) {@include hook-navbar-dropdown-large();}
447
449
  }
448
450
 
449
451
  /*
@@ -459,9 +461,9 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
459
461
  /* 2 */
460
462
  background: transparent;
461
463
  /* 3 */
462
- padding: $navbar-dropdown-dropbar-padding-top $navbar-dropdown-dropbar-padding-horizontal $navbar-dropdown-dropbar-padding-bottom $navbar-dropdown-dropbar-padding-horizontal;
464
+ padding: $navbar-dropdown-dropbar-padding-top 0 $navbar-dropdown-dropbar-padding-bottom 0;
463
465
  --uk-position-offset: 0;
464
- --uk-position-shift-offset: 0;
466
+ --uk-position-shift-offset: #{$navbar-dropdown-dropbar-shift-margin};
465
467
  --uk-position-viewport-offset: #{$navbar-dropdown-dropbar-viewport-margin};
466
468
  @if(mixin-exists(hook-navbar-dropdown-dropbar)) {@include hook-navbar-dropdown-dropbar();}
467
469
  }
@@ -481,8 +483,10 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
481
483
  }
482
484
 
483
485
  .uk-navbar-dropdown-dropbar-large {
486
+ --uk-position-shift-offset: #{$navbar-dropdown-dropbar-large-shift-margin};
484
487
  padding-top: $navbar-dropdown-dropbar-large-padding-top;
485
488
  padding-bottom: $navbar-dropdown-dropbar-large-padding-bottom;
489
+ @if(mixin-exists(hook-navbar-dropdown-dropbar-large)) {@include hook-navbar-dropdown-dropbar-large();}
486
490
  }
487
491
 
488
492
 
@@ -594,7 +598,9 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
594
598
  // @mixin hook-navbar-transparent(){}
595
599
  // @mixin hook-navbar-sticky(){}
596
600
  // @mixin hook-navbar-dropdown(){}
601
+ // @mixin hook-navbar-dropdown-large(){}
597
602
  // @mixin hook-navbar-dropdown-dropbar(){}
603
+ // @mixin hook-navbar-dropdown-dropbar-large(){}
598
604
  // @mixin hook-navbar-dropdown-nav(){}
599
605
  // @mixin hook-navbar-dropdown-nav-item(){}
600
606
  // @mixin hook-navbar-dropdown-nav-item-hover(){}
@@ -1826,7 +1826,9 @@
1826
1826
  @mixin hook-navbar-transparent(){}
1827
1827
  @mixin hook-navbar-sticky(){}
1828
1828
  @mixin hook-navbar-dropdown(){ box-shadow: $navbar-dropdown-box-shadow; }
1829
+ @mixin hook-navbar-dropdown-large(){}
1829
1830
  @mixin hook-navbar-dropdown-dropbar(){ box-shadow: none; }
1831
+ @mixin hook-navbar-dropdown-dropbar-large(){}
1830
1832
  @mixin hook-navbar-dropdown-nav(){ font-size: $navbar-dropdown-nav-font-size; }
1831
1833
  @mixin hook-navbar-dropdown-nav-item(){}
1832
1834
  @mixin hook-navbar-dropdown-nav-item-hover(){}
@@ -1550,7 +1550,9 @@
1550
1550
  @mixin hook-navbar-transparent(){}
1551
1551
  @mixin hook-navbar-sticky(){}
1552
1552
  @mixin hook-navbar-dropdown(){}
1553
+ @mixin hook-navbar-dropdown-large(){}
1553
1554
  @mixin hook-navbar-dropdown-dropbar(){}
1555
+ @mixin hook-navbar-dropdown-dropbar-large(){}
1554
1556
  @mixin hook-navbar-dropdown-nav(){}
1555
1557
  @mixin hook-navbar-dropdown-nav-item(){}
1556
1558
  @mixin hook-navbar-dropdown-nav-item-hover(){}
@@ -97,9 +97,13 @@ $navbar-dropdown-box-shadow: 0 5px 12px rgba(0,0,0,0.15) !de
97
97
 
98
98
 
99
99
 
100
+ // @mixin hook-navbar-dropdown-large(){}
100
101
 
101
102
 
102
103
 
104
+ // @mixin hook-navbar-dropdown-dropbar-large(){}
105
+
106
+
103
107
  // Dropdown nav
104
108
  // ========================================================================
105
109
 
@@ -694,6 +694,7 @@ $nav-sublist-padding-vertical: 5px !default;
694
694
  $nav-sublist-padding-left: 15px !default;
695
695
  $nav-sublist-deeper-padding-left: 15px !default;
696
696
  $nav-sublist-item-padding-vertical: 2px !default;
697
+ $nav-parent-icon-margin-left: 4px !default;
697
698
  $nav-header-padding-vertical: $nav-item-padding-vertical !default;
698
699
  $nav-header-padding-horizontal: $nav-item-padding-horizontal !default;
699
700
  $nav-header-font-size: $global-small-font-size !default;
@@ -808,12 +809,13 @@ $navbar-dropdown-grid-gutter-horizontal: $global-gutter !default;
808
809
  $navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default;
809
810
  $navbar-dropdown-large-shift-margin: 0 !default;
810
811
  $navbar-dropdown-large-padding: 40px !default;
812
+ $navbar-dropdown-dropbar-shift-margin: 0 !default;
811
813
  $navbar-dropdown-dropbar-padding-top: $navbar-dropdown-padding !default;
812
814
  $navbar-dropdown-dropbar-padding-bottom: $navbar-dropdown-dropbar-padding-top !default;
813
- $navbar-dropdown-dropbar-padding-horizontal: $navbar-nav-item-padding-horizontal !default;
814
815
  $navbar-dropdown-dropbar-viewport-margin: 15px !default;
815
816
  $navbar-dropdown-dropbar-viewport-margin-s: $global-gutter !default;
816
817
  $navbar-dropdown-dropbar-viewport-margin-m: $global-medium-gutter !default;
818
+ $navbar-dropdown-dropbar-large-shift-margin: 0 !default;
817
819
  $navbar-dropdown-dropbar-large-padding-top: $navbar-dropdown-large-padding !default;
818
820
  $navbar-dropdown-dropbar-large-padding-bottom: $navbar-dropdown-dropbar-large-padding-top !default;
819
821
  $navbar-dropdown-nav-item-color: $global-muted-color !default;
@@ -692,6 +692,7 @@ $nav-sublist-padding-vertical: 5px !default;
692
692
  $nav-sublist-padding-left: 15px !default;
693
693
  $nav-sublist-deeper-padding-left: 15px !default;
694
694
  $nav-sublist-item-padding-vertical: 2px !default;
695
+ $nav-parent-icon-margin-left: 4px !default;
695
696
  $nav-header-padding-vertical: $nav-item-padding-vertical !default;
696
697
  $nav-header-padding-horizontal: $nav-item-padding-horizontal !default;
697
698
  $nav-header-font-size: $global-small-font-size !default;
@@ -806,12 +807,13 @@ $navbar-dropdown-grid-gutter-horizontal: $global-gutter !default;
806
807
  $navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default;
807
808
  $navbar-dropdown-large-shift-margin: 0 !default;
808
809
  $navbar-dropdown-large-padding: 40px !default;
810
+ $navbar-dropdown-dropbar-shift-margin: 0 !default;
809
811
  $navbar-dropdown-dropbar-padding-top: $navbar-dropdown-padding !default;
810
812
  $navbar-dropdown-dropbar-padding-bottom: $navbar-dropdown-dropbar-padding-top !default;
811
- $navbar-dropdown-dropbar-padding-horizontal: $navbar-nav-item-padding-horizontal !default;
812
813
  $navbar-dropdown-dropbar-viewport-margin: 15px !default;
813
814
  $navbar-dropdown-dropbar-viewport-margin-s: $global-gutter !default;
814
815
  $navbar-dropdown-dropbar-viewport-margin-m: $global-medium-gutter !default;
816
+ $navbar-dropdown-dropbar-large-shift-margin: 0 !default;
815
817
  $navbar-dropdown-dropbar-large-padding-top: $navbar-dropdown-large-padding !default;
816
818
  $navbar-dropdown-dropbar-large-padding-bottom: $navbar-dropdown-dropbar-large-padding-top !default;
817
819
  $navbar-dropdown-nav-item-color: $global-muted-color !default;