@panneau/action-duplicate 3.0.163 → 3.0.169

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.
Files changed (3) hide show
  1. package/es/index.js +38 -18
  2. package/lib/index.js +38 -18
  3. package/package.json +6 -6
package/es/index.js CHANGED
@@ -6,6 +6,7 @@ import classNames from 'classnames';
6
6
  import PropTypes from 'prop-types';
7
7
  import React, { useState, useMemo, useCallback } from 'react';
8
8
  import { FormattedMessage } from 'react-intl';
9
+ import { useModal } from '@panneau/core/contexts';
9
10
  import Button from '@panneau/element-button';
10
11
  import Confirm from '@panneau/modal-confirm';
11
12
 
@@ -36,7 +37,7 @@ var defaultProps = {
36
37
  "value": "Duplicate"
37
38
  }]
38
39
  }),
39
- icon: 'trash',
40
+ icon: 'copy',
40
41
  value: null,
41
42
  theme: 'primary',
42
43
  disabled: false,
@@ -56,14 +57,17 @@ var DuplicateAction = function DuplicateAction(_ref) {
56
57
  setSelectedItems = _ref.setSelectedItems,
57
58
  className = _ref.className,
58
59
  props = _objectWithoutProperties(_ref, _excluded);
59
- var _useState = useState(false),
60
+ var _useModal = useModal(),
61
+ _useModal$modals = _useModal.modals,
62
+ modals = _useModal$modals === void 0 ? null : _useModal$modals,
63
+ _useModal$register = _useModal.register,
64
+ register = _useModal$register === void 0 ? null : _useModal$register,
65
+ _useModal$unregister = _useModal.unregister,
66
+ unregister = _useModal$unregister === void 0 ? null : _useModal$unregister;
67
+ var _useState = useState(null),
60
68
  _useState2 = _slicedToArray(_useState, 2),
61
- showModal = _useState2[0],
62
- setShowModal = _useState2[1];
63
- var _useState3 = useState(null),
64
- _useState4 = _slicedToArray(_useState3, 2),
65
- error = _useState4[0],
66
- setError = _useState4[1];
69
+ error = _useState2[0],
70
+ setError = _useState2[1];
67
71
  var ids = useMemo(function () {
68
72
  return (value || []).map(function () {
69
73
  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
@@ -74,36 +78,51 @@ var DuplicateAction = function DuplicateAction(_ref) {
74
78
  return id !== null;
75
79
  });
76
80
  }, [value]);
81
+ var idKeys = useMemo(function () {
82
+ return (ids || []).map(function (id) {
83
+ return "".concat(id);
84
+ }).join('-');
85
+ }, [ids]);
77
86
  var idLabels = useMemo(function () {
78
87
  return (ids || []).map(function (id) {
79
88
  return "#".concat(id);
80
89
  }).join(', ');
81
90
  }, [ids]);
91
+ var modalKey = useMemo(function () {
92
+ return "duplicate-".concat(idKeys);
93
+ }, [idKeys]);
94
+ var modal = useMemo(function () {
95
+ return (modals || []).find(function (_ref3) {
96
+ var _ref3$id = _ref3.id,
97
+ id = _ref3$id === void 0 ? null : _ref3$id;
98
+ return id === "".concat(modalKey);
99
+ }) || null;
100
+ }, [modals, modalKey]);
82
101
  var onOpen = useCallback(function () {
83
- setShowModal(true);
84
- }, [setShowModal]);
102
+ register(modalKey);
103
+ }, [modalKey, register]);
104
+ var onClose = useCallback(function () {
105
+ unregister(modalKey);
106
+ }, [modalKey, unregister]);
85
107
  var onConfirm = useCallback(function () {
86
108
  postJSON(endpoint, {
87
109
  ids: ids
88
110
  }, {
89
111
  credentials: 'include',
90
112
  headers: getCSRFHeaders(),
91
- _method: 'POST'
113
+ _method: 'DELETE'
92
114
  }).then(function (response) {
93
- setShowModal(false);
94
115
  if (setSelectedItems !== null) {
95
116
  setSelectedItems([]);
96
117
  }
97
118
  if (onChange !== null) {
98
119
  onChange(response);
99
120
  }
121
+ onClose();
100
122
  })["catch"](function (err) {
101
123
  setError(err);
102
124
  });
103
- }, [ids, endpoint, onChange, setShowModal, setError]);
104
- var onClose = useCallback(function () {
105
- setShowModal(false);
106
- }, [setShowModal]);
125
+ }, [ids, endpoint, onChange, onClose, setError]);
107
126
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, Object.assign({}, props, {
108
127
  className: classNames([styles.container, _defineProperty({}, className, className !== null)]),
109
128
  label: label,
@@ -111,7 +130,8 @@ var DuplicateAction = function DuplicateAction(_ref) {
111
130
  onClick: onOpen,
112
131
  disabled: disabled,
113
132
  theme: disabled ? 'secondary' : theme
114
- })), showModal ? /*#__PURE__*/React.createElement(Confirm, {
133
+ })), modal !== null ? /*#__PURE__*/React.createElement(Confirm, {
134
+ id: modalKey,
115
135
  title: title || /*#__PURE__*/React.createElement(FormattedMessage, {
116
136
  id: "8T+JE7",
117
137
  defaultMessage: [{
@@ -129,7 +149,7 @@ var DuplicateAction = function DuplicateAction(_ref) {
129
149
  "value": "Confirm"
130
150
  }]
131
151
  }),
132
- theme: 'warning'
152
+ theme: 'danger'
133
153
  },
134
154
  cancelButton: {
135
155
  label: /*#__PURE__*/React.createElement(FormattedMessage, {
package/lib/index.js CHANGED
@@ -10,6 +10,7 @@ var classNames = require('classnames');
10
10
  var PropTypes = require('prop-types');
11
11
  var React = require('react');
12
12
  var reactIntl = require('react-intl');
13
+ var contexts = require('@panneau/core/contexts');
13
14
  var Button = require('@panneau/element-button');
14
15
  var Confirm = require('@panneau/modal-confirm');
15
16
 
@@ -40,7 +41,7 @@ var defaultProps = {
40
41
  "value": "Duplicate"
41
42
  }]
42
43
  }),
43
- icon: 'trash',
44
+ icon: 'copy',
44
45
  value: null,
45
46
  theme: 'primary',
46
47
  disabled: false,
@@ -60,14 +61,17 @@ var DuplicateAction = function DuplicateAction(_ref) {
60
61
  setSelectedItems = _ref.setSelectedItems,
61
62
  className = _ref.className,
62
63
  props = _objectWithoutProperties(_ref, _excluded);
63
- var _useState = React.useState(false),
64
+ var _useModal = contexts.useModal(),
65
+ _useModal$modals = _useModal.modals,
66
+ modals = _useModal$modals === void 0 ? null : _useModal$modals,
67
+ _useModal$register = _useModal.register,
68
+ register = _useModal$register === void 0 ? null : _useModal$register,
69
+ _useModal$unregister = _useModal.unregister,
70
+ unregister = _useModal$unregister === void 0 ? null : _useModal$unregister;
71
+ var _useState = React.useState(null),
64
72
  _useState2 = _slicedToArray(_useState, 2),
65
- showModal = _useState2[0],
66
- setShowModal = _useState2[1];
67
- var _useState3 = React.useState(null),
68
- _useState4 = _slicedToArray(_useState3, 2),
69
- error = _useState4[0],
70
- setError = _useState4[1];
73
+ error = _useState2[0],
74
+ setError = _useState2[1];
71
75
  var ids = React.useMemo(function () {
72
76
  return (value || []).map(function () {
73
77
  var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
@@ -78,36 +82,51 @@ var DuplicateAction = function DuplicateAction(_ref) {
78
82
  return id !== null;
79
83
  });
80
84
  }, [value]);
85
+ var idKeys = React.useMemo(function () {
86
+ return (ids || []).map(function (id) {
87
+ return "".concat(id);
88
+ }).join('-');
89
+ }, [ids]);
81
90
  var idLabels = React.useMemo(function () {
82
91
  return (ids || []).map(function (id) {
83
92
  return "#".concat(id);
84
93
  }).join(', ');
85
94
  }, [ids]);
95
+ var modalKey = React.useMemo(function () {
96
+ return "duplicate-".concat(idKeys);
97
+ }, [idKeys]);
98
+ var modal = React.useMemo(function () {
99
+ return (modals || []).find(function (_ref3) {
100
+ var _ref3$id = _ref3.id,
101
+ id = _ref3$id === void 0 ? null : _ref3$id;
102
+ return id === "".concat(modalKey);
103
+ }) || null;
104
+ }, [modals, modalKey]);
86
105
  var onOpen = React.useCallback(function () {
87
- setShowModal(true);
88
- }, [setShowModal]);
106
+ register(modalKey);
107
+ }, [modalKey, register]);
108
+ var onClose = React.useCallback(function () {
109
+ unregister(modalKey);
110
+ }, [modalKey, unregister]);
89
111
  var onConfirm = React.useCallback(function () {
90
112
  fetch.postJSON(endpoint, {
91
113
  ids: ids
92
114
  }, {
93
115
  credentials: 'include',
94
116
  headers: fetch.getCSRFHeaders(),
95
- _method: 'POST'
117
+ _method: 'DELETE'
96
118
  }).then(function (response) {
97
- setShowModal(false);
98
119
  if (setSelectedItems !== null) {
99
120
  setSelectedItems([]);
100
121
  }
101
122
  if (onChange !== null) {
102
123
  onChange(response);
103
124
  }
125
+ onClose();
104
126
  })["catch"](function (err) {
105
127
  setError(err);
106
128
  });
107
- }, [ids, endpoint, onChange, setShowModal, setError]);
108
- var onClose = React.useCallback(function () {
109
- setShowModal(false);
110
- }, [setShowModal]);
129
+ }, [ids, endpoint, onChange, onClose, setError]);
111
130
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, Object.assign({}, props, {
112
131
  className: classNames([styles.container, _defineProperty({}, className, className !== null)]),
113
132
  label: label,
@@ -115,7 +134,8 @@ var DuplicateAction = function DuplicateAction(_ref) {
115
134
  onClick: onOpen,
116
135
  disabled: disabled,
117
136
  theme: disabled ? 'secondary' : theme
118
- })), showModal ? /*#__PURE__*/React.createElement(Confirm, {
137
+ })), modal !== null ? /*#__PURE__*/React.createElement(Confirm, {
138
+ id: modalKey,
119
139
  title: title || /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
120
140
  id: "8T+JE7",
121
141
  defaultMessage: [{
@@ -133,7 +153,7 @@ var DuplicateAction = function DuplicateAction(_ref) {
133
153
  "value": "Confirm"
134
154
  }]
135
155
  }),
136
- theme: 'warning'
156
+ theme: 'danger'
137
157
  },
