From: caojunchao Date: Thu, 9 Mar 2017 05:38:54 +0000 (+0800) Subject: Fix the bug the Select's scrollbar flashes repeatedly in Chrome/macOS when always... X-Git-Tag: 2.3.2~1^2~1 X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=d093074a00881b60b3440a35503f0143612143a0;p=github%2Ffretlink%2Ftime-picker.git Fix the bug the Select's scrollbar flashes repeatedly in Chrome/macOS when always show scroll bars --- diff --git a/assets/index/Select.less b/assets/index/Select.less index 13b5b18..8bec4a0 100644 --- a/assets/index/Select.less +++ b/assets/index/Select.less @@ -9,7 +9,7 @@ overflow: hidden; position: relative; // Fix chrome weird render bug - &:hover { + &-active { overflow-y: auto; } diff --git a/src/Select.jsx b/src/Select.jsx index 5733b1a..deb155d 100644 --- a/src/Select.jsx +++ b/src/Select.jsx @@ -32,6 +32,12 @@ const Select = React.createClass({ onMouseEnter: PropTypes.func, }, + getInitialState() { + return { + active: false, + }; + }, + componentDidMount() { // jump to selected option this.scrollToSelected(0); @@ -87,17 +93,31 @@ const Select = React.createClass({ scrollTo(select, to, duration); }, + handleMouseEnter(e) { + this.setState({ active: true }); + this.props.onMouseEnter(e); + }, + + handleMouseLeave() { + this.setState({ active: false }); + }, + render() { if (this.props.options.length === 0) { return null; } const { prefixCls } = this.props; + const cls = classnames({ + [`${prefixCls}-select`]: 1, + [`${prefixCls}-select-active`]: this.state.active, + }); return (