@carbon/ibm-products 1.2.3 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. package/css/index-full-carbon.css +538 -273
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +2 -2
  4. package/css/index-without-carbon-released-only.css +32 -41
  5. package/css/index-without-carbon-released-only.css.map +1 -1
  6. package/css/index-without-carbon-released-only.min.css +2 -2
  7. package/css/index-without-carbon.css +269 -41
  8. package/css/index-without-carbon.css.map +1 -1
  9. package/css/index-without-carbon.min.css +2 -2
  10. package/css/index.css +491 -41
  11. package/css/index.css.map +1 -1
  12. package/css/index.min.css +2 -2
  13. package/es/components/APIKeyModal/APIKeyModal.js +25 -29
  14. package/es/components/ActionBar/ActionBar.js +4 -1
  15. package/es/components/AddSelect/AddSelect.js +157 -0
  16. package/es/components/AddSelect/index.js +7 -0
  17. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +19 -15
  18. package/es/components/CancelableTextEdit/CancelableTextEdit.js +245 -0
  19. package/es/components/{CreateTearsheet/constants.js → CancelableTextEdit/index.js} +1 -2
  20. package/es/components/CreateFullPage/CreateFullPage.js +78 -259
  21. package/es/components/CreateFullPage/CreateFullPageStep.js +58 -14
  22. package/es/components/CreateFullPage/index.js +1 -2
  23. package/es/components/CreateInfluencer/CreateInfluencer.js +23 -225
  24. package/es/components/CreateTearsheet/CreateTearsheet.js +69 -146
  25. package/es/components/CreateTearsheet/CreateTearsheetStep.js +59 -16
  26. package/es/components/CreateTearsheet/index.js +0 -1
  27. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +66 -27
  28. package/es/components/ExportModal/ExportModal.js +4 -2
  29. package/es/components/ImportModal/ImportModal.js +2 -1
  30. package/es/components/InlineEdit/InlineEdit.js +224 -0
  31. package/es/components/InlineEdit/index.js +7 -0
  32. package/es/components/MultiAddSelect/MultiAddSelect.js +16 -0
  33. package/es/components/MultiAddSelect/index.js +1 -0
  34. package/es/components/OptionsTile/OptionsTile.js +36 -15
  35. package/es/components/PageHeader/PageHeader.js +54 -33
  36. package/es/components/PageHeader/PageHeaderTitle.js +78 -7
  37. package/es/components/PageHeader/PageHeaderUtils.js +21 -2
  38. package/es/components/RemoveModal/RemoveModal.js +4 -2
  39. package/es/components/SingleAddSelect/SingleAddSelect.js +15 -0
  40. package/es/components/SingleAddSelect/index.js +1 -0
  41. package/es/components/TagSet/TagSet.js +4 -1
  42. package/es/components/Toolbar/Toolbar.js +69 -8
  43. package/es/components/index.js +5 -1
  44. package/es/global/js/hooks/useCreateComponentFocus.js +15 -19
  45. package/es/global/js/hooks/useCreateComponentStepChange.js +44 -74
  46. package/es/global/js/hooks/useValidCreateStepCount.js +4 -7
  47. package/es/global/js/package-settings.js +5 -1
  48. package/es/global/js/utils/story-helper.js +1 -1
  49. package/lib/components/APIKeyModal/APIKeyModal.js +25 -29
  50. package/lib/components/ActionBar/ActionBar.js +4 -1
  51. package/lib/components/AddSelect/AddSelect.js +178 -0
  52. package/lib/components/AddSelect/index.js +13 -0
  53. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +18 -14
  54. package/lib/components/CancelableTextEdit/CancelableTextEdit.js +265 -0
  55. package/lib/components/CancelableTextEdit/index.js +13 -0
  56. package/lib/components/CreateFullPage/CreateFullPage.js +78 -259
  57. package/lib/components/CreateFullPage/CreateFullPageStep.js +61 -14
  58. package/lib/components/CreateFullPage/index.js +1 -9
  59. package/lib/components/CreateInfluencer/CreateInfluencer.js +21 -236
  60. package/lib/components/CreateTearsheet/CreateTearsheet.js +71 -148
  61. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +61 -15
  62. package/lib/components/CreateTearsheet/index.js +0 -8
  63. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +67 -35
  64. package/lib/components/ExportModal/ExportModal.js +4 -2
  65. package/lib/components/ImportModal/ImportModal.js +2 -1
  66. package/lib/components/InlineEdit/InlineEdit.js +242 -0
  67. package/lib/components/InlineEdit/index.js +13 -0
  68. package/lib/components/MultiAddSelect/MultiAddSelect.js +37 -0
  69. package/lib/components/MultiAddSelect/index.js +13 -0
  70. package/lib/components/OptionsTile/OptionsTile.js +36 -15
  71. package/lib/components/PageHeader/PageHeader.js +54 -33
  72. package/lib/components/PageHeader/PageHeaderTitle.js +87 -9
  73. package/lib/components/PageHeader/PageHeaderUtils.js +21 -2
  74. package/lib/components/RemoveModal/RemoveModal.js +4 -2
  75. package/lib/components/SingleAddSelect/SingleAddSelect.js +36 -0
  76. package/lib/components/SingleAddSelect/index.js +13 -0
  77. package/lib/components/TagSet/TagSet.js +4 -1
  78. package/lib/components/Toolbar/Toolbar.js +69 -6
  79. package/lib/components/index.js +33 -1
  80. package/lib/global/js/hooks/useCreateComponentFocus.js +15 -19
  81. package/lib/global/js/hooks/useCreateComponentStepChange.js +44 -74
  82. package/lib/global/js/hooks/useValidCreateStepCount.js +4 -7
  83. package/lib/global/js/package-settings.js +5 -1
  84. package/lib/global/js/utils/story-helper.js +1 -1
  85. package/package.json +15 -15
  86. package/scss/components/AddSelect/_add-select.scss +84 -0
  87. package/scss/components/AddSelect/_index.scss +10 -0
  88. package/scss/components/AddSelect/_storybook-styles.scss +6 -0
  89. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +19 -15
  90. package/scss/components/CancelableTextEdit/_cancelable-text-edit.scss +211 -0
  91. package/{es/components/CreateFullPage/constants.js → scss/components/CancelableTextEdit/_index.scss} +2 -2
  92. package/scss/components/CancelableTextEdit/_storybook-styles.scss +15 -0
  93. package/scss/components/CreateFullPage/_create-full-page.scss +4 -11
  94. package/scss/components/CreateTearsheet/_create-tearsheet.scss +4 -8
  95. package/scss/components/InlineEdit/_index.scss +8 -0
  96. package/scss/components/InlineEdit/_inline-edit.scss +44 -0
  97. package/scss/components/InlineEdit/_storybook-styles.scss +15 -0
  98. package/scss/components/MultiAddSelect/_index.scss +1 -0
  99. package/scss/components/MultiAddSelect/_multi-add-select.scss +1 -0
  100. package/scss/components/MultiAddSelect/_storybook-styles.scss +6 -0
  101. package/scss/components/PageHeader/_page-header.scss +14 -4
  102. package/scss/components/SingleAddSelect/_index.scss +1 -0
  103. package/scss/components/SingleAddSelect/_single-add-select.scss +1 -0
  104. package/scss/components/SingleAddSelect/_storybook-styles.scss +6 -0
  105. package/scss/components/_index.scss +4 -0
  106. package/es/components/CreateFullPage/CreateFullPageSection.js +0 -53
  107. package/es/components/CreateTearsheet/CreateTearsheetSection.js +0 -83
  108. package/es/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -327
  109. package/es/global/js/utils/hasValidType.js +0 -94
  110. package/lib/components/CreateFullPage/CreateFullPageSection.js +0 -74
  111. package/lib/components/CreateFullPage/constants.js +0 -16
  112. package/lib/components/CreateTearsheet/CreateTearsheetSection.js +0 -105
  113. package/lib/components/CreateTearsheet/constants.js +0 -17
  114. package/lib/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -354
  115. package/lib/global/js/utils/hasValidType.js +0 -110
