@carbon/ibm-products 1.45.0 → 1.46.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. package/README.md +17 -0
  2. package/css/index-full-carbon.css +38 -21
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +4 -2
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon.css +38 -21
  7. package/css/index-without-carbon.css.map +1 -1
  8. package/css/index-without-carbon.min.css +4 -2
  9. package/css/index-without-carbon.min.css.map +1 -1
  10. package/css/index.css +38 -21
  11. package/css/index.css.map +1 -1
  12. package/css/index.min.css +4 -2
  13. package/css/index.min.css.map +1 -1
  14. package/es/components/Datagrid/Datagrid/DatagridContent.js +2 -2
  15. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +18 -228
  16. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +39 -268
  17. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
  18. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +2 -1
  19. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +276 -0
  20. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +6 -6
  21. package/es/components/Datagrid/useSortableColumns.js +16 -10
  22. package/es/components/Datagrid/utils/DatagridActions.js +2 -2
  23. package/lib/components/Datagrid/Datagrid/DatagridContent.js +2 -2
  24. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +22 -224
  25. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +44 -265
  26. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
  27. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +8 -1
  28. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +280 -0
  29. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +5 -5
  30. package/lib/components/Datagrid/useSortableColumns.js +9 -3
  31. package/lib/components/Datagrid/utils/DatagridActions.js +2 -2
  32. package/package.json +8 -8
  33. package/scss/components/Datagrid/styles/_datagrid.scss +2 -4
  34. package/scss/components/Datagrid/styles/_useSortableColumns.scss +33 -17
  35. package/scss/components/OptionsTile/_options-tile.scss +8 -1
