@carbon/ibm-products 1.3.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. package/css/index-full-carbon.css +5102 -4711
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +9 -3
  4. package/css/index-full-carbon.min.css.map +1 -0
  5. package/css/index-without-carbon-released-only.css +189 -108
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +3 -3
  8. package/css/index-without-carbon-released-only.min.css.map +1 -0
  9. package/css/index-without-carbon.css +619 -236
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +9 -3
  12. package/css/index-without-carbon.min.css.map +1 -0
  13. package/css/index.css +950 -567
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +9 -3
  16. package/css/index.min.css.map +1 -0
  17. package/es/components/APIKeyModal/APIKeyModal.js +25 -29
  18. package/es/components/ActionBar/ActionBar.js +4 -1
  19. package/es/components/ActionSet/ActionSet.js +22 -10
  20. package/es/components/ActionSet/actions.js +25 -17
  21. package/es/components/AddSelect/AddSelect.js +141 -53
  22. package/es/components/AddSelect/AddSelectBreadcrumbs.js +56 -0
  23. package/es/components/AddSelect/AddSelectList.js +94 -0
  24. package/es/components/AddSelect/AddSelectSidebar.js +78 -0
  25. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +24 -17
  26. package/es/components/CancelableTextEdit/CancelableTextEdit.js +62 -24
  27. package/es/components/Card/Card.js +6 -4
  28. package/es/components/CreateFullPage/CreateFullPage.js +102 -258
  29. package/es/components/CreateFullPage/CreateFullPageStep.js +65 -13
  30. package/es/components/CreateFullPage/index.js +1 -2
  31. package/es/components/CreateInfluencer/CreateInfluencer.js +40 -220
  32. package/es/components/CreateTearsheet/CreateTearsheet.js +95 -146
  33. package/es/components/CreateTearsheet/CreateTearsheetStep.js +70 -20
  34. package/es/components/CreateTearsheet/index.js +0 -1
  35. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +87 -28
  36. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  37. package/es/components/EmptyStates/EmptyState.js +1 -1
  38. package/es/components/EmptyStates/EmptyStateContent.js +2 -2
  39. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  40. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  41. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  42. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  43. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  44. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  45. package/es/components/ExportModal/ExportModal.js +41 -12
  46. package/es/components/ImportModal/ImportModal.js +2 -1
  47. package/es/components/InlineEdit/InlineEdit.js +397 -0
  48. package/es/components/InlineEdit/index.js +7 -0
  49. package/es/components/MultiAddSelect/MultiAddSelect.js +16 -0
  50. package/es/components/MultiAddSelect/index.js +1 -0
  51. package/es/components/NotificationsPanel/NotificationsPanel.js +16 -3
  52. package/es/components/OptionsTile/OptionsTile.js +36 -15
  53. package/es/components/PageHeader/PageHeader.js +59 -35
  54. package/es/components/PageHeader/PageHeaderTitle.js +82 -7
  55. package/es/components/PageHeader/PageHeaderUtils.js +21 -2
  56. package/es/components/RemoveModal/RemoveModal.js +4 -2
  57. package/es/components/SidePanel/SidePanel.js +33 -16
  58. package/es/components/SingleAddSelect/SingleAddSelect.js +15 -0
  59. package/es/components/SingleAddSelect/index.js +1 -0
  60. package/es/components/TagSet/TagSet.js +4 -1
  61. package/es/components/Tearsheet/Tearsheet.js +1 -1
  62. package/es/components/Tearsheet/TearsheetNarrow.js +1 -1
  63. package/es/components/Tearsheet/TearsheetShell.js +1 -1
  64. package/es/components/Toolbar/Toolbar.js +69 -8
  65. package/es/components/WebTerminal/WebTerminal.js +1 -1
  66. package/es/components/index.js +4 -2
  67. package/es/global/js/hooks/index.js +1 -0
  68. package/es/global/js/hooks/useCreateComponentFocus.js +15 -19
  69. package/es/global/js/hooks/useCreateComponentStepChange.js +69 -79
  70. package/es/global/js/hooks/useResetCreateComponent.js +7 -4
  71. package/es/global/js/hooks/useRetrieveStepData.js +51 -0
  72. package/es/global/js/hooks/useValidCreateStepCount.js +4 -7
  73. package/es/global/js/package-settings.js +4 -2
  74. package/es/global/js/utils/lastIndexInArray.js +26 -0
  75. package/es/settings.js +0 -5
  76. package/lib/components/APIKeyModal/APIKeyModal.js +25 -29
  77. package/lib/components/ActionBar/ActionBar.js +4 -1
  78. package/lib/components/ActionSet/ActionSet.js +22 -10
  79. package/lib/components/ActionSet/actions.js +25 -17
  80. package/lib/components/AddSelect/AddSelect.js +141 -50
  81. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +71 -0
  82. package/lib/components/AddSelect/AddSelectList.js +112 -0
  83. package/lib/components/AddSelect/AddSelectSidebar.js +89 -0
  84. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +23 -16
  85. package/lib/components/CancelableTextEdit/CancelableTextEdit.js +62 -23
  86. package/lib/components/Card/Card.js +6 -4
  87. package/lib/components/CreateFullPage/CreateFullPage.js +102 -258
  88. package/lib/components/CreateFullPage/CreateFullPageStep.js +68 -13
  89. package/lib/components/CreateFullPage/index.js +1 -9
  90. package/lib/components/CreateInfluencer/CreateInfluencer.js +38 -231
  91. package/lib/components/CreateTearsheet/CreateTearsheet.js +97 -148
  92. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +72 -19
  93. package/lib/components/CreateTearsheet/index.js +0 -8
  94. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +86 -34
  95. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  96. package/lib/components/EmptyStates/EmptyState.js +1 -1
  97. package/lib/components/EmptyStates/EmptyStateContent.js +2 -2
  98. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  99. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  100. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  101. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  102. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  103. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  104. package/lib/components/ExportModal/ExportModal.js +38 -11
  105. package/lib/components/ImportModal/ImportModal.js +2 -1
  106. package/lib/components/InlineEdit/InlineEdit.js +413 -0
  107. package/lib/components/InlineEdit/index.js +13 -0
  108. package/lib/components/MultiAddSelect/MultiAddSelect.js +37 -0
  109. package/lib/components/MultiAddSelect/index.js +13 -0
  110. package/lib/components/NotificationsPanel/NotificationsPanel.js +13 -1
  111. package/lib/components/OptionsTile/OptionsTile.js +36 -15
  112. package/lib/components/PageHeader/PageHeader.js +59 -35
  113. package/lib/components/PageHeader/PageHeaderTitle.js +91 -9
  114. package/lib/components/PageHeader/PageHeaderUtils.js +21 -2
  115. package/lib/components/RemoveModal/RemoveModal.js +4 -2
  116. package/lib/components/SidePanel/SidePanel.js +33 -16
  117. package/lib/components/SingleAddSelect/SingleAddSelect.js +36 -0
  118. package/lib/components/SingleAddSelect/index.js +13 -0
  119. package/lib/components/TagSet/TagSet.js +4 -1
  120. package/lib/components/Tearsheet/Tearsheet.js +1 -1
  121. package/lib/components/Tearsheet/TearsheetNarrow.js +1 -1
  122. package/lib/components/Tearsheet/TearsheetShell.js +1 -1
  123. package/lib/components/Toolbar/Toolbar.js +69 -6
  124. package/lib/components/WebTerminal/WebTerminal.js +1 -1
  125. package/lib/components/index.js +25 -9
  126. package/lib/global/js/hooks/index.js +8 -0
  127. package/lib/global/js/hooks/useCreateComponentFocus.js +15 -19
  128. package/lib/global/js/hooks/useCreateComponentStepChange.js +69 -79
  129. package/lib/global/js/hooks/useResetCreateComponent.js +7 -4
  130. package/lib/global/js/hooks/useRetrieveStepData.js +62 -0
  131. package/lib/global/js/hooks/useValidCreateStepCount.js +4 -7
  132. package/lib/global/js/package-settings.js +4 -2
  133. package/lib/global/js/utils/lastIndexInArray.js +35 -0
  134. package/lib/settings.js +0 -6
  135. package/package.json +24 -24
  136. package/scss/components/AddSelect/_add-select.scss +53 -8
  137. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +19 -15
  138. package/scss/components/BreadcrumbWithOverflow/_index.scss +1 -1
  139. package/scss/components/CancelableTextEdit/_cancelable-text-edit.scss +142 -70
  140. package/scss/components/CancelableTextEdit/_storybook-styles.scss +0 -7
  141. package/scss/components/CreateFullPage/_create-full-page.scss +4 -11
  142. package/scss/components/CreateInfluencer/_create-influencer.scss +4 -4
  143. package/scss/components/CreateTearsheet/_create-tearsheet.scss +6 -10
  144. package/scss/components/CreateTearsheetNarrow/_storybook-styles.scss +0 -6
  145. package/scss/components/EditSidePanel/_storybook-styles.scss +0 -8
  146. package/scss/components/InlineEdit/_index.scss +8 -0
  147. package/scss/components/InlineEdit/_inline-edit.scss +320 -0
  148. package/scss/components/InlineEdit/_storybook-styles.scss +21 -0
  149. package/scss/components/LoadingBar/_storybook-styles.scss +0 -5
  150. package/scss/components/MultiAddSelect/_index.scss +1 -0
  151. package/scss/components/MultiAddSelect/_multi-add-select.scss +1 -0
  152. package/scss/components/MultiAddSelect/_storybook-styles.scss +6 -0
  153. package/scss/components/NotificationsPanel/_notifications-panel.scss +2 -2
  154. package/scss/components/OptionsTile/_storybook-styles.scss +0 -7
  155. package/scss/components/PageHeader/_index.scss +1 -1
  156. package/scss/components/PageHeader/_page-header.scss +18 -5
  157. package/scss/components/ProductiveCard/_productive-card.scss +0 -4
  158. package/scss/components/SidePanel/_side-panel.scss +15 -6
  159. package/scss/components/SingleAddSelect/_index.scss +1 -0
  160. package/scss/components/SingleAddSelect/_single-add-select.scss +1 -0
  161. package/scss/components/SingleAddSelect/_storybook-styles.scss +6 -0
  162. package/scss/components/StatusIcon/_index.scss +1 -1
  163. package/scss/components/StatusIcon/_status-icon.scss +6 -4
  164. package/scss/components/TagSet/_index.scss +1 -1
  165. package/scss/components/UserProfileImage/_index.scss +1 -1
  166. package/scss/components/UserProfileImage/_user-profile-image.scss +2 -2
  167. package/scss/components/WebTerminal/_web-terminal.scss +2 -2
  168. package/scss/components/_index.scss +3 -1
  169. package/scss/global/styles/_project-settings.scss +5 -1
  170. package/es/components/CreateFullPage/CreateFullPageSection.js +0 -53
  171. package/es/components/CreateFullPage/constants.js +0 -8
  172. package/es/components/CreateTearsheet/CreateTearsheetSection.js +0 -83
  173. package/es/components/CreateTearsheet/constants.js +0 -8
  174. package/es/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -327
  175. package/es/generated/feature-flags/feature-flags.js +0 -15
  176. package/es/global/js/utils/hasValidType.js +0 -94
  177. package/lib/components/CreateFullPage/CreateFullPageSection.js +0 -74
  178. package/lib/components/CreateFullPage/constants.js +0 -16
  179. package/lib/components/CreateTearsheet/CreateTearsheetSection.js +0 -105
  180. package/lib/components/CreateTearsheet/constants.js +0 -17
  181. package/lib/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -354
  182. package/lib/generated/feature-flags/feature-flags.js +0 -22
  183. package/lib/global/js/utils/hasValidType.js +0 -110
  184. package/scss/generated/feature-flags/_feature-flags.scss +0 -19
