uikit 3.7.6 → 3.8.0

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 (121) hide show
  1. package/CHANGELOG.md +23 -6
  2. package/build/prefix.js +2 -2
  3. package/build/release.js +12 -16
  4. package/build/scope.js +14 -19
  5. package/build/util.js +1 -1
  6. package/dist/css/uikit-core-rtl.css +327 -835
  7. package/dist/css/uikit-core-rtl.min.css +1 -1
  8. package/dist/css/uikit-core.css +327 -835
  9. package/dist/css/uikit-core.min.css +1 -1
  10. package/dist/css/uikit-rtl.css +359 -843
  11. package/dist/css/uikit-rtl.min.css +1 -1
  12. package/dist/css/uikit.css +359 -843
  13. package/dist/css/uikit.min.css +1 -1
  14. package/dist/js/components/countdown.js +1 -1
  15. package/dist/js/components/countdown.min.js +1 -1
  16. package/dist/js/components/filter.js +1 -1
  17. package/dist/js/components/filter.min.js +1 -1
  18. package/dist/js/components/lightbox-panel.js +2 -18
  19. package/dist/js/components/lightbox-panel.min.js +2 -2
  20. package/dist/js/components/lightbox.js +2 -18
  21. package/dist/js/components/lightbox.min.js +2 -2
  22. package/dist/js/components/notification.js +1 -1
  23. package/dist/js/components/notification.min.js +1 -1
  24. package/dist/js/components/parallax.js +1 -1
  25. package/dist/js/components/parallax.min.js +1 -1
  26. package/dist/js/components/slider-parallax.js +1 -1
  27. package/dist/js/components/slider-parallax.min.js +1 -1
  28. package/dist/js/components/slider.js +1 -1
  29. package/dist/js/components/slider.min.js +1 -1
  30. package/dist/js/components/slideshow-parallax.js +1 -1
  31. package/dist/js/components/slideshow-parallax.min.js +1 -1
  32. package/dist/js/components/slideshow.js +1 -1
  33. package/dist/js/components/slideshow.min.js +1 -1
  34. package/dist/js/components/sortable.js +1 -1
  35. package/dist/js/components/sortable.min.js +1 -1
  36. package/dist/js/components/tooltip.js +1 -1
  37. package/dist/js/components/tooltip.min.js +1 -1
  38. package/dist/js/components/upload.js +1 -1
  39. package/dist/js/components/upload.min.js +1 -1
  40. package/dist/js/uikit-core.js +8 -21
  41. package/dist/js/uikit-core.min.js +2 -2
  42. package/dist/js/uikit-icons.js +1 -1
  43. package/dist/js/uikit-icons.min.js +1 -1
  44. package/dist/js/uikit.js +8 -21
  45. package/dist/js/uikit.min.js +2 -2
  46. package/package.json +6 -6
  47. package/src/js/core/sticky.js +5 -2
  48. package/src/js/mixin/modal.js +1 -17
  49. package/src/less/components/accordion.less +3 -6
  50. package/src/less/components/alert.less +2 -3
  51. package/src/less/components/animation.less +69 -216
  52. package/src/less/components/badge.less +2 -5
  53. package/src/less/components/base.less +39 -11
  54. package/src/less/components/breadcrumb.less +3 -5
  55. package/src/less/components/button.less +17 -36
  56. package/src/less/components/close.less +3 -6
  57. package/src/less/components/cover.less +11 -6
  58. package/src/less/components/dotnav.less +3 -6
  59. package/src/less/components/dropdown.less +1 -3
  60. package/src/less/components/icon.less +5 -11
  61. package/src/less/components/iconnav.less +3 -6
  62. package/src/less/components/lightbox.less +11 -7
  63. package/src/less/components/link.less +6 -14
  64. package/src/less/components/marker.less +3 -6
  65. package/src/less/components/nav.less +10 -24
  66. package/src/less/components/navbar.less +6 -15
  67. package/src/less/components/pagination.less +3 -5
  68. package/src/less/components/position.less +45 -82
  69. package/src/less/components/search.less +3 -11
  70. package/src/less/components/slidenav.less +3 -6
  71. package/src/less/components/slider.less +0 -4
  72. package/src/less/components/slideshow.less +0 -4
  73. package/src/less/components/subnav.less +6 -11
  74. package/src/less/components/tab.less +3 -5
  75. package/src/less/components/thumbnav.less +3 -6
  76. package/src/less/components/totop.less +3 -6
  77. package/src/less/components/transition.less +48 -40
  78. package/src/less/components/utility.less +3 -6
  79. package/src/less/components/visibility.less +16 -45
  80. package/src/less/theme/button.less +0 -3
  81. package/src/less/theme/form.less +1 -1
  82. package/src/less/theme/table.less +9 -1
  83. package/src/scss/components/accordion.scss +2 -4
  84. package/src/scss/components/alert.scss +2 -3
  85. package/src/scss/components/animation.scss +69 -216
  86. package/src/scss/components/badge.scss +1 -3
  87. package/src/scss/components/base.scss +31 -9
  88. package/src/scss/components/breadcrumb.scss +2 -3
  89. package/src/scss/components/button.scss +12 -25
  90. package/src/scss/components/close.scss +2 -4
  91. package/src/scss/components/cover.scss +11 -6
  92. package/src/scss/components/dotnav.scss +2 -4
  93. package/src/scss/components/dropdown.scss +1 -3
  94. package/src/scss/components/icon.scss +3 -7
  95. package/src/scss/components/iconnav.scss +2 -4
  96. package/src/scss/components/lightbox.scss +11 -7
  97. package/src/scss/components/link.scss +3 -8
  98. package/src/scss/components/marker.scss +2 -4
  99. package/src/scss/components/nav.scss +6 -16
  100. package/src/scss/components/navbar.scss +6 -13
  101. package/src/scss/components/pagination.scss +2 -3
  102. package/src/scss/components/position.scss +45 -82
  103. package/src/scss/components/search.scss +2 -9
  104. package/src/scss/components/slidenav.scss +2 -4
  105. package/src/scss/components/slider.scss +0 -4
  106. package/src/scss/components/slideshow.scss +0 -4
  107. package/src/scss/components/subnav.scss +4 -7
  108. package/src/scss/components/tab.scss +2 -3
  109. package/src/scss/components/thumbnav.scss +2 -4
  110. package/src/scss/components/totop.scss +2 -4
  111. package/src/scss/components/transition.scss +48 -40
  112. package/src/scss/components/utility.scss +2 -4
  113. package/src/scss/components/visibility.scss +16 -45
  114. package/src/scss/mixins-theme.scss +42 -101
  115. package/src/scss/mixins.scss +38 -66
  116. package/src/scss/theme/button.scss +0 -2
  117. package/src/scss/theme/form.scss +1 -1
  118. package/src/scss/theme/table.scss +2 -1
  119. package/src/scss/variables-theme.scss +4 -1
  120. package/src/scss/variables.scss +3 -0
  121. package/tests/transition.html +4 -10
