Merge pull request 'fix : tampilan' (#29) from amalia/26-agustus-25 into join

Reviewed-on: bip/mobile-darmasaba#29
This commit is contained in:
2025-08-26 17:23:42 +08:00
9 changed files with 112 additions and 103 deletions

View File

@@ -84,9 +84,9 @@ export default function DetailAnnouncement() {
</View> </View>
: :
<> <>
<View style={Styles.rowItemsCenter}> <View style={[Styles.rowItemsCenter, { alignItems: 'flex-start' }]}>
<MaterialIcons name="campaign" size={30} color="black" style={Styles.mr05} /> <MaterialIcons name="campaign" size={30} color="black" style={Styles.mr05} />
<Text style={[Styles.textDefaultSemiBold]}>{data?.title}</Text> <Text style={[Styles.textDefaultSemiBold, Styles.w90]}>{data?.title}</Text>
</View> </View>
<View style={[Styles.mt10]}> <View style={[Styles.mt10]}>
{ {

View File

@@ -142,6 +142,7 @@ export default function BannerList() {
/> />
} }
title={index.title} title={index.title}
width={65}
/> />
))} ))}
</View> </View>

View File

@@ -9,10 +9,11 @@ import { valueTypeEventRepeat } from "@/constants/TypeEventRepeat"
import { apiGetCalendarOne, apiUpdateCalendar } from "@/lib/api" import { apiGetCalendarOne, apiUpdateCalendar } from "@/lib/api"
import { stringToDateTime } from "@/lib/fun_stringToDate" import { stringToDateTime } from "@/lib/fun_stringToDate"
import { useAuthSession } from "@/providers/AuthProvider" import { useAuthSession } from "@/providers/AuthProvider"
import { useHeaderHeight } from "@react-navigation/elements"
import { Stack, router, useLocalSearchParams } from "expo-router" import { Stack, router, useLocalSearchParams } from "expo-router"
import moment from "moment" import moment from "moment"
import { useEffect, useState } from "react" import { useEffect, useState } from "react"
import { SafeAreaView, ScrollView, View } from "react-native" import { KeyboardAvoidingView, Platform, SafeAreaView, ScrollView, View } from "react-native"
import Toast from "react-native-toast-message" import Toast from "react-native-toast-message"
export default function EditEventCalendar() { export default function EditEventCalendar() {
@@ -22,6 +23,7 @@ export default function EditEventCalendar() {
const { id, detail } = useLocalSearchParams<{ id: string, detail: string }>() const { id, detail } = useLocalSearchParams<{ id: string, detail: string }>()
const [idCalendar, setIdCalendar] = useState('') const [idCalendar, setIdCalendar] = useState('')
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
const headerHeight = useHeaderHeight()
const [error, setError] = useState({ const [error, setError] = useState({
title: false, title: false,
@@ -176,94 +178,100 @@ export default function EditEventCalendar() {
/> />
}} }}
/> />
<ScrollView> <KeyboardAvoidingView
<View style={[Styles.p15, Styles.mb100]}> behavior={Platform.OS === 'ios' ? 'padding' : undefined}
<InputForm keyboardVerticalOffset={headerHeight}
label="Nama Acara" >
type="default" <ScrollView>
placeholder="Nama Acara" <View style={[Styles.p15]}>
required <InputForm
bg="white" label="Nama Acara"
value={data.title} type="default"
onChange={(val) => validationForm("title", val)} placeholder="Nama Acara"
error={error.title} required
errorText="Nama acara tidak boleh kosong" bg="white"
/> value={data.title}
<InputDate onChange={(val) => validationForm("title", val)}
onChange={(val) => validationForm("dateStart", val)} error={error.title}
mode="date" errorText="Nama acara tidak boleh kosong"
value={data.dateStart} />
label="Tanggal Acara" <InputDate
required onChange={(val) => validationForm("dateStart", val)}
error={error.dateStart} mode="date"
errorText="Tanggal acara tidak boleh kosong" value={data.dateStart}
placeholder="Pilih Tanggal Acara" label="Tanggal Acara"
/> required
<View style={[Styles.rowSpaceBetween, Styles.mv10]}> error={error.dateStart}
<View style={[{ width: "48%" }]}> errorText="Tanggal acara tidak boleh kosong"
<InputDate placeholder="Pilih Tanggal Acara"
onChange={(val) => validationForm("timeStart", val)} />
mode="time" <View style={[Styles.rowSpaceBetween, Styles.mv10]}>
value={data.timeStart} <View style={[{ width: "48%" }]}>
label="Waktu Awal" <InputDate
required onChange={(val) => validationForm("timeStart", val)}
error={error.timeStart} mode="time"
errorText="Waktu awal tidak valid" value={data.timeStart}
placeholder="--:--" label="Waktu Awal"
/> required
</View> error={error.timeStart}
<View style={[{ width: "48%" }]}> errorText="Waktu awal tidak valid"
<InputDate placeholder="--:--"
onChange={(val) => validationForm("timeEnd", val)} />
mode="time" </View>
value={data.timeEnd} <View style={[{ width: "48%" }]}>
label="Waktu Akhir" <InputDate
required onChange={(val) => validationForm("timeEnd", val)}
error={error.timeEnd} mode="time"
errorText="Waktu akhir tidak valid" value={data.timeEnd}
placeholder="--:--" label="Waktu Akhir"
/> required
error={error.timeEnd}
errorText="Waktu akhir tidak valid"
placeholder="--:--"
/>
</View>
</View> </View>
<InputForm
label="Link Meet"
type="default"
placeholder="Link Meet"
bg="white"
value={data.linkMeet}
onChange={(val) => validationForm("linkMeet", val)}
/>
<SelectForm
bg="white"
label="Ulangi Acara"
placeholder="Ulangi Acara"
value={choose.label}
required
onPress={() => { setSelect(true) }}
/>
<InputForm
label="Jumlah Pengulangan"
type="numeric"
placeholder="Jumlah Pengulangan"
required
bg="white"
value={String(data.repeatValue)}
onChange={(val) => validationForm("repeatValue", val)}
error={error.repeatValue}
errorText="Jumlah pengulangan tidak valid"
disable={choose.val == "once"}
/>
<InputForm
label="Deskripsi"
type="default"
placeholder="Deskripsi"
bg="white"
value={data.desc}
onChange={(val) => validationForm("desc", val)}
multiline
/>
</View> </View>
<InputForm </ScrollView>
label="Link Meet" </KeyboardAvoidingView>
type="default"
placeholder="Link Meet"
bg="white"
value={data.linkMeet}
onChange={(val) => validationForm("linkMeet", val)}
/>
<SelectForm
bg="white"
label="Ulangi Acara"
placeholder="Ulangi Acara"
value={choose.label}
required
onPress={() => { setSelect(true) }}
/>
<InputForm
label="Jumlah Pengulangan"
type="numeric"
placeholder="Jumlah Pengulangan"
required
bg="white"
value={String(data.repeatValue)}
onChange={(val) => validationForm("repeatValue", val)}
error={error.repeatValue}
errorText="Jumlah pengulangan tidak valid"
disable={choose.val == "once"}
/>
<InputForm
label="Deskripsi"
type="default"
placeholder="Deskripsi"
bg="white"
value={data.desc}
onChange={(val) => validationForm("desc", val)}
multiline
/>
</View>
</ScrollView>
<ModalSelect <ModalSelect
category={"type-event-repeat"} category={"type-event-repeat"}

View File

@@ -165,12 +165,12 @@ export default function DetailEventCalendar() {
> >
<View style={[Styles.p15]}> <View style={[Styles.p15]}>
<View style={[Styles.wrapPaper, Styles.mb15]}> <View style={[Styles.wrapPaper, Styles.mb15]}>
<View style={Styles.rowItemsCenter}> <View style={[Styles.rowItemsCenter, { alignItems: 'flex-start' }]}>
<MaterialCommunityIcons name="calendar-text" size={30} color="black" style={Styles.mr10} /> <MaterialCommunityIcons name="calendar-text" size={30} color="black" style={Styles.mr10} />
{ {
loading ? loading ?
<Skeleton width={80} height={10} borderRadius={10} widthType="percent" /> <Skeleton width={80} height={10} borderRadius={10} widthType="percent" />
: <Text style={[Styles.textDefault]}>{data?.title}</Text> : <Text style={[Styles.textDefault, Styles.w90]}>{data?.title}</Text>
} }
</View> </View>
@@ -219,13 +219,13 @@ export default function DetailEventCalendar() {
<Text style={[Styles.textDefault]}>{data?.linkMeet ? data.linkMeet : '-'}</Text> <Text style={[Styles.textDefault]}>{data?.linkMeet ? data.linkMeet : '-'}</Text>
} }
</View> </View>
<View style={[Styles.rowItemsCenter, Styles.mt10]}> <View style={[Styles.rowItemsCenter, Styles.mt10, {alignItems:'flex-start'}]}>
<MaterialCommunityIcons name="card-text-outline" size={30} color="black" style={Styles.mr10} /> <MaterialCommunityIcons name="card-text-outline" size={30} color="black" style={Styles.mr10} />
{ {
loading ? loading ?
<Skeleton width={80} height={10} borderRadius={10} widthType="percent" /> <Skeleton width={80} height={10} borderRadius={10} widthType="percent" />
: :
<Text style={[Styles.textDefault]}>{data?.desc}</Text> <Text style={[Styles.textDefault, Styles.w90]}>{data?.desc}</Text>
} }
</View> </View>
</View> </View>

View File

@@ -95,7 +95,7 @@ export default function MemberDetail() {
: :
<> <>
<ImageUser src={`${ConstEnv.url_storage}/files/${data?.img}`} size="lg" /> <ImageUser src={`${ConstEnv.url_storage}/files/${data?.img}`} size="lg" />
<Text style={[Styles.textSubtitle, Styles.cWhite, Styles.mt10]}>{data?.name}</Text> <Text style={[Styles.textSubtitle, Styles.cWhite, Styles.mt10, { textAlign: 'center' }]}>{data?.name}</Text>
<Text style={[Styles.textMediumNormal, Styles.cWhite]}>{data?.role}</Text> <Text style={[Styles.textMediumNormal, Styles.cWhite]}>{data?.role}</Text>
</> </>

View File

@@ -44,7 +44,7 @@ export default function DrawerBottom({ isVisible, setVisible, title, children, a
> >
<View style={[Styles.modalContentNew, { height: tinggiFix }]}> <View style={[Styles.modalContentNew, { height: tinggiFix }]}>
<View style={[Styles.titleContainerNew]}> <View style={[Styles.titleContainerNew]}>
<Text style={Styles.textDefault}>{title}</Text> <Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.textDefault, Styles.w90]}>{title}</Text>
<Pressable onPress={() => setVisible(false)}> <Pressable onPress={() => setVisible(false)}>
<MaterialIcons name="close" color="black" size={22} /> <MaterialIcons name="close" color="black" size={22} />
</Pressable> </Pressable>
@@ -57,7 +57,7 @@ export default function DrawerBottom({ isVisible, setVisible, title, children, a
: :
<View style={[Styles.modalContentNew, { height: tinggiFix }]}> <View style={[Styles.modalContentNew, { height: tinggiFix }]}>
<View style={[Styles.titleContainerNew]}> <View style={[Styles.titleContainerNew]}>
<Text style={Styles.textDefault}>{title}</Text> <Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.textDefault, Styles.w90]}>{title}</Text>
<Pressable onPress={() => setVisible(false)}> <Pressable onPress={() => setVisible(false)}>
<MaterialIcons name="close" color="black" size={22} /> <MaterialIcons name="close" color="black" size={22} />
</Pressable> </Pressable>

View File

@@ -1,5 +1,5 @@
import Styles from "@/constants/Styles" import Styles from "@/constants/Styles";
import { Pressable, View } from "react-native" import { Pressable, View } from "react-native";
import Text from "./Text"; import Text from "./Text";
type Props = { type Props = {
@@ -17,8 +17,8 @@ export default function EventItem({ category, title, user, jamAwal, jamAkhir, on
<View style={[Styles.dividerEvent, { backgroundColor: category == 'orange' ? '#FB804C' : '#535FCA' }]} /> <View style={[Styles.dividerEvent, { backgroundColor: category == 'orange' ? '#FB804C' : '#535FCA' }]} />
<View> <View>
<Text>{jamAwal} - {jamAkhir}</Text> <Text>{jamAwal} - {jamAkhir}</Text>
<Text style={[Styles.textDefaultSemiBold, Styles.mv05]}>{title}</Text> <Text numberOfLines={1} ellipsizeMode="tail" style={[Styles.textDefaultSemiBold, Styles.mv05]}>{title}</Text>
<Text>Dibuat oleh : {user}</Text> <Text numberOfLines={1} ellipsizeMode="tail">Dibuat oleh : {user}</Text>
</View> </View>
</Pressable> </Pressable>
) )

View File

@@ -33,7 +33,7 @@ export default function ItemSectionTanggalTugas({ done, title, dateStart, dateEn
</View> </View>
<View style={[Styles.wrapPaper, Styles.mv10, Styles.p10]}> <View style={[Styles.wrapPaper, Styles.mv10, Styles.p10]}>
<View style={[Styles.rowItemsCenter]}> <View style={[Styles.rowItemsCenter, {alignItems:'flex-start'}]}>
<MaterialCommunityIcons name="file-table-outline" size={25} color="black" style={[Styles.mr10]} /> <MaterialCommunityIcons name="file-table-outline" size={25} color="black" style={[Styles.mr10]} />
<View style={[Styles.w90]}> <View style={[Styles.w90]}>
<Text style={[Styles.textDefault]}>{title}</Text> <Text style={[Styles.textDefault]}>{title}</Text>

View File

@@ -34,9 +34,9 @@ export default function SelectForm({ label, value, placeholder, onPress, info, e
<Feather name="chevron-right" size={20} color="grey" /> <Feather name="chevron-right" size={20} color="grey" />
{ {
value ? ( value ? (
<Text style={[Styles.cBlack]}>{value}</Text> <Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.cBlack, Styles.w90]}>{value}</Text>
) : ( ) : (
<Text style={[Styles.cGray]}>{placeholder}</Text> <Text numberOfLines={1} ellipsizeMode='tail' style={[Styles.cGray, Styles.w90]}>{placeholder}</Text>
) )
} }
</View> </View>