138
158
  cancelButton: {
139
159
  label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panneau/action-duplicate",
3
- "version": "3.0.163",
3
+ "version": "3.0.169",
4
4
  "description": "Duplicate action",
5
5
  "keywords": [
6
6
  "javascript"
@@ -47,10 +47,10 @@
47
47
  "dependencies": {
48
48
  "@babel/runtime": "^7.12.5",
49
49
  "@folklore/fetch": "^0.1.17",
50
- "@panneau/core": "^3.0.162",
51
- "@panneau/element-button": "^3.0.162",
52
- "@panneau/modal-confirm": "^3.0.163",
53
- "@panneau/themes": "^3.0.162",
50
+ "@panneau/core": "^3.0.169",
51
+ "@panneau/element-button": "^3.0.169",
52
+ "@panneau/modal-confirm": "^3.0.169",
53
+ "@panneau/themes": "^3.0.169",
54
54
  "classnames": "^2.5.1",
55
55
  "prop-types": "^15.7.2",
56
56
  "react-intl": "^5.15.8||^6.0.0"
@@ -58,5 +58,5 @@
58
58
  "publishConfig": {
59
59
  "access": "public"
60
60
  },
61
- "gitHead": "30b29ec9436fb6ead123625baa0bd1b32d69fcac"
61
+ "gitHead": "a8f4fe4f0b0593485d40e97542c32742242919d4"
62
62
  }