@carbon/ibm-products 1.54.2 → 1.55.0

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 (108) hide show
  1. package/css/index-full-carbon.css +1312 -108
  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 +1200 -1
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +2 -2
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +1310 -106
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +3 -3
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/APIKeyModal/APIKeyModal.js +25 -21
  14. package/es/components/ActionBar/ActionBar.js +5 -5
  15. package/es/components/Carousel/Carousel.js +237 -0
  16. package/es/components/Carousel/CarouselItem.js +66 -0
  17. package/es/components/Carousel/index.js +9 -0
  18. package/es/components/Carousel/utils.js +98 -0
  19. package/es/components/CreateFullPage/CreateFullPage.js +4 -2
  20. package/es/components/CreateModal/CreateModal.js +2 -1
  21. package/es/components/CreateSidePanel/CreateSidePanel.js +6 -2
  22. package/es/components/CreateTearsheet/CreateTearsheet.js +3 -1
  23. package/es/components/CreateTearsheetNarrow/CreateTearsheetNarrow.js +6 -2
  24. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +1 -1
  25. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +3 -2
  26. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +2 -1
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.js +13 -0
  28. package/es/components/Datagrid/index.js +2 -1
  29. package/es/components/Datagrid/useActionsColumn.js +13 -7
  30. package/es/components/Datagrid/useOnRowClick.js +20 -4
  31. package/es/components/Datagrid/useSortableColumns.js +27 -3
  32. package/es/components/Datagrid/utils/DatagridActions.js +6 -6
  33. package/es/components/Datagrid/utils/getArgTypes.js +4 -0
  34. package/es/components/EditSidePanel/EditSidePanel.js +7 -3
  35. package/es/components/FilterSummary/FilterSummary.js +7 -3
  36. package/es/components/Guidebanner/Guidebanner.js +229 -0
  37. package/es/components/Guidebanner/GuidebannerElement.js +71 -0
  38. package/es/components/Guidebanner/GuidebannerElementButton.js +76 -0
  39. package/es/components/Guidebanner/GuidebannerElementLink.js +56 -0
  40. package/es/components/Guidebanner/index.js +11 -0
  41. package/es/components/InlineTip/InlineTip.js +228 -0
  42. package/es/components/InlineTip/InlineTipButton.js +89 -0
  43. package/es/components/InlineTip/InlineTipLink.js +89 -0
  44. package/es/components/InlineTip/index.js +10 -0
  45. package/es/components/InlineTip/utils.js +36 -0
  46. package/es/components/SteppedAnimatedMedia/SteppedAnimatedMedia.js +164 -0
  47. package/es/components/SteppedAnimatedMedia/assets/index.js +4 -0
  48. package/es/components/SteppedAnimatedMedia/index.js +8 -0
  49. package/es/components/Tearsheet/TearsheetShell.js +2 -1
  50. package/es/components/index.js +4 -2
  51. package/es/global/js/hooks/useResizeObserver.js +1 -1
  52. package/es/global/js/package-settings.js +2 -0
  53. package/lib/components/APIKeyModal/APIKeyModal.js +25 -21
  54. package/lib/components/ActionBar/ActionBar.js +5 -5
  55. package/lib/components/Carousel/Carousel.js +238 -0
  56. package/lib/components/Carousel/CarouselItem.js +66 -0
  57. package/lib/components/Carousel/index.js +19 -0
  58. package/lib/components/Carousel/utils.js +108 -0
  59. package/lib/components/CreateFullPage/CreateFullPage.js +4 -2
  60. package/lib/components/CreateModal/CreateModal.js +2 -1
  61. package/lib/components/CreateSidePanel/CreateSidePanel.js +6 -2
  62. package/lib/components/CreateTearsheet/CreateTearsheet.js +3 -1
  63. package/lib/components/CreateTearsheetNarrow/CreateTearsheetNarrow.js +6 -2
  64. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +1 -1
  65. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +3 -2
  66. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +8 -1
  67. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilterContext.js +20 -0
  68. package/lib/components/Datagrid/index.js +8 -1
  69. package/lib/components/Datagrid/useActionsColumn.js +13 -7
  70. package/lib/components/Datagrid/useOnRowClick.js +20 -4
  71. package/lib/components/Datagrid/useSortableColumns.js +27 -3
  72. package/lib/components/Datagrid/utils/DatagridActions.js +6 -6
  73. package/lib/components/Datagrid/utils/getArgTypes.js +4 -0
  74. package/lib/components/EditSidePanel/EditSidePanel.js +7 -3
  75. package/lib/components/FilterSummary/FilterSummary.js +7 -3
  76. package/lib/components/Guidebanner/Guidebanner.js +229 -0
  77. package/lib/components/Guidebanner/GuidebannerElement.js +67 -0
  78. package/lib/components/Guidebanner/GuidebannerElementButton.js +71 -0
  79. package/lib/components/Guidebanner/GuidebannerElementLink.js +52 -0
  80. package/lib/components/Guidebanner/index.js +33 -0
  81. package/lib/components/InlineTip/InlineTip.js +228 -0
  82. package/lib/components/InlineTip/InlineTipButton.js +86 -0
  83. package/lib/components/InlineTip/InlineTipLink.js +86 -0
  84. package/lib/components/InlineTip/index.js +26 -0
  85. package/lib/components/InlineTip/utils.js +44 -0
  86. package/lib/components/SteppedAnimatedMedia/SteppedAnimatedMedia.js +165 -0
  87. package/lib/components/SteppedAnimatedMedia/assets/index.js +12 -0
  88. package/lib/components/SteppedAnimatedMedia/index.js +12 -0
  89. package/lib/components/Tearsheet/TearsheetShell.js +2 -1
  90. package/lib/components/index.js +21 -1
  91. package/lib/global/js/hooks/useResizeObserver.js +1 -1
  92. package/lib/global/js/package-settings.js +2 -0
  93. package/package.json +5 -5
  94. package/scss/components/Carousel/_carousel.scss +80 -0
  95. package/scss/components/Carousel/_index.scss +8 -0
  96. package/scss/components/Carousel/_storybook-styles.scss +10 -0
  97. package/scss/components/Datagrid/_storybook-styles.scss +5 -0
  98. package/scss/components/Datagrid/styles/_datagrid.scss +1 -1
  99. package/scss/components/Guidebanner/_guidebanner.scss +257 -0
  100. package/scss/components/Guidebanner/_index.scss +8 -0
  101. package/scss/components/Guidebanner/_storybook-styles.scss +20 -0
  102. package/scss/components/InlineTip/_index.scss +8 -0
  103. package/scss/components/InlineTip/_inline-tip.scss +231 -0
  104. package/scss/components/InlineTip/_storybook-styles.scss +21 -0
  105. package/scss/components/SteppedAnimatedMedia/_index.scss +8 -0
  106. package/scss/components/SteppedAnimatedMedia/_stepped-animated-media.scss +34 -0
  107. package/scss/components/SteppedAnimatedMedia/_storybook-styles.scss +12 -0
  108. package/scss/components/_index.scss +4 -0
