@carbon/ibm-products 1.71.0 → 1.72.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. package/css/index-full-carbon.css +48 -2
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +48 -2
  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 +48 -2
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +48 -2
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/CoachmarkStack/CoachmarkStack.js +11 -11
  18. package/es/components/Datagrid/Datagrid/Datagrid.js +10 -3
  19. package/es/components/Datagrid/Datagrid/DatagridContent.js +7 -3
  20. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +1 -1
  21. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +4 -4
  22. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +4 -2
  23. package/es/components/Datagrid/Datagrid/DatagridRefBody.js +1 -1
  24. package/es/components/Datagrid/Datagrid/DatagridRow.js +8 -7
  25. package/es/components/Datagrid/Datagrid/DatagridSimpleBody.js +1 -1
  26. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +15 -3
  27. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +1 -1
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +8 -8
  29. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +1 -0
  30. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +68 -3
  31. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +12 -1
  32. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +8 -1
  33. package/es/components/Datagrid/useDisableSelectRows.js +1 -1
  34. package/es/components/Datagrid/useFiltering.js +48 -46
  35. package/es/components/Datagrid/useInitialColumnSort.js +39 -0
  36. package/es/components/Datagrid/useSelectRows.js +2 -2
  37. package/es/components/Datagrid/useSortableColumns.js +16 -16
  38. package/lib/components/CoachmarkStack/CoachmarkStack.js +11 -11
  39. package/lib/components/Datagrid/Datagrid/Datagrid.js +10 -3
  40. package/lib/components/Datagrid/Datagrid/DatagridContent.js +7 -3
  41. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +1 -1
  42. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +4 -4
  43. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +4 -2
  44. package/lib/components/Datagrid/Datagrid/DatagridRefBody.js +1 -1
  45. package/lib/components/Datagrid/Datagrid/DatagridRow.js +8 -7
  46. package/lib/components/Datagrid/Datagrid/DatagridSimpleBody.js +1 -1
  47. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +15 -10
  48. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +1 -1
  49. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +7 -7
  50. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -2
  51. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +66 -1
  52. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +11 -0
  53. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +8 -1
  54. package/lib/components/Datagrid/useDisableSelectRows.js +1 -1
  55. package/lib/components/Datagrid/useFiltering.js +47 -45
  56. package/lib/components/Datagrid/useInitialColumnSort.js +47 -0
  57. package/lib/components/Datagrid/useSelectRows.js +2 -2
  58. package/lib/components/Datagrid/useSortableColumns.js +18 -17
  59. package/package.json +5 -5
  60. package/scss/components/Datagrid/styles/_useExpandedRow.scss +25 -0
  61. package/scss/components/Datagrid/styles/_useNestedRows.scss +62 -1
  62. package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +1 -1
@@ -13,56 +13,58 @@ var _Filtering = require("./Datagrid/addons/Filtering");
13
13
  var _constants = require("./Datagrid/addons/Filtering/constants");
14
14
  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; }
15
15
  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; }
