uikit 3.9.3 → 3.9.5-dev.43d9beccd

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/README.md +4 -4
  3. package/build/build.js +4 -1
  4. package/build/util.js +4 -1
  5. package/dist/css/uikit-core-rtl.css +17 -6
  6. package/dist/css/uikit-core-rtl.min.css +1 -1
  7. package/dist/css/uikit-core.css +17 -6
  8. package/dist/css/uikit-core.min.css +1 -1
  9. package/dist/css/uikit-rtl.css +17 -6
  10. package/dist/css/uikit-rtl.min.css +1 -1
  11. package/dist/css/uikit.css +17 -6
  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 +1 -1
  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 +74 -60
  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 +74 -60
  44. package/dist/js/uikit.min.js +1 -1
  45. package/package.json +2 -2
  46. package/src/js/core/cover.js +1 -2
  47. package/src/js/core/drop.js +3 -2
  48. package/src/js/core/img.js +58 -41
  49. package/src/js/core/sticky.js +9 -3
  50. package/src/less/components/cover.less +1 -2
  51. package/src/less/components/link.less +6 -3
  52. package/src/less/components/search.less +22 -0
  53. package/src/less/components/utility.less +6 -0
  54. package/src/less/theme/search.less +6 -0
  55. package/src/scss/components/cover.scss +1 -2
  56. package/src/scss/components/link.scss +6 -3
  57. package/src/scss/components/search.scss +14 -0
  58. package/src/scss/components/utility.scss +6 -0
  59. package/src/scss/mixins-theme.scss +12 -0
  60. package/src/scss/mixins.scss +12 -0
  61. package/src/scss/theme/search.scss +6 -0
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.3",
5
+ "version": "3.9.5-dev.43d9beccd",
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-less": "watch-run -i -p 'src/less/**/*.less' yarn compile-less",
23
+ "watch": "watch-run -i -p 'src/less/**/*.less' yarn compile-less",
24
24
  "eslint": "eslint src/js",
25
25
  "eslint-fix": "eslint --fix src/js"
26
26
  },
@@ -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,7 +1,7 @@
1
1
  import Container from '../mixin/container';
2
2
  import Position from '../mixin/position';
3
3
  import Togglable from '../mixin/togglable';
4
- import {addClass, append, apply, css, hasClass, includes, isTouch, matches, MouseTracker, offset, on, once, parent, pointerCancel, pointerDown, pointerEnter, pointerLeave, pointerUp, query, removeClass, toggleClass, within} from 'uikit-util';
4
+ import {addClass, append, apply, attr, css, hasClass, includes, isTouch, matches, MouseTracker, offset, on, once, parent, pointerCancel, pointerDown, pointerEnter, pointerLeave, pointerUp, query, removeClass, toggleClass, within} from 'uikit-util';
5
5
 
6
6
  export let active;
7
7
 
@@ -62,7 +62,8 @@ export default {
62
62
  this.target = this.$create('toggle', query(this.toggle, this.$el), {
63
63
  target: this.$el,
64
64
  mode: this.mode
65
- });
65
+ }).$el;
66
+ attr(this.target, 'aria-haspopup', true);
66
67
  }
67
68
 
68
69
  },