@@ -14,6 +14,7 @@ var _carbonComponentsReact = require("carbon-components-react");
14
14
  var _devtools = require("../../global/js/utils/devtools");
15
15
  var _settings = require("../../settings");
16
16
  var _TearsheetNarrow = require("../Tearsheet/TearsheetNarrow");
17
+ var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
17
18
  var _excluded = ["children", "className", "description", "disableSubmit", "formDescription", "formTitle", "label", "open", "onRequestClose", "onRequestSubmit", "primaryButtonText", "secondaryButtonText", "selectorPrimaryFocus", "title", "verticalPosition"];
18
19
  // The block part of our conventional BEM class names (blockClass__E--M).
19
20
  var blockClass = "".concat(_settings.pkg.prefix, "--create-tearsheet-narrow");
@@ -53,6 +54,7 @@ var CreateTearsheetNarrow = /*#__PURE__*/_react.default.forwardRef(function (_re
53
54
  kind: 'secondary'
54
55
  }];
55
56
  var formTextClass = "".concat(blockClass, "__content-text");
57
+ var formTitleId = (0, _uuidv.default)();
56
58
  return /*#__PURE__*/_react.default.createElement(_TearsheetNarrow.TearsheetNarrow, (0, _extends2.default)({}, rest, {
57
59
  title: title,
58
60
  description: description,
@@ -69,11 +71,13 @@ var CreateTearsheetNarrow = /*#__PURE__*/_react.default.forwardRef(function (_re
69
71
  verticalPosition: verticalPosition,
70
72
  role: "presentation"
71
73
  }, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement("h3", {
72
- className: (0, _classnames.default)("".concat(blockClass, "__form-title-text"), formTextClass)
74
+ className: (0, _classnames.default)("".concat(blockClass, "__form-title-text"), formTextClass),
75
+ id: formTitleId
73
76
  }, formTitle), /*#__PURE__*/_react.default.createElement("p", {
74
77
  className: (0, _classnames.default)("".concat(blockClass, "__form-description-text"), formTextClass)
75
78
  }, formDescription), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, {
76
- className: "".concat(blockClass, "__form")
79
+ className: "".concat(blockClass, "__form"),
80
+ "aria-labelledby": formTitleId
77
81
  }, children));
78
82
  });