@@ -39,12 +39,14 @@
39
39
  Component: Position
40
40
  ========================================================================== */
41
41
 
42
+ :root { --uk-position-margin-offset: 0px; }
43
+
42
44
 
43
45
  /* Directions
44
46
  ========================================================================== */
45
47
 
46
48
  /*
47
- * 1. Prevent content overflow if `max-width: 100%` is used inside position container.
49
+ * 1. Prevent content overflow.
48
50
  */
49
51
 
50
52
  [class*='uk-position-top'],
@@ -54,14 +56,15 @@
54
56
  [class*='uk-position-center'] {
55
57
  position: absolute !important;
56
58
  /* 1 */
57
- max-width: 100%;
59
+ max-width: ~'calc(100% - (var(--uk-position-margin-offset) * 2))';
60
+ box-sizing: border-box;
58
61
  }
59
62
 
63
+ /*
64
+ * Edges
65
+ * Don't use `width: 100%` because it's wrong if the parent has padding.
66
+ */
60
67
 
61
- /* Edges
62
- ========================================================================== */
63
-
64
- /* Don't use `width: 100%` because it is wrong if the parent has padding. */
65
68
  .uk-position-top {
66
69
  top: 0;
67
70
  left: 0;
@@ -86,9 +89,9 @@
86
89
  right: 0;
87
90
  }
88
91
 
89
-
90
- /* Corners
91
- ========================================================================== */
92
+ /*
93
+ * Corners
94
+ */
92
95
 