16
+ var handleMultiFilter = function handleMultiFilter(rows, id, value) {
17
+ // gets all the items that are selected and returns their value
18
+ var selectedItems = value.filter(function (item) {
19
+ return item.selected;
20
+ }).map(function (item) {
21
+ return item.value;
22
+ });
23
+
24
+ // if the user removed all checkboxes then display all rows
25
+ if (selectedItems.length === 0) {
26
+ return rows;
27
+ }
28
+ return rows.filter(function (row) {
29
+ var rowValue = row.values[id];
30
+ return selectedItems.includes(rowValue);
31
+ });
32
+ };
16
33
  var useFiltering = function useFiltering(hooks) {
17
34
  /* istanbul ignore next */
18
35
  var filterTypes = (0, _react.useMemo)(function () {
19
- return {
20
- date: function date(rows, id, _ref) {
21
- var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
22
- startDate = _ref2[0],
23
- endDate = _ref2[1];
24
- return rows.filter(function (row) {
25
- var rowValue = row.values[id];
26
- var startDateObj = (0, _typeof2.default)(startDate) === 'object' ? startDate : new Date(startDate);
27
- var endDateObj = (0, _typeof2.default)(endDate) === 'object' ? endDate : new Date(endDate);
28
- var rowValueDateObj = (0, _typeof2.default)(rowValue) === 'object' ? rowValue : new Date(rowValue);
29
- if (rowValueDateObj.getTime() <= endDateObj.getTime() && rowValueDateObj.getTime() >= startDateObj.getTime()) {
30
- // In date range
31
- return true;
32
- } else {
33
- // Not in date range
34
- return false;
35
- }
36
- });
37
- },
38
- number: function number(rows, id, value) {
39
- if (value === '') {
40
- return rows;
36
+ var _ref3;
37
+ return _ref3 = {}, (0, _defineProperty2.default)(_ref3, _constants.DATE, function (rows, id, _ref) {
38
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
39
+ startDate = _ref2[0],
40
+ endDate = _ref2[1];
41
+ return rows.filter(function (row) {
42
+ var rowValue = row.values[id];
43
+ var startDateObj = (0, _typeof2.default)(startDate) === 'object' ? startDate : new Date(startDate);
44
+ var endDateObj = (0, _typeof2.default)(endDate) === 'object' ? endDate : new Date(endDate);
45
+ var rowValueDateObj = (0, _typeof2.default)(rowValue) === 'object' ? rowValue : new Date(rowValue);
46
+ if (rowValueDateObj.getTime() <= endDateObj.getTime() && rowValueDateObj.getTime() >= startDateObj.getTime()) {
47
+ // In date range
48
+ return true;
49
+ } else {
50
+ // Not in date range
51
+ return false;
41
52
  }
42
- var parsedValue = parseInt(value);
43
- return rows.filter(function (row) {
44
- var rowValue = row.values[id];
45
- return rowValue === parsedValue;
46
- });
47
- },
48
- checkbox: function checkbox(rows, id, value) {
49
- // gets all the items that are selected and returns their value
50
- var selectedItems = value.filter(function (item) {
51
- return item.selected;
52
- }).map(function (item) {
53
- return item.value;
54
- });
55
-
56
- // if the user removed all checkboxes then display all rows
57
- if (selectedItems.length === 0) {
58
- return rows;
59
- }
60
- return rows.filter(function (row) {
61
- var rowValue = row.values[id];
62
- return selectedItems.includes(rowValue);
63
- });
53
+ });
54
+ }), (0, _defineProperty2.default)(_ref3, _constants.NUMBER, function (rows, id, value) {
55
+ if (value === '') {
56
+ return rows;
64
57
  }
65
- };
58
+ var parsedValue = parseInt(value);
59
+ return rows.filter(function (row) {
60
+ var rowValue = row.values[id];
61
+ return rowValue === parsedValue;
62
+ });
63
+ }), (0, _defineProperty2.default)(_ref3, _constants.CHECKBOX, function (rows, id, value) {
64
+ return handleMultiFilter(rows, id, value);
65
+ }), (0, _defineProperty2.default)(_ref3, _constants.MULTISELECT, function (rows, id, value) {
66
+ return handleMultiFilter(rows, id, value);
67
+ }), _ref3;
66
68
  }, []);
67
69
  hooks.useInstance.push(function (instance) {
68
70
  var filterProps = instance.filterProps,
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useInitialColumnSort = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ var _useSortableColumns = require("./useSortableColumns");
11
+ /**
12
+ * Copyright IBM Corp. 2024, 2024
13
+ *
14
+ * This source code is licensed under the Apache-2.0 license found in the
15
+ * LICENSE file in the root directory of this source tree.
16
+ */
17
+
18
+ var useInitialColumnSort = function useInitialColumnSort(instance) {
19
+ var _useState = (0, _react.useState)(false),
20
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
21
+ hasInitialSort = _useState2[0],
22
+ setHasInitialSort = _useState2[1];
23
+ (0, _react.useEffect)(function () {
24
+ var initialState = instance.initialState,
25
+ headers = instance.headers,
26
+ onSort = instance.onSort,
27
+ isTableSortable = instance.isTableSortable;
28
+ var sortableColumn = initialState.sortableColumn;
29
+ var foundSortedCol = headers.some(function (h) {
30
+ return h.isSorted;
31
+ });
32
+ if (foundSortedCol || hasInitialSort || !isTableSortable) {
33
+ return;
34
+ }
35
+ if (sortableColumn) {
36
+ var columnId = sortableColumn.id,
37
+ order = sortableColumn.order;
38
+ var _getNewSortOrder = (0, _useSortableColumns.getNewSortOrder)(order),
39
+ newSortDesc = _getNewSortOrder.newSortDesc,
40
+ newOrder = _getNewSortOrder.newOrder;
41
+ onSort === null || onSort === void 0 ? void 0 : onSort(columnId, newOrder);
42
+ instance.toggleSortBy(columnId, newSortDesc, false);
43
+ setHasInitialSort(true);
44
+ }
45
+ }, [instance, hasInitialSort]);
46
+ };
47
+ exports.useInitialColumnSort = useInitialColumnSort;
@@ -103,7 +103,7 @@ var SelectRow = function SelectRow(datagridState) {
103
103
  return window.removeEventListener('resize', updateSize);
104
104
  };
105
105
  }, []);
106
- var selectDisabled = isFetching || row.getRowProps().selectDisabled;
106
+ var selectDisabled = isFetching || row.getRowProps().disabled;
107
107
  var _row$getToggleRowSele2 = row.getToggleRowSelectedProps(),
108
108
  onChange = _row$getToggleRowSele2.onChange,
109
109
  title = _row$getToggleRowSele2.title,
@@ -127,7 +127,7 @@ var SelectRow = function SelectRow(datagridState) {
127
127
  getRowId: getRowId
128
128
  });
129
129
  };
130
- var rowId = "".concat(tableId, "-").concat(row.index);
130
+ var rowId = "".concat(tableId, "-").concat(row.id, "-").concat(row.index);
131
131
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TableSelectRow, (0, _extends2.default)({}, cellProps, selectProps, {
132
132
  radio: radio,
133
133
  onSelect: onSelectHandler,
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.getNewSortOrder = exports.default = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _react = _interopRequireDefault(require("react"));
@@ -21,6 +21,22 @@ var ordering = {
21
21
  DESC: 'DESC',
22
22
  NONE: 'NONE'
23
23
  };
24
+ var getNewSortOrder = function getNewSortOrder(sortOrder) {
25
+ var order = {
26
+ newSortDesc: undefined,
27
+ newOrder: ordering.NONE
28
+ };
29
+ if (sortOrder === false) {
30
+ order.newOrder = ordering.DESC;
31
+ order.newSortDesc = true;
32
+ }
33
+ if (sortOrder === undefined) {
34
+ order.newOrder = ordering.ASC;
35
+ order.newSortDesc = false;
36
+ }
37
+ return order;
38
+ };
39
+ exports.getNewSortOrder = getNewSortOrder;
24
40
  var getAriaSortValue = function getAriaSortValue(col, _ref) {
25
41
  var ascendingSortableLabelText = _ref.ascendingSortableLabelText,
26
42
  descendingSortableLabelText = _ref.descendingSortableLabelText,
@@ -91,7 +107,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
91
107
  };
92
108
  var Header = function Header(headerProp) {
93
109
  var _cx;
94
- return column.disableSortBy === true || column.id === 'datagridSelection' ? column.disableSortBy ? column.Header : /*#__PURE__*/_react.default.createElement(_DatagridSelectAll.SelectAll, instance) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
110
+ return column.disableSortBy === true || column.id === 'datagridSelection' || column.isAction ? column.disableSortBy || column.isAction ? column.Header : /*#__PURE__*/_react.default.createElement(_DatagridSelectAll.SelectAll, instance) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
95
111
  "aria-sort": getAriaSortValue(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column, {
96
112
  ascendingSortableLabelText: ascendingSortableLabelText,
97
113
  descendingSortableLabelText: descendingSortableLabelText,
@@ -119,21 +135,6 @@ var useSortableColumns = function useSortableColumns(hooks) {
119
135
  isTableSortable: true
120
136
  });
121
137
  };
122
- var getNewSortOrder = function getNewSortOrder(sortOrder) {
123
- var order = {
124
- newSortDesc: undefined,
125
- newOrder: ordering.NONE
126
- };
127
- if (sortOrder === false) {
128
- order.newOrder = ordering.DESC;
129
- order.newSortDesc = true;
130
- }
131
- if (sortOrder === undefined) {
132
- order.newOrder = ordering.ASC;
133
- order.newSortDesc = false;
134
- }
135
- return order;
136
- };
137
138
  hooks.visibleColumns.push(sortableVisibleColumns);
138
139
  hooks.useInstance.push(sortInstanceProps);
139
140
  };
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": "1.71.0",
4
+ "version": "1.72.1",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -86,17 +86,17 @@
86
86
  },
87
87
  "peerDependencies": {
88
88
  "@carbon/colors": "^10.37.2",
89
- "@carbon/icons-react": "^10.49.2",
89
+ "@carbon/icons-react": "^10.49.3",
90
90
  "@carbon/import-once": "^10.7.0",
91
91
  "@carbon/layout": "^10.37.2",
92
92
  "@carbon/motion": "^10.29.2",
93
93
  "@carbon/themes": "^10.55.3",
94
94
  "@carbon/type": "^10.45.3",
95
- "carbon-components": "^10.58.12",
96
- "carbon-components-react": "^7.59.17",
95
+ "carbon-components": "^10.58.13",
96
+ "carbon-components-react": "^7.59.20",
97
97
  "carbon-icons": "^7.0.7",
98
98
  "react": "^16.8.6 || ^17.0.1",
99
99
  "react-dom": "^16.8.6 || ^17.0.1"
100
100
  },
101
- "gitHead": "48db8a26c5e8f33a2f2056e175fee30e7aab2c85"
101
+ "gitHead": "4a4bf2a1dd6f15a09871cf84f634cd5cff095194"
102
102
  }
@@ -61,9 +61,17 @@
61
61
  + .#{$block-class}__expanded-row,
62
62
  .#{$block-class} .#{$block-class}__expanded-row:hover,
63
63
  .#{$block-class} .#{$block-class}__expandable-row--hover td {
64
+ border-top: none;
64
65
  background: $layer-hover;
65
66
  }