@@ -0,0 +1,178 @@
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.AddSelect = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+
22
+ var _classnames = _interopRequireDefault(require("classnames"));
23
+
24
+ var _carbonComponentsReact = require("carbon-components-react");
25
+
26
+ var _Tearsheet = require("../../components/Tearsheet");
27
+
28
+ var _NoDataEmptyState = require("../../components/EmptyStates/NoDataEmptyState");
29
+
30
+ var _settings = require("../../settings");
31
+
32
+ var _excluded = ["actions", "className", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onSearchFilter", "open", "title"];
33
+
34
+ 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); }
35
+
36
+ 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; }
37
+
38
+ var componentName = 'AddSelect';
39
+ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
40
+ var actions = _ref.actions,
41
+ className = _ref.className,
42
+ description = _ref.description,
43
+ influencerTitle = _ref.influencerTitle,
44
+ inputPlaceholder = _ref.inputPlaceholder,
45
+ items = _ref.items,
46
+ itemsLabel = _ref.itemsLabel,
47
+ multi = _ref.multi,
48
+ noResultsDescription = _ref.noResultsDescription,
49
+ noResultsTitle = _ref.noResultsTitle,
50
+ noSelectionDescription = _ref.noSelectionDescription,
51
+ noSelectionTitle = _ref.noSelectionTitle,
52
+ onSearchFilter = _ref.onSearchFilter,
53
+ open = _ref.open,
54
+ title = _ref.title,
55
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
56
+ var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
57
+ var commonTearsheetProps = {
58
+ open: open,
59
+ title: title,
60
+ actions: actions,
61
+ description: description,
62
+ closeIconDescription: 'temp description'
63
+ }; // hooks
64
+
65
+ var _useState = (0, _react.useState)(0),
66
+ _useState2 = (0, _slicedToArray2.default)(_useState, 1),
67
+ selected = _useState2[0];
68
+
69
+ var _useState3 = (0, _react.useState)(''),
70
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
71
+ searchTerm = _useState4[0],
72
+ setSearchTerm = _useState4[1]; // handlers
73
+
74
+
75
+ var onSearchHandler = function onSearchHandler(e) {
76
+ var value = e.target.value;
77
+ setSearchTerm(value);
78
+
79
+ if (onSearchFilter) {
80
+ onSearchFilter(value);
81
+ }
82
+ }; // data manipulation
83
+
84
+
85
+ var getFilteredItems = function getFilteredItems() {
86
+ // if the user uses their own filter then they provide the filtered items
87
+ if (onSearchFilter) {
88
+ return items;
89
+ } // by default, just filter results by their label from a single search term
90
+
91
+
92
+ return items.filter(function (i) {
93
+ return i.label.includes(searchTerm);
94
+ });
95
+ };
96
+
97
+ var filteredResults = getFilteredItems(); // sidebar
98
+
99
+ var influencer = /*#__PURE__*/_react.default.createElement("div", {
100
+ className: "".concat(blockClass, "__influencer")
101
+ }, /*#__PURE__*/_react.default.createElement("div", {
102
+ className: "".concat(blockClass, "__influencer-header")
103
+ }, /*#__PURE__*/_react.default.createElement("p", {
104
+ className: "".concat(blockClass, "__influencer-title")
105
+ }, influencerTitle), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
106
+ type: "gray",
107
+ size: "sm"
108
+ }, selected)), /*#__PURE__*/_react.default.createElement("div", {
109
+ className: "".concat(blockClass, "__influencer-body")
110
+ }, selected > 0 ? /*#__PURE__*/_react.default.createElement("p", null, "content") : /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
111
+ subtitle: noSelectionDescription,
112
+ title: noSelectionTitle,
113
+ size: "sm"
114
+ }))); // main content
115
+
116
+
117
+ var body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
118
+ className: "".concat(blockClass, "__header")
119
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
120
+ id: "temp-id",
121
+ labelText: "temp label",
122
+ placeholder: inputPlaceholder,
123
+ value: searchTerm,
124
+ onChange: onSearchHandler
125
+ }), /*#__PURE__*/_react.default.createElement("div", {
126
+ className: "".concat(blockClass, "__items-label-container")
127
+ }, /*#__PURE__*/_react.default.createElement("p", {
128
+ className: "".concat(blockClass, "__items-label")
129
+ }, itemsLabel), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
130
+ type: "gray",
131
+ size: "sm"
132
+ }, filteredResults.length))), filteredResults.length > 0 ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListWrapper, {
133
+ selection: true,
134
+ className: "".concat(blockClass, "__selections")
135
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListBody, null, filteredResults.map(function (item) {
136
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListRow, {
137
+ key: item.id
138
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListCell, null, /*#__PURE__*/_react.default.createElement("p", null, item.label)));
139
+ }))) : /*#__PURE__*/_react.default.createElement("div", {
140
+ className: "".concat(blockClass, "__body")
141
+ }, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
142
+ subtitle: noResultsDescription,
143
+ title: noResultsTitle
144
+ })));
145
+
146
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
147
+ ref: ref,
148
+ className: (0, _classnames.default)(className, blockClass)
149
+ }, rest), multi ? /*#__PURE__*/_react.default.createElement(_Tearsheet.Tearsheet, (0, _extends2.default)({}, commonTearsheetProps, {
150
+ influencer: multi && influencer,
151
+ influencerPosition: "right"
152
+ }), body) : /*#__PURE__*/_react.default.createElement(_Tearsheet.TearsheetNarrow, commonTearsheetProps, body));
153
+ });
154
+ exports.AddSelect = AddSelect;
155
+ AddSelect.propTypes = {
156
+ actions: _propTypes.default.array,
157
+ className: _propTypes.default.string,
158
+ description: _propTypes.default.string,
159
+ influencerTitle: _propTypes.default.string,
160
+ inputPlaceholder: _propTypes.default.string,
161
+ items: _propTypes.default.arrayOf(_propTypes.default.shape({
162
+ label: _propTypes.default.string,
163
+ id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
164
+ })),
165
+ itemsLabel: _propTypes.default.string,
166
+ multi: _propTypes.default.bool,
167
+ noResultsDescription: _propTypes.default.string,
168
+ noResultsTitle: _propTypes.default.string,
169
+ noSelectionDescription: _propTypes.default.string,
170
+ noSelectionTitle: _propTypes.default.string,
171
+ onSearchFilter: _propTypes.default.func,
172
+ open: _propTypes.default.bool,
173
+ title: _propTypes.default.string
174
+ };
175
+ AddSelect.defaultProps = {
176
+ items: []
177
+ };
178
+ AddSelect.displayName = componentName;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "AddSelect", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _AddSelect.AddSelect;
10
+ }
11
+ });
12
+
13
+ var _AddSelect = require("./AddSelect");
@@ -36,7 +36,7 @@ var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
36
36
  require("../../global/js/utils/props-helper");