93
96
  .uk-position-top-left {
94
97
  top: 0;
@@ -113,23 +116,25 @@
113
116
  /*
114
117
  * Center
115
118
  * 1. Fix text wrapping if content is larger than 50% of the container.
119
+ * Using `max-content` requires `max-width` of 100% which is set generally.
116
120
  */
117
121
 
118
122
  .uk-position-center {
119
- top: 50%;
120
- left: 50%;
121
- transform: translate(-50%,-50%);
123
+ top: ~'calc(50% - var(--uk-position-margin-offset))';
124
+ left: ~'calc(50% - var(--uk-position-margin-offset))';
125
+ --uk-position-translate-x: -50%;
126
+ --uk-position-translate-y: -50%;
127
+ transform: translate(var(--uk-position-translate-x), var(--uk-position-translate-y));
122
128
  /* 1 */
123
129
  width: max-content;
124
- max-width: 100%;
125
- box-sizing: border-box;
126
130
  }
127
131
 
128
132
  /* Vertical */
129
133
  [class*='uk-position-center-left'],
130
134
  [class*='uk-position-center-right'] {
131
- top: 50%;
132
- transform: translateY(-50%);
135
+ top: ~'calc(50% - var(--uk-position-margin-offset))';
136
+ --uk-position-translate-y: -50%;
137
+ transform: translate(0, var(--uk-position-translate-y));
133
138
  }
134
139
 
135
140
  .uk-position-center-left { left: 0; }
@@ -148,20 +153,19 @@
148
153
  /* Horizontal */
149
154
  .uk-position-top-center,
150
155
  .uk-position-bottom-center {
151
- left: 50%;
152
- transform: translateX(-50%);
156
+ left: ~'calc(50% - var(--uk-position-margin-offset))';
157
+ --uk-position-translate-x: -50%;
158
+ transform: translate(var(--uk-position-translate-x), 0);
153
159
  /* 1 */
154
160
  width: max-content;
155
- max-width: 100%;
156
- box-sizing: border-box;
157
161
  }
158
162
 
159
163
  .uk-position-top-center { top: 0; }
160
164
  .uk-position-bottom-center { bottom: 0; }
161
165
 
162
-
163
- /* Cover
164
- ========================================================================== */
166
+ /*
167
+ * Cover
168
+ */
165
169
 
166
170
  .uk-position-cover {
167
171
  position: absolute;
@@ -172,89 +176,48 @@
172
176
  }
173
177
 
174
178
 
175
- /* Utility
176
- ========================================================================== */
177
-
178
- .uk-position-relative { position: relative !important; }
179
-
180
- .uk-position-absolute { position: absolute !important; }
181
-
182
- .uk-position-fixed { position: fixed !important; }
183
-
184
- .uk-position-z-index { z-index: 1; }
185
-
186
-
187
- /* Margin modifier
179
+ /* Margin
188
180
  ========================================================================== */
189
181
 
190
- /*
191
- * Small
192
- */
193
-
194
182
  .uk-position-small {
195
- max-width: ~'calc(100% - (@{position-small-margin} * 2))';
196
183
  margin: @position-small-margin;
184
+ --uk-position-margin-offset: @position-small-margin;
197
185
  }
198
186
 
199
- .uk-position-small.uk-position-center { transform: translate(-50%, -50%) translate(-@position-small-margin, -@position-small-margin); }
200
-
201
- .uk-position-small[class*='uk-position-center-left'],
202
- .uk-position-small[class*='uk-position-center-right'] { transform: translateY(-50%) translateY(-@position-small-margin); }
203
-
204
- .uk-position-small.uk-position-top-center,
205
- .uk-position-small.uk-position-bottom-center { transform: translateX(-50%) translateX(-@position-small-margin); }
206
-
207
- /*
208
- * Medium
209
- */
210
-
211
187
  .uk-position-medium {
212
- max-width: ~'calc(100% - (@{position-medium-margin} * 2))';
213
188
  margin: @position-medium-margin;
189
+ --uk-position-margin-offset: @position-medium-margin;
214
190
  }
215
191
 
216
- .uk-position-medium.uk-position-center { transform: translate(-50%, -50%) translate(-@position-medium-margin, -@position-medium-margin); }
217
-
218
- .uk-position-medium[class*='uk-position-center-left'],
219
- .uk-position-medium[class*='uk-position-center-right'] { transform: translateY(-50%) translateY(-@position-medium-margin); }
220
-
221
- .uk-position-medium.uk-position-top-center,
222
- .uk-position-medium.uk-position-bottom-center { transform: translateX(-50%) translateX(-@position-medium-margin); }
223
-
224
- /*
225
- * Large
226
- */
227
-
228
192
  .uk-position-large {
229
- max-width: ~'calc(100% - (@{position-large-margin} * 2))';
230
193
  margin: @position-large-margin;
194
+ --uk-position-margin-offset: @position-large-margin;
231
195
  }
232
196
 
233
- .uk-position-large.uk-position-center { transform: translate(-50%, -50%) translate(-@position-large-margin, -@position-large-margin); }
234
-
235
- .uk-position-large[class*='uk-position-center-left'],
236
- .uk-position-large[class*='uk-position-center-right'] { transform: translateY(-50%) translateY(-@position-large-margin); }
237
-
238
- .uk-position-large.uk-position-top-center,
239
- .uk-position-large.uk-position-bottom-center { transform: translateX(-50%) translateX(-@position-large-margin); }
240
-
241
197
  /* Desktop and bigger */
242
198
  @media (min-width: @breakpoint-large) {
243
199
 
244
200
  .uk-position-large {
245
- max-width: ~'calc(100% - (@{position-large-margin-l} * 2))';
246
201
  margin: @position-large-margin-l;
202
+ --uk-position-margin-offset: @position-large-margin-l;
247
203
  }
248
204
 
249
- .uk-position-large.uk-position-center { transform: translate(-50%, -50%) translate(-@position-large-margin-l, -@position-large-margin-l); }
205
+ }
206
+
250
207
 
251
- .uk-position-large[class*='uk-position-center-left'],
252
- .uk-position-large[class*='uk-position-center-right'] { transform: translateY(-50%) translateY(-@position-large-margin-l); }
208
+ /* Schemes
209
+ ========================================================================== */
253
210
 
254
- .uk-position-large.uk-position-top-center,
255
- .uk-position-large.uk-position-bottom-center { transform: translateX(-50%) translateX(-@position-large-margin-l); }
211
+ .uk-position-relative { position: relative !important; }
212
+ .uk-position-absolute { position: absolute !important; }
213
+ .uk-position-fixed { position: fixed !important; }
214
+ .uk-position-sticky { position: sticky !important; }
256
215
 
257
- }
216
+
217
+ /* Layer
218
+ ========================================================================== */
219
+
220
+ .uk-position-z-index { z-index: 1; }
258
221
 
