@carbon/ibm-products 1.46.1 → 1.47.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. package/css/index-full-carbon.css +42 -13
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +4 -4
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +4 -1
  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 +38 -9
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +42 -13
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +4 -4
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Card/CardFooter.js +2 -2
  18. package/es/components/Datagrid/Datagrid/DatagridRow.js +37 -10
  19. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +18 -4
  20. package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +15 -2
  21. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +4 -2
  22. package/es/components/Datagrid/useActionsColumn.js +22 -1
  23. package/es/components/Datagrid/useDefaultStringRenderer.js +1 -1
  24. package/es/components/Datagrid/useNestedRows.js +2 -4
  25. package/es/components/Datagrid/useSelectAllToggle.js +16 -2
  26. package/es/components/Datagrid/useSelectRows.js +17 -3
  27. package/es/components/Datagrid/useStickyColumn.js +19 -5
  28. package/es/components/Datagrid/utils/getArgTypes.js +5 -0
  29. package/es/components/SidePanel/SidePanel.js +14 -5
  30. package/lib/components/Card/CardFooter.js +2 -2
  31. package/lib/components/Datagrid/Datagrid/DatagridRow.js +37 -10
  32. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +20 -3
  33. package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +14 -1
  34. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +3 -1
  35. package/lib/components/Datagrid/useActionsColumn.js +22 -1
  36. package/lib/components/Datagrid/useDefaultStringRenderer.js +1 -1
  37. package/lib/components/Datagrid/useNestedRows.js +2 -4
  38. package/lib/components/Datagrid/useSelectAllToggle.js +19 -2
  39. package/lib/components/Datagrid/useSelectRows.js +19 -2
  40. package/lib/components/Datagrid/useStickyColumn.js +18 -4
  41. package/lib/components/Datagrid/utils/getArgTypes.js +5 -0
  42. package/lib/components/SidePanel/SidePanel.js +14 -5
  43. package/package.json +5 -5
  44. package/scss/components/Datagrid/_storybook-styles.scss +26 -0
  45. package/scss/components/Datagrid/styles/_datagrid.scss +22 -3
  46. package/scss/components/Datagrid/styles/_useInlineEdit.scss +4 -0
  47. package/scss/components/Datagrid/styles/_useNestedRows.scss +17 -0
  48. package/scss/components/Datagrid/styles/_useSelectAllToggle.scss +11 -8
  49. package/scss/components/Datagrid/styles/_useStickyColumn.scss +3 -3
  50. package/scss/components/EmptyStates/_empty-state.scss +4 -3
  51. package/scss/components/Tearsheet/_tearsheet.scss +4 -0
@@ -1,22 +1,36 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
5
  var _excluded = ["onChange"];
5
6
  /*
6
7
  * Licensed Materials - Property of IBM
7
8
  * 5724-Q36
8
- * (c) Copyright IBM Corp. 2020
9
+ * (c) Copyright IBM Corp. 2023
9
10
  * US Government Users Restricted Rights - Use, duplication or disclosure
10
11
  * restricted by GSA ADP Schedule Contract with IBM Corp.
11
12
  */
12
13
  // @flow
13
- import React from 'react';
14
+ import React, { useLayoutEffect, useState } from 'react';
14
15
  import { DataTable } from 'carbon-components-react';
15
16
  import cx from 'classnames';
16
17
  import { pkg } from '../../../settings';
17
18
  var blockClass = "".concat(pkg.prefix, "--datagrid");