@@ -0,0 +1,280 @@
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.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _react = _interopRequireWildcard(require("react"));
14
+ var _carbonComponentsReact = require("carbon-components-react");
15
+ var _constants = require("../constants");
16
+ var _useInitialStateFromFilters = _interopRequireDefault(require("./useInitialStateFromFilters"));
17
+ var _utils = require("../utils");
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; }
20
+ 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
+ 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; }
22
+ var useFilters = function useFilters(_ref) {
23
+ var updateMethod = _ref.updateMethod,
24
+ _ref$filters = _ref.filters,
25
+ filters = _ref$filters === void 0 ? [] : _ref$filters,
26
+ setAllFilters = _ref.setAllFilters,
27
+ variation = _ref.variation;
28
+ /** State */
29
+ var _useInitialStateFromF = (0, _useInitialStateFromFilters.default)(filters, variation),
30
+ _useInitialStateFromF2 = (0, _slicedToArray2.default)(_useInitialStateFromF, 2),
31
+ filtersState = _useInitialStateFromF2[0],
32
+ setFiltersState = _useInitialStateFromF2[1];
33
+ var _useState = (0, _react.useState)([]),
34
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
35
+ filtersObjectArray = _useState2[0],
36
+ setFiltersObjectArray = _useState2[1];
37
+
38
+ // When using batch actions we have to store the filters to then apply them later
39
+ var prevFiltersRef = (0, _react.useRef)(JSON.stringify(filtersState));
40
+ var prevFiltersObjectArrayRef = (0, _react.useRef)(JSON.stringify(filtersObjectArray));
41
+
42
+ /** Methods */
43
+ // If the user decides to cancel or click outside the flyout, it reverts back to the filters that were
44
+ // there when they opened the flyout
45
+ var revertToPreviousFilters = function revertToPreviousFilters() {
46
+ setFiltersState(JSON.parse(prevFiltersRef.current));
47
+ setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
48
+ };
49
+ var reset = function reset() {
50
+ // Get the initial values for the filters
51
+ var initialFiltersState = (0, _utils.getInitialStateFromFilters)(filters, variation);
52
+ var initialFiltersObjectArray = [];
53
+
54
+ // Set the state to the initial values
55
+ setFiltersState(initialFiltersState);
56
+ setFiltersObjectArray(initialFiltersObjectArray);
57
+ setAllFilters([]);
58
+
59
+ // Update their respective refs so everything is in sync
60
+ prevFiltersRef.current = JSON.stringify(initialFiltersState);
61
+ prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
62
+ };
63
+ var applyFilters = function applyFilters(_ref2) {
64
+ var column = _ref2.column,
65
+ value = _ref2.value,
66
+ type = _ref2.type;
67
+ // If no end date is selected return because we need the end date to do computations
68
+ if (type === _constants.DATE && value.length > 0 && !value[1]) {
69
+ return;
70
+ }
71
+ var filtersObjectArrayCopy = (0, _toConsumableArray2.default)(filtersObjectArray);
72
+ // // check if the filter already exists in the array
73
+ var filter = filtersObjectArrayCopy.find(function (item) {
74
+ return item.id === column;
75
+ });
76
+
77
+ // // if filter exists in array then update the filter's new value
78
+ if (filter) {
79
+ filter.value = value;
80
+ } else {
81
+ filtersObjectArrayCopy.push({
82
+ id: column,
83
+ value: value,
84
+ type: type
85
+ });
86
+ }
87
+
88
+ // ATTENTION: this is where you would reset or remove individual filters from the filters array
89
+ if (type === _constants.CHECKBOX) {
90
+ /**
91
+ When all checkboxes of a group are all unselected the value still exists in the filtersObjectArray
92
+ This checks if all the checkboxes are selected = false and removes it from the array
93
+ */
94
+ var index = filtersObjectArrayCopy.findIndex(function (filter) {
95
+ return filter.id === column;
96
+ });
97
+
98
+ // If all the selected state is false remove from array
99
+ var shouldRemoveFromArray = filtersObjectArrayCopy[index].value.every(function (val) {
100
+ return val.selected === false;
101
+ });
102
+ if (shouldRemoveFromArray) {
103
+ filtersObjectArrayCopy.splice(index, 1);
104
+ }
105
+ } else if (type === _constants.DATE) {
106
+ if (value.length === 0) {
107
+ /**
108
+ Checks to see if the date value is an empty array, if it is that means the user wants
109
+ to reset the date filter
110
+ */
111
+ var _index = filtersObjectArrayCopy.findIndex(function (filter) {
112
+ return filter.id === column;
113
+ });
114
+
115
+ // Remove it from the filters array since there is nothing to filter
116
+ filtersObjectArrayCopy.splice(_index, 1);
117
+ }
118
+ } else if (type === _constants.DROPDOWN || type === _constants.RADIO) {
119
+ if (value === 'Any') {
120
+ /**
121
+ Checks to see if the selected value is 'Any', that means the user wants
122
+ to reset specific filter
123
+ */
124
+ var _index2 = filtersObjectArrayCopy.findIndex(function (filter) {
125
+ return filter.id === column;
126
+ });
127
+
128
+ // Remove it from the filters array
129
+ filtersObjectArrayCopy.splice(_index2, 1);
130
+ }
131
+ }
132
+ setFiltersObjectArray(filtersObjectArrayCopy);
133
+
134
+ // // Automatically apply the filters if the updateMethod is instant
135
+ if (updateMethod === _constants.INSTANT) {
136
+ setAllFilters(filtersObjectArrayCopy);
137
+ }
138
+ };
139
+ /** Render the individual filter component */
140
+ var renderFilter = function renderFilter(_ref3) {
141
+ var _filtersState$column, _filtersState$column2;
142
+ var type = _ref3.type,
143
+ column = _ref3.column,
144
+ components = _ref3.props;
145
+ var isPanel = variation === _constants.PANEL;
146
+ switch (type) {
147
+ case _constants.DATE:
148
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.DatePicker, (0, _extends2.default)({}, components.DatePicker, {
149
+ onChange: function onChange(value) {
150
+ var _components$DatePicke, _components$DatePicke2;
151
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
152
+ value: value,
153
+ type: type
154
+ })));
155
+ applyFilters({
156
+ column: column,
157
+ value: value,
158
+ type: type
159
+ });
160
+ (_components$DatePicke = (_components$DatePicke2 = components.DatePicker).onChange) === null || _components$DatePicke === void 0 ? void 0 : _components$DatePicke.call(_components$DatePicke2, value);
161
+ },
162
+ value: filtersState[column].value,
163
+ datePickerType: "range",
164
+ light: isPanel
165
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.DatePickerInput, (0, _extends2.default)({
166
+ placeholder: "mm/dd/yyyy",
167
+ labelText: "Start date"
168
+ }, components.DatePickerInput.start)), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.DatePickerInput, (0, _extends2.default)({
169
+ placeholder: "mm/dd/yyyy",
170
+ labelText: "End date"
171
+ }, components.DatePickerInput.end)));
172
+ case _constants.NUMBER:
173
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.NumberInput, (0, _extends2.default)({
174
+ step: 1,
175
+ allowEmpty: true,
176
+ hideSteppers: true
177
+ }, components.NumberInput, {
178
+ onChange: function onChange(event) {
179
+ var _components$NumberInp, _components$NumberInp2;
180
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
181
+ value: event.target.value,
182
+ type: type
183
+ })));
184
+ applyFilters({
185
+ column: column,
186
+ value: event.target.value,
187
+ type: type
188
+ });
189
+ (_components$NumberInp = (_components$NumberInp2 = components.NumberInput).onChange) === null || _components$NumberInp === void 0 ? void 0 : _components$NumberInp.call(_components$NumberInp2, event);
190
+ },
191
+ value: filtersState[column].value,
192
+ light: isPanel
193
+ }));
194
+ case _constants.CHECKBOX:
195
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
196
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, (0, _extends2.default)({
197
+ key: option.labelText
198
+ }, option, {
199
+ onChange: function onChange(isSelected) {
200
+ var _option$onChange;
201
+ var checkboxCopy = filtersState[column].value;
202
+ var foundCheckbox = checkboxCopy.find(function (checkbox) {
203
+ return checkbox.value === option.value;
204
+ });
205
+ foundCheckbox.selected = isSelected;
206
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
207
+ value: checkboxCopy,
208
+ type: type
209
+ })));
210
+ applyFilters({
211
+ column: column,
212
+ value: (0, _toConsumableArray2.default)(filtersState[column].value),
213
+ type: type
214
+ });
215
+ (_option$onChange = option.onChange) === null || _option$onChange === void 0 ? void 0 : _option$onChange.call(option, isSelected);
216
+ },
217
+ checked: option.selected
218
+ }));
219
+ }));
220
+ case _constants.RADIO:
221
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.FormGroup, components.FormGroup, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButtonGroup, (0, _extends2.default)({}, components.RadioButtonGroup, {
222
+ valueSelected: ((_filtersState$column = filtersState[column]) === null || _filtersState$column === void 0 ? void 0 : _filtersState$column.value) === '' ? 'Any' : (_filtersState$column2 = filtersState[column]) === null || _filtersState$column2 === void 0 ? void 0 : _filtersState$column2.value,
223
+ onChange: function onChange(selected) {
224
+ var _components$RadioButt, _components$RadioButt2;
225
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
226
+ value: selected,
227
+ type: type
228
+ })));
229
+ applyFilters({
230
+ column: column,
231
+ value: selected,
232
+ type: type
233
+ });
234
+ (_components$RadioButt = (_components$RadioButt2 = components.RadioButtonGroup).onChange) === null || _components$RadioButt === void 0 ? void 0 : _components$RadioButt.call(_components$RadioButt2, selected);
235
+ }
236
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
237
+ id: "any",
238
+ labelText: "Any",
239
+ value: "Any"
240
+ }), components.RadioButton.map(function (radio) {
241
+ var _ref4, _radio$id;
242
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, (0, _extends2.default)({
243
+ key: (_ref4 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref4 !== void 0 ? _ref4 : radio.value
244
+ }, radio));
245
+ })));
246
+ case _constants.DROPDOWN:
247
+ return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, (0, _extends2.default)({}, components.Dropdown, {
248
+ items: ['Any'].concat((0, _toConsumableArray2.default)(components.Dropdown.items)),
249
+ selectedItem: filtersState[column].value === '' ? 'Any' : filtersState[column].value,
250
+ onChange: function onChange(_ref5) {
251
+ var _components$Dropdown$, _components$Dropdown;
252
+ var selectedItem = _ref5.selectedItem;
253
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
254
+ value: selectedItem,
255
+ type: type
256
+ })));
257
+ applyFilters({
258
+ column: column,
259
+ value: selectedItem,
260
+ type: type
261
+ });
262
+ (_components$Dropdown$ = (_components$Dropdown = components.Dropdown).onChange) === null || _components$Dropdown$ === void 0 ? void 0 : _components$Dropdown$.call(_components$Dropdown, selectedItem);
263
+ },
264
+ light: isPanel
265
+ }));
266
+ }
267
+ };
268
+ return {
269
+ filtersState: filtersState,
270
+ setFiltersState: setFiltersState,
271
+ prevFiltersObjectArrayRef: prevFiltersObjectArrayRef,
272
+ prevFiltersRef: prevFiltersRef,
273
+ revertToPreviousFilters: revertToPreviousFilters,
274
+ reset: reset,
275
+ renderFilter: renderFilter,
276
+ filtersObjectArray: filtersObjectArray
277
+ };
278
+ };
279
+ var _default = useFilters;
280
+ exports.default = _default;
@@ -20,7 +20,7 @@ var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
20
20
  var type = _ref.type,
