-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathTab.jsx
More file actions
59 lines (50 loc) · 1.22 KB
/
Tab.jsx
File metadata and controls
59 lines (50 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import React from 'react';
import PropTypes from 'prop-types';
import colors from '../../theme/colors.scss';
import './Tab.scss';
const prefixCls = 'kai-tab';
const Tab = React.memo(
props => {
const {
index,
label,
onTabChange,
isActive,
focusColor,
forwardedRef
} = props;
const actPrefixCls = `${prefixCls}${isActive ? '-active' : '-inactive'}`;
const handleClick = () => onTabChange(index);
return (
<div
onClick={handleClick}
className={actPrefixCls}
style={{ '--tab-underline-color': focusColor }}
ref={forwardedRef}
>
<div className={`${actPrefixCls}-label`}>{label}</div>
</div>
);
}
);
Tab.propTypes = {
index: PropTypes.number,
label: PropTypes.string,
onTabChange: PropTypes.func,
isActive: PropTypes.bool,
focusColor: PropTypes.string,
forwardedRef: PropTypes.oneOfType([
PropTypes.func,
PropTypes.shape({ current: PropTypes.instanceOf(Element) }),
]),
};
Tab.defaultProps = {
index: 0,
label: null,
onTabChange: () => {},
isActive: false,
focusColor: colors.defaultFocusColor
};
export default React.forwardRef((props, ref) => (
<Tab forwardedRef={ref} {...props} />
));