uikit 3.14.4-dev.dbd727038 → 3.14.4-dev.ed37f5c44

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 (75) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/dist/css/uikit-core-rtl.css +51 -52
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +51 -52
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +51 -52
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +51 -52
  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 +4 -5
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +4 -5
  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 +4 -5
  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 +4 -4
  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 +70 -39
  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 +70 -39
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/images/{backgrounds/nav-parent-close.svg → components/nav-parent-icon-large.svg} +0 -0
  44. package/src/images/components/nav-parent-icon.svg +3 -0
  45. package/src/js/core/height-viewport.js +4 -2
  46. package/src/js/core/icon.js +14 -0
  47. package/src/js/core/index.js +1 -0
  48. package/src/js/core/leader.js +2 -2
  49. package/src/js/core/scroll.js +38 -11
  50. package/src/js/mixin/media.js +4 -5
  51. package/src/js/mixin/position.js +3 -4
  52. package/src/js/util/style.js +4 -13
  53. package/src/js/util/viewport.js +2 -4
  54. package/src/less/components/dropdown.less +6 -0
  55. package/src/less/components/leader.less +1 -1
  56. package/src/less/components/nav.less +7 -37
  57. package/src/less/components/navbar.less +7 -0
  58. package/src/less/components/utility.less +10 -2
  59. package/src/less/theme/nav.less +0 -8
  60. package/src/scss/components/dropdown.scss +6 -0
  61. package/src/scss/components/leader.scss +1 -1
  62. package/src/scss/components/nav.scss +7 -26
  63. package/src/scss/components/navbar.scss +7 -0
  64. package/src/scss/components/utility.scss +8 -1
  65. package/src/scss/mixins-theme.scss +2 -14
  66. package/src/scss/mixins.scss +2 -14
  67. package/src/scss/theme/nav.scss +0 -8
  68. package/src/scss/variables-theme.scss +1 -7
  69. package/src/scss/variables.scss +1 -7
  70. package/tests/index.html +2 -2
  71. package/tests/nav.html +8 -8
  72. package/tests/navbar.html +0 -6
  73. package/tests/offcanvas.html +8 -8
  74. package/tests/utility.html +19 -0
  75. package/src/images/backgrounds/nav-parent-open.svg +0 -3
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.dbd727038",
5
+ "version": "3.14.4-dev.ed37f5c44",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -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>
@@ -45,8 +45,11 @@ export default {
45
45
  let minHeight = '';
46
46
  const box = boxModelAdjust(this.$el, 'height', 'content-box');
47
47
 
48
+ const { body, scrollingElement } = document;
48
49
  const [scrollElement] = scrollParents(this.$el, /auto|scroll/);
49
- const { height: viewportHeight } = offsetViewport(scrollElement);
50
+ const { height: viewportHeight } = offsetViewport(
51
+ scrollElement === body ? scrollingElement : scrollElement
52
+ );
50
53
 
51
54
  if (this.expand) {
52
55
  minHeight = Math.max(
@@ -56,7 +59,6 @@ export default {
56
59
  0
57
60
  );
58
61
  } else {
59
- const { body, scrollingElement } = document;
60
62
  const isScrollingElement =
61
63
  scrollingElement === scrollElement || body === scrollElement;
62
64
 
@@ -2,6 +2,8 @@ import SVG from './svg';
2
2
  import closeIcon from '../../images/components/close-icon.svg';
3
3
  import closeLarge from '../../images/components/close-large.svg';
4
4
  import marker from '../../images/components/marker.svg';
5
+ import navParentIcon from '../../images/components/nav-parent-icon.svg';
6
+ import navParentIconLarge from '../../images/components/nav-parent-icon-large.svg';
5
7
  import navbarParentIcon from '../../images/components/navbar-parent-icon.svg';
6
8
  import navbarToggleIcon from '../../images/components/navbar-toggle-icon.svg';
7
9
  import overlayIcon from '../../images/components/overlay-icon.svg';
@@ -20,6 +22,7 @@ import {
20
22
  $,
21
23
  addClass,
22
24
  apply,
25
+ closest,
23
26
  css,
24
27
  each,
25
28
  hasClass,
@@ -36,6 +39,8 @@ const icons = {
36
39
  marker,
37
40
  'close-icon': closeIcon,
38
41
  'close-large': closeLarge,
42
+ 'nav-parent-icon': navParentIcon,
43
+ 'nav-parent-icon-large': navParentIconLarge,
39
44
  'navbar-parent-icon': navbarParentIcon,
40
45
  'navbar-toggle-icon': navbarToggleIcon,
41
46
  'overlay-icon': overlayIcon,
@@ -98,6 +103,15 @@ export const IconComponent = {
98
103
  },
99
104
  };
100
105
 
106
+ export const NavParentIcon = {
107
+ extends: IconComponent,
108
+
109
+ beforeConnect() {
110
+ const icon = this.$props.icon;
111
+ this.icon = closest(this.$el, '.uk-nav-primary') ? `${icon}-large` : icon;
112
+ },
113
+ };
114
+
101
115
  export const Slidenav = {
102
116
  extends: IconComponent,
103
117
 
@@ -29,6 +29,7 @@ export { default as Video } from './video';
29
29
  // Icon components
30
30
  export { Close } from './icon';
31
31
  export { Spinner } from './icon';
32
+ export { NavParentIcon } from './icon';
32
33
  export { Slidenav as SlidenavNext } from './icon';
33
34
  export { Slidenav as SlidenavPrevious } from './icon';
34
35
  export { Search as SearchIcon } from './icon';
@@ -1,6 +1,6 @@
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, css, toggleClass, unwrap, wrapInner } from 'uikit-util';
4
4
  import Resize from '../mixin/resize';
5
5
 
6
6
  export default {
@@ -19,7 +19,7 @@ export default {
19
19
 
20
20
  computed: {
21
21
  fill({ fill }) {
22
- return fill || getCssVar('leader-fill-content');
22
+ return fill || css(this.$el, '--uk-leader-fill-content');
23
23
  },
24
24
  },
25
25
 
@@ -1,4 +1,4 @@
1
- import { $, scrollIntoView, trigger } from 'uikit-util';
1
+ import { $, off, on, scrollIntoView, trigger, within } from 'uikit-util';
2
2
 
3
3
  export default {
4
4
  props: {
@@ -9,6 +9,14 @@ export default {
9
9
  offset: 0,
10
10
  },
11
11
 
12
+ connected() {
13
+ registerClick(this);
14
+ },
15
+
16
+ disconnected() {
17
+ unregisterClick(this);
18
+ },
19
+
12
20
  methods: {
13
21
  async scrollTo(el) {
14
22
  el = (el && $(el)) || document.body;
@@ -19,18 +27,37 @@ export default {
19
27
  }
20
28
  },
21
29
  },
30
+ };
22
31
 
23
- events: {
24
- click(e) {
25
- if (e.defaultPrevented) {
26
- return;
27
- }
32
+ const components = new Set();
33
+ function registerClick(cmp) {
34
+ if (!components.size) {
35
+ on(document, 'click', clickHandler);
36
+ }
28
37
 
29
- e.preventDefault();
30
- this.scrollTo(getTargetElement(this.$el));
31
- },
32
- },
33
- };
38
+ components.add(cmp);
39
+ }
40
+
41
+ function unregisterClick(cmp) {
42
+ components.delete(cmp);
43
+
44
+ if (!components.length) {
45
+ off(document, 'click', clickHandler);
46
+ }
47
+ }
48
+
49
+ function clickHandler(e) {
50
+ if (e.defaultPrevented) {
51
+ return;
52
+ }
53
+
54
+ e.preventDefault();
55
+ for (const component of components) {
56
+ if (within(component.$el, e.target)) {
57
+ component.scrollTo(getTargetElement(component.$el));
58
+ }
59
+ }
60
+ }
34
61
 
35
62
  export function getTargetElement(el) {
36
63
  return document.getElementById(decodeURIComponent(el.hash).substring(1));
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createEvent,
3
- getCssVar,
3
+ css,
4
4
  isNumeric,
5
5
  isString,
6
6
  on,
@@ -19,7 +19,7 @@ export default {
19
19
  },
20
20
 
21
21
  connected() {
22
- const media = toMedia(this.media);
22
+ const media = toMedia(this.media, this.$el);
23
23
  this.matchMedia = true;
24
24
  if (media) {
25
25
  this.mediaObj = window.matchMedia(media);
@@ -40,11 +40,10 @@ export default {
40
40
  },
41
41
  };
42
42
 
43
- function toMedia(value) {
43
+ function toMedia(value, element) {
44
44
  if (isString(value)) {
45
45
  if (startsWith(value, '@')) {
46
- const name = `breakpoint-${value.substr(1)}`;
47
- value = toFloat(getCssVar(name));
46
+ value = toFloat(css(element, `--uk-breakpoint-${value.substr(1)}`));
48
47
  } else if (isNaN(value)) {
49
48
  return value;
50
49
  }
@@ -2,7 +2,6 @@ import {
2
2
  css,
3
3
  dimensions,
4
4
  flipPosition,
5
- getCssVar,
6
5
  includes,
7
6
  isRtl,
8
7
  positionAt,
@@ -77,7 +76,7 @@ export default {
77
76
  getPositionOffset(element) {
78
77
  return (
79
78
  toPx(
80
- this.offset === false ? getCssVar('position-offset', element) : this.offset,
79
+ this.offset === false ? css(element, '--uk-position-offset') : this.offset,
81
80
  this.axis === 'x' ? 'width' : 'height',
82
81
  element
83
82
  ) * (includes(['left', 'top'], this.dir) ? -1 : 1)
@@ -88,14 +87,14 @@ export default {
88
87
  return includes(['center', 'justify', 'stretch'], this.align)
89
88
  ? 0
90
89
  : toPx(
91
- getCssVar('position-shift-offset', element),
90
+ css(element, '--uk-position-shift-offset'),
92
91
  this.axis === 'y' ? 'width' : 'height',
93
92
  element
94
93
  ) * (includes(['left', 'top'], this.align) ? 1 : -1);
95
94
  },
96
95
 
97
96
  getViewportOffset(element) {
98
- return toPx(getCssVar('position-viewport-offset', element));
97
+ return toPx(css(element, '--uk-position-viewport-offset'));
99
98
  },
100
99
  },
101
100
  };
@@ -8,6 +8,7 @@ import {
8
8
  isString,
9
9
  isUndefined,
10
10
  memoize,
11
+ startsWith,
11
12
  toNodes,
12
13
  } from './lang';
13
14
 
@@ -62,18 +63,11 @@ export function css(element, property, value, priority = '') {
62
63
  return elements[0];
63
64
  }
64
65
 
65
- const propertyRe = /^\s*(["'])?(.*?)\1\s*$/;
66
- export function getCssVar(name, element = document.documentElement) {
67
- return css(element, `--uk-${name}`).replace(propertyRe, '$2');
68
- }
69
-
70
66
  // https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty
71
67
  export const propName = memoize((name) => vendorPropName(name));
72
68
 
73
- const cssPrefixes = ['webkit', 'moz'];
74
-
75
69
  function vendorPropName(name) {
76
- if (name[0] === '-') {
70
+ if (startsWith(name, '--')) {
77
71
  return name;
78
72
  }
79
73
 
@@ -85,11 +79,8 @@ function vendorPropName(name) {
85
79
  return name;
86
80
  }
87
81
 
88
- let i = cssPrefixes.length,
89
- prefixedName;
90
-
91
- while (i--) {
92
- prefixedName = `-${cssPrefixes[i]}-${name}`;
82
+ for (const prefix of ['webkit', 'moz']) {
83
+ const prefixedName = `-${prefix}-${name}`;
93
84
  if (prefixedName in style) {
94
85
  return prefixedName;
95
86
  }
@@ -128,12 +128,10 @@ export function scrollParents(element, overflowRe = /auto|scroll|hidden|clip/, s
128
128
  export function offsetViewport(scrollElement) {
129
129
  const window = toWindow(scrollElement);
130
130
  const {
131
- document: { body, documentElement },
131
+ document: { documentElement },
132
132
  } = window;
133
133
  let viewportElement =
134
- scrollElement === scrollingElement(scrollElement) || scrollElement === body
135
- ? window
136
- : scrollElement;
134
+ scrollElement === scrollingElement(scrollElement) ? window : scrollElement;
137
135
 
138
136
  const { visualViewport } = window;
139
137
  if (isWindow(viewportElement) && visualViewport) {
@@ -70,6 +70,12 @@
70
70
  /* Show */
71
71
  .uk-dropdown.uk-open { display: block; }
72
72
 
73
+ /*
74
+ * Remove margin from the last-child
75
+ */
76
+
77
+ .uk-dropdown > :last-child { margin-bottom: 0; }
78
+
73
79
 
74
80
  /* Size modifier
75
81
  ========================================================================== */
@@ -49,7 +49,7 @@
49
49
  * Pass fill character to JS
50
50
  */
51
51
 
52
- :root { --uk-leader-fill-content: '@{leader-fill-content}'; }
52
+ :root { --uk-leader-fill-content: @leader-fill-content; }
53
53
 
54
54
 
55
55
  // Hooks
@@ -3,13 +3,13 @@
3
3
  //
4
4
  // Component: `uk-nav`
5
5
  //
6
- // Sub-objects: `uk-nav-header`
6
+ // Sub-objects: `uk-nav-parent-icon`
7
+ // `uk-nav-header`
7
8
  // `uk-nav-divider`
8
9
  // `uk-nav-subtitle`
9
10
  // `uk-nav-sub`
10
11
  //
11
- // Modifiers: `uk-nav-parent-icon`
12
- // `uk-nav-default`
12
+ // Modifiers: `uk-nav-default`
13
13
  // `uk-nav-primary`
14
14
  // `uk-nav-center`,
15
15
  // `uk-nav-divider`
@@ -33,10 +33,6 @@
33
33
  @nav-sublist-deeper-padding-left: 15px;
34
34
  @nav-sublist-item-padding-vertical: 2px;
35
35
 
36
- @nav-parent-icon-width: (@global-line-height * 1em);
37
- @nav-parent-icon-height: @nav-parent-icon-width;
38
- @nav-parent-icon-color: @global-color;
39
-
40
36
  @nav-header-padding-vertical: @nav-item-padding-vertical;
41
37
  @nav-header-padding-horizontal: @nav-item-padding-horizontal;
42
38
  @nav-header-font-size: @global-small-font-size;
@@ -76,13 +72,10 @@
76
72
  @nav-primary-sublist-item-hover-color: @global-color;
77
73
  @nav-primary-sublist-item-active-color: @global-emphasis-color;
78
74
 
79
- @nav-dividers-margin-top: 0;
75
+ @nav-dividers-margin-top: 5px;
80
76
  @nav-dividers-border-width: @global-border-width;
81
77
  @nav-dividers-border: @global-border;
82
78
 
83
- @internal-nav-parent-close-image: "../../images/backgrounds/nav-parent-close.svg";
84
- @internal-nav-parent-open-image: "../../images/backgrounds/nav-parent-open.svg";
85
-
86
79
 
87
80
  /* ========================================================================
88
81
  Component: Nav
@@ -152,18 +145,9 @@ ul.uk-nav-sub {
152
145
  /* Parent icon modifier
153
146
  ========================================================================== */
154
147
 
155
- .uk-nav-parent-icon > .uk-parent > a::after {
156
- content: "";
157
- width: @nav-parent-icon-width;
158
- height: @nav-parent-icon-height;
159
- margin-left: auto;
160
- .svg-fill(@internal-nav-parent-close-image, "#000", @nav-parent-icon-color);
161
- background-repeat: no-repeat;
162
- background-position: 50% 50%;
163
- .hook-nav-parent-icon();
164
- }
148
+ .uk-nav-parent-icon { margin-left: auto; }
165
149
 
166
- .uk-nav-parent-icon > .uk-parent.uk-open > a::after { .svg-fill(@internal-nav-parent-open-image, "#000", @nav-parent-icon-color); }
150
+ .uk-nav > li > a[aria-expanded="true"] .uk-nav-parent-icon { transform: rotate(180deg); }
167
151
 
168
152
 
169
153
  /* Header
@@ -352,7 +336,7 @@ ul.uk-nav-sub {
352
336
  .uk-nav-center .uk-nav-sub ul { padding-left: 0; }
353
337
 
354
338
  /* Parent icon modifier */
355
- .uk-nav-center.uk-nav-parent-icon > .uk-parent > a::after { margin-left: 0; }
339
+ .uk-nav-center .uk-nav-parent-icon { margin-left: 0; }
356
340
 
357
341
 
358
342
  /* Style modifier
@@ -372,7 +356,6 @@ ul.uk-nav-sub {
372
356
  .hook-nav-misc();
373
357
 
374
358
  .hook-nav-sub() {}
375
- .hook-nav-parent-icon() {}
376
359
  .hook-nav-header() {}
377
360
  .hook-nav-divider() {}
378
361
  .hook-nav-default() {}
@@ -396,7 +379,6 @@ ul.uk-nav-sub {
396
379
  // Inverse
397
380
  // ========================================================================
398
381
 
399
- @inverse-nav-parent-icon-color: @inverse-global-color;
400
382
  @inverse-nav-default-item-color: @inverse-global-muted-color;
401
383
  @inverse-nav-default-item-hover-color: @inverse-global-color;
402
384
  @inverse-nav-default-item-active-color: @inverse-global-emphasis-color;
@@ -419,17 +401,6 @@ ul.uk-nav-sub {
419
401
 
420
402
  .hook-inverse() {
421
403
 
422
- //
423
- // Parent icon modifier
424
- //
425
-
426
- .uk-nav-parent-icon > .uk-parent > a::after {
427
- .svg-fill(@internal-nav-parent-close-image, "#000", @inverse-nav-parent-icon-color);
428
- .hook-inverse-nav-parent-icon();
429
- }
430
-
431
- .uk-nav-parent-icon > .uk-parent.uk-open > a::after { .svg-fill(@internal-nav-parent-open-image, "#000", @inverse-nav-parent-icon-color); }
432
-
433
404
  //
434
405
  // Default
435
406
  //
@@ -511,7 +482,6 @@ ul.uk-nav-sub {
511
482
 
512
483
  }
513
484
 
514
- .hook-inverse-nav-parent-icon() {}
515
485
  .hook-inverse-nav-default-item() {}
516
486
  .hook-inverse-nav-default-item-hover() {}
517
487
  .hook-inverse-nav-default-item-active() {}
@@ -10,6 +10,7 @@
10
10
  // `uk-navbar-center-left`
11
11
  // `uk-navbar-center-right`
12
12
  // `uk-navbar-nav`
13
+ // `uk-navbar-parent-icon`
13
14
  // `uk-navbar-item`
14
15
  // `uk-navbar-toggle`
15
16
  // `uk-navbar-subtitle`
@@ -408,6 +409,12 @@
408
409
  /* Show */
409
410
  .uk-navbar-dropdown.uk-open { display: block; }
410
411
 
412
+ /*
413
+ * Remove margin from the last-child
414
+ */
415
+
416
+ .uk-navbar-dropdown > :last-child { margin-bottom: 0; }
417
+
411
418
  // Color Mode
412
419
  .uk-navbar-dropdown:extend(.uk-light all) when (@navbar-dropdown-color-mode = light) {}
413
420
  .uk-navbar-dropdown:extend(.uk-dark all) when (@navbar-dropdown-color-mode = dark) {}
@@ -147,6 +147,13 @@
147
147
  .uk-overflow-auto > :last-child { margin-bottom: 0; }
148
148
 
149
149
 
150
+ /* Box Sizing
151
+ ========================================================================== */
152
+
153
+ .uk-box-sizing-content { box-sizing: content-box; }
154
+ .uk-box-sizing-border { box-sizing: border-box; }
155
+
156
+
150
157
  /* Resize
151
158
  ========================================================================== */
152
159
 
@@ -413,7 +420,7 @@
413
420
  .hook-logo-hover();
414
421
  }
415
422
 
416
- .uk-logo > :where(img, svg, video) { display: block; }
423
+ .uk-logo :where(img, svg, video) { display: block; }
417
424
 
418
425
  .uk-logo-inverse { display: none; }
419
426
 
@@ -525,7 +532,8 @@
525
532
  .hook-inverse-logo-hover();
526
533
  }
527
534
 
528
- .uk-logo > :not(.uk-logo-inverse):not(:only-of-type) { display: none; }
535
+ .uk-logo > picture:not(:only-of-type) > :not(.uk-logo-inverse),
536
+ .uk-logo > :not(picture):not(.uk-logo-inverse):not(:only-of-type) { display: none; }
529
537
  .uk-logo-inverse { display: block; }
530
538
 
531
539
  }
@@ -18,12 +18,6 @@
18
18
  .hook-nav-sub() {}
19
19
 
20
20
 
21
- // Parent icon modifier
22
- // ========================================================================
23
-
24
- .hook-nav-parent-icon() {}
25
-
26
-
27
21
  // Header
28
22
  // ========================================================================
29
23
 
@@ -87,8 +81,6 @@
87
81
  // Inverse
88
82
  // ========================================================================
89
83
 
90
- .hook-inverse-nav-parent-icon() {}
91
-
92
84
  .hook-inverse-nav-default-item() {}
93
85
  .hook-inverse-nav-default-item-hover() {}
94
86
  .hook-inverse-nav-default-item-active() {}
@@ -70,6 +70,12 @@ $dropdown-nav-sublist-item-hover-color: $global-color !default;
70
70
  /* Show */
71
71
  .uk-dropdown.uk-open { display: block; }
72
72
 
73
+ /*
74
+ * Remove margin from the last-child
75
+ */
76
+
77
+ .uk-dropdown > :last-child { margin-bottom: 0; }
78
+
73
79
 
74
80
  /* Size modifier
75
81
  ========================================================================== */
@@ -49,7 +49,7 @@ $leader-fill-margin-left: $global-small-gutter !default;
49
49
  * Pass fill character to JS
50
50
  */
51
51
 
52
- :root { --uk-leader-fill-content: '#{$leader-fill-content}'; }
52
+ :root { --uk-leader-fill-content: #{$leader-fill-content}; }
53
53
 
54
54
 
55
55
  // Hooks
@@ -3,13 +3,13 @@
3
3
  //
4
4
  // Component: `uk-nav`
5
5
  //
6
- // Sub-objects: `uk-nav-header`
6
+ // Sub-objects: `uk-nav-parent-icon`
7
+ // `uk-nav-header`
7
8
  // `uk-nav-divider`
8
9
  // `uk-nav-subtitle`
9
10
  // `uk-nav-sub`
10
11
  //
11
- // Modifiers: `uk-nav-parent-icon`
12
- // `uk-nav-default`
12
+ // Modifiers: `uk-nav-default`
13
13
  // `uk-nav-primary`
14
14
  // `uk-nav-center`,
15
15
  // `uk-nav-divider`
@@ -33,10 +33,6 @@ $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-width: ($global-line-height * 1em) !default;
37
- $nav-parent-icon-height: $nav-parent-icon-width !default;
38
- $nav-parent-icon-color: $global-color !default;
39
-
40
36
  $nav-header-padding-vertical: $nav-item-padding-vertical !default;
41
37
  $nav-header-padding-horizontal: $nav-item-padding-horizontal !default;
42
38
  $nav-header-font-size: $global-small-font-size !default;
@@ -76,13 +72,10 @@ $nav-primary-sublist-item-color: $global-muted-color !default;
76
72
  $nav-primary-sublist-item-hover-color: $global-color !default;
77
73
  $nav-primary-sublist-item-active-color: $global-emphasis-color !default;
78
74
 
79
- $nav-dividers-margin-top: 0 !default;
75
+ $nav-dividers-margin-top: 5px !default;
80
76
  $nav-dividers-border-width: $global-border-width !default;
81
77
  $nav-dividers-border: $global-border !default;
82
78
 
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
-
86
79
 
87
80
  /* ========================================================================
88
81
  Component: Nav
@@ -152,18 +145,9 @@ ul.uk-nav-sub {
152
145
  /* Parent icon modifier
153
146
  ========================================================================== */
154
147
 
155
- .uk-nav-parent-icon > .uk-parent > a::after {
156
- content: "";
157
- width: $nav-parent-icon-width;
158
- height: $nav-parent-icon-height;
159
- margin-left: auto;
160
- @include svg-fill($internal-nav-parent-close-image, "#000", $nav-parent-icon-color);
161
- background-repeat: no-repeat;
162
- background-position: 50% 50%;
163
- @if(mixin-exists(hook-nav-parent-icon)) {@include hook-nav-parent-icon();}
164
- }
148
+ .uk-nav-parent-icon { margin-left: auto; }
165
149
 
166
- .uk-nav-parent-icon > .uk-parent.uk-open > a::after { @include svg-fill($internal-nav-parent-open-image, "#000", $nav-parent-icon-color); }
150
+ .uk-nav > li > a[aria-expanded="true"] .uk-nav-parent-icon { transform: rotate(180deg); }
167
151
 
168
152
 
169
153
  /* Header
@@ -352,7 +336,7 @@ ul.uk-nav-sub {
352
336
  .uk-nav-center .uk-nav-sub ul { padding-left: 0; }
353
337
 
354
338
  /* Parent icon modifier */
355
- .uk-nav-center.uk-nav-parent-icon > .uk-parent > a::after { margin-left: 0; }
339
+ .uk-nav-center .uk-nav-parent-icon { margin-left: 0; }
356
340
 
357
341
 
358
342
  /* Style modifier
@@ -372,7 +356,6 @@ ul.uk-nav-sub {
372
356
  @if(mixin-exists(hook-nav-misc)) {@include hook-nav-misc();}
373
357
 
374
358
  // @mixin hook-nav-sub(){}
375
- // @mixin hook-nav-parent-icon(){}
376
359
  // @mixin hook-nav-header(){}
377
360
  // @mixin hook-nav-divider(){}
378
361
  // @mixin hook-nav-default(){}
@@ -396,7 +379,6 @@ ul.uk-nav-sub {
396
379
  // Inverse
397
380
  // ========================================================================
398
381
 
399
- $inverse-nav-parent-icon-color: $inverse-global-color !default;
400
382
  $inverse-nav-default-item-color: $inverse-global-muted-color !default;
401
383
  $inverse-nav-default-item-hover-color: $inverse-global-color !default;
402
384
  $inverse-nav-default-item-active-color: $inverse-global-emphasis-color !default;
@@ -419,7 +401,6 @@ $inverse-nav-dividers-border: $inverse-global-border !default
419
401
 
420
402
 
421
403
 
422
- // @mixin hook-inverse-nav-parent-icon(){}
423
404
  // @mixin hook-inverse-nav-default-item(){}
424
405
  // @mixin hook-inverse-nav-default-item-hover(){}
425
406
  // @mixin hook-inverse-nav-default-item-active(){}
@@ -10,6 +10,7 @@
10
10
  // `uk-navbar-center-left`
11
11
  // `uk-navbar-center-right`
12
12
  // `uk-navbar-nav`
13
+ // `uk-navbar-parent-icon`
13
14
  // `uk-navbar-item`
14
15
  // `uk-navbar-toggle`
15
16
  // `uk-navbar-subtitle`
@@ -408,6 +409,12 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
408
409
  /* Show */
409
410
  .uk-navbar-dropdown.uk-open { display: block; }
410
411
 
412
+ /*
413
+ * Remove margin from the last-child
414
+ */
415
+
416
+ .uk-navbar-dropdown > :last-child { margin-bottom: 0; }
417
+
411
418
  // Color Mode
412
419
  @if ( $navbar-dropdown-color-mode == light ) { .uk-navbar-dropdown { @extend .uk-light !optional;} }
413
420
  @if ( $navbar-dropdown-color-mode == dark ) { .uk-navbar-dropdown { @extend .uk-dark !optional;} }