21
21
  column = _ref.column,
22
22
  props = _ref.props;
23
- if (type === 'checkbox') {
23
+ if (type === _constants.CHECKBOX) {
24
24
  initialFilterState[column] = {
25
25
  value: props.Checkbox.map(function (_ref2) {
26
26
  var id = _ref2.id,
@@ -35,22 +35,22 @@ var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
35
35
  }),
36
36
  type: type
37
37
  };
38
- } else if (type === 'date') {
38
+ } else if (type === _constants.DATE) {
39
39
  initialFilterState[column] = {
40
40
  value: [null, null],
41
41
  type: type
42
42
  };
43
- } else if (type === 'number') {
43
+ } else if (type === _constants.NUMBER) {
44
44
  initialFilterState[column] = {
45
45
  value: '',
46
46
  type: type
47
47
  };
48
- } else if (type === 'radio') {
48
+ } else if (type === _constants.RADIO) {
49
49
  initialFilterState[column] = {
50
50
  value: '',
51
51
  type: type
52
52
  };
53
- } else if (type === 'dropdown') {
53
+ } else if (type === _constants.DROPDOWN) {
54
54
  initialFilterState[column] = {
55
55
  value: '',
56
56
  type: type
@@ -8,10 +8,13 @@ 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"));
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ var _settings = require("../../settings");
11
13
  var _carbonComponentsReact = require("carbon-components-react");
12
14
  var _iconsReact = require("@carbon/icons-react");
13
15
  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; }
14
16
  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; }
17
+ var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
15
18
  var ordering = {
16
19
  ASC: 'ASC',
17
20
  DESC: 'DESC',
@@ -39,7 +42,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
39
42
  case false:
40
43
  return _iconsReact.ArrowUp16;
41
44
  case true:
42
- return _iconsReact.ArrowDown16;
45
+ return _iconsReact.ArrowUp16;
43
46
  default:
44
47
  return _iconsReact.Arrows16;
45
48
  }
@@ -47,16 +50,19 @@ var useSortableColumns = function useSortableColumns(hooks) {
47
50
  return _iconsReact.Arrows16;
48
51
  };
49
52
  var Header = function Header(headerProp) {
53
+ var _cx;
50
54
  return column.disableSortBy === true ? column.Header : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
51
55
  onClick: function onClick() {
52
56
  return onSortClick(headerProp.column);
53
57
  },
54
58
  kind: "ghost",
55
- renderIcon: icon(headerProp.column)
59
+ renderIcon: icon(headerProp.column),
60
+ className: (0, _classnames.default)("".concat(_settings.carbon.prefix, "--table-sort ").concat(blockClass, "--table-sort"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--table-sort--desc"), headerProp.column.isSortedDesc), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--table-sort--asc"), headerProp.column.isSortedDesc === false), _cx))
56
61
  }, column.Header);
