react-confirm 0.5.0-5 → 0.5.0
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/confirmable.js +5 -1
- package/dist/controls.d.ts +1 -0
- package/dist/controls.js +9 -3
- package/dist/createConfirmation.js +13 -3
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
- package/src/confirmable.tsx +7 -2
- package/src/controls.ts +4 -0
- package/src/createConfirmation.ts +13 -3
- package/src/types.ts +2 -0
package/dist/confirmable.js
CHANGED
|
@@ -26,8 +26,12 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
26
26
|
var react_1 = require("react");
|
|
27
27
|
var confirmable = function (Component) {
|
|
28
28
|
return function (_a) {
|
|
29
|
-
var dispose = _a.dispose, reject = _a.reject, resolve = _a.resolve, other = __rest(_a, ["dispose", "reject", "resolve"]);
|
|
29
|
+
var dispose = _a.dispose, reject = _a.reject, resolve = _a.resolve, registerSetShow = _a.registerSetShow, other = __rest(_a, ["dispose", "reject", "resolve", "registerSetShow"]);
|
|
30
30
|
var _b = (0, react_1.useState)(true), show = _b[0], setShow = _b[1];
|
|
31
|
+
// Register setShow for external control
|
|
32
|
+
(0, react_1.useEffect)(function () {
|
|
33
|
+
registerSetShow === null || registerSetShow === void 0 ? void 0 : registerSetShow(setShow);
|
|
34
|
+
}, [registerSetShow]);
|
|
31
35
|
var dismiss = function () {
|
|
32
36
|
setShow(false);
|
|
33
37
|
dispose();
|
package/dist/controls.d.ts
CHANGED
package/dist/controls.js
CHANGED
|
@@ -31,17 +31,19 @@ function register(promise, handle) {
|
|
|
31
31
|
* @returns true if successful
|
|
32
32
|
*/
|
|
33
33
|
function proceed(promise, response) {
|
|
34
|
+
var _a;
|
|
34
35
|
var handle = active.get(promise);
|
|
35
36
|
if (!handle || handle.settled)
|
|
36
37
|
return false;
|
|
37
38
|
try {
|
|
39
|
+
(_a = handle.setShow) === null || _a === void 0 ? void 0 : _a.call(handle, false);
|
|
38
40
|
handle.resolve(response);
|
|
39
41
|
}
|
|
40
42
|
finally {
|
|
41
43
|
try {
|
|
42
44
|
handle.dispose();
|
|
43
45
|
}
|
|
44
|
-
catch (
|
|
46
|
+
catch (_b) {
|
|
45
47
|
// Ignore
|
|
46
48
|
}
|
|
47
49
|
active.delete(promise);
|
|
@@ -55,13 +57,15 @@ function proceed(promise, response) {
|
|
|
55
57
|
* @returns true if successful
|
|
56
58
|
*/
|
|
57
59
|
function dismiss(promise) {
|
|
60
|
+
var _a;
|
|
58
61
|
var handle = active.get(promise);
|
|
59
62
|
if (!handle || handle.settled)
|
|
60
63
|
return false;
|
|
61
64
|
try {
|
|
65
|
+
(_a = handle.setShow) === null || _a === void 0 ? void 0 : _a.call(handle, false);
|
|
62
66
|
handle.dispose();
|
|
63
67
|
}
|
|
64
|
-
catch (
|
|
68
|
+
catch (_b) {
|
|
65
69
|
// Ignore
|
|
66
70
|
}
|
|
67
71
|
active.delete(promise);
|
|
@@ -74,17 +78,19 @@ function dismiss(promise) {
|
|
|
74
78
|
* @returns true if successful
|
|
75
79
|
*/
|
|
76
80
|
function cancel(promise, reason) {
|
|
81
|
+
var _a;
|
|
77
82
|
var handle = active.get(promise);
|
|
78
83
|
if (!handle || handle.settled)
|
|
79
84
|
return false;
|
|
80
85
|
try {
|
|
86
|
+
(_a = handle.setShow) === null || _a === void 0 ? void 0 : _a.call(handle, false);
|
|
81
87
|
handle.reject(reason);
|
|
82
88
|
}
|
|
83
89
|
finally {
|
|
84
90
|
try {
|
|
85
91
|
handle.dispose();
|
|
86
92
|
}
|
|
87
|
-
catch (
|
|
93
|
+
catch (_b) {
|
|
88
94
|
// Ignore
|
|
89
95
|
}
|
|
90
96
|
active.delete(promise);
|
|
@@ -20,17 +20,22 @@ var createConfirmationCreater = function (mounter) {
|
|
|
20
20
|
return function (props) {
|
|
21
21
|
var mountId;
|
|
22
22
|
var resolveRef = function () { };
|
|
23
|
+
var rejectRef = function () { };
|
|
24
|
+
var setShowRef;
|
|
23
25
|
function dispose() {
|
|
24
26
|
setTimeout(function () {
|
|
25
27
|
mounter.unmount(mountId);
|
|
26
28
|
}, unmountDelay);
|
|
27
29
|
}
|
|
28
|
-
|
|
30
|
+
// Callback for confirmable to register its setShow function
|
|
31
|
+
var registerSetShow = function (setShow) {
|
|
32
|
+
setShowRef = setShow;
|
|
33
|
+
};
|
|
29
34
|
var inner = new Promise(function (resolve, reject) {
|
|
30
35
|
resolveRef = resolve;
|
|
31
36
|
rejectRef = reject;
|
|
32
37
|
try {
|
|
33
|
-
mountId = mounter.mount(Component, __assign({ reject: reject, resolve: resolve, dispose: dispose }, props), mountingNode);
|
|
38
|
+
mountId = mounter.mount(Component, __assign({ reject: reject, resolve: resolve, dispose: dispose, registerSetShow: registerSetShow }, props), mountingNode);
|
|
34
39
|
}
|
|
35
40
|
catch (e) {
|
|
36
41
|
// keep behavior identical to JS version
|
|
@@ -46,7 +51,12 @@ var createConfirmationCreater = function (mounter) {
|
|
|
46
51
|
return Promise.reject(err);
|
|
47
52
|
});
|
|
48
53
|
// Register to controls layer for external control
|
|
49
|
-
(0, controls_1.register)(wrapped, {
|
|
54
|
+
(0, controls_1.register)(wrapped, {
|
|
55
|
+
resolve: resolveRef,
|
|
56
|
+
reject: rejectRef,
|
|
57
|
+
dispose: dispose,
|
|
58
|
+
get setShow() { return setShowRef; }
|
|
59
|
+
});
|
|
50
60
|
return wrapped;
|
|
51
61
|
};
|
|
52
62
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export type ConfirmableProps<P, R> = {
|
|
|
3
3
|
dispose: () => void;
|
|
4
4
|
resolve: (value: R | PromiseLike<R>) => void;
|
|
5
5
|
reject: (reason?: any) => void;
|
|
6
|
+
/** Register a callback to control show state from outside */
|
|
7
|
+
registerSetShow?: (setShow: (show: boolean) => void) => void;
|
|
6
8
|
} & P;
|
|
7
9
|
export type ConfirmDialogProps<P, R> = {
|
|
8
10
|
/** Dismiss dialog without resolving the promise. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-confirm",
|
|
3
|
-
"version": "0.5.0
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "A lightweight React library that simplifies confirmation dialogs with a Promise-based API — like window.confirm(), but fully customizable.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/src/confirmable.tsx
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import type { ConfirmableProps, ConfirmDialog, ConfirmableDialog } from './types';
|
|
3
3
|
|
|
4
4
|
const confirmable: <P, R>(Component: ConfirmDialog<P, R>) => ConfirmableDialog<P, R> =
|
|
5
5
|
<P, R>(Component: ConfirmDialog<P, R>) =>
|
|
6
|
-
({ dispose, reject, resolve, ...other }: ConfirmableProps<P, R>) => {
|
|
6
|
+
({ dispose, reject, resolve, registerSetShow, ...other }: ConfirmableProps<P, R>) => {
|
|
7
7
|
const [show, setShow] = useState(true);
|
|
8
8
|
|
|
9
|
+
// Register setShow for external control
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
registerSetShow?.(setShow);
|
|
12
|
+
}, [registerSetShow]);
|
|
13
|
+
|
|
9
14
|
const dismiss = () => {
|
|
10
15
|
setShow(false);
|
|
11
16
|
dispose();
|
package/src/controls.ts
CHANGED
|
@@ -8,6 +8,7 @@ export type ConfirmationHandle<R> = {
|
|
|
8
8
|
resolve: (value: R) => void;
|
|
9
9
|
reject: (reason?: any) => void;
|
|
10
10
|
dispose: () => void;
|
|
11
|
+
setShow?: (show: boolean) => void;
|
|
11
12
|
settled?: boolean;
|
|
12
13
|
};
|
|
13
14
|
|
|
@@ -45,6 +46,7 @@ export function proceed<R>(promise: Promise<R>, response: R): boolean {
|
|
|
45
46
|
if (!handle || handle.settled) return false;
|
|
46
47
|
|
|
47
48
|
try {
|
|
49
|
+
handle.setShow?.(false);
|
|
48
50
|
handle.resolve(response);
|
|
49
51
|
} finally {
|
|
50
52
|
try {
|
|
@@ -69,6 +71,7 @@ export function dismiss<R>(promise: Promise<R>): boolean {
|
|
|
69
71
|
if (!handle || handle.settled) return false;
|
|
70
72
|
|
|
71
73
|
try {
|
|
74
|
+
handle.setShow?.(false);
|
|
72
75
|
handle.dispose();
|
|
73
76
|
} catch {
|
|
74
77
|
// Ignore
|
|
@@ -89,6 +92,7 @@ export function cancel<R>(promise: Promise<R>, reason?: unknown): boolean {
|
|
|
89
92
|
if (!handle || handle.settled) return false;
|
|
90
93
|
|
|
91
94
|
try {
|
|
95
|
+
handle.setShow?.(false);
|
|
92
96
|
handle.reject(reason);
|
|
93
97
|
} finally {
|
|
94
98
|
try {
|
|
@@ -8,6 +8,8 @@ export const createConfirmationCreater = (mounter: Mounter) =>
|
|
|
8
8
|
return (props: P): Promise<R> => {
|
|
9
9
|
let mountId: string;
|
|
10
10
|
let resolveRef: (value: R) => void = () => {};
|
|
11
|
+
let rejectRef: (reason?: any) => void = () => {};
|
|
12
|
+
let setShowRef: ((show: boolean) => void) | undefined;
|
|
11
13
|
|
|
12
14
|
function dispose() {
|
|
13
15
|
setTimeout(() => {
|
|
@@ -15,13 +17,16 @@ export const createConfirmationCreater = (mounter: Mounter) =>
|
|
|
15
17
|
}, unmountDelay);
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
// Callback for confirmable to register its setShow function
|
|
21
|
+
const registerSetShow = (setShow: (show: boolean) => void) => {
|
|
22
|
+
setShowRef = setShow;
|
|
23
|
+
};
|
|
19
24
|
|
|
20
25
|
const inner = new Promise<R>((resolve, reject) => {
|
|
21
26
|
resolveRef = resolve;
|
|
22
27
|
rejectRef = reject;
|
|
23
28
|
try {
|
|
24
|
-
mountId = mounter.mount(Component as React.ComponentType<any>, { reject, resolve, dispose, ...props }, mountingNode);
|
|
29
|
+
mountId = mounter.mount(Component as React.ComponentType<any>, { reject, resolve, dispose, registerSetShow, ...props }, mountingNode);
|
|
25
30
|
} catch (e) {
|
|
26
31
|
// keep behavior identical to JS version
|
|
27
32
|
console.error(e);
|
|
@@ -41,7 +46,12 @@ export const createConfirmationCreater = (mounter: Mounter) =>
|
|
|
41
46
|
);
|
|
42
47
|
|
|
43
48
|
// Register to controls layer for external control
|
|
44
|
-
register(wrapped, {
|
|
49
|
+
register(wrapped, {
|
|
50
|
+
resolve: resolveRef,
|
|
51
|
+
reject: rejectRef,
|
|
52
|
+
dispose,
|
|
53
|
+
get setShow() { return setShowRef; }
|
|
54
|
+
});
|
|
45
55
|
|
|
46
56
|
return wrapped;
|
|
47
57
|
};
|
package/src/types.ts
CHANGED
|
@@ -5,6 +5,8 @@ export type ConfirmableProps<P, R> = {
|
|
|
5
5
|
dispose: () => void;
|
|
6
6
|
resolve: (value: R | PromiseLike<R>) => void;
|
|
7
7
|
reject: (reason?: any) => void;
|
|
8
|
+
/** Register a callback to control show state from outside */
|
|
9
|
+
registerSetShow?: (setShow: (show: boolean) => void) => void;
|
|
8
10
|
} & P;
|
|
9
11
|
|
|
10
12
|
export type ConfirmDialogProps<P, R> = {
|