uikit 3.12.1 → 3.12.3-dev.6377276f3

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 (73) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/build/scss.js +9 -17
  3. package/dist/css/uikit-core-rtl.css +15 -81
  4. package/dist/css/uikit-core-rtl.min.css +1 -1
  5. package/dist/css/uikit-core.css +15 -81
  6. package/dist/css/uikit-core.min.css +1 -1
  7. package/dist/css/uikit-rtl.css +15 -81
  8. package/dist/css/uikit-rtl.min.css +1 -1
  9. package/dist/css/uikit.css +15 -81
  10. package/dist/css/uikit.min.css +1 -1
  11. package/dist/js/components/countdown.js +2 -2
  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 +3 -3
  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 +22 -7
  22. package/dist/js/components/parallax.min.js +1 -1
  23. package/dist/js/components/slider-parallax.js +22 -7
  24. package/dist/js/components/slider-parallax.min.js +1 -1
  25. package/dist/js/components/slider.js +2 -2
  26. package/dist/js/components/slider.min.js +1 -1
  27. package/dist/js/components/slideshow-parallax.js +22 -7
  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 +72 -55
  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 +76 -59
  42. package/dist/js/uikit.min.js +1 -1
  43. package/package.json +1 -1
  44. package/src/js/components/countdown.js +1 -1
  45. package/src/js/components/lightbox.js +1 -1
  46. package/src/js/components/slider.js +1 -1
  47. package/src/js/core/form-custom.js +6 -7
  48. package/src/js/core/scroll.js +6 -2
  49. package/src/js/core/scrollspy-nav.js +16 -16
  50. package/src/js/core/scrollspy.js +9 -15
  51. package/src/js/core/sticky.js +1 -2
  52. package/src/js/core/toggle.js +16 -13
  53. package/src/js/mixin/media.js +29 -5
  54. package/src/js/util/mouse.js +1 -1
  55. package/src/js/util/style.js +1 -1
  56. package/src/less/components/base.less +0 -19
  57. package/src/less/components/form.less +1 -9
  58. package/src/less/components/icon.less +6 -0
  59. package/src/less/components/list.less +1 -0
  60. package/src/less/components/search.less +0 -3
  61. package/src/less/components/slider.less +3 -0
  62. package/src/less/components/slideshow.less +3 -0
  63. package/src/less/components/utility.less +0 -9
  64. package/src/scss/components/base.scss +0 -19
  65. package/src/scss/components/form.scss +1 -7
  66. package/src/scss/components/icon.scss +6 -0
  67. package/src/scss/components/list.scss +1 -0
  68. package/src/scss/components/search.scss +0 -1
  69. package/src/scss/components/slider.scss +3 -0
  70. package/src/scss/components/slideshow.scss +3 -0
  71. package/src/scss/components/utility.scss +0 -9
  72. package/src/scss/mixins-theme.scss +0 -4
  73. package/src/scss/mixins.scss +0 -4
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.12.1",
5
+ "version": "3.12.3-dev.6377276f3",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -70,7 +70,7 @@ export default {
70
70
  continue;
71
71
  }
72
72
 
73
- let digits = String(Math.floor(timespan[unit]));
73
+ let digits = String(Math.trunc(timespan[unit]));
74
74
 
75
75
  digits = digits.length < 2 ? `0${digits}` : digits;
76
76
 
@@ -56,7 +56,7 @@ export default {
56
56
  },
57
57
 
58
58
  hide() {
59
- return this.panel && this.panel.hide();
59
+ return this.panel?.hide();
60
60
  },
61
61
  },
62
62
  };
@@ -45,7 +45,7 @@ export default {
45
45
  return (
46
46
  finite ||
47
47
  Math.ceil(getWidth(this.list)) <
48
- Math.floor(dimensions(this.list).width + getMaxElWidth(this.list) + this.center)
48
+ Math.trunc(dimensions(this.list).width + getMaxElWidth(this.list) + this.center)
49
49
  );
50
50
  },