57
62
  };
58
63
  return _objectSpread(_objectSpread({}, column), {}, {
59
- Header: Header
64
+ Header: Header,
65
+ minWidth: column.disableSortBy === true ? 0 : 90
60
66
  });
61
67
  });
62
68
  return (0, _toConsumableArray2.default)(sortableColumns);
@@ -26,7 +26,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
26
26
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
27
27
  var DatagridActions = function DatagridActions(datagridState) {
28
28
  var _useContext = (0, _react.useContext)(_Filtering.FilterContext),
29
- setLeftPanelOpen = _useContext.setLeftPanelOpen;
29
+ setPanelOpen = _useContext.setPanelOpen;
30
30
  var selectedFlatRows = datagridState.selectedFlatRows,
31
31
  setGlobalFilter = datagridState.setGlobalFilter,
32
32
  CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
@@ -68,7 +68,7 @@ var DatagridActions = function DatagridActions(datagridState) {
68
68
  iconDescription: filterProps.panelIconDescription,
69
69
  className: "".concat(blockClass, "-filter-panel-open-button"),
70
70
  onClick: function onClick() {
71
- return setLeftPanelOpen(function (open) {
71
+ return setPanelOpen(function (open) {
72
72
  return !open;
73
73
  });
74
74
  },
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.45.0",
4
+ "version": "1.46.1",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -53,21 +53,21 @@
53
53
  "devDependencies": {
54
54
  "@babel/cli": "^7.20.7",
55
55
  "@babel/core": "^7.20.12",
56
- "babel-preset-ibm-cloud-cognitive": "^0.14.26",
56
+ "babel-preset-ibm-cloud-cognitive": "^0.14.27",
57
57
  "chalk": "^4.1.2",
58
58
  "change-case": "^4.1.2",
59
59
  "copyfiles": "^2.4.1",
60
60
  "cross-env": "^7.0.3",
61
61
  "fs-extra": "^11.1.0",
62
62
  "glob": "^8.1.0",
63
- "jest": "^29.4.1",
64
- "jest-config-ibm-cloud-cognitive": "^0.24.12",
65
- "jest-environment-jsdom": "^29.4.1",
63
+ "jest": "^29.4.2",
64
+ "jest-config-ibm-cloud-cognitive": "^0.24.13",
65
+ "jest-environment-jsdom": "^29.4.2",
66
66
  "namor": "^1.1.2",
67
- "npm-check-updates": "^16.6.3",
67
+ "npm-check-updates": "^16.7.4",
68
68
  "npm-run-all": "^4.1.5",
69
69
  "rimraf": "~3 || > 4.1",
70
- "sass": "^1.58.0",
70
+ "sass": "^1.58.1",
71
71
  "yargs": "^17.6.2"
72
72
  },
73
73
  "dependencies": {
@@ -95,5 +95,5 @@
95
95
  "react": "^16.8.6 || ^17.0.1",
96
96
  "react-dom": "^16.8.6 || ^17.0.1"
97
97
  },
98
- "gitHead": "68d8819759209ba30005c751ca0b49ce5e22ed56"
98
+ "gitHead": "34e1d580adb4bb2e670bf0b3cde042a697c7204f"
99
99
  }
@@ -447,7 +447,9 @@
447
447
  }
448
448
 
449
449
  .#{$block-class}__table-toolbar {
450
+ display: flex;
450
451
  flex: 1 0 auto;
452
+ align-items: flex-end;
451
453
  }
452
454
  .#{$carbon-prefix}--table-toolbar {
453
455
  background: transparent;
@@ -457,10 +459,6 @@
457
459
  flex: 1 1 100%;
458
460
  }