259
222
 
260
223
  // Hooks
@@ -133,12 +133,6 @@
133
133
  /* Icon (Adopts `uk-icon`)
134
134
  ========================================================================== */
135
135
 
136
- /*
137
- * Remove default focus style
138
- */
139
-
140
- .uk-search-icon:focus { outline: none; }
141
-
142
136
  /*
143
137
  * Position above input
144
138
  * 1. Set position
@@ -275,9 +269,8 @@
275
269
  .hook-search-toggle;
276
270
  }
277
271
 
278
- /* Hover + Focus */
279
- .uk-search-toggle:hover,
280
- .uk-search-toggle:focus {
272
+ /* Hover */
273
+ .uk-search-toggle:hover {
281
274
  color: @search-toggle-hover-color;
282
275
  .hook-search-toggle-hover;
283
276
  }
@@ -370,8 +363,7 @@
370
363
  .hook-inverse-search-toggle;
371
364
  }
372
365
 
373
- .uk-search-toggle:hover,
374
- .uk-search-toggle:focus {
366
+ .uk-search-toggle:hover {
375
367
  color: @inverse-search-toggle-hover-color;
376
368
  .hook-inverse-search-toggle-hover;
377
369
  }
@@ -40,11 +40,9 @@
40
40
  .hook-slidenav;
41
41
  }
42
42
 
43
- /* Hover + Focus */
44
- .uk-slidenav:hover,
45
- .uk-slidenav:focus {
43
+ /* Hover */
44
+ .uk-slidenav:hover {
46
45
  color: @slidenav-hover-color;
47
- outline: none;
48
46
  .hook-slidenav-hover;
49
47
  }
50
48
 
@@ -122,8 +120,7 @@
122
120
  .hook-inverse-slidenav;
123
121
  }
124
122
 