66
67
 
68
+ .#{$block-class}
69
+ .#{$carbon-prefix}--data-table
70
+ .#{$block-class}__carbon-row-expandable
71
+ td {
72
+ border-top: none;
73
+ }
74
+
67
75
  .#{$block-class}
68
76
  .#{$carbon-prefix}--data-table
69
77
  tbody
@@ -79,6 +87,23 @@
79
87
  border: none;
80
88
  }
81
89
 
90
+ .#{$block-class}
91
+ .#{$carbon-prefix}--data-table
92
+ .#{$block-class}__carbon-row-expanded:hover
93
+ td:not(.#{$block-class}__expandable-row-cell) {
94
+ border-bottom: 1px solid $border-subtle;
95
+ }
96
+
97
+ .#{$block-class}
98
+ .#{$carbon-prefix}--data-table
99
+ .#{$block-class}__carbon-row-expanded:hover
100
+ + .#{$block-class}__expanded-row
101
+ .#{$block-class}__expanded-row-content,
102
+ .#{$block-class}__expanded-row:hover .#{$block-class}__expanded-row-content {
103
+ background-color: $layer-hover;
104
+ transition: background-color $duration--fast-01 motion(entrance, productive);
105
+ }
106
+
82
107
  .#{$block-class}
83
108
  .#{$carbon-prefix}--data-table