51
51
 
@@ -42,13 +42,12 @@ export default {
42
42
  let option;
43
43
  const prop = isInput(target) ? 'value' : 'textContent';
44
44
  const prev = target[prop];
45
- const value =
46
- input.files && input.files[0]
47
- ? input.files[0].name
48
- : matches(input, 'select') &&
49
- (option = $$('option', input).filter((el) => el.selected)[0]) // eslint-disable-line prefer-destructuring
50
- ? option.textContent
51
- : input.value;
45
+ const value = input.files?.[0]
46
+ ? input.files[0].name
47
+ : matches(input, 'select') &&
48
+ (option = $$('option', input).filter((el) => el.selected)[0]) // eslint-disable-line prefer-destructuring
49
+ ? option.textContent
50
+ : input.value;
52
51
 
53
52
  if (prev !== value) {
54
53
  target[prop] = value;
@@ -1,4 +1,4 @@
1
- import { $, escape, scrollIntoView, trigger } from 'uikit-util';
1
+ import { $, scrollIntoView, trigger } from 'uikit-util';
2
2
 
3
3
  export default {
4
4
  props: {
@@ -27,7 +27,11 @@ export default {
27
27
  }
28
28
 
29
29
  e.preventDefault();
30
- this.scrollTo(`#${escape(decodeURIComponent((this.$el.hash || '').substr(1)))}`);
30
+ this.scrollTo(getTargetElement(this.$el));
31
31
  },
32
32
  },
33
33
  };
34
+
35
+ export function getTargetElement(el) {
36
+ return document.getElementById(decodeURIComponent(el.hash).substring(1));
37
+ }
@@ -1,17 +1,16 @@
1
1
  import {
2
2
  $$,
3
- addClass,
4
3
  closest,
5
- escape,
6
4
  getViewport,
7
5
  getViewportClientHeight,
8
6
  hasClass,
9
7
  isVisible,
10
8
  offset,
11
- removeClass,
12
9
  scrollParents,
10
+ toggleClass,
13
11
  trigger,
14
12
  } from 'uikit-util';
13
+ import { getTargetElement } from './scroll';
15
14
 
16
15
  export default {
17
16
  props: {
@@ -45,10 +44,6 @@ export default {
45
44
  immediate: true,
46
45
  },
47
46
 
48
- targets() {
49
- return $$(this.links.map((el) => escape(el.hash).substr(1)).join(','));
50
- },
51
-
52
47
  elements({ closest: selector }) {
53
48
  return closest(this.links, selector || '*');
54
49
  },
@@ -57,13 +52,15 @@ export default {
57
52
  update: [
58
53
  {
59
54
  read() {
60
- const { length } = this.targets;
55
+ const targets = this.links.map(getTargetElement).filter(Boolean);
56
+
57
+ const { length } = targets;
61
58
 
62
59
  if (!length || !isVisible(this.$el)) {
63
60
  return false;
64
61
  }
65
62
 
66
- const [scrollElement] = scrollParents(this.targets, /auto|scroll/, true);
63
+ const [scrollElement] = scrollParents(targets, /auto|scroll/, true);
67
64
  const { scrollTop, scrollHeight } = scrollElement;
68
65
  const max = scrollHeight - getViewportClientHeight(scrollElement);
69
66
  let active = false;
@@ -71,15 +68,17 @@ export default {
71
68
  if (scrollTop === max) {
72
69
  active = length - 1;
73
70
  } else {
74
- this.targets.every((el, i) => {
71
+ for (const i in targets) {
75
72
  if (
76
- offset(el).top - offset(getViewport(scrollElement)).top - this.offset <=
73
+ offset(targets[i]).top -
74
+ offset(getViewport(scrollElement)).top -
75
+ this.offset >
77
76
  0
78
77
  ) {
79
- active = i;
80
- return true;
78
+ break;
81
79
  }
82
- });
80
+ active = +i;
81
+ }
83
82
 
84
83
  if (active === false && this.overflow) {
85
84
  active = 0;
@@ -93,8 +92,9 @@ export default {
93
92
  const changed = active !== false && !hasClass(this.elements[active], this.cls);
94
93
 
95
94
  this.links.forEach((el) => el.blur());
96
- removeClass(this.elements, this.cls);
97
- addClass(this.elements[active], this.cls);
95
+ for (const i in this.elements) {
96
+ toggleClass(this.elements[i], this.cls, +i === active);
97
+ }
98
98
 
99
99
  if (changed) {
100
100
  trigger(this.$el, 'active', [active, this.elements[active]]);
@@ -54,23 +54,14 @@ export default {
54
54
 
55
55
  disconnected() {
56
56
  for (const el of this.elements) {
57
- removeClass(el, this.inViewClass, el[stateKey] ? el[stateKey].cls : '');
57
+ removeClass(el, this.inViewClass, el[stateKey]?.cls || '');
58
58
  delete el[stateKey];
59
59
  }
60
60
  },
61
61
 
62
62
  update: [
63
63
  {
64
- read(data) {
65
- // Let child components be applied at least once first
66
- if (!data.update) {
67
- Promise.resolve().then(() => {
68
- this.$emit();
69
- data.update = true;
70
- });
71
- return false;
72
- }
73
-
64
+ read() {
74
65
  for (const el of this.elements) {
75
66
  if (!el[stateKey]) {
76
67
  el[stateKey] = { cls: getData(el, 'uk-scrollspy-class') || this.cls };
@@ -110,7 +101,7 @@ export default {
110
101
  toggle(el, inview) {
111
102
  const state = el[stateKey];
112
103
 
113
- state.off && state.off();
104
+ state.off?.();
114
105
 
115
106
  css(el, 'visibility', !inview && this.hidden ? 'hidden' : '');
116
107
 
@@ -118,9 +109,12 @@ export default {
118
109
  toggleClass(el, state.cls);
119
110
 
120
111
  if (/\buk-animation-/.test(state.cls)) {
121
- state.off = once(el, 'animationcancel animationend', () =>
122
- removeClasses(el, 'uk-animation-[\\w-]+')
123
- );
112
+ const removeAnimationClasses = () => removeClasses(el, 'uk-animation-[\\w-]+');
113
+ if (inview) {
114
+ state.off = once(el, 'animationcancel animationend', removeAnimationClasses);
115
+ } else {
116
+ removeAnimationClasses();
117
+ }
124
118
  }
125
119
 
126
120
  trigger(el, inview ? 'inview' : 'outview');
@@ -186,7 +186,6 @@ export default {
186
186
 
187
187
  const overflow = Math.max(0, height + offset - windowHeight);
188
188
  const topOffset = getOffset(referenceElement).top;
189
- const offsetParentTop = getOffset(referenceElement.offsetParent).top;
190
189
 
191
190
  const top = parseProp(this.top, this.$el, topOffset);
192
191
  const bottom = parseProp(this.bottom, this.$el, topOffset + height, true);
@@ -202,7 +201,6 @@ export default {
202
201
  offset,
203
202
  overflow,
204
203
  topOffset,
205
- offsetParentTop,
206
204
  height,
207
205
  margin,
208
206
  width: dimensions(isVisible(this.widthElement) ? this.widthElement : this.$el)
@@ -244,6 +242,7 @@ export default {
244
242
  prevDir,
245
243
  scroll,
246
244
  prevScroll,
245
+ offsetParentTop: getOffset(this.$el.offsetParent).top,
247
246
  overflowScroll: clamp(
248
247
  overflowScroll + clamp(scroll, start, end) - clamp(prevScroll, start, end),
249
248
  0,
@@ -189,22 +189,25 @@ export default {
189
189
  }
190
190
  },
191
191
  },
192
- ],
193
192
 
194
- update: {
195
- read() {
196
- return includes(this.mode, 'media') && this.media ? { match: this.matchMedia } : false;
197
- },
193
+ {
194
+ name: 'mediachange',
198
195
 
199
- write({ match }) {
200
- const toggled = this.isToggled(this.target);
201
- if (match ? !toggled : toggled) {
202
- this.toggle();
203
- }
204
- },
196
+ filter() {
197
+ return includes(this.mode, 'media');
198
+ },
205
199
 
206
- events: ['resize'],
207
- },
200
+ el() {
201
+ return this.target;
202
+ },
203
+
204
+ handler(e, mediaObj) {
205
+ if (mediaObj.matches ^ this.isToggled(this.target)) {
206
+ this.toggle();
207
+ }
208
+ },
209
+ },
210
+ ],
208
211
 
209
212
  methods: {
210
213
  async toggle(type) {
@@ -1,4 +1,13 @@
1
- import { getCssVar, isString, toFloat } from 'uikit-util';
1
+ import {
2
+ getCssVar,
3
+ isString,
4
+ on,
5
+ trigger,
6
+ toFloat,
7
+ startsWith,
8
+ isNumeric,
9
+ createEvent,
10
+ } from 'uikit-util';
2
11
 
3
12
  export default {
4
13
  props: {
@@ -11,15 +20,30 @@ export default {
11
20
 
12
21
  computed: {
13
22
  matchMedia() {
14
- const media = toMedia(this.media);
15
- return !media || window.matchMedia(media).matches;
23
+ return this.mediaObj?.matches;
16
24
  },
17
25
  },
26
+
27
+ connected() {
28
+ const media = toMedia(this.media);
29
+ this.mediaObj = window.matchMedia(media);
30
+ const handler = () =>
31
+ trigger(this.$el, createEvent('mediachange', false, true, [this.mediaObj]));
32
+ this.offMediaObj = on(this.mediaObj, 'change', () => {
33
+ handler();
34
+ this.$emit('resize');
35
+ });
36
+ handler();
37
+ },
38
+
39
+ disconnected() {
40
+ this.offMediaObj?.();
41
+ },
18
42
  };
19
43
 
20
44
  function toMedia(value) {
21
45
  if (isString(value)) {
22
- if (value[0] === '@') {
46
+ if (startsWith(value, '@')) {
23
47
  const name = `breakpoint-${value.substr(1)}`;
24
48
  value = toFloat(getCssVar(name));
25
49
  } else if (isNaN(value)) {
@@ -27,5 +51,5 @@ function toMedia(value) {
27
51
  }
28
52
  }
29
53
 
30
- return value && !isNaN(value) ? `(min-width: ${value}px)` : false;
54
+ return value && isNumeric(value) ? `(min-width: ${value}px)` : '';
31
55
  }
@@ -25,7 +25,7 @@ MouseTracker.prototype = {
25
25
  },
26
26
 
27
27
  cancel() {
28
- this.unbind && this.unbind();
28
+ this.unbind?.();
29
29
  this.interval && clearInterval(this.interval);
30
30
  },
31
31
 
@@ -80,7 +80,7 @@ export function getCssVar(name) {
80
80
  // https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty
81
81
  export const propName = memoize((name) => vendorPropName(name));
82
82
 
83
- const cssPrefixes = ['webkit', 'moz', 'ms'];
83
+ const cssPrefixes = ['webkit', 'moz'];
84
84
 
85
85
  function vendorPropName(name) {
86
86
  name = hyphenate(name);
@@ -504,27 +504,8 @@ pre code { font-family: @base-pre-font-family; }
504
504
  /* Focus
505
505
  ========================================================================== */
506
506
 
507
- /*
508
- * Safari doesn't support `:focus-visible` yet. It also doesn't set focus if clicking a button or anchor.
509
- * 1. Fallback: Remove `:focus` for a negative tabindexes.
510
- * 2. Fallback: Set `:focus` style but not for negative tabindexes.
511
- * 3. Fallback: Remove `:focus` style for browsers which support `:focus-visible`.
512
- * 4. Set `:focus-visible` style for browsers which support it.
513
- */
514
-
515
- /* 1 */
516
507
  :focus { outline: none; }
517
508
 
518
- /* 2 */
519
- :focus:not([tabindex^='-']) {
520
- outline: @base-focus-outline-width @base-focus-outline-style @base-focus-outline;
521
- outline-offset: @base-focus-outline-offset;
522
- }
523
-
524
- /* 3 */
525
- :focus:not(:focus-visible) { outline: none; }
526
-
527
- /* 4 */
528
509
  :focus-visible { outline: @base-focus-outline-width @base-focus-outline-style @base-focus-outline; }
529
510
 
530
511
 
@@ -310,10 +310,8 @@
310
310
  * Placeholder
311
311
  */
312
312
 
313
- .uk-input::-ms-input-placeholder { color: @form-placeholder-color !important; }
314
313
  .uk-input::placeholder { color: @form-placeholder-color; }
315
314
 
316
- .uk-textarea::-ms-input-placeholder { color: @form-placeholder-color !important; }
317
315
  .uk-textarea::placeholder { color: @form-placeholder-color; }
318
316
 
319
317
 
@@ -423,8 +421,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
423
421
  /*
424
422
  * 1. Remove default style. Also works in Firefox
425
423
  * 2. Style
426
- * 3. Remove default style in IE 10/11
427
- * 4. Set `color` for options in the select dropdown, because the inherited `color` might be too light.
424
+ * 3. Set `color` for options in the select dropdown, because the inherited `color` might be too light.
428
425
  */
429
426
 
430
427
  .uk-select:not([multiple]):not([size]) {
@@ -439,9 +436,6 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
439
436
  }
440
437
 
441
438
  /* 3 */
442
- .uk-select:not([multiple]):not([size])::-ms-expand { display: none; }
443
-
444
- /* 4 */
445
439
  .uk-select:not([multiple]):not([size]) option { color: @form-select-option-color; }
446
440
 
447
441
  /*
@@ -820,10 +814,8 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
820
814
  // Placeholder
821
815
  //
822
816
 
823
- .uk-input::-ms-input-placeholder { color: @inverse-form-placeholder-color !important; }
824
817
  .uk-input::placeholder { color: @inverse-form-placeholder-color; }
825
818
 
826
- .uk-textarea::-ms-input-placeholder { color: @inverse-form-placeholder-color !important; }
827
819
  .uk-textarea::placeholder { color: @inverse-form-placeholder-color; }
828
820
 
829
821
  //
@@ -107,15 +107,21 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
107
107
 
108
108
  /*
109
109
  * Display images in icon dimensions
110
+ * 1. Required for `span` with background image
111
+ * 2. Required for `image`
110
112
  */
111
113
 
112
114
  .uk-icon-image {
113
115
  width: @icon-image-size;
114
116
  height: @icon-image-size;
117
+ /* 1 */
115
118
  background-position: 50% 50%;
116
119
  background-repeat: no-repeat;
117
120
  background-size: contain;
118
121
  vertical-align: middle;
122
+ /* 2 */
123
+ object-fit: scale-down;
124
+ max-width: none;
119
125
  }
120
126
 
121
127
 
@@ -133,6 +133,7 @@
133
133
 
134
134
  .uk-list-bullet > ::before {
135
135
  content: "";
136
+ display: list-item;
136
137
  position: relative;
137
138
  left: -@list-padding-left;
138
139
  width: @list-padding-left;
@@ -129,7 +129,6 @@
129
129
  .uk-search-input:focus { outline: none; }
130
130
 
131
131
  /* Placeholder */
132
- .uk-search-input:-ms-input-placeholder { color: @search-placeholder-color !important; }
133
132
  .uk-search-input::placeholder { color: @search-placeholder-color; }
134
133
 
135
134
 
@@ -334,10 +333,8 @@
334
333
 
335
334
  .uk-search-input { color: @inverse-search-color; }
336
335
 
337
- .uk-search-input:-ms-input-placeholder { color: @inverse-search-placeholder-color !important; }
338
336
  .uk-search-input::placeholder { color: @inverse-search-placeholder-color; }
339
337
 
340
-
341
338
  //
342
339
  // Icon
343
340
  //
@@ -59,6 +59,7 @@
59
59
  /*
60
60
  * 1. Optimize animation
61
61
  * 2. Create a containing block. In Safari it's neither created by `transform` nor `will-change`.
62
+ * 3. Disable horizontal panning gestures
62
63
  */
63
64
 
64
65
  .uk-slider-items {
@@ -66,6 +67,8 @@
66
67
  will-change: transform;
67
68
  /* 2 */
68
69
  position: relative;
70
+ /* 3 */
71
+ touch-action: pan-y;
69
72
  }
70
73
 
71
74
  /*
@@ -33,6 +33,7 @@
33
33
  * 2. Reset list
34
34
  * 3. Clip child elements
35
35
  * 4. Prevent displaying the callout information on iOS.
36
+ * 5. Disable horizontal panning gestures
36
37
  */
37
38
 
38
39
  .uk-slideshow-items {
@@ -47,6 +48,8 @@
47
48
  overflow: hidden;
48
49
  /* 4 */
49
50
  -webkit-touch-callout: none;
51
+ /* 5 */
52
+ touch-action: pan-y;
50
53
  }
51
54
 
52
55
 
@@ -358,8 +358,6 @@
358
358
  * https://bugzilla.mozilla.org/show_bug.cgi?id=214004
359
359
  * 2. In Firefox, a floating `::first-letter` doesn't have a line box and there for no `line-height`
360
360
  * https://bugzilla.mozilla.org/show_bug.cgi?id=317933
361
- * 3. Caused by 1.: Edge creates two nested `::first-letter` containers, one for each selector
362
- * This doubles the `font-size` exponential when using the `em` unit.
363
361
  */
364
362
 
365
363
  .uk-dropcap::first-letter,
@@ -381,13 +379,6 @@
381
379
 
382
380
  }
383
381
 
384
- /* 3 */
385
- @supports (-ms-ime-align: auto) {
386
-
387
- .uk-dropcap > p:first-of-type::first-letter { font-size: 1em; }
388
-
389
- }
390
-
391
382
 
392
383
  /* Logo
393
384
  ========================================================================== */
@@ -504,27 +504,8 @@ pre code { font-family: $base-pre-font-family; }
504
504
  /* Focus
505
505
  ========================================================================== */
506
506
 
507
- /*
508
- * Safari doesn't support `:focus-visible` yet. It also doesn't set focus if clicking a button or anchor.
509
- * 1. Fallback: Remove `:focus` for a negative tabindexes.
510
- * 2. Fallback: Set `:focus` style but not for negative tabindexes.
511
- * 3. Fallback: Remove `:focus` style for browsers which support `:focus-visible`.
512
- * 4. Set `:focus-visible` style for browsers which support it.
513
- */
514
-
515
- /* 1 */
516
507
  :focus { outline: none; }
517
508
 
518
- /* 2 */
519
- :focus:not([tabindex^='-']) {
520
- outline: $base-focus-outline-width $base-focus-outline-style $base-focus-outline;
521
- outline-offset: $base-focus-outline-offset;
522
- }
523
-
524
- /* 3 */
525
- :focus:not(:focus-visible) { outline: none; }
526
-
527
- /* 4 */
528
509
  :focus-visible { outline: $base-focus-outline-width $base-focus-outline-style $base-focus-outline; }
529
510
 
530
511
 
@@ -310,10 +310,8 @@ $internal-form-checkbox-indeterminate-image: "data:image/svg+xml;charset=UTF-8,%
310
310
  * Placeholder
311
311
  */
312
312
 
313
- .uk-input::-ms-input-placeholder { color: $form-placeholder-color !important; }
314
313
  .uk-input::placeholder { color: $form-placeholder-color; }
315
314
 
316
- .uk-textarea::-ms-input-placeholder { color: $form-placeholder-color !important; }
317
315
  .uk-textarea::placeholder { color: $form-placeholder-color; }
318
316
 
319
317
 
@@ -423,8 +421,7 @@ select.uk-form-width-xsmall { width: ($form-width-xsmall + 25px); }
423
421
  /*
424
422
  * 1. Remove default style. Also works in Firefox
425
423
  * 2. Style
426
- * 3. Remove default style in IE 10/11
427
- * 4. Set `color` for options in the select dropdown, because the inherited `color` might be too light.
424
+ * 3. Set `color` for options in the select dropdown, because the inherited `color` might be too light.
428
425
  */
429
426
 
430
427
  .uk-select:not([multiple]):not([size]) {
@@ -439,9 +436,6 @@ select.uk-form-width-xsmall { width: ($form-width-xsmall + 25px); }
439
436
  }
440
437
 
441
438
  /* 3 */
442
- .uk-select:not([multiple]):not([size])::-ms-expand { display: none; }
443
-
444
- /* 4 */
445
439
  .uk-select:not([multiple]):not([size]) option { color: $form-select-option-color; }
446
440
 
447
441
  /*
@@ -107,15 +107,21 @@ button.uk-icon:not(:disabled) { cursor: pointer; }
107
107
 
108
108
  /*
109
109
  * Display images in icon dimensions
110
+ * 1. Required for `span` with background image
111
+ * 2. Required for `image`
110
112
  */
111
113
 
112
114
  .uk-icon-image {
113
115
  width: $icon-image-size;
114
116
  height: $icon-image-size;
117
+ /* 1 */
115
118
  background-position: 50% 50%;
116
119
  background-repeat: no-repeat;
117
120
  background-size: contain;
118
121
  vertical-align: middle;
122
+ /* 2 */
123
+ object-fit: scale-down;
124
+ max-width: none;
119
125
  }
120
126
 
121
127
 
@@ -133,6 +133,7 @@ $internal-list-bullet-image: "data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D
133
133
 
134
134
  .uk-list-bullet > ::before {
135
135
  content: "";
136
+ display: list-item;
136
137
  position: relative;
137
138
  left: (-$list-padding-left);
138
139
  width: $list-padding-left;
@@ -129,7 +129,6 @@ $search-toggle-hover-color: $global-color !default;
129
129
  .uk-search-input:focus { outline: none; }
130
130
 
131
131
  /* Placeholder */
132
- .uk-search-input:-ms-input-placeholder { color: $search-placeholder-color !important; }
133
132
  .uk-search-input::placeholder { color: $search-placeholder-color; }
134
133
 
135
134
 
@@ -59,6 +59,7 @@ $slider-container-margin-right: -25px !default;
59
59
  /*
60
60
  * 1. Optimize animation
61
61
  * 2. Create a containing block. In Safari it's neither created by `transform` nor `will-change`.
62
+ * 3. Disable horizontal panning gestures
62
63
  */
63
64
 
64
65
  .uk-slider-items {
@@ -66,6 +67,8 @@ $slider-container-margin-right: -25px !default;
66
67
  will-change: transform;
67
68
  /* 2 */
68
69
  position: relative;
70
+ /* 3 */
71
+ touch-action: pan-y;
69
72
  }
70
73
 
71
74
  /*
@@ -33,6 +33,7 @@
33
33
  * 2. Reset list
34
34
  * 3. Clip child elements
35
35
  * 4. Prevent displaying the callout information on iOS.
36
+ * 5. Disable horizontal panning gestures
36
37
  */
37
38
 
38
39
  .uk-slideshow-items {
@@ -47,6 +48,8 @@
47
48
  overflow: hidden;
48
49
  /* 4 */
49
50
  -webkit-touch-callout: none;
51
+ /* 5 */
52
+ touch-action: pan-y;
50
53
  }
51
54
 
52
55