125
- .uk-slidenav:hover,
126
- .uk-slidenav:focus {
123
+ .uk-slidenav:hover {
127
124
  color: @inverse-slidenav-hover-color;
128
125
  .hook-inverse-slidenav-hover;
129
126
  }
@@ -94,7 +94,6 @@
94
94
  * `max-width` needed to keep image responsiveness and prevent content overflow
95
95
  * 3. Create position context
96
96
  * 4. Disable horizontal panning gestures in IE11 and Edge
97
- * 5. Suppress outline on focus
98
97
  */
99
98
 
100
99
  .uk-slider-items > * {
@@ -107,9 +106,6 @@
107
106
  touch-action: pan-y;
108
107
  }
109
108
 
110
- /* 5 */
111
- .uk-slider-items > :focus { outline: none; }
112
-
113
109
 
114
110
  // Hooks
115
111
  // ========================================================================
@@ -59,7 +59,6 @@
59
59
  * 3. Clip child elements, e.g. for `uk-cover`
60
60
  * 4. Optimize animation
61
61
  * 5. Disable horizontal panning gestures in IE11 and Edge
62
- * 6. Suppress outline on focus
63
62
  */
64
63
 
65
64
  .uk-slideshow-items > * {
@@ -78,9 +77,6 @@
78
77
  touch-action: pan-y;
79
78
  }
80
79
 
81
- /* 6 */
82
- .uk-slideshow-items > :focus { outline: none; }
83
-
84
80
  /*
85
81
  * Hide not active items
86
82
  */
@@ -104,12 +104,10 @@
104
104
  .hook-subnav-item;
105
105
  }
106
106
 
107
- /* Hover + Focus */
108
- .uk-subnav > * > a:hover,
109
- .uk-subnav > * > a:focus {
107
+ /* Hover */
108
+ .uk-subnav > * > a:hover {
110
109
  color: @subnav-item-hover-color;
111
110
  text-decoration: @subnav-item-hover-text-decoration;
112
- outline: none;
113
111
  .hook-subnav-item-hover;
114
112
  }
115
113
 
@@ -168,9 +166,8 @@
168
166
  .hook-subnav-pill-item;
169
167
  }
170
168
 
