uikit 3.13.8-dev.2fb6bed58 → 3.13.8-dev.7605e7963

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 (65) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/dist/css/uikit-core-rtl.css +34 -5
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +34 -5
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +34 -3
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +34 -3
  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 +41 -49
  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 +16 -53
  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 +52 -56
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +5 -5
  43. package/src/js/components/tooltip.js +38 -3
  44. package/src/js/core/drop.js +6 -5
  45. package/src/js/mixin/position.js +4 -43
  46. package/src/js/util/position.js +4 -1
  47. package/src/less/components/dropdown.less +11 -1
  48. package/src/less/components/nav.less +22 -0
  49. package/src/less/components/navbar.less +22 -2
  50. package/src/less/theme/dropdown.less +2 -0
  51. package/src/less/theme/nav.less +4 -0
  52. package/src/less/theme/navbar.less +2 -0
  53. package/src/scss/components/dropdown.scss +11 -1
  54. package/src/scss/components/nav.scss +22 -0
  55. package/src/scss/components/navbar.scss +22 -2
  56. package/src/scss/mixins-theme.scss +4 -0
  57. package/src/scss/mixins.scss +4 -0
  58. package/src/scss/theme/dropdown.scss +2 -0
  59. package/src/scss/theme/nav.scss +4 -0
  60. package/src/scss/theme/navbar.scss +2 -0
  61. package/src/scss/variables-theme.scss +5 -1
  62. package/src/scss/variables.scss +5 -1
  63. package/tests/dropdown.html +16 -2
  64. package/tests/nav.html +27 -0
  65. package/tests/navbar.html +18 -4
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.13.8-dev.2fb6bed58",
5
+ "version": "3.13.8-dev.7605e7963",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -41,9 +41,9 @@
41
41
  "@rollup/plugin-replace": "^4.0.0",
42
42
  "archiver": "^5.3.0",
43
43
  "camelcase": "^6.3.0",
44
- "clean-css": "^5.2.4",
44
+ "clean-css": "^5.3.0",
45
45
  "dateformat": "^5.0.3",
46
- "esbuild": "^0.14.28",
46
+ "esbuild": "^0.14.32",
47
47
  "eslint": "^8.12.0",
48
48
  "eslint-config-prettier": "^8.5.0",
49
49
  "fs-extra": "^10.0.1",
@@ -53,9 +53,9 @@
53
53
  "minimist": "^1.2.6",
54
54
  "number-precision": "^1.5.2",
55
55
  "p-limit": "^4.0.0",
56
- "prettier": "^2.6.1",
56
+ "prettier": "^2.6.2",
57
57
  "rollup": "^2.70.1",
58
- "rollup-plugin-esbuild": "^4.8.2",
58
+ "rollup-plugin-esbuild": "^4.9.1",
59
59
  "rollup-plugin-html": "^0.2.1",
60
60
  "rollup-plugin-modify": "^3.0.0",
61
61
  "rtlcss": "^3.5.0",
@@ -6,9 +6,11 @@ import {
6
6
  attr,
7
7
  flipPosition,
8
8
  hasAttr,
9
+ includes,
9
10
  isFocusable,
10
11
  isTouch,
11
12
  matches,
13
+ offset,
12
14
  on,
13
15
  once,
14
16
  pointerDown,
@@ -104,10 +106,12 @@ export default {
104
106
 
105
107
  this.positionAt(this.tooltip, this.$el);
106
108
 
109
+ const [dir, align] = getAlignment(this.tooltip, this.$el, this.pos);
110
+
107
111
  this.origin =
108
- this.getAxis() === 'y'
109
- ? `${flipPosition(this.dir)}-${this.align}`
110
- : `${this.align}-${flipPosition(this.dir)}`;
112
+ this.axis === 'y'
113
+ ? `${flipPosition(dir)}-${align}`
114
+ : `${align}-${flipPosition(dir)}`;
111
115
  });
112
116
 
113
117
  this.toggleElement(this.tooltip, true);
@@ -143,3 +147,34 @@ function makeFocusable(el) {
143
147
  attr(el, 'tabindex', '0');
144
148
  }
145
149
  }
