fix tabs rendering verticaly bug

This commit is contained in:
Milo Schwartz 2024-11-24 00:12:38 -05:00
parent d7c4bc43a4
commit 4be535c08d
No known key found for this signature in database
2 changed files with 21 additions and 14 deletions

View file

@ -64,11 +64,14 @@ type ResourceAuthPortalProps = {
}; };
redirect: string; redirect: string;
queryParamName: string; queryParamName: string;
numMethods: number;
}; };
export default function ResourceAuthPortal(props: ResourceAuthPortalProps) { export default function ResourceAuthPortal(props: ResourceAuthPortalProps) {
const router = useRouter(); const router = useRouter();
const numMethods = props.numMethods;
const [passwordError, setPasswordError] = useState<string | null>(null); const [passwordError, setPasswordError] = useState<string | null>(null);
const [pincodeError, setPincodeError] = useState<string | null>(null); const [pincodeError, setPincodeError] = useState<string | null>(null);
const [accessDenied, setAccessDenied] = useState<boolean>(false); const [accessDenied, setAccessDenied] = useState<boolean>(false);
@ -90,16 +93,6 @@ export default function ResourceAuthPortal(props: ResourceAuthPortalProps) {
const [activeTab, setActiveTab] = useState(getDefaultSelectedMethod()); const [activeTab, setActiveTab] = useState(getDefaultSelectedMethod());
const getColLength = () => {
let colLength = 0;
if (props.methods.pincode) colLength++;
if (props.methods.password) colLength++;
if (props.methods.sso) colLength++;
return colLength;
};
const [numMethods, setNumMethods] = useState(getColLength());
const pinForm = useForm<z.infer<typeof pinSchema>>({ const pinForm = useForm<z.infer<typeof pinSchema>>({
resolver: zodResolver(pinSchema), resolver: zodResolver(pinSchema),
defaultValues: { defaultValues: {
@ -125,9 +118,7 @@ export default function ResourceAuthPortal(props: ResourceAuthPortalProps) {
setLoadingLogin(true); setLoadingLogin(true);
api.post<AxiosResponse<AuthWithPasswordResponse>>( api.post<AxiosResponse<AuthWithPasswordResponse>>(
`/resource/${props.resource.id}/auth/pincode`, `/resource/${props.resource.id}/auth/pincode`,
{ { pincode: values.pin },
pincode: values.pin,
},
) )
.then((res) => { .then((res) => {
const session = res.data.data.session; const session = res.data.data.session;
@ -202,10 +193,17 @@ export default function ResourceAuthPortal(props: ResourceAuthPortalProps) {
<Tabs <Tabs
value={activeTab} value={activeTab}
onValueChange={setActiveTab} onValueChange={setActiveTab}
orientation="horizontal"
> >
{numMethods > 1 && ( {numMethods > 1 && (
<TabsList <TabsList
className={`grid w-full grid-cols-${numMethods}`} className={`grid w-full ${
numMethods === 1
? "grid-cols-1"
: numMethods === 2
? "grid-cols-2"
: "grid-cols-3"
}`}
> >
{props.methods.pincode && ( {props.methods.pincode && (
<TabsTrigger value="pin"> <TabsTrigger value="pin">

View file

@ -80,6 +80,14 @@ export default async function ResourceAuthPage(props: {
); );
} }
const getNumMethods = () => {
let colLength = 0;
if (authInfo.pincode) colLength++;
if (authInfo.password) colLength++;
if (authInfo.sso) colLength++;
return colLength;
};
return ( return (
<> <>
<div className="w-full max-w-md"> <div className="w-full max-w-md">
@ -97,6 +105,7 @@ export default async function ResourceAuthPage(props: {
queryParamName={ queryParamName={
process.env.RESOURCE_SESSION_QUERY_PARAM_NAME! process.env.RESOURCE_SESSION_QUERY_PARAM_NAME!
} }
numMethods={getNumMethods()}
/> />
</div> </div>
</> </>