uikit 3.9.5-dev.68c425657 → 3.9.5-dev.9bd185c49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/README.md +4 -4
  3. package/build/less.js +30 -11
  4. package/build/util.js +1 -20
  5. package/dist/css/uikit-core-rtl.css +17 -12
  6. package/dist/css/uikit-core-rtl.min.css +1 -1
  7. package/dist/css/uikit-core.css +14 -9
  8. package/dist/css/uikit-core.min.css +1 -1
  9. package/dist/css/uikit-rtl.css +17 -12
  10. package/dist/css/uikit-rtl.min.css +1 -1
  11. package/dist/css/uikit.css +14 -9
  12. package/dist/css/uikit.min.css +1 -1
  13. package/dist/js/components/countdown.js +1 -1
  14. package/dist/js/components/countdown.min.js +1 -1
  15. package/dist/js/components/filter.js +1 -1
  16. package/dist/js/components/filter.min.js +1 -1
  17. package/dist/js/components/lightbox-panel.js +1 -1
  18. package/dist/js/components/lightbox-panel.min.js +1 -1
  19. package/dist/js/components/lightbox.js +1 -1
  20. package/dist/js/components/lightbox.min.js +1 -1
  21. package/dist/js/components/notification.js +1 -1
  22. package/dist/js/components/notification.min.js +1 -1
  23. package/dist/js/components/parallax.js +1 -1
  24. package/dist/js/components/parallax.min.js +1 -1
  25. package/dist/js/components/slider-parallax.js +1 -1
  26. package/dist/js/components/slider-parallax.min.js +1 -1
  27. package/dist/js/components/slider.js +1 -1
  28. package/dist/js/components/slider.min.js +1 -1
  29. package/dist/js/components/slideshow-parallax.js +1 -1
  30. package/dist/js/components/slideshow-parallax.min.js +1 -1
  31. package/dist/js/components/slideshow.js +1 -1
  32. package/dist/js/components/slideshow.min.js +1 -1
  33. package/dist/js/components/sortable.js +2 -2
  34. package/dist/js/components/sortable.min.js +1 -1
  35. package/dist/js/components/tooltip.js +1 -1
  36. package/dist/js/components/tooltip.min.js +1 -1
  37. package/dist/js/components/upload.js +1 -1
  38. package/dist/js/components/upload.min.js +1 -1
  39. package/dist/js/uikit-core.js +52 -62
  40. package/dist/js/uikit-core.min.js +1 -1
  41. package/dist/js/uikit-icons.js +1 -1
  42. package/dist/js/uikit-icons.min.js +1 -1
  43. package/dist/js/uikit.js +53 -63
  44. package/dist/js/uikit.min.js +1 -1
  45. package/package.json +6 -8
  46. package/src/js/components/sortable.js +1 -1
  47. package/src/js/core/cover.js +1 -2
  48. package/src/js/core/img.js +40 -57
  49. package/src/js/util/dom.js +2 -5
  50. package/src/less/components/cover.less +1 -2
  51. package/src/less/components/link.less +6 -3
  52. package/src/less/components/list.less +1 -1
  53. package/src/less/components/search.less +31 -6
  54. package/src/less/components/utility.less +1 -1
  55. package/src/less/theme/search.less +6 -0
  56. package/src/scss/components/cover.scss +1 -2
  57. package/src/scss/components/link.scss +6 -3
  58. package/src/scss/components/list.scss +1 -1
  59. package/src/scss/components/search.scss +23 -6
  60. package/src/scss/components/utility.scss +1 -1
  61. package/src/scss/mixins-theme.scss +12 -0
  62. package/src/scss/mixins.scss +12 -0
  63. package/src/scss/theme/search.scss +6 -0
  64. package/src/scss/variables-theme.scss +3 -0
  65. package/src/scss/variables.scss +3 -0
  66. 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.68c425657",
5
+ "version": "3.9.5-dev.9bd185c49",
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
  },
@@ -41,8 +41,8 @@
41
41
  "camelcase": "^6.2.1",
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.6",
45
+ "eslint": "^8.5.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.61.1",
54
+ "rollup-plugin-esbuild": "^4.7.2",
57
55
  "rollup-plugin-html": "^0.2.1",
58
56
  "rollup-plugin-modify": "^3.0.0",
