uikit 3.9.4 → 3.9.5-dev.4839a0a03

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 +18 -1
  2. package/README.md +4 -4
  3. package/build/util.js +4 -1
  4. package/dist/css/uikit-core-rtl.css +17 -6
  5. package/dist/css/uikit-core-rtl.min.css +1 -1
  6. package/dist/css/uikit-core.css +17 -6
  7. package/dist/css/uikit-core.min.css +1 -1
  8. package/dist/css/uikit-rtl.css +17 -6
  9. package/dist/css/uikit-rtl.min.css +1 -1
  10. package/dist/css/uikit.css +17 -6
  11. package/dist/css/uikit.min.css +1 -1
  12. package/dist/js/components/countdown.js +1 -1
  13. package/dist/js/components/countdown.min.js +1 -1
  14. package/dist/js/components/filter.js +1 -1
  15. package/dist/js/components/filter.min.js +1 -1
  16. package/dist/js/components/lightbox-panel.js +1 -1
  17. package/dist/js/components/lightbox-panel.min.js +1 -1
  18. package/dist/js/components/lightbox.js +1 -1
  19. package/dist/js/components/lightbox.min.js +1 -1
  20. package/dist/js/components/notification.js +1 -1
  21. package/dist/js/components/notification.min.js +1 -1
  22. package/dist/js/components/parallax.js +1 -1
  23. package/dist/js/components/parallax.min.js +1 -1
  24. package/dist/js/components/slider-parallax.js +1 -1
  25. package/dist/js/components/slider-parallax.min.js +1 -1
  26. package/dist/js/components/slider.js +1 -1
  27. package/dist/js/components/slider.min.js +1 -1
  28. package/dist/js/components/slideshow-parallax.js +1 -1
  29. package/dist/js/components/slideshow-parallax.min.js +1 -1
  30. package/dist/js/components/slideshow.js +1 -1
  31. package/dist/js/components/slideshow.min.js +1 -1
  32. package/dist/js/components/sortable.js +1 -1
  33. package/dist/js/components/sortable.min.js +1 -1
  34. package/dist/js/components/tooltip.js +1 -1
  35. package/dist/js/components/tooltip.min.js +1 -1
  36. package/dist/js/components/upload.js +1 -1
  37. package/dist/js/components/upload.min.js +1 -1
  38. package/dist/js/uikit-core.js +64 -115
  39. package/dist/js/uikit-core.min.js +1 -1
  40. package/dist/js/uikit-icons.js +1 -1
  41. package/dist/js/uikit-icons.min.js +1 -1
  42. package/dist/js/uikit.js +64 -115
  43. package/dist/js/uikit.min.js +1 -1
  44. package/package.json +1 -1
  45. package/src/js/core/cover.js +1 -2
  46. package/src/js/core/drop.js +3 -2
  47. package/src/js/core/img.js +51 -88
  48. package/src/js/core/sticky.js +6 -1
  49. package/src/less/components/cover.less +1 -2
  50. package/src/less/components/link.less +6 -3
  51. package/src/less/components/search.less +22 -0
  52. package/src/less/components/utility.less +6 -0
  53. package/src/less/theme/search.less +6 -0
  54. package/src/scss/components/cover.scss +1 -2
  55. package/src/scss/components/link.scss +6 -3
  56. package/src/scss/components/search.scss +14 -0
  57. package/src/scss/components/utility.scss +6 -0
  58. package/src/scss/mixins-theme.scss +12 -0
  59. package/src/scss/mixins.scss +12 -0
  60. package/src/scss/theme/search.scss +6 -0
  61. package/tests/image.html +14 -40
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.4",
5
+ "version": "3.9.5-dev.4839a0a03",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -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, escape, includes, isUndefined, parent, queryAll, startsWith, toFloat, toPx, trigger} from 'uikit-util';
2
2
 
