Skip to content

Commit b2d9e6a

Browse files
committed
fix: Fix scroll into view and update dependencies
1 parent 43911c2 commit b2d9e6a

File tree

2 files changed

+39
-30
lines changed

2 files changed

+39
-30
lines changed

package.json

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -45,55 +45,55 @@
4545
},
4646
"homepage": "https://hribb.github.io/react-mdl-extra/",
4747
"peerDependencies": {
48-
"react-mdl": "^1.7.2"
48+
"react-mdl": "^1.9.0"
4949
},
5050
"devDependencies": {
51-
"@kadira/storybook": "^2.29.7",
51+
"@kadira/storybook": "^2.35.2",
5252
"@kadira/storybook-deployer": "^1.2.0",
53-
"autoprefixer": "^6.5.3",
53+
"autoprefixer": "^6.6.1",
5454
"babel-cli": "^6.18.0",
55-
"babel-core": "^6.18.2",
56-
"babel-eslint": "^7.1.0",
57-
"babel-loader": "^6.2.7",
55+
"babel-core": "^6.21.0",
56+
"babel-eslint": "^7.1.1",
57+
"babel-loader": "^6.2.10",
5858
"babel-preset-es2015": "^6.18.0",
5959
"babel-preset-react": "^6.16.0",
6060
"babel-preset-react-hmre": "^1.1.1",
6161
"babel-preset-stage-0": "^6.16.0",
6262
"chai": "^3.5.0",
63-
"cross-env": "^3.1.3",
64-
"css-loader": "^0.25.0",
65-
"enzyme": "^2.6.0",
66-
"eslint": "^3.10.0",
63+
"cross-env": "^3.1.4",
64+
"css-loader": "^0.26.1",
65+
"enzyme": "^2.7.0",
66+
"eslint": "^3.13.0",
6767
"eslint-loader": "^1.6.1",
68-
"eslint-plugin-react": "^6.6.0",
68+
"eslint-plugin-react": "^6.9.0",
6969
"expect": "^1.20.2",
7070
"extract-text-webpack-plugin": "^1.0.1",
7171
"faker": "^3.1.0",
72-
"ghooks": "^1.3.2",
73-
"html-webpack-plugin": "^2.24.1",
72+
"ghooks": "^2.0.0",
73+
"html-webpack-plugin": "^2.26.0",
7474
"html-webpack-plugin-remove": "0.0.2",
7575
"isparta": "^4.0.0",
7676
"istanbul": "^1.1.0-alpha.1",
77-
"jsdom": "^9.8.3",
78-
"mocha": "^3.1.2",
79-
"node-sass": "^3.11.3",
77+
"jsdom": "^9.9.1",
78+
"mocha": "^3.2.0",
79+
"node-sass": "^4.2.0",
8080
"normalize.css": "^5.0.0",
81-
"postcss": "^5.2.5",
82-
"postcss-loader": "^1.1.1",
81+
"postcss": "^5.2.9",
82+
"postcss-loader": "^1.2.1",
8383
"rimraf": "^2.5.4",
84-
"sass-loader": "^4.0.2",
85-
"semantic-release": "^4.3.5",
86-
"sinon": "^1.17.6",
84+
"sass-loader": "^4.1.1",
85+
"semantic-release": "^6.3.2",
86+
"sinon": "^1.17.7",
8787
"style-loader": "^0.13.1",
8888
"url-loader": "^0.5.7",
89-
"webpack": "^1.13.3"
89+
"webpack": "^1.14.0"
9090
},
9191
"dependencies": {
9292
"classnames": "^2.2.5",
93-
"react": "^15.4.0",
94-
"react-dom": "^15.4.0",
95-
"react-mdl": "^1.7.2",
93+
"react": "^15.4.2",
94+
"react-dom": "^15.4.2",
95+
"react-mdl": "^1.9.0",
9696
"react-portal": "^3.0.0",
97-
"tether": "^1.3.7"
97+
"tether": "^1.4.0"
9898
}
9999
}

src/OptionList/OptionList.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,26 @@ export default class OptionList extends Component {
3030
}
3131

3232
componentDidMount() {
33+
// add keydown event listener
3334
document.addEventListener('keydown', this.keyDown, true)
3435
// scroll into view
3536
if (!this.props.value) return // no value
36-
const parent = this.list.parentNode
37-
if (parent.clientHeight >= parent.scrollHeight) return // no scroller
38-
const [selected] = this.list.getElementsByClassName('mdl-option--selected')
39-
parent.scrollTop = selected.offsetTop - (parent.clientHeight / 2)
37+
this.scrollTimeout = setTimeout(() => {
38+
this.scrollTimeout = null
39+
if (this.list.scrollHeight > this.list.offsetHeight) {
40+
const [selected] = this.list.getElementsByClassName('mdl-option--selected')
41+
this.list.scrollTop = selected.offsetTop - (this.list.clientHeight / 2)
42+
}
43+
})
4044
}
4145

4246
componentWillUnmount() {
47+
// remove event listener
4348
document.removeEventListener('keydown', this.keyDown, true)
49+
// clear scroll timeout if necessary
50+
if (this.scrollTimeout) {
51+
clearTimeout(this.scrollTimeout)
52+
}
4453
}
4554

4655
render() {

0 commit comments

Comments
 (0)