uikit 3.14.4-dev.e3664d0d2 → 3.14.4-dev.f2e3be255

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 (61) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/css/uikit-core-rtl.css +41 -14
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +41 -14
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +41 -15
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +41 -15
  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 +1 -1
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +1 -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 +1 -1
  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 +1 -1
  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 +11 -3
  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 +57 -20
  37. package/dist/js/uikit-core.min.js +1 -1
  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 +57 -20
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/images/backgrounds/nav-parent-close.svg +1 -1
  44. package/src/images/backgrounds/nav-parent-open.svg +1 -1
  45. package/src/images/backgrounds/navbar-parent-close.svg +3 -0
  46. package/src/images/backgrounds/navbar-parent-open.svg +3 -0
  47. package/src/js/core/navbar.js +44 -15
  48. package/src/js/mixin/position.js +16 -7
  49. package/src/less/components/dropdown.less +8 -0
  50. package/src/less/components/navbar.less +52 -13
  51. package/src/less/theme/navbar.less +4 -6
  52. package/src/scss/components/dropdown.scss +8 -0
  53. package/src/scss/components/nav.scss +2 -2
  54. package/src/scss/components/navbar.scss +52 -13
  55. package/src/scss/mixins-theme.scss +1 -4
  56. package/src/scss/theme/navbar.scss +3 -2
  57. package/src/scss/variables-theme.scss +16 -6
  58. package/src/scss/variables.scss +16 -5
  59. package/tests/drop.html +66 -16
  60. package/tests/dropdown.html +103 -16
  61. package/tests/navbar.html +281 -49
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.e3664d0d2",
5
+ "version": "3.14.4-dev.f2e3be255",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -1,3 +1,3 @@
1
1
  <svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
2
- <polyline fill="none" stroke="#000" stroke-width="1.1" points="10 1 4 7 10 13" />
2
+ <polyline fill="none" stroke="#000" stroke-width="1.1" points="1 4 7 10 13 4" />
3
3
  </svg>
@@ -1,3 +1,3 @@
1
1
  <svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg">
2
- <polyline fill="none" stroke="#000" stroke-width="1.1" points="1 4 7 10 13 4" />
2
+ <polyline fill="none" stroke="#000" stroke-width="1.1" points="13 10 7 4 1 10" />
3
3
  </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
2
+ <polyline fill="none" stroke="#000" stroke-width="1.1" points="1 3.5 6 8.5 11 3.5"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
2
+ <polyline fill="none" stroke="#000" stroke-width="1.1" points="11 8.5 6 3.5 1 8.5" />
3
+ </svg>
@@ -124,7 +124,6 @@ export default {
124
124
  ...this.$props,
125
125
  boundary: this.boundary,
126
126
  pos: this.pos,
127
- offset: this.dropbar || this.offset,
128
127
  }
129
128
  );
130
129
  },
@@ -285,8 +284,8 @@ export default {
285
284
  return this.dropbar;
286
285
  },
287
286
 
