Merge pull request 'fix : button header' (#12) from amalia/28-jan-26 into join

Reviewed-on: http://wibugit.wibudev.com/wibu/mobile-darmasaba/pulls/12
This commit is contained in:
2026-01-28 17:43:54 +08:00
34 changed files with 811 additions and 351 deletions

View File

@@ -149,7 +149,14 @@ export default function RootLayout() {
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
title: 'Divisi', title: 'Divisi',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => <HeaderRightDivisionList /> // headerRight: () => <HeaderRightDivisionList />
header: () => (
<AppHeader title="Divisi"
showBack={true}
onPressLeft={() => router.back()}
right={<HeaderRightDivisionList />}
/>
)
}} /> }} />
<Stack.Screen name="division/[id]/(fitur-division)" options={{ headerShown: false }} /> <Stack.Screen name="division/[id]/(fitur-division)" options={{ headerShown: false }} />
<Stack.Screen name="group/index" options={{ <Stack.Screen name="group/index" options={{

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader" import AppHeader from "@/components/AppHeader"
import HeaderRightDiscussionList from "@/components/discussion/headerDiscussionList" import HeaderRightDiscussionList from "@/components/discussion/headerDiscussionList"
import HeaderRightTaskList from "@/components/task/headerTaskList" import HeaderRightTaskList from "@/components/task/headerTaskList"
import { Headers } from "@/constants/Headers" import { Headers } from "@/constants/Headers"
@@ -9,22 +9,49 @@ export default function RootLayout() {
<> <>
<Stack screenOptions={Headers.shadow}> <Stack screenOptions={Headers.shadow}>
<Stack.Screen name="task/index" options={{ <Stack.Screen name="task/index" options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
title: 'Tugas Divisi', title: 'Tugas Divisi',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => <HeaderRightTaskList /> // headerRight: () => <HeaderRightTaskList />
header: () => (
<AppHeader
title="Tugas Divisi"
showBack={true}
onPressLeft={() => router.back()}
right={
<HeaderRightTaskList />
}
/>
)
}} /> }} />
<Stack.Screen name="discussion/index" options={{ <Stack.Screen name="discussion/index" options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
title: 'Diskusi Divisi', title: 'Diskusi Divisi',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => <HeaderRightDiscussionList /> // headerRight: () => <HeaderRightDiscussionList />
header: () => (
<AppHeader
title="Diskusi Divisi"
showBack={true}
onPressLeft={() => router.back()}
right={
<HeaderRightDiscussionList />
}
/>
)
}} /> }} />
<Stack.Screen name="calendar/history" <Stack.Screen name="calendar/history"
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Riwayat Acara', headerTitle: 'Riwayat Acara',
headerTitleAlign: 'center', headerTitleAlign: 'center',
header: () => (
<AppHeader
title="Riwayat Acara"
showBack={true}
onPressLeft={() => router.back()}
/>
)
}} }}
/> />
</Stack> </Stack>

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
import ImageWithLabel from "@/components/imageWithLabel"; import ImageWithLabel from "@/components/imageWithLabel";
@@ -103,10 +103,24 @@ export default function AddMemberCalendarEvent() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Tambah Anggota', headerTitle: 'Tambah Anggota',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="update"
// disable={selectMember.length == 0 || loading ? true : false}
// onPress={() => {
// handleAddMember()
// }}
// />
// )
header: () => (
<AppHeader
title="Tambah Anggota"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="update" category="update"
disable={selectMember.length == 0 || loading ? true : false} disable={selectMember.length == 0 || loading ? true : false}
@@ -114,6 +128,8 @@ export default function AddMemberCalendarEvent() {
handleAddMember() handleAddMember()
}} }}
/> />
}
/>
) )
}} }}
/> />

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader" import AppHeader from "@/components/AppHeader"
import ButtonSaveHeader from "@/components/buttonSaveHeader" import ButtonSaveHeader from "@/components/buttonSaveHeader"
import { InputDate } from "@/components/inputDate" import { InputDate } from "@/components/inputDate"
import { InputForm } from "@/components/inputForm" import { InputForm } from "@/components/inputForm"
@@ -165,10 +165,23 @@ export default function EditEventCalendar() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Edit Acara', headerTitle: 'Edit Acara',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => // headerRight: () =>
// <ButtonSaveHeader
// disable={Object.values(error).some((val) => val == true) || data.title == "" || data.dateStart == "" || data.timeStart == "" || data.timeEnd == "" || data.repeatEventTyper == "" || loading}
// category="update-calendar"
// onPress={() => {
// handleUpdate()
// }}
// />
header: () => (
<AppHeader
title="Edit Acara"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
disable={Object.values(error).some((val) => val == true) || data.title == "" || data.dateStart == "" || data.timeStart == "" || data.timeEnd == "" || data.repeatEventTyper == "" || loading} disable={Object.values(error).some((val) => val == true) || data.title == "" || data.dateStart == "" || data.timeStart == "" || data.timeEnd == "" || data.repeatEventTyper == "" || loading}
category="update-calendar" category="update-calendar"
@@ -176,6 +189,9 @@ export default function EditEventCalendar() {
handleUpdate() handleUpdate()
}} }}
/> />
}
/>
)
}} }}
/> />
<KeyboardAvoidingView <KeyboardAvoidingView

View File

