@carbon/ibm-products 2.11.0 → 2.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/css/index-full-carbon.css +11 -7
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon.css +11 -7
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +3 -3
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +10 -6
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +2 -2
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +30 -37
  14. package/es/components/Datagrid/Extensions/ExpandableRow/ExpandableRow.docs-page.js +1 -1
  15. package/es/components/Datagrid/useNestedRowExpander.js +22 -9
  16. package/es/components/Datagrid/useRowExpander.js +22 -9
  17. package/es/components/Datagrid/utils/DatagridActions.js +1 -1
  18. package/es/components/Datagrid/utils/getArgTypes.js +12 -0
  19. package/es/components/EditTearsheet/EditTearsheet.js +47 -38
  20. package/es/components/EditTearsheet/EditTearsheetForm.js +6 -0
  21. package/es/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +6 -1
  22. package/es/components/Tearsheet/Tearsheet.js +2 -2
  23. package/es/components/Tearsheet/TearsheetNarrow.js +2 -2
  24. package/es/components/Tearsheet/TearsheetShell.js +2 -2
  25. package/es/global/js/hooks/useRetrieveFormTitles.js +20 -0
  26. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +30 -37
  27. package/lib/components/Datagrid/Extensions/ExpandableRow/ExpandableRow.docs-page.js +1 -1
  28. package/lib/components/Datagrid/useNestedRowExpander.js +24 -9
  29. package/lib/components/Datagrid/useRowExpander.js +24 -9
  30. package/lib/components/Datagrid/utils/DatagridActions.js +1 -1
  31. package/lib/components/Datagrid/utils/getArgTypes.js +12 -0
  32. package/lib/components/EditTearsheet/EditTearsheet.js +47 -38
  33. package/lib/components/EditTearsheet/EditTearsheetForm.js +6 -0
  34. package/lib/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +6 -1
  35. package/lib/components/Tearsheet/Tearsheet.js +2 -2
  36. package/lib/components/Tearsheet/TearsheetNarrow.js +2 -2
  37. package/lib/components/Tearsheet/TearsheetShell.js +2 -2
  38. package/lib/global/js/hooks/useRetrieveFormTitles.js +28 -0
  39. package/package.json +5 -5
  40. package/scss/components/Datagrid/_datagrid.scss +9 -0
  41. package/scss/components/Datagrid/styles/_datagrid.scss +1 -0
  42. package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +1 -0
  43. package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +1 -0
  44. package/scss/components/FilterSummary/_filter-summary.scss +1 -0
@@ -16,9 +16,9 @@ var _react2 = require("@carbon/react");
16
16
  var _settings = require("../../settings");
17
17
  var _devtools = require("../../global/js/utils/devtools");
18
18
  var _TearsheetShell = require("../Tearsheet/TearsheetShell");
19
- var _excluded = ["cancelButtonText", "children", "className", "description", "influencerWidth", "label", "onClose", "open", "submitButtonText", "title", "verticalPosition", "onHandleModalClick"];
19
+ var _excluded = ["cancelButtonText", "children", "className", "description", "influencerWidth", "label", "onClose", "open", "submitButtonText", "title", "verticalPosition", "onHandleModalClick", "onFormChange", "sideNavAriaLabel"];
20
20
  /**
21
- * Copyright IBM Corp. 2022, 2022
21
+ * Copyright IBM Corp. 2022, 2023
22
22
  *
23
23
  * This source code is licensed under the Apache-2.0 license found in the
24
24
  * LICENSE file in the root directory of this source tree.
@@ -42,7 +42,8 @@ var FormNumberContext = /*#__PURE__*/(0, _react.createContext)(0);
42
42
  exports.FormNumberContext = FormNumberContext;
43
43
  var defaults = {
44
44
  verticalPosition: 'normal',
45
- influencerWidth: 'narrow'
45
+ influencerWidth: 'narrow',
46
+ sideNavAriaLabel: 'Side navigation'
46
47
  };
47
48
 