288
- handler(_, { $el, align }) {
289
- if (!hasClass($el, this.clsDrop) || align === 'stretch') {
287
+ handler({ target }) {
288
+ if (!this.isDropbarDrop(target)) {
290
289
  return;
291
290
  }
292
291
 
@@ -294,7 +293,7 @@ export default {
294
293
  after(this.dropbarAnchor || this.$el, this.dropbar);
295
294
  }
296
295
 
297
- addClass($el, `${this.clsDrop}-dropbar`);
296
+ addClass(target, `${this.clsDrop}-dropbar`);
298
297
  },
299
298
  },
300
299
 
@@ -309,22 +308,47 @@ export default {
309
308
  return this.dropbar;
310
309
  },
311
310
 
312
- handler(_, { $el, align }) {
313
- if (!hasClass($el, this.clsDrop) || align === 'stretch') {
311
+ handler({ target }) {
312
+ if (!this.isDropbarDrop(target)) {
314
313
  return;
315
314
  }
316
315
 
317
- this._observer = observeResize($el, () =>
316
+ this._observer = observeResize(target, () =>
318
317
  this.transitionTo(
319
- offset($el).bottom -
318
+ offset(target).bottom -
320
319
  offset(this.dropbar).top +
321
- toFloat(css($el, 'marginBottom')),
322
- $el
320
+ toFloat(css(target, 'marginBottom')),
321
+ target
323
322
  )
324
323
  );
325
324
  },
326
325
  },
327
326
 
327
+ {
328
+ name: 'beforeposition',
329
+
330
+ el() {
331
+ return this.dropContainer;
332
+ },
333
+
334
+ filter() {
335
+ return this.dropbar;
336
+ },
337
+
338
+ handler(e, element, target, options) {
339
+ if (!this.isDropbarDrop(element)) {
340
+ return;
341
+ }
342
+
343
+ const dropbarOffset = offset(this.dropbar);
344
+
345
+ css(element, 'maxWidth', dropbarOffset.width - options.viewportOffset * 2);
346
+
347
+ options.offset[1] = dropbarOffset.top - offset(target).bottom;
348
+ options.viewportOffset += dropbarOffset.left;
349
+ },
350
+ },
351
+
328
352
  {
329
353
  name: 'beforehide',
330
354
 
@@ -336,12 +360,12 @@ export default {
336
360
  return this.dropbar;
337
361
  },
338
362
 
339
- handler(e, { $el }) {
363
+ handler(e) {
340
364
  const active = this.getActive();
341
365
 
342
366
  if (
343
367
  matches(this.dropbar, ':hover') &&
344
- active?.$el === $el &&
368
+ active?.$el === e.target &&
345
369
  !this.toggles.some((el) => active.target !== el && matches(el, ':focus'))
346
370
  ) {
347
371
  e.preventDefault();
@@ -360,8 +384,8 @@ export default {
360
384
  return this.dropbar;
361
385
  },
362
386
 
363
- handler(_, { $el, align }) {
364
- if (!hasClass($el, this.clsDrop) || align === 'stretch') {
387
+ handler({ target }) {
388
+ if (!this.isDropbarDrop(target)) {
365
389
  return;
366
390
  }
367
391
 
@@ -369,7 +393,7 @@ export default {
369
393
 
370
394
  const active = this.getActive();
371
395
 
372
- if (!active || active?.$el === $el) {
396
+ if (!active || active?.$el === target) {
373
397
  this.transitionTo(0);
374
398
  }
375
399
  },
@@ -409,6 +433,11 @@ export default {
409
433
  getDropdown(el) {
410
434
  return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');
411
435
  },
436
+
437
+ isDropbarDrop(el) {
438
+ const drop = this.getDropdown(el);
439
+ return drop && hasClass(el, this.clsDrop) && drop.align !== 'stretch';
440
+ },
412
441
  },
413
442
  };
414
443
 
@@ -8,6 +8,7 @@ import {
8
8
  positionAt,
9
9
  scrollParents,
10
10
  toPx,
11
+ trigger,
11
12
  } from 'uikit-util';
12
13
 
13
14
  export default {
@@ -52,13 +53,21 @@ export default {
52
53
  const elDim = dimensions(element);
53
54
  css(element, { top: -elDim.height, left: -elDim.width });
54
55
 
55
- positionAt(element, target, {
56
- attach,
57
- offset,
58
- boundary,
59
- flip: this.flip,
60
- viewportOffset: this.getViewportOffset(element),
61
- });
56
+ const args = [
57
+ element,
58
+ target,
59
+ {
60
+ attach,
61
+ offset,
62
+ boundary,
63
+ flip: this.flip,
64
+ viewportOffset: this.getViewportOffset(element),
65
+ },
66
+ ];
67
+
68
+ trigger(element, 'beforeposition', args);
69
+
70
+ positionAt(...args);
62
71
 
63
72
  // Restore scroll position
64
73
  scrollElement.scrollTop = scrollTop;
@@ -25,6 +25,8 @@
25
25
  @dropdown-background: @global-muted-background;
26
26
  @dropdown-color: @global-color;
27
27
 
28
+ @dropdown-large-padding: 40px;
29
+
28
30
  @dropdown-nav-item-color: @global-muted-color;
29
31
  @dropdown-nav-item-hover-color: @global-color;
30
32
  @dropdown-nav-subtitle-font-size: @global-small-font-size;
@@ -69,6 +71,12 @@
69
71
  .uk-dropdown.uk-open { display: block; }
70
72
 
71
73
 
74
+ /* Size modifier
75
+ ========================================================================== */
76
+
77
+ .uk-dropdown-large { padding: @dropdown-large-padding; }
78
+
79
+
72
80
  /* Stretch modifier
73
81
  ========================================================================== */
74
82
 
@@ -51,7 +51,11 @@
51
51
  @navbar-nav-item-onclick-color: @global-emphasis-color;
52
52
  @navbar-nav-item-active-color: @global-emphasis-color;
53
53
 
54
- @navbar-item-padding-horizontal: @navbar-nav-item-padding-horizontal;
54
+ @navbar-parent-icon-width: 12px;
55
+ @navbar-parent-icon-height: 12px;
56
+ @navbar-parent-icon-color: @navbar-nav-item-color;
57
+
58
+ @navbar-item-padding-horizontal: 15px;
55
59
  @navbar-item-color: @global-color;
56
60
 
57
61
  @navbar-toggle-color: @global-muted-color;
@@ -71,8 +75,15 @@
71
75
  @navbar-dropdown-grid-gutter-horizontal: @global-gutter;
72
76
  @navbar-dropdown-grid-gutter-vertical: @navbar-dropdown-grid-gutter-horizontal;
73
77
 
74
- @navbar-dropdown-dropbar-margin-top: 0px;
75
- @navbar-dropdown-dropbar-margin-bottom: @navbar-dropdown-dropbar-margin-top;
78
+ @navbar-dropdown-large-padding: 40px;
79
+
80
+ @navbar-dropdown-stretch-padding-top: 15px;
81
+ @navbar-dropdown-stretch-padding-bottom: @navbar-dropdown-stretch-padding-top;
82
+ @navbar-dropdown-stretch-padding-horizontal: 15px;
83
+ @navbar-dropdown-stretch-background: @global-background;
84
+
85
+ @navbar-dropdown-dropbar-padding-top: @navbar-dropdown-padding;
86
+ @navbar-dropdown-dropbar-padding-bottom: @navbar-dropdown-dropbar-padding-top;
76
87
  @navbar-dropdown-dropbar-padding-horizontal: @navbar-nav-item-padding-horizontal;
77
88
 
78
89
  @navbar-dropdown-nav-item-color: @global-muted-color;
@@ -89,6 +100,9 @@
89
100
  @navbar-dropbar-background: @navbar-dropdown-background;
90
101
  @navbar-dropbar-z-index: @global-z-index - 20;
91
102
 
103
+ @internal-navbar-parent-close-image: "../../images/backgrounds/navbar-parent-close.svg";
104
+ @internal-navbar-parent-open-image: "../../images/backgrounds/navbar-parent-open.svg";
105
+
92
106
 
93
107
  /* ========================================================================
94
108
  Component: Navbar
@@ -227,7 +241,6 @@
227
241
  /* 3 */
228
242
  box-sizing: border-box;
229
243
  min-height: @navbar-nav-item-height;
230
- padding: 0 @navbar-nav-item-padding-horizontal;
231
244
  /* 4 */
232
245
  font-size: @navbar-nav-item-font-size;
233
246
  font-family: @navbar-nav-item-font-family;
@@ -240,6 +253,7 @@
240
253
  */
241
254
 
242
255
  .uk-navbar-nav > li > a {
256
+ padding: 0 @navbar-nav-item-padding-horizontal;
243
257
  color: @navbar-nav-item-color;
244
258
  .hook-navbar-nav-item();
245
259
  }
@@ -268,6 +282,24 @@
268
282
  }
269
283
 
270
284
 
285
+ /* Parent icon modifier
286
+ ========================================================================== */
287
+
288
+ .uk-navbar-parent-icon .uk-navbar-nav > .uk-parent > a::after {
289
+ content: "";
290
+ width: @navbar-parent-icon-width;
291
+ height: @navbar-parent-icon-height;
292
+ margin-left: auto;
293
+ .svg-fill(@internal-navbar-parent-close-image, "#000", @navbar-parent-icon-color);
294
+ background-repeat: no-repeat;
295
+ background-position: 50% 50%;
296
+ .hook-nav-parent-icon();
297
+ }
298
+
299
+ .uk-navbar-parent-icon .uk-navbar-nav > .uk-parent:hover > a::after,
300
+ .uk-navbar-parent-icon .uk-navbar-nav > .uk-parent > a[aria-expanded="true"]::after { .svg-fill(@internal-navbar-parent-open-image, "#000", @navbar-parent-icon-color); }
301
+
302
+
271
303
  /* Item
272
304
  ========================================================================== */
273
305
 
@@ -288,6 +320,7 @@
288
320
  ========================================================================== */
289
321
 
290
322
  .uk-navbar-toggle {
323
+ padding: 0 @navbar-item-padding-horizontal;
291
324
  color: @navbar-toggle-color;
292
325
  .hook-navbar-toggle();
293
326
  }
@@ -384,7 +417,7 @@
384
417
  /* Show */
385
418
  .uk-navbar-dropdown.uk-open { display: block; }
386
419
 
387
-
420
+ // Color Mode
388
421
  .uk-navbar-dropdown:extend(.uk-light all) when (@navbar-dropdown-color-mode = light) {}
389
422
  .uk-navbar-dropdown:extend(.uk-dark all) when (@navbar-dropdown-color-mode = dark) {}
390
423
 
@@ -412,9 +445,16 @@
412
445
  .uk-navbar-dropdown-width-4:not(.uk-navbar-dropdown-stack) { width: (@navbar-dropdown-width * 4); }
413
446
  .uk-navbar-dropdown-width-5:not(.uk-navbar-dropdown-stack) { width: (@navbar-dropdown-width * 5); }
414
447
 
448
+ /*
449
+ * Size modifier
450
+ */
451
+
452
+ .uk-navbar-dropdown-large { padding: @navbar-dropdown-large-padding; }
453
+
415
454
  /*
416
455
  * Stretch modifier
417
456
  * 1. Allow scrolling
457
+ * 2. Style
418
458
  */
419
459
 
420
460
  .uk-navbar-dropdown-stretch {
@@ -424,27 +464,26 @@
424
464
  /* 1 */
425
465
  overflow-y: auto;
426
466
  -webkit-overflow-scrolling: touch;
467
+ /* 2 */
468
+ padding: @navbar-dropdown-stretch-padding-top @navbar-dropdown-stretch-padding-horizontal @navbar-dropdown-stretch-padding-bottom @navbar-dropdown-stretch-padding-horizontal;
469
+ background: @navbar-dropdown-stretch-background;
427
470
  .hook-navbar-dropdown-stretch();
428
471
  }
429
472
 
430
473
  /*
431
474
  * Dropbar modifier
432
475
  * 1. Reset dropdown width to prevent to early shifting
433
- * 2. Set position
434
- * 3. Bottom padding for dropbar
435
- * 4. Horizontal padding
476
+ * 2. Reset style
477
+ * 3. Padding
436
478
  */
437
479
 
438
480
  .uk-navbar-dropdown-dropbar {
439
481
  /* 1 */
440
482
  width: auto;
441
483
  /* 2 */
442
- --uk-position-offset: @navbar-dropdown-dropbar-margin-top;
484
+ background: transparent;
443
485
  /* 3 */
444
- margin-bottom: @navbar-dropdown-dropbar-margin-bottom;
445
- /* 4 */
446
- padding-left: @navbar-dropdown-dropbar-padding-horizontal;
447
- padding-right: @navbar-dropdown-dropbar-padding-horizontal;
486
+ padding: @navbar-dropdown-dropbar-padding-top @navbar-dropdown-dropbar-padding-horizontal @navbar-dropdown-dropbar-padding-bottom @navbar-dropdown-dropbar-padding-horizontal;
448
487
  --uk-position-shift-offset: 0;
449
488
  .hook-navbar-dropdown-dropbar();
450
489
  }
@@ -10,10 +10,13 @@
10
10
  @navbar-gap: 30px;
11
11
 
12
12
  @navbar-nav-gap: 30px;
13
+
13
14
  @navbar-nav-item-padding-horizontal: 0;
14
15
 
15
16
  @navbar-nav-item-font-size: @global-small-font-size;
16
17
 
18
+ @navbar-item-padding-horizontal: 0;
19
+
17
20
  @navbar-dropdown-margin: 15px;
18
21
  @navbar-dropdown-padding: 25px;
19
22
  @navbar-dropdown-background: @global-background;
@@ -31,8 +34,6 @@
31
34
 
32
35
  @navbar-dropdown-box-shadow: 0 5px 12px rgba(0,0,0,0.15);
33
36
 
34
- @navbar-dropdown-stretch-background: @global-muted-background;
35
-
36
37
  @navbar-dropbar-box-shadow: 0 5px 7px rgba(0, 0, 0, 0.05);
37
38
 
38
39
  @navbar-dropdown-grid-divider-border-width: @global-border-width;
@@ -106,10 +107,7 @@
106
107
 
107
108
  .hook-navbar-dropdown() { box-shadow: @navbar-dropdown-box-shadow; }
108
109
 
109
- .hook-navbar-dropdown-stretch() {
110
- box-shadow: none;
111
- background: @navbar-dropdown-stretch-background;
112
- }
110
+ .hook-navbar-dropdown-stretch() { box-shadow: none; }
113
111
 
114
112
  .hook-navbar-dropdown-dropbar() { box-shadow: none; }
115
113
 
@@ -25,6 +25,8 @@ $dropdown-padding: 15px !default;
25
25
  $dropdown-background: $global-muted-background !default;
26
26
  $dropdown-color: $global-color !default;
27
27
 
28
+ $dropdown-large-padding: 40px !default;
29
+
28
30
  $dropdown-nav-item-color: $global-muted-color !default;
29
31
  $dropdown-nav-item-hover-color: $global-color !default;
30
32
  $dropdown-nav-subtitle-font-size: $global-small-font-size !default;
@@ -69,6 +71,12 @@ $dropdown-nav-sublist-item-hover-color: $global-color !default;
69
71
  .uk-dropdown.uk-open { display: block; }
70
72
 
71
73
 
74
+ /* Size modifier
75
+ ========================================================================== */
76
+
77
+ .uk-dropdown-large { padding: $dropdown-large-padding; }
78
+
79
+
72
80
  /* Stretch modifier
73
81
  ========================================================================== */
74
82
 
@@ -80,8 +80,8 @@ $nav-dividers-margin-top: 0 !default;
80
80
  $nav-dividers-border-width: $global-border-width !default;
81
81
  $nav-dividers-border: $global-border !default;
82
82
 
83
- $internal-nav-parent-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%2210%201%204%207%2010%2013%22%20%2F%3E%0A%3C%2Fsvg%3E" !default;
84
- $internal-nav-parent-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%221%204%207%2010%2013%204%22%20%2F%3E%0A%3C%2Fsvg%3E" !default;
83
+ $internal-nav-parent-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%221%204%207%2010%2013%204%22%20%2F%3E%0A%3C%2Fsvg%3E" !default;
84
+ $internal-nav-parent-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2214%22%20height%3D%2214%22%20viewBox%3D%220%200%2014%2014%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%2213%2010%207%204%201%2010%22%20%2F%3E%0A%3C%2Fsvg%3E" !default;
85
85
 
86
86
 
87
87
  /* ========================================================================
@@ -51,7 +51,11 @@ $navbar-nav-item-hover-color: $global-color !default;
51
51
  $navbar-nav-item-onclick-color: $global-emphasis-color !default;
52
52
  $navbar-nav-item-active-color: $global-emphasis-color !default;
53
53
 
54
- $navbar-item-padding-horizontal: $navbar-nav-item-padding-horizontal !default;
54
+ $navbar-parent-icon-width: 12px !default;
55
+ $navbar-parent-icon-height: 12px !default;
56
+ $navbar-parent-icon-color: $navbar-nav-item-color !default;
57
+
58
+ $navbar-item-padding-horizontal: 15px !default;
55
59
  $navbar-item-color: $global-color !default;
56
60
 
57
61
  $navbar-toggle-color: $global-muted-color !default;
@@ -71,8 +75,15 @@ $navbar-dropdown-color-mode: none !default;
71
75
  $navbar-dropdown-grid-gutter-horizontal: $global-gutter !default;
72
76
  $navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-horizontal !default;
73
77
 
74
- $navbar-dropdown-dropbar-margin-top: 0px !default;
75
- $navbar-dropdown-dropbar-margin-bottom: $navbar-dropdown-dropbar-margin-top !default;
78
+ $navbar-dropdown-large-padding: 40px !default;
79
+
80
+ $navbar-dropdown-stretch-padding-top: 15px !default;
81
+ $navbar-dropdown-stretch-padding-bottom: $navbar-dropdown-stretch-padding-top !default;
82
+ $navbar-dropdown-stretch-padding-horizontal: 15px !default;
83
+ $navbar-dropdown-stretch-background: $global-background !default;
84
+
85
+ $navbar-dropdown-dropbar-padding-top: $navbar-dropdown-padding !default;
86
+ $navbar-dropdown-dropbar-padding-bottom: $navbar-dropdown-dropbar-padding-top !default;
76
87
  $navbar-dropdown-dropbar-padding-horizontal: $navbar-nav-item-padding-horizontal !default;
77
88
 
78
89
  $navbar-dropdown-nav-item-color: $global-muted-color !default;
@@ -89,6 +100,9 @@ $navbar-dropdown-nav-sublist-item-active-color: $global-emphasis-color !default
89
100
  $navbar-dropbar-background: $navbar-dropdown-background !default;
90
101
  $navbar-dropbar-z-index: $global-z-index - 20 !default;
91
102
 
103
+ $internal-navbar-parent-close-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2012%2012%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%221%203.5%206%208.5%2011%203.5%22%2F%3E%0A%3C%2Fsvg%3E" !default;
104
+ $internal-navbar-parent-open-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2212%22%20height%3D%2212%22%20viewBox%3D%220%200%2012%2012%22%3E%0A%20%20%20%20%3Cpolyline%20fill%3D%22none%22%20stroke%3D%22#000%22%20stroke-width%3D%221.1%22%20points%3D%2211%208.5%206%203.5%201%208.5%22%20%2F%3E%0A%3C%2Fsvg%3E" !default;
105
+
92
106
 
93
107
  /* ========================================================================
94
108
  Component: Navbar
@@ -227,7 +241,6 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
227
241
  /* 3 */
228
242
  box-sizing: border-box;
229
243
  min-height: $navbar-nav-item-height;
230
- padding: 0 $navbar-nav-item-padding-horizontal;
231
244
  /* 4 */
232
245
  font-size: $navbar-nav-item-font-size;
233
246
  font-family: $navbar-nav-item-font-family;
@@ -240,6 +253,7 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
240
253
  */
241
254
 
242
255
  .uk-navbar-nav > li > a {
256
+ padding: 0 $navbar-nav-item-padding-horizontal;
243
257
  color: $navbar-nav-item-color;
244
258
  @if(mixin-exists(hook-navbar-nav-item)) {@include hook-navbar-nav-item();}
245
259
  }
@@ -268,6 +282,24 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
268
282
  }
269
283
 
270
284
 
285
+ /* Parent icon modifier
286
+ ========================================================================== */
287
+
288
+ .uk-navbar-parent-icon .uk-navbar-nav > .uk-parent > a::after {
289
+ content: "";
290
+ width: $navbar-parent-icon-width;
291
+ height: $navbar-parent-icon-height;
292
+ margin-left: auto;
293
+ @include svg-fill($internal-navbar-parent-close-image, "#000", $navbar-parent-icon-color);
294
+ background-repeat: no-repeat;
295
+ background-position: 50% 50%;
296
+ @if(mixin-exists(hook-nav-parent-icon)) {@include hook-nav-parent-icon();}
297
+ }
298
+
299
+ .uk-navbar-parent-icon .uk-navbar-nav > .uk-parent:hover > a::after,
300
+ .uk-navbar-parent-icon .uk-navbar-nav > .uk-parent > a[aria-expanded="true"]::after { @include svg-fill($internal-navbar-parent-open-image, "#000", $navbar-parent-icon-color); }
301
+
302
+
271
303
  /* Item
272
304
  ========================================================================== */
273
305
 
@@ -288,6 +320,7 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
288
320
  ========================================================================== */
289
321
 
290
322
  .uk-navbar-toggle {
323
+ padding: 0 $navbar-item-padding-horizontal;
291
324
  color: $navbar-toggle-color;
292
325
  @if(mixin-exists(hook-navbar-toggle)) {@include hook-navbar-toggle();}
293
326
  }
@@ -384,7 +417,7 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
384
417
  /* Show */
385
418
  .uk-navbar-dropdown.uk-open { display: block; }
386
419
 
387
-
420
+ // Color Mode
388
421
  @if ( $navbar-dropdown-color-mode == light ) { .uk-navbar-dropdown { @extend .uk-light !optional;} }
389
422
  @if ( $navbar-dropdown-color-mode == dark ) { .uk-navbar-dropdown { @extend .uk-dark !optional;} }
390
423
 
@@ -412,9 +445,16 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
412
445
  .uk-navbar-dropdown-width-4:not(.uk-navbar-dropdown-stack) { width: ($navbar-dropdown-width * 4); }
413
446
  .uk-navbar-dropdown-width-5:not(.uk-navbar-dropdown-stack) { width: ($navbar-dropdown-width * 5); }
414
447
 
448
+ /*
449
+ * Size modifier
450
+ */
451
+
452
+ .uk-navbar-dropdown-large { padding: $navbar-dropdown-large-padding; }
453
+
415
454
  /*
416
455
  * Stretch modifier
417
456
  * 1. Allow scrolling
457
+ * 2. Style
418
458
  */
419
459
 
420
460
  .uk-navbar-dropdown-stretch {
@@ -424,27 +464,26 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
424
464
  /* 1 */
425
465
  overflow-y: auto;
426
466
  -webkit-overflow-scrolling: touch;
467
+ /* 2 */
468
+ padding: $navbar-dropdown-stretch-padding-top $navbar-dropdown-stretch-padding-horizontal $navbar-dropdown-stretch-padding-bottom $navbar-dropdown-stretch-padding-horizontal;
469
+ background: $navbar-dropdown-stretch-background;
427
470
  @if(mixin-exists(hook-navbar-dropdown-stretch)) {@include hook-navbar-dropdown-stretch();}
428
471
  }
429
472
 
430
473
  /*
431
474
  * Dropbar modifier
432
475
  * 1. Reset dropdown width to prevent to early shifting
433
- * 2. Set position
434
- * 3. Bottom padding for dropbar
435
- * 4. Horizontal padding
476
+ * 2. Reset style
477
+ * 3. Padding
436
478
  */
437
479
 
438
480
  .uk-navbar-dropdown-dropbar {
439
481
  /* 1 */
440
482
  width: auto;
441
483
  /* 2 */
442
- --uk-position-offset: #{$navbar-dropdown-dropbar-margin-top};
484
+ background: transparent;
443
485
  /* 3 */
444
- margin-bottom: $navbar-dropdown-dropbar-margin-bottom;
445
- /* 4 */
446
- padding-left: $navbar-dropdown-dropbar-padding-horizontal;
447
- padding-right: $navbar-dropdown-dropbar-padding-horizontal;
486
+ padding: $navbar-dropdown-dropbar-padding-top $navbar-dropdown-dropbar-padding-horizontal $navbar-dropdown-dropbar-padding-bottom $navbar-dropdown-dropbar-padding-horizontal;
448
487
  --uk-position-shift-offset: 0;
449
488
  @if(mixin-exists(hook-navbar-dropdown-dropbar)) {@include hook-navbar-dropdown-dropbar();}
450
489
  }
@@ -1754,10 +1754,7 @@
1754
1754
  @mixin hook-navbar-transparent(){}
1755
1755
  @mixin hook-navbar-sticky(){}
1756
1756
  @mixin hook-navbar-dropdown(){ box-shadow: $navbar-dropdown-box-shadow; }
1757
- @mixin hook-navbar-dropdown-stretch(){
1758
- box-shadow: none;
1759
- background: $navbar-dropdown-stretch-background;
1760
- }
1757
+ @mixin hook-navbar-dropdown-stretch(){ box-shadow: none; }
1761
1758
  @mixin hook-navbar-dropdown-dropbar(){ box-shadow: none; }
1762
1759
  @mixin hook-navbar-dropdown-nav(){ font-size: $navbar-dropdown-nav-font-size; }
1763
1760
  @mixin hook-navbar-dropdown-nav-item(){}
@@ -10,10 +10,13 @@
10
10
  $navbar-gap: 30px !default;
11
11
 
12
12
  $navbar-nav-gap: 30px !default;
13
+
13
14
  $navbar-nav-item-padding-horizontal: 0 !default;
14
15
 
15
16
  $navbar-nav-item-font-size: $global-small-font-size !default;
16
17
 
18
+ $navbar-item-padding-horizontal: 0 !default;
19
+
17
20
  $navbar-dropdown-margin: 15px !default;
18
21
  $navbar-dropdown-padding: 25px !default;
19
22
  $navbar-dropdown-background: $global-background !default;
@@ -31,8 +34,6 @@ $navbar-dropdown-nav-font-size: $global-small-font-size !defaul
31
34
 
32
35
  $navbar-dropdown-box-shadow: 0 5px 12px rgba(0,0,0,0.15) !default;
33
36
 
34
- $navbar-dropdown-stretch-background: $global-muted-background !default;
35
-
36
37
  $navbar-dropbar-box-shadow: 0 5px 7px rgba(0, 0, 0, 0.05) !default;
37
38
 
38
39
  $navbar-dropdown-grid-divider-border-width: $global-border-width !default;