@@ -0,0 +1,413 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.InlineEdit = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _classnames = _interopRequireDefault(require("classnames"));
25
+
26
+ var _devtools = require("../../global/js/utils/devtools");
27
+
28
+ var _settings = require("../../settings");
29
+
30
+ var _carbonComponentsReact = require("carbon-components-react");
31
+
32
+ var _iconsReact = require("@carbon/icons-react");
33
+
34
+ var _excluded = ["cancelDescription", "className", "disabled", "editDescription", "editVisibleOnHoverOnly", "id", "invalid", "invalidText", "labelText", "light", "onCancel", "onSave", "onChange", "placeholder", "saveDescription", "saveDisabled", "size", "value", "warn", "warnText"];
35
+
36
+ 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); }
37
+
38
+ 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; }
39
+
40
+ // The block part of our conventional BEM class names (blockClass__E--M).
41
+ var blockClass = "".concat(_settings.pkg.prefix, "--inline-edit");
42
+ var componentName = 'InlineEdit'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
43
+
44
+ /**
45
+ * TODO: A description of the component.
46
+ */
47
+
48
+ var InlineEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn) {
49
+ var _cx, _cx3;
50
+
51
+ var cancelDescription = _ref.cancelDescription,
52
+ className = _ref.className,
53
+ disabled = _ref.disabled,
54
+ editDescription = _ref.editDescription,
55
+ editVisibleOnHoverOnly = _ref.editVisibleOnHoverOnly,
56
+ id = _ref.id,
57
+ invalid = _ref.invalid,
58
+ invalidText = _ref.invalidText,
59
+ labelText = _ref.labelText,
60
+ light = _ref.light,
61
+ onCancel = _ref.onCancel,
62
+ onSave = _ref.onSave,
63
+ onChange = _ref.onChange,
64
+ placeholder = _ref.placeholder,
65
+ saveDescription = _ref.saveDescription,
66
+ saveDisabled = _ref.saveDisabled,
67
+ size = _ref.size,
68
+ value = _ref.value,
69
+ warn = _ref.warn,
70
+ warnText = _ref.warnText,
71
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
72
+ var refInput = (0, _react.useRef)(null);
73
+ var localRef = (0, _react.useRef)(null);
74
+ var ref = refIn || localRef;
75
+
76
+ var _useState = (0, _react.useState)(false),
77
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
78
+ editing = _useState2[0],
79
+ setEditing = _useState2[1];
80
+
81
+ var _useState3 = (0, _react.useState)(value),
82
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
83
+ internalValue = _useState4[0],
84
+ setInternalValue = _useState4[1];
85
+
86
+ var showValidationText = invalid || warn;
87
+ var validationText = invalidText || warnText;
88
+ var validationIcon = showValidationText ? invalid ? /*#__PURE__*/_react.default.createElement(_iconsReact.WarningFilled16, null) : /*#__PURE__*/_react.default.createElement(_iconsReact.WarningAltFilled16, null) : null;
89
+
90
+ var doSetEditing = function doSetEditing(value) {
91
+ if (value === false) {
92
+ // move scroll to start
93
+ refInput.current.scrollLeft = 0;
94
+ }
95
+
96
+ setEditing(!disabled && value);
97
+ };
98
+
99
+ var handleEdit = function handleEdit(ev) {
100
+ if (!disabled) {
101
+ var rightOfInput = ev.currentTarget.classList.contains("".concat(blockClass, "__edit")) || ev.target.classList.contains("".concat(blockClass, "__after-input-elements"));
102
+ var leftOfInput = ev.currentTarget = ev.target.classList.contains("".concat(blockClass)); // clicking on the content editable element should not set either of these to true
103
+
104
+ if (rightOfInput || leftOfInput) {
105
+ doSetEditing(true);
106
+ setTimeout(function () {
107
+ refInput.current.focus(); // select all the content
108
+
109
+ document.getSelection().selectAllChildren(refInput.current);
110
+
111
+ if (rightOfInput) {
112
+ document.getSelection().collapseToEnd();
113
+ refInput.current.scrollLeft = 9999; // never going to get there but ensures at end.
114
+ } else {
115
+ document.getSelection().collapseToStart();
116
+ refInput.current.scrollLeft = 0; // scroll to start
117
+ }
118
+ }, 0);
119
+ }
120
+ }
121
+ };
122
+
123
+ var handleFocus = function handleFocus(ev) {
124
+ ev.preventDefault();
125
+
126
+ if (!editing && ev.target.classList.contains("".concat(blockClass, "__input"))) {
127
+ doSetEditing(true);
128
+ }
129
+ };
130
+
131
+ var handleSave = function handleSave() {
132
+ doSetEditing(false);
133
+ document.getSelection().removeAllRanges();
134
+
135
+ if (onSave) {
136
+ onSave(refInput.current.innerText);
137
+ }
138
+ };
139
+
140
+ var handlePaste = function handlePaste(ev) {
141
+ ev.preventDefault(); // Get clipboard as plain text
142
+
143
+ var text = (ev.clipboardData || window.clipboardData).getData('text/plain'); // remove \n
144
+
145
+ var sanitizedText = text.replaceAll(/\n/g, '') // remove carriage returns
146
+ .replaceAll(/\t/g, ' '); // replace tab with two spaces
147
+
148
+ if (document.queryCommandSupported('insertText')) {
149
+ document.execCommand('insertText', false, sanitizedText);
150
+ } else {
151
+ // Insert text at the current position of caret
152
+ var range = document.getSelection().getRangeAt(0);
153
+ range.deleteContents();
154
+ var textNode = document.createTextNode(sanitizedText);
155
+ range.insertNode(textNode); // move selection end of textNode
156
+
157
+ range.selectNodeContents(textNode);
158
+ range.collapse(false); // remove existing range
159
+
160
+ var selection = document.getSelection();
161
+ selection.removeAllRanges(); // set the new range
162
+
163
+ selection.addRange(range);
164
+ }
165
+ };
166
+
167
+ var handleInput = function handleInput() {
168
+ setInternalValue(refInput.current.innerText);
169
+
170
+ if (onChange) {
171
+ onChange(refInput.current.innerText);
172
+ }
173
+ };
174
+
175
+ var handleCancel = function handleCancel() {
176
+ refInput.current.innerText = value;
177
+ handleInput(value);
178
+ doSetEditing(false);
179
+ document.getSelection().removeAllRanges();
180
+
181
+ if (onCancel) {
182
+ onCancel(value);
183
+ }
184
+ };
185
+
186
+ var handleBlur = function handleBlur(ev) {
187
+ if (!ref.current.contains(ev.relatedTarget)) {
188
+ doSetEditing(false);
189
+ handleSave();
190
+ }
191
+ };
192
+
193
+ var handleKeyDown = function handleKeyDown(ev) {
194
+ if (ev.key === 'Enter') {
195
+ ev.preventDefault();
196
+ refInput.current.blur(); // will cause save
197
+ }
198
+ };
199
+ /*
200
+ The HTML is structured as follows:
201
+ <container>
202
+ <!-- margin left of input to match Carbon -->
203
+ <content-editable>
204
+ <-- margin right of input space for after-input-elements -->
205
+ <after-input-elements>
206
+ </container>
207
+ NOTE:
208
+ - An input is not used as this would not permit a heading tag e.g. <h2>.
209
+ - Some padding is added to the left 16px standard for a Carbon text input
210
+ - The after-input-elements are position absolute with a margin to on the input to reserve space. Using inline-flex
211
+ - does not measure space properly for the input otherwise.
212
+ - The content editable is not expected to change size when buttons are added, to ensure the text does not move space
213
+ is reserved up front for buttons and invalid icon. Mostly this is only noticed if the width of the component is not 100%.
214
+ which can be shown by setting inlineEditFullWidth to false in storybook.
215
+ In making content-editable behave like an input of type text we have to account for.
216
+ - Enforcing a single line
217
+ - Pasting of non-text e.g. html or text with carriage returns
218
+ - The padding and border not hiding typed in text.
219
+ - Placing the cursor at the start or end depending on area clicked (before for left-padding)
220
+ */
221
+
222
+
223
+ var toolbarAnimation = true;
224
+ return (
225
+ /*#__PURE__*/
226
+ // eslint-disable-next-line
227
+ _react.default.createElement("div", {
228
+ className: (0, _classnames.default)(blockClass, // Apply the block class to the main HTML element
229
+ className, // Apply any supplied class names to the main HTML element.
230
+ "".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, "--warn"), warn), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--light"), light), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--overflows"), refInput.current && refInput.current.scrollWidth > refInput.current.offsetWidth), _cx)),
231
+ onClick: handleEdit // disabled eslint for click handler
232
+ ,
233
+ onBlur: handleBlur,
234
+ ref: ref
235
+ }, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, (0, _devtools.getDevtoolsProps)(componentName), {
236
+ id: id,
237
+ size: size,
238
+ className: (0, _classnames.default)("".concat(blockClass, "__input"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__input--empty"), refInput.current && refInput.current.innerText.length === 0)),
239
+ contentEditable: true,
240
+ "aria-label": labelText,
241
+ role: "textbox",
242
+ tabIndex: disabled ? -1 : 0,
243
+ onFocus: handleFocus,
244
+ onInput: handleInput,
245
+ onKeyDown: handleKeyDown,
246
+ onPaste: handlePaste,
247
+ suppressContentEditableWarning: true,
248
+ ref: refInput,
249
+ "data-placeholder": placeholder !== null && placeholder !== void 0 ? placeholder : labelText
250
+ }), value), /*#__PURE__*/_react.default.createElement("div", {
251
+ className: (0, _classnames.default)("".concat(blockClass, "__after-input-elements")) // tabindex -1 fixes blur target test when clicking on after-input-elements background
252
+ ,
253
+ tabIndex: "-1"
254
+ }, /*#__PURE__*/_react.default.createElement("div", {
255
+ className: "".concat(blockClass, "__ellipsis"),
256
+ "aria-hidden": !editing
257
+ }, "\u2026"), /*#__PURE__*/_react.default.createElement("div", {
258
+ 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))
259
+ }, showValidationText && validationText.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
260
+ className: "".concat(blockClass, "__validation-icon")
261
+ }, validationIcon), editing ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
262
+ className: "".concat(blockClass, "__cancel"),
263
+ kind: "ghost",
264
+ hasIconOnly: true,
265
+ iconDescription: cancelDescription,
266
+ onClick: handleCancel,
267
+ renderIcon: _iconsReact.Close16
268
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
269
+ className: "".concat(blockClass, "__save"),
270
+ kind: "ghost",
271
+ hasIconOnly: true,
272
+ iconDescription: saveDescription,
273
+ onClick: handleSave,
274
+ renderIcon: _iconsReact.Checkmark16,
275
+ disabled: invalid || saveDisabled || value === internalValue
276
+ })) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
277
+ "aria-hidden": "true",
278
+ className: (0, _classnames.default)("".concat(blockClass, "__edit"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__edit--hover-visible"), editVisibleOnHoverOnly)),
279
+ kind: "ghost",
280
+ hasIconOnly: true,
281
+ iconDescription: editDescription,
282
+ onClick: handleEdit,
283
+ renderIcon: disabled ? _iconsReact.EditOff16 : _iconsReact.Edit16,
284
+ disabled: disabled,
285
+ tabIndex: -1
286
+ }))), /*#__PURE__*/_react.default.createElement("div", {
287
+ className: (0, _classnames.default)("".concat(blockClass, "__disabled-cover"))
288
+ }), showValidationText && validationText.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
289
+ className: "".concat(blockClass, "__validation-text ").concat(_settings.carbon.prefix, "--form-requirement")
290
+ }, validationText))
291
+ );
292
+ }); // Return a placeholder if not released and not enabled by feature flag
293
+
294
+
295
+ exports.InlineEdit = InlineEdit;
296
+ exports.InlineEdit = InlineEdit = _settings.pkg.checkComponentEnabled(InlineEdit, componentName); // The display name of the component, used by React. Note that displayName
297
+ // is used in preference to relying on function.name.
298
+
299
+ InlineEdit.displayName = componentName; // The types and DocGen commentary for the component props,
300
+ // in alphabetical order (for consistency).
301
+ // See https://www.npmjs.com/package/prop-types#usage.
302
+
303
+ InlineEdit.propTypes = {
304
+ /**
305
+ * label for cancel button
306
+ */
307
+ cancelDescription: _propTypes.default.string.isRequired,
308
+
309
+ /**
310
+ * Provide an optional class to be applied to the containing node.
311
+ */
312
+ className: _propTypes.default.string,
313
+
314
+ /**
315
+ * disable edit
316
+ */
317
+ disabled: _propTypes.default.bool,
318
+
319
+ /**
320
+ * Label for the edit button
321
+ */
322
+ editDescription: _propTypes.default.string.isRequired,
323
+
324
+ /**
325
+ * In some scenarios the edit icon only needs to be shown on hover. These cases are where continual visibility of
326
+ * the edit icon is redundant. E.g. a spreadsheet a property panel.
327
+ */
328
+ editVisibleOnHoverOnly: _propTypes.default.bool,
329
+
330
+ /**
331
+ * ID for inline edit
332
+ */
333
+ id: _propTypes.default.string,
334
+
335
+ /**
336
+ * set invalid state for input
337
+ */
338
+ invalid: _propTypes.default.bool,
339
+
340
+ /**
341
+ * text shown when invalid is true
342
+ */
343
+ invalidText: _propTypes.default.string,
344
+
345
+ /**
346
+ * label for text input
347
+ */
348
+ labelText: _propTypes.default.string,
349
+
350
+ /**
351
+ * change background to light version (mimic React TextInput)
352
+ */
353
+ light: _propTypes.default.bool,
354
+
355
+ /**
356
+ * method called on cancel event
357
+ */
358
+ onCancel: _propTypes.default.func,
359
+
360
+ /**
361
+ * method called on input event (it's a React thing onChange behaves like on input)
362
+ */
363
+ onChange: _propTypes.default.func,
364
+
365
+ /**
366
+ * method called on change event
367
+ */
368
+ onSave: _propTypes.default.func,
369
+
370
+ /**
371
+ * placeholder for text input
372
+ */
373
+ placeholder: _propTypes.default.string,
374
+
375
+ /**
376
+ * label for save button
377
+ */
378
+ saveDescription: _propTypes.default.string.isRequired,
379
+
380
+ /**
381
+ * disabled state of the save button
382
+ */
383
+ saveDisabled: _propTypes.default.bool,
384
+
385
+ /**
386
+ * vertical size of control
387
+ */
388
+ size: _propTypes.default.oneOf(['sm', 'md', 'lg']),
389
+
390
+ /**
391
+ * initial/unedited value
392
+ */
393
+ value: _propTypes.default.string,
394
+
395
+ /**
396
+ * set warn state for input
397
+ */
398
+ warn: _propTypes.default.bool,
399
+
400
+ /**
401
+ * text shown when warn true
402
+ */
403
+ warnText: _propTypes.default.string
404
+ }; // Default values for component props. Default values are not required for
405
+ // props that are required, nor for props where the component can apply
406
+ // 'undefined' values reasonably. Default values should be provided when the
407
+ // component needs to make a choice or assumption when a prop is not supplied.
408
+
409
+ InlineEdit.defaultProps = {
410
+ light: true,
411
+ // defaults to true to reflect design
412
+ size: 'md'
413
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "InlineEdit", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _InlineEdit.InlineEdit;
10
+ }
11
+ });
12
+
13
+ var _InlineEdit = require("./InlineEdit");
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.MultiAddSelect = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _AddSelect = require("../AddSelect");
17
+
18
+ var _devtools = require("../../global/js/utils/devtools");
19
+
20
+ var _settings = require("../../settings");
21
+
22
+ 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); }
23
+
24
+ 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; }
25
+
26
+ // import PropTypes from 'prop-types';
27
+ var componentName = 'MultiAddSelect';
28
+ var MultiAddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
29
+ return /*#__PURE__*/_react.default.createElement(_AddSelect.AddSelect, (0, _extends2.default)({}, props, {
30
+ multi: true,
31
+ ref: ref
32
+ }, (0, _devtools.getDevtoolsProps)(componentName)));
33
+ });
34
+ exports.MultiAddSelect = MultiAddSelect;
35
+ exports.MultiAddSelect = MultiAddSelect = _settings.pkg.checkComponentEnabled(MultiAddSelect, componentName);
36
+ MultiAddSelect.propTypes = {};
37
+ MultiAddSelect.displayName = componentName;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "MultiAddSelect", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _MultiAddSelect.MultiAddSelect;
10
+ }
11
+ });
12
+
13
+ var _MultiAddSelect = require("./MultiAddSelect");
@@ -95,6 +95,12 @@ var NotificationsPanel = /*#__PURE__*/_react.default.forwardRef(function (_ref,
95
95
  allNotifications = _useState4[0],
96
96
  setAllNotifications = _useState4[1];
97
97
 
98
+ var previousState = (0, _hooks.usePreviousValue)({
99
+ open: open
100
+ });
101
+ var reducedMotion = window && window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : {
102
+ matches: true
103
+ };
98
104
  (0, _react.useEffect)(function () {
99
105
  // Set the notifications passed to the state within this component
100
106
  setAllNotifications(data);
@@ -114,6 +120,12 @@ var NotificationsPanel = /*#__PURE__*/_react.default.forwardRef(function (_ref,
114
120
  !open && setRender(false);
115
121
  };
116
122
 
123
+ (0, _react.useEffect)(function () {
124
+ if (!open && previousState !== null && previousState !== void 0 && previousState.open && reducedMotion.matches) {
125
+ setRender(false);
126
+ }
127
+ }, [open, reducedMotion.matches, previousState === null || previousState === void 0 ? void 0 : previousState.open]);
128
+
117
129
  var sortChronologically = function sortChronologically(arr) {
118
130
  if (!arr || arr && !arr.length) {
119
131
  return;
@@ -253,7 +265,7 @@ var NotificationsPanel = /*#__PURE__*/_react.default.forwardRef(function (_ref,
253
265
  id: blockClass,
254
266
  className: (0, _classnames.default)(blockClass, className, "".concat(blockClass, "__container")),
255
267
  style: {
256
- animation: "".concat(open ? 'fadeIn 250ms' : 'fadeOut 250ms')
268
+ animation: !reducedMotion.matches ? "".concat(open ? 'fade-in 250ms' : 'fade-out 250ms') : null
257
269
  },
258
270
  onAnimationEnd: onAnimationEnd,
259
271
  ref: ref || notificationPanelRef
@@ -35,7 +35,7 @@ var _iconsReact = require("@carbon/icons-react");
35
35
 
36
36
  var carbonMotion = _interopRequireWildcard(require("@carbon/motion"));
37
37
 
38
- var _excluded = ["children", "className", "enabled", "heading", "headingId", "invalid", "invalidText", "locked", "lockedText", "onToggle", "size", "summary", "warn", "warnText"];
38
+ var _excluded = ["children", "className", "enabled", "heading", "headingId", "invalid", "invalidText", "locked", "lockedText", "onToggle", "open", "size", "summary", "warn", "warnText"];
39
39
 
40
40
  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); }
41
41
 
@@ -60,22 +60,27 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
60
60
  locked = _ref.locked,
61
61
  lockedText = _ref.lockedText,
62
62
  onToggle = _ref.onToggle,
63
- _ref$size = _ref.size,
64
- size = _ref$size === void 0 ? 'xl' : _ref$size,
63
+ open = _ref.open,
64
+ size = _ref.size,
65
65
  summary = _ref.summary,
66
66
  warn = _ref.warn,
67
67
  warnText = _ref.warnText,
68
68
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
69
69
 
70
- var _useState = (0, _react.useState)(false),
70
+ var _useState = (0, _react.useState)(open),
71
71
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
72
- open = _useState2[0],
73
- setOpen = _useState2[1];
72
+ isOpen = _useState2[0],
73
+ setIsOpen = _useState2[1];
74
74
 
75
- var _useState3 = (0, _react.useState)(false),
75
+ var _useState3 = (0, _react.useState)(open),
76
76
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
77
- closing = _useState4[0],
78
- setClosing = _useState4[1];
77
+ prevIsOpen = _useState4[0],
78
+ setPrevIsOpen = _useState4[1];
79
+
80
+ var _useState5 = (0, _react.useState)(false),
81
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
82
+ closing = _useState6[0],
83
+ setClosing = _useState6[1];
79
84
 
80
85
  var detailsRef = (0, _react.useRef)(null);
81
86
  var contentRef = (0, _react.useRef)(null);
@@ -89,9 +94,19 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
89
94
  matches: true
90
95
  };
91
96
 
97
+ if (open !== prevIsOpen) {
98
+ if (isOpen && !open) {
99
+ collapse();
100
+ } else if (!isOpen && open) {
101
+ expand();
102
+ }
103
+
104
+ setPrevIsOpen(open);
105
+ }
106
+
92
107
  function expand() {
93
108
  if (detailsRef.current && contentRef.current && !reducedMotion.matches) {
94
- setOpen(true);
109
+ setIsOpen(true);
95
110
  detailsRef.current.open = true;
96
111
 
97
112
  var _getComputedStyle = getComputedStyle(contentRef.current),
@@ -117,7 +132,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
117
132
  });
118
133
  } else {
119
134
  // in case the refs are not set or the user prefers reduced motion, skip the animation
120
- setOpen(true);
135
+ setIsOpen(true);
121
136
  }
122
137
  }
123
138
 
@@ -146,7 +161,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
146
161
  });
147
162
 
148
163
  var callback = function callback() {
149
- setOpen(false);
164
+ setIsOpen(false);
150
165
  setClosing(false);
151
166
  };
152
167
 
@@ -154,14 +169,14 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
154
169
  animation.oncancel = callback;
155
170
  } else {
156
171
  // in case the ref is not set or the user prefers reduced motion, skip the animation
157
- setOpen(false);
172
+ setIsOpen(false);
158
173
  }
159
174
  }