459
461
 
460
- .#{$carbon-prefix}--table-toolbar {
461
- padding-top: $spacing-07;
462
- }
463
-
464
462
  .#{$block-class}__toolbar-divider {
465
463
  position: relative;
466
464
  }
@@ -1,10 +1,9 @@
1
- /*
2
- * Licensed Materials - Property of IBM
3
- * 5724-Q36
4
- * (c) Copyright IBM Corp. 2020
5
- * US Government Users Restricted Rights - Use, duplication or disclosure
6
- * restricted by GSA ADP Schedule Contract with IBM Corp.
7
- */
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2023
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
8
7
 
9
8
  @import './variables';
10
9
 
@@ -18,38 +17,55 @@
18
17
  width: 100%;
19
18
  height: 100%;
20
19
  }
21
- .#{$carbon-prefix}--table-header-label button:focus,
22
- .#{$carbon-prefix}--table-header-label button:active,
23
- .#{$carbon-prefix}--table-header-label button:focus svg {
20
+ .#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort:focus,
21
+ .#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort:active,
22
+ .#{$carbon-prefix}--table-header-label
23
+ .#{$carbon-prefix}--table-sort:focus
24
+ svg {
24
25
  /* stylelint-disable-next-line declaration-no-important */
25
26
  background: none !important;
26
27
  /* stylelint-disable-next-line declaration-no-important */
27
28
  color: $text-01 !important;
28
- /* stylelint-disable-next-line declaration-no-important */
29
- outline: none !important;
30
29
  }
