carbon-react 95.1.3 → 97.0.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/lib/components/multi-action-button/multi-action-button.component.js +2 -2
- package/lib/components/multi-action-button/multi-action-button.config.js +1 -1
- package/lib/components/multi-action-button/multi-action-button.d.ts +4 -1
- package/lib/components/pod/pod.d.ts +3 -1
- package/lib/components/show-edit-pod/show-edit-pod-test.stories.js +165 -0
- package/lib/components/show-edit-pod/show-edit-pod.component.js +154 -223
- package/lib/components/show-edit-pod/show-edit-pod.d.ts +3 -1
- package/lib/components/textarea/textarea-test.stories.js +153 -0
- package/lib/components/textarea/textarea.component.js +144 -215
- package/lib/components/textarea/textarea.d.ts +1 -1
- package/package.json +3 -3
|
@@ -212,8 +212,8 @@ const MultiActionButton = ({
|
|
|
212
212
|
|
|
213
213
|
MultiActionButton.propTypes = { ...marginPropTypes,
|
|
214
214
|
|
|
215
|
-
/** Button type: "primary" | "secondary"
|
|
216
|
-
buttonType: _propTypes.default.oneOf(["primary", "secondary"]),
|
|
215
|
+
/** Button type: "primary" | "secondary" | "tertiary" */
|
|
216
|
+
buttonType: _propTypes.default.oneOf(["primary", "secondary", "tertiary"]),
|
|
217
217
|
|
|
218
218
|
/** The additional button to display. */
|
|
219
219
|
children: _propTypes.default.node.isRequired,
|
|
@@ -8,5 +8,5 @@ const MULTI_ACTION_BUTTON_ALIGNMENTS = ["left", "right"];
|
|
|
8
8
|
exports.MULTI_ACTION_BUTTON_ALIGNMENTS = MULTI_ACTION_BUTTON_ALIGNMENTS;
|
|
9
9
|
const MULTI_ACTION_BUTTON_SIZES = ["small", "medium", "large"];
|
|
10
10
|
exports.MULTI_ACTION_BUTTON_SIZES = MULTI_ACTION_BUTTON_SIZES;
|
|
11
|
-
const MULTI_ACTION_BUTTON_THEMES = ["primary", "secondary"];
|
|
11
|
+
const MULTI_ACTION_BUTTON_THEMES = ["primary", "secondary", "tertiary"];
|
|
12
12
|
exports.MULTI_ACTION_BUTTON_THEMES = MULTI_ACTION_BUTTON_THEMES;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import SplitButton from "../split-button";
|
|
2
2
|
|
|
3
|
-
declare class MultiActionButton extends SplitButton {
|
|
3
|
+
declare class MultiActionButton extends SplitButton {
|
|
4
|
+
/** Button type: "primary" | "secondary" | "tertiary" */
|
|
5
|
+
buttonType?: "primary" | "secondary" | "tertiary";
|
|
6
|
+
}
|
|
4
7
|
|
|
5
8
|
export default MultiActionButton;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Default = exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _addonActions = require("@storybook/addon-actions");
|
|
11
|
+
|
|
12
|
+
var _showEditPod = _interopRequireDefault(require("./show-edit-pod.component"));
|
|
13
|
+
|
|
14
|
+
var _content = _interopRequireDefault(require("../content"));
|
|
15
|
+
|
|
16
|
+
var _specialCharacters = _interopRequireDefault(require("../../../.storybook/utils/argTypes/specialCharacters"));
|
|
17
|
+
|
|
18
|
+
var _textbox = _interopRequireDefault(require("../textbox"));
|
|
19
|
+
|
|
20
|
+
var _fieldset = _interopRequireDefault(require("../fieldset"));
|
|
21
|
+
|
|
22
|
+
var _showEditPod2 = require("./show-edit-pod.config");
|
|
23
|
+
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
|
|
26
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
27
|
+
|
|
28
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
|
+
|
|
30
|
+
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
|
31
|
+
|
|
32
|
+
var _default = {
|
|
33
|
+
component: _showEditPod.default,
|
|
34
|
+
title: "ShowEditPod/Test",
|
|
35
|
+
parameters: {
|
|
36
|
+
info: {
|
|
37
|
+
disable: true
|
|
38
|
+
},
|
|
39
|
+
chromatic: {
|
|
40
|
+
disable: true
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
argTypes: {
|
|
44
|
+
buttonAlign: {
|
|
45
|
+
options: _showEditPod2.SHOW_EDIT_POD_ALIGNMENTS,
|
|
46
|
+
control: {
|
|
47
|
+
type: "select"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
variant: {
|
|
51
|
+
options: _showEditPod2.SHOW_EDIT_POD_THEMES,
|
|
52
|
+
control: {
|
|
53
|
+
type: "select"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
cancelTextSpecialCharacters: _specialCharacters.default,
|
|
57
|
+
deleteTextSpecialCharacters: _specialCharacters.default,
|
|
58
|
+
saveTextSpecialCharacters: _specialCharacters.default,
|
|
59
|
+
titleSpecialCharacters: _specialCharacters.default
|
|
60
|
+
},
|
|
61
|
+
args: {
|
|
62
|
+
border: false,
|
|
63
|
+
buttonAlign: "right",
|
|
64
|
+
cancel: true,
|
|
65
|
+
cancelText: "Cancel",
|
|
66
|
+
cancelTextSpecialCharacters: undefined,
|
|
67
|
+
deleteText: "Delete",
|
|
68
|
+
deleteTextSpecialCharacters: undefined,
|
|
69
|
+
saveText: "Save",
|
|
70
|
+
saveTextSpecialCharacters: undefined,
|
|
71
|
+
saving: false,
|
|
72
|
+
title: "Person",
|
|
73
|
+
titleSpecialCharacters: undefined,
|
|
74
|
+
transitionName: "carbon-show-edit-pod__transition",
|
|
75
|
+
variant: "transparent"
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
exports.default = _default;
|
|
79
|
+
|
|
80
|
+
const ShowEditPodStory = ({
|
|
81
|
+
cancelTextSpecialCharacters,
|
|
82
|
+
cancelText,
|
|
83
|
+
deleteTextSpecialCharacters,
|
|
84
|
+
deleteText,
|
|
85
|
+
saveTextSpecialCharacters,
|
|
86
|
+
saveText,
|
|
87
|
+
titleSpecialCharacters,
|
|
88
|
+
title,
|
|
89
|
+
...args
|
|
90
|
+
}) => {
|
|
91
|
+
const [isEditing, setIsEditing] = (0, _react.useState)(false);
|
|
92
|
+
const [state, setState] = (0, _react.useState)({
|
|
93
|
+
edit_first_name: "Alan",
|
|
94
|
+
edit_second_name: "Smith",
|
|
95
|
+
edit_telephone: "000 000 0000"
|
|
96
|
+
});
|
|
97
|
+
const fieldProps = [{
|
|
98
|
+
key: "edit_first_name",
|
|
99
|
+
label: "First Name"
|
|
100
|
+
}, {
|
|
101
|
+
key: "edit_second_name",
|
|
102
|
+
label: "Second Name"
|
|
103
|
+
}, {
|
|
104
|
+
key: "edit_telephone",
|
|
105
|
+
label: "Telephone"
|
|
106
|
+
}];
|
|
107
|
+
|
|
108
|
+
const onEdit = () => {
|
|
109
|
+
setIsEditing(true);
|
|
110
|
+
(0, _addonActions.action)("edit")();
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const onCancel = () => {
|
|
114
|
+
setIsEditing(false);
|
|
115
|
+
(0, _addonActions.action)("cancel")();
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const onDelete = () => {
|
|
119
|
+
setIsEditing(false);
|
|
120
|
+
(0, _addonActions.action)("delete")();
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const onSave = () => {
|
|
124
|
+
setIsEditing(false);
|
|
125
|
+
(0, _addonActions.action)("onSave")();
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const setField = fieldName => e => {
|
|
129
|
+
setState({ ...state,
|
|
130
|
+
[fieldName]: e.target.value
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
return /*#__PURE__*/_react.default.createElement(_showEditPod.default, _extends({}, args, {
|
|
135
|
+
editing: isEditing,
|
|
136
|
+
onDelete: onDelete,
|
|
137
|
+
onCancel: onCancel,
|
|
138
|
+
onEdit: onEdit,
|
|
139
|
+
editFields: /*#__PURE__*/_react.default.createElement(_fieldset.default, null, fieldProps.map(({
|
|
140
|
+
key,
|
|
141
|
+
label
|
|
142
|
+
}) => /*#__PURE__*/_react.default.createElement(_textbox.default, {
|
|
143
|
+
label: label,
|
|
144
|
+
key: key,
|
|
145
|
+
onChange: setField(key),
|
|
146
|
+
value: state[key],
|
|
147
|
+
labelInline: true,
|
|
148
|
+
labelAlign: "right"
|
|
149
|
+
}))),
|
|
150
|
+
onSave: onSave,
|
|
151
|
+
cancelText: cancelTextSpecialCharacters || cancelText,
|
|
152
|
+
deleteText: deleteTextSpecialCharacters || deleteText,
|
|
153
|
+
saveText: saveTextSpecialCharacters || saveText,
|
|
154
|
+
title: titleSpecialCharacters || title
|
|
155
|
+
}), fieldProps.map(({
|
|
156
|
+
key,
|
|
157
|
+
label
|
|
158
|
+
}) => /*#__PURE__*/_react.default.createElement(_content.default, {
|
|
159
|
+
key: key,
|
|
160
|
+
title: label
|
|
161
|
+
}, state[key])));
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const Default = ShowEditPodStory.bind({});
|
|
165
|
+
exports.Default = Default;
|
|
@@ -5,20 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.BaseShowEditPod = exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
12
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
13
|
-
|
|
14
12
|
var _reactTransitionGroup = require("react-transition-group");
|
|
15
13
|
|
|
16
14
|
var _propTypes2 = _interopRequireDefault(require("@styled-system/prop-types"));
|
|
17
15
|
|
|
18
16
|
var _utils = require("../../style/utils");
|
|
19
17
|
|
|
20
|
-
var _pod = _interopRequireDefault(require("../pod"));
|
|
21
|
-
|
|
22
18
|
var _form = _interopRequireDefault(require("../form"));
|
|
23
19
|
|
|
24
20
|
var _button = _interopRequireDefault(require("../button"));
|
|
@@ -27,8 +23,6 @@ var _deleteButton = _interopRequireDefault(require("./delete-button.style"));
|
|
|
27
23
|
|
|
28
24
|
var _events = _interopRequireDefault(require("../../__internal__/utils/helpers/events"));
|
|
29
25
|
|
|
30
|
-
var _ether = require("../../__internal__/utils/ether");
|
|
31
|
-
|
|
32
26
|
var _tags = _interopRequireDefault(require("../../__internal__/utils/helpers/tags/tags"));
|
|
33
27
|
|
|
34
28
|
var _i18nContext = _interopRequireDefault(require("../../__internal__/i18n-context"));
|
|
@@ -37,230 +31,173 @@ var _showEditPod = _interopRequireDefault(require("./show-edit-pod.style"));
|
|
|
37
31
|
|
|
38
32
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
33
|
|
|
40
|
-
function
|
|
41
|
-
|
|
42
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
43
|
-
|
|
44
|
-
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); } }
|
|
45
|
-
|
|
46
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
47
|
-
|
|
48
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
34
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
49
35
|
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
53
|
-
|
|
54
|
-
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
55
|
-
|
|
56
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
57
|
-
|
|
58
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
59
|
-
|
|
60
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
61
|
-
|
|
62
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
36
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
63
37
|
|
|
64
38
|
const marginPropTypes = (0, _utils.filterStyledSystemMarginProps)(_propTypes2.default.space);
|
|
65
39
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
_this.props.onCancel(ev);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
_this.toggleEditingState(false);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
_defineProperty(_assertThisInitialized(_this), "toggleEditingState", newState => {
|
|
109
|
-
if (!_this.isControlled) {
|
|
110
|
-
_this.setState({
|
|
111
|
-
editing: newState
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
_defineProperty(_assertThisInitialized(_this), "onKeyDown", ev => {
|
|
117
|
-
if (_events.default.isEscKey(ev)) {
|
|
118
|
-
_this.onCancelEditForm(ev);
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
_defineProperty(_assertThisInitialized(_this), "__focusOnPod", () => {
|
|
123
|
-
_reactDom.default.findDOMNode(_this.pod).focus(); // eslint-disable-line react/no-find-dom-node
|
|
124
|
-
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
return _this;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
_createClass(ShowEditPod, [{
|
|
131
|
-
key: "componentDidMount",
|
|
132
|
-
value: function componentDidMount() {
|
|
133
|
-
if (this.props.editing) {
|
|
134
|
-
this.__focusOnPod();
|
|
135
|
-
}
|
|
40
|
+
const ShowEditPod = ({
|
|
41
|
+
border = false,
|
|
42
|
+
className,
|
|
43
|
+
children,
|
|
44
|
+
saving = false,
|
|
45
|
+
editFields,
|
|
46
|
+
editing,
|
|
47
|
+
onEdit,
|
|
48
|
+
onSave,
|
|
49
|
+
onCancel,
|
|
50
|
+
onUndo,
|
|
51
|
+
cancel = true,
|
|
52
|
+
cancelText,
|
|
53
|
+
saveText,
|
|
54
|
+
onDelete,
|
|
55
|
+
deleteText,
|
|
56
|
+
softDelete,
|
|
57
|
+
buttonAlign = "right",
|
|
58
|
+
transitionName = "carbon-show-edit-pod__transition",
|
|
59
|
+
title,
|
|
60
|
+
hideDeleteButtonInViewMode = false,
|
|
61
|
+
variant = "transparent",
|
|
62
|
+
...rest
|
|
63
|
+
}) => {
|
|
64
|
+
const locale = (0, _react.useContext)(_i18nContext.default);
|
|
65
|
+
const ref = (0, _react.useRef)();
|
|
66
|
+
const [isEditing, setIsEditingState] = (0, _react.useState)(false);
|
|
67
|
+
const isControlled = editing !== undefined;
|
|
68
|
+
|
|
69
|
+
const focusPod = () => {
|
|
70
|
+
ref.current.focus();
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
(0, _react.useEffect)(() => {
|
|
74
|
+
if (editing) {
|
|
75
|
+
focusPod();
|
|
136
76
|
}
|
|
137
|
-
},
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
key: "deleteButton",
|
|
144
|
-
value: function deleteButton() {
|
|
145
|
-
const label = this.props.deleteText || this.context.actions.delete();
|
|
146
|
-
return /*#__PURE__*/_react.default.createElement(_deleteButton.default, {
|
|
147
|
-
buttonType: "tertiary",
|
|
148
|
-
"data-element": "delete-button",
|
|
149
|
-
size: "small",
|
|
150
|
-
onClick: this.props.onDelete
|
|
151
|
-
}, label);
|
|
77
|
+
}, [editing]);
|
|
78
|
+
const isInEditMode = isControlled ? editing : isEditing;
|
|
79
|
+
|
|
80
|
+
const toggleEditingState = newState => {
|
|
81
|
+
if (!isControlled) {
|
|
82
|
+
setIsEditingState(newState);
|
|
152
83
|
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
size: "small"
|
|
171
|
-
}, this.props.saveText),
|
|
172
|
-
rightSideButtons: this.props.onDelete ? this.deleteButton() : null,
|
|
173
|
-
saving: this.props.saving
|
|
174
|
-
}, this.props.editFields);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const handleEdit = ev => {
|
|
87
|
+
onEdit(ev);
|
|
88
|
+
toggleEditingState(true);
|
|
89
|
+
focusPod();
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const onSaveEditForm = ev => {
|
|
93
|
+
ev.preventDefault();
|
|
94
|
+
onSave(ev);
|
|
95
|
+
toggleEditingState(false);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const onCancelEditForm = ev => {
|
|
99
|
+
if (onCancel) {
|
|
100
|
+
onCancel(ev);
|
|
175
101
|
}
|
|
176
|
-
}, {
|
|
177
|
-
key: "content",
|
|
178
|
-
value: function content() {
|
|
179
|
-
if (this.isEditing()) {
|
|
180
|
-
return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.CSSTransition, {
|
|
181
|
-
key: "1",
|
|
182
|
-
classNames: this.props.transitionName,
|
|
183
|
-
timeout: {
|
|
184
|
-
enter: 300,
|
|
185
|
-
exit: 50
|
|
186
|
-
}
|
|
187
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
188
|
-
key: "edit"
|
|
189
|
-
}, this.editContent()));
|
|
190
|
-
}
|
|
191
102
|
|
|
103
|
+
toggleEditingState(false);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const onKeyDown = ev => {
|
|
107
|
+
if (_events.default.isEscKey(ev)) {
|
|
108
|
+
onCancelEditForm(ev);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const deleteButton = () => {
|
|
113
|
+
const label = deleteText || locale.actions.delete();
|
|
114
|
+
return /*#__PURE__*/_react.default.createElement(_deleteButton.default, {
|
|
115
|
+
buttonType: "tertiary",
|
|
116
|
+
"data-element": "delete-button",
|
|
117
|
+
size: "small",
|
|
118
|
+
onClick: onDelete
|
|
119
|
+
}, label);
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
const editContent = () => /*#__PURE__*/_react.default.createElement(_form.default, {
|
|
123
|
+
onSubmit: onSaveEditForm,
|
|
124
|
+
buttonAlignment: buttonAlign,
|
|
125
|
+
"data-element": "edit-form",
|
|
126
|
+
leftSideButtons: cancel && /*#__PURE__*/_react.default.createElement(_button.default, {
|
|
127
|
+
"data-element": "cancel-button",
|
|
128
|
+
onClick: onCancelEditForm,
|
|
129
|
+
size: "small"
|
|
130
|
+
}, cancelText),
|
|
131
|
+
saveButton: /*#__PURE__*/_react.default.createElement(_button.default, {
|
|
132
|
+
disabled: saving,
|
|
133
|
+
"data-element": "submit-button",
|
|
134
|
+
buttonType: "primary",
|
|
135
|
+
type: "submit",
|
|
136
|
+
size: "small"
|
|
137
|
+
}, saveText),
|
|
138
|
+
rightSideButtons: onDelete ? deleteButton() : null,
|
|
139
|
+
saving: saving
|
|
140
|
+
}, editFields);
|
|
141
|
+
|
|
142
|
+
const content = () => {
|
|
143
|
+
if (isInEditMode) {
|
|
192
144
|
return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.CSSTransition, {
|
|
193
|
-
key: "
|
|
194
|
-
classNames:
|
|
145
|
+
key: "1",
|
|
146
|
+
classNames: transitionName,
|
|
195
147
|
timeout: {
|
|
196
148
|
enter: 300,
|
|
197
149
|
exit: 50
|
|
198
150
|
}
|
|
199
151
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
200
|
-
key: "
|
|
201
|
-
},
|
|
152
|
+
key: "edit"
|
|
153
|
+
}, editContent()));
|
|
202
154
|
}
|
|
203
|
-
}, {
|
|
204
|
-
key: "universalProps",
|
|
205
|
-
value: function universalProps() {
|
|
206
|
-
const {
|
|
207
|
-
onEdit,
|
|
208
|
-
onDelete,
|
|
209
|
-
className,
|
|
210
|
-
...props
|
|
211
|
-
} = (0, _ether.validProps)(this, Object.keys(_pod.default.propTypes));
|
|
212
|
-
return props;
|
|
213
|
-
}
|
|
214
|
-
}, {
|
|
215
|
-
key: "contentProps",
|
|
216
|
-
value: function contentProps() {
|
|
217
|
-
const {
|
|
218
|
-
onEdit,
|
|
219
|
-
onDelete,
|
|
220
|
-
hideDeleteButtonInViewMode
|
|
221
|
-
} = this.props;
|
|
222
|
-
const props = this.universalProps();
|
|
223
|
-
|
|
224
|
-
if (onEdit) {
|
|
225
|
-
props.onEdit = this.onEdit;
|
|
226
|
-
}
|
|
227
155
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
}
|
|
156
|
+
return /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.CSSTransition, {
|
|
157
|
+
key: "2",
|
|
158
|
+
classNames: transitionName,
|
|
159
|
+
timeout: {
|
|
160
|
+
enter: 300,
|
|
161
|
+
exit: 50
|
|
162
|
+
}
|
|
163
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
164
|
+
key: "show"
|
|
165
|
+
}, children));
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
const universalProps = () => ({
|
|
169
|
+
size: "small",
|
|
170
|
+
tabIndex: "-1",
|
|
171
|
+
title,
|
|
172
|
+
ref,
|
|
173
|
+
className,
|
|
174
|
+
border,
|
|
175
|
+
onUndo,
|
|
176
|
+
softDelete,
|
|
177
|
+
variant,
|
|
178
|
+
...rest,
|
|
179
|
+
...(0, _tags.default)("show-edit-pod", rest)
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
const contentProps = () => ({ ...universalProps(),
|
|
183
|
+
...(!hideDeleteButtonInViewMode && {
|
|
184
|
+
onDelete
|
|
185
|
+
}),
|
|
186
|
+
...(onEdit && {
|
|
187
|
+
onEdit: handleEdit
|
|
188
|
+
})
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
const editingProps = () => ({ ...universalProps(),
|
|
192
|
+
onKeyDown
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
const podProps = () => isInEditMode ? editingProps() : contentProps();
|
|
196
|
+
|
|
197
|
+
return /*#__PURE__*/_react.default.createElement(_showEditPod.default, podProps(), /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.TransitionGroup, null, content()));
|
|
198
|
+
};
|
|
261
199
|
|
|
262
200
|
exports.BaseShowEditPod = ShowEditPod;
|
|
263
|
-
ShowEditPod.contextType = _i18nContext.default;
|
|
264
201
|
ShowEditPod.propTypes = { ...marginPropTypes,
|
|
265
202
|
|
|
266
203
|
/** Pod theme variant. */
|
|
@@ -322,16 +259,10 @@ ShowEditPod.propTypes = { ...marginPropTypes,
|
|
|
322
259
|
deleteText: _propTypes.default.string,
|
|
323
260
|
|
|
324
261
|
/** Can inform if the form is in a saving state (disables the save button) */
|
|
325
|
-
saving: _propTypes.default.bool
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
border: false,
|
|
330
|
-
buttonAlign: "right",
|
|
331
|
-
transitionName: "carbon-show-edit-pod__transition",
|
|
332
|
-
cancel: true,
|
|
333
|
-
saving: false,
|
|
334
|
-
hideDeleteButtonInViewMode: false
|
|
262
|
+
saving: _propTypes.default.bool,
|
|
263
|
+
|
|
264
|
+
/** Title to be displayed */
|
|
265
|
+
title: _propTypes.default.node
|
|
335
266
|
};
|
|
336
267
|
var _default = ShowEditPod;
|
|
337
268
|
exports.default = _default;
|
|
@@ -48,8 +48,10 @@ export interface ShowEditPodProps {
|
|
|
48
48
|
saveText?: string;
|
|
49
49
|
/** Can inform if the form is in a saving state (disables the save button) */
|
|
50
50
|
saving?: boolean;
|
|
51
|
+
/** Title to be displayed */
|
|
52
|
+
title?: React.ReactNode;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
declare
|
|
55
|
+
declare function ShowEditPod(props: ShowEditPodProps): JSX.Element;
|
|
54
56
|
|
|
55
57
|
export default ShowEditPod;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Default = exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _specialCharacters = _interopRequireWildcard(require("../../../.storybook/utils/argTypes/specialCharacters"));
|
|
11
|
+
|
|
12
|
+
var _ = _interopRequireDefault(require("."));
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
|
21
|
+
|
|
22
|
+
var _default = {
|
|
23
|
+
component: _.default,
|
|
24
|
+
title: "Textarea/Test",
|
|
25
|
+
parameters: {
|
|
26
|
+
info: {
|
|
27
|
+
disable: true
|
|
28
|
+
},
|
|
29
|
+
chromatic: {
|
|
30
|
+
disable: true
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
argTypes: {
|
|
34
|
+
labelAlign: {
|
|
35
|
+
options: ["left", "right"],
|
|
36
|
+
control: {
|
|
37
|
+
type: "select"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
cols: {
|
|
41
|
+
control: {
|
|
42
|
+
min: 0,
|
|
43
|
+
max: 100,
|
|
44
|
+
step: 1,
|
|
45
|
+
type: "range"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
rows: {
|
|
49
|
+
control: {
|
|
50
|
+
min: 0,
|
|
51
|
+
max: 100,
|
|
52
|
+
step: 1,
|
|
53
|
+
type: "range"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
inputWidth: {
|
|
57
|
+
control: {
|
|
58
|
+
min: 0,
|
|
59
|
+
max: 100,
|
|
60
|
+
step: 1,
|
|
61
|
+
type: "range"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
labelWidth: {
|
|
65
|
+
control: {
|
|
66
|
+
min: 0,
|
|
67
|
+
max: 100,
|
|
68
|
+
step: 1,
|
|
69
|
+
type: "range"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
adaptiveLabelBreakpoint: {
|
|
73
|
+
control: {
|
|
74
|
+
type: "number"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
placeholderSpecialCharacters: _specialCharacters.default,
|
|
78
|
+
labelSpecialCharacters: _specialCharacters.default,
|
|
79
|
+
labelHelpSpecialCharacters: _specialCharacters.default,
|
|
80
|
+
characterLimitSpecialCharacters: {
|
|
81
|
+
options: [..._specialCharacters.default.options, ..._specialCharacters.number.options],
|
|
82
|
+
mapping: { ..._specialCharacters.default.mapping,
|
|
83
|
+
..._specialCharacters.number.mapping
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
fieldHelpSpecialCharacters: _specialCharacters.default
|
|
87
|
+
},
|
|
88
|
+
args: {
|
|
89
|
+
expandable: false,
|
|
90
|
+
cols: 0,
|
|
91
|
+
rows: 0,
|
|
92
|
+
disabled: false,
|
|
93
|
+
autoFocus: false,
|
|
94
|
+
readOnly: false,
|
|
95
|
+
placeholder: "",
|
|
96
|
+
fieldHelp: "",
|
|
97
|
+
characterLimit: "",
|
|
98
|
+
inputWidth: 100,
|
|
99
|
+
warnOverLimit: false,
|
|
100
|
+
enforceCharacterLimit: true,
|
|
101
|
+
label: "",
|
|
102
|
+
labelHelp: "",
|
|
103
|
+
labelInline: false,
|
|
104
|
+
labelWidth: 30,
|
|
105
|
+
labelAlign: undefined,
|
|
106
|
+
adaptiveLabelBreakpoint: undefined,
|
|
107
|
+
required: false,
|
|
108
|
+
placeholderSpecialCharacters: undefined,
|
|
109
|
+
labelSpecialCharacters: undefined,
|
|
110
|
+
labelHelpSpecialCharacters: undefined,
|
|
111
|
+
characterLimitSpecialCharacters: undefined,
|
|
112
|
+
fieldHelpSpecialCharacters: undefined
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
exports.default = _default;
|
|
116
|
+
|
|
117
|
+
const Default = ({
|
|
118
|
+
placeholder,
|
|
119
|
+
placeholderSpecialCharacters,
|
|
120
|
+
label,
|
|
121
|
+
labelSpecialCharacters,
|
|
122
|
+
labelHelp,
|
|
123
|
+
labelHelpSpecialCharacters,
|
|
124
|
+
characterLimit,
|
|
125
|
+
characterLimitSpecialCharacters,
|
|
126
|
+
fieldHelp,
|
|
127
|
+
fieldHelpSpecialCharacters,
|
|
128
|
+
...args
|
|
129
|
+
}) => {
|
|
130
|
+
const [state, setState] = (0, _react.useState)("");
|
|
131
|
+
|
|
132
|
+
const handleChange = ({
|
|
133
|
+
target: {
|
|
134
|
+
value
|
|
135
|
+
}
|
|
136
|
+
}) => {
|
|
137
|
+
setState(value);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
return /*#__PURE__*/_react.default.createElement(_.default, _extends({}, args, {
|
|
141
|
+
name: "textarea",
|
|
142
|
+
onChange: handleChange,
|
|
143
|
+
value: state,
|
|
144
|
+
placeholder: placeholder || placeholderSpecialCharacters,
|
|
145
|
+
label: label || labelSpecialCharacters,
|
|
146
|
+
labelHelp: labelHelp || labelHelpSpecialCharacters,
|
|
147
|
+
helpAriaLabel: labelHelp || labelHelpSpecialCharacters,
|
|
148
|
+
characterLimit: characterLimit || characterLimitSpecialCharacters,
|
|
149
|
+
fieldHelp: fieldHelp || fieldHelpSpecialCharacters
|
|
150
|
+
}));
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
exports.Default = Default;
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.OriginalTextarea = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
@@ -35,229 +35,167 @@ var _tooltipProvider = require("../../__internal__/tooltip-provider");
|
|
|
35
35
|
|
|
36
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
37
|
|
|
38
|
-
function
|
|
39
|
-
|
|
40
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
41
|
-
|
|
42
|
-
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); } }
|
|
43
|
-
|
|
44
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
45
|
-
|
|
46
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
47
|
-
|
|
48
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
49
|
-
|
|
50
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
51
|
-
|
|
52
|
-
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
53
|
-
|
|
54
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
38
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
55
39
|
|
|
56
|
-
function
|
|
40
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
57
41
|
|
|
58
|
-
function
|
|
59
|
-
|
|
60
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
42
|
+
function _extends() { _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; }; return _extends.apply(this, arguments); }
|
|
61
43
|
|
|
62
44
|
const getFormatNumber = (value, locale) => new Intl.NumberFormat(locale).format(value);
|
|
63
45
|
|
|
64
46
|
const marginPropTypes = (0, _utils.filterStyledSystemMarginProps)(_propTypes2.default.space);
|
|
65
47
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
48
|
+
const Textarea = ({
|
|
49
|
+
autoFocus,
|
|
50
|
+
fieldHelp,
|
|
51
|
+
label,
|
|
52
|
+
size,
|
|
53
|
+
children,
|
|
54
|
+
characterLimit,
|
|
55
|
+
enforceCharacterLimit = true,
|
|
56
|
+
warnOverLimit = false,
|
|
57
|
+
onChange,
|
|
58
|
+
disabled = false,
|
|
59
|
+
labelInline,
|
|
60
|
+
labelAlign,
|
|
61
|
+
labelHelp,
|
|
62
|
+
labelSpacing,
|
|
63
|
+
inputIcon,
|
|
64
|
+
id: idProp,
|
|
65
|
+
error,
|
|
66
|
+
warning,
|
|
67
|
+
info,
|
|
68
|
+
name,
|
|
69
|
+
readOnly = false,
|
|
70
|
+
placeholder,
|
|
71
|
+
expandable = false,
|
|
72
|
+
rows,
|
|
73
|
+
cols,
|
|
74
|
+
validationOnLabel = false,
|
|
75
|
+
adaptiveLabelBreakpoint,
|
|
76
|
+
inputWidth,
|
|
77
|
+
labelWidth = 30,
|
|
78
|
+
tooltipPosition,
|
|
79
|
+
value,
|
|
80
|
+
"data-component": dataComponent,
|
|
81
|
+
"data-element": dataElement,
|
|
82
|
+
"data-role": dataRole,
|
|
83
|
+
helpAriaLabel,
|
|
84
|
+
...props
|
|
85
|
+
}) => {
|
|
86
|
+
const locale = (0, _react.useContext)(_i18nContext.default);
|
|
87
|
+
const {
|
|
88
|
+
current: id
|
|
89
|
+
} = (0, _react.useRef)(idProp || (0, _guid.default)());
|
|
90
|
+
const inputRef = (0, _react.useRef)();
|
|
91
|
+
const minHeight = (0, _react.useRef)(0);
|
|
92
|
+
|
|
93
|
+
const expandTextarea = () => {
|
|
94
|
+
const textarea = inputRef.current;
|
|
95
|
+
|
|
96
|
+
if (textarea.scrollHeight > minHeight.current) {
|
|
97
|
+
// Reset height to zero - IE specific
|
|
98
|
+
textarea.style.height = "0px"; // Set the height so all content is shown
|
|
99
|
+
|
|
100
|
+
textarea.style.height = `${Math.max(textarea.scrollHeight, minHeight.current)}px`;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
94
103
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
_createClass(Textarea, [{
|
|
99
|
-
key: "componentDidMount",
|
|
100
|
-
value:
|
|
101
|
-
/**
|
|
102
|
-
* A lifecycle method that is called after initial render.
|
|
103
|
-
* Allows access to refs and DOM to set expandable variables
|
|
104
|
-
*/
|
|
105
|
-
function componentDidMount() {
|
|
106
|
-
if (this.props.expandable) {
|
|
107
|
-
window.addEventListener("resize", this.expandTextarea); // Set the min height to the initially rendered height.
|
|
108
|
-
// Without minHeight expandable textareas will only have
|
|
109
|
-
// one line when no content is present.
|
|
110
|
-
|
|
111
|
-
this.minHeight = this._input.current.clientHeight;
|
|
112
|
-
this.expandTextarea();
|
|
113
|
-
}
|
|
104
|
+
(0, _react.useEffect)(() => {
|
|
105
|
+
if (expandable) {
|
|
106
|
+
expandTextarea();
|
|
114
107
|
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
108
|
+
});
|
|
109
|
+
(0, _react.useEffect)(() => {
|
|
110
|
+
if (expandable) {
|
|
111
|
+
window.addEventListener("resize", expandTextarea);
|
|
112
|
+
minHeight.current = inputRef.current.clientHeight;
|
|
121
113
|
}
|
|
122
|
-
}, {
|
|
123
|
-
key: "componentDidUpdate",
|
|
124
|
-
value: function componentDidUpdate() {
|
|
125
|
-
const {
|
|
126
|
-
expandable
|
|
127
|
-
} = this.props;
|
|
128
114
|
|
|
115
|
+
return () => {
|
|
129
116
|
if (expandable) {
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}, {
|
|
134
|
-
key: "overLimit",
|
|
135
|
-
get: function () {
|
|
136
|
-
const value = this.props.value || "";
|
|
137
|
-
return value.length > parseInt(this.props.characterLimit, 10);
|
|
138
|
-
}
|
|
139
|
-
}, {
|
|
140
|
-
key: "characterCount",
|
|
141
|
-
get: function () {
|
|
142
|
-
const value = this.props.value || "";
|
|
143
|
-
const {
|
|
144
|
-
characterLimit,
|
|
145
|
-
warnOverLimit
|
|
146
|
-
} = this.props;
|
|
147
|
-
|
|
148
|
-
if (!characterLimit) {
|
|
149
|
-
return null;
|
|
117
|
+
window.removeEventListener("resize", expandTextarea);
|
|
150
118
|
}
|
|
119
|
+
};
|
|
120
|
+
}, [expandable]);
|
|
151
121
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}, {
|
|
160
|
-
key: "render",
|
|
161
|
-
value: function render() {
|
|
162
|
-
const {
|
|
163
|
-
autoFocus,
|
|
164
|
-
fieldHelp,
|
|
165
|
-
label,
|
|
166
|
-
size,
|
|
167
|
-
children,
|
|
168
|
-
characterLimit,
|
|
169
|
-
enforceCharacterLimit,
|
|
170
|
-
onChange,
|
|
171
|
-
disabled,
|
|
172
|
-
labelInline,
|
|
173
|
-
labelAlign,
|
|
174
|
-
labelHelp,
|
|
175
|
-
labelSpacing,
|
|
176
|
-
inputIcon,
|
|
177
|
-
error,
|
|
178
|
-
warning,
|
|
179
|
-
info,
|
|
180
|
-
name,
|
|
181
|
-
readOnly,
|
|
182
|
-
placeholder,
|
|
183
|
-
rows,
|
|
184
|
-
cols,
|
|
185
|
-
validationOnLabel,
|
|
186
|
-
adaptiveLabelBreakpoint,
|
|
187
|
-
inputWidth,
|
|
188
|
-
labelWidth,
|
|
189
|
-
tooltipPosition,
|
|
190
|
-
"data-component": dataComponent,
|
|
191
|
-
"data-element": dataElement,
|
|
192
|
-
"data-role": dataRole,
|
|
193
|
-
helpAriaLabel,
|
|
194
|
-
...props
|
|
195
|
-
} = this.props;
|
|
196
|
-
return /*#__PURE__*/_react.default.createElement(_tooltipProvider.TooltipProvider, {
|
|
197
|
-
helpAriaLabel: helpAriaLabel,
|
|
198
|
-
tooltipPosition: tooltipPosition
|
|
199
|
-
}, /*#__PURE__*/_react.default.createElement(_inputBehaviour.InputBehaviour, null, /*#__PURE__*/_react.default.createElement(_textarea.default, _extends({
|
|
200
|
-
labelInline: labelInline,
|
|
201
|
-
"data-component": dataComponent,
|
|
202
|
-
"data-role": dataRole,
|
|
203
|
-
"data-element": dataElement
|
|
204
|
-
}, (0, _utils.filterStyledSystemMarginProps)(props)), /*#__PURE__*/_react.default.createElement(_formField.default, {
|
|
205
|
-
fieldHelp: fieldHelp,
|
|
206
|
-
error: error,
|
|
207
|
-
warning: warning,
|
|
208
|
-
info: info,
|
|
209
|
-
label: label,
|
|
210
|
-
disabled: disabled,
|
|
211
|
-
id: this.id,
|
|
212
|
-
labelInline: labelInline,
|
|
213
|
-
labelAlign: labelAlign,
|
|
214
|
-
labelWidth: labelWidth,
|
|
215
|
-
labelHelp: labelHelp,
|
|
216
|
-
labelSpacing: labelSpacing,
|
|
217
|
-
isRequired: props.required,
|
|
218
|
-
useValidationIcon: validationOnLabel,
|
|
219
|
-
adaptiveLabelBreakpoint: adaptiveLabelBreakpoint
|
|
220
|
-
}, /*#__PURE__*/_react.default.createElement(_input.InputPresentation, {
|
|
221
|
-
size: size,
|
|
222
|
-
disabled: disabled,
|
|
223
|
-
readOnly: readOnly,
|
|
224
|
-
inputWidth: typeof inputWidth === "number" ? inputWidth : 100 - labelWidth,
|
|
225
|
-
error: error,
|
|
226
|
-
warning: warning,
|
|
227
|
-
info: info
|
|
228
|
-
}, /*#__PURE__*/_react.default.createElement(_input2.default, _extends({
|
|
229
|
-
autoFocus: autoFocus,
|
|
230
|
-
name: name,
|
|
231
|
-
"aria-invalid": !!error,
|
|
232
|
-
ref: this._input,
|
|
233
|
-
maxLength: enforceCharacterLimit && characterLimit ? characterLimit : undefined,
|
|
234
|
-
onChange: onChange,
|
|
235
|
-
disabled: disabled,
|
|
236
|
-
readOnly: readOnly,
|
|
237
|
-
labelInline: labelInline,
|
|
238
|
-
placeholder: disabled ? "" : placeholder,
|
|
239
|
-
rows: rows,
|
|
240
|
-
cols: cols,
|
|
241
|
-
id: this.id,
|
|
242
|
-
as: "textarea"
|
|
243
|
-
}, props)), children, /*#__PURE__*/_react.default.createElement(_inputIconToggle.default, {
|
|
244
|
-
disabled: disabled,
|
|
245
|
-
readOnly: readOnly,
|
|
246
|
-
inputIcon: inputIcon,
|
|
247
|
-
size: size,
|
|
248
|
-
error: error,
|
|
249
|
-
warning: warning,
|
|
250
|
-
info: info,
|
|
251
|
-
useValidationIcon: !validationOnLabel
|
|
252
|
-
}))), this.characterCount)));
|
|
122
|
+
const isOverLimit = () => {
|
|
123
|
+
return (value || "").length > parseInt(characterLimit, 10);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const characterCount = () => {
|
|
127
|
+
if (!characterLimit) {
|
|
128
|
+
return null;
|
|
253
129
|
}
|
|
254
|
-
}]);
|
|
255
130
|
|
|
256
|
-
|
|
257
|
-
|
|
131
|
+
return /*#__PURE__*/_react.default.createElement(_characterCount.default, {
|
|
132
|
+
isOverLimit: isOverLimit() && warnOverLimit,
|
|
133
|
+
value: getFormatNumber((value || "").length, locale.locale()),
|
|
134
|
+
limit: getFormatNumber(characterLimit, locale.locale()),
|
|
135
|
+
"data-element": "character-limit"
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
return /*#__PURE__*/_react.default.createElement(_tooltipProvider.TooltipProvider, {
|
|
140
|
+
tooltipPosition: tooltipPosition,
|
|
141
|
+
helpAriaLabel: helpAriaLabel
|
|
142
|
+
}, /*#__PURE__*/_react.default.createElement(_inputBehaviour.InputBehaviour, null, /*#__PURE__*/_react.default.createElement(_textarea.default, _extends({
|
|
143
|
+
labelInline: labelInline,
|
|
144
|
+
"data-component": dataComponent,
|
|
145
|
+
"data-role": dataRole,
|
|
146
|
+
"data-element": dataElement
|
|
147
|
+
}, (0, _utils.filterStyledSystemMarginProps)(props)), /*#__PURE__*/_react.default.createElement(_formField.default, {
|
|
148
|
+
fieldHelp: fieldHelp,
|
|
149
|
+
error: error,
|
|
150
|
+
warning: warning,
|
|
151
|
+
info: info,
|
|
152
|
+
label: label,
|
|
153
|
+
disabled: disabled,
|
|
154
|
+
id: id,
|
|
155
|
+
labelInline: labelInline,
|
|
156
|
+
labelAlign: labelAlign,
|
|
157
|
+
labelWidth: labelWidth,
|
|
158
|
+
labelHelp: labelHelp,
|
|
159
|
+
labelSpacing: labelSpacing,
|
|
160
|
+
isRequired: props.required,
|
|
161
|
+
useValidationIcon: validationOnLabel,
|
|
162
|
+
adaptiveLabelBreakpoint: adaptiveLabelBreakpoint
|
|
163
|
+
}, /*#__PURE__*/_react.default.createElement(_input.InputPresentation, {
|
|
164
|
+
size: size,
|
|
165
|
+
disabled: disabled,
|
|
166
|
+
readOnly: readOnly,
|
|
167
|
+
inputWidth: typeof inputWidth === "number" ? inputWidth : 100 - labelWidth,
|
|
168
|
+
error: error,
|
|
169
|
+
warning: warning,
|
|
170
|
+
info: info
|
|
171
|
+
}, /*#__PURE__*/_react.default.createElement(_input2.default, _extends({
|
|
172
|
+
autoFocus: autoFocus,
|
|
173
|
+
name: name,
|
|
174
|
+
"aria-invalid": !!error,
|
|
175
|
+
ref: inputRef,
|
|
176
|
+
maxLength: enforceCharacterLimit && characterLimit ? characterLimit : undefined,
|
|
177
|
+
onChange: onChange,
|
|
178
|
+
disabled: disabled,
|
|
179
|
+
readOnly: readOnly,
|
|
180
|
+
labelInline: labelInline,
|
|
181
|
+
placeholder: disabled ? "" : placeholder,
|
|
182
|
+
rows: rows,
|
|
183
|
+
cols: cols,
|
|
184
|
+
id: id,
|
|
185
|
+
as: "textarea"
|
|
186
|
+
}, props)), children, /*#__PURE__*/_react.default.createElement(_inputIconToggle.default, {
|
|
187
|
+
disabled: disabled,
|
|
188
|
+
readOnly: readOnly,
|
|
189
|
+
inputIcon: inputIcon,
|
|
190
|
+
size: size,
|
|
191
|
+
error: error,
|
|
192
|
+
warning: warning,
|
|
193
|
+
info: info,
|
|
194
|
+
useValidationIcon: !validationOnLabel
|
|
195
|
+
}))), characterCount())));
|
|
196
|
+
};
|
|
258
197
|
|
|
259
198
|
exports.OriginalTextarea = Textarea;
|
|
260
|
-
Textarea.contextType = _i18nContext.default;
|
|
261
199
|
Textarea.propTypes = { ...marginPropTypes,
|
|
262
200
|
|
|
263
201
|
/** Automatically focus the input on component mount */
|
|
@@ -381,14 +319,5 @@ Textarea.propTypes = { ...marginPropTypes,
|
|
|
381
319
|
/** Aria label for rendered help component */
|
|
382
320
|
helpAriaLabel: _propTypes.default.string
|
|
383
321
|
};
|
|
384
|
-
Textarea.defaultProps = {
|
|
385
|
-
labelWidth: 30,
|
|
386
|
-
disabled: false,
|
|
387
|
-
expandable: false,
|
|
388
|
-
enforceCharacterLimit: true,
|
|
389
|
-
readOnly: false,
|
|
390
|
-
warnOverLimit: false,
|
|
391
|
-
validationOnLabel: false
|
|
392
|
-
};
|
|
393
322
|
var _default = Textarea;
|
|
394
323
|
exports.default = _default;
|
|
@@ -74,7 +74,7 @@ export interface TextareaProps
|
|
|
74
74
|
helpAriaLabel?: string;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
declare
|
|
77
|
+
declare function Textarea(props: TextareaProps): JSX.Element;
|
|
78
78
|
|
|
79
79
|
export { Textarea as OriginalTextarea };
|
|
80
80
|
export default Textarea;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "carbon-react",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "97.0.0",
|
|
4
4
|
"description": "A library of reusable React components for easily building user interfaces.",
|
|
5
5
|
"engineStrict": true,
|
|
6
6
|
"engines": {
|
|
@@ -31,8 +31,7 @@
|
|
|
31
31
|
"babel": "cross-env NODE_ENV=production babel ./src --config-file ./babel.config.js --out-dir ./lib --ignore '**/*/__spec__.js','**/*.spec.js','**/__definition__.js' --quiet",
|
|
32
32
|
"clean-lib": "rimraf ./lib",
|
|
33
33
|
"copy-files": "cpy \"**/\" \"!**/(*.js|*.md|*.mdx|*.stories.*|*.snap)\" ../lib/ --cwd=src --parents",
|
|
34
|
-
"commit": "git-cz"
|
|
35
|
-
"chromatic": "chromatic"
|
|
34
|
+
"commit": "git-cz"
|
|
36
35
|
},
|
|
37
36
|
"repository": {
|
|
38
37
|
"type": "git",
|
|
@@ -89,6 +88,7 @@
|
|
|
89
88
|
"babel-jest": "^26.6.3",
|
|
90
89
|
"browserslist": "^4.16.6",
|
|
91
90
|
"chalk": "^4.1.1",
|
|
91
|
+
"chromatic": "^6.0.5",
|
|
92
92
|
"commitizen": "^4.2.4",
|
|
93
93
|
"conventional-changelog-conventionalcommits": "^4.5.0",
|
|
94
94
|
"core-js": "^3.1.4",
|