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.
@@ -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;
@@ -48,6 +48,8 @@ export interface PodProps {
48
48
  height?: string | number;
49
49
  }
50
50
 
51
- declare class Pod extends React.Component<PodProps> {}
51
+ declare function Pod(
52
+ props: PodProps & React.RefAttributes<HTMLElement>
53
+ ): JSX.Element;
52
54
 
53
55
  export default Pod;
@@ -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 = _interopRequireDefault(require("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 _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); }
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 _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
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
- let ShowEditPod = /*#__PURE__*/function (_React$Component) {
67
- _inherits(ShowEditPod, _React$Component);
68
-
69
- var _super = _createSuper(ShowEditPod);
70
-
71
- function ShowEditPod(...args) {
72
- var _this;
73
-
74
- _classCallCheck(this, ShowEditPod);
75
-
76
- _this = _super.call(this, ...args);
77
-
78
- _defineProperty(_assertThisInitialized(_this), "state", {
79
- editing: false
80
- });
81
-
82
- _defineProperty(_assertThisInitialized(_this), "isControlled", _this.props.editing !== undefined);
83
-
84
- _defineProperty(_assertThisInitialized(_this), "onEdit", ev => {
85
- _this.props.onEdit(ev);
86
-
87
- _this.toggleEditingState(true);
88
-
89
- _this.__focusOnPod();
90
- });
91
-
92
- _defineProperty(_assertThisInitialized(_this), "onSaveEditForm", ev => {
93
- ev.preventDefault();
94
-
95
- _this.props.onSave(ev);
96
-
97
- _this.toggleEditingState(false);
98
- });
99
-
100
- _defineProperty(_assertThisInitialized(_this), "onCancelEditForm", ev => {
101
- if (_this.props.onCancel) {
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
- key: "isEditing",
139
- value: function isEditing() {
140
- return this.isControlled ? this.props.editing : this.state.editing;
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
- key: "editContent",
155
- value: function editContent() {
156
- return /*#__PURE__*/_react.default.createElement(_form.default, {
157
- onSubmit: this.onSaveEditForm,
158
- buttonAlignment: this.props.buttonAlign,
159
- "data-element": "edit-form",
160
- leftSideButtons: this.props.cancel && /*#__PURE__*/_react.default.createElement(_button.default, {
161
- "data-element": "cancel-button",
162
- onClick: this.onCancelEditForm,
163
- size: "small"
164
- }, this.props.cancelText),
165
- saveButton: /*#__PURE__*/_react.default.createElement(_button.default, {
166
- disabled: this.props.saving,
167
- "data-element": "submit-button",
168
- buttonType: "primary",
169
- type: "submit",
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: "2",
194
- classNames: this.props.transitionName,
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: "show"
201
- }, this.props.children));
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
- return { ...props,
229
- onDelete: !hideDeleteButtonInViewMode && onDelete
230
- };
231
- }
232
- }, {
233
- key: "editingProps",
234
- value: function editingProps() {
235
- const props = this.universalProps();
236
- props.onKeyDown = this.onKeyDown;
237
- return props;
238
- }
239
- }, {
240
- key: "podProps",
241
- value: function podProps() {
242
- return this.isEditing() ? this.editingProps() : this.contentProps();
243
- }
244
- }, {
245
- key: "render",
246
- value: function render() {
247
- return /*#__PURE__*/_react.default.createElement(_showEditPod.default, _extends({
248
- className: this.props.className,
249
- size: "small"
250
- }, this.podProps(), {
251
- ref: node => {
252
- this.pod = node;
253
- },
254
- tabIndex: "-1"
255
- }, (0, _tags.default)("show-edit-pod", this.props)), /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.TransitionGroup, null, this.content()));
256
- }
257
- }]);
258
-
259
- return ShowEditPod;
260
- }(_react.default.Component);
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
- ShowEditPod.defaultProps = {
328
- variant: "transparent",
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 class ShowEditPod extends React.Component<ShowEditPodProps> {}
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 = _interopRequireDefault(require("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 _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); }
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 _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; } }
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 _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
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
- let Textarea = /*#__PURE__*/function (_React$Component) {
67
- _inherits(Textarea, _React$Component);
68
-
69
- var _super = _createSuper(Textarea);
70
-
71
- function Textarea(...args) {
72
- var _this;
73
-
74
- _classCallCheck(this, Textarea);
75
-
76
- _this = _super.call(this, ...args);
77
-
78
- _defineProperty(_assertThisInitialized(_this), "minHeight", 0);
79
-
80
- _defineProperty(_assertThisInitialized(_this), "id", _this.props.id || (0, _guid.default)());
81
-
82
- _defineProperty(_assertThisInitialized(_this), "_input", /*#__PURE__*/_react.default.createRef());
83
-
84
- _defineProperty(_assertThisInitialized(_this), "expandTextarea", () => {
85
- const textarea = _this._input.current;
86
-
87
- if (textarea.scrollHeight > _this.minHeight) {
88
- // Reset height to zero - IE specific
89
- textarea.style.height = "0px"; // Set the height so all content is shown
90
-
91
- textarea.style.height = `${Math.max(textarea.scrollHeight, _this.minHeight)}px`;
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
- return _this;
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
- key: "componentWillUnmount",
117
- value: function componentWillUnmount() {
118
- if (this.props.expandable) {
119
- window.removeEventListener("resize", this.expandTextarea);
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
- this.expandTextarea();
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
- return /*#__PURE__*/_react.default.createElement(_characterCount.default, {
153
- isOverLimit: this.overLimit && warnOverLimit,
154
- value: getFormatNumber(value.length, this.context.locale()),
155
- limit: getFormatNumber(characterLimit, this.context.locale()),
156
- "data-element": "character-limit"
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
- return Textarea;
257
- }(_react.default.Component);
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 class Textarea extends React.Component<TextareaProps> {}
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": "95.1.3",
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",