84
109
  td.#{$block-class}__expanded-row-cell-wrapper {
@@ -30,7 +30,10 @@
30
30
  border-bottom: none;
31
31
  }
32
32
 
33
- .#{$block-class} .#{$block-class}__carbon-row-expandable {
33
+ .#{$block-class} .#{$block-class}__carbon-row-expandable,
34
+ .#{$block-class}
35
+ tr.#{$block-class}__carbon-nested-row
36
+ td.#{$block-class}__cell:not(.#{$block-class}__expandable-row-cell) {
34
37
  position: relative;
35
38
  }
36
39
 
@@ -58,6 +61,64 @@
58
61
  padding-left: $spacing-03;
59
62
  }
60
63
 
64
+ .#{$carbon-prefix}--data-table td.#{$block-class}__expandable-row-cell + td,
65
+ .#{$carbon-prefix}--data-table
66
+ .#{$block-class}__carbon-nested-row:not(
67
+ .#{$block-class}__carbon-row-expandable
68
+ )
69
+ td.#{$block-class}__cell:nth-of-type(2) {
70
+ position: relative;
71
+ }
72
+
73
+ .#{$carbon-prefix}--data-table
74
+ td.#{$block-class}__expandable-row-cell.#{$block-class}__expandable-row-cell--is-expanded
75
+ + td.#{$block-class}__checkbox-cell__checkbox-cell {
76
+ border-top: none;
77
+ }
78
+
79
+ .#{$carbon-prefix}--data-table
80
+ td.#{$block-class}__expandable-row-cell.#{$block-class}__expandable-row-cell--is-expanded
81
+ + td::before,
82
+ .#{$carbon-prefix}--data-table
83
+ .#{$block-class}__carbon-nested-row:not(
84
+ .#{$block-class}__carbon-row-expandable
85
+ )
86
+ td.#{$block-class}__cell:nth-of-type(2)::before,
87
+ .#{$carbon-prefix}--data-table
88
+ .#{$block-class}__carbon-nested-row
89
+ td.#{$block-class}__expandable-row-cell
90
+ + td::before {
91
+ position: absolute;
92
+ /* stylelint-disable-next-line carbon/layout-token-use */
93
+ bottom: -1px;
94
+ left: 0;
95
+ width: 1rem;
96
+ height: 1px;
97
+ background-color: $ui-01;
98
+ content: '';
99
+ transition: background-color $duration--fast-01 motion(entrance, productive);
100
+ }
101
+
102
+ .#{$carbon-prefix}--data-table
103
+ tr:hover
104
+ td.#{$block-class}__expandable-row-cell.#{$block-class}__expandable-row-cell--is-expanded
105
+ + td::before,
106
+ .#{$carbon-prefix}--data-table
107
+ .#{$block-class}__carbon-nested-row:hover
108
+ td.#{$block-class}__expandable-row-cell
109
+ + td::before,
110
+ .#{$carbon-prefix}--data-table
111
+ .#{$block-class}__expandable-row--hover
112
+ td.#{$block-class}__expandable-row-cell
113
+ + td::before,
114
+ .#{$carbon-prefix}--data-table
115
+ .#{$block-class}__carbon-nested-row:hover:not(
116
+ .#{$block-class}__carbon-row-expandable
117
+ )
118
+ td.#{$block-class}__cell:nth-of-type(2)::before {
119
+ background-color: $layer-hover;
120
+ }
121
+
61
122
  .#{$block-class}__carbon-row-expanded {
62
123
  .#{$block-class}__expandable-row-cell {
63
124
  border-bottom: none;
@@ -34,7 +34,7 @@
34
34
  position: relative;
35
35
  z-index: 0;
36
36
  overflow: auto;
37
- padding: 0 $spacing-05;
37
+ padding: 0 $spacing-05 $spacing-11 $spacing-05;
38
38
  overscroll-behavior: contain;
39
39
  }
40
40