From 44b9f2ba55e6412af3114a12322d5613e5e2289e Mon Sep 17 00:00:00 2001 From: SleepWalker Date: Sat, 28 Oct 2017 16:38:07 +0300 Subject: [PATCH] #305: scroll to meaningful content on multistep forms on devices with smalls screen resolution --- package-lock.json | 8 +- package.json | 1 + src/components/MeasureHeight.js | 4 +- .../profile/changeEmail/ChangeEmail.js | 3 + .../profile/multiFactorAuth/MfaEnable.js | 3 + .../multiFactorAuth/status/MfaStatus.js | 3 + src/components/ui/bsod/BoxesField.js | 2 - src/components/ui/scroll/ScrollIntoView.js | 35 +++++ src/components/ui/scroll/index.js | 3 + src/components/ui/scroll/scroll.js | 147 ++++++++++++++++++ src/functions.js | 105 ------------- src/pages/root/RootPage.js | 6 +- src/polyfills.js | 2 + 13 files changed, 207 insertions(+), 115 deletions(-) create mode 100644 src/components/ui/scroll/ScrollIntoView.js create mode 100644 src/components/ui/scroll/index.js create mode 100644 src/components/ui/scroll/scroll.js diff --git a/package-lock.json b/package-lock.json index 0a4838e..de39884 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8749,9 +8749,9 @@ "dev": true }, "raf": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.3.2.tgz", - "integrity": "sha1-DBO+C1tJtG921maSSNUnzysC/ic=", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", "requires": { "performance-now": "2.1.0" }, @@ -8924,7 +8924,7 @@ "requires": { "performance-now": "0.2.0", "prop-types": "15.5.10", - "raf": "3.3.2" + "raf": "3.4.0" } }, "react-proxy": { diff --git a/package.json b/package.json index def47a9..5fdb614 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "intl-format-cache": "^2.0.4", "intl-messageformat": "^2.1.0", "promise.prototype.finally": "3.0.1", + "raf": "^3.4.0", "raven-js": "^3.8.1", "react": "^15.0.0", "react-dom": "^15.0.0", diff --git a/src/components/MeasureHeight.js b/src/components/MeasureHeight.js index e685064..44a5212 100644 --- a/src/components/MeasureHeight.js +++ b/src/components/MeasureHeight.js @@ -1,7 +1,7 @@ // @flow import React, { PureComponent } from 'react'; -import { omit, rAF, debounce } from 'functions'; +import { omit, debounce } from 'functions'; /** * MeasureHeight is a component that allows you to measure the height of elements wrapped. @@ -61,6 +61,6 @@ export default class MeasureHeight extends PureComponent<{ } measure = debounce(() => { - rAF(() => this.el && this.props.onMeasure(this.el.offsetHeight)); + requestAnimationFrame(() => this.el && this.props.onMeasure(this.el.offsetHeight)); }); } diff --git a/src/components/profile/changeEmail/ChangeEmail.js b/src/components/profile/changeEmail/ChangeEmail.js index 8b18623..f89dc21 100644 --- a/src/components/profile/changeEmail/ChangeEmail.js +++ b/src/components/profile/changeEmail/ChangeEmail.js @@ -5,6 +5,7 @@ import { FormattedMessage as Message } from 'react-intl'; import Helmet from 'react-helmet'; import { ScrollMotion } from 'components/ui/motion'; +import { ScrollIntoView } from 'components/ui/scroll'; import { Input, Button, Form, FormModel, FormError } from 'components/ui/form'; import { BackButton } from 'components/profile/ProfileForm'; import styles from 'components/profile/profileForm.scss'; @@ -98,6 +99,8 @@ export default class ChangeEmail extends Component {
+ {activeStep > 0 ? : null} + {this.renderStepForms()}