uikit 3.9.5-dev.ce77459c6 → 3.10.1-dev.2a182d8f9

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 (63) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/build/build.js +5 -5
  3. package/build/less.js +30 -11
  4. package/build/publishDev.js +2 -1
  5. package/build/util.js +1 -20
  6. package/dist/css/uikit-core-rtl.css +15 -7
  7. package/dist/css/uikit-core-rtl.min.css +1 -1
  8. package/dist/css/uikit-core.css +12 -4
  9. package/dist/css/uikit-core.min.css +1 -1
  10. package/dist/css/uikit-rtl.css +15 -7
  11. package/dist/css/uikit-rtl.min.css +1 -1
  12. package/dist/css/uikit.css +12 -4
  13. package/dist/css/uikit.min.css +1 -1
  14. package/dist/js/components/countdown.js +1 -1
  15. package/dist/js/components/countdown.min.js +1 -1
  16. package/dist/js/components/filter.js +1 -1
  17. package/dist/js/components/filter.min.js +1 -1
  18. package/dist/js/components/lightbox-panel.js +1 -1
  19. package/dist/js/components/lightbox-panel.min.js +1 -1
  20. package/dist/js/components/lightbox.js +1 -1
  21. package/dist/js/components/lightbox.min.js +1 -1
  22. package/dist/js/components/notification.js +1 -1
  23. package/dist/js/components/notification.min.js +1 -1
  24. package/dist/js/components/parallax.js +1 -1
  25. package/dist/js/components/parallax.min.js +1 -1
  26. package/dist/js/components/slider-parallax.js +1 -1
  27. package/dist/js/components/slider-parallax.min.js +1 -1
  28. package/dist/js/components/slider.js +1 -1
  29. package/dist/js/components/slider.min.js +1 -1
  30. package/dist/js/components/slideshow-parallax.js +1 -1
  31. package/dist/js/components/slideshow-parallax.min.js +1 -1
  32. package/dist/js/components/slideshow.js +5 -1
  33. package/dist/js/components/slideshow.min.js +1 -1
  34. package/dist/js/components/sortable.js +2 -2
  35. package/dist/js/components/sortable.min.js +1 -1
  36. package/dist/js/components/tooltip.js +1 -1
  37. package/dist/js/components/tooltip.min.js +1 -1
  38. package/dist/js/components/upload.js +1 -1
  39. package/dist/js/components/upload.min.js +1 -1
  40. package/dist/js/uikit-core.js +117 -53
  41. package/dist/js/uikit-core.min.js +1 -1
  42. package/dist/js/uikit-icons.js +1 -1
  43. package/dist/js/uikit-icons.min.js +1 -1
  44. package/dist/js/uikit.js +122 -54
  45. package/dist/js/uikit.min.js +1 -1
  46. package/package.json +9 -11
  47. package/src/js/components/slideshow.js +4 -0
  48. package/src/js/components/sortable.js +1 -1
  49. package/src/js/core/img.js +93 -47
  50. package/src/js/util/dom.js +2 -5
  51. package/src/js/util/selector.js +4 -2
  52. package/src/less/components/list.less +1 -1
  53. package/src/less/components/search.less +9 -6
  54. package/src/less/components/utility.less +3 -2
  55. package/src/less/components/width.less +7 -0
  56. package/src/scss/components/list.scss +1 -1
  57. package/src/scss/components/search.scss +9 -6
  58. package/src/scss/components/utility.scss +3 -2
  59. package/src/scss/components/width.scss +7 -0
  60. package/src/scss/variables-theme.scss +4 -0
  61. package/src/scss/variables.scss +4 -0
  62. package/tests/image.html +40 -14
  63. package/tests/search.html +1 -1
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.9.5-dev.ce77459c6",
5
+ "version": "3.10.1-dev.2a182d8f9",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -20,7 +20,7 @@
20
20
  "prefix": "node build/prefix",
21
21
  "scope": "node build/scope",
22
22
  "release": "node build/release",
23
- "watch": "watch-run -i -p 'src/less/**/*.less' yarn compile-less",
23
+ "watch": "watch-run -i -p '**/*.less' yarn compile-less",
24
24
  "eslint": "eslint src/js",
25
25
  "eslint-fix": "eslint --fix src/js"
26
26
  },