@@ -1,4 +1,5 @@
import AlertKonfirmasi from "@/components/alertKonfirmasi" import AlertKonfirmasi from "@/components/alertKonfirmasi"
import AppHeader from "@/components/AppHeader"
import BorderBottomItem from "@/components/borderBottomItem" import BorderBottomItem from "@/components/borderBottomItem"
import ButtonBackHeader from "@/components/buttonBackHeader" import ButtonBackHeader from "@/components/buttonBackHeader"
import HeaderRightCalendarDetail from "@/components/calendar/headerCalendarDetail" import HeaderRightCalendarDetail from "@/components/calendar/headerCalendarDetail"
@@ -154,10 +155,20 @@ export default function DetailEventCalendar() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Detail Acara', headerTitle: 'Detail Acara',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => (entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision ? <></> : <HeaderRightCalendarDetail id={String(data?.idCalendar)} idReminder={String(detail)} /> // headerRight: () => (entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision ? <></> : <HeaderRightCalendarDetail id={String(data?.idCalendar)} idReminder={String(detail)} />
header:()=>(
<AppHeader
title="Detail Acara"
showBack={true}
onPressLeft={() => router.back()}
right={
(entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision ? <></> : <HeaderRightCalendarDetail id={String(data?.idCalendar)} idReminder={String(detail)} />
}
/>
)
}} }}
/> />
<ScrollView <ScrollView

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
import ImageWithLabel from "@/components/imageWithLabel"; import ImageWithLabel from "@/components/imageWithLabel";
@@ -93,15 +93,29 @@ export default function CreateCalendarAddMember() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Pilih Anggota', headerTitle: 'Pilih Anggota',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="create"
// disable={selectMember.length == 0 || loading ? true : false}
// onPress={() => { handleAddMember() }}
// />
// )
header: () => (
<AppHeader
title="Pilih Anggota"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="create" category="create"
disable={selectMember.length == 0 || loading ? true : false} disable={selectMember.length == 0 || loading ? true : false}
onPress={() => { handleAddMember() }} onPress={() => { handleAddMember() }}
/> />
}
/>
) )
}} }}
/> />

View File

@@ -1,3 +1,4 @@
import AppHeader from "@/components/AppHeader";
import ButtonBackHeader from "@/components/buttonBackHeader"; import ButtonBackHeader from "@/components/buttonBackHeader";
import ButtonNextHeader from "@/components/buttonNextHeader"; import ButtonNextHeader from "@/components/buttonNextHeader";
import { InputDate } from "@/components/inputDate"; import { InputDate } from "@/components/inputDate";
@@ -7,6 +8,7 @@ import SelectForm from "@/components/selectForm";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
import { setFormCreateCalendar } from "@/lib/calendarCreate"; import { setFormCreateCalendar } from "@/lib/calendarCreate";
import { stringToDateTime } from "@/lib/fun_stringToDate"; import { stringToDateTime } from "@/lib/fun_stringToDate";
import { useHeaderHeight } from '@react-navigation/elements';
import { Stack, router, useLocalSearchParams } from "expo-router"; import { Stack, router, useLocalSearchParams } from "expo-router";
import { useState } from "react"; import { useState } from "react";
import { import {
@@ -17,7 +19,6 @@ import {
View View
} from "react-native"; } from "react-native";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
import { useHeaderHeight } from '@react-navigation/elements';
export default function CalendarDivisionCreate() { export default function CalendarDivisionCreate() {
const { id } = useLocalSearchParams<{ id: string }>() const { id } = useLocalSearchParams<{ id: string }>()
@@ -128,28 +129,44 @@ export default function CalendarDivisionCreate() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Tambah Acara", headerTitle: "Tambah Acara",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonNextHeader
// onPress={() => { handleSetData() }}
// disable={Object.values(error).some((val) => val == true) || data.title == "" || data.dateStart == "" || data.timeStart == "" || data.timeEnd == "" || data.repeatEventType == ""}
// />
// ),
header:()=>(
<AppHeader
title="Tambah Acara"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonNextHeader <ButtonNextHeader
onPress={() => { handleSetData() }} onPress={() => { handleSetData() }}
disable={Object.values(error).some((val) => val == true) || data.title == "" || data.dateStart == "" || data.timeStart == "" || data.timeEnd == "" || data.repeatEventType == ""} disable={Object.values(error).some((val) => val == true) || data.title == "" || data.dateStart == "" || data.timeStart == "" || data.timeEnd == "" || data.repeatEventType == ""}
/> />
), }
/>
)
}} }}
/> />
<KeyboardAvoidingView <KeyboardAvoidingView
behavior={Platform.OS === 'ios' ? 'padding' : undefined} behavior={Platform.OS === 'ios' ? 'padding' : undefined}
keyboardVerticalOffset={headerHeight} keyboardVerticalOffset={headerHeight}
> >
<ScrollView> <ScrollView
showsVerticalScrollIndicator={false}
style={[Styles.h100]}
>
<View style={[Styles.p15]}> <View style={[Styles.p15]}>
<InputForm <InputForm
label="Nama Acara" label="Nama Acara"

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import HeaderRightCalendarList from "@/components/calendar/headerCalendarList"; import HeaderRightCalendarList from "@/components/calendar/headerCalendarList";
import ItemDateCalendar from "@/components/calendar/itemDateCalendar"; import ItemDateCalendar from "@/components/calendar/itemDateCalendar";
import EventItem from "@/components/eventItem"; import EventItem from "@/components/eventItem";
@@ -128,16 +128,24 @@ export default function CalendarDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Kalender", headerTitle: "Kalender",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => <HeaderRightCalendarList />, // headerRight: () => <HeaderRightCalendarList />,
header: () => (
<AppHeader
title="Kalender"
showBack={true}
onPressLeft={() => router.back()}
right={<HeaderRightCalendarList />}
/>
)
}} }}
/> />
<ScrollView <ScrollView

