grafana/public/app/features/profile/ChangePasswordPage.tsx
Shavonn Brown 874b8abcc0 ChangePassword: Rewrite change password page to react (#17811)
* ChangePassword to React, created PasswordInput component, attempting UserProvider wrapper component, adding flex to btn row

* UserAPI interface, force classes on PasswordInput, remove api call from ChangePassword

* refactored out form

* clean up

* removed unnecessary bind, added loading state and loading component to change password form

* should be OR

* arrow funcs instead of binds, inline-block instead of flex, isSaving instead of isLoading, disabled button instead of spinner

* inline-flex on the react btn

* change state instatiatiation
2019-07-03 17:02:11 +02:00

47 lines
1.3 KiB
TypeScript

import React, { PureComponent } from 'react';
import { hot } from 'react-hot-loader';
import { connect } from 'react-redux';
import { StoreState } from 'app/types';
import { NavModel } from '@grafana/data';
import { getNavModel } from 'app/core/selectors/navModel';
import { UserProvider } from 'app/core/utils/UserProvider';
import Page from 'app/core/components/Page/Page';
import { ChangePasswordForm } from './ChangePasswordForm';
export interface Props {
navModel: NavModel;
}
export class ChangePasswordPage extends PureComponent<Props> {
render() {
const { navModel } = this.props;
return (
<Page navModel={navModel}>
<UserProvider>
{({ changePassword }, states) => (
<Page.Contents>
<h3 className="page-sub-heading">Change Your Password</h3>
<ChangePasswordForm onChangePassword={changePassword} isSaving={states.changePassword} />
</Page.Contents>
)}
</UserProvider>
</Page>
);
}
}
function mapStateToProps(state: StoreState) {
return {
navModel: getNavModel(state.navIndex, `change-password`),
};
}
const mapDispatchToProps = {};
export default hot(module)(
connect(
mapStateToProps,
mapDispatchToProps
)(ChangePasswordPage)
);