upd: discussion general

Deskripsi;
- ui tambah diskusi
- ui edit diskusi
- ui  detail diskusi
- ui list anggota diskusi
- ui tutup diskusi
- ui arsip diskusi

No Issues
This commit is contained in:
amel
2025-03-04 12:10:38 +08:00
parent d923d10290
commit 44b1ffaef5
9 changed files with 520 additions and 14 deletions

View File

@@ -11,16 +11,14 @@ type Props = {
desc?: string
rightTopInfo?: string
onPress?: () => void
borderType: 'all' | 'bottom'
borderType: 'all' | 'bottom' | 'none'
leftBottomInfo?: React.ReactNode | string
rightBottomInfo?: React.ReactNode | string
}
export default function BorderBottomItem({ title, subtitle, icon, desc, onPress, rightTopInfo, borderType, leftBottomInfo, rightBottomInfo }: Props) {
console.log(typeof rightBottomInfo)
return (
<Pressable style={[borderType == 'bottom' ? Styles.wrapItemBorderBottom : Styles.wrapItemBorderAll]} onPressOut={onPress}>
<Pressable style={[borderType == 'bottom' ? Styles.wrapItemBorderBottom : borderType == 'all' ? Styles.wrapItemBorderAll : Styles.wrapItemBorderNone]} onPressOut={onPress}>
<View style={[Styles.rowItemsCenter]}>
{icon}
<View style={[Styles.rowSpaceBetween, { width: '85%' }]}>
@@ -43,7 +41,7 @@ export default function BorderBottomItem({ title, subtitle, icon, desc, onPress,
</View>
{desc && <Text style={[Styles.textDefault, Styles.mt05, { textAlign: 'justify' }]}>{desc}</Text>}
{
leftBottomInfo && rightBottomInfo &&
(leftBottomInfo || rightBottomInfo )&&
(
<View style={[Styles.rowSpaceBetween, Styles.mt10]}>
{

View File

@@ -0,0 +1,22 @@
import Styles from "@/constants/Styles";
import { Feather } from "@expo/vector-icons";
import { Pressable, Text, View } from "react-native";
type Props = {
value: string
onPress?: () => void
round?: boolean
}
export default function ButtonSelect({ value, onPress, round }: Props) {
return (
<View style={[Styles.mv15]}>
<Pressable onPressOut={onPress}>
<View style={[Styles.inputRoundForm, Styles.inputRoundFormRight, round && Styles.round30, Styles.pv10]}>
<Feather name="arrow-right-circle" size={20} color="black" />
<Text style={[Styles.cBlack]}>{value}</Text>
</View>
</Pressable>
</View>
)
}

View File

@@ -0,0 +1,73 @@
import { useState } from "react"
import ButtonMenuHeader from "../buttonMenuHeader"
import DrawerBottom from "../drawerBottom"
import { ToastAndroid, View } from "react-native"
import Styles from "@/constants/Styles"
import MenuItemRow from "../menuItemRow"
import { MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons"
import { router } from "expo-router"
import AlertKonfirmasi from "../alertKonfirmasi"
type Props = {
id: string | string[]
}
export default function HeaderRightDiscussionGeneralDetail({ id }: Props) {
const [isVisible, setVisible] = useState(false)
return (
<>
<ButtonMenuHeader onPress={() => { setVisible(true) }} />
<DrawerBottom animation="slide" isVisible={isVisible} setVisible={setVisible} title="Menu">
<View style={Styles.rowItemsCenter}>
<MenuItemRow
icon={<MaterialIcons name="groups" color="black" size={25} />}
title="Anggota"
onPress={() => {
setVisible(false)
router.push(`/discussion/member/${id}`)
}}
/>
<MenuItemRow
icon={<MaterialCommunityIcons name="pencil-outline" color="black" size={25} />}
title="Edit"
onPress={() => {
setVisible(false)
router.push(`/discussion/edit/${id}`)
}}
/>
<MenuItemRow
icon={<MaterialIcons name="close" color="black" size={25} />}
title="Tutup Diskusi"
onPress={() => {
AlertKonfirmasi({
title: 'Konfirmasi',
desc: 'Apakah anda yakin ingin menutup diskusi?',
onPress: () => {
setVisible(false)
ToastAndroid.show('Berhasil mengubah data', ToastAndroid.SHORT)
}
})
}}
/>
</View>
<View style={[Styles.rowItemsCenter, Styles.mt15]}>
<MenuItemRow
icon={<MaterialCommunityIcons name="archive-outline" color="black" size={25} />}
title="Arsipkan"
onPress={() => {
AlertKonfirmasi({
title: 'Konfirmasi',
desc: 'Apakah anda yakin ingin mengarsipkan diskusi?',
onPress: () => {
setVisible(false)
ToastAndroid.show('Berhasil mengubah data', ToastAndroid.SHORT)
}
})
}}
/>
</View>
</DrawerBottom>
</>
)
}