171
- /* Hover + Focus */
172
- .uk-subnav-pill > * > a:hover,
173
- .uk-subnav-pill > * > a:focus {
169
+ /* Hover */
170
+ .uk-subnav-pill > * > a:hover {
174
171
  background-color: @subnav-pill-item-hover-background;
175
172
  color: @subnav-pill-item-hover-color;
176
173
  .hook-subnav-pill-item-hover;
@@ -243,8 +240,7 @@
243
240
  .hook-inverse-subnav-item;
244
241
  }
245
242
 
246
- .uk-subnav > * > a:hover,
247
- .uk-subnav > * > a:focus {
243
+ .uk-subnav > * > a:hover {
248
244
  color: @inverse-subnav-item-hover-color;
249
245
  .hook-inverse-subnav-item-hover;
250
246
  }
@@ -273,8 +269,7 @@
273
269
  .hook-inverse-subnav-pill-item;
274
270
  }
275
271
 
276
- .uk-subnav-pill > * > a:hover,
277
- .uk-subnav-pill > * > a:focus {
272
+ .uk-subnav-pill > * > a:hover {
278
273
  background-color: @inverse-subnav-pill-item-hover-background;
279
274
  color: @inverse-subnav-pill-item-hover-color;
280
275
  .hook-inverse-subnav-pill-item-hover;
@@ -90,9 +90,8 @@
90
90
  .hook-tab-item;
91
91
  }
92
92
 
93
- /* Hover + Focus */
94
- .uk-tab > * > a:hover,
95
- .uk-tab > * > a:focus {
93
+ /* Hover */
94
+ .uk-tab > * > a:hover {
96
95
  color: @tab-item-hover-color;
97
96
  text-decoration: @tab-item-hover-text-decoration;
98
97
  .hook-tab-item-hover;
@@ -199,8 +198,7 @@
199
198
  .hook-inverse-tab-item;
200
199
  }
201
200
 
202
- .uk-tab > * > a:hover,
203
- .uk-tab > * > a:focus{
201
+ .uk-tab > * > a:hover {
204
202
  color: @inverse-tab-item-hover-color;
205
203
  .hook-inverse-tab-item-hover;
206
204
  }
@@ -63,10 +63,8 @@
63
63
  .hook-thumbnav-item;
64
64
  }
65
65
 
66
- /* Hover + Focus */
67
- .uk-thumbnav > * > :hover,
68
- .uk-thumbnav > * > :focus {
69
- outline: none;
66
+ /* Hover */
67
+ .uk-thumbnav > * > :hover {
70
68
  .hook-thumbnav-item-hover;
71
69
  }
72
70
 
@@ -120,8 +118,7 @@
120
118
  .hook-inverse-thumbnav-item;
121
119
  }
122
120
 
123
- .uk-thumbnav > * > :hover,
124
- .uk-thumbnav > * > :focus {
121
+ .uk-thumbnav > * > :hover {
125
122
  .hook-inverse-thumbnav-item-hover;
126
123
  }
127
124
 
@@ -31,11 +31,9 @@
31
31
  .hook-totop;
32
32
  }
33
33
 
34
- /* Hover + Focus */
35
- .uk-totop:hover,
36
- .uk-totop:focus {
34
+ /* Hover */
35
+ .uk-totop:hover {
37
36
  color: @totop-hover-color;
38
- outline: none;
39
37
  .hook-totop-hover;
40
38
  }
41
39
 
@@ -71,8 +69,7 @@
71
69
  .hook-inverse-totop;
72
70
  }
73
71
 
74
- .uk-totop:hover,
75
- .uk-totop:focus {
72
+ .uk-totop:hover {
76
73
  color: @inverse-totop-hover-color;
77
74
  .hook-inverse-totop-hover;
78
75
  }
@@ -38,26 +38,6 @@
38
38
  Component: Transition
39
39
  ========================================================================== */
40
40
 
41
-
42
- /* Toggle (Hover + Focus)
43
- ========================================================================== */
44
-
45
- /*
46
- * 1. Prevent tab highlighting on iOS.
47
- */
48
-
49
- .uk-transition-toggle {
50
- /* 1 */
51
- -webkit-tap-highlight-color: transparent;
52
- }
53
-
54
- /*
55
- * Remove outline for `tabindex`
56
- */
57
-
58
- .uk-transition-toggle:focus { outline: none; }
59
-
60
-
61
41
  /* Transitions
62
42
  ========================================================================== */
63
43
 
@@ -66,14 +46,25 @@
66
46
  * 1. Using `:focus` and tabindex
67
47
  * 2. Using `:hover` and a `touchstart` event listener registered on the document
68
48
  * (Doesn't work on Surface touch devices)
69
- *
70
- * Note: Transitions don't work with `uk-postion-center-*` classes because they also use `transform`,
71
- * therefore it's recommended to use an extra `div` for the transition.
72
49
  */
73
50
 
51
+ :where(.uk-transition-fade),
52
+ :where([class*='uk-transition-scale']),
53
+ :where([class*='uk-transition-slide']) {
54
+ --uk-position-translate-x: 0;
55
+ --uk-position-translate-y: 0;
56
+ }
57
+
74
58
  .uk-transition-fade,
75
59
  [class*='uk-transition-scale'],
76
60
  [class*='uk-transition-slide'] {
61
+ --uk-translate-x: 0;
62
+ --uk-translate-y: 0;
63
+ --uk-scale-x: 1;
64
+ --uk-scale-y: 1;
65
+ transform: translate(var(--uk-position-translate-x), var(--uk-position-translate-y))
66
+ translate(var(--uk-translate-x), var(--uk-translate-y))
67
+ scale(var(--uk-scale-x), var(--uk-scale-y));
77
68
  transition: @transition-duration ease-out;
78
69
  transition-property: opacity, transform, filter;
79
70
  opacity: 0;
@@ -85,55 +76,72 @@
85
76
 
86
77
  .uk-transition-toggle:hover .uk-transition-fade,
87
78
  .uk-transition-toggle:focus .uk-transition-fade,
79
+ .uk-transition-toggle .uk-transition-fade:focus-within,
88
80
  .uk-transition-active.uk-active .uk-transition-fade { opacity: 1; }
89
81
 
90
82
  /*
91
83
  * Scale
84
+ * 1. Make image rendering the same during the transition as before and after. Prefixed because of Safari.
92
85
  */
93
86
 
94
- .uk-transition-scale-up { transform: scale(1,1); }
95
- .uk-transition-scale-down { transform: scale(@transition-scale,@transition-scale); }
87
+ /* 1 */
88
+ [class*='uk-transition-scale'] { -webkit-backface-visibility: hidden; }
89
+
90
+ .uk-transition-scale-up {
91
+ --uk-scale-x: 1;
92
+ --uk-scale-y: 1;
93
+ }
94
+ .uk-transition-scale-down {
95
+ --uk-scale-x: @transition-scale;
96
+ --uk-scale-y: @transition-scale;
97
+ }
96
98
 
97
99
  /* Show */
98
100
  .uk-transition-toggle:hover .uk-transition-scale-up,
99
101
  .uk-transition-toggle:focus .uk-transition-scale-up,
102
+ .uk-transition-toggle .uk-transition-scale-up:focus-within,
100
103
  .uk-transition-active.uk-active .uk-transition-scale-up {
104
+ --uk-scale-x: @transition-scale;
105
+ --uk-scale-y: @transition-scale;
101
106
  opacity: 1;
102
- transform: scale(@transition-scale,@transition-scale);
103
107
  }
104
108
 
105
109
  .uk-transition-toggle:hover .uk-transition-scale-down,
106
110
  .uk-transition-toggle:focus .uk-transition-scale-down,
111
+ .uk-transition-toggle .uk-transition-scale-down:focus-within,
107
112
  .uk-transition-active.uk-active .uk-transition-scale-down {
113
+ --uk-scale-x: 1;
114
+ --uk-scale-y: 1;
108
115
  opacity: 1;
109
- transform: scale(1,1);
110
116
  }
111
117
 
112
118
  /*
113
119
  * Slide
114
120
  */
115
121
 
116
- .uk-transition-slide-top { transform: translateY(-100%); }
117
- .uk-transition-slide-bottom { transform: translateY(100%); }
118
- .uk-transition-slide-left { transform: translateX(-100%); }
119
- .uk-transition-slide-right { transform: translateX(100%); }
122
+ .uk-transition-slide-top { --uk-translate-y: -100%; }
123
+ .uk-transition-slide-bottom { --uk-translate-y: 100%; }
124
+ .uk-transition-slide-left { --uk-translate-x: -100%; }
125
+ .uk-transition-slide-right { --uk-translate-x: 100%; }
120
126
 
121
- .uk-transition-slide-top-small { transform: translateY(-@transition-slide-small-translate); }
122
- .uk-transition-slide-bottom-small { transform: translateY(@transition-slide-small-translate); }
123
- .uk-transition-slide-left-small { transform: translateX(-@transition-slide-small-translate); }
124
- .uk-transition-slide-right-small { transform: translateX(@transition-slide-small-translate); }
127
+ .uk-transition-slide-top-small { --uk-translate-y: -@transition-slide-small-translate; }
128
+ .uk-transition-slide-bottom-small { --uk-translate-y: @transition-slide-small-translate; }
129
+ .uk-transition-slide-left-small { --uk-translate-x: -@transition-slide-small-translate; }
130
+ .uk-transition-slide-right-small { --uk-translate-x: @transition-slide-small-translate; }
125
131
 
126
- .uk-transition-slide-top-medium { transform: translateY(-@transition-slide-medium-translate); }
127
- .uk-transition-slide-bottom-medium { transform: translateY(@transition-slide-medium-translate); }
128
- .uk-transition-slide-left-medium { transform: translateX(-@transition-slide-medium-translate); }
129
- .uk-transition-slide-right-medium { transform: translateX(@transition-slide-medium-translate); }
132
+ .uk-transition-slide-top-medium { --uk-translate-y: -@transition-slide-medium-translate; }
133
+ .uk-transition-slide-bottom-medium { --uk-translate-y: @transition-slide-medium-translate; }
134
+ .uk-transition-slide-left-medium { --uk-translate-x: -@transition-slide-medium-translate; }
135
+ .uk-transition-slide-right-medium { --uk-translate-x: @transition-slide-medium-translate; }
130
136
 
131
137
  /* Show */
132
138
  .uk-transition-toggle:hover [class*='uk-transition-slide'],
133
139
  .uk-transition-toggle:focus [class*='uk-transition-slide'],
140
+ .uk-transition-toggle [class*='uk-transition-slide']:focus-within,
134
141
  .uk-transition-active.uk-active [class*='uk-transition-slide'] {
142
+ --uk-translate-x: 0;
143
+ --uk-translate-y: 0;
135
144
  opacity: 1;
136
- transform: translate(0,0);
137
145
  }
138
146
 
139
147
 
@@ -372,11 +372,9 @@
372
372
  .hook-logo;
373
373
  }
374
374
 
375
- /* Hover + Focus */
376
- .uk-logo:hover,
377
- .uk-logo:focus {
375
+ /* Hover */
376
+ .uk-logo:hover {
378
377
  color: @logo-hover-color;
379
- outline: none;
380
378
  /* 1 */
381
379
  text-decoration: none;
382
380
  .hook-logo-hover;
@@ -487,8 +485,7 @@
487
485
  .hook-inverse-logo;
488
486
  }
489
487
 
490
- .uk-logo:hover,
491
- .uk-logo:focus {
488
+ .uk-logo:hover {
492
489
  color: @inverse-logo-hover-color;
493
490
  .hook-inverse-logo-hover;
494
491
  }
@@ -92,21 +92,19 @@
92
92
  .uk-invisible { visibility: hidden !important; }
93
93
 
94
94
 
95
- /* Toggle (Hover + Focus)
95
+ /* Based on the State of the Parent Element
96
96
  ========================================================================== */
97
97
 
98
98
  /*
99
- * Hidden
100
- * 1. The toggle is triggered on touch devices using `:focus` and tabindex
101
- * 2. The target stays visible if any element within receives focus through keyboard
102
- * Doesn't work in Edge, yet.
103
- * 3. Can't use `display: none` nor `visibility: hidden` because both are not focusable.
104
- *
99
+ * Can't use `display: none` nor `visibility: hidden` because both are not focusable.
100
+ * The target stays visible if any element within receives focus through keyboard.
101
+ */
102
+
103
+ /*
104
+ * Discard space when hidden.
105
105
  */
106
106
 
107
- /* 1 + 2 */
108
107
  .uk-visible-toggle:not(:hover):not(:focus) .uk-hidden-hover:not(:focus-within) {
109
- /* 3 */
110
108
  position: absolute !important;
111
109
  width: 0 !important;
112
110
  height: 0 !important;
@@ -116,54 +114,27 @@
116
114
  }
117
115
 
118
116
  /*
119
- * Invisible
120
- */
121
-
122
- /* 1 + 2 */
123
- .uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within) {
124
- /* 3 */
125
- opacity: 0 !important;
126
- }
127
-
128
- /*
129
- * 1. Prevent tab highlighting on iOS.
117
+ * Keep space when hidden.
130
118
  */
131
119
 
132
- .uk-visible-toggle {
133
- /* 1 */
134
- -webkit-tap-highlight-color: transparent;
135
- }
136
-
137
- /*
138
- * Remove outline for `tabindex`
139
- */
140
-
141
- .uk-visible-toggle:focus { outline: none; }
120
+ .uk-visible-toggle:not(:hover):not(:focus) .uk-invisible-hover:not(:focus-within) { opacity: 0 !important; }
142
121
 
143
122
 
144
- /* Touch
123
+ /* Based on Hover Capability of the Pointing Device
145
124
  ========================================================================== */
146
125
 
147
126
  /*
148
- * Hide if primary pointing device has limited accuracy, e.g. a touch screen.
149
- * Works on mobile browsers: Safari, Chrome and Android browser
127
+ * Hover
150
128
  */
151
129
 
152
- @media (pointer: coarse) {
130
+ /* Hide if primary pointing device doesn't support hover, e.g. touch screens. */
131
+ @media (hover: none) {
153
132
  .uk-hidden-touch { display: none !important; }
154
133
  }
155
134
 
156
- /*
157
- * Hide if primary pointing device is accurate, e.g. mouse.
158
- * 1. Fallback for IE11 and Firefox, because `pointer` is not supported
159
- * 2. Reset if supported
160
- */
161
-
162
- /* 1 */
163
- .uk-hidden-notouch { display: none !important; }
164
-
165
- @media (pointer: coarse) {
166
- .uk-hidden-notouch { display: block !important; }
135
+ /* Hide if primary pointing device supports hover, e.g. mice. */
136
+ @media (hover) {
137
+ .uk-hidden-notouch { display: none !important; }
167
138
  }
168
139
 
169
140