vrembem 4.0.0-next.19 → 4.0.0-next.20

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.
package/dev/index.umd.cjs CHANGED
@@ -1202,7 +1202,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
1202
1202
  // Feature settings
1203
1203
  eventListeners: true,
1204
1204
  eventType: "click",
1205
- placement: "bottom"
1205
+ placement: "bottom",
1206
+ hoverToggleDelay: 0
1206
1207
  };
1207
1208
  function getConfig(el, settings) {
1208
1209
  const styles = getComputedStyle(el);
@@ -1213,7 +1214,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
1213
1214
  "overflow-padding": 0,
1214
1215
  "flip-padding": 0,
1215
1216
  "arrow-element": settings.selectorArrow,
1216
- "arrow-padding": 0
1217
+ "arrow-padding": 0,
1218
+ "toggle-delay": settings.hoverToggleDelay
1217
1219
  };
1218
1220
  for (const prop in config) {
1219
1221
  const prefix = getPrefix();
@@ -1336,7 +1338,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
1336
1338
  popover.trigger.setAttribute("aria-expanded", "false");
1337
1339
  }
1338
1340
  popover.popper.setOptions({
1339
- modifiers: [{ name: "eventListeners", enabled: false }]
1341
+ placement: popover.config["placement"],
1342
+ modifiers: [
1343
+ { name: "eventListeners", enabled: false },
1344
+ ...getModifiers(popover.config)
1345
+ ]
1340
1346
  });
1341
1347
  popover.state = "closed";
1342
1348
  if (popover.trigger === this.trigger) {
@@ -1376,6 +1382,24 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
1376
1382
  handleDocumentClick.call(this, popover);
1377
1383
  }
1378
1384
  }
1385
+ function handleMouseEnter(popover) {
1386
+ if (popover.toggleDelayId) {
1387
+ clearTimeout(popover.toggleDelayId);
1388
+ }
1389
+ const delay = this.activeTooltip ? 0 : popover.config["toggle-delay"];
1390
+ if (this.activeTooltip) this.activeTooltip.close();
1391
+ popover.toggleDelayId = setTimeout(() => {
1392
+ popover.open();
1393
+ }, delay);
1394
+ }
1395
+ function handleMouseLeave(popover) {
1396
+ if (popover.toggleDelayId) {
1397
+ clearTimeout(popover.toggleDelayId);
1398
+ }
1399
+ popover.toggleDelayId = setTimeout(() => {
1400
+ closeCheck.call(this, popover);
1401
+ }, popover.config["toggle-delay"]);
1402
+ }
1379
1403
  function handleKeydown(event) {
1380
1404
  switch (event.key) {
1381
1405
  case "Escape":
@@ -2816,8 +2840,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
2816
2840
  state: "closed",
2817
2841
  el,
2818
2842
  trigger,
2843
+ toggleDelayId: null,
2819
2844
  popper: createPopper(trigger, el),
2820
2845
  config: getConfig(el, this.settings),
2846
+ get isTooltip() {
2847
+ return trigger.hasAttribute("aria-describedby");
2848
+ },
2821
2849
  open() {
2822
2850
  return open.call(root, this);
2823
2851
  },
@@ -2837,6 +2865,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
2837
2865
  await entry.open();
2838
2866
  handleDocumentClick.call(this, entry);
2839
2867
  }
2868
+ entry.popper.setOptions({
2869
+ placement: entry.config["placement"]
2870
+ });
2840
2871
  return entry;
2841
2872
  }
2842
2873
  function registerEventListeners(entry) {
@@ -2846,11 +2877,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
2846
2877
  entry.__eventListeners = [{
2847
2878
  el: ["trigger"],
2848
2879
  type: ["mouseenter", "focus"],
2849
- listener: open.bind(this, entry)
2880
+ listener: handleMouseEnter.bind(this, entry)
2850
2881
  }, {
2851
2882
  el: ["el", "trigger"],
2852
2883
  type: ["mouseleave", "focusout"],
2853
- listener: closeCheck.bind(this, entry)
2884
+ listener: handleMouseLeave.bind(this, entry)
2854
2885
  }];
2855
2886
  entry.__eventListeners.forEach((evObj) => {
2856
2887
  evObj.el.forEach((el) => {
@@ -2886,6 +2917,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
2886
2917
  __privateSet(this, _handleKeydown3, handleKeydown.bind(this));
2887
2918
  if (this.settings.autoMount) this.mount();
2888
2919
  }
2920
+ get active() {
2921
+ return this.collection.find((popover) => popover.state == "opened");
2922
+ }
2923
+ get activeTooltip() {
2924
+ return this.collection.find((popover) => popover.state == "opened" && popover.isTooltip);
2925
+ }
2889
2926
  async mount(options) {
2890
2927
  if (options) this.settings = { ...this.settings, ...options };
2891
2928
  const popovers = document.querySelectorAll(this.settings.selectorPopover);