uikit 3.9.5-dev.1c5ab040d → 3.9.5-dev.3bc3deb62

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 +12 -2
  2. package/README.md +4 -4
  3. package/dist/css/uikit-core-rtl.css +17 -6
  4. package/dist/css/uikit-core-rtl.min.css +1 -1
  5. package/dist/css/uikit-core.css +17 -6
  6. package/dist/css/uikit-core.min.css +1 -1
  7. package/dist/css/uikit-rtl.css +17 -6
  8. package/dist/css/uikit-rtl.min.css +1 -1
  9. package/dist/css/uikit.css +17 -6
  10. package/dist/css/uikit.min.css +1 -1
  11. package/dist/js/components/countdown.js +1 -1
  12. package/dist/js/components/countdown.min.js +1 -1
  13. package/dist/js/components/filter.js +1 -1
  14. package/dist/js/components/filter.min.js +1 -1
  15. package/dist/js/components/lightbox-panel.js +1 -1
  16. package/dist/js/components/lightbox-panel.min.js +1 -1
  17. package/dist/js/components/lightbox.js +1 -1
  18. package/dist/js/components/lightbox.min.js +1 -1
  19. package/dist/js/components/notification.js +1 -1
  20. package/dist/js/components/notification.min.js +1 -1
  21. package/dist/js/components/parallax.js +1 -1
  22. package/dist/js/components/parallax.min.js +1 -1
  23. package/dist/js/components/slider-parallax.js +1 -1
  24. package/dist/js/components/slider-parallax.min.js +1 -1
  25. package/dist/js/components/slider.js +1 -1
  26. package/dist/js/components/slider.min.js +1 -1
  27. package/dist/js/components/slideshow-parallax.js +1 -1
  28. package/dist/js/components/slideshow-parallax.min.js +1 -1
  29. package/dist/js/components/slideshow.js +1 -1
  30. package/dist/js/components/slideshow.min.js +1 -1
  31. package/dist/js/components/sortable.js +1 -1
  32. package/dist/js/components/sortable.min.js +1 -1
  33. package/dist/js/components/tooltip.js +1 -1
  34. package/dist/js/components/tooltip.min.js +1 -1
  35. package/dist/js/components/upload.js +1 -1
  36. package/dist/js/components/upload.min.js +1 -1
  37. package/dist/js/uikit-core.js +58 -64
  38. package/dist/js/uikit-core.min.js +1 -1
  39. package/dist/js/uikit-icons.js +1 -1
  40. package/dist/js/uikit-icons.min.js +1 -1
  41. package/dist/js/uikit.js +58 -64
  42. package/dist/js/uikit.min.js +1 -1
  43. package/package.json +1 -1
  44. package/src/js/core/cover.js +1 -2
  45. package/src/js/core/drop.js +3 -2
  46. package/src/js/core/img.js +38 -53
  47. package/src/js/core/sticky.js +6 -1
  48. package/src/js/util/dom.js +2 -5
  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 +31 -6
  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 +23 -6
  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/src/scss/variables-theme.scss +3 -0
  62. package/src/scss/variables.scss +3 -0
  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.1c5ab040d",
5
+ "version": "3.9.5-dev.3bc3deb62",
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,8 +1,13 @@
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
 
