@carbon/ibm-products 2.0.0-rc.10 → 2.0.0-rc.12
Sign up to get free protection for your applications and to get access to all the features.
- package/css/index-full-carbon.css +131 -75
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +2 -2
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +1 -0
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +131 -75
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +2 -2
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +121 -75
- package/css/index.css.map +1 -1
- package/css/index.min.css +2 -2
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelectBody.js +1 -1
- package/es/components/AddSelect/hooks/usePath.js +8 -1
- package/es/components/CreateFullPage/CreateFullPage.js +9 -2
- package/es/components/CreateTearsheet/CreateTearsheet.js +9 -2
- package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +3 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +1 -4
- package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +6 -4
- package/es/components/Datagrid/Datagrid/Datagrid.js +7 -3
- package/es/components/Datagrid/Datagrid/DatagridContent.js +18 -6
- package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +17 -4
- package/es/components/Datagrid/Datagrid/DatagridRow.js +2 -10
- package/es/components/Datagrid/Datagrid/DatagridToolbar.js +22 -4
- package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +29 -8
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +7 -10
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +11 -13
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +28 -27
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/{CustomizeColumnsModal.js → CustomizeColumnsTearsheet.js} +31 -31
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +56 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +1 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +424 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +83 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +20 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +22 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/index.js +7 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +38 -0
- package/es/components/Datagrid/index.js +2 -1
- package/es/components/Datagrid/useCustomizeColumns.js +8 -8
- package/es/components/Datagrid/useFiltering.js +90 -0
- package/es/components/Datagrid/useParentDimensions.js +3 -1
- package/es/components/Datagrid/utils/DatagridActions.js +13 -26
- package/es/components/Datagrid/utils/getArgTypes.js +5 -0
- package/es/components/Datagrid/utils/getInlineEditColumns.js +6 -1
- package/es/components/Datagrid/utils/makeData.js +24 -16
- package/es/components/FilterSummary/FilterSummary.js +54 -0
- package/es/components/FilterSummary/index.js +7 -0
- package/es/components/index.js +1 -1
- package/es/global/js/hooks/useCreateComponentFocus.js +38 -10
- package/lib/components/AddSelect/AddSelectBody.js +1 -1
- package/lib/components/AddSelect/hooks/usePath.js +7 -0
- package/lib/components/CreateFullPage/CreateFullPage.js +9 -2
- package/lib/components/CreateTearsheet/CreateTearsheet.js +9 -2
- package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +3 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +1 -4
- package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +6 -4
- package/lib/components/Datagrid/Datagrid/Datagrid.js +8 -3
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +17 -6
- package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +17 -4
- package/lib/components/Datagrid/Datagrid/DatagridRow.js +2 -19
- package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +24 -3
- package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +31 -8
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +7 -10
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -6
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +30 -28
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/{CustomizeColumnsModal.js → CustomizeColumnsTearsheet.js} +27 -25
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/{ModalWrapper.js → TearsheetWrapper.js} +31 -36
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +3 -3
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +443 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +104 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +35 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +33 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +15 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +47 -0
- package/lib/components/Datagrid/index.js +9 -1
- package/lib/components/Datagrid/useCustomizeColumns.js +7 -7
- package/lib/components/Datagrid/useFiltering.js +94 -0
- package/lib/components/Datagrid/useParentDimensions.js +3 -1
- package/lib/components/Datagrid/utils/DatagridActions.js +13 -25
- package/lib/components/Datagrid/utils/getArgTypes.js +5 -0
- package/lib/components/Datagrid/utils/getInlineEditColumns.js +6 -1
- package/lib/components/Datagrid/utils/makeData.js +26 -18
- package/lib/components/FilterSummary/FilterSummary.js +72 -0
- package/lib/components/FilterSummary/index.js +15 -0
- package/lib/components/index.js +6 -0
- package/lib/global/js/hooks/useCreateComponentFocus.js +42 -11
- package/package.json +2 -2
- package/scss/components/Datagrid/_datagrid.scss +0 -1
- package/scss/components/Datagrid/_storybook-styles.scss +12 -0
- package/scss/components/Datagrid/styles/_datagrid.scss +23 -0
- package/scss/components/Datagrid/styles/_draggableElement.scss +9 -8
- package/scss/components/Datagrid/styles/_index.scss +8 -8
- package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +65 -0
- package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +87 -0
- package/scss/components/FilterSummary/_filter-summary.scss +20 -0
- package/scss/components/FilterSummary/_index.scss +10 -0
- package/scss/components/FilterSummary/_storybook-styles.scss +14 -0
- package/scss/components/Tearsheet/_tearsheet.scss +2 -0
- package/scss/components/_index.scss +1 -0
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +0 -63
- package/scss/components/Datagrid/styles/addons/_CustomizeColumnsModal.scss +0 -93
@@ -0,0 +1,90 @@
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
3
|
+
|
4
|
+
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; }
|
5
|
+
|
6
|
+
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; }
|
7
|
+
|
8
|
+
/*
|
9
|
+
* Licensed Materials - Property of IBM
|
10
|
+
* 5724-Q36
|
11
|
+
* (c) Copyright IBM Corp. 2022
|
12
|
+
* US Government Users Restricted Rights - Use, duplication or disclosure
|
13
|
+
* restricted by GSA ADP Schedule Contract with IBM Corp.
|
14
|
+
*/
|
15
|
+
import { useMemo } from 'react';
|
16
|
+
|
17
|
+
var useFiltering = function useFiltering(hooks) {
|
18
|
+
var filterTypes = useMemo(function () {
|
19
|
+
return {
|
20
|
+
date: function date(rows, id, _ref) {
|
21
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
22
|
+
startDate = _ref2[0],
|
23
|
+
endDate = _ref2[1];
|
24
|
+
|
25
|
+
return rows.filter(function (row) {
|
26
|
+
var rowValue = row.values[id];
|
27
|
+
|
28
|
+
if (rowValue.getTime() <= endDate.getTime() && rowValue.getTime() >= startDate.getTime()) {
|
29
|
+
// In date range
|
30
|
+
return true;
|
31
|
+
} else {
|
32
|
+
// Not in date range
|
33
|
+
return false;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
},
|
37
|
+
number: function number(rows, id, value) {
|
38
|
+
if (value === '') {
|
39
|
+
return rows;
|
40
|
+
}
|
41
|
+
|
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
|
+
}); // if the user removed all checkboxes then display all rows
|
55
|
+
|
56
|
+
if (selectedItems.length === 0) {
|
57
|
+
return rows;
|
58
|
+
}
|
59
|
+
|
60
|
+
return rows.filter(function (row) {
|
61
|
+
var rowValue = row.values[id];
|
62
|
+
return selectedItems.includes(rowValue);
|
63
|
+
});
|
64
|
+
}
|
65
|
+
};
|
66
|
+
}, []);
|
67
|
+
hooks.useInstance.push(function (instance) {
|
68
|
+
var filterProps = instance.filterProps,
|
69
|
+
setAllFilters = instance.setAllFilters,
|
70
|
+
headers = instance.headers;
|
71
|
+
var defaultProps = {
|
72
|
+
variation: 'flyout'
|
73
|
+
};
|
74
|
+
|
75
|
+
var getFilterFlyoutProps = function getFilterFlyoutProps() {
|
76
|
+
return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
|
77
|
+
setAllFilters: setAllFilters,
|
78
|
+
headers: headers
|
79
|
+
});
|
80
|
+
};
|
81
|
+
|
82
|
+
Object.assign(instance, {
|
83
|
+
filterProps: _objectSpread(_objectSpread({}, defaultProps), instance.filterProps),
|
84
|
+
filterTypes: filterTypes,
|
85
|
+
getFilterFlyoutProps: getFilterFlyoutProps
|
86
|
+
});
|
87
|
+
});
|
88
|
+
};
|
89
|
+
|
90
|
+
export default useFiltering;
|
@@ -14,6 +14,7 @@ var useParentDimensions = function useParentDimensions(hooks) {
|
|
14
14
|
var headRef = useRef();
|
15
15
|
var innerListRef = useRef();
|
16
16
|
var listRef = useRef();
|
17
|
+
var gridRef = useRef();
|
17
18
|
|
18
19
|
var _useState = useState(),
|
19
20
|
_useState2 = _slicedToArray(_useState, 2),
|
@@ -55,7 +56,8 @@ var useParentDimensions = function useParentDimensions(hooks) {
|
|
55
56
|
headRef: headRef,
|
56
57
|
innerListRef: innerListRef,
|
57
58
|
handleResize: handleResize,
|
58
|
-
listRef: listRef
|
59
|
+
listRef: listRef,
|
60
|
+
gridRef: gridRef
|
59
61
|
});
|
60
62
|
};
|
61
63
|
|
@@ -8,10 +8,11 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
8
8
|
*/
|
9
9
|
import React, { useLayoutEffect, useState } from 'react';
|
10
10
|
import { DataTable, Button, OverflowMenu, OverflowMenuItem, ComposedModal, ModalBody, ModalHeader, ModalFooter, Dropdown } from '@carbon/react';
|
11
|
-
import { Download,
|
11
|
+
import { Download, Add, Restart, ChevronDown } from '@carbon/react/icons';
|
12
12
|
import { action } from '@storybook/addon-actions';
|
13
13
|
import { pkg } from '../../../settings';
|
14
14
|
import { ButtonMenu, ButtonMenuItem } from '../../ButtonMenu';
|
15
|
+
import { FilterFlyout } from '../Datagrid/addons/Filtering';
|
15
16
|
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
16
17
|
export var DatagridActions = function DatagridActions(datagridState) {
|
17
18
|
var selectedFlatRows = datagridState.selectedFlatRows,
|
@@ -19,7 +20,9 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
19
20
|
CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
|
20
21
|
RowSizeDropdown = datagridState.RowSizeDropdown,
|
21
22
|
rowSizeDropdownProps = datagridState.rowSizeDropdownProps,
|
22
|
-
useDenseHeader = datagridState.useDenseHeader
|
23
|
+
useDenseHeader = datagridState.useDenseHeader,
|
24
|
+
filterProps = datagridState.filterProps,
|
25
|
+
getFilterFlyoutProps = datagridState.getFilterFlyoutProps;
|
23
26
|
|
24
27
|
var downloadCsv = function downloadCsv() {
|
25
28
|
alert('Downloading...');
|
@@ -32,10 +35,6 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
32
35
|
alert('refreshing...');
|
33
36
|
};
|
34
37
|
|
35
|
-
var leftPanelClick = function leftPanelClick() {
|
36
|
-
alert('open/close left panel...');
|
37
|
-
};
|
38
|
-
|
39
38
|
var searchForAColumn = 'Search';
|
40
39
|
var isNothingSelected = selectedFlatRows.length === 0;
|
41
40
|
var style = {
|
@@ -44,6 +43,10 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
44
43
|
}
|
45
44
|
};
|
46
45
|
|
46
|
+
var renderFilterFlyout = function renderFilterFlyout() {
|
47
|
+
return (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'flyout' && /*#__PURE__*/React.createElement(FilterFlyout, getFilterFlyoutProps());
|
48
|
+
};
|
49
|
+
|
47
50
|
var _useState = useState(false),
|
48
51
|
_useState2 = _slicedToArray(_useState, 2),
|
49
52
|
modalOpen = _useState2[0],
|
@@ -77,16 +80,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
77
80
|
renderIcon: Download,
|
78
81
|
iconDescription: 'Download CSV',
|
79
82
|
onClick: downloadCsv
|
80
|
-
})), /*#__PURE__*/React.createElement("div", {
|
81
|
-
style: style
|
82
|
-
}, /*#__PURE__*/React.createElement(Button, {
|
83
|
-
kind: "ghost",
|
84
|
-
hasIconOnly: true,
|
85
|
-
tooltipPosition: "bottom",
|
86
|
-
renderIcon: Filter,
|
87
|
-
iconDescription: 'Left panel',
|
88
|
-
onClick: leftPanelClick
|
89
|
-
})), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
|
83
|
+
})), renderFilterFlyout(), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
|
90
84
|
style: style,
|
91
85
|
className: "".concat(blockClass, "__toolbar-divider")
|
92
86
|
}, /*#__PURE__*/React.createElement(Button, {
|
@@ -122,14 +116,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
122
116
|
itemText: "Create",
|
123
117
|
hasDivider: true,
|
124
118
|
requireTitle: true
|
125
|
-
}))) : !mobileToolbar ? /*#__PURE__*/React.createElement(
|
126
|
-
kind: "ghost",
|
127
|
-
hasIconOnly: true,
|
128
|
-
tooltipPosition: "bottom",
|
129
|
-
renderIcon: Filter,
|
130
|
-
iconDescription: 'Left panel',
|
131
|
-
onClick: leftPanelClick
|
132
|
-
}), /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
119
|
+
}))) : !mobileToolbar ? /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
133
120
|
size: "xl",
|
134
121
|
id: "columnSearch",
|
135
122
|
persistent: true,
|
@@ -137,7 +124,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
137
124
|
onChange: function onChange(e) {
|
138
125
|
return setGlobalFilter(e.target.value);
|
139
126
|
}
|
140
|
-
}), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
|
127
|
+
}), renderFilterFlyout(), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
|
141
128
|
style: style
|
142
129
|
}, /*#__PURE__*/React.createElement(Button, {
|
143
130
|
kind: "ghost",
|
@@ -169,7 +156,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
169
156
|
}), /*#__PURE__*/React.createElement(ButtonMenuItem, {
|
170
157
|
itemText: "Option 3",
|
171
158
|
onClick: action("Click on ButtonMenu Option 3")
|
172
|
-
})))
|
159
|
+
}))) : /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
173
160
|
size: "xl",
|
174
161
|
id: "columnSearch",
|
175
162
|
persistent: true,
|
@@ -85,5 +85,10 @@ export var ARG_TYPES = {
|
|
85
85
|
customizeColumnsProps: {
|
86
86
|
control: 'object',
|
87
87
|
description: 'This is an object containing all of the props used with the column customization extension. _This value is set/passed inside of the `datagridState` object._'
|
88
|
+
},
|
89
|
+
filterProps: {
|
90
|
+
name: 'Filter props',
|
91
|
+
control: 'object',
|
92
|
+
description: 'This is an object for all the props passed into the filter flyout and filter panel'
|
88
93
|
}
|
89
94
|
};
|
@@ -89,8 +89,13 @@ export var getInlineEditColumns = function getInlineEditColumns() {
|
|
89
89
|
accessor: 'visits',
|
90
90
|
width: 120,
|
91
91
|
inlineEdit: {
|
92
|
+
validator: function validator(n) {
|
93
|
+
return n && n < 10;
|
94
|
+
},
|
92
95
|
type: 'number',
|
93
|
-
inputProps: {
|
96
|
+
inputProps: {
|
97
|
+
invalidText: 'Invalid number, must be 10 or greater'
|
98
|
+
} // These props are passed to the Carbon component used for inline editing
|
94
99
|
|
95
100
|
}
|
96
101
|
}, {
|
@@ -12,7 +12,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
12
12
|
*/
|
13
13
|
import React from 'react';
|
14
14
|
import namor from 'namor';
|
15
|
-
import { StatusIcon } from '../../StatusIcon';
|
16
15
|
import { inlineEditSelectItems } from './getInlineEditColumns';
|
17
16
|
|
18
17
|
var getRandomInteger = function getRandomInteger(min, max, decimalPlaces) {
|
@@ -54,27 +53,30 @@ export var range = function range(len) {
|
|
54
53
|
|
55
54
|
return arr;
|
56
55
|
};
|
56
|
+
/** This function is only to create a random data point when the person joined */
|
57
57
|
|
58
|
-
var
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
return /*#__PURE__*/React.createElement(StatusIcon, iconProps);
|
58
|
+
var getRandomDateJoined = function getRandomDateJoined() {
|
59
|
+
return randomDate(new Date(2022, 0, 1), new Date());
|
60
|
+
};
|
61
|
+
|
62
|
+
var getPasswordStrength = function getPasswordStrength() {
|
63
|
+
var chance = Math.random();
|
64
|
+
return chance > 0.66 ? 'critical' : chance > 0.33 ? 'minor-warning' : 'normal';
|
66
65
|
};
|
67
66
|
|
68
|
-
var renderDocLink = function renderDocLink(
|
67
|
+
var renderDocLink = function renderDocLink() {
|
68
|
+
var chance = Math.random();
|
69
69
|
var docLinkObj = {
|
70
|
-
href:
|
71
|
-
text:
|
70
|
+
href: chance > 0.66 ? 'http://carbondesignsystem.com/' : chance > 0.33 ? 'https://pages.github.ibm.com/cdai-design/pal/' : 'http://carbon-for-ibm-products.netlify.app/',
|
71
|
+
text: chance > 0.66 ? 'Carbon Design System' : chance > 0.33 ? 'Carbon for IBM Products PAL' : 'Carbon for IBM Products storybook'
|
72
72
|
};
|
73
73
|
return docLinkObj;
|
74
74
|
};
|
75
75
|
|
76
76
|
var newPerson = function newPerson() {
|
77
77
|
var statusChance = Math.random();
|
78
|
+
var roleChance = Math.random();
|
79
|
+
var activeChance = Math.random();
|
78
80
|
var initialChartTypeIndex = getRandomInteger(0, 2);
|
79
81
|
var activeSinceDate = new Date();
|
80
82
|
var yesterdayDate = new Date();
|
@@ -93,6 +95,9 @@ var newPerson = function newPerson() {
|
|
93
95
|
age: Math.floor(Math.random() * 30),
|
94
96
|
visits: Math.floor(Math.random() * 100),
|
95
97
|
progress: Math.floor(Math.random() * 100),
|
98
|
+
status: statusChance > 0.66 ? 'relationship' : statusChance > 0.33 ? 'complicated' : 'single',
|
99
|
+
role: roleChance > 0.66 ? 'developer' : roleChance > 0.33 ? 'designer' : 'researcher',
|
100
|
+
joined: getRandomDateJoined(),
|
96
101
|
someone1: namor.generate({
|
97
102
|
words: 1,
|
98
103
|
numbers: 0
|
@@ -173,12 +178,11 @@ var newPerson = function newPerson() {
|
|
173
178
|
words: 1,
|
174
179
|
numbers: 0
|
175
180
|
}),
|
176
|
-
status: statusChance > 0.66 ? 'relationship' : statusChance > 0.33 ? 'complicated' : 'single',
|
177
181
|
chartType: initialChartTypeIndex === 0 ? inlineEditSelectItems[0] : initialChartTypeIndex === 1 ? inlineEditSelectItems[1] : inlineEditSelectItems[2],
|
178
|
-
activeSince:
|
182
|
+
activeSince: activeChance > 0.66 ? activeSinceDate : activeChance > 0.33 ? yesterdayDate : twoDaysAgoDate,
|
179
183
|
bonus: "$\r".concat(getRandomInteger(100, 500, 2)),
|
180
|
-
|
181
|
-
doc_link: renderDocLink(
|
184
|
+
passwordStrength: getPasswordStrength(),
|
185
|
+
doc_link: renderDocLink()
|
182
186
|
};
|
183
187
|
};
|
184
188
|
|
@@ -197,4 +201,8 @@ export var newPersonWithTwoLines = function newPersonWithTwoLines() {
|
|
197
201
|
}),
|
198
202
|
age: Math.floor(Math.random() * 30)
|
199
203
|
};
|
204
|
+
};
|
205
|
+
|
206
|
+
var randomDate = function randomDate(start, end) {
|
207
|
+
return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
|
200
208
|
};
|
@@ -0,0 +1,54 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2022, 2022
|
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
|
+
import { Button } from '@carbon/react';
|
8
|
+
import React from 'react';
|
9
|
+
import PropTypes from 'prop-types';
|
10
|
+
import cx from 'classnames';
|
11
|
+
import { TagSet } from '../TagSet';
|
12
|
+
import { pkg } from '../../settings';
|
13
|
+
var blockClass = "".concat(pkg.prefix, "--filter-summary");
|
14
|
+
var FilterSummary = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
15
|
+
var _ref$className = _ref.className,
|
16
|
+
className = _ref$className === void 0 ? '' : _ref$className,
|
17
|
+
_ref$clearFiltersText = _ref.clearFiltersText,
|
18
|
+
clearFiltersText = _ref$clearFiltersText === void 0 ? 'Clear filters' : _ref$clearFiltersText,
|
19
|
+
_ref$clearFilters = _ref.clearFilters,
|
20
|
+
clearFilters = _ref$clearFilters === void 0 ? function () {} : _ref$clearFilters,
|
21
|
+
_ref$filters = _ref.filters,
|
22
|
+
filters = _ref$filters === void 0 ? [] : _ref$filters;
|
23
|
+
var tagFilters = filters.map(function (_ref2) {
|
24
|
+
var key = _ref2.key,
|
25
|
+
value = _ref2.value;
|
26
|
+
return {
|
27
|
+
type: 'gray',
|
28
|
+
label: "".concat(key, ": ").concat(value)
|
29
|
+
};
|
30
|
+
});
|
31
|
+
return /*#__PURE__*/React.createElement("div", {
|
32
|
+
ref: ref,
|
33
|
+
className: cx([blockClass, className])
|
34
|
+
}, /*#__PURE__*/React.createElement(TagSet, {
|
35
|
+
allTagsModalSearchLabel: "Search all tags",
|
36
|
+
allTagsModalSearchPlaceholderText: "Search all tags",
|
37
|
+
allTagsModalTitle: "All tags",
|
38
|
+
showAllTagsLabel: "View all tags",
|
39
|
+
tags: tagFilters
|
40
|
+
}), /*#__PURE__*/React.createElement(Button, {
|
41
|
+
kind: "ghost",
|
42
|
+
size: "sm",
|
43
|
+
onClick: clearFilters
|
44
|
+
}, clearFiltersText));
|
45
|
+
});
|
46
|
+
var componentName = 'FilterSummary';
|
47
|
+
FilterSummary.displayName = componentName;
|
48
|
+
FilterSummary.propTypes = {
|
49
|
+
className: PropTypes.string,
|
50
|
+
clearFilters: PropTypes.func.isRequired,
|
51
|
+
clearFiltersText: PropTypes.string,
|
52
|
+
filters: PropTypes.arrayOf(PropTypes.object).isRequired
|
53
|
+
};
|
54
|
+
export default FilterSummary;
|
package/es/components/index.js
CHANGED
@@ -37,7 +37,7 @@ export { EditSidePanel } from './EditSidePanel';
|
|
37
37
|
export { OptionsTile } from './OptionsTile';
|
38
38
|
export { InlineEdit } from './InlineEdit';
|
39
39
|
export { DataSpreadsheet } from './DataSpreadsheet';
|
40
|
-
export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle, useColumnOrder, useInlineEdit } from './Datagrid';
|
40
|
+
export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle, useColumnOrder, useInlineEdit, useFiltering } from './Datagrid';
|
41
41
|
export { EditTearsheet } from './EditTearsheet';
|
42
42
|
export { EditTearsheetNarrow } from './EditTearsheetNarrow';
|
43
43
|
export { EditFullPage } from './EditFullPage';
|
@@ -1,3 +1,6 @@
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
3
|
+
|
1
4
|
/**
|
2
5
|
* Copyright IBM Corp. 2021, 2021
|
3
6
|
*
|
@@ -5,29 +8,54 @@
|
|
5
8
|
* LICENSE file in the root directory of this source tree.
|
6
9
|
*/
|
7
10
|
import { useEffect } from 'react';
|
8
|
-
import
|
11
|
+
import wait from '../utils/wait'; // Focus the first focusable element and call the onMount prop for the current step if one is provided
|
9
12
|
|
10
13
|
export var useCreateComponentFocus = function useCreateComponentFocus(_ref) {
|
11
14
|
var previousState = _ref.previousState,
|
12
15
|
currentStep = _ref.currentStep,
|
13
16
|
blockClass = _ref.blockClass,
|
14
|
-
onMount = _ref.onMount
|
17
|
+
onMount = _ref.onMount,
|
18
|
+
firstFocusElement = _ref.firstFocusElement;
|
15
19
|
useEffect(function () {
|
16
20
|
if (typeof onMount === 'function') {
|
17
21
|
onMount();
|
18
22
|
}
|
19
23
|
}, [onMount]);
|
20
24
|
useEffect(function () {
|
25
|
+
// because of how handleStackChange.claimFocus in TearsheetShell works a timeout is required to focus on specific elements
|
26
|
+
var awaitFocus = /*#__PURE__*/function () {
|
27
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(elm) {
|
28
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
29
|
+
while (1) {
|
30
|
+
switch (_context.prev = _context.next) {
|
31
|
+
case 0:
|
32
|
+
_context.next = 2;
|
33
|
+
return wait(10);
|
34
|
+
|
35
|
+
case 2:
|
36
|
+
elm.focus();
|
37
|
+
|
38
|
+
case 3:
|
39
|
+
case "end":
|
40
|
+
return _context.stop();
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}, _callee);
|
44
|
+
}));
|
45
|
+
|
46
|
+
return function awaitFocus(_x) {
|
47
|
+
return _ref2.apply(this, arguments);
|
48
|
+
};
|
49
|
+
}();
|
50
|
+
|
21
51
|
if ((previousState === null || previousState === void 0 ? void 0 : previousState.currentStep) !== currentStep && currentStep > 0) {
|
22
|
-
|
23
|
-
|
52
|
+
if (firstFocusElement) {
|
53
|
+
var elm = document.querySelector(firstFocusElement);
|
24
54
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
var nextButton = document.querySelector(".".concat(blockClass, "__create-button"));
|
29
|
-
nextButton === null || nextButton === void 0 ? void 0 : nextButton.focus();
|
55
|
+
if (elm) {
|
56
|
+
awaitFocus(elm);
|
57
|
+
}
|
30
58
|
}
|
31
59
|
}
|
32
|
-
}, [currentStep, previousState, blockClass, onMount]);
|
60
|
+
}, [currentStep, previousState, blockClass, onMount, firstFocusElement]);
|
33
61
|
};
|
@@ -201,7 +201,7 @@ var AddSelectBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
201
201
|
};
|
202
202
|
|
203
203
|
var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
|
204
|
-
if (
|
204
|
+
if (useNormalizedItems === false || searchTerm || globalFiltersApplied) {
|
205
205
|
return false;
|
206
206
|
}
|
207
207
|
|
@@ -30,6 +30,13 @@ var usePath = function usePath() {
|
|
30
30
|
path = _useState2[0],
|
31
31
|
setPath = _useState2[1];
|
32
32
|
|
33
|
+
(0, _react.useEffect)(function () {
|
34
|
+
setPath([{
|
35
|
+
id: 'base_of_path',
|
36
|
+
title: itemsLabel
|
37
|
+
}]);
|
38
|
+
}, [itemsLabel]);
|
39
|
+
|
33
40
|
var handler = function handler(id, title, parentId) {
|
34
41
|
if (path.find(function (entry) {
|
35
42
|
return entry.id === id;
|
@@ -35,7 +35,7 @@ var _hooks = require("../../global/js/hooks");
|
|
35
35
|
|
36
36
|
var _lastIndexInArray = require("../../global/js/utils/lastIndexInArray");
|
37
37
|
|
38
|
-
var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "submitButtonText"];
|
38
|
+
var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "firstFocusElement", "submitButtonText"];
|
39
39
|
|
40
40
|
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); }
|
41
41
|
|
@@ -65,6 +65,7 @@ var CreateFullPage = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
65
65
|
nextButtonText = _ref.nextButtonText,
|
66
66
|
onClose = _ref.onClose,
|
67
67
|
onRequestSubmit = _ref.onRequestSubmit,
|
68
|
+
firstFocusElement = _ref.firstFocusElement,
|
68
69
|
submitButtonText = _ref.submitButtonText,
|
69
70
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
70
71
|
|
@@ -146,7 +147,8 @@ var CreateFullPage = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
146
147
|
previousState: previousState,
|
147
148
|
currentStep: currentStep,
|
148
149
|
blockClass: blockClass,
|
149
|
-
onMount: onMount
|
150
|
+
onMount: onMount,
|
151
|
+
firstFocusElement: firstFocusElement
|
150
152
|
});
|
151
153
|
(0, _hooks.useValidCreateStepCount)(stepData.length, componentName);
|
152
154
|
(0, _hooks.useCreateComponentStepChange)({
|
@@ -269,6 +271,11 @@ CreateFullPage.propTypes = {
|
|
269
271
|
*/
|
270
272
|
className: _propTypes.default.string,
|
271
273
|
|
274
|
+
/**
|
275
|
+
* Specifies elements to focus on first on render.
|
276
|
+
*/
|
277
|
+
firstFocusElement: _propTypes.default.string,
|
278
|
+
|
272
279
|
/**
|
273
280
|
* The primary 'danger' button text in the modal
|
274
281
|
*/
|
@@ -39,7 +39,7 @@ var _lastIndexInArray = require("../../global/js/utils/lastIndexInArray");
|
|
39
39
|
|
40
40
|
var _getNumberOfHiddenSteps = require("../../global/js/utils/getNumberOfHiddenSteps");
|
41
41
|
|
42
|
-
var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "description", "influencerWidth", "initialStep", "label", "nextButtonText", "onClose", "onRequestSubmit", "open", "submitButtonText", "title", "verticalPosition"];
|
42
|
+
var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "description", "influencerWidth", "initialStep", "label", "nextButtonText", "onClose", "onRequestSubmit", "open", "firstFocusElement", "submitButtonText", "title", "verticalPosition"];
|
43
43
|
|
44
44
|
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); }
|
45
45
|
|
@@ -75,6 +75,7 @@ var CreateTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
75
75
|
onClose = _ref.onClose,
|
76
76
|
onRequestSubmit = _ref.onRequestSubmit,
|
77
77
|
open = _ref.open,
|
78
|
+
firstFocusElement = _ref.firstFocusElement,
|
78
79
|
submitButtonText = _ref.submitButtonText,
|
79
80
|
title = _ref.title,
|
80
81
|
_ref$verticalPosition = _ref.verticalPosition,
|
@@ -159,7 +160,8 @@ var CreateTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
159
160
|
previousState: previousState,
|
160
161
|
currentStep: currentStep,
|
161
162
|
blockClass: blockClass,
|
162
|
-
onMount: onMount
|
163
|
+
onMount: onMount,
|
164
|
+
firstFocusElement: firstFocusElement
|
163
165
|
});
|
164
166
|
(0, _hooks.useValidCreateStepCount)(stepData.length, componentName);
|
165
167
|
(0, _hooks.useResetCreateComponent)({
|
@@ -290,6 +292,11 @@ CreateTearsheet.propTypes = {
|
|
290
292
|
*/
|
291
293
|
description: _propTypes.default.node,
|
292
294
|
|
295
|
+
/**
|
296
|
+
* Specifies elements to focus on first on render.
|
297
|
+
*/
|
298
|
+
firstFocusElement: _propTypes.default.string,
|
299
|
+
|
293
300
|
/**
|
294
301
|
* Used to set the size of the influencer
|
295
302
|
*/
|
@@ -64,6 +64,7 @@ var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
|
|
64
64
|
cancelButtonText = _ref2.cancelButtonText,
|
65
65
|
className = _ref2.className,
|
66
66
|
description = _ref2.description,
|
67
|
+
firstFocusElement = _ref2.firstFocusElement,
|
67
68
|
influencerWidth = _ref2.influencerWidth,
|
68
69
|
label = _ref2.label,
|
69
70
|
nextButtonText = _ref2.nextButtonText,
|
@@ -165,7 +166,8 @@ var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
|
|
165
166
|
resolve();
|
166
167
|
}, simulatedDelay);
|
167
168
|
});
|
168
|
-
}
|
169
|
+
},
|
170
|
+
firstFocusElement: firstFocusElement
|
169
171
|
}, /*#__PURE__*/_react.default.createElement(_CreateTearsheetStep.CreateTearsheetStep, {
|
170
172
|
onNext: function onNext() {
|
171
173
|
return new Promise(function (resolve, reject) {
|
@@ -236,10 +236,7 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
|
|
236
236
|
|
237
237
|
var removeActiveCell = (0, _react.useCallback)(function () {
|
238
238
|
var activeCellHighlight = spreadsheetRef.current.querySelector(".".concat(blockClass, "__active-cell--highlight"));
|
239
|
-
|
240
|
-
if (activeCellHighlight) {
|
241
|
-
activeCellHighlight.style.display = 'none';
|
242
|
-
}
|
239
|
+
activeCellHighlight.style.display = 'none';
|
243
240
|
}, [spreadsheetRef]);
|
244
241
|
var removeCellEditor = (0, _react.useCallback)(function () {
|
245
242
|
setCellEditorValue('');
|
@@ -16,6 +16,8 @@ var _rangeWithCallback = require("../../../global/js/utils/rangeWithCallback");
|
|
16
16
|
* LICENSE file in the root directory of this source tree.
|
17
17
|
*/
|
18
18
|
var handleCellDeletion = function handleCellDeletion(_ref) {
|
19
|
+
var _selectionAreaToEmpty, _selectionAreaToEmpty2, _selectionAreaToEmpty3, _selectionAreaToEmpty4, _selectionAreaToEmpty5, _selectionAreaToEmpty6, _selectionAreaToEmpty7, _selectionAreaToEmpty8;
|
20
|
+
|
19
21
|
var activeCellCoordinates = _ref.activeCellCoordinates,
|
20
22
|
selectionAreas = _ref.selectionAreas,
|
21
23
|
currentMatcher = _ref.currentMatcher,
|
@@ -35,10 +37,10 @@ var handleCellDeletion = function handleCellDeletion(_ref) {
|
|
35
37
|
return item.matcher === currentMatcher;
|
36
38
|
});
|
37
39
|
var selectionAreaToEmptyContents = selectionAreaClone[indexOfCurrentSelectionArea];
|
38
|
-
var lowestColumnIndex = Math.min(selectionAreaToEmptyContents.point1.column, selectionAreaToEmptyContents.point2.column);
|
39
|
-
var greatestColumnIndex = Math.max(selectionAreaToEmptyContents.point1.column, selectionAreaToEmptyContents.point2.column);
|
40
|
-
var lowestRowIndex = Math.min(selectionAreaToEmptyContents.point1.row, selectionAreaToEmptyContents.point2.row);
|
41
|
-
var greatestRowIndex = Math.max(selectionAreaToEmptyContents.point1.row, selectionAreaToEmptyContents.point2.row);
|
40
|
+
var lowestColumnIndex = Math.min(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty === void 0 ? void 0 : _selectionAreaToEmpty.column, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty2 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty2 === void 0 ? void 0 : _selectionAreaToEmpty2.column);
|
41
|
+
var greatestColumnIndex = Math.max(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty3 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty3 === void 0 ? void 0 : _selectionAreaToEmpty3.column, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty4 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty4 === void 0 ? void 0 : _selectionAreaToEmpty4.column);
|
42
|
+
var lowestRowIndex = Math.min(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty5 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty5 === void 0 ? void 0 : _selectionAreaToEmpty5.row, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty6 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty6 === void 0 ? void 0 : _selectionAreaToEmpty6.row);
|
43
|
+
var greatestRowIndex = Math.max(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty7 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty7 === void 0 ? void 0 : _selectionAreaToEmpty7.row, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty8 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty8 === void 0 ? void 0 : _selectionAreaToEmpty8.row);
|
42
44
|
(0, _rangeWithCallback.rangeWithCallback)(lowestColumnIndex, greatestColumnIndex, function (columnIndex) {
|
43
45
|
(0, _rangeWithCallback.rangeWithCallback)(lowestRowIndex, greatestRowIndex, function (rowIndex) {
|
44
46
|
var cellProps = rows[rowIndex].cells[columnIndex];
|