react-confirm-alert 2.8.0 → 3.0.2

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/Readme.md CHANGED
@@ -1,10 +1,14 @@
1
1
  # react-confirm-alert
2
2
 
3
- react component confirm dialog. [Live demo](https://ga-mo.github.io/react-confirm-alert/demo/)
3
+ ### React 18 is supported!!
4
+
5
+ React component confirm dialog. [Live demo](https://ga-mo.github.io/react-confirm-alert/demo/)
4
6
 
5
7
  [![npm version](https://badge.fury.io/js/react-confirm-alert.svg)](https://badge.fury.io/js/react-confirm-alert)
6
8
 
7
- Document for v.1.x.x [see](https://github.com/GA-MO/react-confirm-alert/blob/master/Document-v1.md)
9
+ Document for
10
+ [v.1.x.x](https://github.com/GA-MO/react-confirm-alert/blob/master/Document-v1.md),
11
+ [v.2.x.x](https://github.com/GA-MO/react-confirm-alert/blob/master/Document-v2.md)
8
12
 
9
13
  ## Getting started
10
14
 
@@ -30,14 +34,13 @@ const options = {
30
34
  onClick: () => alert('Click No')
31
35
  }
32
36
  ],
33
- childrenElement: () => <div />,
34
- customUI: ({ onClose }) => <div>Custom UI</div>,
35
37
  closeOnEscape: true,
36
38
  closeOnClickOutside: true,
37
39
  keyCodeForClose: [8, 32],
38
40
  willUnmount: () => {},
39
41
  afterClose: () => {}
40
42
  onClickOutside: () => {},
43
+ onKeypress: () => {},
41
44
  onKeypressEscape: () => {},
42
45
  overlayClassName: "overlay-custom-class-name"
43
46
  };
package/index.d.ts CHANGED
@@ -1,23 +1,25 @@
1
1
  declare module 'react-confirm-alert' {
2
2
  export interface ReactConfirmAlertProps {
3
+ targetId?: string
3
4
  title?: string
4
5
  message?: string
5
6
  buttons?: Array<{
6
7
  label: string
7
- onClick: () => void
8
8
  className?: string
9
- }>
9
+ } & HTMLButtonElement>
10
10
  childrenElement?: () => React.ReactNode
11
11
  customUI?: (customUiOptions: {
12
- title: string
13
- message: string
14
- onClose: () => void
12
+ title: string
13
+ message: string
14
+ onClose: () => void
15
15
  }) => React.ReactNode
16
16
  closeOnClickOutside?: boolean
17
17
  closeOnEscape?: boolean
18
+ keyCodeForClose?: Array<number>
18
19
  willUnmount?: () => void
19
20
  onClickOutside?: () => void
20
21
  onKeypressEscape?: () => void
22
+ onkeyPress?: () => void
21
23
  overlayClassName?: string
22
24
  }
23
25
 
package/lib/index.js CHANGED
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = undefined;
7
7
 
8
+ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
9
+
8
10
  var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
9
11
 
10
12
  var _class, _temp2;
@@ -19,7 +21,7 @@ var _propTypes = require('prop-types');
19
21
 
20
22
  var _propTypes2 = _interopRequireDefault(_propTypes);
21
23
 
22
- var _reactDom = require('react-dom');
24
+ var _client = require('react-dom/client');
23
25
 
24
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
27
 
@@ -61,12 +63,13 @@ var ReactConfirmAlert = (_temp2 = _class = function (_Component) {
61
63
  var afterClose = _this.props.afterClose;
62
64
 
63
65
  removeBodyClass();
64
- removeElementReconfirm();
66
+ removeElementReconfirm(_this.props);
65
67
  removeSVGBlurReconfirm(afterClose);
66
- }, _this.keyboardClose = function (event) {
68
+ }, _this.keyboard = function (event) {
67
69
  var _this$props2 = _this.props,
68
70
  closeOnEscape = _this$props2.closeOnEscape,
69
71
  onKeypressEscape = _this$props2.onKeypressEscape,
72
+ onkeyPress = _this$props2.onkeyPress,
70
73
  keyCodeForClose = _this$props2.keyCodeForClose;
71
74
 
72
75
  var keyCode = event.keyCode;
@@ -80,10 +83,14 @@ var ReactConfirmAlert = (_temp2 = _class = function (_Component) {
80
83
  onKeypressEscape(event);
81
84
  _this.close();
82
85
  }
86
+
87
+ if (onkeyPress) {
88
+ onkeyPress();
89
+ }
83
90
  }, _this.componentDidMount = function () {
84
- document.addEventListener('keydown', _this.keyboardClose, false);
91
+ document.addEventListener('keydown', _this.keyboard, false);
85
92
  }, _this.componentWillUnmount = function () {
86
- document.removeEventListener('keydown', _this.keyboardClose, false);
93
+ document.removeEventListener('keydown', _this.keyboard, false);
87
94
  _this.props.willUnmount();
88
95
  }, _this.renderCustomUI = function () {
89
96
  var _this$props3 = _this.props,
@@ -145,9 +152,14 @@ var ReactConfirmAlert = (_temp2 = _class = function (_Component) {
145
152
  buttons.map(function (button, i) {
146
153
  return _react2.default.createElement(
147
154
  'button',
148
- { key: i, onClick: function onClick() {
155
+ _extends({
156
+ key: i,
157
+ className: button.className
158
+ }, button, {
159
+ onClick: function onClick(e) {
149
160
  return _this2.handleClickButton(button);
150
- }, className: button.className },
161
+ }
162
+ }),
151
163
  button.label
152
164
  );
153
165
  })
@@ -172,6 +184,7 @@ var ReactConfirmAlert = (_temp2 = _class = function (_Component) {
172
184
  afterClose: _propTypes2.default.func,
173
185
  onClickOutside: _propTypes2.default.func,
174
186
  onKeypressEscape: _propTypes2.default.func,
187
+ onkeyPress: _propTypes2.default.func,
175
188
  overlayClassName: _propTypes2.default.string
176
189
  }, _class.defaultProps = {
177
190
  buttons: [{
@@ -209,6 +222,9 @@ var ReactConfirmAlert = (_temp2 = _class = function (_Component) {
209
222
  exports.default = ReactConfirmAlert;
210
223
 
211
224
 
225
+ var root = null;
226
+ var targetId = 'react-confirm-alert';
227
+
212
228
  function createSVGBlurReconfirm() {
213
229
  // If has svg ignore to create the svg
214
230
  var svg = document.getElementById('react-confirm-alert-firm-svg');
@@ -239,25 +255,29 @@ function removeSVGBlurReconfirm(afterClose) {
239
255
  }
240
256
 
241
257
  function createElementReconfirm(properties) {
242
- var divTarget = document.getElementById('react-confirm-alert');
258
+ var divTarget = document.getElementById(properties.targetId || targetId);
259
+
260
+ if (properties.targetId && !divTarget) {
261
+ console.error('React Confirm Alert:', 'Can not get element id (#' + properties.targetId + ')');
262
+ }
263
+
243
264
  if (divTarget) {
244
- // Rerender - the mounted ReactConfirmAlert
245
- (0, _reactDom.render)(_react2.default.createElement(ReactConfirmAlert, properties), divTarget);
265
+ root = (0, _client.createRoot)(divTarget);
266
+ root.render(_react2.default.createElement(ReactConfirmAlert, properties));
246
267
  } else {
247
- // Mount the ReactConfirmAlert component
248
268
  document.body.children[0].classList.add('react-confirm-alert-blur');
249
269
  divTarget = document.createElement('div');
250
- divTarget.id = 'react-confirm-alert';
270
+ divTarget.id = targetId;
251
271
  document.body.appendChild(divTarget);
252
- (0, _reactDom.render)(_react2.default.createElement(ReactConfirmAlert, properties), divTarget);
272
+ root = (0, _client.createRoot)(divTarget);
273
+ root.render(_react2.default.createElement(ReactConfirmAlert, properties));
253
274
  }
254
275
  }
255
276
 
256
- function removeElementReconfirm() {
257
- var target = document.getElementById('react-confirm-alert');
277
+ function removeElementReconfirm(properties) {
278
+ var target = document.getElementById(properties.targetId || targetId);
258
279
  if (target) {
259
- (0, _reactDom.unmountComponentAtNode)(target);
260
- target.parentNode.removeChild(target);
280
+ root.unmount(target);
261
281
  }
262
282
  }
263
283
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-confirm-alert",
3
- "version": "2.8.0",
3
+ "version": "3.0.2",
4
4
  "description": "react component confirm dialog.",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -63,8 +63,8 @@
63
63
  "eslint-plugin-standard": "^3.0.1",
64
64
  "mocha": "^3.5.0",
65
65
  "prop-types": "^15.6.2",
66
- "react": "^16.4.1",
67
- "react-dom": "^16.4.1",
66
+ "react": "^18.1.0",
67
+ "react-dom": "^18.1.0",
68
68
  "react-hot-loader": "^4.3.3",
69
69
  "rimraf": "^2.6.1",
70
70
  "style-loader": "^0.18.2",
@@ -73,7 +73,7 @@
73
73
  "webpack-dev-server": "^2.7.1"
74
74
  },
75
75
  "peerDependencies": {
76
- "react": ">=16.0.0",
77
- "react-dom": ">=16.0.0"
76
+ "react": ">=18.0.0",
77
+ "react-dom": ">=10.0.0"
78
78
  }
79
79
  }