2020-12-18 11:17:09 +01:00
|
|
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
|
|
import React from 'react';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { useHistory } from 'react-router';
|
2020-12-22 10:57:34 +01:00
|
|
|
import { useIntl } from 'react-intl';
|
|
|
|
import { Flex, Padded, Text } from '@buffetjs/core';
|
|
|
|
import { LoadingIndicator } from '@buffetjs/styles';
|
|
|
|
import { BaselineAlignment } from 'strapi-helper-plugin';
|
2020-12-18 11:17:09 +01:00
|
|
|
|
|
|
|
import BaseLogin from '../../../../../../admin/src/containers/AuthPage/components/Login/BaseLogin';
|
2020-12-22 10:57:34 +01:00
|
|
|
import Tooltip from '../../../../../../admin/src/components/Tooltip';
|
2020-12-18 11:17:09 +01:00
|
|
|
import Separator from './Separator';
|
2020-12-22 10:57:34 +01:00
|
|
|
import ProviderButton from '../../../../components/ProviderButton';
|
|
|
|
import { ProviderButtonWrapper } from '../../../../components/ProviderButton/ProviderButtonStyles';
|
|
|
|
import { useAuthProviders } from '../../../../hooks';
|
2020-12-18 11:17:09 +01:00
|
|
|
|
|
|
|
const Login = loginProps => {
|
|
|
|
const { push } = useHistory();
|
2020-12-22 10:57:34 +01:00
|
|
|
const { isLoading, providers } = useAuthProviders();
|
|
|
|
const { formatMessage } = useIntl();
|
2020-12-18 11:17:09 +01:00
|
|
|
|
2020-12-22 10:57:34 +01:00
|
|
|
const handleSeeMoreProviders = () => {
|
|
|
|
push('/auth/providers');
|
|
|
|
};
|
2020-12-18 11:17:09 +01:00
|
|
|
|
2020-12-22 10:57:34 +01:00
|
|
|
if (!isLoading && providers.length === 0) {
|
|
|
|
return <BaseLogin {...loginProps} />;
|
|
|
|
}
|
2020-12-18 11:17:09 +01:00
|
|
|
|
|
|
|
return (
|
|
|
|
<BaseLogin {...loginProps}>
|
|
|
|
<Padded top size="md">
|
|
|
|
<BaselineAlignment top size="6px" />
|
|
|
|
<Separator />
|
|
|
|
<Padded bottom size="md" />
|
2020-12-22 10:57:34 +01:00
|
|
|
{isLoading ? (
|
|
|
|
<LoadingIndicator />
|
|
|
|
) : (
|
|
|
|
<Flex justifyContent="center">
|
|
|
|
{providers.slice(0, 2).map((provider, index) => (
|
|
|
|
<Padded key={provider.id} left={index !== 0} right size="xs">
|
|
|
|
<ProviderButton provider={provider} />
|
|
|
|
</Padded>
|
|
|
|
))}
|
|
|
|
{providers.length > 2 && (
|
|
|
|
<Padded left size="xs">
|
|
|
|
<ProviderButtonWrapper
|
|
|
|
justifyContent="center"
|
|
|
|
alignItems="center"
|
|
|
|
onClick={handleSeeMoreProviders}
|
|
|
|
data-for="see-more-tooltip"
|
|
|
|
data-tip={formatMessage({
|
|
|
|
id: `Auth.form.button.login.providers.see-more`,
|
|
|
|
defaultMessage: 'See more',
|
|
|
|
})}
|
|
|
|
>
|
|
|
|
<Text>...</Text>
|
|
|
|
</ProviderButtonWrapper>
|
|
|
|
<Tooltip delayShow={0} id="see-more-tooltip" />
|
|
|
|
</Padded>
|
|
|
|
)}
|
|
|
|
</Flex>
|
|
|
|
)}
|
2020-12-18 11:17:09 +01:00
|
|
|
</Padded>
|
|
|
|
</BaseLogin>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
Login.defaultProps = {
|
|
|
|
onSubmit: e => e.preventDefault(),
|
|
|
|
requestError: null,
|
|
|
|
};
|
|
|
|
|
|
|
|
Login.propTypes = {
|
|
|
|
formErrors: PropTypes.object.isRequired,
|
|
|
|
modifiedData: PropTypes.object.isRequired,
|
|
|
|
onChange: PropTypes.func.isRequired,
|
|
|
|
onSubmit: PropTypes.func,
|
|
|
|
requestError: PropTypes.object,
|
|
|
|
};
|
|
|
|
|
|
|
|
export default Login;
|