@@ -1,4 +1,4 @@
1
- import {createEvent, css, Dimensions, escape, getImage, includes, isUndefined, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
1
+ import {$, attr, children, createEvent, css, data, Dimensions, escape, getImage, includes, isUndefined, once, parent, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
2
2
 
3
3
  export default {
4
4
 
@@ -6,8 +6,6 @@ export default {
6
6
 
7
7
  props: {
8
8
  dataSrc: String,
9
- dataSrcset: Boolean,
10
- sizes: String,
11
9
  width: Number,
12
10
  height: Number,
13
11
  offsetTop: String,
@@ -17,8 +15,6 @@ export default {
17
15
 
18
16
  data: {
19
17
  dataSrc: '',
20
- dataSrcset: false,
21
- sizes: false,
22
18
  width: false,
23
19
  height: false,
24
20
  offsetTop: '50vh',
@@ -32,22 +28,6 @@ export default {
32
28
  return `${this.$name}.${dataSrc}`;
33
29
  },
34
30
 
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
-
51
31
  target: {
52
32
 
53
33
  get({target}) {
@@ -72,15 +52,15 @@ export default {
72
52
 
73
53
  connected() {
74
54
 
75
- if (!window.IntersectionObserver) {
76
- setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
55
+ if (window.IntersectionObserver) {
56
+ setSrcAttrs(this.$el, this.dataSrc);
77
57
  return;
78
58
  }
79
59
 
80
60
  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));
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));
84
64
  }
85
65
 
86
66
  this.observer = new IntersectionObserver(this.load, {
@@ -107,7 +87,7 @@ export default {
107
87
  this.load(this.observer.takeRecords());
108
88
  }
109
89
 
110
- if (this.isImg) {
90
+ if (isImg(this.$el)) {
111
91
  return false;
112
92
  }
113
93
 
@@ -115,14 +95,15 @@ export default {
115
95
 
116
96
  },
117
97
 
118
- write(data) {
98
+ write(store) {
119
99
 
120
- if (this.dataSrcset && window.devicePixelRatio !== 1) {
100
+ const srcset = data(this.$el, 'data-srcset');
101
+ if (srcset && window.devicePixelRatio !== 1) {
121
102
 
122
103
  const bgSize = css(this.$el, 'backgroundSize');
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`);
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`);
126
107
  }
127
108
 
128
109
  }
@@ -142,9 +123,9 @@ export default {
142
123
  return;
143
124
  }
144
125
 
145
- this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(img => {
126
+ this._data.image = getImageFromElement(this.$el, this.dataSrc).then(img => {
146
127
 
147
- setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
128
+ setSrcAttrs(this.$el, currentSrc(img));
148
129
  storage[this.cacheKey] = currentSrc(img);
149
130
  return img;
150
131
 
@@ -163,13 +144,20 @@ export default {
163
144
 
164
145
  };
165
146
 
166
- function setSrcAttrs(el, src, srcset, sizes) {
147
+ const srcProps = ['data-src', 'data-srcset', 'sizes'];
148
+ function setSrcAttrs(el, src) {
167
149
 
150
+ const parentNode = parent(el);
168
151
  if (isImg(el)) {
169
- const set = (prop, val) => val && val !== el[prop] && (el[prop] = val);
170
- set('sizes', sizes);
171
- set('srcset', srcset);
172
- set('src', src);
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
+ src && attr(el, 'src', src);
173
161
  } else if (src) {
174
162
 
175
163
  const change = !includes(el.style.backgroundImage, src);
@@ -182,7 +170,10 @@ function setSrcAttrs(el, src, srcset, sizes) {
182
170
 
183
171
  }
184
172
 
185
- function getPlaceholderImage(width, height, sizes) {
173
+ function getPlaceholderImage(el) {
174
+ const sizes = data(el, 'sizes');
175
+ let width = data(el, 'width');
176
+ let height = data(el, 'height');
186
177
 
187
178
  if (sizes) {
188
179
  ({width, height} = Dimensions.ratio({width, height}, 'width', toPx(sizesToPixel(sizes))));
@@ -207,6 +198,24 @@ function sizesToPixel(sizes) {
207
198
  return matches || '100vw';
208
199
  }
209
200
 
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($('img', picture));
216
+ });
217
+ }
218
+
210
219
  const sizeRe = /\d+(?:\w+|%)/g;
211
220
  const additionRe = /[+-]?(\d+)/g;
212
221
  function evaluateSize(size) {
@@ -228,8 +237,16 @@ function getSourceSize(srcset, sizes) {
228
237
  return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
229
238
  }
230
239
 
240
+ function isPicture(el) {
241
+ return isA(el, 'PICTURE');
242
+ }
243
+
231
244
  function isImg(el) {
232
- return el.tagName === 'IMG';
245
+ return isA(el, 'IMG');
246
+ }
247
+
248
+ function isA(el, tagName) {
249
+ return el && el.tagName === tagName;
233
250
  }
234
251
 
235
252
  function currentSrc(el) {
@@ -1,6 +1,6 @@
1
1
  import Class from '../mixin/class';
2
2
  import Media from '../mixin/media';
3
- import {$, addClass, after, Animation, assign, css, dimensions, fastdom, hasClass, isNumeric, isString, isVisible, noop, offset, offsetPosition, parent, query, remove, removeClass, replaceClass, scrollTop, toFloat, toggleClass, toPx, trigger, within} from 'uikit-util';
3
+ import {$, addClass, after, Animation, assign, css, dimensions, fastdom, height as getHeight, hasClass, isNumeric, isString, isVisible, noop, offset, offsetPosition, parent, query, remove, removeClass, replaceClass, scrollTop, toFloat, toggleClass, toPx, trigger, within} from 'uikit-util';
4
4
 
5
5
  export default {
6
6
 
@@ -146,9 +146,15 @@ export default {
146
146
 
147
147
  height = !this.isActive ? this.$el.offsetHeight : height;
148
148
 
149
- this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top;
149
+ if (height + this.offset > getHeight(window)) {
150
+ this.inactive = true;
151
+ return false;
152
+ }
153
+
154
+ const referenceElement = this.isFixed ? this.placeholder : this.$el;
155
+ this.topOffset = offset(referenceElement).top;
150
156
  this.bottomOffset = this.topOffset + height;
151
- this.offsetParentTop = offset(this.$el.offsetParent).top;
157
+ this.offsetParentTop = offset(referenceElement.offsetParent).top;
152
158
 
153
159
  const bottom = parseProp('bottom', this);
154
160
 
@@ -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
  }
@@ -225,6 +225,11 @@
225
225
  .hook-search-navbar-input();
226
226
  }
227
227
 
228
+ /* Focus */
229
+ .uk-search-navbar .uk-search-input:focus {
230
+ .hook-search-navbar-input-focus();
231
+ }
232
+
228
233
  /*
229
234
  * Icon
230
235
  */
@@ -251,6 +256,11 @@
251
256
  .hook-search-large-input();
252
257
  }
253
258
 
259
+ /* Focus */
260
+ .uk-search-large .uk-search-input:focus {
261
+ .hook-search-large-input-focus();
262
+ }
263
+
254
264
  /*
255
265
  * Icon
256
266
  */
@@ -285,7 +295,9 @@
285
295
  .hook-search-default-input() {}
286
296
  .hook-search-default-input-focus() {}
287
297
  .hook-search-navbar-input() {}
298
+ .hook-search-navbar-input-focus() {}
288
299
  .hook-search-large-input() {}
300
+ .hook-search-large-input-focus() {}
289
301
 
290
302
  .hook-search-toggle() {}
291
303
  .hook-search-toggle-hover() {}
@@ -349,11 +361,19 @@
349
361
  .hook-inverse-search-navbar-input();
350
362
  }
351
363
 
364
+ .uk-search-navbar .uk-search-input:focus {
365
+ .hook-inverse-search-navbar-input-focus();
366
+ }
367
+
352
368
  .uk-search-large .uk-search-input {
353
369
  background-color: @inverse-search-large-background;
354
370
  .hook-inverse-search-large-input();
355
371
  }
356
372
 
373
+ .uk-search-large .uk-search-input:focus {
374
+ .hook-inverse-search-large-input-focus();
375
+ }
376
+
357
377
  //
358
378
  // Toggle
359
379
  //
@@ -373,6 +393,8 @@
373
393
  .hook-inverse-search-default-input() {}
374
394
  .hook-inverse-search-default-input-focus() {}
375
395
  .hook-inverse-search-navbar-input() {}
396
+ .hook-inverse-search-navbar-input-focus() {}
376
397
  .hook-inverse-search-large-input() {}
398
+ .hook-inverse-search-large-input-focus() {}
377
399
  .hook-inverse-search-toggle() {}
378
400
  .hook-inverse-search-toggle-hover() {}
@@ -242,6 +242,12 @@
242
242
  max-width: none;
243
243
  }
244
244
 
245
+ /*
246
+ * Fix initial iframe width. Without the viewport is expanded on iOS devices
247
+ */
248
+
249
+ [uk-responsive] { max-width: 100%; }
250
+
245
251
 
246
252
  /* Border
247
253
  ========================================================================== */
@@ -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
  }
@@ -225,6 +225,11 @@ $search-toggle-hover-color: $global-color !default;
225
225
  @if(mixin-exists(hook-search-navbar-input)) {@include hook-search-navbar-input();}
226
226
  }
227
227
 
228
+ /* Focus */
229
+ .uk-search-navbar .uk-search-input:focus {
230
+ @if(mixin-exists(hook-search-navbar-input-focus)) {@include hook-search-navbar-input-focus();}
231
+ }
232
+
228
233
  /*
229
234
  * Icon
230
235
  */
@@ -251,6 +256,11 @@ $search-toggle-hover-color: $global-color !default;
251
256
  @if(mixin-exists(hook-search-large-input)) {@include hook-search-large-input();}
252
257
  }
253
258
 
259
+ /* Focus */
260
+ .uk-search-large .uk-search-input:focus {
261
+ @if(mixin-exists(hook-search-large-input-focus)) {@include hook-search-large-input-focus();}
262
+ }
263
+
254
264
  /*
255
265
  * Icon
256
266
  */
@@ -285,7 +295,9 @@ $search-toggle-hover-color: $global-color !default;
285
295
  // @mixin hook-search-default-input(){}
286
296
  // @mixin hook-search-default-input-focus(){}
287
297
  // @mixin hook-search-navbar-input(){}
298
+ // @mixin hook-search-navbar-input-focus(){}
288
299
  // @mixin hook-search-large-input(){}
300
+ // @mixin hook-search-large-input-focus(){}
289
301
 
290
302
  // @mixin hook-search-toggle(){}
291
303
  // @mixin hook-search-toggle-hover(){}
@@ -316,6 +328,8 @@ $inverse-search-toggle-hover-color: $inverse-global-color !default;
316
328
  // @mixin hook-inverse-search-default-input(){}
317
329
  // @mixin hook-inverse-search-default-input-focus(){}
318
330
  // @mixin hook-inverse-search-navbar-input(){}
331
+ // @mixin hook-inverse-search-navbar-input-focus(){}
319
332
  // @mixin hook-inverse-search-large-input(){}
333
+ // @mixin hook-inverse-search-large-input-focus(){}
320
334
  // @mixin hook-inverse-search-toggle(){}
321
335
  // @mixin hook-inverse-search-toggle-hover(){}
@@ -242,6 +242,12 @@ $dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3)
242
242
  max-width: none;
243
243
  }
244
244
 
245
+ /*
246
+ * Fix initial iframe width. Without the viewport is expanded on iOS devices
247
+ */
248
+
249
+ [uk-responsive] { max-width: 100%; }
250
+
245
251
 
246
252
  /* Border
247
253
  ========================================================================== */
@@ -1238,11 +1238,19 @@
1238
1238
  @if(mixin-exists(hook-inverse-search-navbar-input)) {@include hook-inverse-search-navbar-input();}
1239
1239
  }
1240
1240
 
1241
+ .uk-search-navbar .uk-search-input:focus {
1242
+ @if(mixin-exists(hook-inverse-search-navbar-input-focus)) {@include hook-inverse-search-navbar-input-focus();}
1243
+ }
1244
+
1241
1245
  .uk-search-large .uk-search-input {
1242
1246
  background-color: $inverse-search-large-background;
1243
1247
  @if(mixin-exists(hook-inverse-search-large-input)) {@include hook-inverse-search-large-input();}
1244
1248
  }
1245
1249
 
1250
+ .uk-search-large .uk-search-input:focus {
1251
+ @if(mixin-exists(hook-inverse-search-large-input-focus)) {@include hook-inverse-search-large-input-focus();}
1252
+ }
1253
+
1246
1254
  //
1247
1255
  // Toggle
1248
1256
  //
@@ -1839,14 +1847,18 @@
1839
1847
  @mixin hook-search-default-input(){ border: $search-default-border-width solid $search-default-border; }
1840
1848
  @mixin hook-search-default-input-focus(){ border-color: $search-default-focus-border; }
1841
1849
  @mixin hook-search-navbar-input(){}
1850
+ @mixin hook-search-navbar-input-focus(){}
1842
1851
  @mixin hook-search-large-input(){}
1852
+ @mixin hook-search-large-input-focus(){}
1843
1853
  @mixin hook-search-toggle(){}
1844
1854
  @mixin hook-search-toggle-hover(){}
1845
1855
  @mixin hook-search-misc(){}
1846
1856
  @mixin hook-inverse-search-default-input(){ border-color: $inverse-global-border; }
1847
1857
  @mixin hook-inverse-search-default-input-focus(){}
1848
1858
  @mixin hook-inverse-search-navbar-input(){}
1859
+ @mixin hook-inverse-search-navbar-input-focus(){}
1849
1860
  @mixin hook-inverse-search-large-input(){}
1861
+ @mixin hook-inverse-search-large-input-focus(){}
1850
1862
  @mixin hook-inverse-search-toggle(){}
1851
1863
  @mixin hook-inverse-search-toggle-hover(){}
1852
1864
  @mixin hook-section(){}
@@ -992,11 +992,19 @@
992
992
  @if(mixin-exists(hook-inverse-search-navbar-input)) {@include hook-inverse-search-navbar-input();}
993
993
  }
994
994
 
995
+ .uk-search-navbar .uk-search-input:focus {
996
+ @if(mixin-exists(hook-inverse-search-navbar-input-focus)) {@include hook-inverse-search-navbar-input-focus();}
997
+ }
998
+
995
999
  .uk-search-large .uk-search-input {
996
1000
  background-color: $inverse-search-large-background;
997
1001
  @if(mixin-exists(hook-inverse-search-large-input)) {@include hook-inverse-search-large-input();}
998
1002
  }
999
1003
 
1004
+ .uk-search-large .uk-search-input:focus {
1005
+ @if(mixin-exists(hook-inverse-search-large-input-focus)) {@include hook-inverse-search-large-input-focus();}
1006
+ }
1007
+
1000
1008
  //
1001
1009
  // Toggle
1002
1010
  //
@@ -1525,14 +1533,18 @@
1525
1533
  @mixin hook-search-default-input(){}
1526
1534
  @mixin hook-search-default-input-focus(){}
1527
1535
  @mixin hook-search-navbar-input(){}
1536
+ @mixin hook-search-navbar-input-focus(){}
1528
1537
  @mixin hook-search-large-input(){}
1538
+ @mixin hook-search-large-input-focus(){}
1529
1539
  @mixin hook-search-toggle(){}
1530
1540
  @mixin hook-search-toggle-hover(){}
1531
1541
  @mixin hook-search-misc(){}
1532
1542
  @mixin hook-inverse-search-default-input(){}
1533
1543
  @mixin hook-inverse-search-default-input-focus(){}
1534
1544
  @mixin hook-inverse-search-navbar-input(){}
1545
+ @mixin hook-inverse-search-navbar-input-focus(){}
1535
1546
  @mixin hook-inverse-search-large-input(){}
1547
+ @mixin hook-inverse-search-large-input-focus(){}
1536
1548
  @mixin hook-inverse-search-toggle(){}
1537
1549
  @mixin hook-inverse-search-toggle-hover(){}
1538
1550
  @mixin hook-section(){}
@@ -38,12 +38,16 @@ $search-default-focus-border: $global-primary-background
38
38
 
39
39
  // @mixin hook-search-navbar-input(){}
40
40
 
41
+ // @mixin hook-search-navbar-input-focus(){}
42
+
41
43
 
42
44
  // Large modifiers
43
45
  // ========================================================================
44
46
 
45
47
  // @mixin hook-search-large-input(){}
46
48
 
49
+ // @mixin hook-search-large-input-focus(){}
50
+
47
51
 
48
52
  // Toggle
49
53
  // ========================================================================
@@ -68,8 +72,10 @@ $inverse-search-default-background: transparent !default;
68
72
  // @mixin hook-inverse-search-default-input-focus(){}
69
73
 
70
74
  // @mixin hook-inverse-search-navbar-input(){}
75
+ // @mixin hook-inverse-search-navbar-input-focus(){}
71
76
 
72
77
  // @mixin hook-inverse-search-large-input(){}
78
+ // @mixin hook-inverse-search-large-input-focus(){}
73
79
 
74
80
  // @mixin hook-inverse-search-toggle(){}
75
81
  // @mixin hook-inverse-search-toggle-hover(){}