View File

@@ -1,5 +1,5 @@
import AppHeader from "@/components/AppHeader";
import BorderBottomItem from "@/components/borderBottomItem"; import BorderBottomItem from "@/components/borderBottomItem";
import ButtonBackHeader from "@/components/buttonBackHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ButtonSelect from "@/components/buttonSelect"; import ButtonSelect from "@/components/buttonSelect";
import DrawerBottom from "@/components/drawerBottom"; import DrawerBottom from "@/components/drawerBottom";
@@ -130,16 +130,30 @@ export default function DiscussionDivisionEdit() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Edit Diskusi", headerTitle: "Edit Diskusi",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// disable={data == "" || loading}
// category="update"
// onPress={() => {
// handleUpdate();
// }}
// />
// ),
header: () => (
<AppHeader
title="Edit Diskusi"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
disable={data == "" || loading} disable={data == "" || loading}
category="update" category="update"
@@ -147,7 +161,9 @@ export default function DiscussionDivisionEdit() {
handleUpdate(); handleUpdate();
}} }}
/> />
), }
/>
)
}} }}
/> />
<LoadingOverlay visible={loading} /> <LoadingOverlay visible={loading} />

View File

@@ -1,7 +1,7 @@
import AlertKonfirmasi from "@/components/alertKonfirmasi"; import AlertKonfirmasi from "@/components/alertKonfirmasi";
import AppHeader from "@/components/AppHeader";
import BorderBottomItem from "@/components/borderBottomItem"; import BorderBottomItem from "@/components/borderBottomItem";
import BorderBottomItem2 from "@/components/borderBottomItem2"; import BorderBottomItem2 from "@/components/borderBottomItem2";
import ButtonBackHeader from "@/components/buttonBackHeader";
import HeaderRightDiscussionDetail from "@/components/discussion/headerDiscussionDetail"; import HeaderRightDiscussionDetail from "@/components/discussion/headerDiscussionDetail";
import DrawerBottom from "@/components/drawerBottom"; import DrawerBottom from "@/components/drawerBottom";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
@@ -272,23 +272,38 @@ export default function DiscussionDetail() {
<> <>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Diskusi", headerTitle: "Diskusi",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => // headerRight: () =>
// (entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision || isCreator ?
// <HeaderRightDiscussionDetail
// id={detail}
// status={data?.status}
// isActive={data?.isActive}
// /> : (<></>)
// ,
header: () => (
<AppHeader
title="Diskusi"
showBack={true}
onPressLeft={() => router.back()}
right={
(entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision || isCreator ? (entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision || isCreator ?
<HeaderRightDiscussionDetail <HeaderRightDiscussionDetail
id={detail} id={detail}
status={data?.status} status={data?.status}
isActive={data?.isActive} isActive={data?.isActive}
/> : (<></>) /> : (<></>)
, }
/>
)
}} }}
/> />
<View style={{ flex: 1 }}> <View style={{ flex: 1 }}>

View File

@@ -1,5 +1,5 @@
import AppHeader from "@/components/AppHeader"
import BorderBottomItem from "@/components/borderBottomItem" import BorderBottomItem from "@/components/borderBottomItem"
import ButtonBackHeader from "@/components/buttonBackHeader"
import ButtonSaveHeader from "@/components/buttonSaveHeader" import ButtonSaveHeader from "@/components/buttonSaveHeader"
import ButtonSelect from "@/components/buttonSelect" import ButtonSelect from "@/components/buttonSelect"
import DrawerBottom from "@/components/drawerBottom" import DrawerBottom from "@/components/drawerBottom"
@@ -91,15 +91,30 @@ export default function CreateDiscussionDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Tambah Diskusi', headerTitle: 'Tambah Diskusi',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => <ButtonSaveHeader // headerRight: () => <ButtonSaveHeader
// disable={desc == "" || loading}
// category="create"
// onPress={() => {
// handleCreate()
// }} />
header: () => (
<AppHeader
title="Tambah Diskusi"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader
disable={desc == "" || loading} disable={desc == "" || loading}
category="create" category="create"
onPress={() => { onPress={() => {
handleCreate() handleCreate()
}} /> }} />
}
/>
)
}} }}
/> />
<LoadingOverlay visible={loading} /> <LoadingOverlay visible={loading} />

View File

