uikit 3.25.27-dev.2d5695a → 3.25.27-dev.9e97c1f

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 (224) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/build/prefix.js +1 -1
  3. package/build/publishDev.js +1 -1
  4. package/build/scope.js +1 -1
  5. package/build/scss.js +1 -1
  6. package/build/util.js +0 -2
  7. package/dist/css/uikit-core-rtl.css +1327 -1204
  8. package/dist/css/uikit-core-rtl.min.css +1 -1
  9. package/dist/css/uikit-core.css +1327 -1204
  10. package/dist/css/uikit-core.min.css +1 -1
  11. package/dist/css/uikit-rtl.css +1339 -1223
  12. package/dist/css/uikit-rtl.min.css +1 -1
  13. package/dist/css/uikit.css +1339 -1223
  14. package/dist/css/uikit.min.css +1 -1
  15. package/dist/js/components/countdown.js +1 -1
  16. package/dist/js/components/countdown.min.js +1 -1
  17. package/dist/js/components/filter.js +1 -1
  18. package/dist/js/components/filter.min.js +1 -1
  19. package/dist/js/components/lightbox-panel.js +134 -135
  20. package/dist/js/components/lightbox-panel.min.js +1 -1
  21. package/dist/js/components/lightbox.js +135 -136
  22. package/dist/js/components/lightbox.min.js +1 -1
  23. package/dist/js/components/marquee.js +215 -0
  24. package/dist/js/components/marquee.min.js +1 -0
  25. package/dist/js/components/notification.js +8 -6
  26. package/dist/js/components/notification.min.js +1 -1
  27. package/dist/js/components/parallax.js +8 -12
  28. package/dist/js/components/parallax.min.js +1 -1
  29. package/dist/js/components/slider-parallax.js +8 -12
  30. package/dist/js/components/slider-parallax.min.js +1 -1
  31. package/dist/js/components/slider.js +51 -25
  32. package/dist/js/components/slider.min.js +1 -1
  33. package/dist/js/components/slideshow-parallax.js +8 -12
  34. package/dist/js/components/slideshow-parallax.min.js +1 -1
  35. package/dist/js/components/slideshow.js +81 -102
  36. package/dist/js/components/slideshow.min.js +1 -1
  37. package/dist/js/components/sortable.js +1 -1
  38. package/dist/js/components/sortable.min.js +1 -1
  39. package/dist/js/components/tooltip.js +15 -17
  40. package/dist/js/components/tooltip.min.js +1 -1
  41. package/dist/js/components/upload.js +1 -1
  42. package/dist/js/components/upload.min.js +1 -1
  43. package/dist/js/uikit-core.js +874 -323
  44. package/dist/js/uikit-core.min.js +1 -1
  45. package/dist/js/uikit-icons.js +1 -1
  46. package/dist/js/uikit-icons.min.js +1 -1
  47. package/dist/js/uikit.js +737 -395
  48. package/dist/js/uikit.min.js +1 -1
  49. package/package.json +1 -1
  50. package/src/js/api/component.js +2 -3
  51. package/src/js/api/observables.js +16 -4
  52. package/src/js/api/options.js +6 -3
  53. package/src/js/api/props.js +1 -3
  54. package/src/js/api/state.js +7 -8
  55. package/src/js/components/index.js +1 -0
  56. package/src/js/components/internal/lightbox-animations.js +7 -26
  57. package/src/js/components/internal/slider-preload.js +1 -0
  58. package/src/js/components/internal/slideshow-animations.js +15 -62
  59. package/src/js/components/lightbox-panel.js +121 -96
  60. package/src/js/components/lightbox.js +5 -8
  61. package/src/js/components/marquee.js +156 -0
  62. package/src/js/components/notification.js +7 -5
  63. package/src/js/core/accordion.js +62 -31
  64. package/src/js/core/alert.js +1 -1
  65. package/src/js/core/drop.js +4 -3
  66. package/src/js/core/dropnav.js +3 -3
  67. package/src/js/core/grid.js +5 -19
  68. package/src/js/core/margin.js +3 -0
  69. package/src/js/core/overflow-auto.js +5 -1
  70. package/src/js/core/sticky.js +1 -1
  71. package/src/js/core/switcher.js +12 -49
  72. package/src/js/core/video.js +236 -21
  73. package/src/js/mixin/connect.js +90 -0
  74. package/src/js/mixin/internal/slideshow-animations.js +5 -13
  75. package/src/js/mixin/internal/slideshow-transitioner.js +2 -2
  76. package/src/js/mixin/parallax.js +1 -4
  77. package/src/js/mixin/position.js +1 -1
  78. package/src/js/mixin/scroll-driven.js +57 -0
  79. package/src/js/mixin/slider-parallax.js +9 -38
  80. package/src/js/mixin/togglable.js +13 -14
  81. package/src/js/util/attr.js +7 -7
  82. package/src/js/util/dom.js +3 -4
  83. package/src/js/util/lang.js +2 -2
  84. package/src/js/util/player.js +4 -2
  85. package/src/js/util/style.js +12 -13
  86. package/src/js/util/viewport.js +22 -25
  87. package/src/less/components/_import.less +8 -3
  88. package/src/less/components/animation.less +1 -1
  89. package/src/less/components/base.less +1 -1
  90. package/src/less/components/button.less +1 -1
  91. package/src/less/components/card.less +8 -8
  92. package/src/less/components/dropcap.less +71 -0
  93. package/src/less/components/floating-shadow.less +66 -0
  94. package/src/less/components/form.less +15 -15
  95. package/src/less/components/grid.less +58 -65
  96. package/src/less/components/lightbox.less +2 -8
  97. package/src/less/components/logo.less +94 -0
  98. package/src/less/components/margin.less +155 -124
  99. package/src/less/components/marquee.less +133 -0
  100. package/src/less/components/modal.less +1 -4
  101. package/src/less/components/nav.less +1 -1
  102. package/src/less/components/navbar.less +1 -1
  103. package/src/less/components/padding.less +9 -9
  104. package/src/less/components/position.less +9 -4
  105. package/src/less/components/search.less +1 -1
  106. package/src/less/components/slideshow.less +1 -4
  107. package/src/less/components/switcher.less +5 -2
  108. package/src/less/components/table.less +4 -4
  109. package/src/less/components/text.less +10 -4
  110. package/src/less/components/utility.less +0 -163
  111. package/src/less/components/visibility.less +4 -4
  112. package/src/less/theme/_import.less +6 -2
  113. package/src/less/theme/alert.less +0 -5
  114. package/src/less/theme/dropcap.less +29 -0
  115. package/src/less/theme/floating-shadow.less +20 -0
  116. package/src/less/theme/logo.less +29 -0
  117. package/src/less/theme/marquee.less +14 -0
  118. package/src/less/theme/thumbnav.less +1 -4
  119. package/src/less/theme/utility.less +0 -32
  120. package/src/scss/components/_import.scss +8 -3
  121. package/src/scss/components/animation.scss +1 -1
  122. package/src/scss/components/base.scss +1 -1
  123. package/src/scss/components/button.scss +1 -1
  124. package/src/scss/components/card.scss +8 -8
  125. package/src/scss/components/dropcap.scss +63 -0
  126. package/src/scss/components/floating-shadow.scss +63 -0
  127. package/src/scss/components/form.scss +14 -14
  128. package/src/scss/components/grid.scss +57 -64
  129. package/src/scss/components/lightbox.scss +2 -8
  130. package/src/scss/components/logo.scss +75 -0
  131. package/src/scss/components/margin.scss +155 -124
  132. package/src/scss/components/marquee.scss +136 -0
  133. package/src/scss/components/modal.scss +1 -4
  134. package/src/scss/components/nav.scss +1 -1
  135. package/src/scss/components/navbar.scss +1 -1
  136. package/src/scss/components/padding.scss +9 -9
  137. package/src/scss/components/position.scss +9 -4
  138. package/src/scss/components/search.scss +1 -1
  139. package/src/scss/components/slideshow.scss +1 -4
  140. package/src/scss/components/switcher.scss +5 -2
  141. package/src/scss/components/table.scss +4 -4
  142. package/src/scss/components/text.scss +10 -4
  143. package/src/scss/components/utility.scss +0 -129
  144. package/src/scss/components/visibility.scss +4 -4
  145. package/src/scss/mixins-theme.scss +44 -43
  146. package/src/scss/mixins.scss +40 -31
  147. package/src/scss/variables-theme.scss +14 -14
  148. package/src/scss/variables.scss +14 -14
  149. package/tests/accordion.html +77 -10
  150. package/tests/alert.html +1 -1
  151. package/tests/align.html +5 -5
  152. package/tests/animation.html +4 -4
  153. package/tests/article.html +7 -7
  154. package/tests/background.html +2 -2
  155. package/tests/badge.html +1 -1
  156. package/tests/base.html +2 -2
  157. package/tests/button.html +1 -1
  158. package/tests/card.html +15 -15
  159. package/tests/close.html +2 -2
  160. package/tests/comment.html +9 -9
  161. package/tests/container.html +2 -2
  162. package/tests/countdown.html +21 -21
  163. package/tests/cover.html +3 -3
  164. package/tests/description-list.html +1 -1
  165. package/tests/divider.html +3 -3
  166. package/tests/dotnav.html +1 -1
  167. package/tests/drop.html +7 -7
  168. package/tests/dropbar.html +5 -5
  169. package/tests/dropcap.html +26 -0
  170. package/tests/dropdown.html +1 -1
  171. package/tests/dropnav.html +18 -18
  172. package/tests/filter.html +3 -3
  173. package/tests/floating-shadow.html +44 -0
  174. package/tests/form.html +14 -14
  175. package/tests/grid.html +41 -47
  176. package/tests/heading.html +2 -2
  177. package/tests/height-viewport.html +4 -4
  178. package/tests/height.html +5 -5
  179. package/tests/icon.html +8 -8
  180. package/tests/image.html +6 -6
  181. package/tests/index.html +13 -13
  182. package/tests/js/index.js +1 -1
  183. package/tests/leader.html +5 -5
  184. package/tests/lightbox.html +6 -6
  185. package/tests/link.html +1 -1
  186. package/tests/list.html +4 -4
  187. package/tests/logo.html +84 -0
  188. package/tests/margin.html +59 -7
  189. package/tests/marker.html +3 -3
  190. package/tests/marquee.html +617 -0
  191. package/tests/modal.html +3 -3
  192. package/tests/nav.html +5 -5
  193. package/tests/navbar.html +27 -27
  194. package/tests/notification.html +8 -2
  195. package/tests/offcanvas.html +12 -12
  196. package/tests/overlay.html +3 -3
  197. package/tests/padding.html +1 -1
  198. package/tests/pagination.html +3 -3
  199. package/tests/parallax.html +1 -1
  200. package/tests/position.html +6 -6
  201. package/tests/scrollspy.html +13 -13
  202. package/tests/search.html +5 -5
  203. package/tests/section.html +17 -17
  204. package/tests/slidenav.html +3 -3
  205. package/tests/slider.html +5 -5
  206. package/tests/slideshow.html +33 -3
  207. package/tests/sortable.html +15 -15
  208. package/tests/sticky-navbar.html +4 -4
  209. package/tests/sticky-parallax.html +3 -3
  210. package/tests/sticky.html +3 -3
  211. package/tests/svg.html +3 -2
  212. package/tests/switcher.html +7 -7
  213. package/tests/tab.html +5 -5
  214. package/tests/text.html +9 -3
  215. package/tests/tile.html +4 -4
  216. package/tests/toggle.html +1 -1
  217. package/tests/tooltip.html +3 -3
  218. package/tests/totop.html +2 -2
  219. package/tests/transition.html +1 -1
  220. package/tests/upload.html +5 -5
  221. package/tests/utility.html +16 -116
  222. package/tests/video.html +224 -24
  223. package/tests/visibility.html +4 -4
  224. package/tests/width.html +12 -12
