This commit is contained in:
Khairul Hidayat 2024-11-15 08:14:27 +00:00
commit d03c11fdb1
7 changed files with 55 additions and 14 deletions

View File

@ -22,6 +22,7 @@ export default function Layout() {
drawerType: media.sm ? "front" : "permanent", drawerType: media.sm ? "front" : "permanent",
drawerStyle: { width: 250 }, drawerStyle: { width: 250 },
headerLeft: media.sm ? undefined : () => null, headerLeft: media.sm ? undefined : () => null,
headerStyle: {elevation: 0, borderBottomWidth: 0}
}} }}
> >
<Drawer.Screen <Drawer.Screen

View File

@ -13,14 +13,17 @@ import {
import { Link } from "expo-router"; import { Link } from "expo-router";
import ThemeSwitcher from "./theme-switcher"; import ThemeSwitcher from "./theme-switcher";
import UserMenuButton from "./user-menu-button"; import UserMenuButton from "./user-menu-button";
import { useSafeAreaInsets } from "react-native-safe-area-context";
export type DrawerNavigationOptions = NavProps & { export type DrawerNavigationOptions = NavProps & {
hidden?: boolean | null; hidden?: boolean | null;
}; };
const Drawer = (props: DrawerContentComponentProps) => { const Drawer = (props: DrawerContentComponentProps) => {
const insets = useSafeAreaInsets();
return ( return (
<> <View pt={insets.top} flex={1}>
<View p="$4"> <View p="$4">
<UserMenuButton /> <UserMenuButton />
</View> </View>
@ -35,7 +38,7 @@ const Drawer = (props: DrawerContentComponentProps) => {
<View px="$4" py="$2"> <View px="$4" py="$2">
<ThemeSwitcher /> <ThemeSwitcher />
</View> </View>
</> </View>
); );
}; };
@ -81,6 +84,8 @@ const DrawerItemList = ({
bg={focused ? "$background" : "$colorTransparent"} bg={focused ? "$background" : "$colorTransparent"}
onPress={onPress} onPress={onPress}
icon={drawerIcon?.({ size: 16, color: "$color", focused }) as never} icon={drawerIcon?.({ size: 16, color: "$color", focused }) as never}
size="$4"
$xs={{ size: "$5", borderRadius: 999, borderWidth: 0 }}
> >
{drawerLabel !== undefined {drawerLabel !== undefined
? drawerLabel ? drawerLabel

View File

@ -17,7 +17,7 @@ export const InputField = <T extends FieldValues>({
name={name} name={name}
render={({ field, fieldState }) => ( render={({ field, fieldState }) => (
<> <>
<Input {...field} {...props} /> <Input {...field} onChangeText={field.onChange} {...props} />
<ErrorMessage error={fieldState.error} /> <ErrorMessage error={fieldState.error} />
</> </>
)} )}

View File

@ -1,9 +1,10 @@
import React from "react"; import React from "react";
import { Platform } from "react-native";
import { import {
Adapt,
GetProps, GetProps,
ListItem, ListItem,
Popover, Popover,
styled,
withStaticProperties, withStaticProperties,
} from "tamagui"; } from "tamagui";
@ -14,7 +15,7 @@ type MenuButtonProps = GetProps<typeof Popover> & {
}; };
const MenuButtonFrame = ({ const MenuButtonFrame = ({
asChild, asChild = true,
trigger, trigger,
children, children,
width, width,
@ -24,6 +25,20 @@ const MenuButtonFrame = ({
<Popover size="$1" {...props}> <Popover size="$1" {...props}>
<Popover.Trigger asChild={asChild}>{trigger}</Popover.Trigger> <Popover.Trigger asChild={asChild}>{trigger}</Popover.Trigger>
<Adapt when="sm" platform="touch">
<Popover.Sheet modal dismissOnSnapToBottom snapPointsMode="fit">
<Popover.Sheet.Overlay
animation="quickest"
enterStyle={{ opacity: 0 }}
exitStyle={{ opacity: 0 }}
/>
<Popover.Sheet.Frame padding="$4">
{/* <Adapt.Contents /> */}
{children}
</Popover.Sheet.Frame>
</Popover.Sheet>
</Adapt>
<Popover.Content <Popover.Content
bordered bordered
enterStyle={{ y: -10, opacity: 0 }} enterStyle={{ y: -10, opacity: 0 }}
@ -37,11 +52,17 @@ const MenuButtonFrame = ({
); );
}; };
const MenuButtonItem = (props: GetProps<typeof ListItem>) => ( const MenuButtonItem = (props: GetProps<typeof ListItem>) => {
<Popover.Close asChild> if (Platform.OS === "android" || Platform.OS === "ios") {
<ListItem hoverTheme pressTheme {...props} /> return <ListItem hoverTheme pressTheme {...props} />;
</Popover.Close> }
);
return (
<Popover.Close asChild>
<ListItem hoverTheme pressTheme {...props} />
</Popover.Close>
);
};
const MenuButton = withStaticProperties(MenuButtonFrame, { const MenuButton = withStaticProperties(MenuButtonFrame, {
Item: MenuButtonItem, Item: MenuButtonItem,

View File

@ -32,6 +32,7 @@ const Modal = ({
zIndex={999} zIndex={999}
modal modal
dismissOnSnapToBottom dismissOnSnapToBottom
snapPoints={[40, 60, 0]}
// disableDrag // disableDrag
> >
<Sheet.Overlay <Sheet.Overlay

View File

@ -58,6 +58,7 @@ export default function LoginPage() {
<InputField <InputField
form={form} form={form}
name="username" name="username"
autoCapitalize="none"
onSubmitEditing={onSubmit} onSubmitEditing={onSubmit}
/> />
</FormField> </FormField>
@ -65,6 +66,7 @@ export default function LoginPage() {
<InputField <InputField
form={form} form={form}
name="password" name="password"
autoCapitalize="none"
secureTextEntry secureTextEntry
onSubmitEditing={onSubmit} onSubmitEditing={onSubmit}
/> />

View File

@ -48,25 +48,36 @@ const RegisterPage = () => {
<ErrorAlert error={register.error} /> <ErrorAlert error={register.error} />
<FormField label="Full Name"> <FormField label="Full Name">
<InputField form={form} name="name" /> <InputField form={form} name="name" autoCapitalize="words" />
</FormField> </FormField>
<FormField label="Username"> <FormField label="Username">
<InputField form={form} name="username" /> <InputField form={form} name="username" autoCapitalize="none" />
</FormField> </FormField>
<FormField label="Email Address"> <FormField label="Email Address">
<InputField form={form} name="email" /> <InputField
form={form}
name="email"
keyboardType="email-address"
autoCapitalize="none"
/>
</FormField> </FormField>
<FormField label="Password"> <FormField label="Password">
<InputField form={form} name="password" secureTextEntry /> <InputField
form={form}
name="password"
autoCapitalize="none"
secureTextEntry
/>
</FormField> </FormField>
<FormField label="Confirm Password"> <FormField label="Confirm Password">
<InputField <InputField
form={form} form={form}
name="confirmPassword" name="confirmPassword"
autoCapitalize="none"
secureTextEntry secureTextEntry
onSubmitEditing={onSubmit} onSubmitEditing={onSubmit}
/> />