uikit 3.9.5-dev.1c5ab040d → 3.9.5-dev.24d436fbb

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 (71) hide show
  1. package/CHANGELOG.md +17 -2
  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 +31 -12
  6. package/dist/css/uikit-core-rtl.min.css +1 -1
  7. package/dist/css/uikit-core.css +28 -9
  8. package/dist/css/uikit-core.min.css +1 -1
  9. package/dist/css/uikit-rtl.css +31 -12
  10. package/dist/css/uikit-rtl.min.css +1 -1
  11. package/dist/css/uikit.css +28 -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 +61 -66
  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 +62 -67
  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/drop.js +3 -2
  49. package/src/js/core/img.js +38 -53
  50. package/src/js/core/sticky.js +6 -1
  51. package/src/js/util/dom.js +2 -5
  52. package/src/js/util/selector.js +4 -2
  53. package/src/less/components/cover.less +1 -2
  54. package/src/less/components/link.less +6 -3
  55. package/src/less/components/list.less +1 -1
  56. package/src/less/components/search.less +31 -6
  57. package/src/less/components/utility.less +7 -1
  58. package/src/less/components/width.less +7 -0
  59. package/src/less/theme/search.less +6 -0
  60. package/src/scss/components/cover.scss +1 -2
  61. package/src/scss/components/link.scss +6 -3
  62. package/src/scss/components/list.scss +1 -1
  63. package/src/scss/components/search.scss +23 -6
  64. package/src/scss/components/utility.scss +7 -1
  65. package/src/scss/components/width.scss +7 -0
  66. package/src/scss/mixins-theme.scss +12 -0
  67. package/src/scss/mixins.scss +12 -0
  68. package/src/scss/theme/search.scss +6 -0
  69. package/src/scss/variables-theme.scss +3 -0
  70. package/src/scss/variables.scss +3 -0
  71. 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.24d436fbb",
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,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) {
@@ -1,3 +1,4 @@
1
+ import {attr} from './attr';
1
2
  import {inBrowser} from './env';
2
3
  import {closest, index, matches, parent} from './filter';
3
4
  import {isDocument, isString, memoize, toNode, toNodes} from './lang';
@@ -95,8 +96,9 @@ const splitSelector = memoize(selector =>
95
96
  function domPath(element) {
96
97
  const names = [];
97
98
  while (element.parentNode) {
98
- if (element.id) {
99
- names.unshift(`#${escape(element.id)}`);
99
+ const id = attr(element, 'id');
100
+ if (id) {
101
+ names.unshift(`#${escape(id)}`);
100
102
  break;
101
103
  } else {
102
104
  let {tagName} = element;
@@ -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() {}
@@ -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
  ========================================================================== */
@@ -297,7 +303,7 @@
297
303
  }
298
304
 
299
305
  .uk-box-shadow-bottom::after {
300
- content: '';
306
+ content: "";
301
307
  /* 1 */
302
308
  position: absolute;
303
309
  bottom: -@box-shadow-bottom-height;
@@ -360,6 +360,13 @@
360
360
 
361
361
  }
362
362
 
363
+ /* Intrinsic Widths
364
+ ========================================================================== */
365
+
366
+ .uk-width-max-content { width: max-content; }
367
+
368
+ .uk-width-min-content { width: min-content; }
369
+
363
370
 
364
371
  // Hooks
365
372
  // ========================================================================
@@ -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;