37
37
 
38
38
  var _excluded = ["breadcrumbs", "className", "maxVisible", "noTrailingSlash", "overflowAriaLabel"],
39
- _excluded2 = ["label", "key", "title"],
39
+ _excluded2 = ["label", "key", "title", "id"],
40
40
  _excluded3 = ["className", "key", "label", "title"];
41
41
 
42
42
  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); }
@@ -122,10 +122,13 @@ var BreadcrumbWithOverflow = function BreadcrumbWithOverflow(_ref) {
122
122
  var label = _ref3.label,
123
123
  key = _ref3.key,
124
124
  title = _ref3.title,
125
+ id = _ref3.id,
125
126
  rest = (0, _objectWithoutProperties2.default)(_ref3, _excluded2);
126
127
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.BreadcrumbItem, (0, _extends2.default)({
127
128
  key: key
128
129
  }, rest, {
130
+ // ensure id is not duplicated
131
+ "data-original-id": id,
129
132
  title: title !== null && title !== void 0 ? title : label
130
133
  }), label);
131
134
  }))));
@@ -273,7 +276,7 @@ var BreadcrumbWithOverflow = function BreadcrumbWithOverflow(_ref) {
273
276
  /* istanbul ignore if */
274
277
  // not sure how to test media queries
275
278
 
276
- if ((_backItem = backItem) !== null && _backItem !== void 0 && _backItem.isCurrentPage) {
279
+ if (backItem.isCurrentPage) {
277
280
  backItem = breadcrumbs[breadcrumbs.length - 2];
278
281
  }
279
282
 
@@ -290,20 +293,21 @@ var BreadcrumbWithOverflow = function BreadcrumbWithOverflow(_ref) {
290
293
  ref: breadcrumbItemWithOverflow
291
294
  }, /*#__PURE__*/_react.default.createElement("div", {
292
295
  className: (0, _classnames.default)(["".concat(blockClass, "__space")])
293
- }, hiddenSizingItems, ((_backItem2 = backItem) === null || _backItem2 === void 0 ? void 0 : _backItem2.href) && ((_backItem3 = backItem) === null || _backItem3 === void 0 ? void 0 : _backItem3.title) && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
294
- className: "".concat(blockClass, "__breadcrumb-back-button"),
295
- hasIconOnly: true,
296
- iconDescription: backItem.title,
297
- kind: "ghost",
298
- href: backItem.href,
299
- renderIcon: _iconsReact.ArrowLeft16,
300
- size: "field",
301
- tooltipPosition: "right",
302
- type: "button"
303
- }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Breadcrumb, (0, _extends2.default)({
296
+ }, hiddenSizingItems, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Breadcrumb, (0, _extends2.default)({
304
297
  className: (0, _classnames.default)("".concat(blockClass, "__breadcrumb-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__breadcrumb-container-with-items"), displayedBreadcrumbItems.length > 1)),
305
298
  noTrailingSlash: noTrailingSlash
306
- }, other), displayedBreadcrumbItems)));
299
+ }, other), ((_backItem = backItem) === null || _backItem === void 0 ? void 0 : _backItem.href) && (((_backItem2 = backItem) === null || _backItem2 === void 0 ? void 0 : _backItem2.label) || ((_backItem3 = backItem) === null || _backItem3 === void 0 ? void 0 : _backItem3.title)) && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.BreadcrumbItem, {
300
+ className: (0, _classnames.default)("".concat(blockClass, "__breadcrumb-back"))
301
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Link, {
302
+ href: backItem.href,
303
+ renderIcon: function renderIcon() {
304
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TooltipIcon, {
305
+ tooltipText: backItem.title || backItem.label,
306
+ direction: "right",
307
+ renderIcon: _iconsReact.ArrowLeft16
308
+ });
309
+ }
310
+ })), displayedBreadcrumbItems)));
307
311
  }; // Return a placeholder if not released and not enabled by feature flag
