@carbon/ibm-products 2.14.0 → 2.15.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. package/css/index-full-carbon.css +483 -33
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +27 -0
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +52 -18
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +33 -6
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AddSelect/AddSelectRow.js +1 -0
  18. package/es/components/CreateFullPage/CreateFullPage.docs-page.js +6 -0
  19. package/es/components/CreateFullPage/CreateFullPageStep.js +7 -1
  20. package/es/components/CreateInfluencer/CreateInfluencer.js +2 -1
  21. package/es/components/CreateTearsheet/CreateTearsheet.docs-page.js +7 -0
  22. package/es/components/CreateTearsheet/CreateTearsheetStep.js +8 -2
  23. package/es/components/CreateTearsheet/preview-components/MultiStepWithStepInErrorState.js +145 -0
  24. package/es/components/Datagrid/Datagrid/DatagridContent.js +4 -2
  25. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +5 -50
  26. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +18 -19
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +6 -2
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/OverflowCheckboxes.js +1 -1
  29. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +3 -2
  30. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +37 -24
  31. package/es/components/Datagrid/useActionsColumn.js +1 -1
  32. package/es/components/Datagrid/useColumnCenterAlign.js +6 -6
  33. package/es/components/Datagrid/useColumnRightAlign.js +6 -6
  34. package/es/components/Datagrid/useNestedRowExpander.js +10 -1
  35. package/es/components/Datagrid/useRowExpander.js +11 -1
  36. package/es/components/Datagrid/useSelectAllToggle.js +2 -2
  37. package/es/components/Datagrid/useSelectRows.js +27 -21
  38. package/es/components/Datagrid/useSortableColumns.js +1 -1
  39. package/es/components/EditTearsheet/EditTearsheet.js +9 -7
  40. package/es/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +12 -5
  41. package/es/global/js/hooks/index.js +3 -2
  42. package/es/global/js/hooks/usePrefix.js +11 -0
  43. package/es/global/js/hooks/useRetrieveStepData.js +6 -3
  44. package/es/index.js +2 -1
  45. package/lib/components/AddSelect/AddSelectRow.js +1 -0
  46. package/lib/components/CreateFullPage/CreateFullPage.docs-page.js +6 -0
  47. package/lib/components/CreateFullPage/CreateFullPageStep.js +7 -1
  48. package/lib/components/CreateInfluencer/CreateInfluencer.js +2 -1
  49. package/lib/components/CreateTearsheet/CreateTearsheet.docs-page.js +7 -0
  50. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +8 -2
  51. package/lib/components/CreateTearsheet/preview-components/MultiStepWithStepInErrorState.js +155 -0
  52. package/lib/components/Datagrid/Datagrid/DatagridContent.js +4 -2
  53. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +4 -50
  54. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +18 -19
  55. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +6 -2
  56. package/lib/components/Datagrid/Datagrid/addons/Filtering/OverflowCheckboxes.js +1 -1
  57. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +3 -2
  58. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +44 -33
  59. package/lib/components/Datagrid/useActionsColumn.js +1 -1
  60. package/lib/components/Datagrid/useColumnCenterAlign.js +5 -6
  61. package/lib/components/Datagrid/useColumnRightAlign.js +5 -6
  62. package/lib/components/Datagrid/useNestedRowExpander.js +15 -9
  63. package/lib/components/Datagrid/useRowExpander.js +16 -9
  64. package/lib/components/Datagrid/useSelectAllToggle.js +2 -2
  65. package/lib/components/Datagrid/useSelectRows.js +27 -21
  66. package/lib/components/Datagrid/useSortableColumns.js +1 -1
  67. package/lib/components/EditTearsheet/EditTearsheet.js +9 -7
  68. package/lib/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +12 -5
  69. package/lib/global/js/hooks/index.js +8 -1
  70. package/lib/global/js/hooks/usePrefix.js +18 -0
  71. package/lib/global/js/hooks/useRetrieveStepData.js +6 -3
  72. package/lib/index.js +9 -1
  73. package/package.json +8 -8
  74. package/scss/components/Checklist/_checklist.scss +18 -16
  75. package/scss/components/Datagrid/_storybook-styles.scss +14 -0
  76. package/scss/components/Datagrid/styles/_useInlineEdit.scss +6 -6
@@ -1,5 +1,8 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
6
  /* eslint-disable react/prop-types */