@@ -68,10 +68,9 @@ export function wrapInner(element, structure) {
68
68
  }
69
69
 
70
70
  export function unwrap(element) {
71
- toNodes(element)
72
- .map(parent)
73
- .filter((value, index, self) => self.indexOf(value) === index)
74
- .forEach((parent) => parent.replaceWith(...parent.childNodes));
71
+ for (const elementParent of new Set(toNodes(element).map(parent))) {
72
+ elementParent.replaceWith(...elementParent.childNodes);
73
+ }
75
74
  }
76
75
 
77
76
  const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
@@ -178,8 +178,8 @@ export function uniqueBy(array, prop) {
178
178
 
179
179
  export function pick(obj, props) {
180
180
  const result = {};
181
- for (const prop of props) {
182
- result[prop] = obj[prop];
181
+ for (const key of props) {
182
+ result[key] = obj[key];
183
183
  }
184
184
  return result;
185
185
  }
@@ -42,7 +42,9 @@ function isIFrame(el) {
42
42
  }
43
43
 
44
44
  function isYoutube(el) {
45
- return /\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\//.test(el.src);
45
+ return /\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/.test(
46
+ el.src,
47
+ );
46
48
  }
47
49
 
48
50
  function isVimeo(el) {
@@ -58,7 +60,7 @@ function post(el, cmd) {
58
60
  el.contentWindow.postMessage(JSON.stringify({ event: 'command', ...cmd }), '*');
59
61
  }
60
62
 
61
- const stateKey = '_ukPlayer';
63
+ const stateKey = Symbol();
62
64
  let counter = 0;
63
65
  function enableApi(el) {
64
66
  if (el[stateKey]) {
@@ -37,23 +37,22 @@ export function css(element, property, value, priority) {
37
37
 
38
38
  if (isUndefined(value)) {
39
39
  return getComputedStyle(element).getPropertyValue(property);
40
- } else {
41
- element.style.setProperty(
42
- property,
43
- isNumeric(value) && !cssNumber[property] && !isCustomProperty(property)
44
- ? `${value}px`
45
- : value || isNumber(value)
46
- ? value
47
- : '',
48
- priority,
49
- );
50
40
  }
41
+ element.style.setProperty(
42
+ property,
43
+ isNumeric(value) && !cssNumber[property] && !isCustomProperty(property)
44
+ ? `${value}px`
45
+ : value || isNumber(value)
46
+ ? value
47
+ : '',
48
+ priority,
49
+ );
51
50
  } else if (isArray(property)) {
52
- const props = {};
51
+ const values = {};
53
52
  for (const prop of property) {
54
- props[prop] = css(element, prop);
53
+ values[prop] = css(element, prop);
55
54
  }
56
- return props;
55
+ return values;
57
56
  } else if (isObject(property)) {
58
57
  for (const prop in property) {
59
58
  css(element, prop, property[prop], value);
@@ -18,20 +18,18 @@ export function isInView(element, offsetTop = 0, offsetLeft = 0) {
18
18
  return false;
19
19
  }
20
20
 
21
- return intersectRect(
22
- ...overflowParents(element)
23
- .map((parent) => {
24
- const { top, left, bottom, right } = offsetViewport(parent);
25
-
26
- return {
27
- top: top - offsetTop,
28
- left: left - offsetLeft,
29
- bottom: bottom + offsetTop,
30
- right: right + offsetLeft,
31
- };
32
- })
33
- .concat(offset(element)),
34
- );
21
+ const rects = overflowParents(element).map((parent) => {
22
+ const { top, left, bottom, right } = offsetViewport(parent);
23
+
24
+ return {
25
+ top: top - offsetTop,
26
+ left: left - offsetLeft,
27
+ bottom: bottom + offsetTop,
28
+ right: right + offsetLeft,
29
+ };
30
+ });
31
+
32
+ return intersectRect(...rects, offset(element));
35
33
  }
36
34
 
37
35
  export function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
@@ -145,17 +143,16 @@ export function scrollParents(element, scrollable = false, props = []) {
145
143
  ancestors = ancestors.slice(fixedIndex);
146
144
  }
147
145
 
148
- return [scrollEl]
149
- .concat(
150
- ancestors.filter(
151
- (parent) =>
152
- css(parent, 'overflow')
153
- .split(' ')
154
- .some((prop) => includes(['auto', 'scroll', ...props], prop)) &&
155
- (!scrollable || parent.scrollHeight > offsetViewport(parent).height),
156
- ),
157
- )
158
- .reverse();
146
+ return [
147
+ scrollEl,
148
+ ...ancestors.filter(
149
+ (parent) =>
150
+ css(parent, 'overflow')
151
+ .split(' ')
152
+ .some((prop) => includes(['auto', 'scroll', ...props], prop)) &&
153
+ (!scrollable || parent.scrollHeight > offsetViewport(parent).height),
154
+ ),
155
+ ].reverse();
159
156
  }
160
157
 
161
158
  export function scrollParent(...args) {
@@ -13,6 +13,7 @@
13
13
  @import "icon.less";
14
14
  @import "form-range.less";
15
15
  @import "form.less"; // After: Icon, Form Range
16
+ @import "search.less"; // After: Icon
16
17
  @import "button.less";
17
18
  @import "progress.less";
18
19
 
@@ -31,10 +32,11 @@
31
32
  @import "placeholder.less";
32
33
  @import "badge.less";
33
34
  @import "label.less";
35
+ @import "dropcap.less";
36
+ @import "floating-shadow.less";
34
37
  @import "overlay.less"; // After: Icon
35
38
  @import "article.less";
36
39
  @import "comment.less";
37
- @import "search.less"; // After: Icon
38
40
 
39
41
  // JavaScript
40
42
  @import "accordion.less";
@@ -44,6 +46,7 @@
44
46
  @import "modal.less"; // After: Close
45
47
  @import "slideshow.less";
46
48
  @import "slider.less";
49
+ @import "marquee.less";
47
50
  @import "sticky.less";
48
51
  @import "offcanvas.less";
49
52
  @import "switcher.less";
@@ -70,8 +73,10 @@
70
73
  @import "tab.less";
71
74
  @import "slidenav.less"; // After: Icon
72
75
  @import "dotnav.less";
76
+
73
77
  @import "dropdown.less"; // After: Card, Nav
74
78
  @import "lightbox.less"; // After: Close, Slidenav
79
+ @import "logo.less"; // After: Navbar
75
80
 
76
81
  // Utilities
77
82
  @import "animation.less";
@@ -85,9 +90,9 @@
85
90
  @import "svg.less";
86
91
  @import "utility.less";
87
92
  @import "flex.less"; // After: Utility
88
- @import "margin.less";
89
- @import "padding.less";
90
93
  @import "position.less";
94
+ @import "margin.less"; // After: Position
95
+ @import "padding.less";
91
96
  @import "transition.less";
92
97
  @import "visibility.less";
93
98
  @import "inverse.less";
@@ -138,7 +138,7 @@
138
138
  /* Toggle animation based on the State of the Parent Element
139
139
  ========================================================================== */
140
140
 
141
- .uk-animation-toggle:not(:hover):not(:focus) [class*="uk-animation-"] { animation-name: none; }
141
+ .uk-animation-toggle:not(:hover, :focus) [class*="uk-animation-"] { animation-name: none; }
142
142
 
143
143
 
144
144
  /* Keyframes used by animation classes
@@ -482,7 +482,7 @@ blockquote {
482
482
  * Content
483
483
  */
484
484
 
485
- blockquote p:last-of-type { margin-bottom: 0; }
485
+ blockquote :where(p:last-of-type) { margin-bottom: 0; }
486
486
 
487
487
  blockquote footer {
488
488
  margin-top: @base-blockquote-footer-margin-top;
@@ -130,7 +130,7 @@
130
130
 
131
131
  /* Hover */
132
132
  .uk-button:hover {
133
- /* 9 */
133
+ /* 10 */
134
134
  text-decoration: none;
135
135
  .hook-button-hover();
136
136
  }
@@ -366,11 +366,11 @@
366
366
  * Small
367
367
  */
368
368
 
369
- .uk-card-small.uk-card-body,
370
- .uk-card-small .uk-card-body { padding: @card-small-body-padding-vertical @card-small-body-padding-horizontal; }
369
+ .uk-card-small:where(.uk-card-body),
370
+ .uk-card-small :where(.uk-card-body) { padding: @card-small-body-padding-vertical @card-small-body-padding-horizontal; }
371
371
 
372
- .uk-card-small .uk-card-header { padding: @card-small-header-padding-vertical @card-small-header-padding-horizontal; }
373
- .uk-card-small .uk-card-footer { padding: @card-small-footer-padding-vertical @card-small-footer-padding-horizontal; }
372
+ .uk-card-small :where(.uk-card-header) { padding: @card-small-header-padding-vertical @card-small-header-padding-horizontal; }
373
+ .uk-card-small :where(.uk-card-footer) { padding: @card-small-footer-padding-vertical @card-small-footer-padding-horizontal; }
374
374
 
375
375
  /*
376
376
  * Large
@@ -379,11 +379,11 @@
379
379
  /* Desktop and bigger */
380
380
  @media (min-width: @breakpoint-large) {
381
381
 
382
- .uk-card-large.uk-card-body,
383
- .uk-card-large .uk-card-body { padding: @card-large-body-padding-vertical-l @card-large-body-padding-horizontal-l; }
382
+ .uk-card-large:where(.uk-card-body),
383
+ .uk-card-large :where(.uk-card-body) { padding: @card-large-body-padding-vertical-l @card-large-body-padding-horizontal-l; }
384
384
 
385
- .uk-card-large .uk-card-header { padding: @card-large-header-padding-vertical-l @card-large-header-padding-horizontal-l; }
386
- .uk-card-large .uk-card-footer { padding: @card-large-footer-padding-vertical-l @card-large-footer-padding-horizontal-l; }
385
+ .uk-card-large :where(.uk-card-header) { padding: @card-large-header-padding-vertical-l @card-large-header-padding-horizontal-l; }
386
+ .uk-card-large :where(.uk-card-footer) { padding: @card-large-footer-padding-vertical-l @card-large-footer-padding-horizontal-l; }
387
387
 
388
388
  }
389
389
 
@@ -0,0 +1,71 @@
1
+ // Name: Dropcap
2
+ // Description: Style for the drop cap
3
+ //
4
+ // Component: `uk-dropcap`
5
+ //
6
+ // ========================================================================
7
+
8
+
9
+ // Variables
10
+ // ========================================================================
11
+ @dropcap-margin-right: 10px;
12
+ @dropcap-font-size: ((@global-line-height * 3) * 1em);
13
+ @dropcap-line-height: 1;
14
+
15
+ /* ========================================================================
16
+ Component: Dropcap
17
+ ========================================================================== */
18
+
19
+ /*
20
+ * 1. Firefox doesn't apply `::first-letter` if the first letter is inside child elements
21
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=214004
22
+ * 2. In Firefox, a floating `::first-letter` doesn't have a line box and there for no `line-height`
23
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=317933
24
+ */
25
+
26
+ .uk-dropcap::first-letter,
27
+ /* 1 */
28
+ .uk-dropcap > p:first-of-type::first-letter {
29
+ display: block;
30
+ margin-right: @dropcap-margin-right;
31
+ float: left;
32
+ font-size: @dropcap-font-size;
33
+ line-height: @dropcap-line-height;
34
+ .hook-dropcap();
35
+ }
36
+
37
+ /* 2 */
38
+ @-moz-document url-prefix() {
39
+
40
+ .uk-dropcap::first-letter,
41
+ .uk-dropcap > p:first-of-type::first-letter { margin-top: 1.1%; }
42
+
43
+ }
44
+
45
+
46
+ // Misc
47
+ // ========================================================================
48
+
49
+ .hook-dropcap-misc();
50
+
51
+
52
+ // Hooks
53
+ // ========================================================================
54
+
55
+ .hook-dropcap() {}
56
+ .hook-dropcap-misc() {}
57
+
58
+
59
+ // Inverse
60
+ // ========================================================================
61
+
62
+ .hook-inverse () {
63
+
64
+ .uk-dropcap::first-letter,
65
+ .uk-dropcap p:first-of-type::first-letter {
66
+ .hook-inverse-dropcap();
67
+ }
68
+
69
+ }
70
+
71
+ .hook-inverse-dropcap() {}
@@ -0,0 +1,66 @@
1
+ // Name: Floating Shadow
2
+ // Description: Component to create floating shadows
3
+ //
4
+ // Component: `uk-floating-shadow`
5
+ //
6
+ // ========================================================================
7
+
8
+
9
+ // Variables
10
+ // ========================================================================
11
+
12
+ @floating-shadow-height: 30px;
13
+ @floating-shadow-bottom: -@floating-shadow-height;
14
+ @floating-shadow-border-radius: 100%;
15
+ @floating-shadow-background: #444;
16
+ @floating-shadow-blur: 20px;
17
+
18
+
19
+ /* ========================================================================
20
+ Component: Floating Shadow
21
+ ========================================================================== */
22
+
23
+ /*
24
+ * 1. Set position.
25
+ * 2. Set style
26
+ * 3. Fix shadow being clipped in Safari if container is animated
27
+ */
28
+
29
+ .uk-floating-shadow {
30
+ display: inline-block;
31
+ position: relative;
32
+ z-index: 0;
33
+ max-width: 100%;
34
+ vertical-align: middle;
35
+ }
36
+
37
+ .uk-floating-shadow::after {
38
+ content: "";
39
+ /* 1 */
40
+ position: absolute;
41
+ bottom: @floating-shadow-bottom;
42
+ left: 0;
43
+ right: 0;
44
+ z-index: -1;
45
+ /* 2 */
46
+ height: @floating-shadow-height;
47
+ border-radius: @floating-shadow-border-radius;
48
+ background: @floating-shadow-background;
49
+ filter: blur(@floating-shadow-blur);
50
+ /* 3 */
51
+ will-change: filter;
52
+ .hook-floating-shadow();
53
+ }
54
+
55
+
56
+ // Misc
57
+ // ========================================================================
58
+
59
+ .hook-floating-shadow-misc();
60
+
61
+
62
+ // Hooks
63
+ // ========================================================================
64
+
65
+ .hook-floating-shadow() {}
66
+ .hook-floating-shadow-misc() {}
@@ -271,7 +271,7 @@
271
271
  */
272
272
 
273
273
  .uk-input,
274
- .uk-select:not([multiple]):not([size]) {
274
+ .uk-select:not([multiple], [size]) {
275
275
  height: @form-height;
276
276
  vertical-align: middle;
277
277
  .hook-form-single-line();
@@ -403,7 +403,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
403
403
  * 3. Set `color` for options in the select dropdown, because the inherited `color` might be too light.
404
404
  */
405
405
 
406
- .uk-select:not([multiple]):not([size]) {
406
+ .uk-select:not([multiple], [size]) {
407
407
  /* 1 */
408
408
  -webkit-appearance: none;
409
409
  -moz-appearance: none;
@@ -415,13 +415,13 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
415
415
  }
416
416
 
417
417
  /* 3 */
418
- .uk-select:not([multiple]):not([size]) option { color: @form-select-option-color; }
418
+ .uk-select:not([multiple], [size]) option { color: @form-select-option-color; }
419
419
 
420
420
  /*
421
421
  * Disabled
422
422
  */
423
423
 
424
- .uk-select:not([multiple]):not([size]):disabled { .svg-fill(@internal-form-select-image, "#000", @form-select-disabled-icon-color); }
424
+ .uk-select:not([multiple], [size]):disabled { .svg-fill(@internal-form-select-image, "#000", @form-select-disabled-icon-color); }
425
425
 
426
426
 
427
427
  /* Datalist
@@ -539,7 +539,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
539
539
  .uk-form-small:is(.uk-input, .uk-search-input, .uk-select, .uk-textarea) { font-size: @form-small-font-size; }
540
540
 
541
541
  /* Single-line */
542
- .uk-form-small:is(.uk-input, .uk-search-input, .uk-select:not([multiple]):not([size])) {
542
+ .uk-form-small:is(.uk-input, .uk-search-input, .uk-select:not([multiple], [size])) {
543
543
  height: @form-small-height;
544
544
  padding-left: @form-small-padding-horizontal;
545
545
  padding-right: @form-small-padding-horizontal;
@@ -549,7 +549,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
549
549
  .uk-form-small:is(.uk-select[multiple], .uk-select[size], .uk-textarea) { padding: @form-small-multi-line-padding-vertical @form-small-multi-line-padding-horizontal; }
550
550
 
551
551
  /* Any element */
552
- .uk-form-small:not(select):not(input):not(textarea):not([type="radio"]):not([type="checkbox"]) { line-height: @form-small-line-height; }
552
+ .uk-form-small:not(select, input, textarea, [type="radio"], [type="checkbox"]) { line-height: @form-small-line-height; }
553
553
 
554
554
  /* Radio + Checkbox */
555
555
  .uk-form-small:is(.uk-radio, .uk-checkbox) {
@@ -564,7 +564,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
564
564
  .uk-form-large:is(.uk-input, .uk-search-input, .uk-select, .uk-textarea) { font-size: @form-large-font-size; }
565
565
 
566
566
  /* Single-line */
567
- .uk-form-large:is(.uk-input, .uk-search-input, .uk-select:not([multiple]):not([size])) {
567
+ .uk-form-large:is(.uk-input, .uk-search-input, .uk-select:not([multiple], [size])) {
568
568
  height: @form-large-height;
569
569
  padding-left: @form-large-padding-horizontal;
570
570
  padding-right: @form-large-padding-horizontal;
@@ -574,7 +574,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
574
574
  .uk-form-large:is(.uk-select[multiple], .uk-select[size], .uk-textarea) { padding: @form-large-multi-line-padding-vertical @form-large-multi-line-padding-horizontal; }
575
575
 
576
576
  /* Any element */
577
- .uk-form-large:not(select):not(input):not(textarea):not([type="radio"]):not([type="checkbox"]) { line-height: @form-large-line-height; }
577
+ .uk-form-large:not(select, input, textarea, [type="radio"], [type="checkbox"]) { line-height: @form-large-line-height; }
578
578
 
579
579
  /* Radio + Checkbox */
580
580
  .uk-form-large:is(.uk-radio, .uk-checkbox) {
@@ -678,7 +678,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
678
678
  * Stacked
679
679
  */
680
680
 
681
- .uk-form-stacked .uk-form-label {
681
+ .uk-form-stacked :where(.uk-form-label) {
682
682
  display: block;
683
683
  margin-bottom: @form-stacked-margin-bottom;
684
684
  .hook-form-stacked-label();
@@ -692,7 +692,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
692
692
  @media (max-width: @breakpoint-small-max) {
693
693
 
694
694
  /* Behave like `uk-form-stacked` */
695
- .uk-form-horizontal .uk-form-label {
695
+ .uk-form-horizontal :where(.uk-form-label) {
696
696
  display: block;
697
697
  margin-bottom: @form-stacked-margin-bottom;
698
698
  .hook-form-stacked-label();
@@ -703,17 +703,17 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
703
703
  /* Tablet landscape and bigger */
704
704
  @media (min-width: @breakpoint-medium) {
705
705
 
706
- .uk-form-horizontal .uk-form-label {
706
+ .uk-form-horizontal :where(.uk-form-label) {
707
707
  width: @form-horizontal-label-width;
708
708
  margin-top: @form-horizontal-label-margin-top;
709
709
  float: left;
710
710
  .hook-form-horizontal-label();
711
711
  }
712
712
 
713
- .uk-form-horizontal .uk-form-controls { margin-left: @form-horizontal-controls-margin-left; }
713
+ .uk-form-horizontal :where(.uk-form-controls) { margin-left: @form-horizontal-controls-margin-left; }
714
714
 
715
715
  /* Better vertical alignment if controls are checkboxes and radio buttons with text */
716
- .uk-form-horizontal .uk-form-controls-text { padding-top: @form-horizontal-controls-text-padding-top; }
716
+ .uk-form-horizontal :where(.uk-form-controls-text) { padding-top: @form-horizontal-controls-text-padding-top; }
717
717
 
718
718
  }
719
719
 
@@ -755,7 +755,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
755
755
  * Make `input` element clickable through icon, e.g. if it's a `span`
756
756
  */
757
757
 
758
- .uk-form-icon:not(a):not(button):not(input) { pointer-events: none; }
758
+ .uk-form-icon:not(a, button, input) { pointer-events: none; }
759
759
 
760
760
  /*
761
761
  * Input padding
@@ -856,7 +856,7 @@ select.uk-form-width-xsmall { width: (@form-width-xsmall + 25px); }
856
856
  // Select
857
857
  //
858
858
 
859
- .uk-select:not([multiple]):not([size]) { .svg-fill(@internal-form-select-image, "#000", @inverse-form-select-icon-color); }
859
+ .uk-select:not([multiple], [size]) { .svg-fill(@internal-form-select-image, "#000", @inverse-form-select-icon-color); }
860
860
 
861
861
  //
862
862
  // Datalist