@carbon/ibm-products 1.48.0 → 1.49.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.
- package/css/index-full-carbon.css +37 -5
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +3 -3
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +36 -4
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +2 -2
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +37 -5
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +3 -3
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +37 -5
- package/css/index.css.map +1 -1
- package/css/index.min.css +3 -3
- package/css/index.min.css.map +1 -1
- package/es/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -3
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -62
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +5 -2
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +105 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +17 -5
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +11 -0
- package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +8 -8
- package/es/components/Datagrid/index.js +8 -7
- package/es/components/Datagrid/useOnRowClick.js +3 -3
- package/es/components/Datagrid/useSortableColumns.js +6 -5
- package/es/components/Datagrid/utils/getAutoSizedColumnWidth.js +27 -0
- package/es/components/InlineEditV2/InlineEditV2.js +6 -3
- package/es/components/SidePanel/SidePanel.js +1 -1
- package/es/components/index.js +1 -1
- package/es/global/js/utils/story-helper.js +9 -0
- package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -3
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -62
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +5 -2
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +113 -0
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +17 -5
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +11 -0
- package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -1
- package/lib/components/Datagrid/index.js +8 -1
- package/lib/components/Datagrid/useOnRowClick.js +3 -3
- package/lib/components/Datagrid/useSortableColumns.js +6 -5
- package/lib/components/Datagrid/utils/getAutoSizedColumnWidth.js +35 -0
- package/lib/components/InlineEditV2/InlineEditV2.js +6 -3
- package/lib/components/SidePanel/SidePanel.js +1 -1
- package/lib/components/index.js +6 -0
- package/lib/global/js/utils/story-helper.js +12 -2
- package/package.json +2 -2
- package/scss/components/Datagrid/styles/_datagrid.scss +1 -1
- package/scss/components/InlineEditV1/_inline-edit-v1.scss +1 -5
- package/scss/components/InlineEditV2/_inline-edit-v2.scss +41 -3
- package/scss/components/SidePanel/_side-panel.scss +2 -1
@@ -14,9 +14,8 @@ import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
14
14
|
import { Checkbox } from 'carbon-components-react';
|
15
15
|
import update from 'immutability-helper';
|
16
16
|
import { pkg } from '../../../../../settings';
|
17
|
-
import DraggableElement from '../../DraggableElement';
|
18
|
-
import { isColumnVisible } from './common';
|
19
17
|
import classNames from 'classnames';
|
18
|
+
import { DraggableItemsList } from './DraggableItemsList';
|
20
19
|
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
21
20
|
var getNextIndex = function getNextIndex(array, currentIndex, key) {
|
22
21
|
var newIndex = -1;
|
@@ -36,7 +35,8 @@ var Columns = function Columns(_ref) {
|
|
36
35
|
onSelectColumn = _ref.onSelectColumn,
|
37
36
|
assistiveTextInstructionsLabel = _ref.assistiveTextInstructionsLabel,
|
38
37
|
assistiveTextDisabledInstructionsLabel = _ref.assistiveTextDisabledInstructionsLabel,
|
39
|
-
selectAllLabel = _ref.selectAllLabel
|
38
|
+
selectAllLabel = _ref.selectAllLabel,
|
39
|
+
isTableSortable = _ref.isTableSortable;
|
40
40
|
var _React$useState = React.useState(''),
|
41
41
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
42
42
|
ariaRegionText = _React$useState2[0],
|
@@ -87,65 +87,17 @@ var Columns = function Columns(_ref) {
|
|
87
87
|
},
|
88
88
|
id: "".concat(blockClass, "__customization-column-select-all"),
|
89
89
|
labelText: selectAllLabel
|
90
|
-
})),
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
var firstWord = res !== null ? res[0] === '' ? res[1].charAt(0).toUpperCase() + res[1].substring(1) : res[0].charAt(0).toUpperCase() + res[0].substring(1) : null;
|
102
|
-
var highlightedText = res !== null ? res[0] === '' ? "<strong>".concat(firstWord, "</strong>") + res[2] : firstWord + "<strong>".concat(res[1], "</strong>") + res[2] : colDef.Header.props.title;
|
103
|
-
var isFrozenColumn = !!colDef.sticky;
|
104
|
-
var listContents = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {
|
105
|
-
wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
|
106
|
-
checked: isColumnVisible(colDef),
|
107
|
-
disabled: isFrozenColumn,
|
108
|
-
onChange: onSelectColumn.bind(null, colDef),
|
109
|
-
id: "".concat(blockClass, "__customization-column-").concat(colDef.id),
|
110
|
-
labelText: colDef.Header.props.title,
|
111
|
-
title: colDef.Header.props.title,
|
112
|
-
className: "".concat(blockClass, "__customize-columns-checkbox"),
|
113
|
-
hideLabel: true
|
114
|
-
}), /*#__PURE__*/React.createElement("div", {
|
115
|
-
dangerouslySetInnerHTML: {
|
116
|
-
__html: highlightedText
|
117
|
-
}
|
118
|
-
}));
|
119
|
-
return /*#__PURE__*/React.createElement(DraggableElement, {
|
120
|
-
key: colDef.id,
|
121
|
-
index: i,
|
122
|
-
listData: columns,
|
123
|
-
setListData: setColumnsObject,
|
124
|
-
id: "dnd-datagrid-columns-".concat(colDef.id),
|
125
|
-
type: "column-customization",
|
126
|
-
disabled: filterString.length > 0 || isFrozenColumn,
|
127
|
-
ariaLabel: colDef.Header.props.title,
|
128
|
-
onGrab: setAriaRegionText,
|
129
|
-
isFocused: focusIndex === i,
|
130
|
-
moveElement: moveElement,
|
131
|
-
onArrowKeyDown: function onArrowKeyDown(e, isGrabbed, currentIndex) {
|
132
|
-
if (isGrabbed) {
|
133
|
-
var _columns$nextIndex;
|
134
|
-
var nextIndex = getNextIndex(columns, currentIndex, e.key);
|
135
|
-
e.preventDefault();
|
136
|
-
e.stopPropagation();
|
137
|
-
if (nextIndex >= 0 && !((_columns$nextIndex = columns[nextIndex]) !== null && _columns$nextIndex !== void 0 && _columns$nextIndex.sticky)) {
|
138
|
-
setFocusIndex(nextIndex);
|
139
|
-
moveElement(currentIndex, nextIndex);
|
140
|
-
e.target.scrollIntoView({
|
141
|
-
block: 'center'
|
142
|
-
});
|
143
|
-
}
|
144
|
-
}
|
145
|
-
},
|
146
|
-
isSticky: isFrozenColumn,
|
147
|
-
selected: isColumnVisible(colDef)
|
148
|
-
}, listContents);
|
90
|
+
})), /*#__PURE__*/React.createElement(DraggableItemsList, {
|
91
|
+
columns: columns,
|
92
|
+
filterString: filterString,
|
93
|
+
focusIndex: focusIndex,
|
94
|
+
getNextIndex: getNextIndex,
|
95
|
+
isTableSortable: isTableSortable,
|
96
|
+
moveElement: moveElement,
|
97
|
+
onSelectColumn: onSelectColumn,
|
98
|
+
setAriaRegionText: setAriaRegionText,
|
99
|
+
setColumnsObject: setColumnsObject,
|
100
|
+
setFocusIndex: setFocusIndex
|
149
101
|
}))));
|
150
102
|
};
|
151
103
|
Columns.propTypes = {
|
@@ -156,6 +108,7 @@ Columns.propTypes = {
|
|
156
108
|
filterString: PropTypes.string.isRequired,
|
157
109
|
getVisibleColumnsCount: PropTypes.func.isRequired,
|
158
110
|
instructionsLabel: PropTypes.string,
|
111
|
+
isTableSortable: PropTypes.bool.isRequired,
|
159
112
|
onSelectColumn: PropTypes.func.isRequired,
|
160
113
|
selectAllLabel: PropTypes.string,
|
161
114
|
setColumnStatus: PropTypes.func,
|
package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js
CHANGED
@@ -41,7 +41,8 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
|
|
41
41
|
_ref$assistiveTextDis = _ref.assistiveTextDisabledInstructionsLabel,
|
42
42
|
assistiveTextDisabledInstructionsLabel = _ref$assistiveTextDis === void 0 ? 'Reordering columns are disabled because they are filtered currently.' : _ref$assistiveTextDis,
|
43
43
|
_ref$selectAllLabel = _ref.selectAllLabel,
|
44
|
-
selectAllLabel = _ref$selectAllLabel === void 0 ? 'Column name' : _ref$selectAllLabel
|
44
|
+
selectAllLabel = _ref$selectAllLabel === void 0 ? 'Column name' : _ref$selectAllLabel,
|
45
|
+
isTableSortable = _ref.isTableSortable;
|
45
46
|
var _useState = useState(''),
|
46
47
|
_useState2 = _slicedToArray(_useState, 2),
|
47
48
|
visibleColumnsCount = _useState2[0],
|
@@ -151,7 +152,8 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
|
|
151
152
|
setColumnObjects(cols);
|
152
153
|
setDirty();
|
153
154
|
},
|
154
|
-
selectAllLabel: selectAllLabel
|
155
|
+
selectAllLabel: selectAllLabel,
|
156
|
+
isTableSortable: isTableSortable
|
155
157
|
}));
|
156
158
|
};
|
157
159
|
CustomizeColumnsTearsheet.propTypes = {
|
@@ -162,6 +164,7 @@ CustomizeColumnsTearsheet.propTypes = {
|
|
162
164
|
findColumnPlaceholderLabel: PropTypes.string,
|
163
165
|
instructionsLabel: PropTypes.string,
|
164
166
|
isOpen: PropTypes.bool.isRequired,
|
167
|
+
isTableSortable: PropTypes.bool.isRequired,
|
165
168
|
onSaveColumnPrefs: PropTypes.func.isRequired,
|
166
169
|
originalColumnDefinitions: PropTypes.array.isRequired,
|
167
170
|
primaryButtonTextLabel: PropTypes.string,
|
@@ -0,0 +1,105 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2023, 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
|
+
*/
|
7
|
+
|
8
|
+
import React from 'react';
|
9
|
+
import { PropTypes } from 'prop-types';
|
10
|
+
import { Checkbox } from 'carbon-components-react';
|
11
|
+
import { isColumnVisible } from './common';
|
12
|
+
import DraggableElement from '../../DraggableElement';
|
13
|
+
import { pkg } from '../../../../../settings';
|
14
|
+
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
15
|
+
export var DraggableItemsList = function DraggableItemsList(_ref) {
|
16
|
+
var columns = _ref.columns,
|
17
|
+
filterString = _ref.filterString,
|
18
|
+
focusIndex = _ref.focusIndex,
|
19
|
+
getNextIndex = _ref.getNextIndex,
|
20
|
+
isTableSortable = _ref.isTableSortable,
|
21
|
+
moveElement = _ref.moveElement,
|
22
|
+
onSelectColumn = _ref.onSelectColumn,
|
23
|
+
setAriaRegionText = _ref.setAriaRegionText,
|
24
|
+
setColumnsObject = _ref.setColumnsObject,
|
25
|
+
setFocusIndex = _ref.setFocusIndex;
|
26
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, columns
|
27
|
+
// hide the columns without Header, e.g the sticky actions, spacer
|
28
|
+
.filter(function (colDef) {
|
29
|
+
var _colDef$Header$props$, _colDef$Header$props;
|
30
|
+
var sortableTitle = isTableSortable && ((_colDef$Header$props$ = colDef.Header().props.children.props) === null || _colDef$Header$props$ === void 0 ? void 0 : _colDef$Header$props$.title);
|
31
|
+
return !!colDef.Header.props && !!((_colDef$Header$props = colDef.Header.props) !== null && _colDef$Header$props !== void 0 && _colDef$Header$props.title) || isTableSortable && !!sortableTitle;
|
32
|
+
}).filter(function (colDef) {
|
33
|
+
return !colDef.isAction;
|
34
|
+
}).filter(function (colDef) {
|
35
|
+
var _colDef$Header$props$2, _colDef$Header$props2, _colDef$Header$props3;
|
36
|
+
var sortableTitle = isTableSortable && ((_colDef$Header$props$2 = colDef.Header().props.children.props) === null || _colDef$Header$props$2 === void 0 ? void 0 : _colDef$Header$props$2.title);
|
37
|
+
return filterString.length === 0 || (isTableSortable ? sortableTitle === null || sortableTitle === void 0 ? void 0 : sortableTitle.toLowerCase().includes(filterString) : (_colDef$Header$props2 = colDef.Header.props) === null || _colDef$Header$props2 === void 0 ? void 0 : (_colDef$Header$props3 = _colDef$Header$props2.title) === null || _colDef$Header$props3 === void 0 ? void 0 : _colDef$Header$props3.toLowerCase().includes(filterString)) && colDef.id !== 'spacer';
|
38
|
+
}).map(function (colDef, i) {
|
39
|
+
var _colDef$Header$props$3, _colDef$Header$props4, _colDef$Header$props5, _colDef$Header$props6, _colDef$Header$props7;
|
40
|
+
var isSortableColumn = !!colDef.canSort && !!isTableSortable;
|
41
|
+
var sortableTitle = isTableSortable && ((_colDef$Header$props$3 = colDef.Header().props.children.props) === null || _colDef$Header$props$3 === void 0 ? void 0 : _colDef$Header$props$3.title);
|
42
|
+
var searchString = new RegExp('(' + filterString + ')');
|
43
|
+
var res = filterString.length ? isSortableColumn ? sortableTitle.toLowerCase().split(searchString) : colDef.Header.props.title.toLowerCase().split(searchString) : null;
|
44
|
+
var firstWord = res !== null ? res[0] === '' ? res[1].charAt(0).toUpperCase() + res[1].substring(1) : res[0].charAt(0).toUpperCase() + res[0].substring(1) : null;
|
45
|
+
var highlightedText = res !== null ? res[0] === '' ? "<strong>".concat(firstWord, "</strong>") + res[2] : firstWord + "<strong>".concat(res[1], "</strong>") + res[2] : isSortableColumn ? sortableTitle : (_colDef$Header$props4 = colDef.Header.props) === null || _colDef$Header$props4 === void 0 ? void 0 : _colDef$Header$props4.title;
|
46
|
+
var isFrozenColumn = !!colDef.sticky;
|
47
|
+
var listContents = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {
|
48
|
+
wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
|
49
|
+
checked: isColumnVisible(colDef),
|
50
|
+
disabled: isFrozenColumn,
|
51
|
+
onChange: onSelectColumn.bind(null, colDef),
|
52
|
+
id: "".concat(blockClass, "__customization-column-").concat(colDef.id),
|
53
|
+
labelText: isSortableColumn ? sortableTitle : (_colDef$Header$props5 = colDef.Header.props) === null || _colDef$Header$props5 === void 0 ? void 0 : _colDef$Header$props5.title,
|
54
|
+
title: isSortableColumn ? sortableTitle : (_colDef$Header$props6 = colDef.Header.props) === null || _colDef$Header$props6 === void 0 ? void 0 : _colDef$Header$props6.title,
|
55
|
+
className: "".concat(blockClass, "__customize-columns-checkbox"),
|
56
|
+
hideLabel: true
|
57
|
+
}), /*#__PURE__*/React.createElement("div", {
|
58
|
+
dangerouslySetInnerHTML: {
|
59
|
+
__html: highlightedText
|
60
|
+
}
|
61
|
+
}));
|
62
|
+
return /*#__PURE__*/React.createElement(DraggableElement, {
|
63
|
+
key: colDef.id,
|
64
|
+
index: i,
|
65
|
+
listData: columns,
|
66
|
+
setListData: setColumnsObject,
|
67
|
+
id: "dnd-datagrid-columns-".concat(colDef.id),
|
68
|
+
type: "column-customization",
|
69
|
+
disabled: filterString.length > 0 || isFrozenColumn,
|
70
|
+
ariaLabel: isSortableColumn ? sortableTitle : (_colDef$Header$props7 = colDef.Header.props) === null || _colDef$Header$props7 === void 0 ? void 0 : _colDef$Header$props7.title,
|
71
|
+
onGrab: setAriaRegionText,
|
72
|
+
isFocused: focusIndex === i,
|
73
|
+
moveElement: moveElement,
|
74
|
+
onArrowKeyDown: function onArrowKeyDown(e, isGrabbed, currentIndex) {
|
75
|
+
if (isGrabbed) {
|
76
|
+
var _columns$nextIndex;
|
77
|
+
var nextIndex = getNextIndex(columns, currentIndex, e.key);
|
78
|
+
e.preventDefault();
|
79
|
+
e.stopPropagation();
|
80
|
+
if (nextIndex >= 0 && !((_columns$nextIndex = columns[nextIndex]) !== null && _columns$nextIndex !== void 0 && _columns$nextIndex.sticky)) {
|
81
|
+
setFocusIndex(nextIndex);
|
82
|
+
moveElement(currentIndex, nextIndex);
|
83
|
+
e.target.scrollIntoView({
|
84
|
+
block: 'center'
|
85
|
+
});
|
86
|
+
}
|
87
|
+
}
|
88
|
+
},
|
89
|
+
isSticky: isFrozenColumn,
|
90
|
+
selected: isColumnVisible(colDef)
|
91
|
+
}, listContents);
|
92
|
+
}));
|
93
|
+
};
|
94
|
+
DraggableItemsList.propTypes = {
|
95
|
+
columns: PropTypes.array.isRequired,
|
96
|
+
filterString: PropTypes.string.isRequired,
|
97
|
+
focusIndex: PropTypes.number.isRequired,
|
98
|
+
getNextIndex: PropTypes.func.isRequired,
|
99
|
+
isTableSortable: PropTypes.bool,
|
100
|
+
moveElement: PropTypes.func.isRequired,
|
101
|
+
onSelectColumn: PropTypes.func.isRequired,
|
102
|
+
setAriaRegionText: PropTypes.func.isRequired,
|
103
|
+
setColumnsObject: PropTypes.func.isRequired,
|
104
|
+
setFocusIndex: PropTypes.func.isRequired
|
105
|
+
};
|
@@ -21,6 +21,7 @@ var TearsheetWrapper = function TearsheetWrapper(_ref) {
|
|
21
21
|
rest = _objectWithoutProperties(_instance$customizeCo, _excluded);
|
22
22
|
return /*#__PURE__*/React.createElement(CustomizeColumnsTearsheet, _extends({}, rest, labels, {
|
23
23
|
isOpen: isTearsheetOpen,
|
24
|
+
isTableSortable: instance === null || instance === void 0 ? void 0 : instance.isTableSortable,
|
24
25
|
setIsTearsheetOpen: setIsTearsheetOpen,
|
25
26
|
columnDefinitions: instance.allColumns,
|
26
27
|
originalColumnDefinitions: instance.columns,
|
@@ -45,7 +45,15 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
45
45
|
_ref$showFilterSearch = _ref.showFilterSearch,
|
46
46
|
showFilterSearch = _ref$showFilterSearch === void 0 ? false : _ref$showFilterSearch,
|
47
47
|
_ref$filterPanelMinHe = _ref.filterPanelMinHeight,
|
48
|
-
filterPanelMinHeight = _ref$filterPanelMinHe === void 0 ? 600 : _ref$filterPanelMinHe
|
48
|
+
filterPanelMinHeight = _ref$filterPanelMinHe === void 0 ? 600 : _ref$filterPanelMinHe,
|
49
|
+
_ref$primaryActionLab = _ref.primaryActionLabel,
|
50
|
+
primaryActionLabel = _ref$primaryActionLab === void 0 ? 'Apply' : _ref$primaryActionLab,
|
51
|
+
_ref$secondaryActionL = _ref.secondaryActionLabel,
|
52
|
+
secondaryActionLabel = _ref$secondaryActionL === void 0 ? 'Cancel' : _ref$secondaryActionL,
|
53
|
+
_ref$searchLabelText = _ref.searchLabelText,
|
54
|
+
searchLabelText = _ref$searchLabelText === void 0 ? 'Filter search' : _ref$searchLabelText,
|
55
|
+
_ref$searchPlaceholde = _ref.searchPlaceholder,
|
56
|
+
searchPlaceholder = _ref$searchPlaceholde === void 0 ? 'Find filters' : _ref$searchPlaceholde;
|
49
57
|
/** State */
|
50
58
|
var _useState = useState(false),
|
51
59
|
_useState2 = _slicedToArray(_useState, 2),
|
@@ -120,13 +128,13 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
120
128
|
actions: [{
|
121
129
|
key: 1,
|
122
130
|
kind: 'primary',
|
123
|
-
label:
|
131
|
+
label: primaryActionLabel,
|
124
132
|
onClick: apply,
|
125
133
|
disabled: shouldDisableButtons
|
126
134
|
}, {
|
127
135
|
key: 2,
|
128
136
|
kind: 'secondary',
|
129
|
-
label:
|
137
|
+
label: secondaryActionLabel,
|
130
138
|
onClick: cancel,
|
131
139
|
disabled: shouldDisableButtons
|
132
140
|
}],
|
@@ -189,8 +197,8 @@ var FilterPanel = function FilterPanel(_ref) {
|
|
189
197
|
ref: filterSearchRef,
|
190
198
|
className: "".concat(componentClass, "__search")
|
191
199
|
}, /*#__PURE__*/React.createElement(Search, {
|
192
|
-
labelText:
|
193
|
-
placeHolderText:
|
200
|
+
labelText: searchLabelText,
|
201
|
+
placeHolderText: searchPlaceholder,
|
194
202
|
light: true,
|
195
203
|
size: "sm"
|
196
204
|
}))), /*#__PURE__*/React.createElement("div", {
|
@@ -231,6 +239,10 @@ FilterPanel.propTypes = {
|
|
231
239
|
onPanelClose: PropTypes.func,
|
232
240
|
onPanelOpen: PropTypes.func,
|
233
241
|
open: PropTypes.bool,
|
242
|
+
primaryActionLabel: PropTypes.string,
|
243
|
+
searchLabelText: PropTypes.string,
|
244
|
+
searchPlaceholder: PropTypes.string,
|
245
|
+
secondaryActionLabel: PropTypes.string,
|
234
246
|
setAllFilters: PropTypes.func.isRequired,
|
235
247
|
showFilterSearch: PropTypes.bool,
|
236
248
|
title: PropTypes.string,
|
@@ -125,6 +125,17 @@ var useFilters = function useFilters(_ref) {
|
|
125
125
|
// Remove it from the filters array
|
126
126
|
filtersObjectArrayCopy.splice(_index2, 1);
|
127
127
|
}
|
128
|
+
} else if (type === NUMBER) {
|
129
|
+
// If the value is empty remove it from the filtersObjectArray
|
130
|
+
if (value === '') {
|
131
|
+
// Find the column that uses number and displays an empty string
|
132
|
+
var _index3 = filtersObjectArrayCopy.findIndex(function (filter) {
|
133
|
+
return filter.id === column;
|
134
|
+
});
|
135
|
+
|
136
|
+
// Remove it from the filters array
|
137
|
+
filtersObjectArrayCopy.splice(_index3, 1);
|
138
|
+
}
|
128
139
|
}
|
129
140
|
setFiltersObjectArray(filtersObjectArrayCopy);
|
130
141
|
|
@@ -3,13 +3,11 @@ 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 = ["legendText"];
|
6
|
-
|
7
|
-
|
8
|
-
*
|
9
|
-
*
|
10
|
-
*
|
11
|
-
* US Government Users Restricted Rights - Use, duplication or disclosure
|
12
|
-
* restricted by GSA ADP Schedule Contract with IBM Corp.
|
6
|
+
/**
|
7
|
+
* Copyright IBM Corp. 2021, 2023
|
8
|
+
*
|
9
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
10
|
+
* LICENSE file in the root directory of this source tree.
|
13
11
|
*/
|
14
12
|
|
15
13
|
import * as React from 'react';
|
@@ -36,7 +34,9 @@ var RowSizeDropdown = function RowSizeDropdown(_ref) {
|
|
36
34
|
tooltipPosition: "bottom",
|
37
35
|
renderIcon: Settings16,
|
38
36
|
onClick: function onClick() {
|
39
|
-
return setIsOpen(
|
37
|
+
return setIsOpen(function (prevOpen) {
|
38
|
+
return !prevOpen;
|
39
|
+
});
|
40
40
|
},
|
41
41
|
iconDescription: legendText,
|
42
42
|
className: cx("".concat(blockClass, "__row-size-button"), _defineProperty({}, "".concat(blockClass, "__row-size-button--open"), isOpen))
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
*
|
3
|
-
*
|
4
|
-
*
|
5
|
-
*
|
6
|
-
* restricted by GSA ADP Schedule Contract with IBM Corp.
|
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.
|
7
6
|
*/
|
7
|
+
|
8
8
|
export { Datagrid } from './Datagrid';
|
9
9
|
export { default as useDatagrid } from './useDatagrid';
|
10
10
|
export { default as useInfiniteScroll } from './useInfiniteScroll';
|
@@ -23,4 +23,5 @@ export { default as useSelectAllWithToggle } from './useSelectAllToggle';
|
|
23
23
|
export { default as useColumnCenterAlign } from './useColumnCenterAlign';
|
24
24
|
export { default as useColumnOrder } from './useColumnOrder';
|
25
25
|
export { default as useInlineEdit } from './useInlineEdit';
|
26
|
-
export { default as useFiltering } from './useFiltering';
|
26
|
+
export { default as useFiltering } from './useFiltering';
|
27
|
+
export { getAutoSizedColumnWidth } from './utils/getAutoSizedColumnWidth';
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* Licensed Materials - Property of IBM
|
3
3
|
* 5724-Q36
|
4
|
-
* (c) Copyright IBM Corp. 2020
|
4
|
+
* (c) Copyright IBM Corp. 2020, 2023
|
5
5
|
* US Government Users Restricted Rights - Use, duplication or disclosure
|
6
6
|
* restricted by GSA ADP Schedule Contract with IBM Corp.
|
7
7
|
*/
|
@@ -15,9 +15,9 @@ var useOnRowClick = function useOnRowClick(hooks) {
|
|
15
15
|
instance = datagridState.instance;
|
16
16
|
var id = row.id,
|
17
17
|
toggleRowSelected = row.toggleRowSelected;
|
18
|
-
var onClick = function onClick() {
|
18
|
+
var onClick = function onClick(event) {
|
19
19
|
if (!isFetching && onRowClick) {
|
20
|
-
onRowClick(row);
|
20
|
+
onRowClick(row, event);
|
21
21
|
instance.selectedFlatRows && instance.selectedFlatRows.map(function (toggleRow) {
|
22
22
|
return toggleRow.toggleRowSelected(false);
|
23
23
|
});
|
@@ -22,6 +22,7 @@ var ordering = {
|
|
22
22
|
};
|
23
23
|
var useSortableColumns = function useSortableColumns(hooks) {
|
24
24
|
var sortableVisibleColumns = function sortableVisibleColumns(visibleColumns, _ref) {
|
25
|
+
var _instance$customizeCo;
|
25
26
|
var instance = _ref.instance;
|
26
27
|
var onSort = instance.onSort;
|
27
28
|
var onSortClick = function onSortClick(column) {
|
@@ -37,7 +38,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
|
|
37
38
|
};
|
38
39
|
var sortableColumns = visibleColumns.map(function (column) {
|
39
40
|
var icon = function icon(col) {
|
40
|
-
if (col.isSorted) {
|
41
|
+
if (col !== null && col !== void 0 && col.isSorted) {
|
41
42
|
switch (col.isSortedDesc) {
|
42
43
|
case false:
|
43
44
|
return function () {
|
@@ -69,11 +70,11 @@ var useSortableColumns = function useSortableColumns(hooks) {
|
|
69
70
|
var _cx;
|
70
71
|
return column.disableSortBy === true ? column.Header : /*#__PURE__*/React.createElement(Button, {
|
71
72
|
onClick: function onClick() {
|
72
|
-
return onSortClick(headerProp.column);
|
73
|
+
return onSortClick(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column);
|
73
74
|
},
|
74
75
|
kind: "ghost",
|
75
|
-
renderIcon: icon(headerProp.column),
|
76
|
-
className: cx("".concat(carbon.prefix, "--table-sort ").concat(blockClass, "--table-sort"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "--table-sort--desc"), headerProp.column.isSortedDesc), _defineProperty(_cx, "".concat(blockClass, "--table-sort--asc"), headerProp.column.isSortedDesc === false), _cx))
|
76
|
+
renderIcon: icon(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column),
|
77
|
+
className: cx("".concat(carbon.prefix, "--table-sort ").concat(blockClass, "--table-sort"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "--table-sort--desc"), headerProp === null || headerProp === void 0 ? void 0 : headerProp.column.isSortedDesc), _defineProperty(_cx, "".concat(blockClass, "--table-sort--asc"), (headerProp === null || headerProp === void 0 ? void 0 : headerProp.column.isSortedDesc) === false), _cx))
|
77
78
|
}, column.Header);
|
78
79
|
};
|
79
80
|
return _objectSpread(_objectSpread({}, column), {}, {
|
@@ -81,7 +82,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
|
|
81
82
|
minWidth: column.disableSortBy === true ? 0 : 90
|
82
83
|
});
|
83
84
|
});
|
84
|
-
return _toConsumableArray(sortableColumns);
|
85
|
+
return (_instance$customizeCo = instance.customizeColumnsProps) !== null && _instance$customizeCo !== void 0 && _instance$customizeCo.isTearsheetOpen ? visibleColumns : _toConsumableArray(sortableColumns);
|
85
86
|
};
|
86
87
|
var sortInstanceProps = function sortInstanceProps(instance) {
|
87
88
|
var onSort = instance.onSort;
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
2
|
+
/**
|
3
|
+
* Copyright IBM Corp. 2023, 2023
|
4
|
+
*
|
5
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
7
|
+
*/
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Calculates the auto sized width of a column
|
11
|
+
* @param {Array<object>} rows - The datagrid rows
|
12
|
+
* @param {string} accessor - The accessor for the column
|
13
|
+
* @param {string} headerText - The header text for the column
|
14
|
+
*/
|
15
|
+
|
16
|
+
export var getAutoSizedColumnWidth = function getAutoSizedColumnWidth(rows, accessor, headerText) {
|
17
|
+
var maxWidth = 400;
|
18
|
+
var minWidth = 58;
|
19
|
+
var letterSpacing = 10;
|
20
|
+
var cellLength = Math.max.apply(Math, _toConsumableArray(rows.map(function (row) {
|
21
|
+
return ("".concat(row[accessor]) || '').length;
|
22
|
+
})).concat([headerText.length]));
|
23
|
+
if (cellLength <= 3) {
|
24
|
+
return minWidth;
|
25
|
+
}
|
26
|
+
return Math.min(maxWidth, cellLength * letterSpacing + 16);
|
27
|
+
};
|
@@ -22,6 +22,7 @@ import { getDevtoolsProps } from '../../global/js/utils/devtools';
|
|
22
22
|
var componentName = 'InlineEditV2';
|
23
23
|
var blockClass = "".concat(pkg.prefix, "--inline-edit-v2");
|
24
24
|
export var InlineEditV2 = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
25
|
+
var _cx;
|
25
26
|
var cancelLabel = _ref.cancelLabel,
|
26
27
|
editLabel = _ref.editLabel,
|
27
28
|
id = _ref.id,
|
@@ -128,7 +129,7 @@ export var InlineEditV2 = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
128
129
|
return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
|
129
130
|
ref: ref
|
130
131
|
}, getDevtoolsProps(componentName)), /*#__PURE__*/React.createElement("div", {
|
131
|
-
className: cx(blockClass,
|
132
|
+
className: cx(blockClass, (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "--focused"), focused), _defineProperty(_cx, "".concat(blockClass, "--invalid"), invalid), _cx)),
|
132
133
|
onFocus: onFocusHandler,
|
133
134
|
onBlur: onBlurHandler
|
134
135
|
}, /*#__PURE__*/React.createElement("label", {
|
@@ -144,7 +145,9 @@ export var InlineEditV2 = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
144
145
|
// readOnly={readOnly}
|
145
146
|
,
|
146
147
|
onKeyDown: onKeyHandler
|
147
|
-
}),
|
148
|
+
}), /*#__PURE__*/React.createElement("div", {
|
149
|
+
className: "".concat(blockClass, "__toolbar")
|
150
|
+
}, focused ? /*#__PURE__*/React.createElement(React.Fragment, null, invalid && /*#__PURE__*/React.createElement(WarningFilled16, {
|
148
151
|
className: "".concat(blockClass, "__warning-icon")
|
149
152
|
}), /*#__PURE__*/React.createElement(Button, {
|
150
153
|
hasIconOnly: true,
|
@@ -181,7 +184,7 @@ export var InlineEditV2 = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
181
184
|
kind: "ghost",
|
182
185
|
tabIndex: 0,
|
183
186
|
key: "edit"
|
184
|
-
})), focused && invalid && /*#__PURE__*/React.createElement("p", {
|
187
|
+
}))), focused && invalid && /*#__PURE__*/React.createElement("p", {
|
185
188
|
className: "".concat(blockClass, "__warning-text")
|
186
189
|
}, invalidLabel));
|
187
190
|
});
|
@@ -415,7 +415,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
415
415
|
renderIcon: icon,
|
416
416
|
iconDescription: label,
|
417
417
|
tooltipPosition: tooltipPosition || 'bottom',
|
418
|
-
tooltipAlignment: tooltipAlignment || '
|
418
|
+
tooltipAlignment: tooltipAlignment || 'start',
|
419
419
|
hasIconOnly: !leading,
|
420
420
|
disabled: disabled,
|
421
421
|
className: cx(["".concat(blockClass, "__action-toolbar-button"), className, _defineProperty({}, "".concat(blockClass, "__action-toolbar-leading-button"), leading)]),
|
package/es/components/index.js
CHANGED
@@ -37,7 +37,7 @@ export { WebTerminal, WebTerminalContentWrapper, useWebTerminal, WebTerminalProv
|
|
37
37
|
export { EditSidePanel } from './EditSidePanel';
|
38
38
|
export { OptionsTile } from './OptionsTile';
|
39
39
|
export { DataSpreadsheet } from './DataSpreadsheet';
|
40
|
-
export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnCenterAlign, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle, useColumnOrder, useInlineEdit, useFiltering } from './Datagrid';
|
40
|
+
export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnCenterAlign, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle, useColumnOrder, useInlineEdit, useFiltering, getAutoSizedColumnWidth } from './Datagrid';
|
41
41
|
export { EditTearsheet } from './EditTearsheet';
|
42
42
|
export { EditTearsheetNarrow } from './EditTearsheetNarrow';
|
43
43
|
export { EditFullPage } from './EditFullPage';
|
@@ -77,4 +77,13 @@ CodesandboxLink.propTypes = {
|
|
77
77
|
* directory withing examples codesandbox will be found
|
78
78
|
*/
|
79
79
|
exampleDirectory: PropTypes.string
|
80
|
+
};
|
81
|
+
|
82
|
+
/**
|
83
|
+
* A helper function that finds the designated theme on the Storybook canvas.
|
84
|
+
* @returns "dark" or "light"
|
85
|
+
*/
|
86
|
+
export var getSelectedCarbonTheme = function getSelectedCarbonTheme() {
|
87
|
+
var themeId = document.querySelector('html').getAttribute('storybook-carbon-theme');
|
88
|
+
return themeId === 'g90' || themeId === 'g100' ? 'dark' : 'light';
|
80
89
|
};
|
@@ -118,7 +118,7 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
|
|
118
118
|
setGlobalFilter(null);
|
119
119
|
}
|
120
120
|
}, !displayAllInMenu && toolbarBatchActions && (toolbarBatchActions === null || toolbarBatchActions === void 0 ? void 0 : toolbarBatchActions.map(function (batchAction, index) {
|
121
|
-
if (index < 2 && toolbarBatchActions.length > 3 || index < 3 && toolbarBatchActions.length
|
121
|
+
if (index < 2 && toolbarBatchActions.length > 3 || index < 3 && toolbarBatchActions.length <= 3) {
|
122
122
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TableBatchAction, {
|
123
123
|
key: "".concat(batchAction.label, "-").concat(index),
|
124
124
|
renderIcon: batchAction.renderIcon,
|
@@ -13,7 +13,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
13
|
var _iconsReact = require("@carbon/icons-react");
|
14
14
|
var _carbonComponentsReact = require("carbon-components-react");
|
15
15
|
var _settings = require("../../../../../settings");
|
16
|
-
var _excluded = ["onClick", "setIsTearsheetOpen", "isTearsheetOpen", "iconTooltipLabel"];
|
16
|
+
var _excluded = ["onClick", "setIsTearsheetOpen", "isTearsheetOpen", "iconTooltipLabel", "tooltipPosition"];
|
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
|
var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
|
@@ -23,11 +23,13 @@ var ButtonWrapper = function ButtonWrapper(_ref) {
|
|
23
23
|
isTearsheetOpen = _ref.isTearsheetOpen,
|
24
24
|
_ref$iconTooltipLabel = _ref.iconTooltipLabel,
|
25
25
|
iconTooltipLabel = _ref$iconTooltipLabel === void 0 ? 'Customize columns' : _ref$iconTooltipLabel,
|
26
|
+
_ref$tooltipPosition = _ref.tooltipPosition,
|
27
|
+
tooltipPosition = _ref$tooltipPosition === void 0 ? 'bottom' : _ref$tooltipPosition,
|
26
28
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
27
29
|
return /*#__PURE__*/React.createElement(_carbonComponentsReact.Button, (0, _extends2.default)({}, rest, {
|
28
30
|
renderIcon: _iconsReact.Column16,
|
29
31
|
iconDescription: iconTooltipLabel,
|
30
|
-
tooltipPosition:
|
32
|
+
tooltipPosition: tooltipPosition,
|
31
33
|
kind: "ghost",
|
32
34
|
hasIconOnly: true,
|
33
35
|
"test-id": "".concat(blockClass, "__customize-columns-trigger"),
|
@@ -43,7 +45,8 @@ ButtonWrapper.propTypes = {
|
|
43
45
|
iconTooltipLabel: _propTypes.default.string,
|
44
46
|
isTearsheetOpen: _propTypes.default.bool.isRequired,
|
45
47
|
onClick: _propTypes.default.func.isRequired,
|
46
|
-
setIsTearsheetOpen: _propTypes.default.func.isRequired
|
48
|
+
setIsTearsheetOpen: _propTypes.default.func.isRequired,
|
49
|
+
tooltipPosition: _carbonComponentsReact.Button.propTypes.tooltipPosition
|
47
50
|
};
|
48
51
|
var _default = ButtonWrapper;
|
49
52
|
exports.default = _default;
|