150
+
151
+ function getAlignment(el, target, [dir, align]) {
152
+ const elOffset = offset(el);
153
+ const targetOffset = offset(target);
154
+ const properties = [
155
+ ['left', 'right'],
156
+ ['top', 'bottom'],
157
+ ];
158
+
159
+ for (const props of properties) {
160
+ if (elOffset[props[0]] >= targetOffset[props[1]]) {
161
+ dir = props[1];
162
+ break;
163
+ }
164
+ if (elOffset[props[1]] <= targetOffset[props[0]]) {
165
+ dir = props[0];
166
+ break;
167
+ }
168
+ }
169
+
170
+ const props = includes(properties[0], dir) ? properties[1] : properties[0];
171
+ if (elOffset[props[0]] === targetOffset[props[0]]) {
172
+ align = props[0];
173
+ } else if (elOffset[props[1]] === targetOffset[props[1]]) {
174
+ align = props[1];
175
+ } else {
176
+ align = 'center';
177
+ }
178
+
179
+ return [dir, align];
180
+ }
@@ -362,17 +362,18 @@ export default {
362
362
  const boundaryOffset = offset(boundary);
363
363
  const targetOffset = offset(this.target);
364
364
  const alignTo = this.boundaryAlign ? boundaryOffset : targetOffset;
365
+ const prop = this.axis === 'y' ? 'width' : 'height';
366
+
367
+ css(this.$el, `max-${prop}`, '');
365
368
 
366
369
  if (this.pos[1] === 'justify') {
367
- const prop = this.getAxis() === 'y' ? 'width' : 'height';
368
370
  css(this.$el, prop, alignTo[prop]);
369
- } else if (
370
- this.$el.offsetWidth >
371
- Math.max(boundaryOffset.right - alignTo.left, alignTo.right - boundaryOffset.left)
372
- ) {
371
+ } else if (this.$el.offsetWidth > boundaryOffset.width) {
373
372
  addClass(this.$el, `${this.clsDrop}-stack`);
374
373
  }
375
374
 
375
+ css(this.$el, `max-${prop}`, boundaryOffset[prop]);
376
+
376
377
  this.positionAt(this.$el, this.boundaryAlign ? boundary : this.target, boundary);
377
378
  },
378
379
  },
