@carbon/ibm-products 1.56.0 → 1.58.0
Sign up to get free protection for your applications and to get access to all the features.
- package/css/index-full-carbon.css +392 -895
- 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.css +392 -895
- 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 +392 -895
- 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/Checklist/Checklist.js +277 -0
- package/es/components/Checklist/ChecklistChart.js +104 -0
- package/es/components/Checklist/ChecklistIcon.js +105 -0
- package/es/components/Checklist/index.js +8 -0
- package/es/components/Datagrid/Datagrid/Datagrid.js +12 -7
- package/es/components/Datagrid/Datagrid/DatagridContent.js +6 -3
- package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +128 -7
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +1 -23
- package/es/components/Datagrid/Datagrid/addons/stateReducer.js +111 -0
- package/es/components/Datagrid/useDatagrid.js +5 -2
- package/es/components/Datagrid/utils/getColTitle.js +25 -0
- package/es/components/NonLinearReading/NonLinearReading.js +9 -4
- package/es/components/index.js +2 -1
- package/es/global/js/hooks/useResizeObserver.js +19 -3
- package/es/global/js/package-settings.js +1 -0
- package/lib/components/Checklist/Checklist.js +267 -0
- package/lib/components/Checklist/ChecklistChart.js +94 -0
- package/lib/components/Checklist/ChecklistIcon.js +92 -0
- package/lib/components/Checklist/index.js +12 -0
- package/lib/components/Datagrid/Datagrid/Datagrid.js +12 -7
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +6 -3
- package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +131 -7
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +4 -26
- package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +122 -0
- package/lib/components/Datagrid/useDatagrid.js +5 -2
- package/lib/components/Datagrid/utils/getColTitle.js +32 -0
- package/lib/components/NonLinearReading/NonLinearReading.js +8 -3
- package/lib/components/index.js +8 -1
- package/lib/global/js/hooks/useResizeObserver.js +19 -3
- package/lib/global/js/package-settings.js +1 -0
- package/package.json +2 -2
- package/scss/components/Checklist/_checklist.scss +231 -0
- package/scss/components/Checklist/_index.scss +8 -0
- package/scss/components/Checklist/_storybook-styles.scss +13 -0
- package/scss/components/Datagrid/styles/_datagrid.scss +91 -0
- package/scss/components/NonLinearReading/_non-linear-reading.scss +76 -64
- package/scss/components/_index.scss +1 -0
@@ -1,29 +1,104 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
3
4
|
/**
|
4
|
-
* Copyright IBM Corp. 2020,
|
5
|
+
* Copyright IBM Corp. 2020, 2023
|
5
6
|
*
|
6
7
|
* This source code is licensed under the Apache-2.0 license found in the
|
7
8
|
* LICENSE file in the root directory of this source tree.
|
8
9
|
*/
|
9
10
|
|
10
11
|
// @flow
|
11
|
-
import React from 'react';
|
12
|
+
import React, { useState, useEffect } from 'react';
|
12
13
|
import cx from 'classnames';
|
13
14
|
import { DataTable } from 'carbon-components-react';
|
15
|
+
import { px } from '@carbon/layout';
|
14
16
|
import { selectionColumnId } from '../common-column-ids';
|
15
17
|
import { pkg } from '../../../settings';
|
18
|
+
import { handleColumnResizeEndEvent, handleColumnResizeStartEvent, handleColumnResizingEvent } from './addons/stateReducer';
|
19
|
+
import getColTitle from '../utils/getColTitle';
|
16
20
|
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
21
|
+
var getAccessibilityProps = function getAccessibilityProps(header) {
|
22
|
+
var props = {};
|
23
|
+
var title = getColTitle(header);
|
24
|
+
if (title) {
|
25
|
+
props.title = title;
|
26
|
+
} else {
|
27
|
+
props['aria-hidden'] = true;
|
28
|
+
}
|
29
|
+
return props;
|
30
|
+
};
|
17
31
|
var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
|
32
|
+
// Used to measure the height of the table and uses that value
|
33
|
+
// to display a vertical line to indicate the column you are resizing
|
34
|
+
useEffect(function () {
|
35
|
+
var tableId = datagridState.tableId;
|
36
|
+
if (tableId) {
|
37
|
+
var gridElement = document.querySelector("#".concat(tableId));
|
38
|
+
var tableElement = gridElement.querySelector('table');
|
39
|
+
var headerRowElement = document.querySelector("#".concat(tableId, " .").concat(blockClass, "__head"));
|
40
|
+
var hasHorizontalScrollbar = tableElement.scrollWidth > tableElement.clientWidth;
|
41
|
+
var scrollBuffer = hasHorizontalScrollbar ? 18 : 2;
|
42
|
+
var tableToolbar = gridElement.querySelector(".".concat(blockClass, "__table-toolbar"));
|
43
|
+
var tableToolbarHeight = (tableToolbar === null || tableToolbar === void 0 ? void 0 : tableToolbar.offsetHeight) || 0;
|
44
|
+
var setCustomValues = function setCustomValues(_ref) {
|
45
|
+
var _ref$rowHeight = _ref.rowHeight,
|
46
|
+
rowHeight = _ref$rowHeight === void 0 ? 48 : _ref$rowHeight,
|
47
|
+
gridHeight = _ref.gridHeight;
|
48
|
+
headerRowElement.style.setProperty("--".concat(blockClass, "--row-height"), px(rowHeight));
|
49
|
+
headerRowElement.style.setProperty("--".concat(blockClass, "--grid-height"), px(gridHeight - scrollBuffer - tableToolbarHeight));
|
50
|
+
headerRowElement.style.setProperty("--".concat(blockClass, "--header-height"), px(headerRowElement.offsetHeight));
|
51
|
+
};
|
52
|
+
setCustomValues({
|
53
|
+
gridHeight: gridElement.offsetHeight,
|
54
|
+
rowHeight: headerRowElement.clientHeight
|
55
|
+
});
|
56
|
+
}
|
57
|
+
}, [datagridState.rowSize, datagridState.tableId, datagridState]);
|
58
|
+
var _useState = useState(2),
|
59
|
+
_useState2 = _slicedToArray(_useState, 1),
|
60
|
+
incrementAmount = _useState2[0];
|
61
|
+
var getClientXPosition = function getClientXPosition(event) {
|
62
|
+
var isTouchEvent = false;
|
63
|
+
if (event.type === 'touchstart') {
|
64
|
+
// Do not respond to multiple touches (e.g. 2 or 3 fingers)
|
65
|
+
if (event.touches && event.touches.length > 1) {
|
66
|
+
return;
|
67
|
+
}
|
68
|
+
isTouchEvent = true;
|
69
|
+
}
|
70
|
+
var clientX = isTouchEvent ? Math.round(event.touches[0].clientX) : event.clientX;
|
71
|
+
var closestHeader = event.target.closest('th');
|
72
|
+
var closestHeaderCoords = closestHeader.getBoundingClientRect();
|
73
|
+
var headerOffset = closestHeaderCoords.left;
|
74
|
+
var offsetValue = clientX - headerOffset;
|
75
|
+
return offsetValue;
|
76
|
+
};
|
77
|
+
useEffect(function () {
|
78
|
+
var isResizing = datagridState.state.isResizing;
|
79
|
+
if (isResizing) {
|
80
|
+
var onColResizeEnd = datagridState.onColResizeEnd;
|
81
|
+
document.addEventListener('mouseup', function () {
|
82
|
+
handleColumnResizeEndEvent(datagridState.dispatch, onColResizeEnd, isResizing);
|
83
|
+
document.activeElement.blur();
|
84
|
+
});
|
85
|
+
}
|
86
|
+
return function () {
|
87
|
+
document.removeEventListener('mouseup', function () {
|
88
|
+
return handleColumnResizeEndEvent(datagridState.dispatch);
|
89
|
+
});
|
90
|
+
};
|
91
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
92
|
+
}, [datagridState.state.isResizing]);
|
18
93
|
return /*#__PURE__*/React.createElement(TableRow, _extends({}, headerGroup.getHeaderGroupProps({
|
19
94
|
role: false
|
20
95
|
}), {
|
21
96
|
className: cx("".concat(blockClass, "__head"), headerGroup.getHeaderGroupProps().className),
|
22
97
|
ref: headRef
|
23
|
-
}), datagridState.headers.filter(function (
|
24
|
-
var isVisible =
|
98
|
+
}), datagridState.headers.filter(function (_ref2) {
|
99
|
+
var isVisible = _ref2.isVisible;
|
25
100
|
return isVisible;
|
26
|
-
}).map(function (header) {
|
101
|
+
}).map(function (header, index) {
|
27
102
|
var _cx;
|
28
103
|
if (header.id === selectionColumnId) {
|
29
104
|
// render directly without the wrapper TableHeader
|
@@ -31,13 +106,59 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
|
|
31
106
|
key: header.id
|
32
107
|
});
|
33
108
|
}
|
109
|
+
var _ref3 = header || 50,
|
110
|
+
minWidth = _ref3.minWidth;
|
111
|
+
var visibleColumns = datagridState.visibleColumns,
|
112
|
+
state = datagridState.state,
|
113
|
+
dispatch = datagridState.dispatch,
|
114
|
+
onColResizeEnd = datagridState.onColResizeEnd;
|
115
|
+
var columnResizing = state.columnResizing,
|
116
|
+
isResizing = state.isResizing;
|
117
|
+
var columnWidths = columnResizing.columnWidths;
|
118
|
+
var originalCol = visibleColumns[index];
|
34
119
|
return /*#__PURE__*/React.createElement(TableHeader, _extends({}, header.getHeaderProps({
|
35
120
|
role: false
|
36
121
|
}), {
|
37
122
|
className: cx((_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__resizableColumn"), header.getResizerProps), _defineProperty(_cx, "".concat(blockClass, "__isResizing"), header.isResizing), _defineProperty(_cx, "".concat(blockClass, "__sortableColumn"), datagridState.isTableSortable), _defineProperty(_cx, "".concat(blockClass, "__isSorted"), header.isSorted), _cx), header.getHeaderProps().className),
|
38
123
|
key: header.id
|
39
|
-
}), header.render('Header'), header.getResizerProps && /*#__PURE__*/React.createElement("
|
40
|
-
|
124
|
+
}, getAccessibilityProps(header)), header.render('Header'), header.getResizerProps && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("input", _extends({}, header.getResizerProps(), {
|
125
|
+
onMouseMove: function onMouseMove(event) {
|
126
|
+
if (isResizing) {
|
127
|
+
var newWidth = getClientXPosition(event);
|
128
|
+
// Sets a min width for resizing so at least one character from the column header is visible
|
129
|
+
if (newWidth >= 50) {
|
130
|
+
handleColumnResizingEvent(dispatch, header, newWidth);
|
131
|
+
}
|
132
|
+
}
|
133
|
+
},
|
134
|
+
onMouseDown: function onMouseDown() {
|
135
|
+
return handleColumnResizeStartEvent(dispatch, header.id);
|
136
|
+
},
|
137
|
+
onKeyDown: function onKeyDown(event) {
|
138
|
+
var key = event.key;
|
139
|
+
if (key === 'ArrowLeft' || key === 'ArrowRight') {
|
140
|
+
var currentColumnWidth = columnWidths[header.id] || (datagridState.isTableSortable && originalCol.width < 90 ? 90 : originalCol.width);
|
141
|
+
if (key === 'ArrowLeft') {
|
142
|
+
if (currentColumnWidth - incrementAmount > Math.max(minWidth, 50)) {
|
143
|
+
var newWidth = currentColumnWidth - incrementAmount;
|
144
|
+
handleColumnResizingEvent(dispatch, header, newWidth, true);
|
145
|
+
}
|
146
|
+
}
|
147
|
+
if (key === 'ArrowRight') {
|
148
|
+
var _newWidth = currentColumnWidth + incrementAmount;
|
149
|
+
handleColumnResizingEvent(dispatch, header, _newWidth, true);
|
150
|
+
}
|
151
|
+
}
|
152
|
+
},
|
153
|
+
onKeyUp: function onKeyUp() {
|
154
|
+
return handleColumnResizeEndEvent(dispatch, onColResizeEnd, header.id);
|
155
|
+
},
|
156
|
+
className: cx("".concat(blockClass, "__col-resizer-range")),
|
157
|
+
type: "range",
|
158
|
+
defaultValue: originalCol.width,
|
159
|
+
"aria-label": "Resize column"
|
160
|
+
})), /*#__PURE__*/React.createElement("span", {
|
161
|
+
className: "".concat(blockClass, "__col-resize-indicator")
|
41
162
|
})));
|
42
163
|
}));
|
43
164
|
};
|
@@ -11,6 +11,7 @@ import { Checkbox } from 'carbon-components-react';
|
|
11
11
|
import { isColumnVisible } from './common';
|
12
12
|
import DraggableElement from '../../DraggableElement';
|
13
13
|
import { pkg } from '../../../../../settings';
|
14
|
+
import getColTitle from '../../../utils/getColTitle';
|
14
15
|
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
15
16
|
export var DraggableItemsList = function DraggableItemsList(_ref) {
|
16
17
|
var columns = _ref.columns,
|
@@ -22,29 +23,6 @@ export var DraggableItemsList = function DraggableItemsList(_ref) {
|
|
22
23
|
setAriaRegionText = _ref.setAriaRegionText,
|
23
24
|
setColumnsObject = _ref.setColumnsObject,
|
24
25
|
setFocusIndex = _ref.setFocusIndex;
|
25
|
-
// This function recursively looks for the nested header element until we can find the key which contains the title.
|
26
|
-
// This can happen if multiple hooks are used together that manipulate the rendering of the column
|
27
|
-
// header, such as `useColumnCenterAlign` and `useSortableColumns`.
|
28
|
-
var getNestedTitle = function getNestedTitle(component) {
|
29
|
-
if (component && !component.key) {
|
30
|
-
return getNestedTitle(component.children);
|
31
|
-
}
|
32
|
-
if (component && component.key && typeof component.key === 'string') {
|
33
|
-
return component.key;
|
34
|
-
}
|
35
|
-
};
|
36
|
-
var getColTitle = function getColTitle(col) {
|
37
|
-
if (!col) {
|
38
|
-
return;
|
39
|
-
}
|
40
|
-
var checkTitle = function checkTitle() {
|
41
|
-
if (col.Header().props.children.props && col.Header().props.children.props.title) {
|
42
|
-
return col.Header().props.children.props.title;
|
43
|
-
}
|
44
|
-
return getNestedTitle(col.Header().props.children.props);
|
45
|
-
};
|
46
|
-
return typeof (col === null || col === void 0 ? void 0 : col.Header) === 'function' ? checkTitle() : col.Header.props.title;
|
47
|
-
};
|
48
26
|
return /*#__PURE__*/React.createElement(React.Fragment, null, columns
|
49
27
|
// hide the columns without Header, e.g the sticky actions, spacer
|
50
28
|
.filter(function (colDef) {
|
@@ -0,0 +1,111 @@
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
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
|
+
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
|
+
/**
|
6
|
+
* Copyright IBM Corp. 2023, 2023
|
7
|
+
*
|
8
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
9
|
+
* LICENSE file in the root directory of this source tree.
|
10
|
+
*/
|
11
|
+
|
12
|
+
var COLUMN_RESIZE_START = 'columnStartResizing';
|
13
|
+
var COLUMN_RESIZING = 'columnResizing';
|
14
|
+
var COLUMN_RESIZE_END = 'columnDoneResizing';
|
15
|
+
var INIT = 'init';
|
16
|
+
export var handleColumnResizeStartEvent = function handleColumnResizeStartEvent(dispatch, headerId) {
|
17
|
+
dispatch({
|
18
|
+
type: COLUMN_RESIZE_START,
|
19
|
+
payload: {
|
20
|
+
headerId: headerId
|
21
|
+
}
|
22
|
+
});
|
23
|
+
};
|
24
|
+
export var handleColumnResizeEndEvent = function handleColumnResizeEndEvent(dispatch, onColResizeEnd, headerId) {
|
25
|
+
dispatch({
|
26
|
+
type: COLUMN_RESIZE_END,
|
27
|
+
payload: {
|
28
|
+
onColResizeEnd: onColResizeEnd,
|
29
|
+
headerId: headerId
|
30
|
+
}
|
31
|
+
});
|
32
|
+
};
|
33
|
+
export var handleColumnResizingEvent = function handleColumnResizingEvent(dispatch, header, newWidth, isKeyEvent) {
|
34
|
+
if (isKeyEvent) {
|
35
|
+
dispatch({
|
36
|
+
type: COLUMN_RESIZE_START,
|
37
|
+
payload: {
|
38
|
+
newWidth: newWidth,
|
39
|
+
headerId: header.id,
|
40
|
+
defaultWidth: header.originalWidth
|
41
|
+
}
|
42
|
+
});
|
43
|
+
}
|
44
|
+
dispatch({
|
45
|
+
type: COLUMN_RESIZING,
|
46
|
+
payload: {
|
47
|
+
newWidth: newWidth,
|
48
|
+
headerId: header.id,
|
49
|
+
defaultWidth: header.originalWidth
|
50
|
+
}
|
51
|
+
});
|
52
|
+
};
|
53
|
+
export var stateReducer = function stateReducer(newState, action) {
|
54
|
+
switch (action.type) {
|
55
|
+
case INIT:
|
56
|
+
{
|
57
|
+
return _objectSpread(_objectSpread({}, newState), {}, {
|
58
|
+
isResizing: false
|
59
|
+
});
|
60
|
+
}
|
61
|
+
case COLUMN_RESIZE_START:
|
62
|
+
{
|
63
|
+
var headerId = action.payload.headerId;
|
64
|
+
return _objectSpread(_objectSpread({}, newState), {}, {
|
65
|
+
isResizing: headerId
|
66
|
+
});
|
67
|
+
}
|
68
|
+
case COLUMN_RESIZING:
|
69
|
+
{
|
70
|
+
var _ref = action.payload || {},
|
71
|
+
_headerId = _ref.headerId,
|
72
|
+
newWidth = _ref.newWidth,
|
73
|
+
defaultWidth = _ref.defaultWidth;
|
74
|
+
var newColumnWidth = {};
|
75
|
+
if (typeof _headerId === 'undefined') {
|
76
|
+
return _objectSpread({}, newState);
|
77
|
+
}
|
78
|
+
newColumnWidth[_headerId] = newWidth;
|
79
|
+
var cleanedWidths = Object.fromEntries(Object.entries(newState.columnResizing.columnWidths).filter(function (_ref2) {
|
80
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
81
|
+
_ = _ref3[0],
|
82
|
+
value = _ref3[1];
|
83
|
+
return !isNaN(value);
|
84
|
+
}));
|
85
|
+
return _objectSpread(_objectSpread({}, newState), {}, {
|
86
|
+
isResizing: _headerId,
|
87
|
+
columnResizing: _objectSpread(_objectSpread({}, newState.columnResizing), {}, {
|
88
|
+
columnWidth: defaultWidth,
|
89
|
+
columnWidths: _objectSpread(_objectSpread({}, cleanedWidths), newColumnWidth),
|
90
|
+
headerIdWidths: [_headerId, newWidth]
|
91
|
+
})
|
92
|
+
});
|
93
|
+
}
|
94
|
+
case COLUMN_RESIZE_END:
|
95
|
+
{
|
96
|
+
var _action$payload = action.payload,
|
97
|
+
onColResizeEnd = _action$payload.onColResizeEnd,
|
98
|
+
_headerId2 = _action$payload.headerId;
|
99
|
+
var currentColumn = {};
|
100
|
+
currentColumn[_headerId2] = newState.columnResizing.columnWidths[_headerId2];
|
101
|
+
var allChangedColumns = newState.columnResizing.columnWidths;
|
102
|
+
var isResizing = newState.isResizing;
|
103
|
+
if (isResizing) {
|
104
|
+
onColResizeEnd === null || onColResizeEnd === void 0 ? void 0 : onColResizeEnd(currentColumn, allChangedColumns);
|
105
|
+
}
|
106
|
+
return _objectSpread(_objectSpread({}, newState), {}, {
|
107
|
+
isResizing: false
|
108
|
+
});
|
109
|
+
}
|
110
|
+
}
|
111
|
+
};
|
@@ -19,6 +19,7 @@ import useRowSize from './useRowSize';
|
|
19
19
|
import useHeaderRow from './Datagrid/DatagridHeaderRow';
|
20
20
|
import useFlexResize from './useFlexResize';
|
21
21
|
import useFloatingScroll from './useFloatingScroll';
|
22
|
+
import { stateReducer } from './Datagrid/addons/stateReducer';
|
22
23
|
var useDatagrid = function useDatagrid(params) {
|
23
24
|
var defaultPlugins = [useFlexLayout, useHeaderRow, useSkeletonRows, useResizeColumns, useRowRenderer, useDefaultStringRenderer, useRowSize, useFilters, useGlobalFilter, useSortBy, useExpanded];
|
24
25
|
var defaultEndPlugins = [usePagination, useRowSelect, useFlexResize, useFloatingScroll];
|
@@ -29,9 +30,11 @@ var useDatagrid = function useDatagrid(params) {
|
|
29
30
|
for (var _len = arguments.length, plugins = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
30
31
|
plugins[_key - 1] = arguments[_key];
|
31
32
|
}
|
32
|
-
var tableState = useTable.apply(void 0, [_objectSpread({
|
33
|
+
var tableState = useTable.apply(void 0, [_objectSpread(_objectSpread({
|
33
34
|
tableId: tableId
|
34
|
-
}, params)
|
35
|
+
}, params), {}, {
|
36
|
+
stateReducer: stateReducer
|
37
|
+
})].concat(defaultPlugins, plugins, defaultEndPlugins, _toConsumableArray(clientEndPlugins)));
|
35
38
|
return tableState;
|
36
39
|
};
|
37
40
|
export default useDatagrid;
|
@@ -0,0 +1,25 @@
|
|
1
|
+
// This function recursively looks for the nested header element until we can find the key which contains the title.
|
2
|
+
// This can happen if multiple hooks are used together that manipulate the rendering of the column
|
3
|
+
// header, such as `useColumnCenterAlign` and `useSortableColumns`.
|
4
|
+
var getNestedTitle = function getNestedTitle(component) {
|
5
|
+
if (component && !component.key) {
|
6
|
+
return getNestedTitle(component.children);
|
7
|
+
}
|
8
|
+
if (component && component.key && typeof component.key === 'string') {
|
9
|
+
return component.key;
|
10
|
+
}
|
11
|
+
};
|
12
|
+
var getColTitle = function getColTitle(col) {
|
13
|
+
var _col$Header, _col$Header$props;
|
14
|
+
if (!col) {
|
15
|
+
return;
|
16
|
+
}
|
17
|
+
var checkTitle = function checkTitle() {
|
18
|
+
if (col.Header().props.children.props && col.Header().props.children.props.title) {
|
19
|
+
return col.Header().props.children.props.title;
|
20
|
+
}
|
21
|
+
return getNestedTitle(col.Header().props.children.props);
|
22
|
+
};
|
23
|
+
return typeof (col === null || col === void 0 ? void 0 : col.Header) === 'function' ? checkTitle() : col === null || col === void 0 ? void 0 : (_col$Header = col.Header) === null || _col$Header === void 0 ? void 0 : (_col$Header$props = _col$Header.props) === null || _col$Header$props === void 0 ? void 0 : _col$Header$props.title;
|
24
|
+
};
|
25
|
+
export default getColTitle;
|
@@ -9,11 +9,12 @@ var _excluded = ["children", "className", "definition", "theme"];
|
|
9
9
|
* LICENSE file in the root directory of this source tree.
|
10
10
|
*/
|
11
11
|
|
12
|
-
import React, { useState } from 'react';
|
12
|
+
import React, { useRef, useState } from 'react';
|
13
13
|
import PropTypes from 'prop-types';
|
14
14
|
import cx from 'classnames';
|
15
15
|
import { ChevronDown16 } from '@carbon/icons-react';
|
16
16
|
import { getDevtoolsProps } from '../../global/js/utils/devtools';
|
17
|
+
import uuidv4 from '../../global/js/utils/uuidv4';
|
17
18
|
import { pkg } from '../../settings';
|
18
19
|
|
19
20
|
// The block part of our conventional BEM class names (blockClass__E--M).
|
@@ -41,6 +42,7 @@ export var NonLinearReading = /*#__PURE__*/React.forwardRef(function (_ref, ref)
|
|
41
42
|
_useState2 = _slicedToArray(_useState, 2),
|
42
43
|
isOpen = _useState2[0],
|
43
44
|
setOpen = _useState2[1];
|
45
|
+
var contentId = useRef(uuidv4()).current;
|
44
46
|
var handleToggle = function handleToggle() {
|
45
47
|
setOpen(function (prevState) {
|
46
48
|
return !prevState;
|
@@ -52,12 +54,15 @@ export var NonLinearReading = /*#__PURE__*/React.forwardRef(function (_ref, ref)
|
|
52
54
|
role: "main"
|
53
55
|
}, getDevtoolsProps(componentName)), ' ', /*#__PURE__*/React.createElement("button", {
|
54
56
|
type: "button",
|
57
|
+
"aria-controls": contentId,
|
55
58
|
"aria-expanded": isOpen,
|
56
59
|
className: cx("".concat(blockClass, "__keyword"), [isOpen ? ["".concat(blockClass, "__keyword-open")] : ["".concat(blockClass, "__keyword-closed")]]),
|
57
60
|
onClick: handleToggle
|
58
|
-
}, children, /*#__PURE__*/React.createElement(ChevronDown16, null)), ' ',
|
59
|
-
|
60
|
-
|
61
|
+
}, children, /*#__PURE__*/React.createElement(ChevronDown16, null)), ' ', /*#__PURE__*/React.createElement("span", {
|
62
|
+
id: contentId,
|
63
|
+
className: "".concat(blockClass, "__body"),
|
64
|
+
hidden: !isOpen
|
65
|
+
}, isOpen && definition), ' ');
|
61
66
|
});
|
62
67
|
|
63
68
|
// Return a placeholder if not released and not enabled by feature flag
|
package/es/components/index.js
CHANGED
@@ -53,4 +53,5 @@ export { CoachmarkButton } from './CoachmarkButton';
|
|
53
53
|
export { CoachmarkOverlayElements } from './CoachmarkOverlayElements';
|
54
54
|
export { CoachmarkOverlayElement } from './CoachmarkOverlayElement';
|
55
55
|
export { CoachmarkStack } from './CoachmarkStack';
|
56
|
-
export { InlineTip } from './InlineTip';
|
56
|
+
export { InlineTip } from './InlineTip';
|
57
|
+
export { Checklist } from './Checklist';
|
@@ -7,22 +7,38 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
7
7
|
*/
|
8
8
|
import { useRef, useState, useLayoutEffect, useEffect } from 'react';
|
9
9
|
export var useResizeObserver = function useResizeObserver(ref, callback) {
|
10
|
-
var _useState = useState(
|
10
|
+
var _useState = useState(-1),
|
11
11
|
_useState2 = _slicedToArray(_useState, 2),
|
12
12
|
width = _useState2[0],
|
13
13
|
setWidth = _useState2[1];
|
14
|
-
var _useState3 = useState(
|
14
|
+
var _useState3 = useState(-1),
|
15
15
|
_useState4 = _slicedToArray(_useState3, 2),
|
16
16
|
height = _useState4[0],
|
17
17
|
setHeight = _useState4[1];
|
18
18
|
var entriesToHandle = useRef(null);
|
19
19
|
var cb = useRef(callback);
|
20
20
|
useEffect(function () {
|
21
|
-
// ref for callback removes it as dependency
|
21
|
+
// ref for callback removes it as dependency from useLayoutEffect
|
22
22
|
// This significantly reduces repeated calls if a function is redefined on every
|
23
23
|
// render
|
24
24
|
cb.current = callback;
|
25
25
|
}, [callback]);
|
26
|
+
useEffect(function () {
|
27
|
+
var getInitialSize = function getInitialSize() {
|
28
|
+
if (ref.current) {
|
29
|
+
var _ref$current, _ref$current2;
|
30
|
+
var refComputedStyle = window.getComputedStyle(ref.current);
|
31
|
+
var initialWidth = (((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.offsetWidth) || 0) - (parseFloat((refComputedStyle === null || refComputedStyle === void 0 ? void 0 : refComputedStyle.paddingLeft) || 0), parseFloat((refComputedStyle === null || refComputedStyle === void 0 ? void 0 : refComputedStyle.paddingRight) || 0));
|
32
|
+
var initialHeight = (((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.offsetHeight) || 0) - (parseFloat((refComputedStyle === null || refComputedStyle === void 0 ? void 0 : refComputedStyle.paddingTop) || 0), parseFloat((refComputedStyle === null || refComputedStyle === void 0 ? void 0 : refComputedStyle.paddingLeft) || 0));
|
33
|
+
setWidth(initialWidth);
|
34
|
+
setHeight(initialHeight);
|
35
|
+
}
|
36
|
+
};
|
37
|
+
if (!(ref !== null && ref !== void 0 && ref.current) || width >= 0 && height >= 0) {
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
getInitialSize();
|
41
|
+
}, [width, height, ref]);
|
26
42
|
useLayoutEffect(function () {
|
27
43
|
if (!(ref !== null && ref !== void 0 && ref.current)) {
|
28
44
|
return;
|