@@ -1,5 +1,5 @@
import AlertKonfirmasi from "@/components/alertKonfirmasi"; import AlertKonfirmasi from "@/components/alertKonfirmasi";
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import { ButtonHeader } from "@/components/buttonHeader"; import { ButtonHeader } from "@/components/buttonHeader";
import HeaderRightDocument from "@/components/document/headerDocument"; import HeaderRightDocument from "@/components/document/headerDocument";
import ItemFile from "@/components/document/itemFile"; import ItemFile from "@/components/document/itemFile";
@@ -337,27 +337,59 @@ export default function DocumentDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => // headerLeft: () =>
selectedFiles.length > 0 || dariSelectAll ? ( // selectedFiles.length > 0 || dariSelectAll ? (
// <ButtonHeader
// item={<MaterialIcons name="close" size={20} color="white" />}
// onPress={() => {
// handleBatal();
// }}
// />
// ) : (
// <ButtonBackHeader
// onPress={() => {
// router.back();
// }}
// />
// ),
headerTitle:
selectedFiles.length > 0 || dariSelectAll
? `${selectedFiles.length} item terpilih`
: "Dokumen Divisi",
headerTitleAlign: "center",
// headerRight: () =>
// selectedFiles.length > 0 || dariSelectAll ? (
// <ButtonHeader
// item={
// <MaterialIcons name="checklist-rtl" size={20} color="white" />
// }
// onPress={() => {
// handleSelectAll();
// }}
// />
// ) : (
// <HeaderRightDocument path={path} isMember={isMemberDivision} />
// ),
header: () => (
<AppHeader
title={
selectedFiles.length > 0 || dariSelectAll
? `${selectedFiles.length} item terpilih`
: "Dokumen Divisi"
}
showBack={(selectedFiles.length > 0 || dariSelectAll) ? false : true}
left={
<ButtonHeader <ButtonHeader
item={<MaterialIcons name="close" size={20} color="white" />} item={<MaterialIcons name="close" size={20} color="white" />}
onPress={() => { onPress={() => {
handleBatal(); handleBatal();
}} }}
/> />
) : ( }
<ButtonBackHeader onPressLeft={() => {
onPress={() => { (selectedFiles.length > 0 || dariSelectAll) ? handleBatal() : router.back();
router.back();
}} }}
/> right={
),
headerTitle:
selectedFiles.length > 0 || dariSelectAll
? `${selectedFiles.length} item terpilih`
: "Dokumen Divisi",
headerTitleAlign: "center",
headerRight: () =>
selectedFiles.length > 0 || dariSelectAll ? ( selectedFiles.length > 0 || dariSelectAll ? (
<ButtonHeader <ButtonHeader
item={ item={
@@ -369,7 +401,10 @@ export default function DocumentDivision() {
/> />
) : ( ) : (
<HeaderRightDocument path={path} isMember={isMemberDivision} /> <HeaderRightDocument path={path} isMember={isMemberDivision} />
), )
}
/>
)
}} }}
/> />
<ModalLoading isVisible={loadingOpen} setVisible={setLoadingOpen} /> <ModalLoading isVisible={loadingOpen} setVisible={setLoadingOpen} />

View File

