uikit 3.12.3-dev.6377276f3 → 3.12.3-dev.cbf065cc2

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 (69) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/css/uikit-core-rtl.css +1 -1
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +1 -1
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +1 -1
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +1 -1
  9. package/dist/css/uikit.min.css +1 -1
  10. package/dist/js/components/countdown.js +1 -1
  11. package/dist/js/components/countdown.min.js +1 -1
  12. package/dist/js/components/filter.js +1 -1
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +13 -2
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +13 -2
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +1 -1
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +44 -2
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +9 -7
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +13 -2
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +9 -7
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +13 -2
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +1 -1
  31. package/dist/js/components/sortable.min.js +1 -1
  32. package/dist/js/components/tooltip.js +12 -20
  33. package/dist/js/components/tooltip.min.js +1 -1
  34. package/dist/js/components/upload.js +1 -1
  35. package/dist/js/components/upload.min.js +1 -1
  36. package/dist/js/uikit-core.js +211 -171
  37. package/dist/js/uikit-core.min.js +1 -1
  38. package/dist/js/uikit-icons.js +1 -1
  39. package/dist/js/uikit-icons.min.js +1 -1
  40. package/dist/js/uikit.js +221 -179
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/api/hooks.js +3 -3
  44. package/src/js/api/state.js +14 -39
  45. package/src/js/components/parallax.js +3 -1
  46. package/src/js/components/slider-parallax.js +6 -4
  47. package/src/js/core/core.js +2 -17
  48. package/src/js/core/cover.js +3 -6
  49. package/src/js/core/drop.js +5 -10
  50. package/src/js/core/gif.js +5 -3
  51. package/src/js/core/grid.js +2 -1
  52. package/src/js/core/height-match.js +21 -1
  53. package/src/js/core/height-viewport.js +10 -7
  54. package/src/js/core/img.js +1 -2
  55. package/src/js/core/leader.js +7 -13
  56. package/src/js/core/margin.js +18 -1
  57. package/src/js/core/overflow-auto.js +8 -7
  58. package/src/js/core/scrollspy-nav.js +3 -0
  59. package/src/js/core/scrollspy.js +3 -0
  60. package/src/js/core/sticky.js +7 -1
  61. package/src/js/core/svg.js +16 -14
  62. package/src/js/core/video.js +2 -8
  63. package/src/js/mixin/position.js +10 -18
  64. package/src/js/mixin/resize.js +13 -0
  65. package/src/js/mixin/scroll.js +32 -0
  66. package/src/js/mixin/slider.js +2 -1
  67. package/src/js/util/class.js +1 -6
  68. package/src/js/util/observer.js +57 -20
  69. package/tests/js/index.js +1 -1
@@ -24,18 +24,10 @@ export default {
24
24
  clsPos: '',
25
25
  },
26
26
 