48
49
  /**
@@ -63,40 +64,43 @@ var EditTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
63
64
  _ref$verticalPosition = _ref.verticalPosition,
64
65
  verticalPosition = _ref$verticalPosition === void 0 ? defaults.verticalPosition : _ref$verticalPosition,
65
66
  onHandleModalClick = _ref.onHandleModalClick,
67
+ onFormChange = _ref.onFormChange,
68
+ _ref$sideNavAriaLabel = _ref.sideNavAriaLabel,
69
+ sideNavAriaLabel = _ref$sideNavAriaLabel === void 0 ? defaults.sideNavAriaLabel : _ref$sideNavAriaLabel,
66
70
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
67
71
  var _useState = (0, _react.useState)(0),
68
72
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
69
73
  currentForm = _useState2[0],
70
74
  setCurrentForm = _useState2[1];
75
+ var _useState3 = (0, _react.useState)([]),
76
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
77
+ formTitles = _useState4[0],
78
+ setFormTitles = _useState4[1];
71
79
  var contentRef = (0, _react.useRef)();
72
- var handleCurrentForm = function handleCurrentForm(form) {
73
- setCurrentForm(form);
80
+ var handleCurrentForm = function handleCurrentForm(formIndex) {
81
+ setCurrentForm(formIndex);
82
+ if (onFormChange) {
83
+ onFormChange(formIndex);
84
+ }
74
85
  };
75
- var sideNavItems = [{
76
- label: 'Topic Name'
77
- }, {
78
- label: 'Location'
79
- }, {
80
- label: 'Partitions'
81
- }, {
82
- label: 'Message retention'
83
- }];
84
- var influencer = /*#__PURE__*/_react.default.createElement("div", {
85
- className: "tearsheet-stories__dummy-influencer-block"
86
- }, /*#__PURE__*/_react.default.createElement(_react2.SideNav, {
87
- "aria-label": "Side navigation",
88
- className: "".concat(blockClass, "__side-nav"),
89
- expanded: true,
90
- isFixedNav: false
91
- }, /*#__PURE__*/_react.default.createElement(_react2.SideNavItems, null, sideNavItems.map(function (item, index) {
92
- return /*#__PURE__*/_react.default.createElement(_react2.SideNavMenuItem, {
93
- key: index,
94
- onClick: function onClick() {
95
- return handleCurrentForm(index);
96
- },
97
- isActive: currentForm === index
98
- }, item.label);
99
- }))));
86
+ function defaultInfluencer() {
87
+ return /*#__PURE__*/_react.default.createElement("div", {
88
+ className: "".concat(blockClass, "__side-nav-wrapper")
89
+ }, /*#__PURE__*/_react.default.createElement(_react2.SideNav, {
90
+ "aria-label": sideNavAriaLabel,
91
+ className: "".concat(blockClass, "__side-nav"),
92
+ expanded: true,
93
+ isFixedNav: false
94
+ }, /*#__PURE__*/_react.default.createElement(_react2.SideNavItems, null, formTitles.map(function (title, index) {
95
+ return /*#__PURE__*/_react.default.createElement(_react2.SideNavMenuItem, {
96
+ key: index,
97
+ onClick: function onClick() {
98
+ return handleCurrentForm(index);
99
+ },
100
+ isActive: currentForm === index
101
+ }, title);
102
+ }))));
103
+ }
100
104
  return /*#__PURE__*/_react.default.createElement(_TearsheetShell.TearsheetShell, (0, _extends2.default)({}, rest, (0, _devtools.getDevtoolsProps)(componentName), {
101
105
  actions: [{
102
106
  label: submitButtonText,
@@ -110,7 +114,7 @@ var EditTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
110
114
  className: (0, _classnames.default)(blockClass, className),
111
115
  description: description,
112
116
  hasCloseIcon: false,
113
- influencer: influencer,
117
+ influencer: defaultInfluencer(),
114
118
  influencerPosition: "left",
115
119
  influencerWidth: influencerWidth,
116
120
  label: label,
@@ -126,7 +130,8 @@ var EditTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
126
130
  role: "main"
127
131
  }, /*#__PURE__*/_react.default.createElement(_react2.Form, null, /*#__PURE__*/_react.default.createElement(FormContext.Provider, {
128
132
  value: {
129
- currentForm: currentForm
133
+ currentForm: currentForm,
134
+ setFormTitles: setFormTitles
130
135
  }
131
136
  }, _react.default.Children.map(children, function (child, index) {
132
137
  return /*#__PURE__*/_react.default.createElement(FormNumberContext.Provider, {
@@ -162,12 +167,6 @@ EditTearsheet.propTypes = {
162
167
  * A description of the flow, displayed in the header area of the tearsheet.
163
168
  */
164
169
  description: _propTypes.default.node,
165
- /**
166
- * The content for the influencer section of the tearsheet, displayed
167
- * alongside the main content. This is typically a menu, or filter, or
168
- * progress indicator, or similar.
169
- */
170
- influencer: _propTypes.default.element,
171
170
  /**
172
171
  * Used to set the size of the influencer
173
172
  */
@@ -184,6 +183,12 @@ EditTearsheet.propTypes = {
184
183
  * Returning `false` here prevents the modal from closing.
185
184
  */
186
185
  onClose: _propTypes.default.func,
186
+ /**
187
+ * An optional handler that is called when a user changes forms via clicking
188
+ * an influencer nav item.
189
+ * Returns the index of the selected form.
190
+ */
191
+ onFormChange: _propTypes.default.func,
187
192
  /**
188
193
  * Specifies whether the tearsheet is currently open.
189
194
  */
@@ -192,6 +197,10 @@ EditTearsheet.propTypes = {
192
197
  * Specifies whether the tearsheet is currently open.
193
198
  */
194
199
  open: _propTypes.default.bool,
200
+ /**
201
+ * Specifies the aria label for the SideNav from Carbon UIShell
202
+ */
203
+ sideNavAriaLabel: _propTypes.default.string,
195
204
  /**
196
205
  * The submit button text
197
206
  */
@@ -16,6 +16,7 @@ var _react2 = require("@carbon/react");
16
16
  var _EditTearsheet = require("./EditTearsheet");
17
17
  var _settings = require("../../settings");
18
18
  var _pconsole = _interopRequireDefault(require("../../global/js/utils/pconsole"));
19
+ var _useRetrieveFormTitles = require("../../global/js/hooks/useRetrieveFormTitles");
19
20
  var _excluded = ["children", "className", "description", "fieldsetLegendText", "hasFieldset", "subtitle", "title"];
20
21
  /**
21
22
  * Copyright IBM Corp. 2022, 2022
@@ -45,6 +46,11 @@ var EditTearsheetForm = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref)
45
46
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
46
47
  var formContext = (0, _react.useContext)(_EditTearsheet.FormContext);
47
48
  var formNumber = (0, _react.useContext)(_EditTearsheet.FormNumberContext);
49
+ (0, _useRetrieveFormTitles.useRetrieveFormTitles)({
50
+ formContext: formContext,
51
+ formNumber: formNumber,
52
+ title: title
53
+ });
48
54
  return formContext ? /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
49
55
  className: (0, _classnames.default)(blockClass, className, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__form--hidden-form"), formNumber !== (formContext === null || formContext === void 0 ? void 0 : formContext.currentForm)), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__form--visible-form"), formNumber === (formContext === null || formContext === void 0 ? void 0 : formContext.currentForm)), _cx)),
50
56
  ref: ref
@@ -13,6 +13,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
13
13
  var _settings = require("../../../settings");
14
14
  var _EditTearsheet = require("../EditTearsheet");
15
15
  var _EditTearsheetForm = require("../EditTearsheetForm");
16
+ var _addonActions = require("@storybook/addon-actions");
16
17
  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); }
17
18
  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; }
18
19
  /* eslint-disable react/prop-types */
@@ -82,6 +83,9 @@ var MultiFormEditTearsheet = function MultiFormEditTearsheet(_ref) {
82
83
  var handleModalClick = function handleModalClick() {
83
84
  setOpen(!open);
84
85
  };
86
+ var handleFormChange = function handleFormChange() {
87
+ (0, _addonActions.action)('handleFormChange')();
88
+ };
85
89
  return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("style", null, ".".concat(blockClass, " { opacity: 0 }"), ";"), /*#__PURE__*/_react.default.createElement(_react2.Button, {
86
90
  onClick: handleModalClick
87
91
  }, open ? 'Close EditTearsheet' : 'Open EditTearsheet'), /*#__PURE__*/_react.default.createElement(_EditTearsheet.EditTearsheet, {
@@ -94,7 +98,8 @@ var MultiFormEditTearsheet = function MultiFormEditTearsheet(_ref) {
94
98
  title: title,
95
99
  open: open,
96
100
  onHandleModalClick: handleModalClick,
97
- onClose: clearCreateData
101
+ onClose: clearCreateData,
102
+ onFormChange: handleFormChange
98
103
  }, /*#__PURE__*/_react.default.createElement(_EditTearsheetForm.EditTearsheetForm, {
99
104
  title: "Topic name",
100
105
  fieldsetLegendText: "Topic information",
@@ -182,9 +182,9 @@ Tearsheet.propTypes = _objectSpread({
182
182
  */
183
183
  open: _propTypes.default.bool,
184
184
  /**
185
- * The DOM node the tearsheet should be rendered within. Defaults to document.body.
185
+ * The DOM element that the tearsheet should be rendered within. Defaults to document.body.
186
186
  */
187
- portalTarget: _propTypes.default.node,
187
+ portalTarget: _propTypes.default.instanceOf(Element),
188
188
  /**
189
189
  * Specify a CSS selector that matches the DOM element that should be focused when the Modal opens
190
190
  */
@@ -148,9 +148,9 @@ TearsheetNarrow.propTypes = _objectSpread({
148
148
  */
149
149
  open: _propTypes.default.bool,
150
150
  /**
151
- * The DOM node the tearsheet should be rendered within. Defaults to document.body.
151
+ * The DOM element that the tearsheet should be rendered within. Defaults to document.body.
152
152
  */
153
- portalTarget: _propTypes.default.node,
153
+ portalTarget: _propTypes.default.instanceOf(Element),
154
154
  /**
155
155
  * The main title of the tearsheet, displayed in the header area.
156
156
  */
@@ -394,9 +394,9 @@ TearsheetShell.propTypes = _objectSpread({
394
394
  */
395
395
  open: _propTypes.default.bool,
396
396
  /**
397
- * The DOM node the tearsheet should be rendered within. Defaults to document.body.
397
+ * The DOM element that the tearsheet should be rendered within. Defaults to document.body.
398
398
  */
399
- portalTarget: _propTypes.default.node,
399
+ portalTarget: _propTypes.default.instanceOf(Element),
400
400
  /**
401
401
  * Specifies the width of the tearsheet, 'narrow' or 'wide'.
402
402
  */
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useRetrieveFormTitles = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _react = require("react");
10
+ var useRetrieveFormTitles = function useRetrieveFormTitles(_ref) {
11
+ var formContext = _ref.formContext,
12
+ formNumber = _ref.formNumber,
13
+ title = _ref.title;
14
+ (0, _react.useEffect)(function () {
15
+ if (formContext) {
16
+ formContext.setFormTitles(function (prev) {
17
+ var prevTitle = prev[formNumber];
18
+ if (prevTitle !== title) {
19
+ var clone = (0, _toConsumableArray2.default)(prev);
20
+ clone[formNumber] = title;
21
+ return clone;
22
+ }
23
+ return prev;
24
+ });
25
+ }
26
+ }, [title, formContext, formNumber]);
27
+ };
28
+ exports.useRetrieveFormTitles = useRetrieveFormTitles;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "2.11.0",
4
+ "version": "2.11.1",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -57,9 +57,6 @@
57
57
  "devDependencies": {
58
58
  "@babel/cli": "^7.22.10",
59
59
  "@babel/core": "^7.22.10",
60
- "@dnd-kit/core": "^6.0.8",
61
- "@dnd-kit/sortable": "^7.0.2",
62
- "@dnd-kit/utilities": "^3.2.1",
63
60
  "babel-preset-ibm-cloud-cognitive": "^0.14.39",
64
61
  "chalk": "^4.1.2",
65
62
  "change-case": "^4.1.2",
@@ -80,6 +77,9 @@
80
77
  "dependencies": {
81
78
  "@babel/runtime": "^7.22.10",
82
79
  "@carbon/telemetry": "^0.1.0",
80
+ "@dnd-kit/core": "^6.0.8",
81
+ "@dnd-kit/sortable": "^7.0.2",
82
+ "@dnd-kit/utilities": "^3.2.1",
83
83
  "framer-motion": "^6.5.1 < 7",
84
84
  "immutability-helper": "^3.1.1",
85
85
  "lodash": "^4.17.21",
@@ -96,5 +96,5 @@
96
96
  "react": "^16.8.6 || ^17.0.1 || ^18.2.0",
97
97
  "react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0"
98
98
  },
99
- "gitHead": "512f13bb07b7b8c7bdbd1ea97d2bc1e86de3fabf"
99
+ "gitHead": "7764b5a83d2878931c637c3a76e04c857f0aeb19"
100
100
  }
@@ -31,6 +31,7 @@ $block-class: #{c4p-settings.$pkg-prefix}--datagrid;
31
31
  .#{$block-class}__datagridWrap {
32
32
  display: block;
33
33
  width: 100%;
34
+
34
35
  :global(.#{c4p-settings.$carbon-prefix}--checkbox) {
35
36
  display: none;
36
37
  }
@@ -70,3 +71,11 @@ $block-class: #{c4p-settings.$pkg-prefix}--datagrid;
70
71
  }
71
72
  }
72
73
  }
74
+
75
+ // firefox fix for issue mentioned in 3442
76
+ .#{$block-class}
77
+ .#{c4p-settings.$carbon-prefix}--menu-button__trigger:not(
78
+ .#{c4p-settings.$carbon-prefix}--btn--ghost
79
+ ) {
80
+ min-width: auto;
81
+ }
@@ -6,6 +6,7 @@
6
6
  //
7
7
 
8
8
  @use '@carbon/styles/scss/theme' as *;
9
+ @use '@carbon/layout/scss/convert' as *;
9
10
  @use '@carbon/styles/scss/spacing' as *;
10
11
  @use '@carbon/react/scss/components/button/tokens' as *;
11
12
  @use '../../../global/styles/project-settings' as c4p-settings;
@@ -9,6 +9,7 @@
9
9
  // stylelint-disable carbon/layout-token-use
10
10
 
11
11
  @use '@carbon/styles/scss/theme' as *;
12
+ @use '@carbon/layout/scss/convert' as *;
12
13
  @use '@carbon/styles/scss/spacing' as *;
13
14
  @use '@carbon/styles/scss/type' as *;
14
15
  @use '@carbon/layout' as *;
@@ -8,6 +8,7 @@
8
8
 
9
9
  @use '../variables' as *;
10
10
  @use '@carbon/styles/scss/theme' as *;
11
+ @use '@carbon/layout/scss/convert' as *;
11
12
  @use '@carbon/styles/scss/spacing' as *;
12
13
  @use '@carbon/styles/scss/type' as *;
13
14
  @use '../../../../global/styles/project-settings' as c4p-settings;
@@ -5,6 +5,7 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
  @use '../../global/styles/project-settings' as *;
8
+ @use '@carbon/layout/scss/convert' as *;
8
9
  @use '@carbon/styles/scss/spacing' as *;
9
10
  @use '@carbon/styles/scss/theme' as *;
10
11