160
175
 
161
176
  function toggle(e) {
162
177
  e.preventDefault();
163
178
 
164
- if (open) {
179
+ if (isOpen) {
165
180
  collapse();
166
181
  } else {
167
182
  expand();
@@ -218,7 +233,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
218
233
  size: "sm",
219
234
  disabled: isLocked
220
235
  })), isExpandable ? /*#__PURE__*/_react.default.createElement("details", {
221
- open: open,
236
+ open: isOpen,
222
237
  ref: detailsRef
223
238
  }, /*#__PURE__*/_react.default.createElement("summary", {
224
239
  className: "".concat(blockClass, "__header"),
@@ -298,6 +313,11 @@ OptionsTile.propTypes = {
298
313
  */
299
314
  onToggle: _propTypes.default.func,
300
315
 
316
+ /**
317
+ * Whether the OptionsTile is in open state.
318
+ */
319
+ open: _propTypes.default.bool,
320
+
301
321
  /**
302
322
  * Define the size of the OptionsTile.
303
323
  */
@@ -323,5 +343,6 @@ OptionsTile.propTypes = {
323
343
  // component needs to make a choice or assumption when a prop is not supplied.
324
344
 
325
345
  OptionsTile.defaultProps = {
346
+ open: false,
326
347
  size: 'xl'
327
348
  };