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.
@@ -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();
@@ -5,6 +5,7 @@ export type ConfirmationHandle<R> = {
5
5
  resolve: (value: R) => void;
6
6
  reject: (reason?: any) => void;
7
7
  dispose: () => void;
8
+ setShow?: (show: boolean) => void;
8
9
  settled?: boolean;
9
10
  };
10
11
  /**
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 (_a) {
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 (_a) {
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 (_a) {
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
- var rejectRef = function () { };
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, { resolve: resolveRef, reject: rejectRef, dispose: dispose });
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-5",
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",
@@ -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
- let rejectRef: (reason?: any) => void = () => {};
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, { resolve: resolveRef, reject: rejectRef, dispose });
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> = {