@@ -1,5 +1,5 @@
import AppHeader from "@/components/AppHeader";
import BorderBottomItem from "@/components/borderBottomItem"; import BorderBottomItem from "@/components/borderBottomItem";
import ButtonBackHeader from "@/components/buttonBackHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ButtonSelect from "@/components/buttonSelect"; import ButtonSelect from "@/components/buttonSelect";
import DrawerBottom from "@/components/drawerBottom"; import DrawerBottom from "@/components/drawerBottom";
@@ -130,22 +130,36 @@ export default function TaskDivisionAddFile() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Tambah File", headerTitle: "Tambah File",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="create"
// disable={fileForm.length == 0 || loading ? true : false}
// onPress={() => { handleAddFile() }}
// />
// ),
header: () => (
<AppHeader
title="Tambah File"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="create" category="create"
disable={fileForm.length == 0 || loading ? true : false} disable={fileForm.length == 0 || loading ? true : false}
onPress={() => { handleAddFile() }} onPress={() => { handleAddFile() }}
/> />
), }
/>
)
}} }}
/> />
<ScrollView> <ScrollView>

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
import ImageWithLabel from "@/components/imageWithLabel"; import ImageWithLabel from "@/components/imageWithLabel";
@@ -97,10 +97,24 @@ export default function AddMemberTask() {
<> <>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Tambah Anggota Kegiatan', headerTitle: 'Tambah Anggota Kegiatan',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="update"
// disable={selectMember.length == 0 || loading ? true : false}
// onPress={() => {
// handleAddMember()
// }}
// />
// )
header: () => (
<AppHeader
title="Tambah Anggota Kegiatan"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="update" category="update"
disable={selectMember.length == 0 || loading ? true : false} disable={selectMember.length == 0 || loading ? true : false}
@@ -108,6 +122,8 @@ export default function AddMemberTask() {
handleAddMember() handleAddMember()
}} }}
/> />
}
/>
) )
}} }}
/> />

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import ModalAddDetailTugasTask from "@/components/task/modalAddDetailTugasTask"; import ModalAddDetailTugasTask from "@/components/task/modalAddDetailTugasTask";
@@ -141,16 +141,30 @@ export default function TaskDivisionAddTask() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Tambah Tugas", headerTitle: "Tambah Tugas",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="create"
// disable={disable || loading}
// onPress={() => {
// handleCreate();
// }}
// />
// ),
header: () => (
<AppHeader
title="Tambah Tugas"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="create" category="create"
disable={disable || loading} disable={disable || loading}
@@ -158,7 +172,9 @@ export default function TaskDivisionAddTask() {
handleCreate(); handleCreate();
}} }}
/> />
), }
/>
)
}} }}
/> />
<KeyboardAvoidingView <KeyboardAvoidingView

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
@@ -72,16 +72,30 @@ export default function TaskDivisionCancel() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Pembatalan Tugas", headerTitle: "Pembatalan Tugas",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// disable={disable || loading}
// category="cancel"
// onPress={() => {
// handleCancel();
// }}
// />
// ),
header: () => (
<AppHeader
title="Pembatalan Tugas"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
disable={disable || loading} disable={disable || loading}
category="cancel" category="cancel"
@@ -89,7 +103,9 @@ export default function TaskDivisionCancel() {
handleCancel(); handleCancel();
}} }}
/> />
), }
/>
)
}} }}
/> />
<ScrollView> <ScrollView>

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
@@ -90,22 +90,35 @@ export default function TaskDivisionEdit() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Edit Judul", headerTitle: "Edit Judul",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="update"
// disable={disable || loading}
// onPress={() => { handleUpdate() }}
// />
// ),
header: () => (
<AppHeader title="Tambah Kegiatan"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="update" category="update"
disable={disable || loading} disable={disable || loading}
onPress={() => { handleUpdate() }} onPress={() => { handleUpdate() }}
/> />
), }
/>
)
}} }}
/> />
<ScrollView> <ScrollView>

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import SectionCancel from "@/components/sectionCancel"; import SectionCancel from "@/components/sectionCancel";
import SectionProgress from "@/components/sectionProgress"; import SectionProgress from "@/components/sectionProgress";
import HeaderRightTaskDetail from "@/components/task/headerTaskDetail"; import HeaderRightTaskDetail from "@/components/task/headerTaskDetail";
@@ -100,12 +100,24 @@ export default function DetailTaskDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: loading ? 'Loading... ' : data?.title, headerTitle: loading ? 'Loading... ' : data?.title,
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => (entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision // headerRight: () => (entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision
// ? <></>
// : <HeaderRightTaskDetail id={detail} division={id} status={data?.status} isAdminDivision={isAdminDivision} />,
header: () => (
<AppHeader
title={loading ? 'Loading...' : data ? data?.title : ''}
showBack={true}
onPressLeft={() => router.back()}
right={
(entityUser.role == "user" || entityUser.role == "coadmin") && !isMemberDivision
? <></> ? <></>
: <HeaderRightTaskDetail id={detail} division={id} status={data?.status} isAdminDivision={isAdminDivision} />, : <HeaderRightTaskDetail id={detail} division={id} status={data?.status} isAdminDivision={isAdminDivision} />
}
/>
)
}} }}
/> />
<ScrollView <ScrollView

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
@@ -90,22 +90,35 @@ export default function TaskDivisionReport() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Laporan Kegiatan", headerTitle: "Laporan Kegiatan",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="update"
// disable={disable || loading}
// onPress={() => { handleUpdate() }}
// />
// ),
header: () => (
<AppHeader title="Laporan Kegiatan"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="update" category="update"
disable={disable || loading} disable={disable || loading}
onPress={() => { handleUpdate() }} onPress={() => { handleUpdate() }}
/> />
), }
/>
)
}} }}
/> />
<ScrollView> <ScrollView>

View File