3
3
  export default {
4
4
 
@@ -6,10 +6,6 @@ export default {
6
6
 
7
7
  props: {
8
8
  dataSrc: String,
9
- dataSrcset: Boolean,
10
- sizes: String,
11
- width: Number,
12
- height: Number,
13
9
  offsetTop: String,
14
10
  offsetLeft: String,
15
11
  target: String
@@ -17,10 +13,6 @@ export default {
17
13
 
18
14
  data: {
19
15
  dataSrc: '',
20
- dataSrcset: false,
21
- sizes: false,
22
- width: false,
23
- height: false,
24
16
  offsetTop: '50vh',
25
17
  offsetLeft: '50vw',
26
18
  target: false
@@ -28,26 +20,6 @@ export default {
28
20
 
29
21
  computed: {
30
22
 
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
-
51
23
  target: {
52
24
 
53
25
  get({target}) {
@@ -58,14 +30,6 @@ export default {
58
30
  this.observe();
59
31
  }
60
32
 
61
- },
62
-
63
- offsetTop({offsetTop}) {
64
- return toPx(offsetTop, 'height');
65
- },
66
-
67
- offsetLeft({offsetLeft}) {
68
- return toPx(offsetLeft, 'width');
69
33
  }
70
34
 
71
35
  },
@@ -73,21 +37,13 @@ export default {
73
37
  connected() {
74
38
 
75
39
  if (!window.IntersectionObserver) {
76
- setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
40
+ setSrcAttrs(this.$el, this.dataSrc);
77
41
  return;
78
42
  }
79
43
 
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);
44
+ const rootMargin = `${toPx(this.offsetTop, 'height')}px ${toPx(this.offsetLeft, 'width')}px`;
45
+ this.observer = new IntersectionObserver(this.load, {rootMargin});
46
+ this.observe();
91
47
 
92
48
  },
93
49
 
@@ -103,26 +59,25 @@ export default {
103
59
  return false;
104
60
  }
105
61
 
106
- if (!image && document.readyState === 'complete') {
107
- this.load(this.observer.takeRecords());
108
- }
109
-
110
- if (this.isImg) {
62
+ if (isImg(this.$el)) {
111
63
  return false;
112
64
  }
113
65
 
114
- image && image.then(img => img && img.currentSrc !== '' && setSrcAttrs(this.$el, currentSrc(img)));
66
+ if (image && image.currentSrc !== '') {
67
+ setSrcAttrs(this.$el, currentSrc(image));
68
+ }
115
69
 
116
70
  },
117
71
 
118
- write(data) {
72
+ write(store) {
119
73
 
120
- if (this.dataSrcset && window.devicePixelRatio !== 1) {
74
+ const srcset = data(this.$el, 'data-srcset');
75
+ if (srcset && window.devicePixelRatio !== 1) {
121
76
 
122
77
  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`);
78
+ if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
79
+ store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
80
+ css(this.$el, 'backgroundSize', `${store.bgSize}px`);
126
81
  }
127
82
 
128
83
  }
@@ -142,13 +97,12 @@ export default {
142
97
  return;
143
98
  }
144
99
 
145
- this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(img => {
146
-
147
- setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
148
- storage[this.cacheKey] = currentSrc(img);
149
- return img;
100
+ if (this._data.image) {
101
+ return this._data.image;
102
+ }
150
103
 
151
- }, e => trigger(this.$el, new e.constructor(e.type, e)));
104
+ this._data.image = isImg(this.$el) ? this.$el : getImageFromElement(this.$el, this.dataSrc);
105
+ setSrcAttrs(this.$el, currentSrc(this._data.image));
152
106
 
153
107
  this.observer.disconnect();
154
108
  },
@@ -163,13 +117,13 @@ export default {
163
117
 
164
118
  };
165
119
 
166
- function setSrcAttrs(el, src, srcset, sizes) {
120
+ function setSrcAttrs(el, src) {
167
121
 
168
122
  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);
123
+ const parentNode = parent(el);
124
+ const elements = isPicture(parentNode) ? children(parentNode) : [el];
125
+ elements.forEach(setSourceProps);
126
+ src && attr(el, 'src', src);
173
127
  } else if (src) {
174
128
 
175
129
  const change = !includes(el.style.backgroundImage, src);
@@ -182,13 +136,26 @@ function setSrcAttrs(el, src, srcset, sizes) {
182
136
 
183
137
  }
184
138
 
185
- function getPlaceholderImage(width, height, sizes) {
139
+ const srcProps = ['data-src', 'data-srcset', 'sizes'];
140
+ function setSourceProps(sourceEl, targetEl) {
141
+ srcProps.forEach(prop => {
142
+ const value = data(sourceEl, prop);
143
+ if (value) {
144
+ attr(targetEl || sourceEl, prop.replace(/^(data-)+/, ''), value);
145
+ }
146
+ });
147
+ }
148
+
149
+ function getImageFromElement(el, src) {
186
150
 
187
- if (sizes) {
188
- ({width, height} = Dimensions.ratio({width, height}, 'width', toPx(sizesToPixel(sizes))));
151
+ if (!src) {
152
+ return false;
189
153
  }
190
154
 
191
- return `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}"></svg>`;
155
+ const img = new Image();
156
+ setSourceProps(el, img);
157
+ attr(img, 'src', src);
158
+ return img;
192
159
  }
193
160
 
194
161
  const sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;
@@ -228,22 +195,18 @@ function getSourceSize(srcset, sizes) {
228
195
  return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
229
196
  }
230
197
 
231
- function isImg(el) {
232
- return el.tagName === 'IMG';
198
+ function isPicture(el) {
199
+ return isA(el, 'PICTURE');
233
200
  }
234
201
 
235
- function currentSrc(el) {
236
- return el.currentSrc || el.src;
202
+ function isImg(el) {
203
+ return isA(el, 'IMG');
237
204
  }
238
205
 
239
- const key = '__test__';
240
- let storage;
206
+ function isA(el, tagName) {
207
+ return el && el.tagName === tagName;
208
+ }
241
209
 
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 = {};
210
+ function currentSrc(el) {
211
+ return el.currentSrc || el.src;
249
212
  }
@@ -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,6 +146,11 @@ export default {
146
146
 
147
147
  height = !this.isActive ? this.$el.offsetHeight : height;
148
148
 
149
+ if (height + this.offset > getHeight(window)) {
150
+ this.inactive = true;
151
+ return false;
152
+ }
153
+
149
154
  const referenceElement = this.isFixed ? this.placeholder : this.$el;
150
155
  this.topOffset = offset(referenceElement).top;
151
156
  this.bottomOffset = this.topOffset + height;
@@ -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(){}