carbon-react 87.0.0 → 87.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{components/textarea → __internal__}/character-count/character-count.component.js +1 -1
- package/lib/{components/textarea → __internal__}/character-count/character-count.style.js +1 -1
- package/lib/{components/textarea → __internal__}/character-count/index.js +0 -0
- package/lib/__internal__/input/input-presentation.style.js +0 -8
- package/lib/__internal__/input/input.style.js +2 -8
- package/lib/components/flat-table/flat-table-body/flat-table-body.component.js +6 -4
- package/lib/components/flat-table/flat-table-body-draggable/flat-table-body-draggable.component.js +115 -0
- package/lib/components/flat-table/flat-table-body-draggable/flat-table-body-draggable.d.ts +12 -0
- package/lib/components/flat-table/flat-table-body-draggable/index.d.ts +2 -0
- package/lib/components/flat-table/flat-table-body-draggable/index.js +15 -0
- package/lib/components/flat-table/flat-table-row/__internal__/flat-table-row-draggable.component.js +86 -0
- package/lib/components/flat-table/flat-table-row/__internal__/flat-table-row-draggable.d.ts +18 -0
- package/lib/components/flat-table/flat-table-row/flat-table-row.component.js +44 -7
- package/lib/components/flat-table/flat-table-row/flat-table-row.style.js +21 -1
- package/lib/components/flat-table/index.d.ts +2 -0
- package/lib/components/flat-table/index.js +8 -0
- package/lib/components/menu/__internal__/submenu/submenu.component.js +19 -6
- package/lib/components/menu/menu-item/menu-item.component.js +12 -2
- package/lib/components/menu/menu-item/menu-item.d.ts +4 -0
- package/lib/components/textarea/textarea.component.js +1 -1
- package/lib/components/textbox/textbox.component.js +19 -3
- package/lib/components/textbox/textbox.d.ts +6 -0
- package/lib/hooks/__internal__/useCharacterCount/index.js +34 -0
- package/package.json +1 -1
package/lib/{components/textarea → __internal__}/character-count/character-count.component.js
RENAMED
|
@@ -11,7 +11,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
11
11
|
|
|
12
12
|
var _styledComponents = require("styled-components");
|
|
13
13
|
|
|
14
|
-
var _base = _interopRequireDefault(require("
|
|
14
|
+
var _base = _interopRequireDefault(require("../../style/themes/base"));
|
|
15
15
|
|
|
16
16
|
var _characterCount = _interopRequireDefault(require("./character-count.style"));
|
|
17
17
|
|
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
9
9
|
|
|
10
|
-
var _base = _interopRequireDefault(require("
|
|
10
|
+
var _base = _interopRequireDefault(require("../../style/themes/base"));
|
|
11
11
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
File without changes
|
|
@@ -13,8 +13,6 @@ var _base = _interopRequireDefault(require("../../style/themes/base"));
|
|
|
13
13
|
|
|
14
14
|
var _inputSizes = _interopRequireDefault(require("./input-sizes.style"));
|
|
15
15
|
|
|
16
|
-
var _input = _interopRequireDefault(require("./input.style"));
|
|
17
|
-
|
|
18
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
17
|
|
|
20
18
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
@@ -51,12 +49,6 @@ const InputPresentationStyle = _styledComponents.default.div`
|
|
|
51
49
|
size
|
|
52
50
|
}) => _inputSizes.default[size].horizontalPadding};
|
|
53
51
|
|
|
54
|
-
${_input.default} {
|
|
55
|
-
&:-webkit-autofill {
|
|
56
|
-
margin-top: 2px;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
52
|
${({
|
|
61
53
|
disabled,
|
|
62
54
|
theme
|
|
@@ -33,9 +33,8 @@ const StyledInput = _styledComponents.default.input`
|
|
|
33
33
|
width: 30px;
|
|
34
34
|
|
|
35
35
|
&:-webkit-autofill {
|
|
36
|
-
|
|
37
|
-
-webkit-
|
|
38
|
-
-webkit-box-border: none;
|
|
36
|
+
background-clip: text;
|
|
37
|
+
-webkit-background-clip: text;
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
${({
|
|
@@ -58,11 +57,6 @@ const StyledInput = _styledComponents.default.input`
|
|
|
58
57
|
cursor: not-allowed;
|
|
59
58
|
`}
|
|
60
59
|
|
|
61
|
-
&:invalid, &:required {
|
|
62
|
-
box-shadow: 0 0 0px 1000px #fff inset;
|
|
63
|
-
-webkit-box-shadow: 0 0 0px 1000px #fff inset;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
60
|
${({
|
|
67
61
|
readOnly,
|
|
68
62
|
theme
|
|
@@ -11,11 +11,13 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
11
11
|
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
|
|
14
|
-
const FlatTableBody = ({
|
|
14
|
+
const FlatTableBody = /*#__PURE__*/_react.default.forwardRef(({
|
|
15
15
|
children
|
|
16
|
-
}) => {
|
|
17
|
-
return /*#__PURE__*/_react.default.createElement("tbody",
|
|
18
|
-
|
|
16
|
+
}, ref) => {
|
|
17
|
+
return /*#__PURE__*/_react.default.createElement("tbody", {
|
|
18
|
+
ref: ref
|
|
19
|
+
}, children);
|
|
20
|
+
});
|
|
19
21
|
|
|
20
22
|
FlatTableBody.propTypes = {
|
|
21
23
|
/** Array of FlatTableRow. */
|
package/lib/components/flat-table/flat-table-body-draggable/flat-table-body-draggable.component.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _reactDnd = require("react-dnd");
|
|
11
|
+
|
|
12
|
+
var _reactDndHtml5Backend = _interopRequireDefault(require("react-dnd-html5-backend"));
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
var _icon = _interopRequireDefault(require("../../icon/icon.style"));
|
|
17
|
+
|
|
18
|
+
var _flatTableBody = _interopRequireDefault(require("../flat-table-body/flat-table-body.component"));
|
|
19
|
+
|
|
20
|
+
var _flatTableCell = _interopRequireDefault(require("../flat-table-cell/flat-table-cell.component"));
|
|
21
|
+
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
|
|
24
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
25
|
+
|
|
26
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
+
|
|
28
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
29
|
+
|
|
30
|
+
const DropTarget = ({
|
|
31
|
+
children,
|
|
32
|
+
getOrder,
|
|
33
|
+
...rest
|
|
34
|
+
}) => {
|
|
35
|
+
const [, drop] = (0, _reactDnd.useDrop)({
|
|
36
|
+
accept: "flatTableRow",
|
|
37
|
+
|
|
38
|
+
drop() {
|
|
39
|
+
getOrder();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
});
|
|
43
|
+
return /*#__PURE__*/_react.default.createElement(_flatTableBody.default, _extends({
|
|
44
|
+
ref: drop
|
|
45
|
+
}, rest), children);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const FlatTableBodyDraggable = ({
|
|
49
|
+
children,
|
|
50
|
+
getOrder
|
|
51
|
+
}) => {
|
|
52
|
+
const [draggableItems, setDraggableItems] = (0, _react.useState)(_react.default.Children.toArray(children));
|
|
53
|
+
const isFirstRender = (0, _react.useRef)(true);
|
|
54
|
+
(0, _react.useEffect)(() => {
|
|
55
|
+
if (!isFirstRender.current) {
|
|
56
|
+
setDraggableItems(_react.default.Children.toArray(children));
|
|
57
|
+
} else {
|
|
58
|
+
isFirstRender.current = false;
|
|
59
|
+
}
|
|
60
|
+
}, [children]);
|
|
61
|
+
|
|
62
|
+
const findItem = id => {
|
|
63
|
+
const draggableItem = draggableItems.filter(item => `${item.props.id}` === id)[0];
|
|
64
|
+
return {
|
|
65
|
+
draggableItem,
|
|
66
|
+
index: draggableItems.indexOf(draggableItem)
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const moveItem = (id, atIndex) => {
|
|
71
|
+
const {
|
|
72
|
+
draggableItem,
|
|
73
|
+
index
|
|
74
|
+
} = findItem(id);
|
|
75
|
+
const copyOfDraggableItems = [...draggableItems];
|
|
76
|
+
copyOfDraggableItems.splice(index, 1);
|
|
77
|
+
copyOfDraggableItems.splice(atIndex, 0, draggableItem);
|
|
78
|
+
setDraggableItems(copyOfDraggableItems);
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const getItemsId = () => {
|
|
82
|
+
if (!getOrder) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const draggableItemIds = draggableItems.map(draggableItem => draggableItem.props.id);
|
|
87
|
+
getOrder(draggableItemIds);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
return /*#__PURE__*/_react.default.createElement(_reactDnd.DndProvider, {
|
|
91
|
+
backend: _reactDndHtml5Backend.default
|
|
92
|
+
}, /*#__PURE__*/_react.default.createElement(DropTarget, {
|
|
93
|
+
getOrder: getItemsId
|
|
94
|
+
}, draggableItems.map(item => /*#__PURE__*/_react.default.cloneElement(item, {
|
|
95
|
+
id: `${item.props.id}`,
|
|
96
|
+
moveItem,
|
|
97
|
+
findItem,
|
|
98
|
+
draggable: true
|
|
99
|
+
}, [/*#__PURE__*/_react.default.createElement(_flatTableCell.default, {
|
|
100
|
+
key: item.props.id
|
|
101
|
+
}, /*#__PURE__*/_react.default.createElement(_icon.default, {
|
|
102
|
+
type: "drag"
|
|
103
|
+
})), item.props.children]))));
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
FlatTableBodyDraggable.propTypes = {
|
|
107
|
+
getOrder: _propTypes.default.func,
|
|
108
|
+
children: _propTypes.default.node.isRequired
|
|
109
|
+
};
|
|
110
|
+
DropTarget.propTypes = {
|
|
111
|
+
children: _propTypes.default.node.isRequired,
|
|
112
|
+
getOrder: _propTypes.default.func
|
|
113
|
+
};
|
|
114
|
+
var _default = FlatTableBodyDraggable;
|
|
115
|
+
exports.default = _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
export interface FlatTableBodyDraggableProps {
|
|
4
|
+
/** Array of FlatTableRow. */
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
/** Callback fired when order is changed */
|
|
7
|
+
getOrder?: (draggableItemIds: number[]) => void;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare function FlatTableBodyDraggable(props: FlatTableBodyDraggableProps): JSX.Element;
|
|
11
|
+
|
|
12
|
+
export default FlatTableBodyDraggable;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _flatTableBodyDraggable.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
var _flatTableBodyDraggable = _interopRequireDefault(require("./flat-table-body-draggable.component"));
|
|
14
|
+
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
package/lib/components/flat-table/flat-table-row/__internal__/flat-table-row-draggable.component.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _reactDnd = require("react-dnd");
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
const FlatTableRowDraggable = ({
|
|
17
|
+
children,
|
|
18
|
+
id,
|
|
19
|
+
findItem,
|
|
20
|
+
moveItem
|
|
21
|
+
}) => {
|
|
22
|
+
const originalIndex = findItem(id).index;
|
|
23
|
+
const [{
|
|
24
|
+
isDragging
|
|
25
|
+
}, drag] = (0, _reactDnd.useDrag)({
|
|
26
|
+
item: {
|
|
27
|
+
type: "flatTableRow",
|
|
28
|
+
id,
|
|
29
|
+
originalIndex
|
|
30
|
+
},
|
|
31
|
+
collect: monitor => ({
|
|
32
|
+
isDragging: monitor.isDragging()
|
|
33
|
+
}),
|
|
34
|
+
end: (dropResult, monitor) => {
|
|
35
|
+
const {
|
|
36
|
+
id: droppedId,
|
|
37
|
+
originalIndex: oIndex
|
|
38
|
+
} = monitor.getItem();
|
|
39
|
+
const didDrop = monitor.didDrop();
|
|
40
|
+
|
|
41
|
+
if (!didDrop) {
|
|
42
|
+
moveItem(droppedId, oIndex);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
const [, drop] = (0, _reactDnd.useDrop)({
|
|
47
|
+
accept: "flatTableRow",
|
|
48
|
+
canDrop: () => false,
|
|
49
|
+
|
|
50
|
+
hover({
|
|
51
|
+
id: draggedId
|
|
52
|
+
}) {
|
|
53
|
+
if (draggedId !== id) {
|
|
54
|
+
const {
|
|
55
|
+
index: overIndex
|
|
56
|
+
} = findItem(id);
|
|
57
|
+
moveItem(draggedId, overIndex);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
});
|
|
62
|
+
return /*#__PURE__*/_react.default.cloneElement(children, {
|
|
63
|
+
id,
|
|
64
|
+
isDragging,
|
|
65
|
+
ref: node => drag(drop(node))
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
FlatTableRowDraggable.propTypes = {
|
|
70
|
+
/** Array of FlatTableHeader or FlatTableCell. FlatTableRowHeader could also be passed. */
|
|
71
|
+
children: _propTypes.default.node.isRequired,
|
|
72
|
+
|
|
73
|
+
/** ID for use in drag and drop functionality */
|
|
74
|
+
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
75
|
+
|
|
76
|
+
/** function to find an item in the list of draggable items */
|
|
77
|
+
findItem: _propTypes.default.func.isRequired,
|
|
78
|
+
|
|
79
|
+
/** function to reposition an item in the list of draggable items */
|
|
80
|
+
moveItem: _propTypes.default.func.isRequired,
|
|
81
|
+
|
|
82
|
+
/** item is draggable */
|
|
83
|
+
draggable: _propTypes.default.bool
|
|
84
|
+
};
|
|
85
|
+
var _default = FlatTableRowDraggable;
|
|
86
|
+
exports.default = _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
export interface FlatTableRowDraggableProps {
|
|
4
|
+
/** Array of FlatTableRow. */
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
/** ID for use in drag and drop functionality */
|
|
7
|
+
id?: number | string;
|
|
8
|
+
/** function to find an item in the list of draggable items */
|
|
9
|
+
findItem: () => object;
|
|
10
|
+
/** function to reposition an item in the list of draggable items */
|
|
11
|
+
moveItem: () => void;
|
|
12
|
+
/** item is draggable */
|
|
13
|
+
draggable?: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare function FlatTableRowDraggable(props: FlatTableRowDraggableProps): JSX.Element;
|
|
17
|
+
|
|
18
|
+
export default FlatTableRowDraggable;
|
|
@@ -19,6 +19,8 @@ var _flatTableCheckbox = _interopRequireDefault(require("../flat-table-checkbox"
|
|
|
19
19
|
|
|
20
20
|
var _flatTableRowHeader = _interopRequireDefault(require("../flat-table-row-header"));
|
|
21
21
|
|
|
22
|
+
var _flatTableRowDraggable = _interopRequireDefault(require("./__internal__/flat-table-row-draggable.component"));
|
|
23
|
+
|
|
22
24
|
var _flatTable = require("../flat-table.component");
|
|
23
25
|
|
|
24
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -44,7 +46,11 @@ const FlatTableRow = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
44
46
|
bgColor,
|
|
45
47
|
horizontalBorderColor,
|
|
46
48
|
horizontalBorderSize = "small",
|
|
47
|
-
applyBorderLeft
|
|
49
|
+
applyBorderLeft,
|
|
50
|
+
id,
|
|
51
|
+
draggable,
|
|
52
|
+
findItem,
|
|
53
|
+
moveItem
|
|
48
54
|
}, ref) => {
|
|
49
55
|
const [isExpanded, setIsExpanded] = (0, _react.useState)(expanded);
|
|
50
56
|
const rowRef = ref || (0, _react.useRef)();
|
|
@@ -123,9 +129,8 @@ const FlatTableRow = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
123
129
|
(0, _react.useEffect)(() => {
|
|
124
130
|
setIsExpanded(expanded);
|
|
125
131
|
}, [expanded]);
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_flatTableRow.default, _extends({
|
|
132
|
+
|
|
133
|
+
const rowComponent = isInSidebar => /*#__PURE__*/_react.default.createElement(_flatTableRow.default, _extends({
|
|
129
134
|
isInSidebar: isInSidebar,
|
|
130
135
|
expandable: expandable,
|
|
131
136
|
isSubRow: isSubRow,
|
|
@@ -143,7 +148,8 @@ const FlatTableRow = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
143
148
|
bgColor: bgColor,
|
|
144
149
|
horizontalBorderColor: horizontalBorderColor,
|
|
145
150
|
horizontalBorderSize: horizontalBorderSize,
|
|
146
|
-
applyBorderLeft: applyBorderLeft
|
|
151
|
+
applyBorderLeft: applyBorderLeft,
|
|
152
|
+
draggable: draggable
|
|
147
153
|
}, interactiveRowProps), _react.default.Children.map(children, (child, index) => {
|
|
148
154
|
return child && /*#__PURE__*/_react.default.cloneElement(child, {
|
|
149
155
|
expandable: expandable && index === firstCellIndex(),
|
|
@@ -154,7 +160,17 @@ const FlatTableRow = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
154
160
|
leftPosition: leftPositions[index],
|
|
155
161
|
...child.props
|
|
156
162
|
});
|
|
157
|
-
}))
|
|
163
|
+
}));
|
|
164
|
+
|
|
165
|
+
const draggableComponent = isInSidebar => /*#__PURE__*/_react.default.createElement(_flatTableRowDraggable.default, {
|
|
166
|
+
id: id,
|
|
167
|
+
moveItem: moveItem,
|
|
168
|
+
findItem: findItem
|
|
169
|
+
}, rowComponent(isInSidebar));
|
|
170
|
+
|
|
171
|
+
return /*#__PURE__*/_react.default.createElement(_drawer.DrawerSidebarContext.Consumer, null, ({
|
|
172
|
+
isInSidebar
|
|
173
|
+
}) => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, draggable ? draggableComponent(isInSidebar) : rowComponent(isInSidebar), isExpanded && subRows && _react.default.Children.map(subRows, (child, index) => child && /*#__PURE__*/_react.default.cloneElement(child, {
|
|
158
174
|
isSubRow: true,
|
|
159
175
|
isFirstSubRow: index === 0,
|
|
160
176
|
...child.props
|
|
@@ -205,7 +221,28 @@ FlatTableRow.propTypes = {
|
|
|
205
221
|
stickyOffset: _propTypes.default.number,
|
|
206
222
|
|
|
207
223
|
/** @ignore @private applies a border-left to the first child */
|
|
208
|
-
applyBorderLeft: _propTypes.default.bool
|
|
224
|
+
applyBorderLeft: _propTypes.default.bool,
|
|
225
|
+
|
|
226
|
+
/** ID for use in drag and drop functionality
|
|
227
|
+
* @private
|
|
228
|
+
* @ignore
|
|
229
|
+
*/
|
|
230
|
+
id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* @private
|
|
234
|
+
* @ignore
|
|
235
|
+
*/
|
|
236
|
+
findItem: _propTypes.default.func,
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* @private
|
|
240
|
+
* @ignore
|
|
241
|
+
*/
|
|
242
|
+
moveItem: _propTypes.default.func,
|
|
243
|
+
|
|
244
|
+
/** @ignore @private position in header if multiple rows */
|
|
245
|
+
draggable: _propTypes.default.bool
|
|
209
246
|
};
|
|
210
247
|
var _default = FlatTableRow;
|
|
211
248
|
exports.default = _default;
|
|
@@ -92,7 +92,9 @@ const StyledFlatTableRow = _styledComponents.default.tr`
|
|
|
92
92
|
isFirstSubRow,
|
|
93
93
|
size,
|
|
94
94
|
theme,
|
|
95
|
-
applyBorderLeft
|
|
95
|
+
applyBorderLeft,
|
|
96
|
+
isDragging,
|
|
97
|
+
draggable
|
|
96
98
|
}) => {
|
|
97
99
|
const backgroundColor = bgColor ? (0, _color.toColor)(theme, bgColor) : undefined;
|
|
98
100
|
const customBorderColor = horizontalBorderColor ? (0, _color.toColor)(theme, horizontalBorderColor) : undefined;
|
|
@@ -123,6 +125,9 @@ const StyledFlatTableRow = _styledComponents.default.tr`
|
|
|
123
125
|
|
|
124
126
|
${_flatTableHeader.default} {
|
|
125
127
|
border-bottom: 1px solid ${borderColor(colorTheme, theme)};
|
|
128
|
+
:first-child {
|
|
129
|
+
border-left: 1px solid ${borderColor(colorTheme, theme)};
|
|
130
|
+
}
|
|
126
131
|
}
|
|
127
132
|
|
|
128
133
|
${stickyOffset > 0 && (0, _styledComponents.css)`
|
|
@@ -255,6 +260,21 @@ const StyledFlatTableRow = _styledComponents.default.tr`
|
|
|
255
260
|
}
|
|
256
261
|
`}
|
|
257
262
|
|
|
263
|
+
${isDragging && (0, _styledComponents.css)`
|
|
264
|
+
border: ${isInSidebar ? theme.palette.slateTint(40) : theme.palette.slateTint(55)}
|
|
265
|
+
2px solid;
|
|
266
|
+
cursor: grabbing;
|
|
267
|
+
${allCellTypes} {
|
|
268
|
+
background-color: ${isInSidebar ? theme.palette.slateTint(60) : theme.palette.slateTint(75)};
|
|
269
|
+
}
|
|
270
|
+
`}
|
|
271
|
+
|
|
272
|
+
${draggable && (0, _styledComponents.css)`
|
|
273
|
+
${_icon.default}:first-of-type {
|
|
274
|
+
font-size: 16px;
|
|
275
|
+
}
|
|
276
|
+
`}
|
|
277
|
+
|
|
258
278
|
${isFirstSubRow && (0, _styledComponents.css)`
|
|
259
279
|
${allCellTypes} {
|
|
260
280
|
box-shadow: inset 0 6px 4px -4px ${theme.flatTable.subRow.shadow};
|
|
@@ -5,6 +5,7 @@ export { default as FlatTable } from "./flat-table";
|
|
|
5
5
|
export { default as FlatTableHead } from "./flat-table-head";
|
|
6
6
|
export { default as FlatTableHeader } from "./flat-table-header";
|
|
7
7
|
export { default as FlatTableBody } from "./flat-table-body";
|
|
8
|
+
export { default as FlatTableBodyDraggable } from "./flat-table-body-draggable";
|
|
8
9
|
export { default as FlatTableRow } from "./flat-table-row";
|
|
9
10
|
export { default as FlatTableRowHeader } from "./flat-table-row-header";
|
|
10
11
|
export { default as FlatTableCell } from "./flat-table-cell";
|
|
@@ -14,6 +15,7 @@ export * from "./flat-table";
|
|
|
14
15
|
export * from "./flat-table-head";
|
|
15
16
|
export * from "./flat-table-header";
|
|
16
17
|
export * from "./flat-table-body";
|
|
18
|
+
export * from "./flat-table-body-draggable";
|
|
17
19
|
export * from "./flat-table-row";
|
|
18
20
|
export * from "./flat-table-row-header";
|
|
19
21
|
export * from "./flat-table-cell";
|
|
@@ -51,6 +51,12 @@ Object.defineProperty(exports, "FlatTableCheckbox", {
|
|
|
51
51
|
return _flatTableCheckbox.default;
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
+
Object.defineProperty(exports, "FlatTableBodyDraggable", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _flatTableBodyDraggable.default;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
54
60
|
Object.defineProperty(exports, "Sort", {
|
|
55
61
|
enumerable: true,
|
|
56
62
|
get: function () {
|
|
@@ -74,6 +80,8 @@ var _flatTableCell = _interopRequireDefault(require("./flat-table-cell/flat-tabl
|
|
|
74
80
|
|
|
75
81
|
var _flatTableCheckbox = _interopRequireDefault(require("./flat-table-checkbox/flat-table-checkbox.component"));
|
|
76
82
|
|
|
83
|
+
var _flatTableBodyDraggable = _interopRequireDefault(require("./flat-table-body-draggable/flat-table-body-draggable.component"));
|
|
84
|
+
|
|
77
85
|
var _sort = _interopRequireDefault(require("./sort/sort.component"));
|
|
78
86
|
|
|
79
87
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -48,6 +48,8 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
48
48
|
href,
|
|
49
49
|
maxWidth,
|
|
50
50
|
asPassiveItem,
|
|
51
|
+
onSubmenuOpen,
|
|
52
|
+
onSubmenuClose,
|
|
51
53
|
...rest
|
|
52
54
|
}, ref) => {
|
|
53
55
|
const [blockDoubleFocus, setBlockDoubleFocus] = (0, _react.useState)(false);
|
|
@@ -81,17 +83,22 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
81
83
|
clearTimeout(characterTimer.current);
|
|
82
84
|
startCharacterTimeout();
|
|
83
85
|
}, [startCharacterTimeout]);
|
|
86
|
+
const openSubmenu = (0, _react.useCallback)(() => {
|
|
87
|
+
setSubmenuOpen(true);
|
|
88
|
+
if (onSubmenuOpen) onSubmenuOpen();
|
|
89
|
+
}, [onSubmenuOpen]);
|
|
84
90
|
const closeSubmenu = (0, _react.useCallback)(() => {
|
|
85
91
|
setSubmenuOpen(false);
|
|
92
|
+
if (onSubmenuClose) onSubmenuClose();
|
|
86
93
|
setSubmenuFocusIndex(undefined);
|
|
87
94
|
setBlockDoubleFocus(false);
|
|
88
95
|
setCharacterString("");
|
|
89
|
-
}, []);
|
|
96
|
+
}, [onSubmenuClose]);
|
|
90
97
|
const handleKeyDown = (0, _react.useCallback)((event, index = submenuFocusIndex) => {
|
|
91
98
|
if (!submenuOpen) {
|
|
92
99
|
if (_events.default.isEnterKey(event) || _events.default.isSpaceKey(event) || _events.default.isDownKey(event) || _events.default.isUpKey(event)) {
|
|
93
100
|
event.preventDefault();
|
|
94
|
-
|
|
101
|
+
openSubmenu();
|
|
95
102
|
|
|
96
103
|
if (!href) {
|
|
97
104
|
setSubmenuFocusIndex(0);
|
|
@@ -200,7 +207,7 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
200
207
|
handleKeyDown(event, nextIndex);
|
|
201
208
|
}
|
|
202
209
|
}
|
|
203
|
-
}, [submenuFocusIndex, submenuOpen, href, menuContext, arrayOfFormattedChildren, numberOfChildren, closeSubmenu, onKeyDown, characterString, restartCharacterTimeout, startCharacterTimeout]);
|
|
210
|
+
}, [submenuFocusIndex, submenuOpen, href, menuContext, arrayOfFormattedChildren, numberOfChildren, openSubmenu, closeSubmenu, onKeyDown, characterString, restartCharacterTimeout, startCharacterTimeout]);
|
|
204
211
|
const onClickOutside = (0, _react.useCallback)(event => {
|
|
205
212
|
if (!_events.default.composedPath(event).includes(submenuRef.current)) {
|
|
206
213
|
document.removeEventListener("click", onClickOutside);
|
|
@@ -260,9 +267,9 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
260
267
|
return /*#__PURE__*/_react.default.createElement(_submenu.StyledSubmenuWrapper, {
|
|
261
268
|
"data-component": "submenu-wrapper",
|
|
262
269
|
role: "menuitem",
|
|
263
|
-
onMouseOver: !clickToOpen ? () =>
|
|
270
|
+
onMouseOver: !clickToOpen ? () => openSubmenu() : undefined,
|
|
264
271
|
onMouseLeave: () => closeSubmenu(),
|
|
265
|
-
onClick: clickToOpen ? () =>
|
|
272
|
+
onClick: clickToOpen ? () => openSubmenu() : undefined,
|
|
266
273
|
ref: submenuRef,
|
|
267
274
|
isSubmenuOpen: submenuOpen
|
|
268
275
|
}, /*#__PURE__*/_react.default.createElement(_menuItem.default, _extends({}, rest, {
|
|
@@ -336,7 +343,13 @@ Submenu.propTypes = {
|
|
|
336
343
|
maxWidth: _propTypes.default.string,
|
|
337
344
|
|
|
338
345
|
/** Used to set a submenu parent to passive styling in MenuFullscreen */
|
|
339
|
-
asPassiveItem: _propTypes.default.bool
|
|
346
|
+
asPassiveItem: _propTypes.default.bool,
|
|
347
|
+
|
|
348
|
+
/** Callback triggered when submenu opens. Only valid with submenu prop */
|
|
349
|
+
onSubmenuOpen: _propTypes.default.func,
|
|
350
|
+
|
|
351
|
+
/** Callback triggered when submenu closes. Only valid with submenu prop */
|
|
352
|
+
onSubmenuClose: _propTypes.default.func
|
|
340
353
|
};
|
|
341
354
|
var _default = Submenu;
|
|
342
355
|
exports.default = _default;
|
|
@@ -55,6 +55,8 @@ const MenuItem = ({
|
|
|
55
55
|
clickToOpen,
|
|
56
56
|
maxWidth,
|
|
57
57
|
menuOpen,
|
|
58
|
+
onSubmenuOpen,
|
|
59
|
+
onSubmenuClose,
|
|
58
60
|
...rest
|
|
59
61
|
}) => {
|
|
60
62
|
const menuContext = (0, _react.useContext)(_menu.default);
|
|
@@ -153,7 +155,9 @@ const MenuItem = ({
|
|
|
153
155
|
clickToOpen: clickToOpen,
|
|
154
156
|
maxWidth: maxWidth,
|
|
155
157
|
asPassiveItem: asPassiveItem,
|
|
156
|
-
ariaLabel: ariaLabel
|
|
158
|
+
ariaLabel: ariaLabel,
|
|
159
|
+
onSubmenuOpen: onSubmenuOpen,
|
|
160
|
+
onSubmenuClose: onSubmenuClose
|
|
157
161
|
}, elementProps, rest), childrenItems));
|
|
158
162
|
}
|
|
159
163
|
|
|
@@ -251,7 +255,13 @@ MenuItem.propTypes = {
|
|
|
251
255
|
}
|
|
252
256
|
|
|
253
257
|
return _propTypes.default.string(props, ...rest);
|
|
254
|
-
}
|
|
258
|
+
},
|
|
259
|
+
|
|
260
|
+
/** Callback triggered when submenu opens. Only valid with submenu prop */
|
|
261
|
+
onSubmenuOpen: _propTypes.default.func,
|
|
262
|
+
|
|
263
|
+
/** Callback triggered when submenu closes. Only valid with submenu prop */
|
|
264
|
+
onSubmenuClose: _propTypes.default.func
|
|
255
265
|
};
|
|
256
266
|
var _default = MenuItem;
|
|
257
267
|
exports.default = _default;
|
|
@@ -25,6 +25,10 @@ export interface MenuItemBaseProps extends LayoutProps, FlexboxProps {
|
|
|
25
25
|
showDropdownArrow?: boolean;
|
|
26
26
|
/** If no text is provided an ariaLabel should be given to facilitate accessibility. */
|
|
27
27
|
ariaLabel?: string;
|
|
28
|
+
/** Callback triggered when submenu opens. Only valid with submenu prop */
|
|
29
|
+
onSubmenuOpen?: () => void;
|
|
30
|
+
/** Callback triggered when submenu closes. Only valid with submenu prop */
|
|
31
|
+
onSubmenuClose?: () => void;
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
export interface MenuWithChildren extends MenuItemBaseProps {
|
|
@@ -15,7 +15,7 @@ var _input = require("../../__internal__/input");
|
|
|
15
15
|
|
|
16
16
|
var _formField = _interopRequireDefault(require("../../__internal__/form-field"));
|
|
17
17
|
|
|
18
|
-
var _characterCount = _interopRequireDefault(require("
|
|
18
|
+
var _characterCount = _interopRequireDefault(require("../../__internal__/character-count"));
|
|
19
19
|
|
|
20
20
|
var _input2 = _interopRequireDefault(require("../../__internal__/input/input.component"));
|
|
21
21
|
|
|
@@ -27,6 +27,8 @@ var _prefix = _interopRequireDefault(require("./__internal__/prefix.style"));
|
|
|
27
27
|
|
|
28
28
|
var _tooltipProvider = require("../../__internal__/tooltip-provider");
|
|
29
29
|
|
|
30
|
+
var _useCharacterCount = _interopRequireDefault(require("../../hooks/__internal__/useCharacterCount"));
|
|
31
|
+
|
|
30
32
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
33
|
|
|
32
34
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
@@ -58,8 +60,12 @@ const Textbox = ({
|
|
|
58
60
|
positionedChildren,
|
|
59
61
|
inputRef,
|
|
60
62
|
tooltipPosition,
|
|
63
|
+
enforceCharacterLimit = true,
|
|
64
|
+
characterLimit,
|
|
65
|
+
warnOverLimit = false,
|
|
61
66
|
...props
|
|
62
67
|
}) => {
|
|
68
|
+
const [maxLength, characterCount] = (0, _useCharacterCount.default)(value, characterLimit, warnOverLimit, enforceCharacterLimit);
|
|
63
69
|
return /*#__PURE__*/_react.default.createElement(_tooltipProvider.TooltipProvider, {
|
|
64
70
|
tooltipPosition: tooltipPosition
|
|
65
71
|
}, /*#__PURE__*/_react.default.createElement(_inputBehaviour.InputBehaviour, null, /*#__PURE__*/_react.default.createElement(_formField.default, _extends({
|
|
@@ -83,14 +89,15 @@ const Textbox = ({
|
|
|
83
89
|
placeholder: props.disabled || props.readOnly ? "" : props.placeholder,
|
|
84
90
|
"aria-invalid": !!props.error,
|
|
85
91
|
inputRef: inputRef,
|
|
86
|
-
value: visibleValue(value, formattedValue)
|
|
92
|
+
value: visibleValue(value, formattedValue),
|
|
93
|
+
maxLength: maxLength
|
|
87
94
|
})), children, /*#__PURE__*/_react.default.createElement(_inputIconToggle.default, _extends({}, removeParentProps(props), {
|
|
88
95
|
useValidationIcon: !validationOnLabel,
|
|
89
96
|
onClick: iconOnClick || props.onClick,
|
|
90
97
|
onMouseDown: iconOnMouseDown,
|
|
91
98
|
inputIcon: inputIcon,
|
|
92
99
|
iconTabIndex: iconTabIndex
|
|
93
|
-
}))))));
|
|
100
|
+
})))), characterCount));
|
|
94
101
|
};
|
|
95
102
|
|
|
96
103
|
exports.OriginalTextbox = Textbox;
|
|
@@ -242,7 +249,16 @@ Textbox.propTypes = {
|
|
|
242
249
|
inputRef: _propTypes.default.func,
|
|
243
250
|
|
|
244
251
|
/** Overrides the default tooltip position */
|
|
245
|
-
tooltipPosition: _propTypes.default.oneOf(["top", "bottom", "left", "right"])
|
|
252
|
+
tooltipPosition: _propTypes.default.oneOf(["top", "bottom", "left", "right"]),
|
|
253
|
+
|
|
254
|
+
/** Stop the user typing over the characterLimit */
|
|
255
|
+
enforceCharacterLimit: _propTypes.default.bool,
|
|
256
|
+
|
|
257
|
+
/** Character limit of the textarea */
|
|
258
|
+
characterLimit: _propTypes.default.string,
|
|
259
|
+
|
|
260
|
+
/** Whether to display the character count message in red */
|
|
261
|
+
warnOverLimit: _propTypes.default.bool
|
|
246
262
|
};
|
|
247
263
|
Textbox.defaultProps = {
|
|
248
264
|
labelWidth: 30,
|
|
@@ -80,6 +80,12 @@ export interface TextboxProps extends CommonTextboxProps, SpaceProps {
|
|
|
80
80
|
mb?: 0 | 1 | 2 | 3 | 4 | 5 | 7;
|
|
81
81
|
/** Container for DatePicker or SelectList components */
|
|
82
82
|
positionedChildren?: React.ReactNode;
|
|
83
|
+
/** Character limit of the textarea */
|
|
84
|
+
characterLimit?: string;
|
|
85
|
+
/** Stop the user typing over the characterLimit */
|
|
86
|
+
enforceCharacterLimit?: boolean;
|
|
87
|
+
/** Whether to display the character count message in red */
|
|
88
|
+
warnOverLimit?: boolean;
|
|
83
89
|
}
|
|
84
90
|
|
|
85
91
|
declare function Textbox(props: TextboxProps): JSX.Element;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _characterCount = _interopRequireDefault(require("../../../__internal__/character-count"));
|
|
11
|
+
|
|
12
|
+
var _useLocale = _interopRequireDefault(require("../useLocale"));
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
const getFormatNumber = (value, locale) => new Intl.NumberFormat(locale).format(value);
|
|
21
|
+
|
|
22
|
+
const useCharacterCount = (value, characterLimit, warnOverLimit = false, enforceCharacterLimit = true) => {
|
|
23
|
+
const l = (0, _useLocale.default)();
|
|
24
|
+
const isOverLimit = (0, _react.useMemo)(() => value && value.length > parseInt(characterLimit, 10), [value, characterLimit]);
|
|
25
|
+
return [enforceCharacterLimit && characterLimit ? characterLimit : undefined, characterLimit ? /*#__PURE__*/_react.default.createElement(_characterCount.default, {
|
|
26
|
+
isOverLimit: isOverLimit && warnOverLimit,
|
|
27
|
+
value: getFormatNumber(value.length, l.locale()),
|
|
28
|
+
limit: getFormatNumber(characterLimit, l.locale()),
|
|
29
|
+
"data-element": "character-limit"
|
|
30
|
+
}) : null];
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
var _default = useCharacterCount;
|
|
34
|
+
exports.default = _default;
|