4
7
  /**
5
8
  * Copyright IBM Corp. 2020, 2023
@@ -23,6 +26,13 @@ var useRowExpander = function useRowExpander(hooks) {
23
26
  id: 'expander',
24
27
  Cell: function Cell(_ref) {
25
28
  var row = _ref.row;
29
+ var expanderButtonProps = _objectSpread(_objectSpread({}, row.getToggleRowExpandedProps()), {}, {
30
+ onClick: function onClick(event) {
31
+ // Prevents `onRowClick` from being called if `useOnRowClick` is included
32
+ event.stopPropagation();
33
+ row.toggleRowExpanded();
34
+ }
35
+ });
26
36
  var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
27
37
  _ref2$expanderButtonT = _ref2.expanderButtonTitleExpanded,
28
38
  expanderButtonTitleExpanded = _ref2$expanderButtonT === void 0 ? 'Collapse row' : _ref2$expanderButtonT,
@@ -33,7 +43,7 @@ var useRowExpander = function useRowExpander(hooks) {
33
43
  type: "button",
34
44
  "aria-label": expanderTitle,
35
45
  className: cx("".concat(blockClass, "__row-expander"), "".concat(carbon.prefix, "--btn"), "".concat(carbon.prefix, "--btn--ghost"))
36
- }, row.getToggleRowExpandedProps(), {
46
+ }, expanderButtonProps, {
37
47
  title: expanderTitle
38
48
  }), row.isExpanded ? /*#__PURE__*/React.createElement(ChevronUp, {
39
49
  className: "".concat(blockClass, "__row-expander--icon")
@@ -13,7 +13,7 @@ import cx from 'classnames';
13
13
  import { selectionColumnId } from './common-column-ids';
14
14
  import SelectAllWithToggle from './Datagrid/DatagridSelectAllWithToggle';
15
15
  import { pkg } from '../../settings';
16
- var blockClass = "".concat(pkg.prefix, "--datagrid");
16
+ var blockClass = "".concat(pkg.prefix, "--datagrid__select-all");
17
17
  var useSelectAllToggle = function useSelectAllToggle(hooks) {
18
18
  useSelectAllWithToggleComponent(hooks);
19
19
  useAddClassNameToSelectRow(hooks);
@@ -60,7 +60,7 @@ var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
60
60
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
61
61
  if (column.id === selectionColumnId && DatagridPagination) {
62
62
  return [props, {
63
- className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
63
+ className: cx("".concat(blockClass, "-toggle-on"), _defineProperty({}, "".concat(blockClass, "-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
64
64
  }];
65
65
  }
66
66
  return [props];
@@ -3,7 +3,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
5
5
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
- var _excluded = ["onChange"];
6
+ var _excluded = ["onChange", "title"];
7
7
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
8
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
9
  /*
@@ -21,6 +21,7 @@ import { SelectAll } from './Datagrid/DatagridSelectAll';
21
21
  import { selectionColumnId } from './common-column-ids';
22
22
  import { pkg, carbon } from '../../settings';
23
23
  var blockClass = "".concat(pkg.prefix, "--datagrid");
24
+ var checkboxClass = "".concat(pkg.prefix, "--datagrid__checkbox-cell");
24
25
  var useSelectRows = function useSelectRows(hooks) {
25
26
  useHighlightSelection(hooks);
26
27
  var useInstance = function useInstance(instance) {
@@ -54,9 +55,12 @@ var useSelectRows = function useSelectRows(hooks) {
54
55
  };
55
56
  var useHighlightSelection = function useHighlightSelection(hooks) {
56
57
  var getRowProps = function getRowProps(props, _ref) {
58
+ var _ref2;
57
59
  var row = _ref.row;
60
+ var _row$getToggleRowSele = row.getToggleRowSelectedProps(),
61
+ checked = _row$getToggleRowSele.checked;
58
62
  return [props, {
59
- className: cx("".concat(blockClass, "__carbon-row"), row.getToggleRowSelectedProps().checked ? "".concat(carbon.prefix, "--data-table--selected ").concat(blockClass, "__active-row") : '')
63
+ className: cx(["".concat(blockClass, "__carbon-row"), (_ref2 = {}, _defineProperty(_ref2, "".concat(carbon.prefix, "--data-table--selected"), checked), _defineProperty(_ref2, "".concat(blockClass, "__active-row"), checked), _ref2)])
60
64
  }];
61
65
  };
62
66
  hooks.getRowProps.push(getRowProps);
@@ -87,30 +91,32 @@ var SelectRow = function SelectRow(datagridState) {
87
91
  return window.removeEventListener('resize', updateSize);
88
92
  };
89
93
  }, []);
94
+ var onSelectHandler = function onSelectHandler(e) {
95
+ e.stopPropagation(); // avoid triggering onRowClick
96
+ if (radio) {
97
+ toggleAllRowsSelected(false);
98
+ if (onRadioSelect) {
99
+ onRadioSelect(row);
100
+ }
101
+ }
102
+ onChange(e);
103
+ onRowSelect === null || onRowSelect === void 0 || onRowSelect(row, e);
104
+ };
90
105
  var selectDisabled = isFetching || row.getRowProps().disabled;
91
- var _row$getToggleRowSele = row.getToggleRowSelectedProps(),
92
- onChange = _row$getToggleRowSele.onChange,
93
- selectProps = _objectWithoutProperties(_row$getToggleRowSele, _excluded);
106
+ var _row$getToggleRowSele2 = row.getToggleRowSelectedProps(),
107
+ onChange = _row$getToggleRowSele2.onChange,
108
+ title = _row$getToggleRowSele2.title,
109
+ selectProps = _objectWithoutProperties(_row$getToggleRowSele2, _excluded);
94
110
  var cellProps = cell.getCellProps();
95
111
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
112
+ var rowId = "".concat(tableId, "-").concat(row.index);
96
113
  return /*#__PURE__*/React.createElement(TableSelectRow, _extends({}, cellProps, selectProps, {
97
114
  radio: radio,
98
- onSelect: function onSelect(e) {
99
- e.stopPropagation(); // avoid triggering onRowClick
100
- if (radio) {
101
- toggleAllRowsSelected(false);
102
- if (onRadioSelect) {
103
- onRadioSelect(row);
104
- }
105
- }
106
- onChange(e);
107
- onRowSelect === null || onRowSelect === void 0 || onRowSelect(row, e);
108
- },
109
- id: "".concat(tableId, "-").concat(row.index),
110
- name: "".concat(tableId, "-").concat(row.index, "-name"),
111
- className: cx("".concat(blockClass, "__checkbox-cell"), cellProps.className, _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671)),
112
- ariaLabel: "".concat(tableId, "-row-").concat(row.index) // TODO: aria label should be i18n'ed
113
- ,
115
+ onSelect: onSelectHandler,
116
+ id: rowId,
117
+ name: "".concat(rowId, "-name"),
118
+ className: cx([checkboxClass, cellProps.className, _defineProperty({}, "".concat(checkboxClass, "-sticky-left"), isFirstColumnStickyLeft && windowSize > 671)]),
119
+ ariaLabel: title,
114
120
  disabled: selectDisabled
115
121
  }));
116
122
  };
@@ -111,7 +111,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
111
111
  };
112
112
  return _objectSpread(_objectSpread({}, column), {}, {
113
113
  Header: Header,
114
- minWidth: column.disableSortBy === true ? 0 : 90
114
+ minWidth: column.disableSortBy === true ? 0 : column.minWidth ? column.minWidth : 90
115
115
  });
116
116
  });
117
117
  return (_instance$customizeCo = instance.customizeColumnsProps) !== null && _instance$customizeCo !== void 0 && _instance$customizeCo.isTearsheetOpen ? visibleColumns : _toConsumableArray(sortableColumns);
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["cancelButtonText", "children", "className", "description", "influencerWidth", "label", "onClose", "open", "submitButtonText", "title", "verticalPosition", "onHandleModalClick", "onFormChange", "sideNavAriaLabel"];
4
+ var _excluded = ["cancelButtonText", "children", "className", "description", "influencerWidth", "label", "onClose", "open", "submitButtonText", "title", "verticalPosition", "onRequestSubmit", "onFormChange", "sideNavAriaLabel"];
5
5
  /**
6
6
  * Copyright IBM Corp. 2022, 2023
7
7
  *
@@ -52,7 +52,7 @@ export var EditTearsheet = /*#__PURE__*/forwardRef(function (_ref, ref) {
52
52
  title = _ref.title,
53
53
  _ref$verticalPosition = _ref.verticalPosition,
54
54
  verticalPosition = _ref$verticalPosition === void 0 ? defaults.verticalPosition : _ref$verticalPosition,
55
- onHandleModalClick = _ref.onHandleModalClick,
55
+ onRequestSubmit = _ref.onRequestSubmit,
56
56
  onFormChange = _ref.onFormChange,
57
57
  _ref$sideNavAriaLabel = _ref.sideNavAriaLabel,
58
58
  sideNavAriaLabel = _ref$sideNavAriaLabel === void 0 ? defaults.sideNavAriaLabel : _ref$sideNavAriaLabel,
@@ -92,13 +92,15 @@ export var EditTearsheet = /*#__PURE__*/forwardRef(function (_ref, ref) {
92
92
  }
93
93
  return /*#__PURE__*/React.createElement(TearsheetShell, _extends({}, rest, getDevtoolsProps(componentName), {
94
94
  actions: [{
95
+ key: 'edit-action-button-submit',
95
96
  label: submitButtonText,
96
- onClick: onHandleModalClick,
97
+ onClick: onRequestSubmit,
97
98
  kind: 'primary'
98
99
  }, {
100
+ key: 'edit-action-button-cancel',
99
101
  label: cancelButtonText,
100
- onClick: onHandleModalClick,
101
- kind: 'secondary'
102
+ onClick: onClose,
103
+ kind: 'ghost'
102
104
  }],
103
105
  className: cx(blockClass, className),
104
106
  description: description,
@@ -178,9 +180,9 @@ EditTearsheet.propTypes = {
178
180
  */
179
181
  onFormChange: PropTypes.func,
180
182
  /**
181
- * Specifies whether the tearsheet is currently open.
183
+ * Specify a handler for submitting the tearsheet.
182
184
  */
183
- onHandleModalClick: PropTypes.func,
185
+ onRequestSubmit: PropTypes.func.isRequired,
184
186
  /**
185
187
  * Specifies whether the tearsheet is currently open.
186
188
  */
@@ -70,14 +70,21 @@ export var MultiFormEditTearsheet = function MultiFormEditTearsheet(_ref) {
70
70
  setIsInvalid(false);
71
71
  setOpen(false);
72
72
  };
73
- var handleModalClick = function handleModalClick() {
74
- setOpen(!open);
73
+ var onClose = function onClose() {
74
+ clearCreateData();
75
+ action('onClose')();
76
+ };
77
+ var onSubmit = function onSubmit() {
78
+ setOpen(false);
79
+ action('onSubmit')();
75
80
  };
76
81
  var handleFormChange = function handleFormChange() {
77
82
  action('handleFormChange')();
78
83
  };
79
84
  return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("style", null, ".".concat(blockClass, " { opacity: 0 }"), ";"), /*#__PURE__*/React.createElement(Button, {
80
- onClick: handleModalClick
85
+ onClick: function onClick() {
86
+ return setOpen(!open);
87
+ }
81
88
  }, open ? 'Close EditTearsheet' : 'Open EditTearsheet'), /*#__PURE__*/React.createElement(EditTearsheet, {
82
89
  influencerWidth: influencerWidth,
83
90
  label: label,
@@ -87,8 +94,8 @@ export var MultiFormEditTearsheet = function MultiFormEditTearsheet(_ref) {
87
94
  description: description,
88
95
  title: title,
89
96
  open: open,
90
- onHandleModalClick: handleModalClick,
91
- onClose: clearCreateData,
97
+ onRequestSubmit: onSubmit,
98
+ onClose: onClose,
92
99
  onFormChange: handleFormChange
93
100
  }, /*#__PURE__*/React.createElement(EditTearsheetForm, {
94
101
  title: "Topic name",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright IBM Corp. 2020, 2022
2
+ * Copyright IBM Corp. 2020, 2023
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -15,4 +15,5 @@ export { usePreviousValue } from './usePreviousValue';
15
15
  export { useResetCreateComponent } from './useResetCreateComponent';
16
16
  export { useRetrieveStepData } from './useRetrieveStepData';
17
17
  export { useValidCreateStepCount } from './useValidCreateStepCount';
18
- export { useControllableState } from './useControllableState';
18
+ export { useControllableState } from './useControllableState';
19
+ export { usePrefix } from './usePrefix';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright IBM Corp. 2023, 2023
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import pkg from '../package-settings';
9
+ export var usePrefix = function usePrefix() {
10
+ return pkg.prefix;
11
+ };
@@ -10,11 +10,12 @@ import { useEffect } from 'react';
10
10
 
11
11
  /**
12
12
  * This useEffect makes sure that every CreateTearsheetStep/CreateFullPageStep reports back it's
13
- * title, secondaryLabel, introStep, and shouldIncludeStep data so that it can be sent to the CreateInfluencer.
13
+ * title, secondaryLabel, introStep, invalid and shouldIncludeStep data so that it can be sent to the CreateInfluencer.
14
14
  * @param {object} useResetCreateComponent
15
15
  * @param {object} useResetCreateComponent.stepsContext
16
16
  * @param {number} useResetCreateComponent.stepNumber
17
17
  * @param {boolean} useResetCreateComponent.introStep
18
+ * @param {boolean} useResetCreateComponent.invalid
18
19
  * @param {boolean} useResetCreateComponent.shouldIncludeStep
19
20
  * @param {string} useResetCreateComponent.secondaryLabel
20
21
  * @param {string} useResetCreateComponent.title
@@ -23,6 +24,7 @@ export var useRetrieveStepData = function useRetrieveStepData(_ref) {
23
24
  var stepsContext = _ref.stepsContext,
24
25
  stepNumber = _ref.stepNumber,
25
26
  introStep = _ref.introStep,
27
+ invalid = _ref.invalid,
26
28
  shouldIncludeStep = _ref.shouldIncludeStep,
27
29
  secondaryLabel = _ref.secondaryLabel,
28
30
  title = _ref.title;
@@ -33,10 +35,11 @@ export var useRetrieveStepData = function useRetrieveStepData(_ref) {
33
35
  title: title,
34
36
  secondaryLabel: secondaryLabel,
35
37
  introStep: introStep,
38
+ invalid: invalid,
36
39
  shouldIncludeStep: shouldIncludeStep
37
40
  };
38
41
  var previousItem = prev[stepNumber - 1];
39
- if ((previousItem === null || previousItem === void 0 ? void 0 : previousItem.title) !== stepItem.title || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.secondaryLabel) !== stepItem.secondaryLabel || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.introStep) !== stepItem.introStep || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.shouldIncludeStep) !== stepItem.shouldIncludeStep) {
42
+ if ((previousItem === null || previousItem === void 0 ? void 0 : previousItem.title) !== stepItem.title || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.secondaryLabel) !== stepItem.secondaryLabel || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.introStep) !== stepItem.introStep || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.shouldIncludeStep) !== stepItem.shouldIncludeStep || (previousItem === null || previousItem === void 0 ? void 0 : previousItem.invalid) !== stepItem.invalid) {
40
43
  var clone = _toConsumableArray(prev);
41
44
  clone[stepNumber - 1] = stepItem;
42
45
  return clone;
@@ -44,5 +47,5 @@ export var useRetrieveStepData = function useRetrieveStepData(_ref) {
44
47
  return prev;
45
48
  });
46
49
  }
47
- }, [shouldIncludeStep, title, secondaryLabel, introStep, stepsContext, stepNumber]);
50
+ }, [shouldIncludeStep, title, secondaryLabel, introStep, invalid, stepsContext, stepNumber]);
48
51
  };
package/es/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  /**
2
- * Copyright IBM Corp. 2020, 2020
2
+ * Copyright IBM Corp. 2020, 2023
3
3
  *
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
8
  export { pkg } from './settings';
9
+ export { usePrefix } from './global/js/hooks';
9
10
  export * from './components';
@@ -153,6 +153,7 @@ var AddSelectRow = exports.AddSelectRow = function AddSelectRow(_ref) {
153
153
  selected: selected,
154
154
  onClick: handleMultiSelection
155
155
  }), hasModifiers && /*#__PURE__*/_react.default.createElement(_react2.Layer, null, /*#__PURE__*/_react.default.createElement(_react2.Dropdown, {
156
+ titleText: modifiers.label,
156
157
  id: "add-select-modifier-".concat(item.id),
157
158
  type: "inline",
158
159
  items: modifiers.options,
@@ -34,6 +34,12 @@ var DocsPage = function DocsPage() {
34
34
  source: {
35
35
  code: "<CreateFullPage\n title='Page title'\n breadcrumbsOverflowAriaLabel='Open and close additional breadcrumb item list.'\n breadcrumbs={[\n { key: '0', label: 'Breadcrumb 1', href: '/', title: 'home page' },\n { key: '1', label: 'Breadcrumb 2', href: '/', },\n { key: '2', label: 'Breadcrumb 3', href:'/' },\n { key: '3', label: 'Breadcrumb 4', isCurrentPage: true }\n ]}\n maxVisibleBreadcrumbs={3}\n {...props}\n>\n <CreateFullPageStep {...createFullPageStepProps}>...</CreateFullPageStep>\n</CreateFullPage>"
36
36
  }
37
+ }, {
38
+ story: stories.createFullPageWithStepInErrorState,
39
+ description: "Passing an invalid prop to the step will show up an error icon on the progress indicator step indicating an error state in that step",
40
+ source: {
41
+ code: "<CreateFullPage {...createFullPageProps}>\n <CreateFullPageStep\n title=\"Topic name\"\n invalid={true}\n >\n Step content\n </CreateFullPageStep>\n</CreateFullPage>"
42
+ }
37
43
  }, {
38
44
  title: 'Using custom components',
39
45
  description: "It is possible to use custom components that return `CreateFullPageStep`s in\norder to help reduce the amount of logic in the component that contains the main\n`CreateFullPage`. _It is required that each child of the `CreateFullPage` either\nbe a custom step or a `CreateFullPageStep`_. An example of this could look like\nthe following:",
@@ -18,7 +18,7 @@ var _react2 = require("@carbon/react");
18
18
  var _CreateFullPage = require("./CreateFullPage");
19
19
  var _hooks = require("../../global/js/hooks");
20
20
  var _pconsole = _interopRequireDefault(require("../../global/js/utils/pconsole"));
21
- var _excluded = ["children", "className", "subtitle", "description", "disableSubmit", "includeStep", "introStep", "title", "hasFieldset", "fieldsetLegendText", "onNext", "onMount", "secondaryLabel"];
21
+ var _excluded = ["children", "className", "subtitle", "description", "disableSubmit", "includeStep", "introStep", "invalid", "title", "hasFieldset", "fieldsetLegendText", "onNext", "onMount", "secondaryLabel"];
22
22
  /**
23
23
  * Copyright IBM Corp. 2021, 2023
24
24
  *
@@ -44,6 +44,7 @@ var CreateFullPageStep = exports.CreateFullPageStep = /*#__PURE__*/(0, _react.fo
44
44
  _ref$includeStep = _ref.includeStep,
45
45
  includeStep = _ref$includeStep === void 0 ? defaults.includeStep : _ref$includeStep,
46
46
  introStep = _ref.introStep,
47
+ invalid = _ref.invalid,
47
48
  title = _ref.title,
48
49
  hasFieldset = _ref.hasFieldset,
49
50
  fieldsetLegendText = _ref.fieldsetLegendText,
@@ -61,6 +62,7 @@ var CreateFullPageStep = exports.CreateFullPageStep = /*#__PURE__*/(0, _react.fo
61
62
  currentStep: stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep
62
63
  });
63
64
  (0, _hooks.useRetrieveStepData)({
65
+ invalid: invalid,
64
66
  stepsContext: stepsContext,
65
67
  stepNumber: stepNumber,
66
68
  introStep: introStep,
@@ -149,6 +151,10 @@ CreateFullPageStep.propTypes = {
149
151
  * This prop can be used on the first step to mark it as an intro step, which will not render the progress indicator steps
150
152
  */
151
153
  introStep: _propTypes.default.bool,
154
+ /**
155
+ * This optional prop will indicate an error icon on the progress indicator step item
156
+ */
157
+ invalid: _propTypes.default.bool,
152
158
  /**
153
159
  * Optional function to be called on initial mount of a step.
154
160
  * For example, this can be used to fetch data that is required on a particular step.
@@ -69,7 +69,8 @@ var CreateInfluencer = exports.CreateInfluencer = function CreateInfluencer(_ref
69
69
  return /*#__PURE__*/_react.default.createElement(_react2.ProgressStep, {
70
70
  label: step.title,
71
71
  key: stepIndex,
72
- secondaryLabel: step.secondaryLabel
72
+ secondaryLabel: step.secondaryLabel,
73
+ invalid: step.invalid
73
74
  });
74
75
  })));
75
76
  };
@@ -30,6 +30,13 @@ var DocsPage = function DocsPage() {
30
30
  title: 'Using dynamic steps',
31
31
  description: "The use of dynamic steps can be utilized in a scenario when the user makes a\ncertain selection on one step that effects which steps will follow it, this is\ncontrolled via the `includeStep` prop. See abbreviated example below:",
32
32
  code: "import { useState } from 'react';\n\nconst CreateFlow = () => {\n const [shouldIncludeAdditionalStep, setShouldIncludeAdditionalStep] =\n useState(false);\n return (\n <CreateTearsheet {...createTearsheetProps}>\n <CreateTearsheetStep {...step1Props}>\n Step 1 content\n <Checkbox\n labelText={`Include additional step`}\n id=\"include-additional-step-checkbox\"\n onChange={(value) => setShouldIncludeAdditionalStep(value)}\n checked={shouldIncludeAdditionalStep}\n />\n </CreateTearsheetStep>\n <CreateTearsheetStep\n {...step2Props}\n includeStep={shouldIncludeAdditionalStep}\n >\n Dynamic step content\n </CreateTearsheetStep>\n <CreateTearsheetStep {...step3Props}>\n Final step content\n </CreateTearsheetStep>\n </CreateTearsheet>\n );\n};"
33
+ }, {
34
+ story: stories.withErrorState,
35
+ title: 'Create tearsheet with step in error state',
36
+ description: 'Passing an invalid prop to the step will show up an error icon on the progress indicator step indicating an error state in that step',
37
+ source: {
38
+ code: "<CreateTearsheet {...createTearsheetProps}>\n <CreateTearsheetStep\n {...stepProps}\n invalid={true}\n >\n Step in error state\n </CreateTearsheetStep>\n </CreateTearsheet>\n );\n};"
39
+ }
33
40
  }, {
34
41
  title: 'Class names',
35
42
  description: "Additionally, to get the preferred styling when including your own children as\nsections, you can utilize the below included class names.\n\n| Class name | Element | Features |\n| ----------------------------------------------------- | ----------- | ---------------------------------------------------------- |\n| `#{$pkg-prefix}--create-tearsheet__step--title` | title | `productive-heading-04` & `margin-bottom` of `$spacing-05` |\n| `#{$pkg-prefix}--create-tearsheet__step--subtitle` | subtitle | `productive-heading-01` & `margin-bottom` of `$spacing-03` |\n| `#{$pkg-prefix}--create-tearsheet__step--description` | description | `body-long-01` & `margin-bottom` of `$spacing-06` |\n| `#{$pkg-prefix}--create-tearsheet__step--fieldset` | fieldset | `margin-bottom` of `$spacing-05` to all children elements |\n| `#{$pkg-prefix}--create-tearsheet__section--divider` | divider | Includes a `1px` divider line inside the `main` content |\n"
@@ -18,7 +18,7 @@ var _CreateTearsheet = require("./CreateTearsheet");
18
18
  var _settings = require("../../settings");
19
19
  var _pconsole = _interopRequireDefault(require("../../global/js/utils/pconsole"));
20
20
  var _hooks = require("../../global/js/hooks");
21
- var _excluded = ["children", "className", "description", "disableSubmit", "fieldsetLegendText", "hasFieldset", "includeStep", "introStep", "onMount", "onNext", "onPrevious", "secondaryLabel", "subtitle", "title"];
21
+ var _excluded = ["children", "className", "description", "disableSubmit", "fieldsetLegendText", "hasFieldset", "includeStep", "introStep", "invalid", "onMount", "onNext", "onPrevious", "secondaryLabel", "subtitle", "title"];
22
22
  /**
23
23
  * Copyright IBM Corp. 2021, 2023
24
24
  *
@@ -47,6 +47,7 @@ var CreateTearsheetStep = exports.CreateTearsheetStep = /*#__PURE__*/(0, _react.
47
47
  _ref$includeStep = _ref.includeStep,
48
48
  includeStep = _ref$includeStep === void 0 ? defaults.includeStep : _ref$includeStep,
49
49
  introStep = _ref.introStep,
50
+ invalid = _ref.invalid,
50
51
  onMount = _ref.onMount,
51
52
  onNext = _ref.onNext,
52
53
  onPrevious = _ref.onPrevious,
@@ -69,7 +70,8 @@ var CreateTearsheetStep = exports.CreateTearsheetStep = /*#__PURE__*/(0, _react.
69
70
  introStep: introStep,
70
71
  shouldIncludeStep: shouldIncludeStep,
71
72
  secondaryLabel: secondaryLabel,
72
- title: title
73
+ title: title,
74
+ invalid: invalid
73
75
  });
74
76
 
75
77
  // This useEffect reports back the onMount value so that they can be used
@@ -172,6 +174,10 @@ CreateTearsheetStep.propTypes = {
172
174
  * This prop can be used on the first step to mark it as an intro step, which will not render the progress indicator steps
173
175
  */
174
176
  introStep: _propTypes.default.bool,
177
+ /**
178
+ * This optional prop will indicate an error icon on the progress indicator step item
179
+ */
180
+ invalid: _propTypes.default.bool,
175
181
  /**
176
182
  * Optional function to be called on initial mount of a step.
177
183
  * For example, this can be used to fetch data that is required on a particular step.
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.MultiStepWithStepInErrorState = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _react2 = require("@carbon/react");
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var _settings = require("../../../settings");
14
+ var _CreateTearsheet = require("../CreateTearsheet");
15
+ var _CreateTearsheetStep = require("../CreateTearsheetStep");
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ /* eslint-disable react/prop-types */
19
+ /**
20
+ * Copyright IBM Corp. 2021, 2023
21
+ *
22
+ * This source code is licensed under the Apache-2.0 license found in the
23
+ * LICENSE file in the root directory of this source tree.
24
+ */
25
+
26
+ var blockClass = "".concat(_settings.pkg.prefix, "--tearsheet-create-multi-step");
27
+ var MultiStepWithStepInErrorState = exports.MultiStepWithStepInErrorState = function MultiStepWithStepInErrorState(_ref) {
28
+ var backButtonText = _ref.backButtonText,
29
+ cancelButtonText = _ref.cancelButtonText,
30
+ className = _ref.className,
31
+ description = _ref.description,
32
+ influencerWidth = _ref.influencerWidth,
33
+ label = _ref.label,
34
+ nextButtonText = _ref.nextButtonText,
35
+ submitButtonText = _ref.submitButtonText,
36
+ title = _ref.title;
37
+ var _useState = (0, _react.useState)(750),
38
+ _useState2 = (0, _slicedToArray2.default)(_useState, 1),
39
+ simulatedDelay = _useState2[0];
40
+ var _useState3 = (0, _react.useState)(false),
41
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
42
+ open = _useState4[0],
43
+ setOpen = _useState4[1];
44
+ var _useState5 = (0, _react.useState)(''),
45
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
46
+ stepOneTextInputValue = _useState6[0],
47
+ setStepOneTextInputValue = _useState6[1];
48
+ var _useState7 = (0, _react.useState)(''),
49
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
50
+ topicDescriptionValue = _useState8[0],
51
+ setTopicDescriptionValue = _useState8[1];
52
+ var _useState9 = (0, _react.useState)(1),
53
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
54
+ stepTwoTextInputValue = _useState10[0],
55
+ setStepTwoTextInputValue = _useState10[1];
56
+ (0, _react.useState)('one-day');
57
+ var _useState11 = (0, _react.useState)(true),
58
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
59
+ stepOneIsInvalid = _useState12[0],
60
+ setStepOneIsInvalid = _useState12[1];
61
+ var _useState13 = (0, _react.useState)(false),
62
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
63
+ stepTwoIsInvalid = _useState14[0],
64
+ setStepTwoIsInvalid = _useState14[1];
65
+ var clearCreateData = function clearCreateData() {
66
+ setStepOneTextInputValue('');
67
+ setTopicDescriptionValue('');
68
+ setStepTwoTextInputValue(1);
69
+ setStepOneIsInvalid(true);
70
+ setStepTwoIsInvalid(true);
71
+ setOpen(false);
72
+ };
73
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("style", null, ".".concat(blockClass, " { opacity: 0 }"), ";"), /*#__PURE__*/_react.default.createElement(_react2.Button, {
74
+ onClick: function onClick() {
75
+ return setOpen(!open);
76
+ }
77
+ }, open ? 'Close CreateTearsheet' : 'Open CreateTearsheet'), /*#__PURE__*/_react.default.createElement(_CreateTearsheet.CreateTearsheet, {
78
+ influencerWidth: influencerWidth,
79
+ label: label,
80
+ className: (0, _classnames.default)(blockClass, className),
81
+ submitButtonText: submitButtonText,
82
+ cancelButtonText: cancelButtonText,
83
+ backButtonText: backButtonText,
84
+ nextButtonText: nextButtonText,
85
+ description: description,
86
+ title: title,
87
+ open: open,
88
+ onClose: clearCreateData,
89
+ onRequestSubmit: function onRequestSubmit() {
90
+ return new Promise(function (resolve) {
91
+ setTimeout(function () {
92
+ clearCreateData();
93
+ resolve();
94
+ }, simulatedDelay);
95
+ });
96
+ }
97
+ }, /*#__PURE__*/_react.default.createElement(_CreateTearsheetStep.CreateTearsheetStep, {
98
+ title: "Topic name",
99
+ fieldsetLegendText: "Topic information",
100
+ disableSubmit: stepOneIsInvalid,
101
+ subtitle: "This is the unique name used to recognize your topic",
102
+ invalid: stepOneIsInvalid
103
+ }, /*#__PURE__*/_react.default.createElement(_react2.Grid, null, /*#__PURE__*/_react.default.createElement(_react2.Column, {
104
+ xlg: 8,
105
+ lg: 8,
106
+ md: 8,
107
+ sm: 4
108
+ }, /*#__PURE__*/_react.default.createElement(_react2.TextInput, {
109
+ labelText: "Topic name",
110
+ id: "tearsheet-multi-step-story-text-input-multi-step-1",
111
+ value: stepOneTextInputValue,
112
+ placeholder: "Enter topic name",
113
+ onChange: function onChange(event) {
114
+ setStepOneIsInvalid(!event.target.value.length);
115
+ setStepOneTextInputValue(event.target.value);
116
+ },
117
+ invalid: stepOneIsInvalid,
118
+ invalidText: "This is a required field",
119
+ onBlur: function onBlur() {}
120
+ }), /*#__PURE__*/_react.default.createElement(_react2.TextInput, {
121
+ labelText: "Topic description (optional)",
122
+ id: "tearsheet-multi-step-story-text-input-multi-step-1-input-2",
123
+ value: topicDescriptionValue,
124
+ placeholder: "Enter topic description",
125
+ onChange: function onChange(event) {
126
+ return setTopicDescriptionValue(event.target.value);
127
+ }
128
+ })))), /*#__PURE__*/_react.default.createElement(_CreateTearsheetStep.CreateTearsheetStep, {
129
+ title: "Partitions",
130
+ disableSubmit: stepTwoIsInvalid,
131
+ subtitle: "One or more partitions make up a topic. A partition is an ordered list of messages.",
132
+ description: "Partitions are distributed across the brokers in order to increase the scalability of your topic. You can also use them to distribute messages across the members of a consumer group.",
133
+ fieldsetLegendText: "Partition information",
134
+ invalid: stepTwoIsInvalid
135
+ }, /*#__PURE__*/_react.default.createElement(_react2.Grid, null, /*#__PURE__*/_react.default.createElement(_react2.Column, {
136
+ xlg: 3,
137
+ lg: 3,
138
+ md: 8,
139
+ sm: 4
140
+ }, /*#__PURE__*/_react.default.createElement(_react2.NumberInput, {
141
+ iconDescription: "Choose a number",
142
+ id: "carbon-number",
143
+ min: 1,
144
+ max: 100,
145
+ value: stepTwoTextInputValue,
146
+ label: "Partitions",
147
+ helperText: "1 partition is sufficient for getting started but, production systems often have more.",
148
+ invalidText: "Max partitions is 100, min is 1",
149
+ hideSteppers: true,
150
+ onChange: function onChange(event) {
151
+ event.target.value > 0 && event.target.value <= 100 ? setStepTwoIsInvalid(false) : setStepTwoIsInvalid(true);
152
+ setStepTwoTextInputValue(event.target.value);
153
+ }
154
+ }))))));
155
+ };
@@ -37,6 +37,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
37
37
  */
38
38
 
39
39
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
40
+ var gcClass = "".concat(blockClass, "__grid-container");
40
41
  var DatagridContent = exports.DatagridContent = function DatagridContent(_ref) {
41
42
  var _cx4;
42
43
  var datagridState = _ref.datagridState,
@@ -152,7 +153,7 @@ var DatagridContent = exports.DatagridContent = function DatagridContent(_ref) {
152
153
  });
153
154
  };
154
155
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_react2.TableContainer, {
155
- className: (0, _classnames.default)("".concat(blockClass, "__grid-container"), withVirtualScroll || fullHeightDatagrid ? "".concat(blockClass, "__full-height") : '', DatagridPagination ? "".concat(blockClass, "__with-pagination") : '', useDenseHeader ? "".concat(blockClass, "__dense-header") : '', (_cx4 = {}, (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__grid-container-grid-active"), gridActive), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__grid-container-inline-edit"), withInlineEdit), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__grid-container-grid-active--without-toolbar"), withInlineEdit && !DatagridActions), _cx4)),
156
+ className: (0, _classnames.default)("".concat(gcClass), (_cx4 = {}, (0, _defineProperty2.default)(_cx4, "".concat(gcClass, "-active"), gridActive), (0, _defineProperty2.default)(_cx4, "".concat(gcClass, "-active--without-toolbar"), withInlineEdit && !DatagridActions), (0, _defineProperty2.default)(_cx4, "".concat(gcClass, "-inline-edit"), withInlineEdit), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__full-height"), withVirtualScroll || fullHeightDatagrid), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__with-pagination"), DatagridPagination), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__dense-header"), useDenseHeader), _cx4)),
156
157
  title: gridTitle,
157
158
  description: gridDescription
158
159
  }, /*#__PURE__*/_react.default.createElement(_DatagridToolbar.default, datagridState), /*#__PURE__*/_react.default.createElement("div", {
@@ -162,7 +163,8 @@ var DatagridContent = exports.DatagridContent = function DatagridContent(_ref) {
162
163
  updateMethod: "batch"
163
164
  }, getFilterFlyoutProps(), {
164
165
  title: filterProps.panelTitle,
165
- filterSections: filterProps.sections
166
+ filterSections: filterProps.sections,
167
+ autoHideFilters: filterProps.autoHideFilters
166
168
  })), /*#__PURE__*/_react.default.createElement("div", {
167
169
  className: "".concat(blockClass, "__table-container-inner")
168
170
  }, renderFilterSummary(), withInlineEdit ? /*#__PURE__*/_react.default.createElement("div", {