import { Fragment, useState } from 'react' import EmailIcon from '@material-ui/icons/Email' import SocialIcon from '@material-ui/icons/Public' import UserIcon from '@material-ui/icons/Person' import getConfig from 'next/config' import MagicLinkEmail from './MagicLinkEmail' import { Tabs, Tab } from '@material-ui/core' import './style.scss' import SocialLogin from './SocialLogin' import PasswordLogin from './PasswordLogin' const config = getConfig().publicRuntimeConfig const TabPanel = (props: any) => { const { children, value, index } = props return ( {value === index && children} ) } const SignIn = () => { let enableSmsMagicLink = true let enableEmailMagicLink = true let enableUserPassword = false let isEnabledGithub = false let isEnabledGoogle = false let isEnabledFacebook = false const [tabIndex, setTabIndex] = useState(0) const handleChange = (event: any, newValue: number) => { event.preventDefault() setTabIndex(newValue) } if (config && config.auth) { enableSmsMagicLink = config.auth.enableSmsMagicLink enableEmailMagicLink = config.auth.enableEmailMagicLink enableUserPassword = config.auth.enableUserPassword isEnabledGithub = config.auth.isEnabledGithub isEnabledGoogle = config.auth.isEnabledGoogle isEnabledFacebook = config.auth.isEnabledFacebook } const socials = [ isEnabledGithub, isEnabledGoogle, isEnabledFacebook ] const enabled = [ enableSmsMagicLink, enableEmailMagicLink, enableUserPassword, isEnabledGithub, isEnabledGoogle, isEnabledFacebook ] const enabledCount = enabled.filter(v => v).length const socialCount = socials.filter(v => v).length let component = if (enabledCount === 1) { if (enableSmsMagicLink) { component = } else if (enableEmailMagicLink) { component = } else if (enableUserPassword) { component = } else if (socialCount > 0) { component = } } else { let index = 0 const emailTab = (enableEmailMagicLink || enableSmsMagicLink) && } label="Email | SMS"/> const emailTabPanel = (enableEmailMagicLink || enableSmsMagicLink) && ;(enableEmailMagicLink || enableSmsMagicLink) && ++index const userTab = enableUserPassword && } label="UserName + Password"/> const userTabPanel = enableUserPassword && enableUserPassword && ++index const socialTab = socialCount > 0 && } label="Social"/> const socialTabPanel = socialCount > 0 && socialCount > 0 && ++index console.log(socialCount, socialTabPanel) component = ( {emailTab} {userTab} {socialTab} {emailTabPanel} {userTabPanel} {socialTabPanel} ) } return component } export default SignIn