@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 +6 -7
- package/dist/index.mjs +7 -13
- package/package.json +4 -4
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 {
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
|
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.
|
|
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/
|
|
26
|
-
"@destyler/
|
|
27
|
-
"@destyler/utils": "0.2.
|
|
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"
|