@@ -1,5 +1,5 @@
import AppHeader from "@/components/AppHeader";
import BorderBottomItem from "@/components/borderBottomItem"; import BorderBottomItem from "@/components/borderBottomItem";
import ButtonBackHeader from "@/components/buttonBackHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ButtonSelect from "@/components/buttonSelect"; import ButtonSelect from "@/components/buttonSelect";
import DrawerBottom from "@/components/drawerBottom"; import DrawerBottom from "@/components/drawerBottom";
@@ -116,22 +116,36 @@ export default function CreateTaskDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
handleBack(); // handleBack();
}} // }}
/> // />
), // ),
headerTitle: `Tambah Tugas`, headerTitle: `Tambah Tugas`,
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// disable={title == "" || entitiesMember.length == 0 || taskCreate.length == 0 || loading}
// category="create"
// onPress={() => { handleCreate() }}
// />
// ),
header: () => (
<AppHeader
title="Tambah Tugas"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
disable={title == "" || entitiesMember.length == 0 || taskCreate.length == 0 || loading} disable={title == "" || entitiesMember.length == 0 || taskCreate.length == 0 || loading}
category="create" category="create"
onPress={() => { handleCreate() }} onPress={() => { handleCreate() }}
/> />
), }
/>
)
}} }}
/> />
<ScrollView> <ScrollView>

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
import ImageWithLabel from "@/components/imageWithLabel"; import ImageWithLabel from "@/components/imageWithLabel";
@@ -67,10 +67,24 @@ export default function AddMemberCreateTask() {
<> <>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Pilih Anggota', headerTitle: 'Pilih Anggota',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="create"
// disable={selectMember.length > 0 ? false : true}
// onPress={() => {
// handleAddMember()
// }}
// />
// )
header: () => (
<AppHeader
title="Pilih Anggota"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="create" category="create"
disable={selectMember.length > 0 ? false : true} disable={selectMember.length > 0 ? false : true}
@@ -78,6 +92,8 @@ export default function AddMemberCreateTask() {
handleAddMember() handleAddMember()
}} }}
/> />
}
/>
) )
}} }}
/> />

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import ModalAddDetailTugasTask from "@/components/task/modalAddDetailTugasTask"; import ModalAddDetailTugasTask from "@/components/task/modalAddDetailTugasTask";
@@ -121,22 +121,35 @@ export default function CreateTaskAddTugas() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Tambah Tugas", headerTitle: "Tambah Tugas",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// disable={disable}
// category="create"
// onPress={() => { handleCreate() }}
// />
// ),
header: () => (
<AppHeader title="Tambah Tugas"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
disable={disable} disable={disable}
category="create" category="create"
onPress={() => { handleCreate() }} onPress={() => { handleCreate() }}
/> />
), }
/>
)
}} }}
/> />
<KeyboardAvoidingView <KeyboardAvoidingView

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import ModalAddDetailTugasTask from "@/components/task/modalAddDetailTugasTask"; import ModalAddDetailTugasTask from "@/components/task/modalAddDetailTugasTask";
@@ -189,16 +189,30 @@ export default function UpdateProjectTaskDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Edit Tanggal dan Tugas", headerTitle: "Edit Tanggal dan Tugas",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// disable={disableBtn || loadingSubmit}
// category="update"
// onPress={() => {
// handleEdit()
// }}
// />
// ),
header: () => (
<AppHeader
title="Edit Tanggal dan Tugas"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
disable={disableBtn || loadingSubmit} disable={disableBtn || loadingSubmit}
category="update" category="update"
@@ -206,7 +220,9 @@ export default function UpdateProjectTaskDivision() {
handleEdit() handleEdit()
}} }}
/> />
), }
/>
)
}} }}
/> />
<KeyboardAvoidingView <KeyboardAvoidingView

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
import ImageWithLabel from "@/components/imageWithLabel"; import ImageWithLabel from "@/components/imageWithLabel";
@@ -12,7 +12,7 @@ import { useAuthSession } from "@/providers/AuthProvider";
import { AntDesign } from "@expo/vector-icons"; import { AntDesign } from "@expo/vector-icons";
import { router, Stack, useLocalSearchParams } from "expo-router"; import { router, Stack, useLocalSearchParams } from "expo-router";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { Pressable, SafeAreaView, ScrollView, View } from "react-native"; import { Pressable, ScrollView, View } from "react-native";
import Toast from "react-native-toast-message"; import Toast from "react-native-toast-message";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
@@ -100,10 +100,24 @@ export default function AddMemberDivision() {
<> <>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Tambah Anggota', headerTitle: 'Tambah Anggota',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// category="update"
// disable={selectMember.length == 0 || loading ? true : false}
// onPress={() => {
// handleAddMember()
// }}
// />
// )
header: () => (
<AppHeader
title="Tambah Anggota"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
category="update" category="update"
disable={selectMember.length == 0 || loading ? true : false} disable={selectMember.length == 0 || loading ? true : false}
@@ -111,6 +125,8 @@ export default function AddMemberDivision() {
handleAddMember() handleAddMember()
}} }}
/> />
}
/>
) )
}} }}
/> />

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import Styles from "@/constants/Styles"; import Styles from "@/constants/Styles";
@@ -66,22 +66,36 @@ export default function EditDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Edit Divisi", headerTitle: "Edit Divisi",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
// <ButtonSaveHeader
// disable={error.name || loading ? true : false}
// category="update"
// onPress={() => { handleEdit() }}
// />
// ),
header: () => (
<AppHeader
title="Edit Divisi"
showBack={true}
onPressLeft={() => router.back()}
right={
<ButtonSaveHeader <ButtonSaveHeader
disable={error.name || loading ? true : false} disable={error.name || loading ? true : false}
category="update" category="update"
onPress={() => { handleEdit() }} onPress={() => { handleEdit() }}
/> />
), }
/>
)
}} }}
/> />
<ScrollView> <ScrollView>

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader" import AppHeader from "@/components/AppHeader"
import DiscussionDivisionDetail from "@/components/division/discussionDivisionDetail" import DiscussionDivisionDetail from "@/components/division/discussionDivisionDetail"
import FileDivisionDetail from "@/components/division/fileDivisionDetail" import FileDivisionDetail from "@/components/division/fileDivisionDetail"
import FiturDivisionDetail from "@/components/division/fiturDivisionDetail" import FiturDivisionDetail from "@/components/division/fiturDivisionDetail"
@@ -57,10 +57,18 @@ export default function DetailDivisionFitur() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: loading ? 'Loading... ' : data?.name, headerTitle: loading ? 'Loading... ' : data?.name,
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => <HeaderRightDivisionDetail id={id} />, // headerRight: () => <HeaderRightDivisionDetail id={id} />,
header: () => (
<AppHeader
title={loading ? 'Loading...' : data?.name || ''}
showBack={true}
onPressLeft={() => router.back()}
right={<HeaderRightDivisionDetail id={id} />}
/>
)
}} }}
/> />
<ScrollView <ScrollView
@@ -74,10 +82,10 @@ export default function DetailDivisionFitur() {
> >
<CaraouselHome refreshing={refreshing} /> <CaraouselHome refreshing={refreshing} />
<View style={[Styles.ph15, Styles.mb100]}> <View style={[Styles.ph15, Styles.mb100]}>
<FiturDivisionDetail refreshing={refreshing}/> <FiturDivisionDetail refreshing={refreshing} />
<TaskDivisionDetail refreshing={refreshing}/> <TaskDivisionDetail refreshing={refreshing} />
<FileDivisionDetail refreshing={refreshing}/> <FileDivisionDetail refreshing={refreshing} />
<DiscussionDivisionDetail refreshing={refreshing}/> <DiscussionDivisionDetail refreshing={refreshing} />
</View> </View>
</ScrollView> </ScrollView>
</SafeAreaView> </SafeAreaView>

View File

@@ -1,6 +1,6 @@
import AlertKonfirmasi from "@/components/alertKonfirmasi" import AlertKonfirmasi from "@/components/alertKonfirmasi"
import AppHeader from "@/components/AppHeader"
import BorderBottomItem from "@/components/borderBottomItem" import BorderBottomItem from "@/components/borderBottomItem"
import ButtonBackHeader from "@/components/buttonBackHeader"
import HeaderRightDivisionInfo from "@/components/division/headerDivisionInfo" import HeaderRightDivisionInfo from "@/components/division/headerDivisionInfo"
import DrawerBottom from "@/components/drawerBottom" import DrawerBottom from "@/components/drawerBottom"
import ImageUser from "@/components/imageNew" import ImageUser from "@/components/imageNew"
@@ -164,10 +164,20 @@ export default function InformationDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Informasi Divisi', headerTitle: 'Informasi Divisi',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => ((entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision) && <HeaderRightDivisionInfo id={id} active={dataDetail?.isActive} />, // headerRight: () => ((entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision) && <HeaderRightDivisionInfo id={id} active={dataDetail?.isActive} />,
header: () => (
<AppHeader
title="Informasi Divisi"
showBack={true}
onPressLeft={() => router.back()}
right={
((entityUser.role != "user" && entityUser.role != "coadmin") || isAdminDivision) && <HeaderRightDivisionInfo id={id} active={dataDetail?.isActive} />
}
/>
)
}} }}
/> />
<ScrollView <ScrollView

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader" import AppHeader from "@/components/AppHeader"
import ReportChartDocument from "@/components/division/reportChartDocument" import ReportChartDocument from "@/components/division/reportChartDocument"
import ReportChartEvent from "@/components/division/reportChartEvent" import ReportChartEvent from "@/components/division/reportChartEvent"
import ReportChartProgress from "@/components/division/reportChartProgress" import ReportChartProgress from "@/components/division/reportChartProgress"
@@ -107,9 +107,16 @@ export default function ReportDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Laporan Divisi', headerTitle: 'Laporan Divisi',
headerTitleAlign: 'center', headerTitleAlign: 'center',
header: () => (
<AppHeader
title="Laporan Divisi"
showBack={true}
onPressLeft={() => router.back()}
/>
)
}} }}
/> />
<ScrollView> <ScrollView>

