uikit 3.16.4-dev.7435f34d2 → 3.16.4-dev.a8da41c36

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 (54) hide show
  1. package/CHANGELOG.md +3 -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 +3 -6
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +6 -2
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +6 -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 +1 -1
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +1 -1
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +31 -2
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +1 -1
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +6 -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 +1 -1
  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 +24 -29
  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 +56 -35
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/api/component.js +1 -2
  44. package/src/js/api/hooks.js +2 -6
  45. package/src/js/components/filter.js +2 -6
  46. package/src/js/components/slider.js +33 -0
  47. package/src/js/core/cover.js +4 -4
  48. package/src/js/core/drop.js +2 -1
  49. package/src/js/core/height-match.js +5 -10
  50. package/src/js/core/scrollspy.js +1 -2
  51. package/src/js/mixin/slider.js +5 -1
  52. package/src/js/util/lang.js +7 -7
  53. package/src/js/util/observer.js +3 -1
  54. package/src/js/util/viewport.js +1 -1
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.16.4-dev.7435f34d2",
5
+ "version": "3.16.4-dev.a8da41c36",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -5,8 +5,7 @@ export default function (UIkit) {
5
5
  const { data: DATA, prefix: PREFIX } = UIkit;
6
6
 
7
7
  UIkit.component = function (name, options) {
8
- name = hyphenate(name);
9
- const id = PREFIX + name;
8
+ const id = PREFIX + hyphenate(name);
10
9
 
11
10
  if (!options) {
12
11
  if (isPlainObject(components[id])) {
@@ -106,20 +106,16 @@ export default function (UIkit) {
106
106
  }
107
107
 
108
108
  function runWatches(initial) {
109
- const {
110
- $options: { computed },
111
- } = this;
112
109
  const values = { ...this._computed };
113
110
  this._computed = {};
114
111
 
115
- for (const key in computed) {
116
- const { watch, immediate } = computed[key];
112
+ for (const [key, { watch, immediate }] of Object.entries(this.$options.computed || {})) {
117
113
  if (
118
114
  watch &&
119
115
  ((initial && immediate) ||
120
116
  (hasOwn(values, key) && !isEqual(values[key], this[key])))
121
117
  ) {
122
- watch.call(this, this[key], values[key]);
118
+ watch.call(this, this[key], initial ? undefined : values[key]);
123
119
  }
124
120
  }
125
121
  }
@@ -70,8 +70,8 @@ export default {
70
70
  return $$(`${target} > *`, $el);
71
71
  },
72
72
 
73
- watch(list, old) {
74
- if (old && !isEqualList(list, old)) {
73
+ watch(list, prev) {
74
+ if (prev) {
75
75
  this.updateState();
76
76
  }
77
77
  },
@@ -211,10 +211,6 @@ function matchFilter(
211
211
  : stateSort === sort && stateOrder === order;
212
212
  }
213
213
 
214
- function isEqualList(listA, listB) {
215
- return listA.length === listB.length && listA.every((el) => listB.includes(el));
216
- }
217
-
218
214
  function getSelector({ filter }) {
219
215
  let selector = '';
220
216
  each(filter, (value) => (selector += value || ''));
@@ -15,7 +15,9 @@ import {
15
15
  findIndex,
16
16
  getIndex,
17
17
  includes,
18
+ isVisible,
18
19
  last,
20
+ observeResize,
19
21
  selFocusable,
20
22
  sumBy,
21
23
  toFloat,
@@ -113,6 +115,37 @@ export default {
113
115
  list: this.list,
114
116
  };
115
117
  },
118
+
119
+ children: {
120
+ get() {
121
+ return children(this.list);
122
+ },
123
+
124
+ watch(slides, prev) {
125
+ if (!prev) {
126
+ this.registerObserver(
127
+ (this._resizeObserver = observeResize(slides, () => this.$emit('resize')))
128
+ );
129
+ }
130
+
131
+ if (prev) {
132
+ slides.forEach(
133
+ (slide) => !includes(prev, slide) && this._resizeObserver.observe(slide)
134
+ );
135
+ prev.forEach(
136
+ (slide) => !includes(slides, slide) && this._resizeObserver.unobserve(slide)
137
+ );
138
+
139
+ this.$emit();
140
+ }
141
+ },
142
+
143
+ immediate: true,
144
+ },
145
+
146
+ slides() {
147
+ return this.children.filter(isVisible);
148
+ },
116
149
  },
117
150
 
118
151
  connected() {
@@ -31,16 +31,16 @@ export default {
31
31
 
32
32
  let dim = { width, height };
33
33
 
34
- if (!dim.width || !dim.height) {
34
+ if (!width || !height) {
35
35
  const intrinsic = {
36
36
  width: $el.naturalWidth || $el.videoWidth || $el.clientWidth,
37
37
  height: $el.naturalHeight || $el.videoHeight || $el.clientHeight,
38
38
  };
39
39
 
40
- if (dim.width) {
41
- dim = ratio(intrinsic, 'width', dim.width);
40
+ if (width) {
41
+ dim = ratio(intrinsic, 'width', width);
42
42
  } else if (height) {
43
- dim = ratio(intrinsic, 'height', dim.height);
43
+ dim = ratio(intrinsic, 'height', height);
44
44
  } else {
45
45
  dim = intrinsic;
46
46
  }
@@ -20,6 +20,7 @@ import {
20
20
  once,
21
21
  overflowParents,
22
22
  parent,
23
+ pick,
23
24
  pointerCancel,
24
25
  pointerDown,
25
26
  pointerEnter,
@@ -111,7 +112,7 @@ export default {
111
112
  this.targetEl = createToggleComponent(this);
112
113
  }
113
114
 
114
- this._style = (({ width, height }) => ({ width, height }))(this.$el.style);
115
+ this._style = pick(this.$el.style, ['width', 'height']);
115
116
  },
116
117
 
117
118
  disconnected() {
@@ -1,6 +1,6 @@
1
1
  import Resize from '../mixin/resize';
2
2
  import { getRows } from './margin';
3
- import { $$, boxModelAdjust, css, dimensions, isVisible } from 'uikit-util';
3
+ import { $$, boxModelAdjust, css, dimensions, isVisible, pick } from 'uikit-util';
4
4
 
5
5
  export default {
6
6
  mixins: [Resize],
@@ -55,7 +55,6 @@ function match(elements) {
55
55
  return { heights: [''], elements };
56
56
  }
57
57
 
58
- css(elements, 'minHeight', '');
59
58
  let heights = elements.map(getHeight);
60
59
  const max = Math.max(...heights);
61
60
 
@@ -66,17 +65,13 @@ function match(elements) {
66
65
  }
67
66
 
68
67
  function getHeight(element) {
69
- let style = false;
68
+ const style = pick(element.style, ['display', 'minHeight']);
69
+
70
70
  if (!isVisible(element)) {
71
- style = element.style.display;
72
71
  css(element, 'display', 'block', 'important');
73
72
  }
74
-
73
+ css(element, 'minHeight', '');
75
74
  const height = dimensions(element).height - boxModelAdjust(element, 'height', 'content-box');
76
-
77
- if (style !== false) {
78
- css(element, 'display', style);
79
- }
80
-
75
+ css(element, style);
81
76
  return height;
82
77
  }
@@ -4,7 +4,6 @@ import {
4
4
  css,
5
5
  filter,
6
6
  data as getData,
7
- isEqual,
8
7
  observeIntersection,
9
8
  once,
10
9
  removeClass,
@@ -49,7 +48,7 @@ export default {
49
48
  css(filter(elements, `:not(.${this.inViewClass})`), 'opacity', 0);
50
49
  }
51
50
 
52
- if (!isEqual(elements, prev)) {
51
+ if (prev) {
53
52
  this.$reset();
54
53
  }
55
54
  },
@@ -144,7 +144,11 @@ export default {
144
144
  },
145
145
 
146
146
  getIndex(index = this.index, prev = this.index) {
147
- return clamp(getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);
147
+ return clamp(
148
+ getIndex(index, this.slides, prev, this.finite),
149
+ 0,
150
+ Math.max(0, this.maxIndex)
151
+ );
148
152
  },
149
153
 
150
154
  getValidIndex(index = this.index, prevIndex = this.prevIndex) {
@@ -10,15 +10,11 @@ export const hyphenate = memoize((str) => str.replace(hyphenateRe, '-$1').toLowe
10
10
 
11
11
  const camelizeRe = /-(\w)/g;
12
12
 
13
- export const camelize = memoize((str) => str.replace(camelizeRe, toUpper));
14
-
15
- export const ucfirst = memoize((str) =>
16
- str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : ''
13
+ export const camelize = memoize((str) =>
14
+ (str.charAt(0).toLowerCase() + str.slice(1)).replace(camelizeRe, (_, c) => c.toUpperCase())
17
15
  );
18
16
 
19
- function toUpper(_, c) {
20
- return c ? c.toUpperCase() : '';
21
- }
17
+ export const ucfirst = memoize((str) => str.charAt(0).toUpperCase() + str.slice(1));
22
18
 
23
19
  export function startsWith(str, search) {
24
20
  return str?.startsWith?.(search);
@@ -180,6 +176,10 @@ export function uniqueBy(array, prop) {
180
176
  return array.filter(({ [prop]: check }) => (seen.has(check) ? false : seen.add(check)));
181
177
  }
182
178
 
179
+ export function pick(obj, props) {
180
+ return props.reduce((res, prop) => ({ ...res, [prop]: obj[prop] }), {});
181
+ }
182
+
183
183
  export function clamp(number, min = 0, max = 1) {
184
184
  return Math.min(Math.max(toNumber(number) || 0, min), max);
185
185
  }
@@ -1,5 +1,5 @@
1
1
  import { on } from './event';
2
- import { toNodes } from './lang';
2
+ import { noop, toNodes } from './lang';
3
3
  import { inBrowser } from './env';
4
4
 
5
5
  export function observeIntersection(targets, cb, options, intersecting = true) {
@@ -31,6 +31,8 @@ export function observeResize(targets, cb, options = { box: 'border-box' }) {
31
31
  listeners.add(cb);
32
32
 
33
33
  return {
34
+ observe: noop,
35
+ unobserve: noop,
34
36
  disconnect() {
35
37
  listeners.delete(cb);
36
38
  },
@@ -143,12 +143,12 @@ export function overflowParents(element) {
143
143
  export function offsetViewport(scrollElement) {
144
144
  const window = toWindow(scrollElement);
145
145
  const {
146
+ visualViewport,
146
147
  document: { documentElement },
147
148
  } = window;
148
149
  let viewportElement =
149
150
  scrollElement === scrollingElement(scrollElement) ? window : scrollElement;
150
151
 
151
- const { visualViewport } = window;
152
152
  if (isWindow(viewportElement) && visualViewport) {
153
153
  let { height, width, scale, pageTop: top, pageLeft: left } = visualViewport;
154
154
  height = Math.round(height * scale);