@sis-cc/dotstatsuite-visions 7.19.0 → 7.20.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/es/Chips/CustomChip.js +109 -0
- package/es/Chips/DeleteChip.js +27 -0
- package/es/Chips/GroupedChips.js +95 -0
- package/es/Chips/index.js +34 -26
- package/es/Chips/styles.js +64 -0
- package/es/Chips/utils.js +11 -0
- package/es/ExpansionPanel/styles.js +2 -2
- package/es/index.js +1 -1
- package/lib/Chips/CustomChip.js +145 -0
- package/lib/Chips/DeleteChip.js +46 -0
- package/lib/Chips/GroupedChips.js +122 -0
- package/lib/Chips/index.js +11 -4
- package/lib/Chips/styles.js +74 -0
- package/lib/Chips/utils.js +20 -0
- package/lib/ExpansionPanel/styles.js +2 -2
- package/lib/index.js +8 -2
- package/package.json +1 -1
- package/es/Chips/Chips.js +0 -302
- package/lib/Chips/Chips.js +0 -342
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import React, { Fragment } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import * as R from 'ramda';
|
|
4
|
+
import cx from 'classnames';
|
|
5
|
+
import { useTheme } from '@material-ui/core/styles';
|
|
6
|
+
import IconButton from '@material-ui/core/IconButton';
|
|
7
|
+
import Chip from '@material-ui/core/Chip';
|
|
8
|
+
import Cross from '../Icons/Cross';
|
|
9
|
+
import { getIsRtl } from '../utils';
|
|
10
|
+
import Tooltip from '../Tooltip';
|
|
11
|
+
import { useStyles } from './styles';
|
|
12
|
+
import { myTooltipRenderer } from './utils';
|
|
13
|
+
|
|
14
|
+
var shownTooltip = R.pipe(R.dropLast(1), R.either(R.isEmpty, R.isNil), R.not);
|
|
15
|
+
var showMultiLinedTooltip = R.pipe(R.head, R.propOr([], 'parents'), R.isEmpty, R.not);
|
|
16
|
+
|
|
17
|
+
var CustomChip = function CustomChip(_ref) {
|
|
18
|
+
var _cx;
|
|
19
|
+
|
|
20
|
+
var id = _ref.id,
|
|
21
|
+
parentId = _ref.parentId,
|
|
22
|
+
_ref$items = _ref.items,
|
|
23
|
+
items = _ref$items === undefined ? [] : _ref$items,
|
|
24
|
+
label = _ref.label,
|
|
25
|
+
onDelete = _ref.onDelete,
|
|
26
|
+
renderer = _ref.renderer,
|
|
27
|
+
chipClasses = _ref.chipClasses,
|
|
28
|
+
iconClasses = _ref.iconClasses,
|
|
29
|
+
labelClasses = _ref.labelClasses,
|
|
30
|
+
_ref$ariaLabel = _ref.ariaLabel,
|
|
31
|
+
ariaLabel = _ref$ariaLabel === undefined ? 'delete' : _ref$ariaLabel,
|
|
32
|
+
_ref$testId = _ref.testId,
|
|
33
|
+
testId = _ref$testId === undefined ? 'deleteChip-test-id' : _ref$testId;
|
|
34
|
+
|
|
35
|
+
var theme = useTheme();
|
|
36
|
+
var isRtl = getIsRtl(theme);
|
|
37
|
+
var labelRenderer = R.prop('label');
|
|
38
|
+
var classes = useStyles();
|
|
39
|
+
var mapIndexed = R.addIndex(R.map);
|
|
40
|
+
var onChange = R.is(Function)(onDelete) ? function () {
|
|
41
|
+
return onDelete(parentId, R.isNil(id) ? [] : [id]);
|
|
42
|
+
} : null;
|
|
43
|
+
var hasTooltip = shownTooltip(items);
|
|
44
|
+
var hasMultiLinedTooltip = showMultiLinedTooltip(items);
|
|
45
|
+
var multiLinedTooltipRenderer = function multiLinedTooltipRenderer(arr) {
|
|
46
|
+
return mapIndexed(function (item, index) {
|
|
47
|
+
return React.createElement(
|
|
48
|
+
'div',
|
|
49
|
+
{ key: index },
|
|
50
|
+
myTooltipRenderer({ isRtl: isRtl, labelRenderer: labelRenderer })(item),
|
|
51
|
+
React.createElement('br', null)
|
|
52
|
+
);
|
|
53
|
+
})(R.prop('parents')(R.head(arr)));
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
return React.createElement(
|
|
57
|
+
Tooltip,
|
|
58
|
+
{
|
|
59
|
+
placement: 'top',
|
|
60
|
+
title: hasTooltip ? renderer(items) : hasMultiLinedTooltip ? multiLinedTooltipRenderer(items) : ''
|
|
61
|
+
},
|
|
62
|
+
React.createElement(Chip, {
|
|
63
|
+
'data-testid': testId,
|
|
64
|
+
size: 'small',
|
|
65
|
+
'aria-label': label,
|
|
66
|
+
label: hasTooltip || hasMultiLinedTooltip ? React.createElement(
|
|
67
|
+
Fragment,
|
|
68
|
+
null,
|
|
69
|
+
'...',
|
|
70
|
+
React.createElement(
|
|
71
|
+
'span',
|
|
72
|
+
{ className: classes.childrenIndicator },
|
|
73
|
+
'>'
|
|
74
|
+
),
|
|
75
|
+
label
|
|
76
|
+
) : label,
|
|
77
|
+
deleteIcon: React.createElement(
|
|
78
|
+
IconButton,
|
|
79
|
+
{
|
|
80
|
+
disableRipple: true,
|
|
81
|
+
className: iconClasses,
|
|
82
|
+
'aria-label': ariaLabel + ' ' + label,
|
|
83
|
+
component: 'span',
|
|
84
|
+
tabIndex: -1
|
|
85
|
+
},
|
|
86
|
+
React.createElement(Cross, null)
|
|
87
|
+
),
|
|
88
|
+
clickable: true,
|
|
89
|
+
onDelete: onChange,
|
|
90
|
+
className: cx(chipClasses, (_cx = {}, _cx[classes.tooltipIndicator] = hasTooltip || hasMultiLinedTooltip, _cx)),
|
|
91
|
+
classes: { label: labelClasses }
|
|
92
|
+
})
|
|
93
|
+
);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
CustomChip.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
97
|
+
testId: PropTypes.string,
|
|
98
|
+
id: PropTypes.string,
|
|
99
|
+
parentId: PropTypes.string,
|
|
100
|
+
label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
101
|
+
onDelete: PropTypes.func,
|
|
102
|
+
renderer: PropTypes.func,
|
|
103
|
+
chipClasses: PropTypes.string,
|
|
104
|
+
iconClasses: PropTypes.string,
|
|
105
|
+
labelClasses: PropTypes.string,
|
|
106
|
+
ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
107
|
+
items: PropTypes.array
|
|
108
|
+
} : {};
|
|
109
|
+
export default CustomChip;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import cx from 'classnames';
|
|
4
|
+
import { useStyles } from './styles';
|
|
5
|
+
import CustomChip from './CustomChip';
|
|
6
|
+
|
|
7
|
+
var DeleteChip = function DeleteChip(_ref) {
|
|
8
|
+
var onDeleteAll = _ref.onDeleteAll,
|
|
9
|
+
clearAllLabel = _ref.clearAllLabel,
|
|
10
|
+
ariaLabel = _ref.ariaLabel;
|
|
11
|
+
|
|
12
|
+
var classes = useStyles();
|
|
13
|
+
return React.createElement(CustomChip, {
|
|
14
|
+
label: clearAllLabel,
|
|
15
|
+
ariaLabel: ariaLabel,
|
|
16
|
+
chipClasses: cx(classes.mainChip, classes.chip),
|
|
17
|
+
onDelete: onDeleteAll,
|
|
18
|
+
iconClasses: classes.icon,
|
|
19
|
+
labelClasses: cx(classes.spaceLabel, classes.formatLabel)
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
DeleteChip.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
23
|
+
onDeleteAll: PropTypes.func,
|
|
24
|
+
ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
25
|
+
clearAllLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element])
|
|
26
|
+
} : {};
|
|
27
|
+
export default DeleteChip;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { useTheme } from '@material-ui/core/styles';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import React, { Fragment } from 'react';
|
|
4
|
+
import * as R from 'ramda';
|
|
5
|
+
import cx from 'classnames';
|
|
6
|
+
import { getIsRtl } from '../utils';
|
|
7
|
+
import { useStyles } from './styles';
|
|
8
|
+
import CustomChip from './CustomChip';
|
|
9
|
+
import { myTooltipRenderer } from './utils';
|
|
10
|
+
|
|
11
|
+
var GroupedChips = function GroupedChips(_ref) {
|
|
12
|
+
var _ref$itemProps = _ref.itemProps,
|
|
13
|
+
itemProps = _ref$itemProps === undefined ? {} : _ref$itemProps,
|
|
14
|
+
onDelete = _ref.onDelete,
|
|
15
|
+
_ref$labelRenderer = _ref.labelRenderer,
|
|
16
|
+
labelRenderer = _ref$labelRenderer === undefined ? R.prop('label') : _ref$labelRenderer,
|
|
17
|
+
tooltipRenderer = _ref.tooltipRenderer,
|
|
18
|
+
ariaLabel = _ref.ariaLabel,
|
|
19
|
+
_ref$reducingNbChips = _ref.reducingNbChips,
|
|
20
|
+
reducingNbChips = _ref$reducingNbChips === undefined ? 15 : _ref$reducingNbChips,
|
|
21
|
+
labels = _ref.labels,
|
|
22
|
+
_ref$testId = _ref.testId,
|
|
23
|
+
testId = _ref$testId === undefined ? 'chips-test-id' : _ref$testId;
|
|
24
|
+
var parentId = itemProps.id,
|
|
25
|
+
isNotRemovable = itemProps.isNotRemovable,
|
|
26
|
+
_itemProps$values = itemProps.values,
|
|
27
|
+
values = _itemProps$values === undefined ? [] : _itemProps$values;
|
|
28
|
+
|
|
29
|
+
var theme = useTheme();
|
|
30
|
+
var isRtl = getIsRtl(theme);
|
|
31
|
+
var classes = useStyles();
|
|
32
|
+
return React.createElement(
|
|
33
|
+
Fragment,
|
|
34
|
+
null,
|
|
35
|
+
React.createElement(CustomChip, {
|
|
36
|
+
testId: testId,
|
|
37
|
+
parentId: parentId,
|
|
38
|
+
label: labelRenderer(itemProps) + ':',
|
|
39
|
+
ariaLabel: ariaLabel,
|
|
40
|
+
chipClasses: cx(classes.mainChip, classes.chip),
|
|
41
|
+
onDelete: isNotRemovable ? null : onDelete,
|
|
42
|
+
iconClasses: classes.icon,
|
|
43
|
+
labelClasses: cx(classes.spaceLabel, classes.formatLabel)
|
|
44
|
+
}),
|
|
45
|
+
R.pipe(R.length, R.flip(R.gt)(reducingNbChips))(values) ? React.createElement(CustomChip, {
|
|
46
|
+
parentId: parentId,
|
|
47
|
+
label: R.length(values) + ' ' + R.prop('reducingChip')(labels),
|
|
48
|
+
chipClasses: cx(classes.secondaryChip, classes.chip),
|
|
49
|
+
onDelete: isNotRemovable ? null : onDelete,
|
|
50
|
+
iconClasses: classes.icon,
|
|
51
|
+
labelClasses: cx(classes.formatLabel)
|
|
52
|
+
}) : R.map(function (items) {
|
|
53
|
+
var lastItem = R.last(items);
|
|
54
|
+
var id = lastItem.id,
|
|
55
|
+
isNotRemovable = lastItem.isNotRemovable;
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
return React.createElement(CustomChip, {
|
|
59
|
+
key: id,
|
|
60
|
+
id: id,
|
|
61
|
+
items: R.pipe(R.length, R.gte(2)) ? items : null,
|
|
62
|
+
renderer: R.is(Function)(tooltipRenderer) ? tooltipRenderer : myTooltipRenderer({ isRtl: isRtl, labelRenderer: labelRenderer }),
|
|
63
|
+
label: labelRenderer(lastItem),
|
|
64
|
+
ariaLabel: ariaLabel,
|
|
65
|
+
parentId: parentId,
|
|
66
|
+
onDelete: isNotRemovable ? null : onDelete,
|
|
67
|
+
chipClasses: cx(classes.secondaryChip, classes.chip),
|
|
68
|
+
iconClasses: classes.icon,
|
|
69
|
+
labelClasses: cx(classes.formatLabel)
|
|
70
|
+
});
|
|
71
|
+
})(values)
|
|
72
|
+
);
|
|
73
|
+
};
|
|
74
|
+
GroupedChips.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
75
|
+
testId: PropTypes.string,
|
|
76
|
+
itemProps: PropTypes.shape({
|
|
77
|
+
id: PropTypes.string,
|
|
78
|
+
label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
79
|
+
isNotRemovable: PropTypes.bool,
|
|
80
|
+
values: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.shape({
|
|
81
|
+
id: PropTypes.string,
|
|
82
|
+
label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
83
|
+
isNotRemovable: PropTypes.bool
|
|
84
|
+
})))
|
|
85
|
+
}),
|
|
86
|
+
onDelete: PropTypes.func,
|
|
87
|
+
labelRenderer: PropTypes.func,
|
|
88
|
+
tooltipRenderer: PropTypes.func,
|
|
89
|
+
ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
90
|
+
reducingNbChips: PropTypes.number,
|
|
91
|
+
labels: PropTypes.shape({
|
|
92
|
+
reducingChip: PropTypes.oneOfType([PropTypes.string, PropTypes.element])
|
|
93
|
+
})
|
|
94
|
+
} : {};
|
|
95
|
+
export default GroupedChips;
|
package/es/Chips/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* GroupedChips, is like a small board of whatever you want to show. You can delete sub item, item with sub item or all items
|
|
3
|
+
* DeleteAllChip, is a chip that deletes all items displayed in the board
|
|
3
4
|
* reducingNbChips: default 15, allow a possibility to reduce many chips to one. You will see the numbers of items inside the chip
|
|
4
5
|
*
|
|
5
6
|
* @memberOf VISIONS
|
|
@@ -7,31 +8,37 @@
|
|
|
7
8
|
* @tag component
|
|
8
9
|
* @api public
|
|
9
10
|
* @demoReady
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
11
|
+
* GroupedChips.propTypes = {
|
|
12
|
+
* testId: PropTypes.string,
|
|
13
|
+
* itemProps: PropTypes.shape({
|
|
14
|
+
* id: PropTypes.string,
|
|
15
|
+
* label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
16
|
+
* isNotRemovable: PropTypes.bool,
|
|
17
|
+
* values: PropTypes.arrayOf(
|
|
18
|
+
* PropTypes.arrayOf(
|
|
19
|
+
* PropTypes.shape({
|
|
20
|
+
* id: PropTypes.string,
|
|
21
|
+
* label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
22
|
+
* isNotRemovable: PropTypes.bool,
|
|
23
|
+
* }),
|
|
24
|
+
* ),
|
|
25
|
+
* ),
|
|
26
|
+
* }),
|
|
27
|
+
* onDelete: PropTypes.func,
|
|
28
|
+
* labelRenderer: PropTypes.func,
|
|
29
|
+
* tooltipRenderer: PropTypes.func,
|
|
30
|
+
* ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
31
|
+
* reducingNbChips: PropTypes.number,
|
|
32
|
+
* labels: PropTypes.shape({
|
|
33
|
+
* reducingChip: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
34
|
+
* }),
|
|
34
35
|
* };
|
|
36
|
+
*
|
|
37
|
+
* DeleteAllChip.propTypes = {
|
|
38
|
+
* onDeleteAll: PropTypes.func,
|
|
39
|
+
* ariaLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
40
|
+
* clearAllLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
|
|
41
|
+
};
|
|
35
42
|
* @theme
|
|
36
43
|
* {
|
|
37
44
|
* palette: {
|
|
@@ -58,4 +65,5 @@
|
|
|
58
65
|
* // *tooltip indicator is the dotted line under a chip
|
|
59
66
|
*/
|
|
60
67
|
|
|
61
|
-
export { default } from './
|
|
68
|
+
export { default } from './GroupedChips';
|
|
69
|
+
export { default as DeleteAllChip } from './DeleteChip';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
import * as R from 'ramda';
|
|
3
|
+
|
|
4
|
+
export var useStyles = makeStyles(function (theme) {
|
|
5
|
+
return {
|
|
6
|
+
root: {
|
|
7
|
+
display: 'flex',
|
|
8
|
+
flexWrap: 'wrap'
|
|
9
|
+
},
|
|
10
|
+
chip: {
|
|
11
|
+
height: 'unset',
|
|
12
|
+
borderRadius: 3,
|
|
13
|
+
minHeight: 25,
|
|
14
|
+
fontSize: 12,
|
|
15
|
+
margin: theme.spacing(0.25)
|
|
16
|
+
},
|
|
17
|
+
mainChip: {
|
|
18
|
+
background: 'none',
|
|
19
|
+
color: theme.palette.text.primary
|
|
20
|
+
},
|
|
21
|
+
secondaryChip: {
|
|
22
|
+
backgroundColor: R.path(['palette', 'tertiary', 'light'])(theme) || theme.palette.grey[100],
|
|
23
|
+
'&:hover, &:focus': {
|
|
24
|
+
backgroundColor: R.path(['palette', 'tertiary', 'dark'])(theme) || theme.palette.grey[300]
|
|
25
|
+
},
|
|
26
|
+
color: theme.palette.primary.main
|
|
27
|
+
},
|
|
28
|
+
icon: {
|
|
29
|
+
color: theme.palette.primary.main,
|
|
30
|
+
cursor: 'pointer',
|
|
31
|
+
margin: 0,
|
|
32
|
+
'&:hover': {
|
|
33
|
+
color: 'inherit'
|
|
34
|
+
},
|
|
35
|
+
'& svg': {
|
|
36
|
+
fontSize: 15
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
divider: {
|
|
40
|
+
margin: theme.spacing(0.5),
|
|
41
|
+
backgroundColor: theme.palette.grey[700]
|
|
42
|
+
},
|
|
43
|
+
dividerHz: {
|
|
44
|
+
width: '100%',
|
|
45
|
+
margin: theme.spacing(0.5),
|
|
46
|
+
backgroundColor: theme.palette.grey[700]
|
|
47
|
+
},
|
|
48
|
+
spaceLabel: {
|
|
49
|
+
paddingLeft: 0
|
|
50
|
+
},
|
|
51
|
+
formatLabel: {
|
|
52
|
+
whiteSpace: 'pre-wrap',
|
|
53
|
+
overflowWrap: 'anywhere'
|
|
54
|
+
},
|
|
55
|
+
tooltip: theme.typography.body2,
|
|
56
|
+
childrenIndicator: {
|
|
57
|
+
margin: '0 2px',
|
|
58
|
+
fontSize: 10
|
|
59
|
+
},
|
|
60
|
+
tooltipIndicator: {
|
|
61
|
+
borderBottom: '1px dotted ' + theme.palette.primary.main
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
|
|
3
|
+
export var myTooltipRenderer = function myTooltipRenderer(_ref) {
|
|
4
|
+
var isRtl = _ref.isRtl,
|
|
5
|
+
labelRenderer = _ref.labelRenderer;
|
|
6
|
+
return R.pipe(R.map(labelRenderer), R.when(R.always(isRtl), R.reverse), R.join(isRtl ? ' < ' : ' > '));
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export var isLast = function isLast(index, list) {
|
|
10
|
+
return index + 1 === R.length(list);
|
|
11
|
+
};
|
|
@@ -9,6 +9,7 @@ export var useStyles = makeStyles(function (theme) {
|
|
|
9
9
|
minHeight: '40px !important',
|
|
10
10
|
maxHeight: 40,
|
|
11
11
|
display: 'flex',
|
|
12
|
+
flexDirection: 'row-reverse',
|
|
12
13
|
alignItems: 'flex-start',
|
|
13
14
|
padding: theme.spacing(0)
|
|
14
15
|
},
|
|
@@ -49,10 +50,9 @@ export var useStyles = makeStyles(function (theme) {
|
|
|
49
50
|
}
|
|
50
51
|
},
|
|
51
52
|
iconSummaryPanel: {
|
|
52
|
-
right: -1,
|
|
53
53
|
color: theme.palette.primary.main,
|
|
54
54
|
padding: theme.spacing(0.5, 0.5),
|
|
55
|
-
margin: theme.spacing(0,
|
|
55
|
+
margin: theme.spacing(0, 1, 0, 0)
|
|
56
56
|
},
|
|
57
57
|
fullWidth: {
|
|
58
58
|
width: '100%'
|
package/es/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { default as ApiQueries } from './ApiQueries';
|
|
|
8
8
|
export { default as Breadcrumbs } from './Breadcrumbs';
|
|
9
9
|
export { default as Button } from './Button';
|
|
10
10
|
export { default as ChartsConfig } from './ChartsConfig';
|
|
11
|
-
export { default as
|
|
11
|
+
export { DeleteAllChip, default as GroupedChips } from './Chips';
|
|
12
12
|
export { default as CollapseButtons } from './CollapseButtons';
|
|
13
13
|
export { default as CollapsibleTree } from './CollapsibleTree';
|
|
14
14
|
export { default as Contact } from './Contact';
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _react = require('react');
|
|
6
|
+
|
|
7
|
+
var _react2 = _interopRequireDefault(_react);
|
|
8
|
+
|
|
9
|
+
var _propTypes = require('prop-types');
|
|
10
|
+
|
|
11
|
+
var _propTypes2 = _interopRequireDefault(_propTypes);
|
|
12
|
+
|
|
13
|
+
var _ramda = require('ramda');
|
|
14
|
+
|
|
15
|
+
var R = _interopRequireWildcard(_ramda);
|
|
16
|
+
|
|
17
|
+
var _classnames = require('classnames');
|
|
18
|
+
|
|
19
|
+
var _classnames2 = _interopRequireDefault(_classnames);
|
|
20
|
+
|
|
21
|
+
var _styles = require('@material-ui/core/styles');
|
|
22
|
+
|
|
23
|
+
var _IconButton = require('@material-ui/core/IconButton');
|
|
24
|
+
|
|
25
|
+
var _IconButton2 = _interopRequireDefault(_IconButton);
|
|
26
|
+
|
|
27
|
+
var _Chip = require('@material-ui/core/Chip');
|
|
28
|
+
|
|
29
|
+
var _Chip2 = _interopRequireDefault(_Chip);
|
|
30
|
+
|
|
31
|
+
var _Cross = require('../Icons/Cross');
|
|
32
|
+
|
|
33
|
+
var _Cross2 = _interopRequireDefault(_Cross);
|
|
34
|
+
|
|
35
|
+
var _utils = require('../utils');
|
|
36
|
+
|
|
37
|
+
var _Tooltip = require('../Tooltip');
|
|
38
|
+
|
|
39
|
+
var _Tooltip2 = _interopRequireDefault(_Tooltip);
|
|
40
|
+
|
|
41
|
+
var _styles2 = require('./styles');
|
|
42
|
+
|
|
43
|
+
var _utils2 = require('./utils');
|
|
44
|
+
|
|
45
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
46
|
+
|
|
47
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
48
|
+
|
|
49
|
+
var shownTooltip = R.pipe(R.dropLast(1), R.either(R.isEmpty, R.isNil), R.not);
|
|
50
|
+
var showMultiLinedTooltip = R.pipe(R.head, R.propOr([], 'parents'), R.isEmpty, R.not);
|
|
51
|
+
|
|
52
|
+
var CustomChip = function CustomChip(_ref) {
|
|
53
|
+
var _cx;
|
|
54
|
+
|
|
55
|
+
var id = _ref.id,
|
|
56
|
+
parentId = _ref.parentId,
|
|
57
|
+
_ref$items = _ref.items,
|
|
58
|
+
items = _ref$items === undefined ? [] : _ref$items,
|
|
59
|
+
label = _ref.label,
|
|
60
|
+
onDelete = _ref.onDelete,
|
|
61
|
+
renderer = _ref.renderer,
|
|
62
|
+
chipClasses = _ref.chipClasses,
|
|
63
|
+
iconClasses = _ref.iconClasses,
|
|
64
|
+
labelClasses = _ref.labelClasses,
|
|
65
|
+
_ref$ariaLabel = _ref.ariaLabel,
|
|
66
|
+
ariaLabel = _ref$ariaLabel === undefined ? 'delete' : _ref$ariaLabel,
|
|
67
|
+
_ref$testId = _ref.testId,
|
|
68
|
+
testId = _ref$testId === undefined ? 'deleteChip-test-id' : _ref$testId;
|
|
69
|
+
|
|
70
|
+
var theme = (0, _styles.useTheme)();
|
|
71
|
+
var isRtl = (0, _utils.getIsRtl)(theme);
|
|
72
|
+
var labelRenderer = R.prop('label');
|
|
73
|
+
var classes = (0, _styles2.useStyles)();
|
|
74
|
+
var mapIndexed = R.addIndex(R.map);
|
|
75
|
+
var onChange = R.is(Function)(onDelete) ? function () {
|
|
76
|
+
return onDelete(parentId, R.isNil(id) ? [] : [id]);
|
|
77
|
+
} : null;
|
|
78
|
+
var hasTooltip = shownTooltip(items);
|
|
79
|
+
var hasMultiLinedTooltip = showMultiLinedTooltip(items);
|
|
80
|
+
var multiLinedTooltipRenderer = function multiLinedTooltipRenderer(arr) {
|
|
81
|
+
return mapIndexed(function (item, index) {
|
|
82
|
+
return _react2.default.createElement(
|
|
83
|
+
'div',
|
|
84
|
+
{ key: index },
|
|
85
|
+
(0, _utils2.myTooltipRenderer)({ isRtl: isRtl, labelRenderer: labelRenderer })(item),
|
|
86
|
+
_react2.default.createElement('br', null)
|
|
87
|
+
);
|
|
88
|
+
})(R.prop('parents')(R.head(arr)));
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
return _react2.default.createElement(
|
|
92
|
+
_Tooltip2.default,
|
|
93
|
+
{
|
|
94
|
+
placement: 'top',
|
|
95
|
+
title: hasTooltip ? renderer(items) : hasMultiLinedTooltip ? multiLinedTooltipRenderer(items) : ''
|
|
96
|
+
},
|
|
97
|
+
_react2.default.createElement(_Chip2.default, {
|
|
98
|
+
'data-testid': testId,
|
|
99
|
+
size: 'small',
|
|
100
|
+
'aria-label': label,
|
|
101
|
+
label: hasTooltip || hasMultiLinedTooltip ? _react2.default.createElement(
|
|
102
|
+
_react.Fragment,
|
|
103
|
+
null,
|
|
104
|
+
'...',
|
|
105
|
+
_react2.default.createElement(
|
|
106
|
+
'span',
|
|
107
|
+
{ className: classes.childrenIndicator },
|
|
108
|
+
'>'
|
|
109
|
+
),
|
|
110
|
+
label
|
|
111
|
+
) : label,
|
|
112
|
+
deleteIcon: _react2.default.createElement(
|
|
113
|
+
_IconButton2.default,
|
|
114
|
+
{
|
|
115
|
+
disableRipple: true,
|
|
116
|
+
className: iconClasses,
|
|
117
|
+
'aria-label': ariaLabel + ' ' + label,
|
|
118
|
+
component: 'span',
|
|
119
|
+
tabIndex: -1
|
|
120
|
+
},
|
|
121
|
+
_react2.default.createElement(_Cross2.default, null)
|
|
122
|
+
),
|
|
123
|
+
clickable: true,
|
|
124
|
+
onDelete: onChange,
|
|
125
|
+
className: (0, _classnames2.default)(chipClasses, (_cx = {}, _cx[classes.tooltipIndicator] = hasTooltip || hasMultiLinedTooltip, _cx)),
|
|
126
|
+
classes: { label: labelClasses }
|
|
127
|
+
})
|
|
128
|
+
);
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
CustomChip.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
132
|
+
testId: _propTypes2.default.string,
|
|
133
|
+
id: _propTypes2.default.string,
|
|
134
|
+
parentId: _propTypes2.default.string,
|
|
135
|
+
label: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
|
|
136
|
+
onDelete: _propTypes2.default.func,
|
|
137
|
+
renderer: _propTypes2.default.func,
|
|
138
|
+
chipClasses: _propTypes2.default.string,
|
|
139
|
+
iconClasses: _propTypes2.default.string,
|
|
140
|
+
labelClasses: _propTypes2.default.string,
|
|
141
|
+
ariaLabel: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
|
|
142
|
+
items: _propTypes2.default.array
|
|
143
|
+
} : {};
|
|
144
|
+
exports.default = CustomChip;
|
|
145
|
+
module.exports = exports['default'];
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
|
|
5
|
+
var _react = require('react');
|
|
6
|
+
|
|
7
|
+
var _react2 = _interopRequireDefault(_react);
|
|
8
|
+
|
|
9
|
+
var _propTypes = require('prop-types');
|
|
10
|
+
|
|
11
|
+
var _propTypes2 = _interopRequireDefault(_propTypes);
|
|
12
|
+
|
|
13
|
+
var _classnames = require('classnames');
|
|
14
|
+
|
|
15
|
+
var _classnames2 = _interopRequireDefault(_classnames);
|
|
16
|
+
|
|
17
|
+
var _styles = require('./styles');
|
|
18
|
+
|
|
19
|
+
var _CustomChip = require('./CustomChip');
|
|
20
|
+
|
|
21
|
+
var _CustomChip2 = _interopRequireDefault(_CustomChip);
|
|
22
|
+
|
|
23
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
|
+
|
|
25
|
+
var DeleteChip = function DeleteChip(_ref) {
|
|
26
|
+
var onDeleteAll = _ref.onDeleteAll,
|
|
27
|
+
clearAllLabel = _ref.clearAllLabel,
|
|
28
|
+
ariaLabel = _ref.ariaLabel;
|
|
29
|
+
|
|
30
|
+
var classes = (0, _styles.useStyles)();
|
|
31
|
+
return _react2.default.createElement(_CustomChip2.default, {
|
|
32
|
+
label: clearAllLabel,
|
|
33
|
+
ariaLabel: ariaLabel,
|
|
34
|
+
chipClasses: (0, _classnames2.default)(classes.mainChip, classes.chip),
|
|
35
|
+
onDelete: onDeleteAll,
|
|
36
|
+
iconClasses: classes.icon,
|
|
37
|
+
labelClasses: (0, _classnames2.default)(classes.spaceLabel, classes.formatLabel)
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
DeleteChip.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
41
|
+
onDeleteAll: _propTypes2.default.func,
|
|
42
|
+
ariaLabel: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
|
|
43
|
+
clearAllLabel: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element])
|
|
44
|
+
} : {};
|
|
45
|
+
exports.default = DeleteChip;
|
|
46
|
+
module.exports = exports['default'];
|