@destyler/dismissable 0.2.11 → 0.2.13

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/dist/index.d.mts CHANGED
@@ -1,17 +1,16 @@
1
1
  import { FocusOutsideEvent, InteractOutsideEvent, InteractOutsideHandlers, InteractOutsideHandlers as InteractOutsideHandlers$1, PointerDownOutsideEvent } from "@destyler/interact-outside";
2
2
  import { MaybeFunction } from "@destyler/utils";
3
-
4
3
  //#region src/dismissable-layer.d.ts
5
4
  type MaybeElement = HTMLElement | null;
6
5
  type Container = MaybeElement | Array<MaybeElement>;
7
6
  type NodeOrFn = MaybeFunction<MaybeElement>;
8
- interface DismissableElementHandlers extends InteractOutsideHandlers$1 {
7
+ export interface DismissableElementHandlers extends InteractOutsideHandlers$1 {
9
8
  /**
10
9
  * Function called when the escape key is pressed
11
10
  */
12
11
  onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined;
13
12
  }
14
- interface PersistentElementOptions {
13
+ export interface PersistentElementOptions {
15
14
  /**
16
15
  * Returns the persistent elements that:
17
16
  * - should not have pointer-events disabled
@@ -19,7 +18,7 @@ interface PersistentElementOptions {
19
18
  */
20
19
  persistentElements?: Array<() => Element | null> | undefined;
21
20
  }
22
- interface DismissableElementOptions extends DismissableElementHandlers, PersistentElementOptions {
21
+ export interface DismissableElementOptions extends DismissableElementHandlers, PersistentElementOptions {
23
22
  /**
24
23
  * Whether to log debug information
25
24
  */
@@ -41,9 +40,9 @@ interface DismissableElementOptions extends DismissableElementHandlers, Persiste
41
40
  */
42
41
  defer?: boolean | undefined;
43
42
  }
44
- declare function trackDismissableElement(nodeOrFn: NodeOrFn, options: DismissableElementOptions): () => void;
45
- declare function trackDismissableBranch(nodeOrFn: NodeOrFn, options?: {
43
+ export declare function trackDismissableElement(nodeOrFn: NodeOrFn, options: DismissableElementOptions): () => void;
44
+ export declare function trackDismissableBranch(nodeOrFn: NodeOrFn, options?: {
46
45
  defer?: boolean;
47
46
  }): () => void;
48
47
  //#endregion
49
- export { DismissableElementHandlers, DismissableElementOptions, type FocusOutsideEvent, type InteractOutsideEvent, type InteractOutsideHandlers, PersistentElementOptions, type PointerDownOutsideEvent, trackDismissableBranch, trackDismissableElement };
48
+ export type { FocusOutsideEvent, InteractOutsideEvent, InteractOutsideHandlers, PointerDownOutsideEvent };
package/dist/index.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  import { addDomEvent, contains, getDocument, getEventTarget, isHTMLElement, raf, setStyle, waitForElements } from "@destyler/dom";
2
2
  import { trackInteractOutside } from "@destyler/interact-outside";
3
3
  import { isFunction } from "@destyler/utils";
4
-
5
4
  //#region src/escape-keydown.ts
6
5
  function trackEscapeKeydown(node, fn) {
7
6
  const handleKeyDown = (event) => {
@@ -11,7 +10,6 @@ function trackEscapeKeydown(node, fn) {
11
10
  };
12
11
  return addDomEvent(getDocument(node), "keydown", handleKeyDown, { capture: true });
13
12
  }
14
-
15
13
  //#endregion
16
14
  //#region src/layer-stack.ts
17
15
  const layerStack = {
@@ -72,7 +70,6 @@ const layerStack = {
72
70
  this.remove(this.layers[0].node);
73
71
  }
74
72
  };
75
-
76
73
  //#endregion
77
74
  //#region src/pointer-event-outside.ts
78
75
  let originalBodyPointerEvents;
@@ -94,13 +91,12 @@ function disablePointerEventsOutside(node, persistentElements) {
94
91
  doc.body.setAttribute("data-inert", "");
95
92
  });
96
93
  }
97
- if (persistentElements) {
98
- const persistedCleanup = waitForElements(persistentElements, (el) => {
99
- cleanups.push(setStyle(el, { pointerEvents: "auto" }));
100
- });
101
- cleanups.push(persistedCleanup);
102
- }
94
+ let cancelPersistentWait;
95
+ if (persistentElements) cancelPersistentWait = waitForElements(persistentElements, (el) => {
96
+ cleanups.push(setStyle(el, { pointerEvents: "auto" }));
97
+ });
103
98
  return () => {
99
+ cancelPersistentWait?.();
104
100
  if (layerStack.hasPointerBlockingLayer()) return;
105
101
  queueMicrotask(() => {
106
102
  doc.body.style.pointerEvents = originalBodyPointerEvents;
@@ -110,7 +106,6 @@ function disablePointerEventsOutside(node, persistentElements) {
110
106
  cleanups.forEach((fn) => fn());
111
107
  };
112
108
  }
113
-
114
109
  //#endregion
115
110
  //#region src/dismissable-layer.ts
116
111
  function trackDismissableElementImpl(node, options) {
@@ -155,7 +150,7 @@ function trackDismissableElementImpl(node, options) {
155
150
  const _containers = Array.isArray(containers) ? containers : [containers];
156
151
  const persistentElements = options.persistentElements?.map((fn) => fn()).filter(isHTMLElement);
157
152
  if (persistentElements) _containers.push(...persistentElements);
158
- return _containers.some((node$1) => contains(node$1, target)) || layerStack.isInNestedLayer(node, target);
153
+ return _containers.some((node) => contains(node, target)) || layerStack.isInNestedLayer(node, target);
159
154
  }
160
155
  const cleanups = [
161
156
  pointerBlocking ? disablePointerEventsOutside(node, options.persistentElements) : void 0,
@@ -202,6 +197,5 @@ function trackDismissableBranch(nodeOrFn, options = {}) {
202
197
  cleanups.forEach((fn) => fn?.());
203
198
  };
204
199
  }
205
-
206
200
  //#endregion
207
- export { trackDismissableBranch, trackDismissableElement };
201
+ export { trackDismissableBranch, trackDismissableElement };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@destyler/dismissable",
3
3
  "type": "module",
4
- "version": "0.2.11",
4
+ "version": "0.2.13",
5
5
  "description": "Dismissable layer utilities for the dom",
6
6
  "author": "Elone Hoo <elonehoo@gmail.com>",
7
7
  "license": "MIT",
@@ -22,9 +22,9 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "@destyler/interact-outside": "0.2.11",
26
- "@destyler/dom": "0.2.11",
27
- "@destyler/utils": "0.2.11"
25
+ "@destyler/dom": "0.2.13",
26
+ "@destyler/interact-outside": "0.2.13",
27
+ "@destyler/utils": "0.2.13"
28
28
  },
29
29
  "publishConfig": {
30
30
  "access": "public"