@@ -25,21 +25,19 @@ export default {
25
25
 
26
26
  connected() {
27
27
  this.pos = this.$props.pos.split('-').concat('center').slice(0, 2);
28
- this.dir = this.pos[0];
29
- this.align = this.pos[1];
28
+ this.axis = includes(['top', 'bottom'], this.pos[0]) ? 'y' : 'x';
30
29
  },
31
30
 
32
31
  methods: {
33
32
  positionAt(element, target, boundary) {
34
33
  const [dir, align] = this.pos;
35
- const axis = this.getAxis(dir);
36
34
 
37
35
  let { offset } = this;
38
36
  if (!isNumeric(offset)) {
39
37
  const node = $(offset);
40
38
  offset = node
41
- ? getOffset(node)[axis === 'x' ? 'left' : 'top'] -
42
- getOffset(target)[axis === 'x' ? 'right' : 'bottom']
39
+ ? getOffset(node)[this.axis === 'x' ? 'left' : 'top'] -
40
+ getOffset(target)[this.axis === 'x' ? 'right' : 'bottom']
43
41
  : 0;
44
42
  }
45
43
  offset = toPx(offset) + toPx(getCssVar('position-offset', element));
@@ -50,7 +48,7 @@ export default {
50
48
  target: [dir, align],
51
49
  };
52
50
 
53
- if (axis === 'y') {
51
+ if (this.axis === 'y') {
54
52
  for (const prop in attach) {
55
53
  attach[prop] = attach[prop].reverse();
56
54
  }
@@ -63,43 +61,6 @@ export default {
63
61
  boundary,
64
62
  flip: this.flip,
65
63
  });
66
-
67
- [this.dir, this.align] = getAlignment(element, target, this.pos);
68
- },
69
-
70
- getAxis(dir = this.dir) {
71
- return includes(['top', 'bottom'], dir) ? 'y' : 'x';
72
64
  },
73
65
  },
74
66
  };
75
-
76
- function getAlignment(el, target, [dir, align]) {
77
- const elOffset = getOffset(el);
78
- const targetOffset = getOffset(target);
79
- const properties = [
80
- ['left', 'right'],
81
- ['top', 'bottom'],
82
- ];
83
-
84
- for (const props of properties) {
85
- if (elOffset[props[0]] >= targetOffset[props[1]]) {
86
- dir = props[1];
87
- break;
88
- }
89
- if (elOffset[props[1]] <= targetOffset[props[0]]) {
90
- dir = props[0];
91
- break;
92
- }
93
- }
94
-
95
- const props = includes(properties[0], dir) ? properties[1] : properties[0];
96
- if (elOffset[props[0]] === targetOffset[props[0]]) {
97
- align = props[0];
98
- } else if (elOffset[props[1]] === targetOffset[props[1]]) {
99
- align = props[1];
100
- } else {
101
- align = 'center';
102
- }
103
-
104
- return [dir, align];
105
- }
@@ -75,7 +75,10 @@ function attachToWithFlip(element, target, options) {
75
75
  const willFlip =
76
76
  !intersectLine(position, targetDim, i) && intersectLine(position, targetDim, 1 - i);
77
77
 
78
- viewport = getIntersectionArea(...viewports, willFlip ? null : boundary);
78
+ viewport = getIntersectionArea(
79
+ ...viewports,
80
+ willFlip || position[prop] > offset(boundary)[prop] ? null : boundary
81
+ );
79
82
  const isInStartBoundary = position[start] >= viewport[start];
80
83
  const isInEndBoundary = position[end] <= viewport[end];
81
84
 
@@ -29,6 +29,7 @@
29
29
 
30
30
  @dropdown-nav-item-color: @global-muted-color;
31
31
  @dropdown-nav-item-hover-color: @global-color;
32
+ @dropdown-nav-subtitle-font-size: @global-small-font-size;
32
33
  @dropdown-nav-header-color: @global-emphasis-color;
33
34
  @dropdown-nav-divider-border-width: @global-border-width;
34
35
  @dropdown-nav-divider-border: @global-border;
@@ -74,7 +75,6 @@
74
75
  ========================================================================== */
75
76
 
76
77
  .uk-dropdown-nav {
77
- white-space: nowrap;
78
78
  .hook-dropdown-nav();
79
79
  }
80
80
 
@@ -94,6 +94,15 @@
94
94
  .hook-dropdown-nav-item-hover();
95
95
  }
96
96
 
97
+ /*
98
+ * Subtitle
99
+ */
100
+
101
+ .uk-dropdown-nav .uk-nav-subtitle {
102
+ font-size: @dropdown-nav-subtitle-font-size;
103
+ .hook-dropdown-nav-subtitle();
104
+ }
105
+
97
106
  /*
98
107
  * Header
99
108
  */
@@ -138,6 +147,7 @@
138
147
  .hook-dropdown-nav() {}
139
148
  .hook-dropdown-nav-item() {}
140
149
  .hook-dropdown-nav-item-hover() {}
150
+ .hook-dropdown-nav-subtitle() {}
141
151
  .hook-dropdown-nav-header() {}
142
152
  .hook-dropdown-nav-divider() {}
143
153
  .hook-dropdown-misc() {}
@@ -48,6 +48,7 @@
48
48
  @nav-default-item-color: @global-muted-color;
49
49
  @nav-default-item-hover-color: @global-color;
50
50
  @nav-default-item-active-color: @global-emphasis-color;
51
+ @nav-default-subtitle-font-size: @global-small-font-size;
51
52
  @nav-default-header-color: @global-emphasis-color;
52
53
  @nav-default-divider-border-width: @global-border-width;
53
54
  @nav-default-divider-border: @global-border;
@@ -60,6 +61,7 @@
60
61
  @nav-primary-item-color: @global-muted-color;
61
62
  @nav-primary-item-hover-color: @global-color;
62
63
  @nav-primary-item-active-color: @global-emphasis-color;
64
+ @nav-primary-subtitle-font-size: @global-medium-font-size;
63
65
  @nav-primary-header-color: @global-emphasis-color;
64
66
  @nav-primary-divider-border-width: @global-border-width;
65
67
  @nav-primary-divider-border: @global-border;
@@ -207,6 +209,15 @@ ul.uk-nav-sub {
207
209
  .hook-nav-default-item-active();
208
210
  }
209
211
 
212
+ /*
213
+ * Subtitle
214
+ */
215
+
216
+ .uk-nav-default .uk-nav-subtitle {
217
+ font-size: @nav-default-subtitle-font-size;
218
+ .hook-nav-default-subtitle();
219
+ }
220
+
210
221
  /*
211
222
  * Header
212
223
  */
@@ -266,6 +277,15 @@ ul.uk-nav-sub {
266
277
  .hook-nav-primary-item-active();
267
278
  }
268
279
 
280
+ /*
281
+ * Subtitle
282
+ */
283
+
284
+ .uk-nav-primary .uk-nav-subtitle {
285
+ font-size: @nav-primary-subtitle-font-size;
286
+ .hook-nav-primary-subtitle();
287
+ }
288
+
269
289
  /*
270
290
  * Header
271
291
  */
@@ -340,12 +360,14 @@ ul.uk-nav-sub {
340
360
  .hook-nav-default-item() {}
341
361
  .hook-nav-default-item-hover() {}
342
362
  .hook-nav-default-item-active() {}
363
+ .hook-nav-default-subtitle() {}
343
364
  .hook-nav-default-header() {}
344
365
  .hook-nav-default-divider() {}
345
366
  .hook-nav-primary() {}
346
367
  .hook-nav-primary-item() {}
347
368
  .hook-nav-primary-item-hover() {}
348
369
  .hook-nav-primary-item-active() {}
370
+ .hook-nav-primary-subtitle() {}
349
371
  .hook-nav-primary-header() {}
350
372
  .hook-nav-primary-divider() {}
351
373
  .hook-nav-dividers() {}
@@ -66,11 +66,12 @@
66
66
 
67
67
  @navbar-dropdown-dropbar-margin-top: 0px;
68
68
  @navbar-dropdown-dropbar-margin-bottom: @navbar-dropdown-dropbar-margin-top;
69
- @navbar-dropdown-dropbar-padding: @navbar-nav-item-padding-horizontal;
69
+ @navbar-dropdown-dropbar-padding-horizontal: @navbar-nav-item-padding-horizontal;
70
70
 
71
71
  @navbar-dropdown-nav-item-color: @global-muted-color;
72
72
  @navbar-dropdown-nav-item-hover-color: @global-color;
73
73
  @navbar-dropdown-nav-item-active-color: @global-emphasis-color;
74
+ @navbar-dropdown-nav-subtitle-font-size: @global-small-font-size;
74
75
  @navbar-dropdown-nav-header-color: @global-emphasis-color;
75
76
  @navbar-dropdown-nav-divider-border-width: @global-border-width;
76
77
  @navbar-dropdown-nav-divider-border: @global-border;
@@ -393,6 +394,7 @@
393
394
  * 1. Set position
394
395
  * 2. Bottom padding for dropbar
395
396
  * 3. Horizontal padding
397
+ * 4. Reset padding if aligned to boundary
396
398
  */
397
399
 
398
400
  .uk-navbar-dropdown-dropbar {
@@ -400,10 +402,18 @@
400
402
  --uk-position-offset: @navbar-dropdown-dropbar-margin-top;
401
403
  /* 2 */
402
404
  margin-bottom: @navbar-dropdown-dropbar-margin-bottom;
403
- padding: @navbar-dropdown-dropbar-padding;
405
+ /* 3 */
406
+ padding-left: @navbar-dropdown-dropbar-padding-horizontal;
407
+ padding-right: @navbar-dropdown-dropbar-padding-horizontal;
404
408
  .hook-navbar-dropdown-dropbar();
405
409
  }
406
410
 
411
+ /* 4 */
412
+ .uk-navbar-dropdown-dropbar.uk-navbar-dropdown-boundary {
413
+ padding-left: 0;
414
+ padding-right: 0;
415
+ }
416
+
407
417
 
408
418
  /* Dropdown Nav
409
419
  * Adopts `uk-nav`
@@ -434,6 +444,15 @@
434
444
  .hook-navbar-dropdown-nav-item-active();
435
445
  }
436
446
 
447
+ /*
448
+ * Subtitle
449
+ */
450
+
451
+ .uk-navbar-dropdown-nav .uk-nav-subtitle {
452
+ font-size: @navbar-dropdown-nav-subtitle-font-size;
453
+ .hook-navbar-dropdown-nav-subtitle();
454
+ }
455
+
437
456
  /*
438
457
  * Header
439
458
  */
@@ -502,6 +521,7 @@
502
521
  .hook-navbar-dropdown-nav-item() {}
503
522
  .hook-navbar-dropdown-nav-item-hover() {}
504
523
  .hook-navbar-dropdown-nav-item-active() {}
524
+ .hook-navbar-dropdown-nav-subtitle() {}
505
525
  .hook-navbar-dropdown-nav-header() {}
506
526
  .hook-navbar-dropdown-nav-divider() {}
507
527
  .hook-navbar-dropbar(){}
@@ -34,6 +34,8 @@
34
34
 
35
35
  .hook-dropdown-nav-item-hover() {}
36
36
 
37
+ .hook-dropdown-nav-subtitle() {}
38
+
37
39
  .hook-dropdown-nav-header() {}
38
40
 
39
41
  .hook-dropdown-nav-divider() {}
@@ -49,6 +49,8 @@
49
49
 
50
50
  .hook-nav-default-item-active() {}
51
51
 
52
+ .hook-nav-default-subtitle() {}
53
+
52
54
  .hook-nav-default-header() {}
53
55
 
54
56
  .hook-nav-default-divider() {}
@@ -65,6 +67,8 @@
65
67
 
66
68
  .hook-nav-primary-item-active() {}
67
69
 
70
+ .hook-nav-primary-subtitle() {}
71
+
68
72
  .hook-nav-primary-header() {}
69
73
 
70
74
  .hook-nav-primary-divider() {}
@@ -109,6 +109,8 @@
109
109
 
110
110
  .hook-navbar-dropdown-nav-item-hover() {}
111
111
 
112
+ .hook-navbar-dropdown-nav-subtitle() {}
113
+
112
114
  .hook-navbar-dropdown-nav-header() {}
113
115
 
114
116
  .hook-navbar-dropdown-nav-divider() {}
@@ -29,6 +29,7 @@ $dropdown-color: $global-color !default;
29
29
 
30
30
  $dropdown-nav-item-color: $global-muted-color !default;
31
31
  $dropdown-nav-item-hover-color: $global-color !default;
32
+ $dropdown-nav-subtitle-font-size: $global-small-font-size !default;
32
33
  $dropdown-nav-header-color: $global-emphasis-color !default;
33
34
  $dropdown-nav-divider-border-width: $global-border-width !default;
34
35
  $dropdown-nav-divider-border: $global-border !default;
@@ -74,7 +75,6 @@ $dropdown-nav-sublist-item-hover-color: $global-color !default;
74
75
  ========================================================================== */
75
76
 
76
77
  .uk-dropdown-nav {
77
- white-space: nowrap;
78
78
  @if(mixin-exists(hook-dropdown-nav)) {@include hook-dropdown-nav();}
79
79
  }
80
80
 
@@ -94,6 +94,15 @@ $dropdown-nav-sublist-item-hover-color: $global-color !default;
94
94
  @if(mixin-exists(hook-dropdown-nav-item-hover)) {@include hook-dropdown-nav-item-hover();}
95
95
  }
96
96
 
97
+ /*
98
+ * Subtitle
99
+ */
100
+
101
+ .uk-dropdown-nav .uk-nav-subtitle {
102
+ font-size: $dropdown-nav-subtitle-font-size;
103
+ @if(mixin-exists(hook-dropdown-nav-subtitle)) {@include hook-dropdown-nav-subtitle();}
104
+ }
105
+
97
106
  /*
98
107
  * Header
99
108
  */
@@ -138,6 +147,7 @@ $dropdown-nav-sublist-item-hover-color: $global-color !default;
138
147
  // @mixin hook-dropdown-nav(){}
139
148
  // @mixin hook-dropdown-nav-item(){}
140
149
  // @mixin hook-dropdown-nav-item-hover(){}
150
+ // @mixin hook-dropdown-nav-subtitle(){}
141
151
  // @mixin hook-dropdown-nav-header(){}
142
152
  // @mixin hook-dropdown-nav-divider(){}
143
153
  // @mixin hook-dropdown-misc(){}
@@ -48,6 +48,7 @@ $nav-divider-margin-horizontal: 0 !default;
48
48
  $nav-default-item-color: $global-muted-color !default;
49
49
  $nav-default-item-hover-color: $global-color !default;
50
50
  $nav-default-item-active-color: $global-emphasis-color !default;
51
+ $nav-default-subtitle-font-size: $global-small-font-size !default;
51
52
  $nav-default-header-color: $global-emphasis-color !default;
52
53
  $nav-default-divider-border-width: $global-border-width !default;
53
54
  $nav-default-divider-border: $global-border !default;
@@ -60,6 +61,7 @@ $nav-primary-item-line-height: $global-line-height !default;
60
61
  $nav-primary-item-color: $global-muted-color !default;
61
62
  $nav-primary-item-hover-color: $global-color !default;
62
63
  $nav-primary-item-active-color: $global-emphasis-color !default;
64
+ $nav-primary-subtitle-font-size: $global-medium-font-size !default;
63
65
  $nav-primary-header-color: $global-emphasis-color !default;
64
66
  $nav-primary-divider-border-width: $global-border-width !default;
65
67
  $nav-primary-divider-border: $global-border !default;
@@ -207,6 +209,15 @@ ul.uk-nav-sub {
207
209
  @if(mixin-exists(hook-nav-default-item-active)) {@include hook-nav-default-item-active();}
208
210
  }
209
211
 
212
+ /*
213
+ * Subtitle
214
+ */
215
+
216
+ .uk-nav-default .uk-nav-subtitle {
217
+ font-size: $nav-default-subtitle-font-size;
218
+ @if(mixin-exists(hook-nav-default-subtitle)) {@include hook-nav-default-subtitle();}
219
+ }
220
+
210
221
  /*
211
222
  * Header
212
223
  */
@@ -266,6 +277,15 @@ ul.uk-nav-sub {
266
277
  @if(mixin-exists(hook-nav-primary-item-active)) {@include hook-nav-primary-item-active();}
267
278
  }
268
279
 
280
+ /*
281
+ * Subtitle
282
+ */
283
+
284
+ .uk-nav-primary .uk-nav-subtitle {
285
+ font-size: $nav-primary-subtitle-font-size;
286
+ @if(mixin-exists(hook-nav-primary-subtitle)) {@include hook-nav-primary-subtitle();}
287
+ }
288
+
269
289
  /*
270
290
  * Header
271
291
  */
@@ -340,12 +360,14 @@ ul.uk-nav-sub {
340
360
  // @mixin hook-nav-default-item(){}
341
361
  // @mixin hook-nav-default-item-hover(){}
342
362
  // @mixin hook-nav-default-item-active(){}
363
+ // @mixin hook-nav-default-subtitle(){}
343
364
  // @mixin hook-nav-default-header(){}
344
365
  // @mixin hook-nav-default-divider(){}
345
366
  // @mixin hook-nav-primary(){}
346
367
  // @mixin hook-nav-primary-item(){}
347
368
  // @mixin hook-nav-primary-item-hover(){}
348
369
  // @mixin hook-nav-primary-item-active(){}
370
+ // @mixin hook-nav-primary-subtitle(){}
349
371
  // @mixin hook-nav-primary-header(){}
350
372
  // @mixin hook-nav-primary-divider(){}
351
373
  // @mixin hook-nav-dividers(){}
@@ -66,11 +66,12 @@ $navbar-dropdown-grid-gutter-vertical: $navbar-dropdown-grid-gutter-ho
66
66
 
67
67
  $navbar-dropdown-dropbar-margin-top: 0px !default;
68
68
  $navbar-dropdown-dropbar-margin-bottom: $navbar-dropdown-dropbar-margin-top !default;
69
- $navbar-dropdown-dropbar-padding: $navbar-nav-item-padding-horizontal !default;
69
+ $navbar-dropdown-dropbar-padding-horizontal: $navbar-nav-item-padding-horizontal !default;
70
70
 
71
71
  $navbar-dropdown-nav-item-color: $global-muted-color !default;
72
72
  $navbar-dropdown-nav-item-hover-color: $global-color !default;
73
73
  $navbar-dropdown-nav-item-active-color: $global-emphasis-color !default;
74
+ $navbar-dropdown-nav-subtitle-font-size: $global-small-font-size !default;
74
75
  $navbar-dropdown-nav-header-color: $global-emphasis-color !default;
75
76
  $navbar-dropdown-nav-divider-border-width: $global-border-width !default;
76
77
  $navbar-dropdown-nav-divider-border: $global-border !default;
@@ -393,6 +394,7 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
393
394
  * 1. Set position
394
395
  * 2. Bottom padding for dropbar
395
396
  * 3. Horizontal padding
397
+ * 4. Reset padding if aligned to boundary
396
398
  */
397
399
 
398
400
  .uk-navbar-dropdown-dropbar {
@@ -400,10 +402,18 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
400
402
  --uk-position-offset: #{$navbar-dropdown-dropbar-margin-top};
401
403
  /* 2 */
402
404
  margin-bottom: $navbar-dropdown-dropbar-margin-bottom;
403
- padding: $navbar-dropdown-dropbar-padding;
405
+ /* 3 */
406
+ padding-left: $navbar-dropdown-dropbar-padding-horizontal;
407
+ padding-right: $navbar-dropdown-dropbar-padding-horizontal;
404
408
  @if(mixin-exists(hook-navbar-dropdown-dropbar)) {@include hook-navbar-dropdown-dropbar();}
405
409
  }
406
410
 
411
+ /* 4 */
412
+ .uk-navbar-dropdown-dropbar.uk-navbar-dropdown-boundary {
413
+ padding-left: 0;
414
+ padding-right: 0;
415
+ }
416
+
407
417
 
408
418
  /* Dropdown Nav
409
419
  * Adopts `uk-nav`
@@ -434,6 +444,15 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
434
444
  @if(mixin-exists(hook-navbar-dropdown-nav-item-active)) {@include hook-navbar-dropdown-nav-item-active();}
435
445
  }
436
446
 
447
+ /*
448
+ * Subtitle
449
+ */
450
+
451
+ .uk-navbar-dropdown-nav .uk-nav-subtitle {
452
+ font-size: $navbar-dropdown-nav-subtitle-font-size;
453
+ @if(mixin-exists(hook-navbar-dropdown-nav-subtitle)) {@include hook-navbar-dropdown-nav-subtitle();}
454
+ }
455
+
437
456
  /*
438
457
  * Header
439
458
  */
@@ -502,6 +521,7 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
502
521
  // @mixin hook-navbar-dropdown-nav-item(){}
503
522
  // @mixin hook-navbar-dropdown-nav-item-hover(){}
504
523
  // @mixin hook-navbar-dropdown-nav-item-active(){}
524
+ // @mixin hook-navbar-dropdown-nav-subtitle(){}
505
525
  // @mixin hook-navbar-dropdown-nav-header(){}
506
526
  // @mixin hook-navbar-dropdown-nav-divider(){}
507
527
  // @mixin hook-navbar-dropbar(){}
@@ -809,6 +809,7 @@
809
809
  @mixin hook-dropdown-nav(){ font-size: $dropdown-nav-font-size; }
810
810
  @mixin hook-dropdown-nav-item(){}
811
811
  @mixin hook-dropdown-nav-item-hover(){}
812
+ @mixin hook-dropdown-nav-subtitle(){}
812
813
  @mixin hook-dropdown-nav-header(){}
813
814
  @mixin hook-dropdown-nav-divider(){}
814
815
  @mixin hook-dropdown-misc(){}
@@ -1706,12 +1707,14 @@
1706
1707
  @mixin hook-nav-default-item(){}
1707
1708
  @mixin hook-nav-default-item-hover(){}
1708
1709
  @mixin hook-nav-default-item-active(){}
1710
+ @mixin hook-nav-default-subtitle(){}
1709
1711
  @mixin hook-nav-default-header(){}
1710
1712
  @mixin hook-nav-default-divider(){}
1711
1713
  @mixin hook-nav-primary(){}
1712
1714
  @mixin hook-nav-primary-item(){}
1713
1715
  @mixin hook-nav-primary-item-hover(){}
1714
1716
  @mixin hook-nav-primary-item-active(){}
1717
+ @mixin hook-nav-primary-subtitle(){}
1715
1718
  @mixin hook-nav-primary-header(){}
1716
1719
  @mixin hook-nav-primary-divider(){}
1717
1720
  @mixin hook-nav-dividers(){}
@@ -1752,6 +1755,7 @@
1752
1755
  @mixin hook-navbar-dropdown-nav-item(){}
1753
1756
  @mixin hook-navbar-dropdown-nav-item-hover(){}
1754
1757
  @mixin hook-navbar-dropdown-nav-item-active(){}
1758
+ @mixin hook-navbar-dropdown-nav-subtitle(){}
1755
1759
  @mixin hook-navbar-dropdown-nav-header(){}
1756
1760
  @mixin hook-navbar-dropdown-nav-divider(){}
1757
1761
  @mixin hook-navbar-dropbar(){ box-shadow: $navbar-dropbar-box-shadow; }
@@ -584,6 +584,7 @@
584
584
  @mixin hook-dropdown-nav(){}
585
585
  @mixin hook-dropdown-nav-item(){}
586
586
  @mixin hook-dropdown-nav-item-hover(){}
587
+ @mixin hook-dropdown-nav-subtitle(){}
587
588
  @mixin hook-dropdown-nav-header(){}
588
589
  @mixin hook-dropdown-nav-divider(){}
589
590
  @mixin hook-dropdown-misc(){}
@@ -1436,12 +1437,14 @@
1436
1437
  @mixin hook-nav-default-item(){}
1437
1438
  @mixin hook-nav-default-item-hover(){}
1438
1439
  @mixin hook-nav-default-item-active(){}
1440
+ @mixin hook-nav-default-subtitle(){}
1439
1441
  @mixin hook-nav-default-header(){}
1440
1442
  @mixin hook-nav-default-divider(){}
1441
1443
  @mixin hook-nav-primary(){}
1442
1444
  @mixin hook-nav-primary-item(){}
1443
1445
  @mixin hook-nav-primary-item-hover(){}
1444
1446
  @mixin hook-nav-primary-item-active(){}
1447
+ @mixin hook-nav-primary-subtitle(){}
1445
1448
  @mixin hook-nav-primary-header(){}
1446
1449
  @mixin hook-nav-primary-divider(){}
1447
1450
  @mixin hook-nav-dividers(){}
@@ -1478,6 +1481,7 @@
1478
1481
  @mixin hook-navbar-dropdown-nav-item(){}
1479
1482
  @mixin hook-navbar-dropdown-nav-item-hover(){}
1480
1483
  @mixin hook-navbar-dropdown-nav-item-active(){}
1484
+ @mixin hook-navbar-dropdown-nav-subtitle(){}
1481
1485
  @mixin hook-navbar-dropdown-nav-header(){}
1482
1486
  @mixin hook-navbar-dropdown-nav-divider(){}
1483
1487
  @mixin hook-navbar-dropbar(){}
@@ -34,6 +34,8 @@ $dropdown-box-shadow: 0 5px 12px rgba(0,0,0,0.15) !de
34
34
 
35
35
  // @mixin hook-dropdown-nav-item-hover(){}
36
36
 
37
+ // @mixin hook-dropdown-nav-subtitle(){}
38
+
37
39
  // @mixin hook-dropdown-nav-header(){}
38
40
 
39
41
  // @mixin hook-dropdown-nav-divider(){}
@@ -49,6 +49,8 @@ $nav-default-font-size: $global-small-font-size !defaul
49
49
 
50
50
  // @mixin hook-nav-default-item-active(){}
51
51
 
52
+ // @mixin hook-nav-default-subtitle(){}
53
+
52
54
  // @mixin hook-nav-default-header(){}
53
55
 
54
56
  // @mixin hook-nav-default-divider(){}
@@ -65,6 +67,8 @@ $nav-default-font-size: $global-small-font-size !defaul
65
67
 
66
68
  // @mixin hook-nav-primary-item-active(){}
67
69
 
70
+ // @mixin hook-nav-primary-subtitle(){}
71
+
68
72
  // @mixin hook-nav-primary-header(){}
69
73
 
70
74
  // @mixin hook-nav-primary-divider(){}
@@ -105,6 +105,8 @@ $navbar-dropdown-grid-divider-border: $navbar-dropdown-nav-divider-bo
105
105
 
106
106
  // @mixin hook-navbar-dropdown-nav-item-hover(){}
107
107
 
108
+ // @mixin hook-navbar-dropdown-nav-subtitle(){}
109
+
108
110
  // @mixin hook-navbar-dropdown-nav-header(){}
109
111
 
110
112
  // @mixin hook-navbar-dropdown-nav-divider(){}