uikit 3.11.2-dev.ada192797 → 3.11.2-dev.ae39176f2

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 (62) hide show
  1. package/CHANGELOG.md +9 -2
  2. package/build/scss.js +1 -1
  3. package/dist/css/uikit-core-rtl.css +42 -17
  4. package/dist/css/uikit-core-rtl.min.css +1 -1
  5. package/dist/css/uikit-core.css +42 -17
  6. package/dist/css/uikit-core.min.css +1 -1
  7. package/dist/css/uikit-rtl.css +42 -17
  8. package/dist/css/uikit-rtl.min.css +1 -1
  9. package/dist/css/uikit.css +42 -17
  10. package/dist/css/uikit.min.css +1 -1
  11. package/dist/js/components/countdown.js +1 -1
  12. package/dist/js/components/countdown.min.js +1 -1
  13. package/dist/js/components/filter.js +1 -1
  14. package/dist/js/components/filter.min.js +1 -1
  15. package/dist/js/components/lightbox-panel.js +1 -1
  16. package/dist/js/components/lightbox-panel.min.js +1 -1
  17. package/dist/js/components/lightbox.js +1 -1
  18. package/dist/js/components/lightbox.min.js +1 -1
  19. package/dist/js/components/notification.js +1 -1
  20. package/dist/js/components/notification.min.js +1 -1
  21. package/dist/js/components/parallax.js +1 -1
  22. package/dist/js/components/parallax.min.js +1 -1
  23. package/dist/js/components/slider-parallax.js +1 -1
  24. package/dist/js/components/slider-parallax.min.js +1 -1
  25. package/dist/js/components/slider.js +1 -1
  26. package/dist/js/components/slider.min.js +1 -1
  27. package/dist/js/components/slideshow-parallax.js +1 -1
  28. package/dist/js/components/slideshow-parallax.min.js +1 -1
  29. package/dist/js/components/slideshow.js +1 -1
  30. package/dist/js/components/slideshow.min.js +1 -1
  31. package/dist/js/components/sortable.js +5 -4
  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 +51 -42
  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 +55 -45
  42. package/dist/js/uikit.min.js +1 -1
  43. package/package.json +1 -1
  44. package/src/js/api/component.js +1 -1
  45. package/src/js/api/state.js +20 -24
  46. package/src/js/components/sortable.js +4 -3
  47. package/src/js/core/drop.js +1 -1
  48. package/src/js/core/navbar.js +6 -2
  49. package/src/js/core/sticky.js +22 -14
  50. package/src/less/components/flex.less +0 -9
  51. package/src/less/components/navbar.less +0 -7
  52. package/src/less/components/utility.less +22 -0
  53. package/src/scss/components/flex.scss +0 -9
  54. package/src/scss/components/form.scss +3 -3
  55. package/src/scss/components/icon.scss +2 -2
  56. package/src/scss/components/navbar.scss +0 -7
  57. package/src/scss/components/search.scss +1 -1
  58. package/src/scss/components/utility.scss +22 -0
  59. package/src/scss/variables-theme.scss +6 -6
  60. package/src/scss/variables.scss +6 -6
  61. package/tests/sticky-parallax.html +4 -4
  62. package/tests/sticky.html +14 -3
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.11.2-dev.ada192797",
5
+ "version": "3.11.2-dev.ae39176f2",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -28,7 +28,7 @@ export default function (UIkit) {
28
28
 
29
29
  return component.options.functional
30
30
  ? new component({data: isPlainObject(element) ? element : [...arguments]})
31
- : !element ? init(element) : $$(element).map(init)[0];
31
+ : element ? $$(element).map(init)[0] : init();
32
32
 
33
33
  function init(element) {
34
34
 
@@ -1,4 +1,4 @@
1
- import {assign, camelize, data as getData, hasOwn, hyphenate, isArray, isEmpty, isFunction, isNumeric, isPlainObject, isString, isUndefined, mergeOptions, on, parseOptions, startsWith, toBoolean, toNumber} from 'uikit-util';
1
+ import {assign, camelize, data as getData, hasOwn, hyphenate, isArray, isFunction, isNumeric, isPlainObject, isString, isUndefined, mergeOptions, on, parseOptions, startsWith, toBoolean, toNumber} from 'uikit-util';
2
2
 
3
3
  export default function (UIkit) {
4
4
 
@@ -211,11 +211,11 @@ export default function (UIkit) {
211
211
  on(
212
212
  el,
213
213
  name,
214
- !delegate
215
- ? null
216
- : isString(delegate)
214
+ delegate
215
+ ? isString(delegate)
217
216
  ? delegate
218
- : delegate.call(component),
217
+ : delegate.call(component)
218
+ : null,
219
219
  isString(handler) ? component[handler] : handler.bind(component),
220
220
  {passive, capture, self}
221
221
  )
@@ -250,27 +250,23 @@ export default function (UIkit) {
250
250
  : [value];
251
251
  }
252
252
 
253
- function normalizeData({data}, {args, props = {}}) {
254
- data = isArray(data)
255
- ? !isEmpty(args)
256
- ? data.slice(0, args.length).reduce((data, value, index) => {
257
- if (isPlainObject(value)) {
258
- assign(data, value);
259
- } else {
260
- data[args[index]] = value;
261
- }
262
- return data;
263
- }, {})
264
- : undefined
265
- : data;
266
-
267
- if (data) {
268
- for (const key in data) {
269
- if (isUndefined(data[key])) {
270
- delete data[key];
253
+ function normalizeData({data = {}}, {args = [], props = {}}) {
254
+ if (isArray(data)) {
255
+ data = data.slice(0, args.length).reduce((data, value, index) => {
256
+ if (isPlainObject(value)) {
257
+ assign(data, value);
271
258
  } else {
272
- data[key] = props[key] ? coerce(props[key], data[key]) : data[key];
259
+ data[args[index]] = value;
273
260
  }
261
+ return data;
262
+ }, {});
263
+ }
264
+
265
+ for (const key in data) {
266
+ if (isUndefined(data[key])) {
267
+ delete data[key];
268
+ } else if (props[key]) {
269
+ data[key] = coerce(props[key], data[key]);
274
270
  }
275
271
  }
276
272
 
@@ -332,11 +332,12 @@ function appendDrag(container, element) {
332
332
  const clone = append(container, element.outerHTML.replace(/(^<)(?:li|tr)|(?:li|tr)(\/>$)/g, '$1div$2'));
333
333
 
334
334
  css(clone, 'margin', '0', 'important');
335
- css(clone, assign({
335
+ css(clone, {
336
336
  boxSizing: 'border-box',
337
337
  width: element.offsetWidth,
338
- height: element.offsetHeight
339
- }, css(element, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));
338
+ height: element.offsetHeight,
339
+ padding: css(element, 'padding')
340
+ });
340
341
 
341
342
  height(clone.firstElementChild, height(element.firstElementChild));
342
343
 
@@ -308,7 +308,7 @@ export default {
308
308
  if (active) {
309
309
 
310
310
  if (delay && active.isDelaying) {
311
- this.showTimer = setTimeout(this.show, 10);
311
+ this.showTimer = setTimeout(() => matches(target, ':hover') && this.show(), 10);
312
312
  return;
313
313
  }
314
314
 
@@ -137,7 +137,7 @@ export default {
137
137
 
138
138
  handler({current}) {
139
139
  const active = this.getActive();
140
- if (active && includes(active.mode, 'hover') && active.target && !within(active.target, current) && !active.tracker.movesTo(active.$el)) {
140
+ if (active && includes(active.mode, 'hover') && active.target && !within(active.target, current) && !active.isDelaying) {
141
141
  active.hide(false);
142
142
  }
143
143
  }
@@ -301,7 +301,11 @@ export default {
301
301
 
302
302
  const active = this.getActive();
303
303
 
304
- if (matches(this.dropbar, ':hover') && active && active.$el === $el) {
304
+ if (matches(this.dropbar, ':hover')
305
+ && active
306
+ && active.$el === $el
307
+ && !this.toggles.some(el => active.target !== el && matches(el, ':focus'))
308
+ ) {
305
309
  e.preventDefault();
306
310
  }
307
311
  }
@@ -1,6 +1,6 @@
1
1
  import Class from '../mixin/class';
2
2
  import Media from '../mixin/media';
3
- import {$, addClass, after, Animation, assign, clamp, css, dimensions, fastdom, height as getHeight, getScrollingElement, hasClass, isNumeric, isString, isVisible, noop, offset, offsetPosition, parent, query, remove, removeClass, replaceClass, scrollTop, toggleClass, toPx, trigger, within} from 'uikit-util';
3
+ import {$, addClass, after, Animation, clamp, css, dimensions, fastdom, height as getHeight, getScrollingElement, 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
 
@@ -42,7 +42,7 @@ export default {
42
42
 
43
43
  position({position}, $el) {
44
44
  return position === 'auto'
45
- ? offset(this.isFixed ? this.placeholder : $el) > getHeight(window)
45
+ ? (this.isFixed ? this.placeholder : $el).offsetHeight > getHeight(window)
46
46
  ? 'bottom'
47
47
  : 'top'
48
48
  : position;
@@ -143,7 +143,7 @@ export default {
143
143
 
144
144
  {
145
145
 
146
- read({height}, types) {
146
+ read({height, margin}, types) {
147
147
 
148
148
  this.inactive = !this.matchMedia || !isVisible(this.$el);
149
149
 
@@ -151,13 +151,19 @@ export default {
151
151
  return false;
152
152
  }
153
153
 
154
- if (this.isActive && types.has('resize')) {
154
+ const hide = this.isActive && types.has('resize');
155
+ if (hide) {
155
156
  this.hide();
157
+ }
158
+
159
+ if (!this.isActive) {
156
160
  height = this.$el.offsetHeight;
157
- this.show();
161
+ margin = css(this.$el, 'margin');
158
162
  }
159
163
 
160
- height = this.isActive ? height : this.$el.offsetHeight;
164
+ if (hide) {
165
+ this.show();
166
+ }
161
167
 
162
168
  const overflow = Math.max(0, height + this.offset - getHeight(window));
163
169
 
@@ -166,7 +172,7 @@ export default {
166
172
  const offsetParentTop = offset(referenceElement.offsetParent).top;
167
173
 
168
174
  const top = parseProp(this.top, this.$el, topOffset);
169
- const bottom = parseProp(this.bottom, this.$el, topOffset + height);
175
+ const bottom = parseProp(this.bottom, this.$el, topOffset + height, true);
170
176
 
171
177
  const start = Math.max(top, topOffset) - this.offset;
172
178
  const end = bottom
@@ -180,17 +186,17 @@ export default {
180
186
  topOffset,
181
187
  offsetParentTop,
182
188
  height,
189
+ margin,
183
190
  width: dimensions(isVisible(this.widthElement) ? this.widthElement : this.$el).width,
184
- top: offsetPosition(this.placeholder)[0],
185
- margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])
191
+ top: offsetPosition(this.placeholder)[0]
186
192
  };
187
193
  },
188
194
 
189
- write({height, margins}) {
195
+ write({height, margin}) {
190
196
 
191
197
  const {placeholder} = this;
192
198
 
193
- css(placeholder, assign({height}, margins));
199
+ css(placeholder, {height, margin});
194
200
 
195
201
  if (!within(placeholder, document)) {
196
202
  after(this.$el, placeholder);
@@ -315,7 +321,7 @@ export default {
315
321
 
316
322
  const {width, scroll = 0, overflow, overflowScroll = 0, start, end, topOffset, height, offsetParentTop} = this._data;
317
323
  const active = start !== 0 || scroll > start;
318
- let top = Math.max(0, this.offset);
324
+ let top = this.offset;
319
325
  let position = 'fixed';
320
326
 
321
327
  if (scroll > end) {
@@ -343,7 +349,7 @@ export default {
343
349
 
344
350
  };
345
351
 
346
- function parseProp(value, el, propOffset) {
352
+ function parseProp(value, el, propOffset, padding) {
347
353
 
348
354
  if (!value) {
349
355
  return 0;
@@ -355,7 +361,9 @@ function parseProp(value, el, propOffset) {
355
361
 
356
362
  } else {
357
363
 
358
- return offset(value === true ? parent(el) : query(value, el)).bottom;
364
+ const refElement = value === true ? parent(el) : query(value, el);
365
+ return offset(refElement).bottom
366
+ - (padding && refElement && within(el, refElement) ? toFloat(css(refElement, 'paddingBottom')) : 0);
359
367
 
360
368
  }
361
369
  }
@@ -13,15 +13,6 @@
13
13
  .uk-flex { display: flex; }
14
14
  .uk-flex-inline { display: inline-flex; }
15
15
 
16
- /*
17
- * Remove pseudo elements created by micro clearfix as precaution
18
- */
19
-
20
- .uk-flex::before,
21
- .uk-flex::after,
22
- .uk-flex-inline::before,
23
- .uk-flex-inline::after { display: none; }
24
-
25
16
 
26
17
  /* Alignment
27
18
  ========================================================================== */
@@ -109,13 +109,6 @@
109
109
  .uk-navbar-container:not(.uk-navbar-transparent):extend(.uk-light all) when (@navbar-color-mode = light) {}
110
110
  .uk-navbar-container:not(.uk-navbar-transparent):extend(.uk-dark all) when (@navbar-color-mode = dark) {}
111
111
 
112
- /*
113
- * Remove pseudo elements created by micro clearfix as precaution (if Container component is used)
114
- */
115
-
116
- .uk-navbar-container > ::before,
117
- .uk-navbar-container > ::after { display: none !important; }
118
-
119
112
 
120
113
  /* Groups
121
114
  ========================================================================== */
@@ -251,6 +251,28 @@
251
251
  [data-uk-responsive] { max-width: 100%; }
252
252
 
253
253
 
254
+ /* Object
255
+ ========================================================================== */
256
+
257
+ .uk-object-fit-none { object-fit: none; }
258
+ .uk-object-fit-cover { object-fit: cover; }
259
+ .uk-object-fit-contain { object-fit: contain; }
260
+
261
+ /*
262
+ * Position
263
+ */
264
+
265
+ .uk-object-top-left { object-position: 0 0; }
266
+ .uk-object-top-center { object-position: 50% 0; }
267
+ .uk-object-top-right { object-position: 100% 0; }
268
+ .uk-object-center-left { object-position: 0 50%; }
269
+ .uk-object-center-center { object-position: 50% 50%; }
270
+ .uk-object-center-right { object-position: 100% 50%; }
271
+ .uk-object-bottom-left { object-position: 0 100%; }
272
+ .uk-object-bottom-center { object-position: 50% 100%; }
273
+ .uk-object-bottom-right { object-position: 100% 100%; }
274
+
275
+
254
276
  /* Border
255
277
  ========================================================================== */
256
278
 
@@ -13,15 +13,6 @@
13
13
  .uk-flex { display: flex; }
14
14
  .uk-flex-inline { display: inline-flex; }
15
15
 
16
- /*
17
- * Remove pseudo elements created by micro clearfix as precaution
18
- */
19
-
20
- .uk-flex::before,
21
- .uk-flex::after,
22
- .uk-flex-inline::before,
23
- .uk-flex-inline::after { display: none; }
24
-
25
16
 
26
17
  /* Alignment
27
18
  ========================================================================== */
@@ -780,7 +780,7 @@ select.uk-form-width-xsmall { width: ($form-width-xsmall + 25px); }
780
780
 
781
781
  $inverse-form-background: $inverse-global-muted-background !default;
782
782
  $inverse-form-color: $inverse-global-color !default;
783
- $inverse-form-focus-background: fadein($inverse-form-background, 5%) !default;
783
+ $inverse-form-focus-background: fade-in($inverse-form-background, 0.05) !default;
784
784
  $inverse-form-focus-color: $inverse-global-color !default;
785
785
  $inverse-form-placeholder-color: $inverse-global-muted-color !default;
786
786
 
@@ -790,12 +790,12 @@ $inverse-form-datalist-icon-color: $inverse-global-color !default;
790
790
 
791
791
  $inverse-form-radio-background: $inverse-global-muted-background !default;
792
792
 
793
- $inverse-form-radio-focus-background: fadein($inverse-form-radio-background, 5%) !default;
793
+ $inverse-form-radio-focus-background: fade-in($inverse-form-radio-background, 0.05) !default;
794
794
 
795
795
  $inverse-form-radio-checked-background: $inverse-global-primary-background !default;
796
796
  $inverse-form-radio-checked-icon-color: $inverse-global-inverse-color !default;
797
797
 
798
- $inverse-form-radio-checked-focus-background: fadein($inverse-global-primary-background, 10%) !default;
798
+ $inverse-form-radio-checked-focus-background: fade-in($inverse-global-primary-background, 0.1) !default;
799
799
 
800
800
  $inverse-form-icon-color: $inverse-global-muted-color !default;
801
801
  $inverse-form-icon-hover-color: $inverse-global-color !default;
@@ -201,9 +201,9 @@ $inverse-icon-link-hover-color: $inverse-global-color !default;
201
201
  $inverse-icon-link-active-color: $inverse-global-color !default;
202
202
  $inverse-icon-button-background: $inverse-global-muted-background !default;
203
203
  $inverse-icon-button-color: $inverse-global-muted-color !default;
204
- $inverse-icon-button-hover-background: fadein($inverse-icon-button-background, 5%) !default;
204
+ $inverse-icon-button-hover-background: fade-in($inverse-icon-button-background, 0.05) !default;
205
205
  $inverse-icon-button-hover-color: $inverse-global-color !default;
206
- $inverse-icon-button-active-background: fadein($inverse-icon-button-background, 10%) !default;
206
+ $inverse-icon-button-active-background: fade-in($inverse-icon-button-background, 0.1) !default;
207
207
  $inverse-icon-button-active-color: $inverse-global-color !default;
208
208
 
209
209
 
@@ -109,13 +109,6 @@ $navbar-dropbar-z-index: $global-z-index - 20 !default;
109
109
  @if ( $navbar-color-mode == light ) { .uk-navbar-container:not(.uk-navbar-transparent) { @extend .uk-light !optional;} }
110
110
  @if ( $navbar-color-mode == dark ) { .uk-navbar-container:not(.uk-navbar-transparent) { @extend .uk-dark !optional;} }
111
111
 
112
- /*
113
- * Remove pseudo elements created by micro clearfix as precaution (if Container component is used)
114
- */
115
-
116
- .uk-navbar-container > ::before,
117
- .uk-navbar-container > ::after { display: none !important; }
118
-
119
112
 
120
113
  /* Groups
121
114
  ========================================================================== */
@@ -317,7 +317,7 @@ $inverse-search-placeholder-color: $inverse-global-muted-color !def
317
317
  $inverse-search-icon-color: $inverse-global-muted-color !default;
318
318
 
319
319
  $inverse-search-default-background: $inverse-global-muted-background !default;
320
- $inverse-search-default-focus-background: fadein($inverse-search-default-background, 5%) !default;
320
+ $inverse-search-default-focus-background: fade-in($inverse-search-default-background, 0.05) !default;
321
321
 
322
322
  $inverse-search-navbar-background: transparent !default;
323
323
 
@@ -251,6 +251,28 @@ $dragover-box-shadow: 0 0 20px rgba(100,100,100,0.3)
251
251
  [data-uk-responsive] { max-width: 100%; }
252
252
 
253
253
 
254
+ /* Object
255
+ ========================================================================== */
256
+
257
+ .uk-object-fit-none { object-fit: none; }
258
+ .uk-object-fit-cover { object-fit: cover; }
259
+ .uk-object-fit-contain { object-fit: contain; }
260
+
261
+ /*
262
+ * Position
263
+ */
264
+
265
+ .uk-object-top-left { object-position: 0 0; }
266
+ .uk-object-top-center { object-position: 50% 0; }
267
+ .uk-object-top-right { object-position: 100% 0; }
268
+ .uk-object-center-left { object-position: 0 50%; }
269
+ .uk-object-center-center { object-position: 50% 50%; }
270
+ .uk-object-center-right { object-position: 100% 50%; }
271
+ .uk-object-bottom-left { object-position: 0 100%; }
272
+ .uk-object-bottom-center { object-position: 50% 100%; }
273
+ .uk-object-bottom-right { object-position: 100% 100%; }
274
+
275
+
254
276
  /* Border
255
277
  ========================================================================== */
256
278
 
@@ -449,16 +449,16 @@ $internal-form-checkbox-indeterminate-image: "data:image/svg+xml;charset=UTF-8,%
449
449
  $inverse-global-muted-background: rgba($global-inverse-color, 0.1) !default;
450
450
  $inverse-form-background: $inverse-global-muted-background !default;
451
451
  $inverse-form-color: $inverse-global-color !default;
452
- $inverse-form-focus-background: fadein($inverse-form-background, 5%) !default;
452
+ $inverse-form-focus-background: fade-in($inverse-form-background, 0.05) !default;
453
453
  $inverse-form-focus-color: $inverse-global-color !default;
454
454
  $inverse-form-placeholder-color: $inverse-global-muted-color !default;
455
455
  $inverse-form-select-icon-color: $inverse-global-color !default;
456
456
  $inverse-form-datalist-icon-color: $inverse-global-color !default;
457
457
  $inverse-form-radio-background: $inverse-global-muted-background !default;
458
- $inverse-form-radio-focus-background: fadein($inverse-form-radio-background, 5%) !default;
458
+ $inverse-form-radio-focus-background: fade-in($inverse-form-radio-background, 0.05) !default;
459
459
  $inverse-form-radio-checked-background: $inverse-global-primary-background !default;
460
460
  $inverse-form-radio-checked-icon-color: $inverse-global-inverse-color !default;
461
- $inverse-form-radio-checked-focus-background: fadein($inverse-global-primary-background, 10%) !default;
461
+ $inverse-form-radio-checked-focus-background: fade-in($inverse-global-primary-background, 0.1) !default;
462
462
  $inverse-form-icon-color: $inverse-global-muted-color !default;
463
463
  $inverse-form-icon-hover-color: $inverse-global-color !default;
464
464
  $grid-gutter-horizontal: $global-gutter !default;
@@ -543,9 +543,9 @@ $inverse-icon-link-hover-color: $inverse-global-color !default;
543
543
  $inverse-icon-link-active-color: $inverse-global-color !default;
544
544
  $inverse-icon-button-background: $inverse-global-muted-background !default;
545
545
  $inverse-icon-button-color: $inverse-global-muted-color !default;
546
- $inverse-icon-button-hover-background: fadein($inverse-icon-button-background, 5%) !default;
546
+ $inverse-icon-button-hover-background: fade-in($inverse-icon-button-background, 0.05) !default;
547
547
  $inverse-icon-button-hover-color: $inverse-global-color !default;
548
- $inverse-icon-button-active-background: fadein($inverse-icon-button-background, 10%) !default;
548
+ $inverse-icon-button-active-background: fade-in($inverse-icon-button-background, 0.1) !default;
549
549
  $inverse-icon-button-active-color: $inverse-global-color !default;
550
550
  $iconnav-margin-horizontal: $global-small-margin !default;
551
551
  $iconnav-margin-vertical: $iconnav-margin-horizontal !default;
@@ -855,7 +855,7 @@ $inverse-search-color: $inverse-global-color !default;
855
855
  $inverse-search-placeholder-color: $inverse-global-muted-color !default;
856
856
  $inverse-search-icon-color: $inverse-global-muted-color !default;
857
857
  $inverse-search-default-background: transparent !default;
858
- $inverse-search-default-focus-background: fadein($inverse-search-default-background, 5%) !default;
858
+ $inverse-search-default-focus-background: fade-in($inverse-search-default-background, 0.05) !default;
859
859
  $inverse-search-navbar-background: transparent !default;
860
860
  $inverse-search-large-background: transparent !default;
861
861
  $inverse-search-toggle-color: $inverse-global-muted-color !default;
@@ -447,16 +447,16 @@ $internal-form-checkbox-indeterminate-image: "data:image/svg+xml;charset=UTF-8,%
447
447
  $inverse-global-muted-background: rgba($global-inverse-color, 0.1) !default;
448
448
  $inverse-form-background: $inverse-global-muted-background !default;
449
449
  $inverse-form-color: $inverse-global-color !default;
450
- $inverse-form-focus-background: fadein($inverse-form-background, 5%) !default;
450
+ $inverse-form-focus-background: fade-in($inverse-form-background, 0.05) !default;
451
451
  $inverse-form-focus-color: $inverse-global-color !default;
452
452
  $inverse-form-placeholder-color: $inverse-global-muted-color !default;
453
453
  $inverse-form-select-icon-color: $inverse-global-color !default;
454
454
  $inverse-form-datalist-icon-color: $inverse-global-color !default;
455
455
  $inverse-form-radio-background: $inverse-global-muted-background !default;
456
- $inverse-form-radio-focus-background: fadein($inverse-form-radio-background, 5%) !default;
456
+ $inverse-form-radio-focus-background: fade-in($inverse-form-radio-background, 0.05) !default;
457
457
  $inverse-form-radio-checked-background: $inverse-global-primary-background !default;
458
458
  $inverse-form-radio-checked-icon-color: $inverse-global-inverse-color !default;
459
- $inverse-form-radio-checked-focus-background: fadein($inverse-global-primary-background, 10%) !default;
459
+ $inverse-form-radio-checked-focus-background: fade-in($inverse-global-primary-background, 0.1) !default;
460
460
  $inverse-form-icon-color: $inverse-global-muted-color !default;
461
461
  $inverse-form-icon-hover-color: $inverse-global-color !default;
462
462
  $grid-gutter-horizontal: $global-gutter !default;
@@ -541,9 +541,9 @@ $inverse-icon-link-hover-color: $inverse-global-color !default;
541
541
  $inverse-icon-link-active-color: $inverse-global-color !default;
542
542
  $inverse-icon-button-background: $inverse-global-muted-background !default;
543
543
  $inverse-icon-button-color: $inverse-global-muted-color !default;
544
- $inverse-icon-button-hover-background: fadein($inverse-icon-button-background, 5%) !default;
544
+ $inverse-icon-button-hover-background: fade-in($inverse-icon-button-background, 0.05) !default;
545
545
  $inverse-icon-button-hover-color: $inverse-global-color !default;
546
- $inverse-icon-button-active-background: fadein($inverse-icon-button-background, 10%) !default;
546
+ $inverse-icon-button-active-background: fade-in($inverse-icon-button-background, 0.1) !default;
547
547
  $inverse-icon-button-active-color: $inverse-global-color !default;
548
548
  $iconnav-margin-horizontal: $global-small-margin !default;
549
549
  $iconnav-margin-vertical: $iconnav-margin-horizontal !default;
@@ -853,7 +853,7 @@ $inverse-search-color: $inverse-global-color !default;
853
853
  $inverse-search-placeholder-color: $inverse-global-muted-color !default;
854
854
  $inverse-search-icon-color: $inverse-global-muted-color !default;
855
855
  $inverse-search-default-background: $inverse-global-muted-background !default;
856
- $inverse-search-default-focus-background: fadein($inverse-search-default-background, 5%) !default;
856
+ $inverse-search-default-focus-background: fade-in($inverse-search-default-background, 0.05) !default;
857
857
  $inverse-search-navbar-background: transparent !default;
858
858
  $inverse-search-large-background: transparent !default;
859
859
  $inverse-search-toggle-color: $inverse-global-muted-color !default;
@@ -8,9 +8,9 @@
8
8
  <script src="js/test.js"></script>
9
9
  </head>
10
10
 
11
- <body style="padding-bottom: 1100px;">
11
+ <body style="padding-bottom: 100vh;">
12
12
 
13
- <div class="uk-section uk-section-primary uk-position-z-index-negative uk-flex uk-flex-center uk-flex-middle uk-text-center" uk-sticky="bottom: +* +*" uk-height-viewport>
13
+ <div class="uk-section uk-section-primary uk-position-z-index-negative uk-flex uk-flex-center uk-flex-middle uk-text-center" uk-sticky="position: auto; bottom: +* +*" uk-height-viewport>
14
14
  <div class="uk-container">
15
15
 
16
16
  <h1 class="uk-heading-2xlarge">Sticky Section</h1>
@@ -130,9 +130,9 @@
130
130
  </div>
131
131
  <div>
132
132
 
133
- <div class="uk-tile uk-tile-large uk-tile-muted uk-text-center" style="height: 100vh" uk-sticky="bottom: #js-sticky-parallax-viewport">
133
+ <div class="uk-background-muted uk-text-center" style="height: 100vh" uk-sticky="bottom: #js-sticky-parallax-viewport">
134
134
 
135
- <div uk-parallax="target: #js-sticky-parallax-viewport; start: 100vh; end: 100vh; y: 0, 35vh; easing: 0">
135
+ <div uk-parallax="target: #js-sticky-parallax-viewport; start: 100vh; end: 100vh; y: 10vh, 80vh; easing: 0">
136
136
 
137
137
  <h1 class="uk-margin-remove">Sticky Parallax Viewport</h1>
138
138
 
package/tests/sticky.html CHANGED
@@ -57,14 +57,25 @@
57
57
  </div>
58
58
 
59
59
  <p id="hash" class="uk-margin-large">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
60
+
61
+ <div class="viewport uk-margin">
62
+ <div class="uk-grid uk-child-width-1-6" uk-height-viewport>
63
+ <div>
64
+
65
+ <div class="uk-card uk-card-primary uk-card-body" uk-sticky="position: bottom; bottom: !.viewport">Sticky bottom</div>
66
+
67
+ </div>
68
+ </div>
69
+ </div>
70
+
60
71
  </div>
61
72
  <div class="uk-width-1-6">
62
73
  <div class="viewport" style="min-height: 200vh;">
63
74
  <div>
64
- <div class="uk-card uk-card-primary uk-card-body" style="height: 120vh" uk-sticky="bottom: !.viewport">
75
+ <div class="uk-card uk-card-primary uk-card-body" uk-sticky="bottom: !.viewport">
65
76
  <p>Oversized Content</p>
66
77
 
67
- <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
78
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</p>
68
79
  </div>
69
80
  </div>
70
81
  </div>
@@ -106,7 +117,7 @@
106
117
  <td><code>offset</code></td>
107
118
  <td>String</td>
108
119
  <td>0</td>
109
- <td>The offset the Sticky should be fixed to.</td>
120
+ <td>The offset the Sticky should be fixed to. It supports basic mathematics operands + and -. (e.g. 50vh + 50%)</td>
110
121
  </tr>
111
122
  <tr>
112
123
  <td><code>animation</code></td>