5
+ args: 'dataSrc',
6
+
5
7
  props: {
8
+ dataSrc: String,
9
+ dataSrcset: Boolean,
10
+ sizes: String,
6
11
  width: Number,
7
12
  height: Number,
8
13
  offsetTop: String,
@@ -11,6 +16,9 @@ export default {
11
16
  },
12
17
 
13
18
  data: {
19
+ dataSrc: '',
20
+ dataSrcset: false,
21
+ sizes: false,
14
22
  width: false,
15
23
  height: false,
16
24
  offsetTop: '50vh',
@@ -20,8 +28,8 @@ export default {
20
28
 
21
29
  computed: {
22
30
 
23
- cacheKey() {
24
- return `${this.$name}.${data(this.$el, 'data-src')}`;
31
+ cacheKey({dataSrc}) {
32
+ return `${this.$name}.${dataSrc}`;
25
33
  },
26
34
 
27
35
  width({width, dataWidth}) {
@@ -32,6 +40,14 @@ export default {
32
40
  return height || dataHeight;
33
41
  },
34
42
 
43
+ sizes({sizes, dataSizes}) {
44
+ return sizes || dataSizes;
45
+ },
46
+
47
+ isImg(_, $el) {
48
+ return isImg($el);
49
+ },
50
+
35
51
  target: {
36
52
 
37
53
  get({target}) {
@@ -57,14 +73,14 @@ export default {
57
73
  connected() {
58
74
 
59
75
  if (!window.IntersectionObserver) {
60
- setSrcAttrs(this.$el);
76
+ setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);
61
77
  return;
62
78
  }
63
79
 
64
80
  if (storage[this.cacheKey]) {
65
- setSrcAttrs(this.$el, storage[this.cacheKey]);
66
- } else if (isImg(this.$el) && this.width && this.height) {
67
- attr(this.$el, 'src', getPlaceholderImage(this.$el) || null);
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));
68
84
  }
69
85
 
70
86
  this.observer = new IntersectionObserver(this.load, {
@@ -91,7 +107,7 @@ export default {
91
107
  this.load(this.observer.takeRecords());
92
108
  }
93
109
 
94
- if (isImg(this.$el)) {
110
+ if (this.isImg) {
95
111
  return false;
96
112
  }
97
113
 
@@ -99,15 +115,14 @@ export default {
99
115
 
100
116
  },
101
117
 
102
- write(store) {
118
+ write(data) {
103
119
 
104
- const srcset = data(this.$el, 'data-srcset');
105
- if (srcset && window.devicePixelRatio !== 1) {
120
+ if (this.dataSrcset && window.devicePixelRatio !== 1) {
106
121
 
107
122
  const bgSize = css(this.$el, 'backgroundSize');
108
- if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === store.bgSize) {
109
- store.bgSize = getSourceSize(srcset, data(this.$el, 'sizes'));
110
- 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`);
111
126
  }
112
127
 
113
128
  }
@@ -127,9 +142,9 @@ export default {
127
142
  return;
128
143
  }
129
144
 
130
- this._data.image = getImageFromElement(this.$el).then(img => {
145
+ this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(img => {
131
146
 
132
- setSrcAttrs(this.$el, currentSrc(img));
147
+ setSrcAttrs(this.$el, currentSrc(img), img.srcset, img.sizes);
133
148
  storage[this.cacheKey] = currentSrc(img);
134
149
  return img;
135
150
 
@@ -148,19 +163,13 @@ export default {
148
163
 
149
164
  };
150
165
 
151
- const srcProps = ['data-src', 'data-srcset', 'sizes'];
152
- function setSrcAttrs(el, src) {
166
+ function setSrcAttrs(el, src, srcset, sizes) {
153
167
 
154
- const parentNode = parent(el);
155
168
  if (isImg(el)) {
156
- (isPicture(parentNode) ? children(parentNode) : [el]).forEach(el =>
157
- srcProps.forEach(prop => {
158
- const value = data(el, prop);
159
- if (value) {
160
- attr(el, prop.replace(/^(data-)+/, ''), value);
161
- }
162
- })
163
- );
169
+ const set = (prop, val) => val && val !== el[prop] && (el[prop] = val);
170
+ set('sizes', sizes);
171
+ set('srcset', srcset);
172
+ set('src', src);
164
173
  } else if (src) {
165
174
 
166
175
  const change = !includes(el.style.backgroundImage, src);
@@ -173,10 +182,7 @@ function setSrcAttrs(el, src) {
173
182
 
174
183
  }
175
184
 
176
- function getPlaceholderImage(el) {
177
- const sizes = data(el, 'sizes');
178
- let width = data(el, 'width');
179
- let height = data(el, 'height');
185
+ function getPlaceholderImage(width, height, sizes) {
180
186
 
181
187
  if (sizes) {
182
188
  ({width, height} = Dimensions.ratio({width, height}, 'width', toPx(sizesToPixel(sizes))));
@@ -201,19 +207,6 @@ function sizesToPixel(sizes) {
201
207
  return matches || '100vw';
202
208
  }
203
209
 
204
- function getImageFromElement(el) {
205
- const parentNode = parent(el);
206
- if (!isPicture(parentNode)) {
207
- return getImage(...srcProps.map(prop => data(el, prop)));
208
- }
209
-
210
- return new Promise((resolve, reject) => {
211
- const picture = parentNode.cloneNode(true);
212
- once(picture, 'load error', e => e.type === 'error' ? reject(e) : resolve(e.target), true);
213
- setSrcAttrs(el);
214
- });
215
- }
216
-
217
210
  const sizeRe = /\d+(?:\w+|%)/g;
218
211
  const additionRe = /[+-]?(\d+)/g;
219
212
  function evaluateSize(size) {
@@ -235,16 +228,8 @@ function getSourceSize(srcset, sizes) {
235
228
  return descriptors.filter(size => size >= srcSize)[0] || descriptors.pop() || '';
236
229
  }
237
230
 
238
- function isPicture(el) {
239
- return isA(el, 'PICTURE');
240
- }
241
-
242
231
  function isImg(el) {
243
- return isA(el, 'IMG');
244
- }
245
-
246
- function isA(el, tagName) {
247
- return el && el.tagName === tagName;
232
+ return el.tagName === 'IMG';
248
233
  }
249
234
 
250
235
  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,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;
@@ -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
  }
@@ -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() {}
@@ -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
  }
@@ -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(){}
@@ -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(){}