@@ -34,15 +34,15 @@
34
34
  },
35
35
  "homepage": "https://getuikit.com",
36
36
  "devDependencies": {
37
- "@rollup/plugin-alias": "^3.1.8",
37
+ "@rollup/plugin-alias": "^3.1.9",
38
38
  "@rollup/plugin-buble": "^0.21.3",
39
- "@rollup/plugin-replace": "^3.0.0",
39
+ "@rollup/plugin-replace": "^3.0.1",
40
40
  "archiver": "^5.3.0",
41
- "camelcase": "^6.2.1",
41
+ "camelcase": "^6.3.0",
42
42
  "clean-css": "^5.2.2",
43
43
  "dateformat": "^5.0.2",
44
- "esbuild": "^0.13.14",
45
- "eslint": "^8.2.0",
44
+ "esbuild": "^0.14.11",
45
+ "eslint": "^8.6.0",
46
46
  "fs-extra": "^10.0.0",
47
47
  "glob": "^7.2.0",
48
48
  "inquirer": "^8.2.0",
@@ -50,10 +50,8 @@
50
50
  "minimist": "^1.2.5",
51
51
  "number-precision": "^1.5.1",
52
52
  "p-limit": "^4.0.0",
53
- "postcss": "^8.3.11",
54
- "prettier": "^2.4.1",
55
- "rollup": "^2.60.0",
56
- "rollup-plugin-esbuild": "^4.7.1",
53
+ "rollup": "^2.63.0",
54
+ "rollup-plugin-esbuild": "^4.8.2",
57
55
  "rollup-plugin-html": "^0.2.1",
58
56
  "rollup-plugin-modify": "^3.0.0",
59
57
  "rtlcss": "^3.5.0",
@@ -28,6 +28,10 @@ export default {
28
28
 
29
29
  read() {
30
30
 
31
+ if (!this.list) {
32
+ return false;
33
+ }
34
+
31
35
  let [width, height] = this.ratio.split(':').map(Number);
32
36
 
33
37
  height = height * this.list.offsetWidth / width || 0;
@@ -300,7 +300,7 @@ function trackScroll(pos) {
300
300
  const dist = (Date.now() - last) * .3;
301
301
  last = Date.now();
302
302
 
303
- scrollParents(document.elementFromPoint(x, pos.y)).reverse().some(scrollEl => {
303
+ scrollParents(document.elementFromPoint(x, pos.y), /auto|scroll/).reverse().some(scrollEl => {
304
304
 
305
305
  let {scrollTop: scroll, scrollHeight} = scrollEl;
306
306
 
@@ -1,4 +1,4 @@
1
- import {attr, children, createEvent, css, data, escape, includes, isUndefined, parent, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
1
+ import {createEvent, css, Dimensions, escape, getImage, includes, isUndefined, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
2
2
 
3
3
  export default {
4
4
 
@@ -6,6 +6,10 @@ export default {
6
6
 
7
7
  props: {
8
8
  dataSrc: String,
9
+ dataSrcset: Boolean,
10
+ sizes: String,
11
+ width: Number,
12
+ height: Number,
9
13
  offsetTop: String,
10
14
  offsetLeft: String,
11
15
  target: String
@@ -13,6 +17,10 @@ export default {
13
17
 
14
18
  data: {
15
19
  dataSrc: '',
20
+ dataSrcset: false,
21
+ sizes: false,
22
+ width: false,
23
+ height: false,
16
24
  offsetTop: '50vh',
17
25
  offsetLeft: '50vw',
18
26
  target: false
@@ -20,6 +28,26 @@ export default {
20
28
 
21
29
  computed: {
22
30
 
31
+ cacheKey({dataSrc}) {
32
+ return `${this.$name}.${dataSrc}`;
33
+ },
34
+
35
+ width({width, dataWidth}) {
36
+ return width || dataWidth;
37
+ },
38
+
39
+ height({height, dataHeight}) {
40
+ return height || dataHeight;
41
+ },
42
+
43
+ sizes({sizes, dataSizes}) {
44
+ return sizes || dataSizes;
45
+ },
46
+
47
+ isImg(_, $el) {
48
+ return isImg($el);
49
+ },
50
+
23
51
  target: {
24
52
 
25
53
  get({target}) {
@@ -30,6 +58,14 @@ export default {
30
58
  this.observe();
31
59
  }
32
60
 
61
+ },
62
+
63
+ offsetTop({offsetTop}) {
64
+ return toPx(offsetTop, 'height');
65
+ },
66
+
67
+ offsetLeft({offsetLeft}) {
68
+ return toPx(offsetLeft, 'width');
33
69
  }
34
70
 
35
71
  },
@@ -37,13 +73,21 @@ export default {
37
73
  connected() {
38
74
 
39
75
  if (!window.IntersectionObserver) {
40
- setSrcAttrs(this.$el, this.dataSrc);
76
+ setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
41
77
  return;
42
78
  }
43
79
 
44
- const rootMargin = `${toPx(this.offsetTop, 'height')}px ${toPx(this.offsetLeft, 'width')}px`;
45
- this.observer = new IntersectionObserver(this.load, {rootMargin});
46
- this.observe();
80
+ if (storage[this.cacheKey]) {
81
+ setSrcAttrs(this.$el, storage[this.cacheKey], this.dataSrcset, this.sizes);
82
+ } else if (this.isImg && this.width && this.height) {
83
+ setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));
84
+ }
85
+
86
+ this.observer = new IntersectionObserver(this.load, {
87
+ rootMargin: `${this.offsetTop}px ${this.offsetLeft}px`
88
+ });
89
+
90
+ requestAnimationFrame(this.observe);
47
91
 
48
92
  },
49
93
 
@@ -55,23 +99,30 @@ export default {
55
99
 
56
100
  read({image}) {
57
101
 
58
- if (!this.observer || isImg(this.$el)) {
102
+ if (!this.observer) {
103
+ return false;
104
+ }
105
+
106
+ if (!image && document.readyState === 'complete') {
107
+ this.load(this.observer.takeRecords());
108
+ }
109
+
110
+ if (this.isImg) {
59
111
  return false;
60
112
  }
61
113
 
62
- setSrcAttrs(this.$el, image && image.currentSrc);
114
+ image && image.then(img => img && img.currentSrc !== '' && setSrcAttrs(this.$el, currentSrc(img)));
63
115
 
64
116
  },
65
117
 
66
- write(store) {
118
+ write(data) {
67
119
 
68
- const srcset = data(this.$el, 'data-srcset');
69
- if (srcset && window.devicePixelRatio !== 1) {
120
+ if (this.dataSrcset && window.devicePixelRatio !== 1) {
70
121
 
71
122
  const bgSize = css(this.$el, 'backgroundSize');
72
- if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
73
- store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
74
- css(this.$el, 'backgroundSize', `${store.bgSize}px`);
123
+ if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === data.bgSize) {
124
+ data.bgSize = getSourceSize(this.dataSrcset, this.sizes);
125
+ css(this.$el, 'backgroundSize', `${data.bgSize}px`);
75
126
  }
76
127
 
77
128
  }
@@ -91,13 +142,13 @@ export default {
91
142
  return;
92
143
  }
93
144
 
94
- if (this._data.image) {
95
- return this._data.image;
96
- }
145
+ this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(img => {
97
146
 
98
- const image = isImg(this.$el) ? this.$el : getImageFromElement(this.$el, this.dataSrc);
99
- this._data.image = image;
100
- setSrcAttrs(this.$el, image.currentSrc);
147
+ setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
148
+ storage[this.cacheKey] = currentSrc(img);
149
+ return img;
150
+
151
+ }, e => trigger(this.$el, new e.constructor(e.type, e)));
101
152
 
102
153
  this.observer.disconnect();
103
154
  },
@@ -112,13 +163,13 @@ export default {
112
163
 
113
164
  };
114
165
 
115
- function setSrcAttrs(el, src) {
166
+ function setSrcAttrs(el, src, srcset, sizes) {
116
167
 
117
168
  if (isImg(el)) {
118
- const parentNode = parent(el);
119
- const elements = isPicture(parentNode) ? children(parentNode) : [el];
120
- elements.forEach(setSourceProps);
121
- src && attr(el, 'src', src);
169
+ const set = (prop, val) => val && val !== el[prop] && (el[prop] = val);
170
+ set('sizes', sizes);
171
+ set('srcset', srcset);
172
+ set('src', src);
122
173
  } else if (src) {
123
174
 
124
175
  const change = !includes(el.style.backgroundImage, src);
@@ -131,26 +182,13 @@ function setSrcAttrs(el, src) {
131
182
 
132
183
  }
133
184
 
134
- const srcProps = ['data-src', 'data-srcset', 'sizes'];
135
- function setSourceProps(sourceEl, targetEl) {
136
- srcProps.forEach(prop => {
137
- const value = data(sourceEl, prop);
138
- if (value) {
139
- attr(targetEl || sourceEl, prop.replace(/^(data-)+/, ''), value);
140
- }
141
- });
142
- }
143
-
144
- function getImageFromElement(el, src) {
185
+ function getPlaceholderImage(width, height, sizes) {
145
186
 
146
- if (!src) {
147
- return false;
187
+ if (sizes) {
188
+ ({width, height} = Dimensions.ratio({width, height}, 'width', toPx(sizesToPixel(sizes))));
148
189
  }
149
190
 
150
- const img = new Image();
151
- setSourceProps(el, img);
152
- attr(img, 'src', src);
153
- return img;
191
+ return `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}"></svg>`;
154
192
  }
155
193
 
156
194
  const sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
@@ -190,14 +228,22 @@ function getSourceSize(srcset, sizes) {
190
228
  return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
191
229
  }
192
230
 
193
- function isPicture(el) {
194
- return isA(el, 'PICTURE');
231
+ function isImg(el) {
232
+ return el.tagName === 'IMG';
195
233
  }
196
234
 
197
- function isImg(el) {
198
- return isA(el, 'IMG');
235
+ function currentSrc(el) {
236
+ return el.currentSrc || el.src;
199
237
  }
200
238
 
201
- function isA(el, tagName) {
202
- return el && el.tagName === tagName;
239
+ const key = '__test__';
240
+ let storage;
241
+
242
+ // workaround for Safari's private browsing mode and accessing sessionStorage in Blink
243
+ try {
244
+ storage = window.sessionStorage || {};
245
+ storage[key] = 1;
246
+ delete storage[key];
247
+ } catch (e) {
248
+ storage = {};
203
249
  }
@@ -1,4 +1,4 @@
1
- import {on} from './event';
1
+ import {once} from './event';
2
2
  import {parent} from './filter';
3
3
  import {find, findAll} from './selector';
4
4
  import {isElement, isString, isUndefined, toNode, toNodes} from './lang';
@@ -10,10 +10,7 @@ export function ready(fn) {
10
10
  return;
11
11
  }
12
12
 
13
- const unbind = on(document, 'DOMContentLoaded', function () {
14
- unbind();
15
- fn();
16
- });
13
+ once(document, 'DOMContentLoaded', fn);
17
14
  }
18
15
 
19
16
  export function empty(element) {
@@ -1,3 +1,4 @@
1
+ import {attr} from './attr';
1
2
  import {inBrowser} from './env';
2
3
  import {closest, index, matches, parent} from './filter';
3
4
  import {isDocument, isString, memoize, toNode, toNodes} from './lang';
@@ -95,8 +96,9 @@ const splitSelector = memoize(selector =>
95
96
  function domPath(element) {
96
97
  const names = [];
97
98
  while (element.parentNode) {
98
- if (element.id) {
99
- names.unshift(`#${escape(element.id)}`);
99
+ const id = attr(element, 'id');
100
+ if (id) {
101
+ names.unshift(`#${escape(id)}`);
100
102
  break;
101
103
  } else {
102
104
  let {tagName} = element;
@@ -95,7 +95,7 @@
95
95
  .uk-list-decimal > * { counter-increment: decimal; }
96
96
 
97
97
  [class*='uk-list'] > ::before {
98
- content: '';
98
+ content: "";
99
99
  position: relative;
100
100
  left: -@list-padding-left;
101
101
  width: @list-padding-left;
@@ -30,6 +30,7 @@
30
30
  @search-default-focus-background: darken(@search-default-background, 5%);
31
31
 
32
32
  @search-default-icon-width: @global-control-height;
33
+ @search-default-icon-padding: 0;
33
34
 
34
35
  @search-navbar-width: 400px;
35
36
  @search-navbar-height: 40px;
@@ -37,6 +38,7 @@
37
38
  @search-navbar-font-size: @global-large-font-size;
38
39
 
39
40
  @search-navbar-icon-width: 40px;
41
+ @search-navbar-icon-padding: 0;
40
42
 
41
43
  @search-large-width: 500px;
42
44
  @search-large-height: 80px;
@@ -44,6 +46,7 @@
44
46
  @search-large-font-size: @global-2xlarge-font-size;
45
47
 
46
48
  @search-large-icon-width: 80px;
49
+ @search-large-icon-padding: 0;
47
50
 
48
51
  @search-toggle-color: @global-muted-color;
49
52
  @search-toggle-hover-color: @global-color;
@@ -205,8 +208,8 @@
205
208
 
206
209
  .uk-search-default .uk-search-icon { width: @search-default-icon-width; }
207
210
 
208
- .uk-search-default .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: (@search-default-icon-width); }
209
- .uk-search-default .uk-search-icon-flip ~ .uk-search-input { padding-right: (@search-default-icon-width); }
211
+ .uk-search-default .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: (@search-default-icon-width + @search-default-icon-padding); }
212
+ .uk-search-default .uk-search-icon-flip ~ .uk-search-input { padding-right: (@search-default-icon-width + @search-default-icon-padding); }
210
213
 
211
214
 
212
215
  /* Navbar modifier
@@ -236,8 +239,8 @@
236
239
 
237
240
  .uk-search-navbar .uk-search-icon { width: @search-navbar-icon-width; }
238
241
 
239
- .uk-search-navbar .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: (@search-navbar-icon-width); }
240
- .uk-search-navbar .uk-search-icon-flip ~ .uk-search-input { padding-right: (@search-navbar-icon-width); }
242
+ .uk-search-navbar .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: (@search-navbar-icon-width + @search-navbar-icon-padding); }
243
+ .uk-search-navbar .uk-search-icon-flip ~ .uk-search-input { padding-right: (@search-navbar-icon-width + @search-navbar-icon-padding); }
241
244
 
242
245
 
243
246
  /* Large modifier
@@ -267,8 +270,8 @@
267
270
 
268
271
  .uk-search-large .uk-search-icon { width: @search-large-icon-width; }
269
272
 
270
- .uk-search-large .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: (@search-large-icon-width); }
271
- .uk-search-large .uk-search-icon-flip ~ .uk-search-input { padding-right: (@search-large-icon-width); }
273
+ .uk-search-large .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: (@search-large-icon-width + @search-large-icon-padding); }
274
+ .uk-search-large .uk-search-icon-flip ~ .uk-search-input { padding-right: (@search-large-icon-width + @search-large-icon-padding); }
272
275
 
273
276
 
274
277
  /* Toggle
@@ -40,6 +40,7 @@
40
40
  @box-shadow-duration: 0.1s;
41
41
 
42
42
  @box-shadow-bottom-height: 30px;
43
+ @box-shadow-bottom-bottom: -@box-shadow-bottom-height;
43
44
  @box-shadow-bottom-border-radius: 100%;
44
45
  @box-shadow-bottom-background: #444;
45
46
  @box-shadow-bottom-blur: 20px;
@@ -303,10 +304,10 @@
303
304
  }
304
305
 
305
306
  .uk-box-shadow-bottom::after {
306
- content: '';
307
+ content: "";
307
308
  /* 1 */
308
309
  position: absolute;
309
- bottom: -@box-shadow-bottom-height;
310
+ bottom: @box-shadow-bottom-bottom;
310
311
  left: 0;
311
312
  right: 0;
312
313
  z-index: -1;
@@ -360,6 +360,13 @@
360
360
 
361
361
  }
362
362
 
363
+ /* Intrinsic Widths
364
+ ========================================================================== */
365
+
366
+ .uk-width-max-content { width: max-content; }
367
+
368
+ .uk-width-min-content { width: min-content; }
369
+
363
370
 
364
371
  // Hooks
365
372
  // ========================================================================
@@ -95,7 +95,7 @@ $internal-list-bullet-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D
95
95
  .uk-list-decimal > * { counter-increment: decimal; }
96
96
 
97
97
  [class*='uk-list'] > ::before {
98
- content: '';
98
+ content: "";
99
99
  position: relative;
100
100
  left: (-$list-padding-left);
101
101
  width: $list-padding-left;
@@ -30,6 +30,7 @@ $search-default-background: $global-muted-background !d
30
30
  $search-default-focus-background: darken($search-default-background, 5%) !default;
31
31
 
32
32
  $search-default-icon-width: $global-control-height !default;
33
+ $search-default-icon-padding: 0 !default;
33
34
 
34
35
  $search-navbar-width: 400px !default;
35
36
  $search-navbar-height: 40px !default;
@@ -37,6 +38,7 @@ $search-navbar-background: transparent !default;
37
38
  $search-navbar-font-size: $global-large-font-size !default;
38
39
 
39
40
  $search-navbar-icon-width: 40px !default;
41
+ $search-navbar-icon-padding: 0 !default;
40
42
 
41
43
  $search-large-width: 500px !default;
42
44
  $search-large-height: 80px !default;
@@ -44,6 +46,7 @@ $search-large-background: transparent !default;
44
46
  $search-large-font-size: $global-2xlarge-font-size !default;
45
47
 
46
48
  $search-large-icon-width: 80px !default;
49
+ $search-large-icon-padding: 0 !default;
47
50
 
48
51
  $search-toggle-color: $global-muted-color !default;
49
52
  $search-toggle-hover-color: $global-color !default;
@@ -205,8 +208,8 @@ $search-toggle-hover-color: $global-color !default;
205
208
 
206
209
  .uk-search-default .uk-search-icon { width: $search-default-icon-width; }
207
210
 
208
- .uk-search-default .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: ($search-default-icon-width); }
209
- .uk-search-default .uk-search-icon-flip ~ .uk-search-input { padding-right: ($search-default-icon-width); }
211
+ .uk-search-default .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: ($search-default-icon-width + $search-default-icon-padding); }
212
+ .uk-search-default .uk-search-icon-flip ~ .uk-search-input { padding-right: ($search-default-icon-width + $search-default-icon-padding); }
210
213
 
211
214
 
212
215
  /* Navbar modifier
@@ -236,8 +239,8 @@ $search-toggle-hover-color: $global-color !default;
236
239
 
237
240
  .uk-search-navbar .uk-search-icon { width: $search-navbar-icon-width; }
238
241
 
239
- .uk-search-navbar .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: ($search-navbar-icon-width); }
240
- .uk-search-navbar .uk-search-icon-flip ~ .uk-search-input { padding-right: ($search-navbar-icon-width); }
242
+ .uk-search-navbar .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: ($search-navbar-icon-width + $search-navbar-icon-padding); }
243
+ .uk-search-navbar .uk-search-icon-flip ~ .uk-search-input { padding-right: ($search-navbar-icon-width + $search-navbar-icon-padding); }
241
244
 
242
245
 
243
246
  /* Large modifier
@@ -267,8 +270,8 @@ $search-toggle-hover-color: $global-color !default;
267
270
 
268
271
  .uk-search-large .uk-search-icon { width: $search-large-icon-width; }
269
272
 
270
- .uk-search-large .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: ($search-large-icon-width); }
271
- .uk-search-large .uk-search-icon-flip ~ .uk-search-input { padding-right: ($search-large-icon-width); }
273
+ .uk-search-large .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: ($search-large-icon-width + $search-large-icon-padding); }
274
+ .uk-search-large .uk-search-icon-flip ~ .uk-search-input { padding-right: ($search-large-icon-width + $search-large-icon-padding); }
272
275
 
273
276
 
274
277
  /* Toggle
@@ -40,6 +40,7 @@ $border-rounded-border-radius: 5px !default;
40
40
  $box-shadow-duration: 0.1s !default;
41
41
 
42
42
  $box-shadow-bottom-height: 30px !default;
43
+ $box-shadow-bottom-bottom: (-$box-shadow-bottom-height) !default;
43
44
  $box-shadow-bottom-border-radius: 100% !default;
44
45
  $box-shadow-bottom-background: #444 !default;
45
46
  $box-shadow-bottom-blur: 20px !default;
@@ -303,10 +304,10 @@ $dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3)
303
304
  }
304
305
 
305
306
  .uk-box-shadow-bottom::after {
306
- content: '';
307
+ content: "";
307
308
  /* 1 */
308
309
  position: absolute;
309
- bottom: (-$box-shadow-bottom-height);
310
+ bottom: $box-shadow-bottom-bottom;
310
311
  left: 0;
311
312
  right: 0;
312
313
  z-index: -1;
@@ -370,6 +370,13 @@ $width-2xlarge-width: 750px !default;
370
370
 
371
371
  }
372
372
 
373
+ /* Intrinsic Widths
374
+ ========================================================================== */
375
+
376
+ .uk-width-max-content { width: max-content; }
377
+
378
+ .uk-width-min-content { width: min-content; }
379
+
373
380
 
374
381
  // Hooks
375
382
  // ========================================================================
@@ -836,16 +836,19 @@ $search-default-padding-horizontal: 10px !default;
836
836
  $search-default-background: transparent !default;
837
837
  $search-default-focus-background: darken($search-default-background, 5%) !default;
838
838
  $search-default-icon-width: $global-control-height !default;
839
+ $search-default-icon-padding: 0 !default;
839
840
  $search-navbar-width: 400px !default;
840
841
  $search-navbar-height: 40px !default;
841
842
  $search-navbar-background: transparent !default;
842
843
  $search-navbar-font-size: $global-large-font-size !default;
843
844
  $search-navbar-icon-width: 40px !default;
845
+ $search-navbar-icon-padding: 0 !default;
844
846
  $search-large-width: 500px !default;
845
847
  $search-large-height: 80px !default;
846
848
  $search-large-background: transparent !default;
847
849
  $search-large-font-size: $global-2xlarge-font-size !default;
848
850
  $search-large-icon-width: 80px !default;
851
+ $search-large-icon-padding: 0 !default;
849
852
  $search-toggle-color: $global-muted-color !default;
850
853
  $search-toggle-hover-color: $global-color !default;
851
854
  $inverse-search-color: $inverse-global-color !default;
@@ -1037,6 +1040,7 @@ $panel-scrollable-border: $global-border !default;
1037
1040
  $border-rounded-border-radius: 5px !default;
1038
1041
  $box-shadow-duration: 0.1s !default;
1039
1042
  $box-shadow-bottom-height: 30px !default;
1043
+ $box-shadow-bottom-bottom: (-$box-shadow-bottom-height) !default;
1040
1044
  $box-shadow-bottom-border-radius: 100% !default;
1041
1045
  $box-shadow-bottom-background: #444 !default;
1042
1046
  $box-shadow-bottom-blur: 20px !default;
@@ -834,16 +834,19 @@ $search-default-padding-horizontal: 10px !default;
834
834
  $search-default-background: $global-muted-background !default;
835
835
  $search-default-focus-background: darken($search-default-background, 5%) !default;
836
836
  $search-default-icon-width: $global-control-height !default;
837
+ $search-default-icon-padding: 0 !default;
837
838
  $search-navbar-width: 400px !default;
838
839
  $search-navbar-height: 40px !default;
839
840
  $search-navbar-background: transparent !default;
840
841
  $search-navbar-font-size: $global-large-font-size !default;
841
842
  $search-navbar-icon-width: 40px !default;
843
+ $search-navbar-icon-padding: 0 !default;
842
844
  $search-large-width: 500px !default;
843
845
  $search-large-height: 80px !default;
844
846
  $search-large-background: transparent !default;
845
847
  $search-large-font-size: $global-2xlarge-font-size !default;
846
848
  $search-large-icon-width: 80px !default;
849
+ $search-large-icon-padding: 0 !default;
847
850
  $search-toggle-color: $global-muted-color !default;
848
851
  $search-toggle-hover-color: $global-color !default;
849
852
  $inverse-search-color: $inverse-global-color !default;
@@ -1035,6 +1038,7 @@ $panel-scrollable-border: $global-border !default;
1035
1038
  $border-rounded-border-radius: 5px !default;
1036
1039
  $box-shadow-duration: 0.1s !default;
1037
1040
  $box-shadow-bottom-height: 30px !default;
1041
+ $box-shadow-bottom-bottom: (-$box-shadow-bottom-height) !default;
1038
1042
  $box-shadow-bottom-border-radius: 100% !default;
1039
1043
  $box-shadow-bottom-background: #444 !default;
1040
1044
  $box-shadow-bottom-blur: 20px !default;