27
- computed: {
28
- pos({ pos }) {
29
- return pos.split('-').concat('center').slice(0, 2);
30
- },
31
-
32
- dir() {
33
- return this.pos[0];
34
- },
35
-
36
- align() {
37
- return this.pos[1];
38
- },
27
+ connected() {
28
+ this.pos = this.$props.pos.split('-').concat('center').slice(0, 2);
29
+ this.dir = this.pos[0];
30
+ this.align = this.pos[1];
39
31
  },
40
32
 
41
33
  methods: {
@@ -44,6 +36,8 @@ export default {
44
36
 
45
37
  let { offset } = this;
46
38
  const axis = this.getAxis();
39
+ const dir = this.pos[0];
40
+ const align = this.pos[1];
47
41
 
48
42
  if (!isNumeric(offset)) {
49
43
  const node = $(offset);
@@ -56,13 +50,11 @@ export default {
56
50
  const { x, y } = positionAt(
57
51
  element,
58
52
  target,
53
+ axis === 'x' ? `${flipPosition(dir)} ${align}` : `${align} ${flipPosition(dir)}`,
54
+ axis === 'x' ? `${dir} ${align}` : `${align} ${dir}`,
59
55
  axis === 'x'
60
- ? `${flipPosition(this.dir)} ${this.align}`
61
- : `${this.align} ${flipPosition(this.dir)}`,
62
- axis === 'x' ? `${this.dir} ${this.align}` : `${this.align} ${this.dir}`,
63
- axis === 'x'
64
- ? `${this.dir === 'left' ? -offset : offset}`
65
- : ` ${this.dir === 'top' ? -offset : offset}`,
56
+ ? `${dir === 'left' ? -offset : offset}`
57
+ : ` ${dir === 'top' ? -offset : offset}`,
66
58
  null,
67
59
  this.flip,
68
60
  boundary
@@ -0,0 +1,13 @@
1
+ import { observeResize } from 'uikit-util';
2
+
3
+ export default {
4
+ computed: {
5
+ resizeTargets() {
6
+ return this.$el;
7
+ },
8
+ },
9
+
10
+ connected() {
11
+ this.registerObserver(observeResize(this.resizeTargets, () => this.$emit('resize')));
12
+ },
13
+ };
@@ -0,0 +1,32 @@
1
+ import { on } from 'uikit-util';
2
+
3
+ export default {
4
+ connected() {
5
+ registerScrollListener(this._uid, () => this.$emit('scroll'));
6
+ },
7
+
8
+ disconnected() {
9
+ unregisterScrollListener(this._uid);
10
+ },
11
+ };
12
+
13
+ const scrollListeners = new Map();
14
+ let unbindScrollListener;
15
+ function registerScrollListener(id, listener) {
16
+ unbindScrollListener =
17
+ unbindScrollListener ||
18
+ on(window, 'scroll', () => scrollListeners.forEach((listener) => listener()), {
19
+ passive: true,
20
+ capture: true,
21
+ });
22
+
23
+ scrollListeners.set(id, listener);
24
+ }
25
+
26
+ function unregisterScrollListener(id) {
27
+ scrollListeners.delete(id);
28
+ if (unbindScrollListener && !scrollListeners.size) {
29
+ unbindScrollListener();
30
+ unbindScrollListener = null;
31
+ }
32
+ }
@@ -1,3 +1,4 @@
1
+ import Resize from './resize';
1
2
  import SliderAutoplay from './slider-autoplay';
2
3
  import SliderDrag from './slider-drag';
3
4
  import SliderNav from './slider-nav';
@@ -15,7 +16,7 @@ import {
15
16
  } from 'uikit-util';
16
17
 
17
18
  export default {
18
- mixins: [SliderAutoplay, SliderDrag, SliderNav],
19
+ mixins: [SliderAutoplay, SliderDrag, SliderNav, Resize],
19
20
 
20
21
  props: {
21
22
  clsActivated: Boolean,
@@ -20,12 +20,7 @@ export function replaceClass(element, ...args) {
20
20
 
21
21
  export function hasClass(element, cls) {
22
22
  [cls] = getClasses(cls);
23
- for (const node of toNodes(element)) {
24
- if (cls && node.classList.contains(cls)) {
25
- return true;
26
- }
27
- }
28
- return false;
23
+ return !!cls && toNodes(element).some((node) => node.classList.contains(cls));
29
24
  }
30
25
 
31
26
  export function toggleClass(element, cls, force) {
@@ -1,33 +1,70 @@
1
+ import { on } from './event';
1
2
  import { toNodes } from './lang';
3
+ import { fastdom } from './fastdom';
2
4
 
3
- // Old chromium based browsers (UC Browser) did not implement `isIntersecting`
4
- export const hasIntersectionObserver =
5
- window.IntersectionObserver && 'isIntersecting' in IntersectionObserverEntry.prototype;
6
5
  export function observeIntersection(targets, cb, options, intersecting = true) {
7
- if (!hasIntersectionObserver) {
8
- return;
9
- }
10
-
11
- const observer = new IntersectionObserver((entries, observer) => {
12
- if (!intersecting || entries.some((entry) => entry.isIntersecting)) {
13
- cb(entries, observer);
14
- }
15
- }, options);
16
- for (const el of toNodes(targets)) {
17
- observer.observe(el);
18
- }
19
- return observer;
6
+ return observe(
7
+ IntersectionObserver,
8
+ targets,
9
+ intersecting
10
+ ? (entries, observer) => {
11
+ if (entries.some((entry) => entry.isIntersecting)) {
12
+ cb(entries, observer);
13
+ }
14
+ }
15
+ : cb,
16
+ options
17
+ );
20
18
  }
21
19
 
22
20
  const hasResizeObserver = window.ResizeObserver;
23
21
  export function observeResize(targets, cb, options = { box: 'border-box' }) {
24
- if (!hasResizeObserver) {
22
+ if (hasResizeObserver) {
23
+ return observe(ResizeObserver, targets, cb, options);
24
+ }
25
+
26
+ // Fallback Safari < 13.1
27
+ initResizeListener();
28
+ listeners.add(cb);
29
+
30
+ return {
31
+ disconnect() {
32
+ listeners.delete(cb);
33
+ },
34
+ };
35
+ }
36
+
37
+ let listeners;
38
+ function initResizeListener() {
39
+ if (listeners) {
25
40
  return;
26
41
  }
27
42
 
28
- const observer = new ResizeObserver((entries, observer) => {
29
- cb(entries, observer);
30
- });
43
+ listeners = new Set();
44
+
45
+ // throttle 'resize'
46
+ let pendingResize;
47
+ const handleResize = () => {
48
+ if (pendingResize) {
49
+ return;
50
+ }
51
+ pendingResize = true;
52
+ fastdom.read(() => (pendingResize = false));
53
+ for (const listener of listeners) {
54
+ listener();
55
+ }
56
+ };
57
+
58
+ on(window, 'load resize', handleResize);
59
+ on(document, 'loadedmetadata load', handleResize, true);
60
+ }
61
+
62
+ export function observeMutation(targets, cb, options) {
63
+ return observe(MutationObserver, targets, cb, options);
64
+ }
65
+
66
+ function observe(Observer, targets, cb, options) {
67
+ const observer = new Observer(cb);
31
68
  for (const el of toNodes(targets)) {
32
69
  observer.observe(el, options);
33
70
  }
package/tests/js/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /* global UIkit, TESTS */
1
+ /* global TESTS */
2
2
  import { addClass, css, fastdom, on, prepend, removeClass, ucfirst } from 'uikit-util';
3
3
 
4
4
  const tests = TESTS;