31
- .#{$carbon-prefix}--table-header-label button {
30
+ .#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort:focus,
31
+ .#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort:active {
32
+ + .#{$block-class}__resizer {
33
+ z-index: -1;
34
+ }
35
+ }
36
+ .#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort {
32
37
  width: 100%;
33
38
  min-width: 100%;
34
- min-height: 0;
35
- padding: 0;
39
+ padding: 0 $spacing-05;
36
40
  border: none;
37
41
  /* stylelint-disable-next-line declaration-no-important */
38
42
  background: none !important;
39
- box-shadow: none;
40
43
  /* stylelint-disable-next-line declaration-no-important */
41
44
  color: $text-01 !important;
42
45
  font: inherit;
43
46
  }
44
- .#{$carbon-prefix}--table-header-label button svg {
47
+ .#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort svg {
45
48
  fill: $text-01;
49
+ opacity: 0;
50
+ transition: transform $duration--fast-02 motion(standard, productive);
46
51
  visibility: hidden;
47
52
  }
53
+
54
+ .#{$carbon-prefix}--table-sort.#{$block-class}--table-sort {
55
+ width: calc(100% + #{$spacing-07}); // offset due to inner label
56
+ margin: 0 calc(-1 * #{$spacing-05}); // fill width of parent table column header
57
+ }
48
58
  }
49
59
 
50
60
  .#{$block-class}__sortableColumn:hover,
61
+ .#{$block-class}__sortableColumn:focus-within,
51
62
  .#{$block-class}__sortableColumn.#{$block-class}__isSorted {
52
63
  .#{$carbon-prefix}--table-header-label svg {
64
+ opacity: 1;
53
65
  visibility: visible;
54
66
  }
55
67
  }
68
+
69
+ .#{$block-class}__sortableColumn .#{$block-class}--table-sort--desc svg {
70
+ transform: rotate(180deg);
71
+ }
@@ -23,12 +23,19 @@
23
23
  $block-class: #{$pkg-prefix}--options-tile;
24
24
 
25
25
  .#{$block-class} {
26
+ position: relative;
26
27
  border-bottom: 1px solid $ui-03;
27
28
  background-color: $ui-01;
28
29
  }
29
30
 
30
31
  .#{$block-class}__toggle-container {
31
- position: relative;
32
+ position: absolute;
33
+ top: 0;
34
+ right: 0;
35
+ bottom: 0;
36
+ width: calc(
37
+ #{$spacing-05} + 2rem + #{$spacing-05}
38
+ ); // spacing + toggle width + spacing
32
39
  }
33
40
 
34
41
  .#{$block-class}__toggle {