@carbon/ibm-products 2.0.0-rc.7 → 2.0.0-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/css/index-full-carbon.css +68 -6
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +2 -2
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +0 -6
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +68 -6
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +2 -2
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +68 -6
- package/css/index.css.map +1 -1
- package/css/index.min.css +2 -2
- package/css/index.min.css.map +1 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +2 -1
- package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +10 -1
- package/es/components/InlineEdit/InlineEdit.js +27 -427
- package/es/components/InlineEditV1/InlineEditV1.js +447 -0
- package/es/components/InlineEditV1/index.js +7 -0
- package/es/components/InlineEditV2/InlineEditV2.js +289 -0
- package/es/components/InlineEditV2/index.js +7 -0
- package/es/components/PageHeader/PageHeaderTitle.js +2 -4
- package/es/global/js/package-settings.js +3 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +2 -1
- package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +10 -1
- package/lib/components/InlineEdit/InlineEdit.js +27 -428
- package/lib/components/InlineEditV1/InlineEditV1.js +464 -0
- package/lib/components/InlineEditV1/index.js +13 -0
- package/lib/components/InlineEditV2/InlineEditV2.js +309 -0
- package/lib/components/InlineEditV2/index.js +13 -0
- package/lib/components/PageHeader/PageHeaderTitle.js +2 -4
- package/lib/global/js/package-settings.js +3 -1
- package/package.json +2 -2
- package/scss/components/{InlineEdit → InlineEditV1}/_carbon-imports.scss +0 -0
- package/scss/components/{InlineEdit → InlineEditV1}/_index-with-carbon.scss +1 -1
- package/scss/components/{InlineEdit → InlineEditV1}/_index.scss +1 -1
- package/scss/components/{InlineEdit/_inline-edit.scss → InlineEditV1/_inline-edit-v1.scss} +0 -0
- package/scss/components/{InlineEdit → InlineEditV1}/_storybook-styles.scss +0 -0
- package/scss/components/InlineEditV2/_carbon-imports.scss +9 -0
- package/scss/components/InlineEditV2/_index-with-carbon.scss +9 -0
- package/scss/components/InlineEditV2/_index.scss +10 -0
- package/scss/components/InlineEditV2/_inline-edit-v2.scss +83 -0
- package/scss/components/InlineEditV2/_storybook-styles.scss +9 -0
- package/scss/components/PageHeader/_page-header.scss +0 -4
- package/scss/components/_index-released-only-with-carbon.scss +1 -1
- package/scss/components/_index-released-only.scss +1 -1
- package/scss/components/_index-with-carbon.scss +2 -1
- package/scss/components/_index.scss +2 -1
@@ -2,463 +2,62 @@
|
|
2
2
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
4
|
|
5
|
-
var
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
6
6
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
8
8
|
value: true
|
9
9
|
});
|
10
10
|
exports.InlineEdit = void 0;
|
11
11
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
13
|
-
|
14
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
15
13
|
|
16
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
17
|
-
|
18
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
19
|
-
|
20
14
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
21
15
|
|
22
16
|
var _react = _interopRequireWildcard(require("react"));
|
23
17
|
|
24
18
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
25
19
|
|
26
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
27
|
-
|
28
|
-
var _devtools = require("../../global/js/utils/devtools");
|
29
|
-
|
30
20
|
var _settings = require("../../settings");
|
31
21
|
|
32
|
-
var
|
22
|
+
var _InlineEditV = require("../InlineEditV1");
|
33
23
|
|
34
|
-
var
|
24
|
+
var _InlineEditV2 = require("../InlineEditV2");
|
35
25
|
|
36
|
-
var _excluded = ["
|
26
|
+
var _excluded = ["v1"];
|
37
27
|
|
38
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
39
29
|
|
40
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null ||
|
30
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
|
41
31
|
|
42
|
-
|
43
|
-
|
44
|
-
var
|
32
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
33
|
+
|
34
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
45
35
|
|
46
|
-
var defaults = {
|
47
|
-
buttonTooltipAlignment: 'center',
|
48
|
-
buttonTooltipPosition: 'top',
|
49
|
-
light: true,
|
50
|
-
// defaults to true to reflect design
|
51
|
-
size: 'md'
|
52
|
-
};
|
53
|
-
var buttons = ['cancel', 'edit', 'save'];
|
54
36
|
/**
|
55
|
-
*
|
37
|
+
* this is a wrapper component that will allow us to support v1 and v2 versions of InlineEdit
|
38
|
+
* in the V11 branch, v2 is the set by default.
|
39
|
+
* if the user passes in the v1 feature flag the v1 version of the component will be rendered
|
40
|
+
* since this is a temporary solution the named export should just remain InlineEdit unlike how
|
41
|
+
* Card works as a base layer for Productive and Expressive cards.
|
56
42
|
*/
|
57
|
-
|
58
|
-
var InlineEdit = /*#__PURE__*/_react.
|
59
|
-
var
|
60
|
-
|
61
|
-
var buttonTooltipAlignment = _ref.buttonTooltipAlignment,
|
62
|
-
buttonTooltipPosition = _ref.buttonTooltipPosition,
|
63
|
-
cancelDescription = _ref.cancelDescription,
|
64
|
-
className = _ref.className,
|
65
|
-
disabled = _ref.disabled,
|
66
|
-
editAlwaysVisible = _ref.editAlwaysVisible,
|
67
|
-
editDescription = _ref.editDescription,
|
68
|
-
id = _ref.id,
|
69
|
-
invalid = _ref.invalid,
|
70
|
-
invalidText = _ref.invalidText,
|
71
|
-
labelText = _ref.labelText,
|
72
|
-
_ref$light = _ref.light,
|
73
|
-
light = _ref$light === void 0 ? defaults.light : _ref$light,
|
74
|
-
onCancel = _ref.onCancel,
|
75
|
-
onSave = _ref.onSave,
|
76
|
-
onChange = _ref.onChange,
|
77
|
-
placeholder = _ref.placeholder,
|
78
|
-
saveDescription = _ref.saveDescription,
|
79
|
-
_ref$size = _ref.size,
|
80
|
-
size = _ref$size === void 0 ? defaults.size : _ref$size,
|
81
|
-
value = _ref.value,
|
43
|
+
var componentName = 'InlineEdit';
|
44
|
+
var InlineEdit = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
45
|
+
var v1 = _ref.v1,
|
82
46
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
83
|
-
var carbonPrefix = (0, _react2.usePrefix)();
|
84
|
-
var refInput = (0, _react.useRef)({
|
85
|
-
textContent: value
|
86
|
-
});
|
87
|
-
var localRef = (0, _react.useRef)(null);
|
88
|
-
var ref = refIn || localRef;
|
89
|
-
|
90
|
-
var _useState = (0, _react.useState)(false),
|
91
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
92
|
-
editing = _useState2[0],
|
93
|
-
setEditing = _useState2[1];
|
94
|
-
|
95
|
-
var _useState3 = (0, _react.useState)(value),
|
96
|
-
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
97
|
-
internalValue = _useState4[0],
|
98
|
-
setInternalValue = _useState4[1];
|
99
|
-
|
100
|
-
var showValidation = invalid; // || warn;
|
101
|
-
|
102
|
-
var validationText = invalidText; // || warnText;
|
103
|
-
|
104
|
-
var validationIcon = showValidation ? /*#__PURE__*/_react.default.createElement(_icons.WarningFilled, {
|
105
|
-
size: 16
|
106
|
-
}) : null; // sanitize the tooltip values
|
107
|
-
|
108
|
-
var alignIsObject = (0, _typeof2.default)(buttonTooltipAlignment) === 'object';
|
109
|
-
var directionIsObject = (0, _typeof2.default)(buttonTooltipPosition) === 'object';
|
110
|
-
var tipPositions = buttons.reduce(function (acc, button) {
|
111
|
-
var _ref2, _ref3;
|
112
|
-
|
113
|
-
var tooltipAlignment = (_ref2 = alignIsObject ? buttonTooltipAlignment[button] : buttonTooltipAlignment) !== null && _ref2 !== void 0 ? _ref2 : defaults.buttonTooltipAlignment;
|
114
|
-
var tooltipPosition = (_ref3 = directionIsObject ? buttonTooltipPosition[button] : buttonTooltipPosition) !== null && _ref3 !== void 0 ? _ref3 : defaults.buttonTooltipPosition;
|
115
|
-
acc[button] = {
|
116
|
-
tooltipAlignment: tooltipAlignment,
|
117
|
-
tooltipPosition: tooltipPosition
|
118
|
-
};
|
119
|
-
return acc;
|
120
|
-
}, {});
|
121
|
-
|
122
|
-
var doSetEditing = function doSetEditing(value) {
|
123
|
-
if (value === false) {
|
124
|
-
// move scroll to start
|
125
|
-
refInput.current.scrollLeft = 0;
|
126
|
-
}
|
127
|
-
|
128
|
-
setEditing(!disabled && value);
|
129
|
-
};
|
130
|
-
|
131
|
-
var handleEdit = function handleEdit(ev) {
|
132
|
-
/* istanbul ignore else */
|
133
|
-
if (!disabled) {
|
134
|
-
var rightOfInput = ev.currentTarget.classList.contains("".concat(blockClass, "__edit")) || ev.target.classList.contains("".concat(blockClass, "__after-input-elements"));
|
135
|
-
var leftOfInput = ev.currentTarget = ev.target.classList.contains("".concat(blockClass)); // clicking on the content editable element should not set either of these to true
|
136
|
-
|
137
|
-
if (rightOfInput || leftOfInput) {
|
138
|
-
doSetEditing(true);
|
139
|
-
setTimeout(function () {
|
140
|
-
refInput.current.focus(); // select all the content
|
141
|
-
|
142
|
-
document.getSelection().selectAllChildren(refInput.current);
|
143
|
-
|
144
|
-
if (rightOfInput) {
|
145
|
-
document.getSelection().collapseToEnd();
|
146
|
-
refInput.current.scrollLeft = 9999; // never going to get there but ensures at end.
|
147
|
-
} else {
|
148
|
-
document.getSelection().collapseToStart();
|
149
|
-
refInput.current.scrollLeft = 0; // scroll to start
|
150
|
-
}
|
151
|
-
}, 0);
|
152
|
-
}
|
153
|
-
}
|
154
|
-
};
|
155
|
-
|
156
|
-
var handleFocus = function handleFocus(ev) {
|
157
|
-
ev.preventDefault();
|
158
|
-
|
159
|
-
if (!editing && ev.target.classList.contains("".concat(blockClass, "__input"))) {
|
160
|
-
doSetEditing(true);
|
161
|
-
}
|
162
|
-
};
|
163
|
-
|
164
|
-
var handleSave = function handleSave() {
|
165
|
-
doSetEditing(false);
|
166
|
-
document.getSelection().removeAllRanges();
|
167
|
-
|
168
|
-
if (onSave) {
|
169
|
-
onSave(refInput.current.textContent);
|
170
|
-
}
|
171
|
-
};
|
172
|
-
|
173
|
-
var handleInput = function handleInput() {
|
174
|
-
setInternalValue(refInput.current.textContent);
|
175
|
-
|
176
|
-
if (onChange) {
|
177
|
-
onChange(refInput.current.textContent);
|
178
|
-
}
|
179
|
-
}; // pasting into contentEditable not supported by userEvent
|
180
|
-
|
181
|
-
|
182
|
-
var handlePaste =
|
183
|
-
/* istanbul ignore next */
|
184
|
-
function handlePaste(ev) {
|
185
|
-
ev.preventDefault(); // Get clipboard as plain text
|
186
|
-
|
187
|
-
var text = (ev.clipboardData || window.clipboardData).getData('text/plain'); // remove \n
|
188
|
-
|
189
|
-
var sanitizedText = text.replaceAll(/\n/g, '') // remove carriage returns
|
190
|
-
.replaceAll(/\t/g, ' '); // replace tab with two spaces
|
191
|
-
|
192
|
-
if (document.queryCommandSupported('insertText')) {
|
193
|
-
document.execCommand('insertText', false, sanitizedText);
|
194
|
-
} else {
|
195
|
-
// Insert text at the current position of caret
|
196
|
-
var range = document.getSelection().getRangeAt(0);
|
197
|
-
range.deleteContents();
|
198
|
-
var textNode = document.createTextNode(sanitizedText);
|
199
|
-
range.insertNode(textNode); // move selection end of textNode
|
200
47
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
var selection = document.getSelection();
|
205
|
-
selection.removeAllRanges(); // set the new range
|
206
|
-
|
207
|
-
selection.addRange(range);
|
208
|
-
}
|
209
|
-
};
|
210
|
-
|
211
|
-
var handleCancel = function handleCancel() {
|
212
|
-
refInput.current.textContent = value;
|
213
|
-
handleInput(value);
|
214
|
-
doSetEditing(false);
|
215
|
-
document.getSelection().removeAllRanges();
|
216
|
-
|
217
|
-
if (onCancel) {
|
218
|
-
onCancel(value);
|
219
|
-
}
|
220
|
-
};
|
221
|
-
|
222
|
-
var handleBlur = function handleBlur(ev) {
|
223
|
-
if (!ref.current.contains(ev.relatedTarget)) {
|
224
|
-
handleSave();
|
225
|
-
}
|
226
|
-
};
|
227
|
-
|
228
|
-
var handleKeyDown = function handleKeyDown(ev) {
|
229
|
-
switch (ev.key) {
|
230
|
-
case 'Enter':
|
231
|
-
ev.preventDefault();
|
232
|
-
refInput.current.blur(); // will cause save
|
233
|
-
|
234
|
-
break;
|
235
|
-
|
236
|
-
case 'Escape':
|
237
|
-
handleCancel();
|
238
|
-
break;
|
239
|
-
}
|
240
|
-
};
|
241
|
-
/*
|
242
|
-
The HTML is structured as follows:
|
243
|
-
<container>
|
244
|
-
<!-- margin left of input to match Carbon -->
|
245
|
-
<content-editable>
|
246
|
-
<-- margin right of input space for after-input-elements -->
|
247
|
-
<after-input-elements>
|
248
|
-
</container>
|
249
|
-
NOTE:
|
250
|
-
- An input is not used as this would not permit a heading tag e.g. <h2>.
|
251
|
-
- Some padding is added to the left 16px standard for a Carbon text input
|
252
|
-
- The after-input-elements are position absolute with a margin to on the input to reserve space. Using inline-flex
|
253
|
-
- does not measure space properly for the input otherwise.
|
254
|
-
- The content editable is not expected to change size when buttons are added, to ensure the text does not move space
|
255
|
-
is reserved up front for buttons and invalid icon. Mostly this is only noticed if the width of the component is not 100%.
|
256
|
-
which can be shown by setting inlineEditFullWidth to false in storybook.
|
257
|
-
In making content-editable behave like an input of type text we have to account for.
|
258
|
-
- Enforcing a single line
|
259
|
-
- Pasting of non-text e.g. html or text with carriage returns
|
260
|
-
- The padding and border not hiding typed in text.
|
261
|
-
- Placing the cursor at the start or end depending on area clicked (before for left-padding)
|
262
|
-
*/
|
263
|
-
|
264
|
-
|
265
|
-
var toolbarAnimation = true;
|
266
|
-
return (
|
267
|
-
/*#__PURE__*/
|
268
|
-
// eslint-disable-next-line
|
269
|
-
_react.default.createElement("div", {
|
270
|
-
className: (0, _classnames.default)(blockClass, // Apply the block class to the main HTML element
|
271
|
-
className, // Apply any supplied class names to the main HTML element.
|
272
|
-
"".concat(blockClass, "--").concat(size), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--disabled"), disabled), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--editing"), editing), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--invalid"), invalid), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--light"), light), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--overflows"), refInput.current && refInput.current.scrollWidth > refInput.current.offsetWidth), _cx)),
|
273
|
-
onClick: handleEdit // disabled eslint for click handler
|
274
|
-
,
|
275
|
-
onBlur: handleBlur,
|
276
|
-
ref: ref
|
277
|
-
}, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, (0, _devtools.getDevtoolsProps)(componentName), {
|
278
|
-
id: id,
|
279
|
-
size: size,
|
280
|
-
className: (0, _classnames.default)("".concat(blockClass, "__input"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__input--empty"), ((_refInput$current = refInput.current) === null || _refInput$current === void 0 ? void 0 : (_refInput$current$tex = _refInput$current.textContent) === null || _refInput$current$tex === void 0 ? void 0 : _refInput$current$tex.length) === 0)),
|
281
|
-
contentEditable: true,
|
282
|
-
"aria-label": labelText,
|
283
|
-
role: "textbox",
|
284
|
-
tabIndex: disabled ? -1 : 0,
|
285
|
-
onFocus: handleFocus,
|
286
|
-
onInput: handleInput,
|
287
|
-
onKeyDown: handleKeyDown,
|
288
|
-
onPaste: handlePaste,
|
289
|
-
suppressContentEditableWarning: true,
|
290
|
-
ref: refInput,
|
291
|
-
"data-placeholder": placeholder
|
292
|
-
}), value), /*#__PURE__*/_react.default.createElement("div", {
|
293
|
-
className: (0, _classnames.default)("".concat(blockClass, "__after-input-elements")) // tabindex -1 fixes blur target test when clicking on after-input-elements background
|
294
|
-
,
|
295
|
-
tabIndex: "-1"
|
296
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
297
|
-
className: "".concat(blockClass, "__ellipsis"),
|
298
|
-
"aria-hidden": !editing
|
299
|
-
}, "\u2026"), /*#__PURE__*/_react.default.createElement("div", {
|
300
|
-
className: (0, _classnames.default)("".concat(blockClass, "__toolbar"), (_cx3 = {}, (0, _defineProperty2.default)(_cx3, "".concat(blockClass, "__toolbar--animation"), toolbarAnimation), (0, _defineProperty2.default)(_cx3, "".concat(blockClass, "__toolbar--saveable"), refInput.current && value !== internalValue), _cx3))
|
301
|
-
}, showValidation && /*#__PURE__*/_react.default.createElement("div", {
|
302
|
-
className: "".concat(blockClass, "__validation-icon")
|
303
|
-
}, validationIcon), editing ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_react2.Button, (0, _extends2.default)({
|
304
|
-
className: "".concat(blockClass, "__cancel"),
|
305
|
-
kind: "ghost",
|
306
|
-
hasIconOnly: true,
|
307
|
-
iconDescription: cancelDescription,
|
308
|
-
onClick: handleCancel,
|
309
|
-
renderIcon: function renderIcon(props) {
|
310
|
-
return /*#__PURE__*/_react.default.createElement(_icons.Close, (0, _extends2.default)({
|
311
|
-
size: 16
|
312
|
-
}, props));
|
313
|
-
}
|
314
|
-
}, tipPositions.cancel)), /*#__PURE__*/_react.default.createElement(_react2.Button, (0, _extends2.default)({
|
315
|
-
className: "".concat(blockClass, "__save"),
|
316
|
-
kind: "ghost",
|
317
|
-
hasIconOnly: true,
|
318
|
-
iconDescription: saveDescription,
|
319
|
-
onClick: handleSave,
|
320
|
-
renderIcon: function renderIcon(props) {
|
321
|
-
return /*#__PURE__*/_react.default.createElement(_icons.Checkmark, (0, _extends2.default)({
|
322
|
-
size: 16
|
323
|
-
}, props));
|
324
|
-
},
|
325
|
-
disabled: value === internalValue
|
326
|
-
}, tipPositions.save))) : /*#__PURE__*/_react.default.createElement(_react2.IconButton, (0, _extends2.default)({
|
327
|
-
className: (0, _classnames.default)("".concat(blockClass, "__edit"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__edit--always-visible"), editAlwaysVisible)),
|
328
|
-
kind: "ghost",
|
329
|
-
label: editDescription,
|
330
|
-
onClick: handleEdit,
|
331
|
-
disabled: disabled
|
332
|
-
}, tipPositions.edit), disabled ? /*#__PURE__*/_react.default.createElement(_icons.EditOff, {
|
333
|
-
size: 16
|
334
|
-
}) : /*#__PURE__*/_react.default.createElement(_icons.Edit, {
|
335
|
-
size: 16
|
336
|
-
})))), /*#__PURE__*/_react.default.createElement("div", {
|
337
|
-
className: (0, _classnames.default)("".concat(blockClass, "__disabled-cover"))
|
338
|
-
}), showValidation && validationText && validationText.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
|
339
|
-
className: "".concat(blockClass, "__validation-text ").concat(carbonPrefix, "--form-requirement")
|
340
|
-
}, validationText))
|
341
|
-
);
|
342
|
-
}); // Return a placeholder if not released and not enabled by feature flag
|
48
|
+
var props = _objectSpread(_objectSpread({}, rest), {}, {
|
49
|
+
ref: ref
|
50
|
+
});
|
343
51
|
|
52
|
+
if (v1 === true) {
|
53
|
+
return /*#__PURE__*/_react.default.createElement(_InlineEditV.InlineEditV1, props);
|
54
|
+
}
|
344
55
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement(_InlineEditV2.InlineEditV2, props);
|
57
|
+
});
|
345
58
|
exports.InlineEdit = InlineEdit;
|
346
|
-
exports.InlineEdit = InlineEdit = _settings.pkg.checkComponentEnabled(InlineEdit, componentName);
|
347
|
-
|
348
|
-
|
349
|
-
InlineEdit.displayName = componentName; // The types and DocGen commentary for the component props,
|
350
|
-
// in alphabetical order (for consistency).
|
351
|
-
// See https://www.npmjs.com/package/prop-types#usage.
|
352
|
-
|
59
|
+
exports.InlineEdit = InlineEdit = _settings.pkg.checkComponentEnabled(InlineEdit, componentName);
|
60
|
+
InlineEdit.displayName = componentName;
|
353
61
|
InlineEdit.propTypes = {
|
354
|
-
|
355
|
-
* buttonTooltipAlignment from the standard tooltip. Default center.
|
356
|
-
*
|
357
|
-
* Can be passed either as one of tooltip options or as an object specifying cancel, edit and save separately
|
358
|
-
*/
|
359
|
-
buttonTooltipAlignment: _propTypes.default.oneOfType([_propTypes.default.oneOf(['start', 'center', 'end']), _propTypes.default.shape({
|
360
|
-
cancel: _propTypes.default.oneOf(['start', 'center', 'end']),
|
361
|
-
edit: _propTypes.default.oneOf(['start', 'center', 'end']),
|
362
|
-
save: _propTypes.default.oneOf(['start', 'center', 'end'])
|
363
|
-
})]),
|
364
|
-
|
365
|
-
/**
|
366
|
-
* buttonTooltipPosition from the standard tooltip
|
367
|
-
*
|
368
|
-
* Can be passed either as one of tooltip options or as an object specifying cancel, edit and save separately
|
369
|
-
*/
|
370
|
-
buttonTooltipPosition: _propTypes.default.oneOfType([_propTypes.default.oneOf(['top', 'right', 'bottom', 'left']), _propTypes.default.shape({
|
371
|
-
cancel: _propTypes.default.oneOf(['top', 'right', 'bottom', 'left']),
|
372
|
-
edit: _propTypes.default.oneOf(['top', 'right', 'bottom', 'left']),
|
373
|
-
save: _propTypes.default.oneOf(['top', 'right', 'bottom', 'left'])
|
374
|
-
})]),
|
375
|
-
|
376
|
-
/**
|
377
|
-
* label for cancel button
|
378
|
-
*/
|
379
|
-
cancelDescription: _propTypes.default.string.isRequired,
|
380
|
-
|
381
|
-
/**
|
382
|
-
* Provide an optional class to be applied to the containing node.
|
383
|
-
*/
|
384
|
-
className: _propTypes.default.string,
|
385
|
-
|
386
|
-
/**
|
387
|
-
* disable edit
|
388
|
-
*/
|
389
|
-
disabled: _propTypes.default.bool,
|
390
|
-
|
391
|
-
/**
|
392
|
-
* By default the edit icon is shown on hover only.
|
393
|
-
*/
|
394
|
-
editAlwaysVisible: _propTypes.default.bool,
|
395
|
-
|
396
|
-
/**
|
397
|
-
* Label for the edit button
|
398
|
-
*/
|
399
|
-
editDescription: _propTypes.default.string.isRequired,
|
400
|
-
|
401
|
-
/**
|
402
|
-
* ID for inline edit
|
403
|
-
*/
|
404
|
-
id: _propTypes.default.string,
|
405
|
-
|
406
|
-
/**
|
407
|
-
* set invalid state for input
|
408
|
-
*/
|
409
|
-
invalid: _propTypes.default.bool,
|
410
|
-
|
411
|
-
/**
|
412
|
-
* text shown when invalid is true
|
413
|
-
*/
|
414
|
-
invalidText: _propTypes.default.string,
|
415
|
-
|
416
|
-
/**
|
417
|
-
* label for text input
|
418
|
-
*/
|
419
|
-
labelText: _propTypes.default.string,
|
420
|
-
|
421
|
-
/**
|
422
|
-
* change background to light version (mimic React TextInput)
|
423
|
-
*/
|
424
|
-
light: _propTypes.default.bool,
|
425
|
-
|
426
|
-
/**
|
427
|
-
* method called on cancel event
|
428
|
-
*/
|
429
|
-
onCancel: _propTypes.default.func,
|
430
|
-
|
431
|
-
/**
|
432
|
-
* method called on input event (it's a React thing onChange behaves like on input).
|
433
|
-
*
|
434
|
-
* NOTE: caller to handle invalid states and associated text
|
435
|
-
*/
|
436
|
-
onChange: _propTypes.default.func,
|
437
|
-
|
438
|
-
/**
|
439
|
-
* method called on change event
|
440
|
-
*
|
441
|
-
* NOTE: caller to handle invalid states and associated text
|
442
|
-
*/
|
443
|
-
onSave: _propTypes.default.func,
|
444
|
-
|
445
|
-
/**
|
446
|
-
* placeholder for text input
|
447
|
-
*/
|
448
|
-
placeholder: _propTypes.default.string,
|
449
|
-
|
450
|
-
/**
|
451
|
-
* label for save button
|
452
|
-
*/
|
453
|
-
saveDescription: _propTypes.default.string.isRequired,
|
454
|
-
|
455
|
-
/**
|
456
|
-
* vertical size of control
|
457
|
-
*/
|
458
|
-
size: _propTypes.default.oneOf(['sm', 'md', 'lg']),
|
459
|
-
|
460
|
-
/**
|
461
|
-
* initial/unedited value
|
462
|
-
*/
|
463
|
-
value: _propTypes.default.string
|
62
|
+
v1: _propTypes.default.bool
|
464
63
|
};
|