308
312
 
309
313
 
@@ -0,0 +1,265 @@
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.CancelableTextEdit = 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 _carbonComponentsReact = require("carbon-components-react");
27
+
28
+ var _propsHelper = require("../../global/js/utils/props-helper");
29
+
30
+ var _settings = require("../../settings");
31
+
32
+ var _devtools = require("../../global/js/utils/devtools");
33
+
34
+ var _iconsReact = require("@carbon/icons-react");
35
+
36
+ var _excluded = ["className", "hideLabel", "inline", "invalid", "invalidText", "labelText", "onChange", "onInput", "onRevert", "revertDescription", "saveDescription", "saveDisabled", "size", "value", "warn", "warnText"];
37
+
38
+ 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
+
40
+ 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
+
42
+ 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; }
43
+
44
+ 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
+
46
+ // Carbon and package components we use.
47
+
48
+ /* TODO: @import(s) of carbon components and other package components. */
49
+ // The block part of our conventional BEM class names (blockClass__E--M).
50
+ var blockClass = "".concat(_settings.pkg.prefix, "--cancelable-text-edit");
51
+ var componentName = 'CancelableTextEdit'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
52
+
53
+ /**
54
+ * TODO: A description of the component.
55
+ */
56
+
57
+ var CancelableTextEdit = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
58
+ var _cx;
59
+
60
+ var className = _ref.className,
61
+ hideLabel = _ref.hideLabel,
62
+ inline = _ref.inline,
63
+ invalid = _ref.invalid,
64
+ invalidText = _ref.invalidText,
65
+ labelText = _ref.labelText,
66
+ onChange = _ref.onChange,
67
+ onInput = _ref.onInput,
68
+ onRevert = _ref.onRevert,
69
+ revertDescription = _ref.revertDescription,
70
+ saveDescription = _ref.saveDescription,
71
+ saveDisabled = _ref.saveDisabled,
72
+ size = _ref.size,
73
+ value = _ref.value,
74
+ warn = _ref.warn,
75
+ warnText = _ref.warnText,
76
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
77
+ // remove these props later
78
+ var removeProps = ['children', 'onInput', 'onChange', 'value'];
79
+ var showWarn = inline && warn && !invalid;
80
+ var showInvalid = inline && invalid;
81
+
82
+ var _useState = (0, _react.useState)(value !== null && value !== void 0 ? value : ''),
83
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
84
+ liveValue = _useState2[0],
85
+ setLiveValue = _useState2[1];
86
+
87
+ (0, _react.useEffect)(function () {
88
+ if (value !== liveValue) {
89
+ setLiveValue(value);
90
+ } // Do not care if liveValue changes here
91
+ // eslint-disable-next-line react-hooks/exhaustive-deps
92
+
93
+ }, [value]);
94
+
95
+ var doInput = function doInput(newValue) {
96
+ setLiveValue(newValue);
97
+
98
+ if (onInput) {
99
+ onInput(newValue);
100
+ }
101
+ };
102
+
103
+ var handleInput = function handleInput(ev) {
104
+ doInput(ev.target.value);
105
+ };
106
+
107
+ var handleRevert = function handleRevert() {
108
+ doInput(value);
109
+
110
+ if (onRevert) {
111
+ onRevert(value);
112
+ }
113
+ };
114
+
115
+ var handleSave = function handleSave() {
116
+ if (onChange && !invalid) {
117
+ onChange(liveValue);
118
+ }
119
+ };
120
+
121
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
122
+ className: (0, _classnames.default)(className, "".concat(blockClass), "".concat(blockClass, "--").concat(size), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--invalid"), invalid), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--warn"), warn), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--inline"), inline), _cx))
123
+ }, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement("div", {
124
+ className: "".concat(blockClass, "__main")
125
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, (0, _extends2.default)({}, (0, _propsHelper.prepareProps)(rest, removeProps), {
126
+ // it is not permitted to pass children down to TextInput guard against this
127
+ className: "".concat(blockClass, "__input"),
128
+ ref: ref,
129
+ onInput: handleInput,
130
+ size: size,
131
+ value: liveValue !== null && liveValue !== void 0 ? liveValue : '' // ?? '' prevents controlled components test failure https://reactjs.org/docs/forms.html#controlled-components
132
+ ,
133
+ hideLabel: hideLabel,
134
+ inline: inline,
135
+ invalid: invalid,
136
+ invalidText: invalidText,
137
+ labelText: labelText,
138
+ warn: warn,
139
+ warnText: warnText
140
+ })), /*#__PURE__*/_react.default.createElement("div", {
141
+ className: "".concat(blockClass, "__buttons")
142
+ }, !inline && !hideLabel && labelText && /*#__PURE__*/_react.default.createElement("div", {
143
+ className: "".concat(blockClass, "__label-spacer ").concat(_settings.carbon.prefix, "--label")
144
+ }, "\xA0"), /*#__PURE__*/_react.default.createElement("div", {
145
+ className: "".concat(blockClass, "__buttons-inner")
146
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
147
+ className: "".concat(blockClass, "__revert"),
148
+ kind: "ghost",
149
+ hasIconOnly: true,
150
+ iconDescription: revertDescription,
151
+ onClick: handleRevert,
152
+ renderIcon: _iconsReact.Reset16
153
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
154
+ className: "".concat(blockClass, "__save"),
155
+ kind: "ghost",
156
+ hasIconOnly: true,
157
+ iconDescription: saveDescription,
158
+ onClick: handleSave,
159
+ renderIcon: _iconsReact.Checkmark16,
160
+ disabled: invalid || saveDisabled || value === liveValue,
161
+ "data-v": value,
162
+ "data-lv": liveValue
163
+ })))), inline && (showInvalid || showWarn) && /*#__PURE__*/_react.default.createElement("div", {
164
+ className: "".concat(blockClass, "__problem ").concat(_settings.carbon.prefix, "--form-requirement")
165
+ }, showInvalid ? invalidText : warnText));
166
+ }); // Return a placeholder if not released and not enabled by feature flag
167
+
168
+
169
+ exports.CancelableTextEdit = CancelableTextEdit;
170
+ exports.CancelableTextEdit = CancelableTextEdit = _settings.pkg.checkComponentEnabled(CancelableTextEdit, componentName); // The display name of the component, used by React. Note that displayName
171
+ // is used in preference to relying on function.name.
172
+
173
+ CancelableTextEdit.displayName = componentName; // The types and DocGen commentary for the component props,
174
+ // in alphabetical order (for consistency).
175
+ // See https://www.npmjs.com/package/prop-types#usage.
176
+
177
+ CancelableTextEdit.propTypes = _objectSpread(_objectSpread({}, (0, _propsHelper.prepareProps)(_carbonComponentsReact.TextInput.propTypes, ['inline', 'invalid', 'invalidText', 'labelText', 'onChange', 'onInput', 'value', 'warn', 'warnText'])), {}, {
178
+ /**
179
+ * Provide an optional class to be applied to the containing node.
180
+ */
181
+ className: _propTypes.default.string,
182
+
183
+ /**
184
+ * hide the label
185
+ */
186
+ hideLabel: _propTypes.default.bool,
187
+
188
+ /**
189
+ * inline variant
190
+ */
191
+ inline: _propTypes.default.bool,
192
+
193
+ /**
194
+ * set invalid state for input
195
+ */
196
+ invalid: _propTypes.default.bool,
197
+
198
+ /**
199
+ * text shown when invalid is true
200
+ */
201
+ invalidText: _propTypes.default.string,
202
+
203
+ /**
204
+ * label for text input
205
+ */
206
+ labelText: _propTypes.default.string,
207
+
208
+ /**
209
+ * method called on change event
210
+ */
211
+ onChange: _propTypes.default.func,
212
+
213
+ /**
214
+ * method called on input event
215
+ */
216
+ onInput: _propTypes.default.func,
217
+
218
+ /**
219
+ * method called on revert event
220
+ */
221
+ onRevert: _propTypes.default.func,
222
+
223
+ /**
224
+ * label for revert button
225
+ */
226
+ revertDescription: _propTypes.default.string.isRequired,
227
+
228
+ /**
229
+ * label for save button
230
+ */
231
+ saveDescription: _propTypes.default.string.isRequired,
232
+
233
+ /**
234
+ * disabled state of the save button
235
+ */
236
+ saveDisabled: _propTypes.default.bool,
237
+
238
+ /**
239
+ * vertical size of control
240
+ */
241
+ size: _propTypes.default.oneOf(['sm', 'md', 'lg']),
242
+
243
+ /**
244
+ * initial/unedited value
245
+ */
246
+ value: _propTypes.default.string,
247
+
248
+ /**
249
+ * set warn state for input
250
+ */
251
+ warn: _propTypes.default.bool,
252
+
253
+ /**
254
+ * text shown when warn true
255
+ */
256
+ warnText: _propTypes.default.string
257
+ }); // Default values for component props. Default values are not required for
258
+ // props that are required, nor for props where the component can apply
259
+ // 'undefined' values reasonably. Default values should be provided when the
260
+ // component needs to make a choice or assumption when a prop is not supplied.
261
+
262
+ CancelableTextEdit.defaultProps = {
263
+ /* TODO: add defaults for relevant props. */
264
+ size: 'md'
265
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CancelableTextEdit", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _CancelableTextEdit.CancelableTextEdit;
10
+ }
11
+ });
12
+
13
+ var _CancelableTextEdit = require("./CancelableTextEdit");