@carbon/ibm-products 1.18.2 → 1.20.0
Sign up to get free protection for your applications and to get access to all the features.
- package/css/components/Datagrid/styles/datagrid.css +20 -1
- package/css/components/Datagrid/styles/datagrid.css.map +1 -1
- package/css/components/Datagrid/styles/draggableElement.css +57 -0
- package/css/components/Datagrid/styles/draggableElement.css.map +1 -0
- package/css/components/Datagrid/styles/index.css +100 -1
- package/css/components/Datagrid/styles/index.css.map +1 -1
- package/css/index-full-carbon.css +114 -2
- 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 +241 -0
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +7 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +114 -2
- 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 +114 -2
- 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/ActionSet/ActionSet.js +1 -0
- package/es/components/AddSelect/AddSelect.js +34 -3
- package/es/components/AddSelect/AddSelectFilter.js +9 -3
- package/es/components/AddSelect/AddSelectList.js +33 -9
- package/es/components/AddSelect/AddSelectSidebar.js +19 -11
- package/es/components/ComboButton/ComboButton.js +3 -5
- package/es/components/CreateSidePanel/CreateSidePanel.js +4 -10
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +3 -1
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +4 -3
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +25 -9
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +1 -3
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +63 -34
- package/es/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +17 -3
- package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +113 -19
- package/es/components/Datagrid/Datagrid/DraggableElement.js +9 -19
- package/es/components/EditSidePanel/EditSidePanel.js +3 -9
- package/es/components/SidePanel/SidePanel.js +2 -2
- package/es/global/js/hooks/useWindowResize.js +2 -1
- package/es/global/js/hooks/useWindowScroll.js +2 -1
- package/es/global/js/package-settings.js +1 -1
- package/es/global/js/utils/scrollableAncestor.js +2 -1
- package/lib/components/ActionSet/ActionSet.js +1 -0
- package/lib/components/AddSelect/AddSelect.js +34 -3
- package/lib/components/AddSelect/AddSelectFilter.js +10 -3
- package/lib/components/AddSelect/AddSelectList.js +32 -9
- package/lib/components/AddSelect/AddSelectSidebar.js +19 -11
- package/lib/components/ComboButton/ComboButton.js +5 -8
- package/lib/components/CreateSidePanel/CreateSidePanel.js +3 -10
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +3 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +4 -3
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +25 -9
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseMove.js +1 -4
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetMouseUp.js +64 -34
- package/lib/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +17 -3
- package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +112 -19
- package/lib/components/Datagrid/Datagrid/DraggableElement.js +11 -19
- package/lib/components/EditSidePanel/EditSidePanel.js +3 -10
- package/lib/components/SidePanel/SidePanel.js +2 -2
- package/lib/global/js/hooks/useWindowResize.js +3 -1
- package/lib/global/js/hooks/useWindowScroll.js +5 -1
- package/lib/global/js/package-settings.js +1 -1
- package/lib/global/js/utils/scrollableAncestor.js +6 -1
- package/package.json +4 -4
- package/scss/components/AddSelect/_add-select.scss +6 -0
- package/scss/components/ComboButton/_combo-button.scss +2 -1
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +1 -0
- package/scss/components/Datagrid/_datagrid.scss +1 -10
- package/scss/components/Datagrid/styles/datagrid.scss +17 -1
- package/scss/components/Datagrid/styles/draggableElement.scss +58 -0
- package/scss/components/Datagrid/styles/index.scss +2 -1
- package/scss/components/_index-released-only.scss +1 -0
@@ -10,19 +10,37 @@ import { deepCloneObject } from '../../../global/js/utils/deepCloneObject';
|
|
10
10
|
import uuidv4 from '../../../global/js/utils/uuidv4';
|
11
11
|
import { removeCellSelections } from './removeCellSelections';
|
12
12
|
import { checkActiveHeaderCell } from './checkActiveHeaderCell';
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
13
|
+
|
14
|
+
var getSelectedItemIndexList = function getSelectedItemIndexList(_ref) {
|
15
|
+
var indexList = _ref.indexList,
|
16
|
+
newIndex = _ref.newIndex,
|
17
|
+
activeCellIndex = _ref.activeCellIndex;
|
18
|
+
var lowestIndex = newIndex > activeCellIndex ? activeCellIndex : Math.min.apply(Math, _toConsumableArray(indexList).concat([newIndex]));
|
19
|
+
var highestIndex = newIndex < activeCellIndex ? activeCellIndex : Math.max.apply(Math, _toConsumableArray(indexList).concat([newIndex]));
|
20
|
+
var newIndexList = [];
|
21
|
+
|
22
|
+
for (var i = lowestIndex; i <= highestIndex; i++) {
|
23
|
+
newIndexList.push(i);
|
24
|
+
}
|
25
|
+
|
26
|
+
return [].concat(newIndexList);
|
27
|
+
};
|
28
|
+
|
29
|
+
export var handleHeaderCellSelection = function handleHeaderCellSelection(_ref2) {
|
30
|
+
var type = _ref2.type,
|
31
|
+
activeCellCoordinates = _ref2.activeCellCoordinates,
|
32
|
+
rows = _ref2.rows,
|
33
|
+
columns = _ref2.columns,
|
34
|
+
currentMatcher = _ref2.currentMatcher,
|
35
|
+
setActiveCellCoordinates = _ref2.setActiveCellCoordinates,
|
36
|
+
setCurrentMatcher = _ref2.setCurrentMatcher,
|
37
|
+
setSelectionAreas = _ref2.setSelectionAreas,
|
38
|
+
spreadsheetRef = _ref2.spreadsheetRef,
|
39
|
+
index = _ref2.index,
|
40
|
+
isKeyboard = _ref2.isKeyboard,
|
41
|
+
setSelectionAreaData = _ref2.setSelectionAreaData,
|
42
|
+
isHoldingCommandKey = _ref2.isHoldingCommandKey,
|
43
|
+
isHoldingShiftKey = _ref2.isHoldingShiftKey;
|
26
44
|
|
27
45
|
if (!isHoldingCommandKey) {
|
28
46
|
setSelectionAreaData([]);
|
@@ -43,11 +61,15 @@ export var handleHeaderCellSelection = function handleHeaderCellSelection(_ref)
|
|
43
61
|
column: type === 'column' ? columnValue : columns.length - 1
|
44
62
|
};
|
45
63
|
var tempMatcher = uuidv4();
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
64
|
+
|
65
|
+
if (!isHoldingShiftKey) {
|
66
|
+
setActiveCellCoordinates({
|
67
|
+
row: type === 'column' ? 0 : rowValue,
|
68
|
+
column: type === 'column' ? columnValue : 0
|
69
|
+
});
|
70
|
+
setCurrentMatcher(tempMatcher);
|
71
|
+
}
|
72
|
+
|
51
73
|
var newSelectionArea = {
|
52
74
|
point1: point1,
|
53
75
|
point2: point2,
|
@@ -55,7 +77,7 @@ export var handleHeaderCellSelection = function handleHeaderCellSelection(_ref)
|
|
55
77
|
matcher: tempMatcher,
|
56
78
|
header: {
|
57
79
|
type: type,
|
58
|
-
|
80
|
+
selectedIndexList: [type === 'column' ? columnValue : rowValue]
|
59
81
|
}
|
60
82
|
};
|
61
83
|
setSelectionAreas(function (prev) {
|
@@ -81,6 +103,78 @@ export var handleHeaderCellSelection = function handleHeaderCellSelection(_ref)
|
|
81
103
|
return [].concat(_toConsumableArray(prev), [newSelectionArea]);
|
82
104
|
}
|
83
105
|
|
106
|
+
if (isHoldingShiftKey) {
|
107
|
+
var _selectionAreasClone$, _selectionAreasClone$2;
|
108
|
+
|
109
|
+
var _selectionsFromHeaderCell = selectionsClone.filter(function (item) {
|
110
|
+
var _item$header3;
|
111
|
+
|
112
|
+
return (_item$header3 = item.header) === null || _item$header3 === void 0 ? void 0 : _item$header3.type;
|
113
|
+
}); // Shift/click behavior should not occur unless there are activeCellCoordinates set
|
114
|
+
|
115
|
+
|
116
|
+
var currentSelectionArea = _selectionsFromHeaderCell.filter(function (item) {
|
117
|
+
return item.matcher === currentMatcher;
|
118
|
+
})[0];
|
119
|
+
|
120
|
+
var originalAreaIndex = Math.max(currentSelectionArea === null || currentSelectionArea === void 0 ? void 0 : currentSelectionArea.point1[type], currentSelectionArea === null || currentSelectionArea === void 0 ? void 0 : currentSelectionArea.point2[type], activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates[type]);
|
121
|
+
var newIndexValue = type === 'column' ? columnValue : rowValue;
|
122
|
+
var newPoint = {
|
123
|
+
row: originalAreaIndex < newIndexValue ? rows.length - 1 : 0,
|
124
|
+
column: columnValue
|
125
|
+
};
|
126
|
+
var selectionAreasClone = deepCloneObject(prev);
|
127
|
+
var indexOfCurrentArea = selectionAreasClone.findIndex(function (item) {
|
128
|
+
return item.matcher === currentMatcher;
|
129
|
+
});
|
130
|
+
var newIndexList = getSelectedItemIndexList({
|
131
|
+
indexList: ((_selectionAreasClone$ = selectionAreasClone[indexOfCurrentArea]) === null || _selectionAreasClone$ === void 0 ? void 0 : (_selectionAreasClone$2 = _selectionAreasClone$.header) === null || _selectionAreasClone$2 === void 0 ? void 0 : _selectionAreasClone$2.selectedIndexList) || [type === 'column' ? columnValue : rowValue],
|
132
|
+
newIndex: newIndexValue,
|
133
|
+
activeCellIndex: activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates[type]
|
134
|
+
});
|
135
|
+
|
136
|
+
var setPoint1 = function setPoint1(value) {
|
137
|
+
return value < newIndexValue ? {
|
138
|
+
row: type === 'column' ? 0 : Math.min.apply(Math, _toConsumableArray(newIndexList)),
|
139
|
+
column: type === 'column' ? Math.min.apply(Math, _toConsumableArray(newIndexList)) : 0
|
140
|
+
} : newPoint;
|
141
|
+
};
|
142
|
+
|
143
|
+
var setPoint2 = function setPoint2(value) {
|
144
|
+
return value < newIndexValue ? newPoint : {
|
145
|
+
row: type === 'column' ? rows.length - 1 : Math.max.apply(Math, _toConsumableArray(newIndexList)),
|
146
|
+
column: type === 'column' ? Math.max.apply(Math, _toConsumableArray(newIndexList)) : columns.length - 1
|
147
|
+
};
|
148
|
+
}; // If there is no active cell set and shift is clicked on a header cell
|
149
|
+
|
150
|
+
|
151
|
+
if (!activeCellCoordinates || typeof activeCellCoordinates === 'undefined') {
|
152
|
+
// Need to set positioning of active cell because it doesn't exist yet
|
153
|
+
setCurrentMatcher(tempMatcher);
|
154
|
+
var firstSelectionArea = {
|
155
|
+
point1: setPoint1(type === 'column' ? columnValue : rowValue),
|
156
|
+
point2: setPoint2(type === 'column' ? columnValue : rowValue),
|
157
|
+
areaCreated: false,
|
158
|
+
matcher: tempMatcher,
|
159
|
+
header: {
|
160
|
+
type: type,
|
161
|
+
selectedIndexList: [type === 'column' ? columnValue : rowValue]
|
162
|
+
}
|
163
|
+
};
|
164
|
+
setActiveCellCoordinates({
|
165
|
+
row: type === 'column' ? 0 : rowValue,
|
166
|
+
column: type === 'column' ? columnValue : 0
|
167
|
+
});
|
168
|
+
return [firstSelectionArea];
|
169
|
+
}
|
170
|
+
|
171
|
+
selectionAreasClone[indexOfCurrentArea].point1 = setPoint1(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates[type]);
|
172
|
+
selectionAreasClone[indexOfCurrentArea].point2 = setPoint2(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates[type]);
|
173
|
+
selectionAreasClone[indexOfCurrentArea].areaCreated = false;
|
174
|
+
selectionAreasClone[indexOfCurrentArea].header.selectedIndexList = newIndexList;
|
175
|
+
return selectionAreasClone;
|
176
|
+
}
|
177
|
+
|
84
178
|
return [newSelectionArea];
|
85
179
|
});
|
86
180
|
};
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
1
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
2
3
|
// @flow
|
3
4
|
|
@@ -13,10 +14,12 @@ import PropTypes from 'prop-types';
|
|
13
14
|
import { Draggable16 } from '@carbon/icons-react';
|
14
15
|
import { useDrag, useDrop } from 'react-dnd';
|
15
16
|
import cx from 'classnames';
|
17
|
+
import { pkg } from '../../../settings';
|
16
18
|
var useEffect = React.useEffect,
|
17
19
|
useRef = React.useRef,
|
18
20
|
useState = React.useState;
|
19
|
-
var
|
21
|
+
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
22
|
+
var DRAG_TYPE = "".concat(blockClass, "__shared-ui-draggable-element");
|
20
23
|
|
21
24
|
var DraggableElement = function DraggableElement(_ref) {
|
22
25
|
var id = _ref.id,
|
@@ -55,7 +58,6 @@ var DraggableElement = function DraggableElement(_ref) {
|
|
55
58
|
var dragIndex = item.index;
|
56
59
|
var hoverIndex = index; // Don't replace items with themselves
|
57
60
|
|
58
|
-
// Don't replace items with themselves
|
59
61
|
if (dragIndex === hoverIndex || disabled) {
|
60
62
|
return;
|
61
63
|
}
|
@@ -67,12 +69,6 @@ var DraggableElement = function DraggableElement(_ref) {
|
|
67
69
|
// to avoid expensive index searches.
|
68
70
|
// eslint-disable-next-line no-param-reassign
|
69
71
|
|
70
|
-
// Time to actually perform the action
|
71
|
-
// Note: we're mutating the monitor item here!
|
72
|
-
// Generally it's better to avoid mutations,
|
73
|
-
// but it's good here for the sake of performance
|
74
|
-
// to avoid expensive index searches.
|
75
|
-
// eslint-disable-next-line no-param-reassign
|
76
72
|
item.index = hoverIndex;
|
77
73
|
}
|
78
74
|
}),
|
@@ -120,14 +116,10 @@ var DraggableElement = function DraggableElement(_ref) {
|
|
120
116
|
var content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
121
117
|
className: cx({
|
122
118
|
disabled: disabled
|
123
|
-
},
|
119
|
+
}, "".concat(blockClass, "__draggable-handleStyle"))
|
124
120
|
}, /*#__PURE__*/React.createElement(Draggable16, null)), children);
|
125
121
|
return /*#__PURE__*/React.createElement("li", {
|
126
|
-
className: cx({
|
127
|
-
'wkc-draggable-handleHolder-isOver': isOver && !disabled
|
128
|
-
}, {
|
129
|
-
'wkc-draggable-handleHolder--grabbed': isGrabbed
|
130
|
-
}, 'wkc-draggable-handleHolder'),
|
122
|
+
className: cx(_defineProperty({}, "".concat(blockClass, "__draggable-handleHolder-isOver"), isOver && !disabled), _defineProperty({}, "".concat(blockClass, "__wkc-draggable-handleHolder--grabbed"), isGrabbed), "".concat(blockClass, "__draggable-handleHolder")),
|
131
123
|
ref: ref,
|
132
124
|
"aria-selected": isFocused,
|
133
125
|
role: "option",
|
@@ -155,17 +147,15 @@ var DraggableElement = function DraggableElement(_ref) {
|
|
155
147
|
setIsFocusedOnItem(e.currentTarget === e.target);
|
156
148
|
}
|
157
149
|
}, /*#__PURE__*/React.createElement("span", {
|
158
|
-
className: "
|
150
|
+
className: "".concat(blockClass, "__shared-ui--assistive-text")
|
159
151
|
}, ariaLabel), isDragging && !isOver ? /*#__PURE__*/React.createElement("div", {
|
160
152
|
ref: preview,
|
161
|
-
className: "
|
153
|
+
className: "${blockClass}__draggable-handleHolder-droppable"
|
162
154
|
}, content) : /*#__PURE__*/React.createElement("div", {
|
163
155
|
ref: drag,
|
164
156
|
"aria-hidden": isFocused && isFocusedOnItem // if focus on li, hide the children from aria
|
165
157
|
,
|
166
|
-
className: cx({
|
167
|
-
'wkc-draggable-handleStyle': !disabled
|
168
|
-
}, 'wkc-draggable-handleHolder-droppable')
|
158
|
+
className: cx(_defineProperty({}, "".concat(blockClass, "__draggable-handleStyle"), !disabled), ["".concat(blockClass, "__draggable-handleHolder-droppable")])
|
169
159
|
}, (!isOver || disabled) && content));
|
170
160
|
};
|
171
161
|
|
@@ -25,11 +25,9 @@ import { pkg
|
|
25
25
|
|
26
26
|
import { Form } from 'carbon-components-react';
|
27
27
|
import { SidePanel } from '../SidePanel';
|
28
|
-
import { ActionSet } from '../ActionSet';
|
29
28
|
import '../../global/js/utils/props-helper'; // The block part of our conventional BEM class names (blockClass__E--M).
|
30
29
|
|
31
30
|
var blockClass = "".concat(pkg.prefix, "--edit-side-panel");
|
32
|
-
var sidePanelBlockClass = "".concat(pkg.prefix, "--side-panel");
|
33
31
|
var componentName = 'EditSidePanel'; // NOTE: the component SCSS is not imported here: it is rolled up separately.
|
34
32
|
// Default values for props
|
35
33
|
|
@@ -77,7 +75,6 @@ export var EditSidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
77
75
|
onClick: onRequestClose,
|
78
76
|
kind: 'secondary'
|
79
77
|
}];
|
80
|
-
var actionContainerClassNames = cx(["".concat(blockClass, "__actions-container"), "".concat(sidePanelBlockClass, "__actions-container")]);
|
81
78
|
return /*#__PURE__*/React.createElement(SidePanel, _extends({}, rest, _objectSpread({
|
82
79
|
open: open,
|
83
80
|
ref: ref,
|
@@ -92,18 +89,15 @@ export var EditSidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
92
89
|
animateTitle: false,
|
93
90
|
className: cx(blockClass, className),
|
94
91
|
size: size,
|
95
|
-
preventCloseOnClickOutside: true
|
92
|
+
preventCloseOnClickOutside: true,
|
93
|
+
actions: actions
|
96
94
|
}), formTitle && /*#__PURE__*/React.createElement("h3", {
|
97
95
|
className: "".concat(blockClass, "__form-title-text ").concat(blockClass, "__content-text")
|
98
96
|
}, formTitle), formDescription && /*#__PURE__*/React.createElement("p", {
|
99
97
|
className: "".concat(blockClass, "__form-description-text ").concat(blockClass, "__content-text")
|
100
98
|
}, formDescription), /*#__PURE__*/React.createElement(Form, {
|
101
99
|
className: "".concat(blockClass, "__form")
|
102
|
-
}, children
|
103
|
-
actions: actions,
|
104
|
-
className: actionContainerClassNames,
|
105
|
-
size: size
|
106
|
-
})));
|
100
|
+
}, children));
|
107
101
|
}); // Return a placeholder if not released and not enabled by feature flag
|
108
102
|
|
109
103
|
EditSidePanel = pkg.checkComponentEnabled(EditSidePanel, componentName); // The display name of the component, used by React. Note that displayName
|
@@ -49,7 +49,7 @@ var defaults = {
|
|
49
49
|
*/
|
50
50
|
|
51
51
|
export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
52
|
-
var _ref4, _cx4;
|
52
|
+
var _window, _ref4, _cx4;
|
53
53
|
|
54
54
|
var actionToolbarButtons = _ref.actionToolbarButtons,
|
55
55
|
actions = _ref.actions,
|
@@ -107,7 +107,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
107
107
|
size: size,
|
108
108
|
open: open
|
109
109
|
});
|
110
|
-
var reducedMotion = window && window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : {
|
110
|
+
var reducedMotion = typeof window !== 'undefined' && (_window = window) !== null && _window !== void 0 && _window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : {
|
111
111
|
matches: true
|
112
112
|
}; // scroll panel to top going between steps
|
113
113
|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
2
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
2
3
|
|
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; }
|
4
5
|
|
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; }
|
6
7
|
|
7
8
|
import { useRef, useLayoutEffect } from 'react';
|
8
|
-
var windowExists = typeof window !== "undefined";
|
9
|
+
var windowExists = (typeof window === "undefined" ? "undefined" : _typeof(window)) !== "undefined";
|
9
10
|
|
10
11
|
var getWindowSize = function getWindowSize() {
|
11
12
|
if (!windowExists) {
|
@@ -1,6 +1,7 @@
|
|
1
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
1
2
|
import { useRef, useLayoutEffect } from 'react';
|
2
3
|
import { scrollableAncestor } from '../utils/scrollableAncestor';
|
3
|
-
var windowExists = typeof window !== "undefined";
|
4
|
+
var windowExists = (typeof window === "undefined" ? "undefined" : _typeof(window)) !== "undefined";
|
4
5
|
|
5
6
|
var useTargetScroll = function useTargetScroll(target, effect, deps, throttleInterval) {
|
6
7
|
var scrollPosition = useRef({});
|
@@ -35,6 +35,7 @@ var defaults = {
|
|
35
35
|
HTTPError404: true,
|
36
36
|
HTTPErrorOther: true,
|
37
37
|
ImportModal: true,
|
38
|
+
InlineEdit: true,
|
38
39
|
NotificationsPanel: true,
|
39
40
|
NoDataEmptyState: true,
|
40
41
|
NoTagsEmptyState: true,
|
@@ -63,7 +64,6 @@ var defaults = {
|
|
63
64
|
WebTerminalContentWrapper: false,
|
64
65
|
EditSidePanel: false,
|
65
66
|
CancelableTextEdit: false,
|
66
|
-
InlineEdit: false,
|
67
67
|
DataSpreadsheet: false,
|
68
68
|
Datagrid: false
|
69
69
|
/* new component flags here - comment used by generate CLI */
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
2
|
+
var windowExists = (typeof window === "undefined" ? "undefined" : _typeof(window)) !== "undefined"; // determine whether the target is scrollable
|
2
3
|
|
3
4
|
var scrollable = function scrollable(target) {
|
4
5
|
var style = window.getComputedStyle(target);
|
@@ -148,6 +148,7 @@ ActionSet.validateActions = function (sizeFn) {
|
|
148
148
|
var problems = [];
|
149
149
|
|
150
150
|
if (actions > 0) {
|
151
|
+
// eslint-disable-next-line react/prop-types
|
151
152
|
var size = sizeFn ? sizeFn(props) : props.size || defaults.size;
|
152
153
|
var stacking = willStack(size, actions);
|
153
154
|
|
@@ -149,6 +149,11 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
149
149
|
sortAttribute = _useItemSort.sortAttribute,
|
150
150
|
setSortAttribute = _useItemSort.setSortAttribute;
|
151
151
|
|
152
|
+
var _useState21 = (0, _react.useState)([]),
|
153
|
+
_useState22 = (0, _slicedToArray2.default)(_useState21, 2),
|
154
|
+
appliedModifiers = _useState22[0],
|
155
|
+
setAppliedModifiers = _useState22[1];
|
156
|
+
|
152
157
|
(0, _react.useEffect)(function () {
|
153
158
|
var entries = items.entries; // flatItems is just a single array of all entries including children
|
154
159
|
|
@@ -158,6 +163,16 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
158
163
|
if (globalFilters !== null && globalFilters !== void 0 && globalFilters.length) {
|
159
164
|
var globalFilterValues = (0, _addSelectUtils.getGlobalFilterValues)(globalFilters, flattenedItems);
|
160
165
|
setGlobalFilterOpts(globalFilterValues);
|
166
|
+
}
|
167
|
+
|
168
|
+
if (items.modifiers) {
|
169
|
+
var modifiersToApply = flattenedItems.map(function (item) {
|
170
|
+
var modifierAttribute = items.modifiers.id;
|
171
|
+
return (0, _defineProperty2.default)({
|
172
|
+
id: item.id
|
173
|
+
}, modifierAttribute, item[modifierAttribute]);
|
174
|
+
});
|
175
|
+
setAppliedModifiers(modifiersToApply);
|
161
176
|
} // multi select with nested data needs to be normalized
|
162
177
|
|
163
178
|
|
@@ -286,7 +301,18 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
286
301
|
};
|
287
302
|
|
288
303
|
var submitHandler = function submitHandler() {
|
289
|
-
|
304
|
+
if (multi && appliedModifiers.length > 0) {
|
305
|
+
var selections = multiSelection.map(function (item) {
|
306
|
+
return appliedModifiers.find(function (mod) {
|
307
|
+
return mod.id === item;
|
308
|
+
});
|
309
|
+
});
|
310
|
+
onSubmit(selections);
|
311
|
+
} else if (multi && appliedModifiers.length === 0) {
|
312
|
+
onSubmit(multiSelection);
|
313
|
+
} else {
|
314
|
+
onSubmit(singleSelection);
|
315
|
+
}
|
290
316
|
};
|
291
317
|
|
292
318
|
var classNames = (0, _classnames.default)(className, blockClass, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__single"), !multi), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__multi"), multi), _cx));
|
@@ -319,7 +345,9 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
319
345
|
removeIconDescription: removeIconDescription,
|
320
346
|
setMultiSelection: setMultiSelection,
|
321
347
|
displayMetalPanel: displayMetalPanel,
|
322
|
-
setDisplayMetaPanel: setDisplayMetaPanel
|
348
|
+
setDisplayMetaPanel: setDisplayMetaPanel,
|
349
|
+
modifiers: items.modifiers,
|
350
|
+
appliedModifiers: appliedModifiers
|
323
351
|
};
|
324
352
|
|
325
353
|
var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
|
@@ -402,7 +430,9 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
402
430
|
}));
|
403
431
|
})) : /*#__PURE__*/_react.default.createElement("div", null, hasResults ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, commonListProps, {
|
404
432
|
filteredItems: itemsToDisplay,
|
405
|
-
modifiers: items
|
433
|
+
modifiers: items.modifiers,
|
434
|
+
appliedModifiers: appliedModifiers,
|
435
|
+
setAppliedModifiers: setAppliedModifiers
|
406
436
|
})) : /*#__PURE__*/_react.default.createElement("div", {
|
407
437
|
className: "".concat(blockClass, "__body")
|
408
438
|
}, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
|
@@ -438,6 +468,7 @@ AddSelect.propTypes = {
|
|
438
468
|
influencerTitle: _propTypes.default.string,
|
439
469
|
items: _propTypes.default.shape({
|
440
470
|
modifiers: _propTypes.default.shape({
|
471
|
+
id: _propTypes.default.string,
|
441
472
|
label: _propTypes.default.string,
|
442
473
|
options: _propTypes.default.array
|
443
474
|
}),
|
@@ -17,6 +17,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
17
17
|
|
18
18
|
var _carbonComponentsReact = require("carbon-components-react");
|
19
19
|
|
20
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
21
|
+
|
20
22
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
21
23
|
|
22
24
|
var _iconsReact = require("@carbon/icons-react");
|
@@ -79,6 +81,7 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
|
|
79
81
|
|
80
82
|
|
81
83
|
var applyFilters = function applyFilters() {
|
84
|
+
setOpen(false);
|
82
85
|
handleFilter(filters);
|
83
86
|
};
|
84
87
|
|
@@ -104,6 +107,8 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
|
|
104
107
|
};
|
105
108
|
|
106
109
|
var showFilter = multi && (filterOpts === null || filterOpts === void 0 ? void 0 : filterOpts.length) > 0;
|
110
|
+
var filterBtnClassnames = (0, _classnames.default)("".concat(blockClass, "-toggle"), (0, _defineProperty2.default)({}, "".concat(blockClass, "-toggle--open"), open));
|
111
|
+
var dirtyInput = Object.keys(filters).length > 0;
|
107
112
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
108
113
|
className: "".concat(blockClass, "-search")
|
109
114
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
|
@@ -120,7 +125,7 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
|
|
120
125
|
return setOpen(!open);
|
121
126
|
},
|
122
127
|
iconDescription: iconDescription,
|
123
|
-
className:
|
128
|
+
className: filterBtnClassnames,
|
124
129
|
size: "md"
|
125
130
|
}), open && /*#__PURE__*/_react.default.createElement("div", {
|
126
131
|
className: blockClass
|
@@ -146,11 +151,13 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
|
|
146
151
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
|
147
152
|
kind: "secondary",
|
148
153
|
onClick: resetFilters,
|
149
|
-
className: "".concat(blockClass, "-button")
|
154
|
+
className: "".concat(blockClass, "-button"),
|
155
|
+
disabled: !dirtyInput
|
150
156
|
}, secondaryButtonText), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
|
151
157
|
kind: "primary",
|
152
158
|
onClick: applyFilters,
|
153
|
-
className: "".concat(blockClass, "-button")
|
159
|
+
className: "".concat(blockClass, "-button"),
|
160
|
+
disabled: !dirtyInput && !hasFiltersApplied
|
154
161
|
}, primaryButtonText)))), hasFiltersApplied && /*#__PURE__*/_react.default.createElement("div", {
|
155
162
|
className: "".concat(blockClass, "-applied")
|
156
163
|
}, Object.keys(appliedFilters).map(function (filterType) {
|
@@ -34,19 +34,24 @@ var _settings = require("../../settings");
|
|
34
34
|
var componentName = 'AddSelectList';
|
35
35
|
|
36
36
|
var AddSelectList = function AddSelectList(_ref) {
|
37
|
-
var
|
37
|
+
var _modifiers$options;
|
38
|
+
|
39
|
+
var appliedModifiers = _ref.appliedModifiers,
|
40
|
+
filteredItems = _ref.filteredItems,
|
38
41
|
metaIconDescription = _ref.metaIconDescription,
|
39
42
|
modifiers = _ref.modifiers,
|
40
43
|
multi = _ref.multi,
|
41
44
|
multiSelection = _ref.multiSelection,
|
42
45
|
navIconDescription = _ref.navIconDescription,
|
43
46
|
path = _ref.path,
|
47
|
+
setAppliedModifiers = _ref.setAppliedModifiers,
|
44
48
|
setDisplayMetaPanel = _ref.setDisplayMetaPanel,
|
45
49
|
setMultiSelection = _ref.setMultiSelection,
|
46
50
|
setPath = _ref.setPath,
|
47
51
|
setSingleSelection = _ref.setSingleSelection,
|
48
52
|
singleSelection = _ref.singleSelection;
|
49
53
|
var blockClass = "".concat(_settings.pkg.prefix, "--add-select__selections");
|
54
|
+
var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
|
50
55
|
|
51
56
|
var handleSingleSelection = function handleSingleSelection(value) {
|
52
57
|
setSingleSelection(value);
|
@@ -147,14 +152,23 @@ var AddSelectList = function AddSelectList(_ref) {
|
|
147
152
|
return /*#__PURE__*/_react.default.createElement(Icon, null);
|
148
153
|
};
|
149
154
|
|
155
|
+
var modifierHandler = function modifierHandler(id, selectedItem) {
|
156
|
+
var modifiersClone = (0, _toConsumableArray2.default)(appliedModifiers);
|
157
|
+
var modifierIdx = modifiersClone.findIndex(function (item) {
|
158
|
+
return item.id === id;
|
159
|
+
});
|
160
|
+
modifiersClone[modifierIdx] = (0, _defineProperty2.default)({
|
161
|
+
id: id
|
162
|
+
}, modifiers.id, selectedItem);
|
163
|
+
setAppliedModifiers(modifiersClone);
|
164
|
+
};
|
165
|
+
|
150
166
|
return /*#__PURE__*/_react.default.createElement("div", {
|
151
167
|
className: "".concat(blockClass, "-wrapper")
|
152
168
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListWrapper, {
|
153
169
|
selection: true,
|
154
170
|
className: "".concat(blockClass)
|
155
171
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListBody, null, filteredItems.map(function (item) {
|
156
|
-
var _modifiers$options;
|
157
|
-
|
158
172
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListRow, {
|
159
173
|
key: item.id,
|
160
174
|
className: (0, _classnames.default)("".concat(blockClass, "-row"), (0, _defineProperty2.default)({}, "".concat(blockClass, "-row-selected"), isSelected(item.id)))
|
@@ -182,22 +196,29 @@ var AddSelectList = function AddSelectList(_ref) {
|
|
182
196
|
className: "".concat(blockClass, "-cell-title")
|
183
197
|
}, item.title), item.subtitle && /*#__PURE__*/_react.default.createElement("span", {
|
184
198
|
className: "".concat(blockClass, "-cell-subtitle")
|
185
|
-
}, item.subtitle)))),
|
199
|
+
}, item.subtitle)))), hasModifiers && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, {
|
186
200
|
id: "".concat(item.id, "-modifier"),
|
187
201
|
type: "inline",
|
188
|
-
items: modifiers
|
202
|
+
items: modifiers.options,
|
189
203
|
light: true,
|
190
|
-
label: modifiers
|
204
|
+
label: modifiers.label,
|
191
205
|
disabled: !isSelected(item.id),
|
192
|
-
className: "".concat(blockClass, "-dropdown ").concat(blockClass, "-hidden-hover")
|
206
|
+
className: "".concat(blockClass, "-dropdown ").concat(blockClass, "-hidden-hover"),
|
207
|
+
initialSelectedItem: item[modifiers.id],
|
208
|
+
onChange: function onChange(_ref5) {
|
209
|
+
var selectedItem = _ref5.selectedItem;
|
210
|
+
return modifierHandler(item.id, selectedItem);
|
211
|
+
}
|
193
212
|
})) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
|
194
213
|
className: "".concat(blockClass, "-radio"),
|
195
214
|
name: "add-select-selections",
|
196
215
|
id: item.id,
|
197
216
|
value: item.value,
|
198
217
|
labelText: item.title,
|
199
|
-
onChange:
|
200
|
-
|
218
|
+
onChange: function onChange() {
|
219
|
+
return handleSingleSelection(item.id);
|
220
|
+
},
|
221
|
+
selected: item.id === singleSelection
|
201
222
|
}), item.children && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
|
202
223
|
renderIcon: _iconsReact.ChevronRight16,
|
203
224
|
iconDescription: navIconDescription,
|
@@ -228,6 +249,7 @@ var AddSelectList = function AddSelectList(_ref) {
|
|
228
249
|
|
229
250
|
exports.AddSelectList = AddSelectList;
|
230
251
|
AddSelectList.propTypes = {
|
252
|
+
appliedModifiers: _propTypes.default.array,
|
231
253
|
filteredItems: _propTypes.default.array,
|
232
254
|
metaIconDescription: _propTypes.default.string,
|
233
255
|
modifiers: _propTypes.default.object,
|
@@ -235,6 +257,7 @@ AddSelectList.propTypes = {
|
|
235
257
|
multiSelection: _propTypes.default.array,
|
236
258
|
navIconDescription: _propTypes.default.string,
|
237
259
|
path: _propTypes.default.array,
|
260
|
+
setAppliedModifiers: _propTypes.default.func,
|
238
261
|
setDisplayMetaPanel: _propTypes.default.func,
|
239
262
|
setMultiSelection: _propTypes.default.func,
|
240
263
|
setPath: _propTypes.default.func,
|