79
83
 
@@ -42,7 +42,7 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
42
42
  return /*#__PURE__*/_react.default.createElement(TableHeader, (0, _extends2.default)({}, header.getHeaderProps({
43
43
  role: false
44
44
  }), {
45
- className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__resizableColumn"), header.getResizerProps), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isResizing"), header.isResizing), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__sortableColumn"), header.canSort), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isSorted"), header.isSorted), _cx), header.getHeaderProps().className),
45
+ className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__resizableColumn"), header.getResizerProps), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isResizing"), header.isResizing), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isSorted"), header.isSorted), _cx), header.getHeaderProps().className),
46
46
  key: header.id
47
47
  }), header.render('Header'), header.getResizerProps && /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, header.getResizerProps(), {
48
48
  className: "".concat(blockClass, "__resizer")
@@ -27,6 +27,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
27
27
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
28
28
  var TableToolbar = _carbonComponentsReact.DataTable.TableToolbar;
29
29
  var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridState, width, ref) {
30
+ var _Object$keys;
30
31
  var _useState = (0, _react.useState)(false),
31
32
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
32
33
  displayAllInMenu = _useState2[0],
@@ -39,11 +40,11 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
39
40
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
40
41
  receivedInitialWidth = _useState6[0],
41
42
  setReceivedInitialWidth = _useState6[1];
42
- var selectedFlatRows = datagridState.selectedFlatRows,
43
+ var selectedRowIds = datagridState.state.selectedRowIds,
43
44
  toggleAllRowsSelected = datagridState.toggleAllRowsSelected,
44
45
  toolbarBatchActions = datagridState.toolbarBatchActions,
45
46
  setGlobalFilter = datagridState.setGlobalFilter;
46
- var totalSelected = selectedFlatRows && selectedFlatRows.length;
47
+ var totalSelected = (_Object$keys = Object.keys(selectedRowIds || {})) === null || _Object$keys === void 0 ? void 0 : _Object$keys.length;
47
48
 
48
49
  // Get initial width of batch actions container,
49
50
  // used to measure when all items are put inside
@@ -4,6 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ Object.defineProperty(exports, "useFilterContext", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _useFilterContext.default;
11
+ }
12
+ });
7
13
  Object.defineProperty(exports, "useFilters", {
8
14
  enumerable: true,
9
15
  get: function get() {
@@ -24,4 +30,5 @@ Object.defineProperty(exports, "useSubscribeToEventEmitter", {
24
30
  });
25
31
  var _useSubscribeToEventEmitter = _interopRequireDefault(require("./useSubscribeToEventEmitter"));
26
32
  var _useShouldDisableButtons = _interopRequireDefault(require("./useShouldDisableButtons"));
27
- var _useFilters = _interopRequireDefault(require("./useFilters"));
33
+ var _useFilters = _interopRequireDefault(require("./useFilters"));
34
+ var _useFilterContext = _interopRequireDefault(require("./useFilterContext"));
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _FilterProvider = require("../FilterProvider");
8
+ var _react = require("react");
9
+ var useFilterContext = function useFilterContext() {
10
+ // get the context
11
+ var context = (0, _react.useContext)(_FilterProvider.FilterContext);
12
+
13
+ // if `undefined`, throw an error
14
+ if (context === undefined) {
15
+ throw new Error('useFilterContext was used outside of its Provider');
16
+ }
17
+ return context;
18
+ };
19
+ var _default = useFilterContext;
20
+ exports.default = _default;
@@ -70,6 +70,12 @@ Object.defineProperty(exports, "useExpandedRow", {
70
70
  return _useExpandedRow.default;
71
71
  }
72
72
  });
73
+ Object.defineProperty(exports, "useFilterContext", {
74
+ enumerable: true,
75
+ get: function get() {
76
+ return _hooks.useFilterContext;
77
+ }
78
+ });
73
79
  Object.defineProperty(exports, "useFiltering", {
74
80
  enumerable: true,
75
81
  get: function get() {
@@ -150,4 +156,5 @@ var _useColumnOrder = _interopRequireDefault(require("./useColumnOrder"));
150
156
  var _useInlineEdit = _interopRequireDefault(require("./useInlineEdit"));
151
157
  var _useEditableCell = _interopRequireDefault(require("./useEditableCell"));
152
158
  var _useFiltering = _interopRequireDefault(require("./useFiltering"));
153
- var _getAutoSizedColumnWidth = require("./utils/getAutoSizedColumnWidth");
159
+ var _getAutoSizedColumnWidth = require("./utils/getAutoSizedColumnWidth");
160
+ var _hooks = require("./Datagrid/addons/Filtering/hooks");
@@ -27,7 +27,16 @@ var useActionsColumn = function useActionsColumn(hooks) {
27
27
  var useAttachActionsOnInstance = function useAttachActionsOnInstance(instance) {
28
28
  var rowActions = instance.rowActions,
29
29
  isFetching = instance.isFetching,
30
- selectedFlatRows = instance.selectedFlatRows;
30
+ selectedRowIds = instance.state.selectedRowIds;
31
+ var getDisabledState = function getDisabledState(rowIndex) {
32
+ var selectedRowIndexes = Object.keys(selectedRowIds).map(function (n) {
33
+ return Number(n);
34
+ });
35
+ if (selectedRowIndexes.includes(rowIndex)) {
36
+ return true;
37
+ }
38
+ return false;
39
+ };
31
40
  if (rowActions && Array.isArray(rowActions)) {
32
41
  var addActionsMenu = function addActionsMenu(props, cellData) {
33
42
  var cell = cellData.cell;
@@ -56,11 +65,8 @@ var useActionsColumn = function useActionsColumn(hooks) {
56
65
  if (hidden) {
57
66
  return null;
58
67
  }
59
- var selectedRowId = selectedFlatRows === null || selectedFlatRows === void 0 ? void 0 : selectedFlatRows.filter(function (item) {
60
- return item.id === row.id ? item.id : null;
61
- });
62
68
  return /*#__PURE__*/_react.default.createElement("div", {
63
- className: (0, _classnames.default)("".concat(blockClass, "__actions-column-button"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__disabled-row-action-button"), selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length)),
69
+ className: (0, _classnames.default)("".concat(blockClass, "__actions-column-button"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__disabled-row-action-button"), getDisabledState(row.index))),
64
70
  key: "".concat(itemText, "__").concat(index)
65
71
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, (0, _extends2.default)({}, rest, {
66
72
  renderIcon: icon,
@@ -68,9 +74,9 @@ var useActionsColumn = function useActionsColumn(hooks) {
68
74
  light: true,
69
75
  iconDescription: itemText,
70
76
  kind: "ghost",
71
- className: (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(blockClass, "__disabled-row-action"), selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length)),
77
+ className: (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(blockClass, "__disabled-row-action"), getDisabledState(row.index))),
72
78
  onClick: function onClick(e) {
73
- if (selectedFlatRows && selectedFlatRows.length && selectedRowId && selectedRowId.length) {
79
+ if (getDisabledState(row.index)) {
74
80
  // Row actions should be disabled if row is selected and batchActions toolbar is active
75
81
  return;
76
82
  }
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _settings = require("../../settings");
7
8
  /*
8
9
  * Licensed Materials - Property of IBM
9
10
  * 5724-Q36
@@ -21,13 +22,28 @@ var useOnRowClick = function useOnRowClick(hooks) {
21
22
  instance = datagridState.instance;
22
23
  var id = row.id,
23
24
  toggleRowSelected = row.toggleRowSelected;
25
+ var withSelectRows = instance.withSelectRows,
26
+ tableId = instance.tableId;
24
27
  var onClick = function onClick(event) {
25
28
  if (!isFetching && onRowClick) {
26
29
  onRowClick(row, event);
27
- instance.selectedFlatRows && instance.selectedFlatRows.map(function (toggleRow) {
28
- return toggleRow.toggleRowSelected(false);
29
- });
30
- toggleRowSelected(id, true);
30
+ // We do not want to change the list of selected rows if using the useSelectedRows hook, otherwise clicking on an entire row will mark the row as checked
31
+
32
+ // Remove selected class from all other clickable rows as only one clickable row can be selected at a time
33
+ var clickableSelectedRows = document.querySelectorAll("#".concat(tableId, ".").concat(_settings.pkg.prefix, "--datagrid .").concat(_settings.carbon.prefix, "--data-table--selected:not(.").concat(_settings.pkg.prefix, "--datagrid__active-row)"));
34
+ if (clickableSelectedRows.length) {
35
+ Array.from(clickableSelectedRows).forEach(function (row) {
36
+ row.classList.remove("".concat(_settings.carbon.prefix, "--data-table--selected"));
37
+ });
38
+ }
39
+ var closestRow = event.target.closest(".".concat(_settings.pkg.prefix, "--datagrid__carbon-row"));
40
+ closestRow.classList.add("".concat(_settings.carbon.prefix, "--data-table--selected"));
41
+ if (!withSelectRows) {
42
+ instance.selectedFlatRows && instance.selectedFlatRows.map(function (toggleRow) {
43
+ return toggleRow.toggleRowSelected(false);
44
+ });
45
+ toggleRowSelected(id, true);
46
+ }
31
47
  }
32
48
  };
33
49
  var onKeyDown = function onKeyDown(event) {
@@ -20,11 +20,30 @@ var ordering = {
20
20
  DESC: 'DESC',
21
21
  NONE: 'NONE'
22
22
  };
23
+ var getAriaSortValue = function getAriaSortValue(col, _ref) {
24
+ var ascendingSortableLabelText = _ref.ascendingSortableLabelText,
25
+ descendingSortableLabelText = _ref.descendingSortableLabelText,
26
+ defaultSortableLabelText = _ref.defaultSortableLabelText;
27
+ var isSorted = col.isSorted,
28
+ isSortedDesc = col.isSortedDesc;
29
+ if (!isSorted) {
30
+ return defaultSortableLabelText || 'none';
31
+ }
32
+ if (isSorted && !isSortedDesc) {
33
+ return ascendingSortableLabelText || 'ascending';
34
+ }
35
+ if (isSorted && isSortedDesc) {
36
+ return descendingSortableLabelText || 'descending';
37
+ }
38
+ };
23
39
  var useSortableColumns = function useSortableColumns(hooks) {
24
- var sortableVisibleColumns = function sortableVisibleColumns(visibleColumns, _ref) {
40
+ var sortableVisibleColumns = function sortableVisibleColumns(visibleColumns, _ref2) {
25
41
  var _instance$customizeCo;
26
- var instance = _ref.instance;
27
- var onSort = instance.onSort;
42
+ var instance = _ref2.instance;
43
+ var onSort = instance.onSort,
44
+ ascendingSortableLabelText = instance.ascendingSortableLabelText,
45
+ descendingSortableLabelText = instance.descendingSortableLabelText,
46
+ defaultSortableLabelText = instance.defaultSortableLabelText;
28
47
  var onSortClick = function onSortClick(column) {
29
48
  var key = column.id;
30
49
  var sortDesc = column.isSortedDesc;
@@ -69,6 +88,11 @@ var useSortableColumns = function useSortableColumns(hooks) {
69
88
  var Header = function Header(headerProp) {
70
89
  var _cx;
71
90
  return column.disableSortBy === true ? column.Header : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
91
+ "aria-sort": getAriaSortValue(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column, {
92
+ ascendingSortableLabelText: ascendingSortableLabelText,
93
+ descendingSortableLabelText: descendingSortableLabelText,
94
+ defaultSortableLabelText: defaultSortableLabelText
95
+ }),
72
96
  onClick: function onClick() {
73
97
  return onSortClick(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column);
74
98
  },
@@ -7,13 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.DatagridActions = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _react = _interopRequireWildcard(require("react"));
11
- var _carbonComponentsReact = require("carbon-components-react");
12
10
  var _iconsReact = require("@carbon/icons-react");
11
+ var _carbonComponentsReact = require("carbon-components-react");
12
+ var _ButtonMenu = require("../../ButtonMenu");
13
+ var _react = _interopRequireWildcard(require("react"));
13
14
  var _addonActions = require("@storybook/addon-actions");
14
15
  var _settings = require("../../../settings");
15
- var _ButtonMenu = require("../../ButtonMenu");
16
- var _Filtering = require("../Datagrid/addons/Filtering");
16
+ var _hooks = require("../Datagrid/addons/Filtering/hooks");
17
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); }
18
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; }
19
19
  /**
@@ -25,8 +25,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
25
 
26
26
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
27
27
  var DatagridActions = function DatagridActions(datagridState) {
28
- var _useContext = (0, _react.useContext)(_Filtering.FilterContext),
29
- setPanelOpen = _useContext.setPanelOpen;
28
+ var _useFilterContext = (0, _hooks.useFilterContext)(),
29
+ setPanelOpen = _useFilterContext.setPanelOpen;
30
30
  var selectedFlatRows = datagridState.selectedFlatRows,
31
31
  setGlobalFilter = datagridState.setGlobalFilter,
32
32
  CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
@@ -56,6 +56,10 @@ var ARG_TYPES = {
56
56
  control: 'select',
57
57
  options: ['error', 'noData']
58
58
  },
59
+ isFetching: {
60
+ control: 'radio',
61
+ options: [true, false]
62
+ },
59
63
  useDenseHeader: {
60
64
  control: {
61
65
  type: 'radio'
@@ -16,6 +16,7 @@ var _settings = require("../../settings");
16
16
  var _carbonComponentsReact = require("carbon-components-react");
17
17
  var _SidePanel = require("../SidePanel");
18
18
  require("../../global/js/utils/props-helper");
19
+ var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
19
20
  var _excluded = ["children", "className", "disableSubmit", "formTitle", "formDescription", "onRequestClose", "onRequestSubmit", "open", "placement", "primaryButtonText", "secondaryButtonText", "selectorPrimaryFocus", "selectorPageContent", "size", "slideIn", "subtitle", "title"];
20
21
  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; }
21
22
  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; }
@@ -69,6 +70,7 @@ var EditSidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
69
70
  onClick: onRequestClose,
70
71
  kind: 'secondary'
71
72
  }];
73
+ var formTitleId = (0, _uuidv.default)();
72
74
  return /*#__PURE__*/_react.default.createElement(_SidePanel.SidePanel, (0, _extends2.default)({}, rest, _objectSpread({
73
75
  open: open,
74
76
  ref: ref,
@@ -86,11 +88,13 @@ var EditSidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
86
88
  preventCloseOnClickOutside: true,
87
89
  actions: actions
88
90
  }), formTitle && /*#__PURE__*/_react.default.createElement("h3", {
89
- className: "".concat(blockClass, "__form-title-text ").concat(blockClass, "__content-text")
91
+ className: "".concat(blockClass, "__form-title-text ").concat(blockClass, "__content-text"),
92
+ id: formTitleId
90
93
  }, formTitle), formDescription && /*#__PURE__*/_react.default.createElement("p", {
91
94
  className: "".concat(blockClass, "__form-description-text ").concat(blockClass, "__content-text")
92
95
  }, formDescription), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Form, {
93
- className: "".concat(blockClass, "__form")
96
+ className: "".concat(blockClass, "__form"),
97
+ "aria-labelledby": formTitleId
94
98
  }, children));
95
99
  });
96
100
 
@@ -126,7 +130,7 @@ EditSidePanel.propTypes = {
126
130
  /**
127
131
  * Specifies a required field that provides a title for a form
128
132
  */
129
- formTitle: _propTypes.default.node,
133
+ formTitle: _propTypes.default.node.isRequired,
130
134
  /**
131
135
  * Specifies an optional handler which is called when the CreateSidePanel
132
136
  * is closed.
@@ -27,13 +27,16 @@ var FilterSummary = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
27
27
  _ref$clearFilters = _ref.clearFilters,
28
28
  clearFilters = _ref$clearFilters === void 0 ? function () {} : _ref$clearFilters,
29
29
  _ref$filters = _ref.filters,
30
- filters = _ref$filters === void 0 ? [] : _ref$filters;
30
+ filters = _ref$filters === void 0 ? [] : _ref$filters,
31
+ _ref$renderLabel = _ref.renderLabel,
32
+ renderLabel = _ref$renderLabel === void 0 ? null : _ref$renderLabel;
31
33
  var tagFilters = filters.map(function (_ref2) {
34
+ var _renderLabel;
32
35
  var key = _ref2.key,
33
36
  value = _ref2.value;
34
37
  return {
35
38
  type: 'gray',
36
- label: "".concat(key, ": ").concat(value)
39
+ label: (_renderLabel = renderLabel === null || renderLabel === void 0 ? void 0 : renderLabel(key, value)) !== null && _renderLabel !== void 0 ? _renderLabel : "".concat(key, ": ").concat(value)
37
40
  };
38
41
  });
39
42
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -57,7 +60,8 @@ FilterSummary.propTypes = {
57
60
  className: _propTypes.default.string,
58
61
  clearFilters: _propTypes.default.func.isRequired,
59
62
  clearFiltersText: _propTypes.default.string,
60
- filters: _propTypes.default.arrayOf(_propTypes.default.object).isRequired
63
+ filters: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
64
+ renderLabel: _propTypes.default.func
61
65
  };
62
66
  var _default = FilterSummary;
63
67
  exports.default = _default;
@@ -0,0 +1,229 @@
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.Guidebanner = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+ var _colors = require("@carbon/colors");
16
+ var _iconsReact = require("@carbon/icons-react");
17
+ var _carbonComponentsReact = require("carbon-components-react");
18
+ var _Carousel = require("../Carousel");
19
+ var _devtools = require("../../global/js/utils/devtools");
20
+ var _settings = require("../../settings");
21
+ var _excluded = ["children", "className", "collapsible", "onClose", "closeIconDescription", "collapseButtonLabel", "expandButtonLabel", "nextIconDescription", "previousIconDescription", "title"];
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+ 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; }
24
+ // Carbon and package components we use.
25
+ /* TODO: @import(s) of carbon components and other package components. */
26
+
27
+ // The block part of our conventional BEM class names (blockClass__E--M).
28
+ var blockClass = "".concat(_settings.pkg.prefix, "--guidebanner");
29
+ var componentName = 'Guidebanner';
30
+ var defaults = {
31
+ collapsible: false,
32
+ // Labels
33
+ closeIconDescription: 'Close',
34
+ collapseButtonLabel: 'Read less',
35
+ expandButtonLabel: 'Read more',
36
+ nextIconDescription: 'Next',
37
+ previousIconDescription: 'Back'
38
+ };
39
+
40
+ /**
41
+ * The guide banner sits at the top of a page, or page-level tab,
42
+ * to introduce foundational concepts related to the page's content.
43
+ */
44
+ var Guidebanner = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
45
+ var children = _ref.children,
46
+ className = _ref.className,
47
+ _ref$collapsible = _ref.collapsible,
48
+ collapsible = _ref$collapsible === void 0 ? defaults.collapsible : _ref$collapsible,
49
+ onClose = _ref.onClose,
50
+ _ref$closeIconDescrip = _ref.closeIconDescription,
51
+ closeIconDescription = _ref$closeIconDescrip === void 0 ? defaults.closeIconDescription : _ref$closeIconDescrip,
52
+ _ref$collapseButtonLa = _ref.collapseButtonLabel,
53
+ collapseButtonLabel = _ref$collapseButtonLa === void 0 ? defaults.collapseButtonLabel : _ref$collapseButtonLa,
54
+ _ref$expandButtonLabe = _ref.expandButtonLabel,
55
+ expandButtonLabel = _ref$expandButtonLabe === void 0 ? defaults.expandButtonLabel : _ref$expandButtonLabe,
56
+ _ref$nextIconDescript = _ref.nextIconDescription,
57
+ nextIconDescription = _ref$nextIconDescript === void 0 ? defaults.nextIconDescription : _ref$nextIconDescript,
58
+ _ref$previousIconDesc = _ref.previousIconDescription,
59
+ previousIconDescription = _ref$previousIconDesc === void 0 ? defaults.previousIconDescription : _ref$previousIconDesc,
60
+ title = _ref.title,
61
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
62
+ var scrollRef = (0, _react.useRef)();
63
+ var toggleRef = (0, _react.useRef)();
64
+ var _useState = (0, _react.useState)(0),
65
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
66
+ scrollPosition = _useState2[0],
67
+ setScrollPosition = _useState2[1];
68
+ var _useState3 = (0, _react.useState)(false),
69
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
70
+ showNavigation = _useState4[0],
71
+ setShowNavigation = _useState4[1];
72
+ var _useState5 = (0, _react.useState)(collapsible ? true : false),
73
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
74
+ isCollapsed = _useState6[0],
75
+ setIsCollapsed = _useState6[1];
76
+ var handleScrollableChange = function handleScrollableChange(value) {
77
+ setShowNavigation(value);
78
+ };
79
+ var handleClickToggle = function handleClickToggle() {
80
+ setScrollPosition(0);
81
+ scrollRef.current.scrollToView(0);
82
+ setIsCollapsed(function (prevState) {
83
+ return !prevState;
84
+ });
85
+ };
86
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
87
+ "aria-expanded": !isCollapsed,
88
+ className: (0, _classnames.default)(blockClass, className, [collapsible ? "".concat(blockClass, "__collapsible") : null], [isCollapsed ? "".concat(blockClass, "__collapsible-collapsed") : null]),
89
+ ref: ref
90
+ }, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement(_iconsReact.Idea20, {
91
+ className: "".concat(blockClass, "__icon-idea")
92
+ }), /*#__PURE__*/_react.default.createElement("div", {
93
+ className: "".concat(blockClass, "__title")
94
+ }, title), /*#__PURE__*/_react.default.createElement(_Carousel.Carousel, {
95
+ className: "".concat(blockClass, "__carousel")
96
+ // These colors are to match the Carousel's faded edges
97
+ // against the Guidebanner's gradient background.
98
+ ,
99
+ fadedEdgeColor: {
100
+ left: _colors.blue90,
101
+ right: _colors.purple70
102
+ },
103
+ ref: scrollRef,
104
+ scrollableChange: handleScrollableChange,
105
+ scrollTune: -450
106
+ }, children), /*#__PURE__*/_react.default.createElement("div", {
107
+ className: (0, _classnames.default)([collapsible || showNavigation ? "".concat(blockClass, "__navigation") : null])
108
+ }, collapsible && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
109
+ kind: "ghost",
110
+ size: "md",
111
+ className: "".concat(blockClass, "__toggle-button"),
112
+ onClick: handleClickToggle,
113
+ ref: toggleRef
114
+ }, isCollapsed ? expandButtonLabel : collapseButtonLabel), showNavigation && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
115
+ kind: "ghost",
116
+ size: "md",
117
+ hasIconOnly: true,
118
+ disabled: scrollPosition === 0,
119
+ renderIcon: _iconsReact.CaretLeft16,
120
+ className: (0, _classnames.default)("".concat(blockClass, "__back-button"), [scrollPosition === 0 ? "".concat(blockClass, "__back-button--disabled") : null]),
121
+ tooltipPosition: "top",
122
+ iconDescription: previousIconDescription,
123
+ onClick: function onClick() {
124
+ scrollRef.current.scrollPrev().then(function (scrollPercentage) {
125
+ return setScrollPosition(scrollPercentage);
126
+ });
127
+ }
128
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
129
+ kind: "ghost",
130
+ size: "md",
131
+ hasIconOnly: true,
132
+ disabled: scrollPosition === 1,
133
+ renderIcon: _iconsReact.CaretRight16,
134
+ className: (0, _classnames.default)("".concat(blockClass, "__next-button"), [scrollPosition === 1 ? "".concat(blockClass, "__next-button--disabled") : null]),
135
+ tooltipPosition: "top",
136
+ tooltipAlignment: "end",
137
+ iconDescription: nextIconDescription,
138
+ onClick: function onClick() {
139
+ scrollRef.current.scrollNext().then(function (scrollPercentage) {
140
+ return setScrollPosition(scrollPercentage);
141
+ });
142
+ }
143
+ }))), onClose && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
144
+ className: "".concat(blockClass, "__close-button"),
145
+ hasIconOnly: true,
146
+ iconDescription: closeIconDescription,
147
+ kind: "ghost",
148
+ onClick: onClose,
149
+ renderIcon: _iconsReact.Close20,
150
+ size: "md",
151
+ tooltipPosition: "bottom",
152
+ tooltipAlignment: "end"
153
+ }));
154
+ });
155
+
156
+ // Return a placeholder if not released and not enabled by feature flag
157
+ exports.Guidebanner = Guidebanner;
158
+ exports.Guidebanner = Guidebanner = _settings.pkg.checkComponentEnabled(Guidebanner, componentName);
159
+
160
+ // The display name of the component, used by React. Note that displayName
161
+ // is used in preference to relying on function.name.
162
+ Guidebanner.displayName = componentName;
163
+
164
+ // The types and DocGen commentary for the component props,
165
+ // in alphabetical order (for consistency).
166
+ // See https://www.npmjs.com/package/prop-types#usage.
167
+ Guidebanner.propTypes = {
168
+ /**
169
+ * Provide the contents of the Guidebanner.
170
+ * One or more GuidebannerElement components are required.
171
+ */
172
+ children: function children(props, propName) {
173
+ var error;
174
+ var prop = props[propName];
175
+ if (!prop) {
176
+ error = new Error('`Guidebanner` requires one or more children of type `GuidebannerElement`.');
177
+ }
178
+ _react.default.Children.forEach(prop, function (child) {
179
+ if (child.type.name !== 'GuidebannerElement') {
180
+ var _child$type;
181
+ // If not GuidebannerElement, then show:
182
+ // React component name(child.type?.name) or
183
+ // HTML element name(child.type).
184
+ error = new Error("`Guidebanner` only accepts children of type `GuidebannerElement`, found `".concat(((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name) || child.type, "` instead."));
185
+ }
186
+ });
187
+ return error;
188
+ },
189
+ /**
190
+ * Provide an optional class to be applied to the containing node.
191
+ */
192
+ className: _propTypes.default.string,
193
+ /**
194
+ * Tooltip text and aria label for the Close button icon.
195
+ */
196
+ closeIconDescription: _propTypes.default.string,
197
+ /**
198
+ * Text label for the Collapse button.
199
+ */
200
+ collapseButtonLabel: _propTypes.default.string,
201
+ /**
202
+ * When true, the Guidebanner will initialize in a collapsed state,
203
+ * showing the title and the Expand button.
204
+ *
205
+ * When expanded, it will show the GuidebannerElement child components and the Collapse button.
206
+ */
207
+ collapsible: _propTypes.default.bool,
208
+ /**
209
+ * Text label for the Expand button.
210
+ */
211
+ expandButtonLabel: _propTypes.default.string,
212
+ /**
213
+ * Tooltip text and aria label for the Next button icon.
214
+ */
215
+ nextIconDescription: _propTypes.default.string,
216
+ /**
217
+ * If defined, a Close button will render in the top-right corner and a
218
+ * callback function will be triggered when button is clicked.
219
+ */
220
+ onClose: _propTypes.default.func,
221
+ /**
222
+ * Tooltip text and aria label for the Back button icon.
223
+ */
224
+ previousIconDescription: _propTypes.default.string,
225
+ /**
226
+ * Title text.
227
+ */
228
+ title: _propTypes.default.string.isRequired
229
+ };