59
57
  "rtlcss": "^3.5.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,10 +1,9 @@
1
1
  import Video from './video';
2
- import Class from '../mixin/class';
3
2
  import {css, Dimensions, parent} from 'uikit-util';
4
3
 
5
4
  export default {
6
5
 
7
- mixins: [Class, Video],
6
+ mixins: [Video],
8
7
 
9
8
  props: {
10
9
  width: Number,
@@ -1,4 +1,4 @@
1
- import {attr, children, createEvent, css, data, Dimensions, escape, getImage, includes, isUndefined, once, 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,8 @@ export default {
6
6
 
7
7
  props: {
8
8
  dataSrc: String,
9
+ dataSrcset: Boolean,
10
+ sizes: String,
9
11
  width: Number,
10
12
  height: Number,
11
13
  offsetTop: String,
@@ -15,6 +17,8 @@ export default {
15
17
 
16
18
  data: {
17
19
  dataSrc: '',
20
+ dataSrcset: false,
21
+ sizes: false,
18
22
  width: false,
19
23
  height: false,
20
24
  offsetTop: '50vh',
@@ -28,6 +32,22 @@ export default {
28
32
  return `${this.$name}.${dataSrc}`;
29
33
  },
30
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
+
31
51
  target: {
32
52
 
33
53
  get({target}) {
@@ -53,14 +73,14 @@ export default {
53
73
  connected() {
54
74
 
55
75
  if (!window.IntersectionObserver) {
56
- setSrcAttrs(this.$el);
76
+ setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
57
77
  return;
58
78
  }
59
79
 
60
80
  if (storage[this.cacheKey]) {
61
- setSrcAttrs(this.$el, storage[this.cacheKey]);
62
- } else if (isImg(this.$el) && this.width && this.height) {
63
- attr(this.$el, 'src', getPlaceholderImage(this.$el));
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));
64
84
  }
65
85
 
66
86
  this.observer = new IntersectionObserver(this.load, {
@@ -87,7 +107,7 @@ export default {
87
107
  this.load(this.observer.takeRecords());
88
108
  }
89
109
 
90
- if (isImg(this.$el)) {
110
+ if (this.isImg) {
91
111
  return false;
92
112
  }
93
113
 
@@ -95,15 +115,14 @@ export default {
95
115
 
96
116
  },
97
117
 
98
- write(store) {
118
+ write(data) {
99
119
 
100
- const srcset = data(this.$el, 'data-srcset');
101
- if (srcset && window.devicePixelRatio !== 1) {
120
+ if (this.dataSrcset && window.devicePixelRatio !== 1) {
102
121
 
103
122
  const bgSize = css(this.$el, 'backgroundSize');
104
- if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
105
- store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
106
- 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`);
107
126
  }
108
127
 
109
128
  }
@@ -123,9 +142,9 @@ export default {
123
142
  return;
124
143
  }
125
144
 
126
- this._data.image = getImageFromElement(this.$el, this.dataSrc).then(img => {
145
+ this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(img => {
127
146
 
128
- setSrcAttrs(this.$el, currentSrc(img));
147
+ setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
129
148
  storage[this.cacheKey] = currentSrc(img);
130
149
  return img;
131
150
 
@@ -144,20 +163,13 @@ export default {
144
163
 
145
164
  };
146
165
 
147
- const srcProps = ['data-src', 'data-srcset', 'sizes'];
148
- function setSrcAttrs(el, src) {
166
+ function setSrcAttrs(el, src, srcset, sizes) {
149
167
 
150
- const parentNode = parent(el);
151
168
  if (isImg(el)) {
152
- (isPicture(parentNode) ? children(parentNode) : [el]).forEach(el =>
153
- srcProps.forEach(prop => {
154
- const value = data(el, prop);
155
- if (value) {
156
- attr(el, prop.replace(/^(data-)+/, ''), value);
157
- }
158
- })
159
- );
160
- 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);
161
173
  } else if (src) {
162
174
 
163
175
  const change = !includes(el.style.backgroundImage, src);
@@ -170,10 +182,7 @@ function setSrcAttrs(el, src) {
170
182
 
171
183
  }
172
184
 
173
- function getPlaceholderImage(el) {
174
- const sizes = data(el, 'sizes');
175
- let width = data(el, 'width');
176
- let height = data(el, 'height');
185
+ function getPlaceholderImage(width, height, sizes) {
177
186
 
178
187
  if (sizes) {
179
188
  ({width, height} = Dimensions.ratio({width, height}, 'width', toPx(sizesToPixel(sizes))));
@@ -198,24 +207,6 @@ function sizesToPixel(sizes) {
198
207
  return matches || '100vw';
199
208
  }
200
209
 
201
- function getImageFromElement(el, src) {
202
- const parentNode = parent(el);
203
-
204
- if (!src) {
205
- return Promise.reject(createEvent('error', false));
206
- }
207
-
208
- if (!isPicture(parentNode)) {
209
- return getImage(src, ...srcProps.slice(1).map(prop => data(el, prop)));
210
- }
211
-
212
- return new Promise((resolve, reject) => {
213
- const picture = parentNode.cloneNode(true);
214
- once(picture, 'load error', e => e.type === 'error' ? reject(e) : resolve(e.target), true);
215
- setSrcAttrs(el);
216
- });
217
- }
218
-
219
210
  const sizeRe = /\d+(?:\w+|%)/g;
220
211
  const additionRe = /[+-]?(\d+)/g;
221
212
  function evaluateSize(size) {
@@ -237,16 +228,8 @@ function getSourceSize(srcset, sizes) {
237
228
  return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
238
229
  }
239
230
 
240
- function isPicture(el) {
241
- return isA(el, 'PICTURE');
242
- }
243
-
244
231
  function isImg(el) {
245
- return isA(el, 'IMG');
246
- }
247
-
248
- function isA(el, tagName) {
249
- return el && el.tagName === tagName;
232
+ return el.tagName === 'IMG';
250
233
  }
251
234
 
252
235
  function currentSrc(el) {
@@ -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) {
@@ -14,14 +14,13 @@
14
14
 
15
15
  /*
16
16
  * Works with iframes and embedded content
17
- * 1. Apply transform instantly. Needed if transform is transitioned.
17
+ * 1. Use attribute to apply transform instantly. Needed if transform is transitioned.
18
18
  * 2. Reset responsiveness for embedded content
19
19
  * 3. Center object
20
20
  * Note: Percent values on the `top` property only works if this element
21
21
  * is absolute positioned or if the container has a height
22
22
  */
23
23
 
24
- .uk-cover,
25
24
  /* 1 */
26
25
  [uk-cover] {
27
26
  /* 2 */
@@ -32,7 +32,8 @@
32
32
  ========================================================================== */
33
33
 
34
34
  a.uk-link-muted,
35
- .uk-link-muted a {
35
+ .uk-link-muted a,
36
+ .uk-link-toggle .uk-link-muted {
36
37
  color: @link-muted-color;
37
38
  .hook-link-muted();
38
39
  }
@@ -49,7 +50,8 @@ a.uk-link-muted:hover,
49
50
  ========================================================================== */
50
51
 
51
52
  a.uk-link-text,
52
- .uk-link-text a {
53
+ .uk-link-text a,
54
+ .uk-link-toggle .uk-link-text {
53
55
  color: inherit;
54
56
  .hook-link-text();
55
57
  }
@@ -66,7 +68,8 @@ a.uk-link-text:hover,
66
68
  ========================================================================== */
67
69
 
68
70
  a.uk-link-heading,
69
- .uk-link-heading a {
71
+ .uk-link-heading a,
72
+ .uk-link-toggle .uk-link-heading {
70
73
  color: inherit;
71
74
  .hook-link-heading();
72
75
  }
@@ -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
@@ -225,14 +228,19 @@
225
228
  .hook-search-navbar-input();
226
229
  }
227
230
 
231
+ /* Focus */
232
+ .uk-search-navbar .uk-search-input:focus {
233
+ .hook-search-navbar-input-focus();
234
+ }
235
+
228
236
  /*
229
237
  * Icon
230
238
  */
231
239
 
232
240
  .uk-search-navbar .uk-search-icon { width: @search-navbar-icon-width; }
233
241
 
234
- .uk-search-navbar .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: (@search-navbar-icon-width); }
235
- .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); }
236
244
 
237
245
 
238
246
  /* Large modifier
@@ -251,14 +259,19 @@
251
259
  .hook-search-large-input();
252
260
  }
253
261
 
262
+ /* Focus */
263
+ .uk-search-large .uk-search-input:focus {
264
+ .hook-search-large-input-focus();
265
+ }
266
+
254
267
  /*
255
268
  * Icon
256
269
  */
257
270
 
258
271
  .uk-search-large .uk-search-icon { width: @search-large-icon-width; }
259
272
 
260
- .uk-search-large .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: (@search-large-icon-width); }
261
- .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); }
262
275
 
263
276
 
264
277
  /* Toggle
@@ -285,7 +298,9 @@
285
298
  .hook-search-default-input() {}
286
299
  .hook-search-default-input-focus() {}
287
300
  .hook-search-navbar-input() {}
301
+ .hook-search-navbar-input-focus() {}
288
302
  .hook-search-large-input() {}
303
+ .hook-search-large-input-focus() {}
289
304
 
290
305
  .hook-search-toggle() {}
291
306
  .hook-search-toggle-hover() {}
@@ -349,11 +364,19 @@
349
364
  .hook-inverse-search-navbar-input();
350
365
  }
351
366
 
367
+ .uk-search-navbar .uk-search-input:focus {
368
+ .hook-inverse-search-navbar-input-focus();
369
+ }
370
+
352
371
  .uk-search-large .uk-search-input {
353
372
  background-color: @inverse-search-large-background;
354
373
  .hook-inverse-search-large-input();
355
374
  }
356
375
 
376
+ .uk-search-large .uk-search-input:focus {
377
+ .hook-inverse-search-large-input-focus();
378
+ }
379
+
357
380
  //
358
381
  // Toggle
359
382
  //
@@ -373,6 +396,8 @@
373
396
  .hook-inverse-search-default-input() {}
374
397
  .hook-inverse-search-default-input-focus() {}
375
398
  .hook-inverse-search-navbar-input() {}
399
+ .hook-inverse-search-navbar-input-focus() {}
376
400
  .hook-inverse-search-large-input() {}
401
+ .hook-inverse-search-large-input-focus() {}
377
402
  .hook-inverse-search-toggle() {}
378
403
  .hook-inverse-search-toggle-hover() {}
@@ -303,7 +303,7 @@
303
303
  }
304
304
 
305
305
  .uk-box-shadow-bottom::after {
306
- content: '';
306
+ content: "";
307
307
  /* 1 */
308
308
  position: absolute;
309
309
  bottom: -@box-shadow-bottom-height;
@@ -38,12 +38,16 @@
38
38
 
39
39
  .hook-search-navbar-input() {}
40
40
 
41
+ .hook-search-navbar-input-focus() {}
42
+
41
43
 
42
44
  // Large modifiers
43
45
  // ========================================================================
44
46
 
45
47
  .hook-search-large-input() {}
46
48
 
49
+ .hook-search-large-input-focus() {}
50
+
47
51
 
48
52
  // Toggle
49
53
  // ========================================================================
@@ -68,8 +72,10 @@
68
72
  .hook-inverse-search-default-input-focus() {}
69
73
 
70
74
  .hook-inverse-search-navbar-input() {}
75
+ .hook-inverse-search-navbar-input-focus() {}
71
76
 
72
77
  .hook-inverse-search-large-input() {}
78
+ .hook-inverse-search-large-input-focus() {}
73
79
 
74
80
  .hook-inverse-search-toggle() {}
75
81
  .hook-inverse-search-toggle-hover() {}
@@ -14,14 +14,13 @@
14
14
 
15
15
  /*
16
16
  * Works with iframes and embedded content
17
- * 1. Apply transform instantly. Needed if transform is transitioned.
17
+ * 1. Use attribute to apply transform instantly. Needed if transform is transitioned.
18
18
  * 2. Reset responsiveness for embedded content
19
19
  * 3. Center object
20
20
  * Note: Percent values on the `top` property only works if this element
21
21
  * is absolute positioned or if the container has a height
22
22
  */
23
23
 
24
- .uk-cover,
25
24
  /* 1 */
26
25
  [uk-cover] {
27
26
  /* 2 */
@@ -32,7 +32,8 @@ $link-heading-hover-text-decoration: none !default;
32
32
  ========================================================================== */
33
33
 
34
34
  a.uk-link-muted,
35
- .uk-link-muted a {
35
+ .uk-link-muted a,
36
+ .uk-link-toggle .uk-link-muted {
36
37
  color: $link-muted-color;
37
38
  @if(mixin-exists(hook-link-muted)) {@include hook-link-muted();}
38
39
  }
@@ -49,7 +50,8 @@ a.uk-link-muted:hover,
49
50
  ========================================================================== */
50
51
 
51
52
  a.uk-link-text,
52
- .uk-link-text a {
53
+ .uk-link-text a,
54
+ .uk-link-toggle .uk-link-text {
53
55
  color: inherit;
54
56
  @if(mixin-exists(hook-link-text)) {@include hook-link-text();}
55
57
  }
@@ -66,7 +68,8 @@ a.uk-link-text:hover,
66
68
  ========================================================================== */
67
69
 
68
70
  a.uk-link-heading,
69
- .uk-link-heading a {
71
+ .uk-link-heading a,
72
+ .uk-link-toggle .uk-link-heading {
70
73
  color: inherit;
71
74
  @if(mixin-exists(hook-link-heading)) {@include hook-link-heading();}
72
75
  }
@@ -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
@@ -225,14 +228,19 @@ $search-toggle-hover-color: $global-color !default;
225
228
  @if(mixin-exists(hook-search-navbar-input)) {@include hook-search-navbar-input();}
226
229
  }
227
230
 
231
+ /* Focus */
232
+ .uk-search-navbar .uk-search-input:focus {
233
+ @if(mixin-exists(hook-search-navbar-input-focus)) {@include hook-search-navbar-input-focus();}
234
+ }
235
+
228
236
  /*
229
237
  * Icon
230
238
  */
231
239
 
232
240
  .uk-search-navbar .uk-search-icon { width: $search-navbar-icon-width; }
233
241
 
234
- .uk-search-navbar .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: ($search-navbar-icon-width); }
235
- .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); }
236
244
 
237
245
 
238
246
  /* Large modifier
@@ -251,14 +259,19 @@ $search-toggle-hover-color: $global-color !default;
251
259
  @if(mixin-exists(hook-search-large-input)) {@include hook-search-large-input();}
252
260
  }
253
261
 
262
+ /* Focus */
263
+ .uk-search-large .uk-search-input:focus {
264
+ @if(mixin-exists(hook-search-large-input-focus)) {@include hook-search-large-input-focus();}
265
+ }
266
+
254
267
  /*
255
268
  * Icon
256
269
  */
257
270
 
258
271
  .uk-search-large .uk-search-icon { width: $search-large-icon-width; }
259
272
 
260
- .uk-search-large .uk-search-icon:not(.uk-search-icon-flip) ~ .uk-search-input { padding-left: ($search-large-icon-width); }
261
- .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); }
262
275
 
263
276
 
264
277
  /* Toggle
@@ -285,7 +298,9 @@ $search-toggle-hover-color: $global-color !default;
285
298
  // @mixin hook-search-default-input(){}
286
299
  // @mixin hook-search-default-input-focus(){}
287
300
  // @mixin hook-search-navbar-input(){}
301
+ // @mixin hook-search-navbar-input-focus(){}
288
302
  // @mixin hook-search-large-input(){}
303
+ // @mixin hook-search-large-input-focus(){}
289
304
 
290
305
  // @mixin hook-search-toggle(){}
291
306
  // @mixin hook-search-toggle-hover(){}
@@ -316,6 +331,8 @@ $inverse-search-toggle-hover-color: $inverse-global-color !default;
316
331
  // @mixin hook-inverse-search-default-input(){}
317
332
  // @mixin hook-inverse-search-default-input-focus(){}
318
333
  // @mixin hook-inverse-search-navbar-input(){}
334
+ // @mixin hook-inverse-search-navbar-input-focus(){}
319
335
  // @mixin hook-inverse-search-large-input(){}
336
+ // @mixin hook-inverse-search-large-input-focus(){}
320
337
  // @mixin hook-inverse-search-toggle(){}
321
338
  // @mixin hook-inverse-search-toggle-hover(){}
@@ -303,7 +303,7 @@ $dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3)
303
303
  }
304
304
 
305
305
  .uk-box-shadow-bottom::after {
306
- content: '';
306
+ content: "";
307
307
  /* 1 */
308
308
  position: absolute;
309
309
  bottom: (-$box-shadow-bottom-height);