View File

@@ -1,5 +1,5 @@
import AlertKonfirmasi from "@/components/alertKonfirmasi"; import AlertKonfirmasi from "@/components/alertKonfirmasi";
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonNextHeader from "@/components/buttonNextHeader"; import ButtonNextHeader from "@/components/buttonNextHeader";
import { InputForm } from "@/components/inputForm"; import { InputForm } from "@/components/inputForm";
import ModalSelect from "@/components/modalSelect"; import ModalSelect from "@/components/modalSelect";
@@ -102,25 +102,38 @@ export default function CreateDivision() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Tambah Divisi", headerTitle: "Tambah Divisi",
headerTitleAlign: "center", headerTitleAlign: "center",
headerRight: () => ( // headerRight: () => (
<ButtonNextHeader // <ButtonNextHeader
// onPress={() => { handleCheckName() }}
// disable={loadingBtn || error.idGroup || error.name || chooseGroup.val == "" || chooseGroup.val == "null" || dataForm.name == "" || dataForm.name == "null"}
// />
// ),
header: () => (
<AppHeader title="Tambah Divisi"
showBack={true}
onPressLeft={() => router.back()}
right={<ButtonNextHeader
onPress={() => { handleCheckName() }} onPress={() => { handleCheckName() }}
disable={loadingBtn || error.idGroup || error.name || chooseGroup.val == "" || chooseGroup.val == "null" || dataForm.name == "" || dataForm.name == "null"} disable={loadingBtn || error.idGroup || error.name || chooseGroup.val == "" || chooseGroup.val == "null" || dataForm.name == "" || dataForm.name == "null"}
/>}
/> />
), )
}} }}
/> />
<ScrollView> <ScrollView
<View style={[Styles.p15, Styles.mb100]}> showsVerticalScrollIndicator={false}
style={[Styles.h100]}
>
<View style={[Styles.p15]}>
{ {
(entityUser.role == "supadmin" || entityUser.role == "developer") && (entityUser.role == "supadmin" || entityUser.role == "developer") &&
( (

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonSaveHeader from "@/components/buttonSaveHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
import Text from "@/components/Text"; import Text from "@/components/Text";
@@ -12,7 +12,7 @@ import { AntDesign } from "@expo/vector-icons";
import { StackActions, useNavigation } from "@react-navigation/native"; import { StackActions, useNavigation } from "@react-navigation/native";
import { router, Stack, useLocalSearchParams } from "expo-router"; import { router, Stack, useLocalSearchParams } from "expo-router";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { Pressable, SafeAreaView, ScrollView, View } from "react-native"; import { Pressable, ScrollView, View } from "react-native";
import Toast from "react-native-toast-message"; import Toast from "react-native-toast-message";
import { useDispatch, useSelector } from "react-redux"; import { useDispatch, useSelector } from "react-redux";
@@ -77,16 +77,29 @@ export default function CreateDivisionAddAdmin() {
<> <>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Pilih Admin Divisi', headerTitle: 'Pilih Admin Divisi',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => ( // headerRight: () => (
<ButtonSaveHeader // <ButtonSaveHeader
// category="create"
// disable={selectMember.length == 0 || loading ? true : false}
// onPress={() => {
// handleAddMember()
// }}
// />
// )
header: () => (
<AppHeader title="Pilih Admin Divisi"
showBack={true}
onPressLeft={() => router.back()}
right={<ButtonSaveHeader
category="create" category="create"
disable={selectMember.length == 0 || loading ? true : false} disable={selectMember.length == 0 || loading ? true : false}
onPress={() => { onPress={() => {
handleAddMember() handleAddMember()
}} }}
/>}
/> />
) )
}} }}

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ButtonNextHeader from "@/components/buttonNextHeader"; import ButtonNextHeader from "@/components/buttonNextHeader";
import ImageUser from "@/components/imageNew"; import ImageUser from "@/components/imageNew";
import ImageWithLabel from "@/components/imageWithLabel"; import ImageWithLabel from "@/components/imageWithLabel";
@@ -63,13 +63,23 @@ export default function CreateDivisionAddMember() {
<> <>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />, // headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
headerTitle: 'Pilih Anggota', headerTitle: 'Pilih Anggota',
headerTitleAlign: 'center', headerTitleAlign: 'center',
headerRight: () => ( // headerRight: () => (
<ButtonNextHeader // <ButtonNextHeader
// disable={selectMember.length > 0 ? false : true}
// onPress={() => { handleAddMember() }}
// />
// )
header: () => (
<AppHeader title="Pilih Anggota"
showBack={true}
onPressLeft={() => router.back()}
right={<ButtonNextHeader
disable={selectMember.length > 0 ? false : true} disable={selectMember.length > 0 ? false : true}
onPress={() => { handleAddMember() }} onPress={() => { handleAddMember() }}
/>}
/> />
) )
}} }}

