uikit 3.23.8-dev.97ee4c1bb → 3.23.8-dev.ab60f6dc7

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 (48) 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 +8 -1
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +8 -1
  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 +1 -1
  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 +1 -1
  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 +34 -8
  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 +34 -8
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +1 -1
  43. package/src/js/core/drop.js +3 -2
  44. package/src/js/core/dropnav.js +17 -0
  45. package/src/js/core/icon.js +5 -0
  46. package/src/js/core/navbar.js +1 -0
  47. package/src/js/core/toggle.js +15 -9
  48. package/src/js/mixin/modal.js +11 -0
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.23.8-dev.97ee4c1bb",
5
+ "version": "3.23.8-dev.ab60f6dc7",
6
6
  "main": "dist/js/uikit.js",
7
7
  "style": "dist/css/uikit.css",
8
8
  "sideEffects": [
@@ -117,6 +117,7 @@ export default {
117
117
  if (this.toggle && !this.targetEl) {
118
118
  this.targetEl = createToggleComponent(this);
119
119
  }
120
+ attr(this.targetEl, 'aria-expanded', false);
120
121
 
121
122
  this._style = pick(this.$el.style, ['width', 'height']);
122
123
  },
@@ -297,7 +298,7 @@ export default {
297
298
 
298
299
  active = this.isActive() ? null : active;
299
300
  this.tracker.cancel();
300
- attr(this.targetEl, 'aria-expanded', null);
301
+ attr(this.targetEl, 'aria-expanded', false);
301
302
  },
302
303
  },
303
304
  ],
@@ -460,7 +461,7 @@ function createToggleComponent(drop) {
460
461
  target: drop.$el,
461
462
  mode: drop.mode,
462
463
  });
463
- attr($el, 'aria-haspopup', true);
464
+ $el.ariaHasPopup = true;
464
465
 
465
466
  return $el;
466
467
  }
@@ -15,8 +15,12 @@ import {
15
15
  noop,
16
16
  observeResize,
17
17
  offset,
18
+ on,
18
19
  once,
19
20
  parents,
21
+ pointerEnter,
22
+ pointerLeave,
23
+ pointerMove,
20
24
  query,
21
25
  remove,
22
26
  selFocusable,
@@ -58,6 +62,7 @@ export default {
58
62
  boundary: true,
59
63
  dropbar: false,
60
64
  dropbarAnchor: false,
65
+ delayShow: 160,
61
66
  duration: 200,
62
67
  container: false,
63
68
  selNavItem: '> li > a, > ul > li > a',
@@ -119,6 +124,8 @@ export default {
119
124
 
120
125
  connected() {
121
126
  this.initializeDropdowns();
127
+
128
+ preventInitialPointerEnter(this.$el);
122
129
  },
123
130
 
124
131
  disconnected() {
@@ -430,3 +437,13 @@ function handleNavItemNavigation(e, toggles, active) {
430
437
  toggles[getIndex(next, toggles, toggles.indexOf(active.targetEl || current))].focus();
431
438
  }
432
439
  }
440
+
441
+ // Prevents initial pointer events from opening dropdowns on page load (Safari/Firefox)
442
+ function preventInitialPointerEnter(el) {
443
+ const off = () => handlers.forEach((handler) => handler());
444
+ const handlers = [
445
+ once(el.ownerDocument, pointerMove, (e) => el.contains(e.target) || off()),
446
+ on(el, `mouseenter ${pointerEnter}`, (e) => e.stopPropagation(), { capture: true }),
447
+ on(el, `mouseleave ${pointerLeave}`, off, { capture: true }),
448
+ ];
449
+ }
@@ -195,7 +195,12 @@ export const Slidenav = {
195
195
 
196
196
  export const NavbarToggleIcon = {
197
197
  extends: ButtonComponent,
198
+
198
199
  i18n: { label: 'Open menu' },
200
+
201
+ beforeConnect() {
202
+ this.$el.ariaExpanded = false;
203
+ },
199
204
  };
200
205
 
201
206
  export const Close = {
@@ -12,6 +12,7 @@ export default {
12
12
  },
13
13
 
14
14
  data: {
15
+ delayShow: 200,
15
16
  clsDrop: 'uk-navbar-dropdown',
16
17
  selNavItem:
17
18
  '.uk-navbar-nav > li > a,a.uk-navbar-item,button.uk-navbar-item,.uk-navbar-item a,.uk-navbar-item button,.uk-navbar-toggle', // Simplify with :where() selector once browser target is Safari 14+
@@ -4,6 +4,7 @@ import {
4
4
  includes,
5
5
  isBoolean,
6
6
  isFocusable,
7
+ isSameSiteAnchor,
7
8
  isTag,
8
9
  isTouch,
9
10
  matches,
@@ -153,18 +154,23 @@ export default {
153
154
  filter: ({ mode }) => ['click', 'hover'].some((m) => includes(mode, m)),
154
155
 
155
156
  handler(e) {
156
- let link;
157
- if (
158
- this._preventClick ||
159
- e.target.closest('a[href="#"], a[href=""]') ||
160
- ((link = e.target.closest('a[href]')) &&
161
- (!this.isToggled(this.target) ||
162
- (link.hash && matches(this.target, link.hash))))
163
- ) {
157
+ if (e.defaultPrevented) {
158
+ return;
159
+ }
160
+
161
+ const link = e.target.closest('a');
162
+ const isButtonLike =
163
+ isSameSiteAnchor(link) && (!link.hash || matches(this.target, link.hash));
164
+
165
+ if (this._preventClick || isButtonLike || (link && !this.isToggled(this.target))) {
164
166
  e.preventDefault();
165
167
  }
166
168
 
167
- if (!this._preventClick && includes(this.mode, 'click')) {
169
+ if (
170
+ !this._preventClick &&
171
+ includes(this.mode, 'click') &&
172
+ (!link || isButtonLike || e.defaultPrevented)
173
+ ) {
168
174
  this.toggle();
169
175
  }
170
176
  },
@@ -156,6 +156,8 @@ export default {
156
156
  );
157
157
 
158
158
  addClass(document.documentElement, this.clsPage);
159
+
160
+ setAriaExpanded(this.target, true);
159
161
  },
160
162
  },
161
163
 
@@ -194,6 +196,9 @@ export default {
194
196
  if (isFocusable(this.target)) {
195
197
  this.target.focus();
196
198
  }
199
+
200
+ setAriaExpanded(this.target, false);
201
+
197
202
  this.target = null;
198
203
  },
199
204
  },
@@ -295,3 +300,9 @@ function listenForEscClose(modal) {
295
300
  }
296
301
  });
297
302
  }
303
+
304
+ function setAriaExpanded(el, toggled) {
305
+ if (el?.ariaExpanded) {
306
+ el.ariaExpanded = toggled;
307
+ }
308
+ }