18
19
  var SelectAll = function SelectAll(datagridState) {
19
20
  var _columns$;
21
+ var _useState = useState(window.innerWidth),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ windowSize = _useState2[0],
24
+ setWindowSize = _useState2[1];
25
+ useLayoutEffect(function () {
26
+ function updateSize() {
27
+ setWindowSize(window.innerWidth);
28
+ }
29
+ window.addEventListener('resize', updateSize);
30
+ return function () {
31
+ return window.removeEventListener('resize', updateSize);
32
+ };
33
+ }, []);
20
34
  var isFetching = datagridState.isFetching,
21
35
  getToggleAllRowsSelectedProps = datagridState.getToggleAllRowsSelectedProps,
22
36
  getToggleAllPageRowsSelectedProps = datagridState.getToggleAllPageRowsSelectedProps,
@@ -29,7 +43,7 @@ var SelectAll = function SelectAll(datagridState) {
29
43
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
30
44
  if (hideSelectAll || radio) {
31
45
  return /*#__PURE__*/React.createElement("div", {
32
- className: cx("".concat(blockClass, "__head-hidden-select-all"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
46
+ className: cx("".concat(blockClass, "__head-hidden-select-all"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
33
47
  });
34
48
  }
35
49
  var getProps = DatagridPagination ? getToggleAllPageRowsSelectedProps : getToggleAllRowsSelectedProps;
@@ -37,7 +51,7 @@ var SelectAll = function SelectAll(datagridState) {
37
51
  onChange = _getProps.onChange,
38
52
  selectProps = _objectWithoutProperties(_getProps, _excluded);
39
53
  return /*#__PURE__*/React.createElement("div", {
40
- className: cx("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft))
54
+ className: cx("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
41
55
  }, /*#__PURE__*/React.createElement(TableSelectAll, _extends({}, selectProps, {
42
56
  name: "".concat(tableId, "-select-all-checkbox-name"),
43
57
  onSelect: onChange,
@@ -11,7 +11,7 @@ var _excluded = ["onChange"];
11
11
  * restricted by GSA ADP Schedule Contract with IBM Corp.
12
12
  */
13
13
  // @flow
14
- import React, { useEffect, useState } from 'react';
14
+ import React, { useEffect, useState, useLayoutEffect } from 'react';
15
15
  import PropTypes from 'prop-types';
16
16
  import cx from 'classnames';
17
17
  import { OverflowMenu, OverflowMenuItem, Checkbox } from 'carbon-components-react';
@@ -45,6 +45,19 @@ var SelectAllWithToggle = function SelectAllWithToggle(_ref) {
45
45
  onSelectAllRows(isAllRowsSelected && selectAllMode === SELECT_ALL_ROWS);
46
46
  }
47
47
  }, [isAllRowsSelected, selectAllMode, onSelectAllRows]);
48
+ var _useState3 = useState(window.innerWidth),
49
+ _useState4 = _slicedToArray(_useState3, 2),
50
+ windowSize = _useState4[0],
51
+ setWindowSize = _useState4[1];
52
+ useLayoutEffect(function () {
53
+ function updateSize() {
54
+ setWindowSize(window.innerWidth);
55
+ }
56
+ window.addEventListener('resize', updateSize);
57
+ return function () {
58
+ return window.removeEventListener('resize', updateSize);
59
+ };
60
+ }, []);
48
61
  var _ref2 = selectAllToggle || {},
49
62
  onSelectAllRows = _ref2.onSelectAllRows,
50
63
  labels = _ref2.labels;
@@ -61,7 +74,7 @@ var SelectAllWithToggle = function SelectAllWithToggle(_ref) {
61
74
  return /*#__PURE__*/React.createElement("th", {
62
75
  role: "columnheader",
63
76
  scope: "col",
64
- className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
77
+ className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
65
78
  }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Checkbox, _extends({}, selectProps, {
66
79
  name: "".concat(tableId, "-select-all-checkbox-name"),
67
80
  onClick: function onClick(e) {
@@ -3,7 +3,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  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; }
4
4
  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) { _defineProperty(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; }
5
5
  /**
6
- * Copyright IBM Corp. 2022, 2022
6
+ * Copyright IBM Corp. 2022, 2023
7
7
  *
8
8
  * This source code is licensed under the Apache-2.0 license found in the
9
9
  * LICENSE file in the root directory of this source tree.
@@ -57,7 +57,9 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
57
57
  var _useState7 = useState(columnDefinitions
58
58
  // hide the columns without Header, e.g the sticky actions, spacer
59
59
  .filter(function (colDef) {
60
- return !!colDef.Header.props && !colDef.isAction;
60
+ return !!colDef.Header.props && !!colDef.Header.props.title;
61
+ }).filter(function (colDef) {
62
+ return !colDef.isAction;
61
63
  })
62
64
  // only sort the hidden column to the end when modal reopen
63
65
  .sort(function (defA, defB) {
@@ -3,6 +3,8 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
4
  var _excluded = ["id", "itemText", "onClick", "icon"],
5
5
  _excluded2 = ["id", "onClick", "shouldHideMenuItem", "shouldDisableMenuItem", "disabled"];
6
+ 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; }
7
+ 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) { _defineProperty(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; }
6
8
  /*
7
9
  * Licensed Materials - Property of IBM
8
10
  * 5724-Q36
@@ -97,7 +99,7 @@ var useActionsColumn = function useActionsColumn(hooks) {
97
99
  })))),
98
100
  className: cx((_cx3 = {}, _defineProperty(_cx3, "".concat(blockClass, "__actions-column-cell"), true), _defineProperty(_cx3, "".concat(blockClass, "__cell"), true), _cx3)),
99
101
  style: {
100
- width: 96
102
+ width: rowActions.length > 2 ? 48 : 96
101
103
  }
102
104
  }];
103
105
  }
@@ -106,6 +108,25 @@ var useActionsColumn = function useActionsColumn(hooks) {
106
108
  hooks.getCellProps.push(addActionsMenu);
107
109
  }
108
110
  };
111
+ var useStickyHeaderWidth = function useStickyHeaderWidth(instance) {
112
+ var rowActions = instance.rowActions;
113
+ if (rowActions && Array.isArray(rowActions)) {
114
+ var addHeaderWidth = function addHeaderWidth(props, cellData) {
115
+ var column = cellData.column;
116
+ if (column.isAction) {
117
+ return [props, {
118
+ style: _objectSpread(_objectSpread({}, props.style), {}, {
119
+ width: rowActions.length > 2 ? 48 : 96 // set header width based on action length
120
+ })
121
+ }];
122
+ }
123
+
124
+ return [props];
125
+ };
126
+ hooks.getHeaderProps.push(addHeaderWidth);
127
+ }
128
+ };
129
+ hooks.useInstance.push(useStickyHeaderWidth);
109
130
  hooks.useInstance.push(useAttachActionsOnInstance);
110
131
  };
111
132
  export default useActionsColumn;
@@ -17,7 +17,7 @@ var useDefaultStringRenderer = function useDefaultStringRenderer(hooks) {
17
17
  var StringRenderer = function StringRenderer(tableProps) {
18
18
  var _tableProps$column;
19
19
  return /*#__PURE__*/React.createElement("div", {
20
- className: cx("".concat(blockClass, "__defaultStringRenderer"), _defineProperty({}, "".concat(blockClass, "__defaultStringRenderer--multiline"), (_tableProps$column = tableProps.column) === null || _tableProps$column === void 0 ? void 0 : _tableProps$column.multiLineWrap)),
20
+ className: cx("".concat(blockClass, "__defaultStringRenderer"), _defineProperty({}, "".concat(blockClass, "__defaultStringRenderer--multiline"), ((_tableProps$column = tableProps.column) === null || _tableProps$column === void 0 ? void 0 : _tableProps$column.multiLineWrap) || (tableProps === null || tableProps === void 0 ? void 0 : tableProps.multiLineWrapAll))),
21
21
  title: tableProps.value
22
22
  }, tableProps.value);
23
23
  };
@@ -24,9 +24,7 @@ var useNestedRows = function useNestedRows(hooks) {
24
24
  var row = _ref2.row;
25
25
  return [props, {
26
26
  style: {
27
- marginLeft: "".concat(row.depth > 0 ? marginLeft : 0, "px"),
28
- paddingLeft: "".concat(row.depth === 2 ? marginLeft * (row.depth - 1) + marginLeft - 8 : row.depth > 2 ? marginLeft * (row.depth - 1) + marginLeft : row.depth === 1 ? marginLeft - 16 : 0, "px"),
29
- maxWidth: "calc(100% - ".concat(marginLeft * row.depth, "px)")
27
+ paddingLeft: "".concat(row.depth > 1 ? marginLeft * 2 + (row.depth - 1) * (marginLeft + marginLeft / 3) : row.depth === 1 ? marginLeft * 2 : 0, "px")
30
28
  }
31
29
  }];
32
30
  };
@@ -39,7 +37,7 @@ var useNestedRows = function useNestedRows(hooks) {
39
37
  }) === 0;
40
38
  return [props, {
41
39
  style: {
42
- marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "-".concat(marginLeft * (cell.row.depth + 1), "px") : '')
40
+ marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "".concat(-32 * cell.row.depth - 18, "px") : '')
43
41
  }
44
42
  }];
45
43
  };
@@ -1,4 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  /*
3
4
  * Licensed Materials - Property of IBM
4
5
  * 5724-Q36
@@ -7,7 +8,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
7
8
  * restricted by GSA ADP Schedule Contract with IBM Corp.
8
9
  */
9
10
  // @flow
10
- import React from 'react';
11
+ import React, { useLayoutEffect, useState } from 'react';
11
12
  import cx from 'classnames';
12
13
  import { selectionColumnId } from './common-column-ids';
13
14
  import SelectAllWithToggle from './Datagrid/DatagridSelectAllWithToggle';
@@ -36,6 +37,19 @@ var useSelectAllWithToggleComponent = function useSelectAllWithToggleComponent(h
36
37
  hooks.useInstance.push(useInstance);
37
38
  };
38
39
  var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
40
+ var _useState = useState(window.innerWidth),
41
+ _useState2 = _slicedToArray(_useState, 2),
42
+ windowSize = _useState2[0],
43
+ setWindowSize = _useState2[1];
44
+ useLayoutEffect(function () {
45
+ function updateSize() {
46
+ setWindowSize(window.innerWidth);
47
+ }
48
+ window.addEventListener('resize', updateSize);
49
+ return function () {
50
+ return window.removeEventListener('resize', updateSize);
51
+ };
52
+ }, []);
39
53
  hooks.getCellProps.push(function (props, data) {
40
54
  var _columns$;
41
55
  var column = data.cell.column;
@@ -46,7 +60,7 @@ var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
46
60
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
47
61
  if (column.id === selectionColumnId && DatagridPagination) {
48
62
  return [props, {
49
- className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
63
+ className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
50
64
  }];
51
65
  }
52
66
  return [props];
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
4
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
5
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
6
  var _excluded = ["onChange"];
@@ -8,12 +9,12 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
8
9
  /*
9
10
  * Licensed Materials - Property of IBM
10
11
  * 5724-Q36
11
- * (c) Copyright IBM Corp. 2020
12
+ * (c) Copyright IBM Corp. 2023
12
13
  * US Government Users Restricted Rights - Use, duplication or disclosure
13
14
  * restricted by GSA ADP Schedule Contract with IBM Corp.
14
15
  */
15
16
  // @flow
16
- import React from 'react';
17
+ import React, { useLayoutEffect, useState } from 'react';
17
18
  import cx from 'classnames';
18
19
  import { TableSelectRow } from 'carbon-components-react';
19
20
  import { SelectAll } from './Datagrid/DatagridSelectAll';
@@ -72,6 +73,19 @@ var SelectRow = function SelectRow(datagridState) {
72
73
  onRadioSelect = datagridState.onRadioSelect,
73
74
  columns = datagridState.columns,
74
75
  withStickyColumn = datagridState.withStickyColumn;
76
+ var _useState = useState(window.innerWidth),
77
+ _useState2 = _slicedToArray(_useState, 2),
78
+ windowSize = _useState2[0],
79
+ setWindowSize = _useState2[1];
80
+ useLayoutEffect(function () {
81
+ function updateSize() {
82
+ setWindowSize(window.innerWidth);
83
+ }
84
+ window.addEventListener('resize', updateSize);
85
+ return function () {
86
+ return window.removeEventListener('resize', updateSize);
87
+ };
88
+ }, []);
75
89
  var selectDisabled = isFetching || row.getRowProps().selectDisabled;
76
90
  var _row$getToggleRowSele = row.getToggleRowSelectedProps(),
77
91
  onChange = _row$getToggleRowSele.onChange,
@@ -92,7 +106,7 @@ var SelectRow = function SelectRow(datagridState) {
92
106
  },
93
107
  id: "".concat(tableId, "-").concat(row.index),
94
108
  name: "".concat(tableId, "-").concat(row.index, "-name"),
95
- className: cx("".concat(blockClass, "__checkbox-cell"), cellProps.className, _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft)),
109
+ className: cx("".concat(blockClass, "__checkbox-cell"), cellProps.className, _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671)),
96
110
  ariaLabel: "".concat(tableId, "-row-").concat(row.index) // TODO: aria label should be i18n'ed
97
111
  ,
98
112
  disabled: selectDisabled
@@ -1,4 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  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; }
3
4
  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) { _defineProperty(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; }
4
5
  /*
@@ -9,7 +10,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
9
10
  * restricted by GSA ADP Schedule Contract with IBM Corp.
10
11
  */
11
12
 
12
- import { useEffect, useRef } from 'react';
13
+ import { useEffect, useRef, useLayoutEffect, useState } from 'react';
13
14
  import debounce from 'lodash/debounce';
14
15
  import cx from 'classnames';
15
16
  import { pkg } from '../../settings';
@@ -20,8 +21,21 @@ var OFFSET_SCROLL_CLASS = "".concat(styleClassPrefix, "-offset-scroll");
20
21
  var useStickyColumn = function useStickyColumn(hooks) {
21
22
  var tableBodyRef = useRef();
22
23
  var stickyHeaderCellRef = useRef();
23
- hooks.getCellProps.push(changeProps.bind(null, 'cell', null));
24
- hooks.getHeaderProps.push(changeProps.bind(null, 'header', stickyHeaderCellRef));
24
+ var _useState = useState(window.innerWidth),
25
+ _useState2 = _slicedToArray(_useState, 2),
26
+ windowSize = _useState2[0],
27
+ setWindowSize = _useState2[1];
28
+ useLayoutEffect(function () {
29
+ function updateSize() {
30
+ setWindowSize(window.innerWidth);
31
+ }
32
+ window.addEventListener('resize', updateSize);
33
+ return function () {
34
+ return window.removeEventListener('resize', updateSize);
35
+ };
36
+ }, []);
37
+ hooks.getCellProps.push(changeProps.bind(null, 'cell', null, windowSize));
38
+ hooks.getHeaderProps.push(changeProps.bind(null, 'header', stickyHeaderCellRef, windowSize));
25
39
  hooks.getTableBodyProps.push(addTableBodyProps.bind(null, tableBodyRef));
26
40
  hooks.getHeaderGroupProps.push(function (props) {
27
41
  return [props, {
@@ -115,7 +129,7 @@ var addTableBodyProps = function addTableBodyProps(tableBodyRef, props) {
115
129
  ref: tableBodyRef
116
130
  }];
117
131
  };
118
- var changeProps = function changeProps(elementName, headerCellRef, props, data) {
132
+ var changeProps = function changeProps(elementName, headerCellRef, windowSize, props, data) {
119
133
  var column = data.column || data.cell.column;
120
134
  if (column.sticky === 'right') {
121
135
  var _cx;
@@ -128,7 +142,7 @@ var changeProps = function changeProps(elementName, headerCellRef, props, data)
128
142
  if (column.sticky === 'left') {
129
143
  var _data$instance, _cx2;
130
144
  return [props, _objectSpread({
131
- className: cx((_cx2 = {}, _defineProperty(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName), true), _defineProperty(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName, "--with-extra-select-column"), data === null || data === void 0 ? void 0 : (_data$instance = data.instance) === null || _data$instance === void 0 ? void 0 : _data$instance.withSelectRows), _cx2))
145
+ className: cx((_cx2 = {}, _defineProperty(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName), true && windowSize > 671), _defineProperty(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName, "--with-extra-select-column"), (data === null || data === void 0 ? void 0 : (_data$instance = data.instance) === null || _data$instance === void 0 ? void 0 : _data$instance.withSelectRows) && windowSize > 671), _cx2))
132
146
  }, headerCellRef && {
133
147
  ref: headerCellRef
134
148
  })];
@@ -95,5 +95,10 @@ export var ARG_TYPES = {
95
95
  name: 'Filter props',
96
96
  control: 'object',
97
97
  description: 'This is an object for all the props passed into the filter flyout and filter panel'
98
+ },
99
+ expandedContentAlign: {
100
+ control: 'select',
101
+ options: ['flex-start', 'space-between'],
102
+ description: 'This sets the alignment of content inside expanded row.'
98
103
  }
99
104
  };
@@ -3,7 +3,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
5
  var _excluded = ["actionToolbarButtons", "actions", "animateTitle", "children", "className", "closeIconDescription", "condensedActions", "currentStep", "includeOverlay", "labelText", "navigationBackIconDescription", "onNavigationBack", "onRequestClose", "onUnmount", "open", "placement", "preventCloseOnClickOutside", "selectorPageContent", "selectorPrimaryFocus", "size", "slideIn", "subtitle", "title"],
6
- _excluded2 = ["label", "kind", "icon", "leading", "disabled", "className", "onClick"];
6
+ _excluded2 = ["label", "kind", "icon", "tooltipPosition", "tooltipAlignment", "leading", "disabled", "className", "onClick"];
7
7
  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; }
8
8
  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) { _defineProperty(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; }
9
9
  /**
@@ -402,6 +402,8 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
402
402
  var label = _ref5.label,
403
403
  kind = _ref5.kind,
404
404
  icon = _ref5.icon,
405
+ tooltipPosition = _ref5.tooltipPosition,
406
+ tooltipAlignment = _ref5.tooltipAlignment,
405
407
  leading = _ref5.leading,
406
408
  disabled = _ref5.disabled,
407
409
  className = _ref5.className,
@@ -413,8 +415,8 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
413
415
  size: "small",
414
416
  renderIcon: icon,
415
417
  iconDescription: label,
416
- tooltipPosition: "bottom",
417
- tooltipAlignment: "center",
418
+ tooltipPosition: tooltipPosition || 'bottom',
419
+ tooltipAlignment: tooltipAlignment || 'center',
418
420
  hasIconOnly: !leading,
419
421
  disabled: disabled,
420
422
  className: cx(["".concat(blockClass, "__action-toolbar-button"), className, (_ref6 = {}, _defineProperty(_ref6, "".concat(blockClass, "__action-toolbar-icon-only-button"), icon && !leading), _defineProperty(_ref6, "".concat(blockClass, "__action-toolbar-leading-button"), leading), _ref6)]),
@@ -495,13 +497,18 @@ SidePanel.propTypes = {
495
497
  leading: PropTypes.bool,
496
498
  icon: PropTypes.object,
497
499
  onClick: PropTypes.func,
498
- kind: PropTypes.oneOf(['ghost', 'tertiary', 'secondary', 'primary'])
500
+ kind: PropTypes.oneOf(['ghost', 'tertiary', 'secondary', 'primary']),
501
+ tooltipAlignment: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
502
+ tooltipPosition: PropTypes.oneOf(['start', 'center', 'end'])
499
503
  })),
500
504
  /**
501
505
  * The primary actions to be shown in the side panel. Each action is
502
506
  * specified as an object with optional fields: 'label' to supply the button
503
507
  * label, 'kind' to select the button kind (must be 'primary', 'secondary' or
504
- * 'ghost'), 'loading' to display a loading indicator, and 'onClick' to
508
+ * 'ghost'), 'tooltipPosition' to select where the tooltip is placed around
509
+ * the button (must be 'top', 'right', 'bottom', or 'left'), 'tooltipAlignment'
510
+ * to select how the tooltip is aligned with the button (must be 'start',
511
+ * 'center', or 'end', 'loading' to display a loading indicator, and 'onClick' to
505
512
  * receive notifications when the button is clicked. Additional fields in the
506
513
  * object will be passed to the Button component, and these can include
507
514
  * 'disabled', 'ref', 'className', and any other Button props. Any other
@@ -512,6 +519,8 @@ SidePanel.propTypes = {
512
519
  */
513
520
  actions: allPropTypes([ActionSet.validateActions(), PropTypes.arrayOf(PropTypes.shape(_objectSpread(_objectSpread({}, Button.propTypes), {}, {
514
521
  kind: PropTypes.oneOf(['ghost', 'danger--ghost', 'secondary', 'danger', 'primary']),
522
+ tooltipPosition: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),
523
+ tooltipAlignment: PropTypes.oneOf(['start', 'center', 'end']),
515
524
  label: PropTypes.string,
516
525
  loading: PropTypes.bool,
517
526
  // we duplicate this Button prop to improve the DocGen here
@@ -74,13 +74,13 @@ CardFooter.propTypes = {
74
74
  onPrimaryButtonClick: _propTypes.default.func,
75
75
  onSecondaryButtonClick: _propTypes.default.func,
76
76
  primaryButtonHref: _propTypes.default.string,
77
- primaryButtonIcon: _propTypes.default.string,
77
+ primaryButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
78
78
  primaryButtonKind: _propTypes.default.oneOf(['primary', 'ghost']),
79
79
  primaryButtonPlacement: _propTypes.default.oneOf(['top', 'bottom']),
80
80
  primaryButtonText: _propTypes.default.string,
81
81
  productive: _propTypes.default.bool,
82
82
  secondaryButtonHref: _propTypes.default.string,
83
- secondaryButtonIcon: _propTypes.default.string,
83
+ secondaryButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
84
84
  secondaryButtonKind: _propTypes.default.oneOf(['secondary', 'ghost']),
85
85
  secondaryButtonText: _propTypes.default.string
86
86
  };
@@ -44,28 +44,55 @@ var DatagridRow = function DatagridRow(datagridState) {
44
44
  }
45
45
  return size;
46
46
  };
47
+ var hoverHandler = function hoverHandler(event) {
48
+ var _hoverRow$style, _hoverRow$style2, _hoverRow$style3;
49
+ var subRowCount = getVisibleNestedRowCount(row);
50
+ var totalNestedRowIndicatorHeight = (0, _layout.px)(subRowCount * rowHeights[rowSize]);
51
+ var hoverRow = event.target.closest(".".concat(blockClass, "__carbon-row-expanded"));
52
+ hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.classList.add("".concat(blockClass, "__carbon-row-expanded-hover-active"));
53
+ var rowExpanderButton = hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.querySelector(".".concat(blockClass, "__row-expander"));
54
+ var rowSizeValue = rowSize || 'lg';
55
+ hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style = hoverRow.style) === null || _hoverRow$style === void 0 ? void 0 : _hoverRow$style.setProperty("--".concat(blockClass, "--indicator-height"), totalNestedRowIndicatorHeight);
56
+ hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style2 = hoverRow.style) === null || _hoverRow$style2 === void 0 ? void 0 : _hoverRow$style2.setProperty("--".concat(blockClass, "--row-height"), (0, _layout.px)(rowHeights[rowSizeValue]));
57
+ hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style3 = hoverRow.style) === null || _hoverRow$style3 === void 0 ? void 0 : _hoverRow$style3.setProperty("--".concat(blockClass, "--indicator-offset-amount"), (0, _layout.px)((rowExpanderButton === null || rowExpanderButton === void 0 ? void 0 : rowExpanderButton.offsetLeft) || 0));
58
+ };
59
+ var focusRemover = function focusRemover() {
60
+ var elements = document.querySelectorAll(".".concat(blockClass, "__carbon-row-expanded"));
61
+ elements.forEach(function (el) {
62
+ el.classList.remove("".concat(blockClass, "__carbon-row-expanded-hover-active"));
63
+ });
64
+ };
47
65
  return /*#__PURE__*/_react.default.createElement(TableRow, (0, _extends2.default)({
48
66
  className: (0, _classnames.default)("".concat(blockClass, "__carbon-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), (0, _defineProperty2.default)(_cx, "".concat(_settings.carbon.prefix, "--data-table--selected"), row.isSelected), _cx))
49
67
  }, row.getRowProps(), {
50
68
  key: row.id,
51
69
  onMouseEnter: function onMouseEnter(event) {
52
- var _hoverRow$style, _hoverRow$style2, _hoverRow$style3;
53
70
  if (!withNestedRows) {
54
71
  return;
55
72
  }
56
- var subRowCount = getVisibleNestedRowCount(row);
57
- var totalNestedRowIndicatorHeight = (0, _layout.px)(subRowCount * rowHeights[rowSize]);
58
- var hoverRow = event.target.closest(".".concat(blockClass, "__carbon-row-expanded"));
59
- hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.classList.add("".concat(blockClass, "__carbon-row-expanded-hover-active"));
60
- var rowExpanderButton = hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.querySelector(".".concat(blockClass, "__row-expander"));
61
- var rowSizeValue = rowSize || 'lg';
62
- hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style = hoverRow.style) === null || _hoverRow$style === void 0 ? void 0 : _hoverRow$style.setProperty("--".concat(blockClass, "--indicator-height"), totalNestedRowIndicatorHeight);
63
- hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style2 = hoverRow.style) === null || _hoverRow$style2 === void 0 ? void 0 : _hoverRow$style2.setProperty("--".concat(blockClass, "--row-height"), (0, _layout.px)(rowHeights[rowSizeValue]));
64
- hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style3 = hoverRow.style) === null || _hoverRow$style3 === void 0 ? void 0 : _hoverRow$style3.setProperty("--".concat(blockClass, "--indicator-offset-amount"), (0, _layout.px)((rowExpanderButton === null || rowExpanderButton === void 0 ? void 0 : rowExpanderButton.offsetLeft) || 0));
73
+ hoverHandler(event);
65
74
  },
66
75
  onMouseLeave: function onMouseLeave(event) {
67
76
  var hoverRow = event.target.closest(".".concat(blockClass, "__carbon-row-expanded"));
68
77
  hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.classList.remove("".concat(blockClass, "__carbon-row-expanded-hover-active"));
78
+ },
79
+ onFocus: function onFocus(event) {
80
+ if (!withNestedRows) {
81
+ return;
82
+ }
83
+ hoverHandler(event);
84
+ },
85
+ onBlur: function onBlur() {
86
+ focusRemover();
87
+ },
88
+ onKeyUp: function onKeyUp(event) {
89
+ if (!withNestedRows) {
90
+ return;
91
+ }
92
+ if (event.key === 'Enter' || event.key === 'Space') {
93
+ focusRemover();
94
+ hoverHandler(event);
95
+ }
69
96
  }
70
97
  }), row.cells.map(function (cell, index) {
71
98
  var cellProps = cell.getCellProps();
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -8,14 +9,30 @@ exports.SelectAll = void 0;
8
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _react = _interopRequireDefault(require("react"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _react = _interopRequireWildcard(require("react"));
12
14
  var _carbonComponentsReact = require("carbon-components-react");
13
15
  var _classnames = _interopRequireDefault(require("classnames"));
14
16
  var _settings = require("../../../settings");
15
17
  var _excluded = ["onChange"];
18
+ 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); }
19
+ 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; }
16
20
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
17
21
  var SelectAll = function SelectAll(datagridState) {
18
22
  var _columns$;
23
+ var _useState = (0, _react.useState)(window.innerWidth),
24
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
25
+ windowSize = _useState2[0],
26
+ setWindowSize = _useState2[1];
27
+ (0, _react.useLayoutEffect)(function () {
28
+ function updateSize() {
29
+ setWindowSize(window.innerWidth);
30
+ }
31
+ window.addEventListener('resize', updateSize);
32
+ return function () {
33
+ return window.removeEventListener('resize', updateSize);
34
+ };
35
+ }, []);
19
36
  var isFetching = datagridState.isFetching,
20
37
  getToggleAllRowsSelectedProps = datagridState.getToggleAllRowsSelectedProps,
21
38
  getToggleAllPageRowsSelectedProps = datagridState.getToggleAllPageRowsSelectedProps,
@@ -28,7 +45,7 @@ var SelectAll = function SelectAll(datagridState) {
28
45
  var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
29
46
  if (hideSelectAll || radio) {
30
47
  return /*#__PURE__*/_react.default.createElement("div", {
31
- className: (0, _classnames.default)("".concat(blockClass, "__head-hidden-select-all"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
48
+ className: (0, _classnames.default)("".concat(blockClass, "__head-hidden-select-all"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
32
49
  });
33
50
  }
34
51
  var getProps = DatagridPagination ? getToggleAllPageRowsSelectedProps : getToggleAllRowsSelectedProps;
@@ -36,7 +53,7 @@ var SelectAll = function SelectAll(datagridState) {
36
53
  onChange = _getProps.onChange,
37
54
  selectProps = (0, _objectWithoutProperties2.default)(_getProps, _excluded);
38
55
  return /*#__PURE__*/_react.default.createElement("div", {
39
- className: (0, _classnames.default)("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft))
56
+ className: (0, _classnames.default)("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
40
57
  }, /*#__PURE__*/_react.default.createElement(TableSelectAll, (0, _extends2.default)({}, selectProps, {
41
58
  name: "".concat(tableId, "-select-all-checkbox-name"),
42
59
  onSelect: onChange,
@@ -47,6 +47,19 @@ var SelectAllWithToggle = function SelectAllWithToggle(_ref) {
47
47
  onSelectAllRows(isAllRowsSelected && selectAllMode === SELECT_ALL_ROWS);
48
48
  }
49
49
  }, [isAllRowsSelected, selectAllMode, onSelectAllRows]);
50
+ var _useState3 = (0, _react.useState)(window.innerWidth),
51
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
52
+ windowSize = _useState4[0],
53
+ setWindowSize = _useState4[1];
54
+ (0, _react.useLayoutEffect)(function () {
55
+ function updateSize() {
56
+ setWindowSize(window.innerWidth);
57
+ }
58
+ window.addEventListener('resize', updateSize);
59
+ return function () {
60
+ return window.removeEventListener('resize', updateSize);
61
+ };
62
+ }, []);
50
63
  var _ref2 = selectAllToggle || {},
51
64
  onSelectAllRows = _ref2.onSelectAllRows,
52
65
  labels = _ref2.labels;
@@ -63,7 +76,7 @@ var SelectAllWithToggle = function SelectAllWithToggle(_ref) {
63
76
  return /*#__PURE__*/_react.default.createElement("th", {
64
77
  role: "columnheader",
65
78
  scope: "col",
66
- className: (0, _classnames.default)("".concat(blockClass, "__select-all-toggle-on"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
79
+ className: (0, _classnames.default)("".concat(blockClass, "__select-all-toggle-on"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
67
80
  }, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, (0, _extends2.default)({}, selectProps, {
68
81
  name: "".concat(tableId, "-select-all-checkbox-name"),
69
82
  onClick: function onClick(e) {
@@ -59,7 +59,9 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
59
59
  var _useState7 = (0, _react.useState)(columnDefinitions
60
60
  // hide the columns without Header, e.g the sticky actions, spacer
61
61
  .filter(function (colDef) {
62
- return !!colDef.Header.props && !colDef.isAction;
62
+ return !!colDef.Header.props && !!colDef.Header.props.title;
63
+ }).filter(function (colDef) {
64
+ return !colDef.isAction;
63
65
  })
64
66
  // only sort the hidden column to the end when modal reopen
65
67
  .sort(function (defA, defB) {