View File

@@ -1,4 +1,4 @@
import ButtonBackHeader from "@/components/buttonBackHeader"; import AppHeader from "@/components/AppHeader";
import ReportChartDocument from "@/components/division/reportChartDocument"; import ReportChartDocument from "@/components/division/reportChartDocument";
import ReportChartEvent from "@/components/division/reportChartEvent"; import ReportChartEvent from "@/components/division/reportChartEvent";
import ReportChartProgress from "@/components/division/reportChartProgress"; import ReportChartProgress from "@/components/division/reportChartProgress";
@@ -125,19 +125,28 @@ export default function Report() {
<SafeAreaView> <SafeAreaView>
<Stack.Screen <Stack.Screen
options={{ options={{
headerLeft: () => ( // headerLeft: () => (
<ButtonBackHeader // <ButtonBackHeader
onPress={() => { // onPress={() => {
router.back(); // router.back();
}} // }}
/> // />
), // ),
headerTitle: "Laporan Divisi", headerTitle: "Laporan Divisi",
headerTitleAlign: "center", headerTitleAlign: "center",
header: () => (
<AppHeader title="Laporan Divisi"
showBack={true}
onPressLeft={() => router.back()}
/>
)
}} }}
/> />
<ScrollView> <ScrollView
<View style={[Styles.p15, Styles.mb100]}> showsVerticalScrollIndicator={false}
style={[Styles.h100]}
>
<View style={[Styles.p15, Styles.mb50]}>
<SelectForm <SelectForm
bg="white" bg="white"
label="Lembaga Desa" label="Lembaga Desa"

View File

@@ -1,17 +1,18 @@
import Styles from '@/constants/Styles';
import { useRouter } from 'expo-router'; import { useRouter } from 'expo-router';
import { StyleSheet, Text, View } from 'react-native'; import { Text, View } from 'react-native';
import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { useSafeAreaInsets } from 'react-native-safe-area-context';
import ButtonBackHeader from './buttonBackHeader'; import ButtonBackHeader from './buttonBackHeader';
import Styles from '@/constants/Styles';
type Props = { type Props = {
title: string; title: string;
right?: React.ReactNode; right?: React.ReactNode;
showBack?: boolean; showBack?: boolean;
onPressLeft?: () => void onPressLeft?: () => void
left?: React.ReactNode
}; };
export default function AppHeader({ title, right, showBack = true, onPressLeft }: Props) { export default function AppHeader({ title, right, showBack = true, onPressLeft, left }: Props) {
const insets = useSafeAreaInsets(); const insets = useSafeAreaInsets();
const router = useRouter(); const router = useRouter();
@@ -20,7 +21,9 @@ export default function AppHeader({ title, right, showBack = true, onPressLeft }
<View style={Styles.headerApp}> <View style={Styles.headerApp}>
{showBack ? ( {showBack ? (
<ButtonBackHeader onPress={onPressLeft} /> <ButtonBackHeader onPress={onPressLeft} />
) : ( ) :
left ? left :
(
<View style={Styles.headerSide} /> <View style={Styles.headerSide} />
)} )}

View File

@@ -570,7 +570,8 @@ const Styles = StyleSheet.create({
paddingVertical: 10, paddingVertical: 10,
position: 'absolute', position: 'absolute',
width: '100%', width: '100%',
bottom: 0 bottom: 0,
backgroundColor:'black'
}, },
animatedView: { animatedView: {
width: '100%', width: '100%',