Merge pull request 'upd: custom header' (#11) from amalia/27-jan-26 into join
Reviewed-on: http://wibugit.wibudev.com/wibu/mobile-darmasaba/pulls/11
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import HeaderRightAnnouncementList from "@/components/announcement/headerAnnouncementList";
|
import HeaderRightAnnouncementList from "@/components/announcement/headerAnnouncementList";
|
||||||
import ButtonBackHeader from "@/components/buttonBackHeader";
|
import AppHeader from "@/components/AppHeader";
|
||||||
import HeaderDiscussionGeneral from "@/components/discussion_general/headerDiscussionGeneral";
|
import HeaderDiscussionGeneral from "@/components/discussion_general/headerDiscussionGeneral";
|
||||||
import HeaderRightDivisionList from "@/components/division/headerDivisionList";
|
import HeaderRightDivisionList from "@/components/division/headerDivisionList";
|
||||||
import HeaderRightGroupList from "@/components/group/headerGroupList";
|
import HeaderRightGroupList from "@/components/group/headerGroupList";
|
||||||
@@ -97,54 +97,100 @@ export default function RootLayout() {
|
|||||||
<Stack.Screen name="search" options={{ title: 'Pencarian' }} />
|
<Stack.Screen name="search" options={{ title: 'Pencarian' }} />
|
||||||
<Stack.Screen name="notification" options={{
|
<Stack.Screen name="notification" options={{
|
||||||
title: 'Notifikasi',
|
title: 'Notifikasi',
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Notifikasi',
|
headerTitle: 'Notifikasi',
|
||||||
headerTitleAlign: 'center'
|
headerTitleAlign: 'center',
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Notifikasi" showBack={true} onPressLeft={() => router.back()} />
|
||||||
|
)
|
||||||
}} />
|
}} />
|
||||||
<Stack.Screen name="profile" options={{ title: 'Profile' }} />
|
<Stack.Screen name="profile" options={{ title: 'Profile' }} />
|
||||||
<Stack.Screen name="member/index" options={{
|
<Stack.Screen name="member/index" options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
title: 'Anggota',
|
title: 'Anggota',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderMemberList />
|
// headerRight: () => <HeaderMemberList />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Anggota"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={<HeaderMemberList />}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}} />
|
}} />
|
||||||
<Stack.Screen name="discussion/index" options={{
|
<Stack.Screen name="discussion/index" options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
title: 'Diskusi Umum',
|
title: 'Diskusi Umum',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderDiscussionGeneral />
|
// headerRight: () => <HeaderDiscussionGeneral />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Diskusi Umum"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={<HeaderDiscussionGeneral />}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}} />
|
}} />
|
||||||
<Stack.Screen name="project/index" options={{
|
<Stack.Screen name="project/index" options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
title: 'Kegiatan',
|
title: 'Kegiatan',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderRightProjectList />
|
// headerRight: () => <HeaderRightProjectList />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Kegiatan"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={<HeaderRightProjectList />}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}} />
|
}} />
|
||||||
<Stack.Screen name="division/index" options={{
|
<Stack.Screen name="division/index" options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
title: 'Divisi',
|
title: 'Divisi',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderRightDivisionList />
|
headerRight: () => <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={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Lembaga Desa',
|
headerTitle: 'Lembaga Desa',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderRightGroupList />
|
// headerRight: () => <HeaderRightGroupList />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Lembaga Desa"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={<HeaderRightGroupList />}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}} />
|
}} />
|
||||||
<Stack.Screen name="position/index" options={{
|
<Stack.Screen name="position/index" options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Jabatan',
|
headerTitle: 'Jabatan',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderRightPositionList />
|
// headerRight: () => <HeaderRightPositionList />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Jabatan"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={<HeaderRightPositionList />}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}} />
|
}} />
|
||||||
<Stack.Screen name="announcement/index"
|
<Stack.Screen name="announcement/index"
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Pengumuman',
|
headerTitle: 'Pengumuman',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderRightAnnouncementList />
|
// headerRight: () => <HeaderRightAnnouncementList />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Pengumuman"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={<HeaderRightAnnouncementList />}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import HeaderRightAnnouncementDetail from "@/components/announcement/headerAnnouncementDetail";
|
import HeaderRightAnnouncementDetail from "@/components/announcement/headerAnnouncementDetail";
|
||||||
|
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 Skeleton from "@/components/skeleton";
|
import Skeleton from "@/components/skeleton";
|
||||||
@@ -115,10 +116,17 @@ export default function DetailAnnouncement() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Pengumuman',
|
headerTitle: 'Pengumuman',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => entityUser.role != 'user' && entityUser.role != 'coadmin' ? <HeaderRightAnnouncementDetail id={id} /> : <></>,
|
// headerRight: () => entityUser.role != 'user' && entityUser.role != 'coadmin' ? <HeaderRightAnnouncementDetail id={id} /> : <></>,
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Pengumuman"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={entityUser.role != 'user' && entityUser.role != 'coadmin' ? <HeaderRightAnnouncementDetail id={id} /> : <></>}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView
|
<ScrollView
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -15,7 +15,7 @@ import { useAuthSession } from "@/providers/AuthProvider";
|
|||||||
import { Entypo, Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
|
import { Entypo, Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
|
||||||
import * as DocumentPicker from "expo-document-picker";
|
import * as DocumentPicker from "expo-document-picker";
|
||||||
import { router, Stack } from "expo-router";
|
import { router, Stack } from "expo-router";
|
||||||
import { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { SafeAreaView, ScrollView, StyleSheet, View } from "react-native";
|
import { SafeAreaView, ScrollView, StyleSheet, 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";
|
||||||
@@ -132,26 +132,44 @@ export default function CreateAnnouncement() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
router.back();
|
// router.back();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Tambah Pengumuman",
|
headerTitle: "Tambah Pengumuman",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
disable={disableBtn || divisionMember.length == 0 || loading ? true : false}
|
// disable={disableBtn || divisionMember.length == 0 || loading ? true : false}
|
||||||
category="create"
|
// category="create"
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
divisionMember.length == 0
|
// divisionMember.length == 0
|
||||||
? Toast.show({ type: 'small', text1: "Anda belum memilih divisi", })
|
// ? Toast.show({ type: 'small', text1: "Anda belum memilih divisi", })
|
||||||
: handleCreate();
|
// : handleCreate();
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Tambah Pengumuman"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disableBtn || divisionMember.length == 0 || loading ? true : false}
|
||||||
|
category="create"
|
||||||
|
onPress={() => {
|
||||||
|
divisionMember.length == 0
|
||||||
|
? Toast.show({ type: 'small', text1: "Anda belum memilih divisi", })
|
||||||
|
: handleCreate();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<LoadingOverlay visible={loading} />
|
<LoadingOverlay visible={loading} />
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -183,26 +183,44 @@ export default function EditAnnouncement() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
router.back();
|
// router.back();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Edit Pengumuman",
|
headerTitle: "Edit Pengumuman",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
disable={disableBtn || loading ? true : false}
|
// disable={disableBtn || loading ? true : false}
|
||||||
category="update"
|
// category="update"
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
dataMember.length == 0
|
// dataMember.length == 0
|
||||||
? Toast.show({ type: 'small', text1: "Anda belum memilih divisi", })
|
// ? Toast.show({ type: 'small', text1: "Anda belum memilih divisi", })
|
||||||
: handleEdit();
|
// : handleEdit();
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Edit Pengumuman"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disableBtn || loading ? true : false}
|
||||||
|
category="update"
|
||||||
|
onPress={() => {
|
||||||
|
dataMember.length == 0
|
||||||
|
? Toast.show({ type: 'small', text1: "Anda belum memilih divisi", })
|
||||||
|
: handleEdit();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<LoadingOverlay visible={loading} />
|
<LoadingOverlay visible={loading} />
|
||||||
|
|||||||
@@ -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 Text from "@/components/Text";
|
import Text from "@/components/Text";
|
||||||
@@ -115,19 +115,32 @@ export default function EditBanner() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
router.back();
|
// router.back();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Edit Banner",
|
headerTitle: "Edit Banner",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => <ButtonSaveHeader
|
// headerRight: () => <ButtonSaveHeader
|
||||||
disable={title == "" || error || loading ? true : false}
|
// disable={title == "" || error || loading ? true : false}
|
||||||
onPress={() => { handleUpdateEntity() }}
|
// onPress={() => { handleUpdateEntity() }}
|
||||||
category="update" />,
|
// category="update" />,
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Edit Banner"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={title == "" || error || loading ? true : false}
|
||||||
|
onPress={() => { handleUpdateEntity() }}
|
||||||
|
category="update" />
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView showsVerticalScrollIndicator={false} style={[Styles.h100]}>
|
<ScrollView showsVerticalScrollIndicator={false} style={[Styles.h100]}>
|
||||||
|
|||||||
@@ -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 Text from "@/components/Text";
|
import Text from "@/components/Text";
|
||||||
@@ -97,24 +97,40 @@ export default function CreateBanner() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
router.back();
|
// router.back();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Tambah Banner",
|
headerTitle: "Tambah Banner",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
disable={title == "" || selectedImage == undefined || error || loading ? true : false}
|
// disable={title == "" || selectedImage == undefined || error || loading ? true : false}
|
||||||
category="create"
|
// category="create"
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
handleCreateEntity();
|
// handleCreateEntity();
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Fitur"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={title == "" || selectedImage == undefined || error || loading ? true : false}
|
||||||
|
category="create"
|
||||||
|
onPress={() => {
|
||||||
|
handleCreateEntity();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView showsVerticalScrollIndicator={false} style={[Styles.h100]}>
|
<ScrollView showsVerticalScrollIndicator={false} style={[Styles.h100]}>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import AlertKonfirmasi from "@/components/alertKonfirmasi"
|
import AlertKonfirmasi from "@/components/alertKonfirmasi"
|
||||||
|
import AppHeader from "@/components/AppHeader"
|
||||||
import HeaderRightBannerList from "@/components/banner/headerBannerList"
|
import HeaderRightBannerList from "@/components/banner/headerBannerList"
|
||||||
import BorderBottomItem from "@/components/borderBottomItem"
|
import BorderBottomItem from "@/components/borderBottomItem"
|
||||||
import ButtonBackHeader from "@/components/buttonBackHeader"
|
|
||||||
import DrawerBottom from "@/components/drawerBottom"
|
import DrawerBottom from "@/components/drawerBottom"
|
||||||
import MenuItemRow from "@/components/menuItemRow"
|
import MenuItemRow from "@/components/menuItemRow"
|
||||||
import ModalLoading from "@/components/modalLoading"
|
import ModalLoading from "@/components/modalLoading"
|
||||||
@@ -108,10 +108,20 @@ export default function BannerList() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Banner',
|
headerTitle: 'Banner',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderRightBannerList />
|
// headerRight: () => <HeaderRightBannerList />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Banner"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<HeaderRightBannerList />
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ModalLoading isVisible={loadingOpen} setVisible={setLoadingOpen} />
|
<ModalLoading isVisible={loadingOpen} setVisible={setLoadingOpen} />
|
||||||
|
|||||||
@@ -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 HeaderRightDiscussionGeneralDetail from "@/components/discussion_general/headerDiscussionDetail";
|
import HeaderRightDiscussionGeneralDetail from "@/components/discussion_general/headerDiscussionDetail";
|
||||||
import DrawerBottom from "@/components/drawerBottom";
|
import DrawerBottom from "@/components/drawerBottom";
|
||||||
import ImageUser from "@/components/imageNew";
|
import ImageUser from "@/components/imageNew";
|
||||||
@@ -22,7 +22,7 @@ import { Feather, Ionicons, MaterialCommunityIcons, MaterialIcons } from "@expo/
|
|||||||
import { ref } from '@react-native-firebase/database';
|
import { ref } from '@react-native-firebase/database';
|
||||||
import { useHeaderHeight } from '@react-navigation/elements';
|
import { useHeaderHeight } from '@react-navigation/elements';
|
||||||
import { router, Stack, useLocalSearchParams } from "expo-router";
|
import { router, Stack, useLocalSearchParams } from "expo-router";
|
||||||
import { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { KeyboardAvoidingView, Platform, Pressable, RefreshControl, ScrollView, View } from "react-native";
|
import { KeyboardAvoidingView, Platform, Pressable, RefreshControl, ScrollView, View } from "react-native";
|
||||||
import Toast from "react-native-toast-message";
|
import Toast from "react-native-toast-message";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
@@ -225,10 +225,18 @@ export default function DetailDiscussionGeneral() {
|
|||||||
<>
|
<>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Diskusi',
|
headerTitle: 'Diskusi',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <HeaderRightDiscussionGeneralDetail id={id} active={data?.isActive !== undefined ? data.isActive : false} status={data?.status !== undefined ? data.status : 0} />,
|
// headerRight: () => <HeaderRightDiscussionGeneralDetail id={id} active={data?.isActive !== undefined ? data.isActive : false} status={data?.status !== undefined ? data.status : 0} />,
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Diskusi"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={<HeaderRightDiscussionGeneralDetail id={id} active={data?.isActive !== undefined ? data.isActive : false} status={data?.status !== undefined ? data.status : 0} />}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<View style={{ flex: 1 }}>
|
<View style={{ flex: 1 }}>
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -95,16 +95,32 @@ export default function AddMemberDiscussionDetail() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Tambah Anggota Diskusi',
|
headerTitle: 'Tambah Anggota Diskusi',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
category="update"
|
// category="update"
|
||||||
disable={selectMember.length == 0 || loading ? true : false}
|
// disable={selectMember.length == 0 || loading ? true : false}
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
handleAddMember()
|
// handleAddMember()
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// )
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Tambah Anggota Diskusi"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
category="update"
|
||||||
|
disable={selectMember.length == 0 || loading ? true : false}
|
||||||
|
onPress={() => {
|
||||||
|
handleAddMember()
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -166,24 +166,42 @@ export default function CreateDiscussionGeneral() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => { handleBack() }}
|
// onPress={() => { handleBack() }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Tambah Diskusi",
|
headerTitle: "Tambah Diskusi",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
category="create"
|
// category="create"
|
||||||
disable={disableBtn || loading ? true : false}
|
// disable={disableBtn || loading ? true : false}
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
entitiesMember.length == 0
|
// entitiesMember.length == 0
|
||||||
? Toast.show({ type: 'small', text1: 'Anda belum memilih anggota', })
|
// ? Toast.show({ type: 'small', text1: 'Anda belum memilih anggota', })
|
||||||
: handleCreate()
|
// : handleCreate()
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Tambah Diskusi"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
category="create"
|
||||||
|
disable={disableBtn || loading ? true : false}
|
||||||
|
onPress={() => {
|
||||||
|
entitiesMember.length == 0
|
||||||
|
? Toast.show({ type: 'small', text1: 'Anda belum memilih anggota', })
|
||||||
|
: handleCreate()
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<LoadingOverlay visible={loading} />
|
<LoadingOverlay visible={loading} />
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
import AppHeader from "@/components/AppHeader";
|
||||||
import Text from "@/components/Text";
|
import Text from "@/components/Text";
|
||||||
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";
|
||||||
@@ -165,22 +165,36 @@ export default function EditDiscussionGeneral() {
|
|||||||
<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
|
// <ButtonSaveHeader
|
||||||
disable={disableBtn || loading ? true : false}
|
// disable={disableBtn || loading ? true : false}
|
||||||
category="update"
|
// category="update"
|
||||||
onPress={() => { handleEdit() }}
|
// onPress={() => { handleEdit() }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Edit Diskusi"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disableBtn || loading ? true : false}
|
||||||
|
category="update"
|
||||||
|
onPress={() => { handleEdit() }}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<LoadingOverlay visible={loading} />
|
<LoadingOverlay visible={loading} />
|
||||||
|
|||||||
@@ -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 DrawerBottom from "@/components/drawerBottom";
|
import DrawerBottom from "@/components/drawerBottom";
|
||||||
import ImageUser from "@/components/imageNew";
|
import ImageUser from "@/components/imageNew";
|
||||||
import MenuItemRow from "@/components/menuItemRow";
|
import MenuItemRow from "@/components/menuItemRow";
|
||||||
@@ -74,9 +74,16 @@ export default function MemberDiscussionDetail() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Anggota Diskusi',
|
headerTitle: 'Anggota Diskusi',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Anggota Diskusi"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView>
|
<ScrollView>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import ButtonBackHeader from "@/components/buttonBackHeader";
|
import AppHeader from "@/components/AppHeader";
|
||||||
import { ButtonFiturMenu } from "@/components/buttonFiturMenu";
|
import { ButtonFiturMenu } from "@/components/buttonFiturMenu";
|
||||||
import Styles from "@/constants/Styles";
|
import Styles from "@/constants/Styles";
|
||||||
import { AntDesign, Entypo, Ionicons, MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons";
|
import { AntDesign, Entypo, Ionicons, MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons";
|
||||||
@@ -13,9 +13,11 @@ export default function Feature() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
|
||||||
headerTitle: 'Fitur',
|
headerTitle: 'Fitur',
|
||||||
headerTitleAlign: 'center'
|
headerTitleAlign: 'center',
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Fitur" showBack={true} onPressLeft={() => router.back()} />
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<View style={[Styles.p15]}>
|
<View style={[Styles.p15]}>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import ButtonBackHeader from "@/components/buttonBackHeader";
|
import AppHeader from "@/components/AppHeader";
|
||||||
import ImageUser from "@/components/imageNew";
|
import ImageUser from "@/components/imageNew";
|
||||||
import ItemDetailMember from "@/components/itemDetailMember";
|
import ItemDetailMember from "@/components/itemDetailMember";
|
||||||
import LabelStatus from "@/components/labelStatus";
|
import LabelStatus from "@/components/labelStatus";
|
||||||
@@ -11,7 +11,7 @@ import { valueRoleUser } from "@/constants/RoleUser";
|
|||||||
import Styles from "@/constants/Styles";
|
import Styles from "@/constants/Styles";
|
||||||
import { apiGetProfile } from "@/lib/api";
|
import { apiGetProfile } from "@/lib/api";
|
||||||
import { router, Stack, useLocalSearchParams } from "expo-router";
|
import { router, Stack, useLocalSearchParams } from "expo-router";
|
||||||
import { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { Pressable, RefreshControl, SafeAreaView, ScrollView, View } from "react-native";
|
import { Pressable, RefreshControl, SafeAreaView, ScrollView, View } from "react-native";
|
||||||
import ImageViewing from 'react-native-image-viewing';
|
import ImageViewing from 'react-native-image-viewing';
|
||||||
import Toast from "react-native-toast-message";
|
import Toast from "react-native-toast-message";
|
||||||
@@ -77,11 +77,19 @@ export default function MemberDetail() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Anggota',
|
headerTitle: 'Anggota',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => (entityUser.role != "user") && isEdit ? <HeaderRightMemberDetail active={data?.isActive} id={id} /> : <></>,
|
// headerRight: () => (entityUser.role != "user") && isEdit ? <HeaderRightMemberDetail active={data?.isActive} id={id} /> : <></>,
|
||||||
headerShadowVisible: false
|
header: () => (
|
||||||
|
<AppHeader title="Anggota"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
(entityUser.role != "user") && isEdit ? <HeaderRightMemberDetail active={data?.isActive} id={id} /> : <></>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView
|
<ScrollView
|
||||||
|
|||||||
@@ -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 ModalSelect from "@/components/modalSelect";
|
import ModalSelect from "@/components/modalSelect";
|
||||||
@@ -209,22 +209,35 @@ export default function CreateMember() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
router.back();
|
// router.back();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Tambah Anggota",
|
headerTitle: "Tambah Anggota",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
disable={disableBtn || loading}
|
// disable={disableBtn || loading}
|
||||||
category="create"
|
// category="create"
|
||||||
onPress={() => { handleCreate() }}
|
// onPress={() => { handleCreate() }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Anggota"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disableBtn || loading}
|
||||||
|
category="create"
|
||||||
|
onPress={() => { handleCreate() }}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<KeyboardAvoidingView
|
<KeyboardAvoidingView
|
||||||
|
|||||||
@@ -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 ModalSelect from "@/components/modalSelect";
|
import ModalSelect from "@/components/modalSelect";
|
||||||
@@ -239,24 +239,40 @@ export default function EditMember() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
router.back();
|
// router.back();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Edit Anggota",
|
headerTitle: "Edit Anggota",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
disable={disableBtn || loading}
|
// disable={disableBtn || loading}
|
||||||
category="update"
|
// category="update"
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
handleEdit()
|
// handleEdit()
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Edit Anggota"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disableBtn || loading}
|
||||||
|
category="update"
|
||||||
|
onPress={() => {
|
||||||
|
handleEdit()
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -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 ItemDetailMember from "@/components/itemDetailMember";
|
import ItemDetailMember from "@/components/itemDetailMember";
|
||||||
import Text from "@/components/Text";
|
import Text from "@/components/Text";
|
||||||
@@ -25,20 +25,37 @@ export default function Profile() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
|
||||||
headerTitle: 'Profile',
|
headerTitle: 'Profile',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerShadowVisible: false,
|
header: () => (
|
||||||
headerRight: () => <ButtonHeader
|
<AppHeader
|
||||||
item={<AntDesign name="logout" size={20} color="white" />}
|
title="Profile"
|
||||||
onPress={() => {
|
showBack={true}
|
||||||
AlertKonfirmasi({
|
onPressLeft={() => router.back()}
|
||||||
title: 'Keluar',
|
right={
|
||||||
desc: 'Apakah anda yakin ingin keluar?',
|
<ButtonHeader
|
||||||
onPress: () => { signOut() }
|
item={<AntDesign name="logout" size={20} color="white" />}
|
||||||
})
|
onPress={() => {
|
||||||
}}
|
AlertKonfirmasi({
|
||||||
/>
|
title: 'Keluar',
|
||||||
|
desc: 'Apakah anda yakin ingin keluar?',
|
||||||
|
onPress: () => { signOut() }
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
// headerRight: () => <ButtonHeader
|
||||||
|
// item={<AntDesign name="logout" size={20} color="white" />}
|
||||||
|
// onPress={() => {
|
||||||
|
// AlertKonfirmasi({
|
||||||
|
// title: 'Keluar',
|
||||||
|
// desc: 'Apakah anda yakin ingin keluar?',
|
||||||
|
// onPress: () => { signOut() }
|
||||||
|
// })
|
||||||
|
// }}
|
||||||
|
// />
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView style={[Styles.h100]}>
|
<ScrollView style={[Styles.h100]}>
|
||||||
|
|||||||
@@ -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,13 +130,27 @@ export default function ProjectAddFile() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Tambah File',
|
headerTitle: 'Tambah File',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <ButtonSaveHeader
|
// headerRight: () => <ButtonSaveHeader
|
||||||
disable={fileForm.length == 0 || loading ? true : false}
|
// disable={fileForm.length == 0 || loading ? true : false}
|
||||||
category="create"
|
// category="create"
|
||||||
onPress={() => { handleAddFile() }} />
|
// onPress={() => { handleAddFile() }} />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Tambah File"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={fileForm.length == 0 || loading ? true : false}
|
||||||
|
category="create"
|
||||||
|
onPress={() => { handleAddFile() }}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView>
|
<ScrollView>
|
||||||
|
|||||||
@@ -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,16 +97,32 @@ export default function AddMemberProject() {
|
|||||||
<>
|
<>
|
||||||
<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
|
// <ButtonSaveHeader
|
||||||
category="update"
|
// category="update"
|
||||||
disable={selectMember.length == 0 || loading ? true : false}
|
// disable={selectMember.length == 0 || loading ? true : false}
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
handleAddMember()
|
// handleAddMember()
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// )
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Tambah Anggota Kegiatan"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
category="update"
|
||||||
|
disable={selectMember.length == 0 || loading ? true : false}
|
||||||
|
onPress={() => {
|
||||||
|
handleAddMember()
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -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 ModalAddDetailTugasProject from "@/components/project/modalAddDetailTugasProject";
|
import ModalAddDetailTugasProject from "@/components/project/modalAddDetailTugasProject";
|
||||||
@@ -136,22 +136,36 @@ export default function ProjectAddTask() {
|
|||||||
<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
|
// <ButtonSaveHeader
|
||||||
disable={disable || loading}
|
// disable={disable || loading}
|
||||||
category="create"
|
// category="create"
|
||||||
onPress={() => { handleCreate() }}
|
// onPress={() => { handleCreate() }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Tambah Tugas"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disable || loading}
|
||||||
|
category="create"
|
||||||
|
onPress={() => { handleCreate() }}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<KeyboardAvoidingView
|
<KeyboardAvoidingView
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -6,7 +6,7 @@ import { apiCancelProject } from "@/lib/api";
|
|||||||
import { setUpdateProject } from "@/lib/projectUpdate";
|
import { setUpdateProject } from "@/lib/projectUpdate";
|
||||||
import { useAuthSession } from "@/providers/AuthProvider";
|
import { useAuthSession } from "@/providers/AuthProvider";
|
||||||
import { router, Stack, useLocalSearchParams } from "expo-router";
|
import { router, Stack, useLocalSearchParams } from "expo-router";
|
||||||
import { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { SafeAreaView, ScrollView, View } from "react-native";
|
import { SafeAreaView, 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";
|
||||||
@@ -68,24 +68,40 @@ export default function ProjectCancel() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
router.back();
|
// router.back();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Pembatalan Kegiatan",
|
headerTitle: "Pembatalan Kegiatan",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
disable={disable || loading}
|
// disable={disable || loading}
|
||||||
category="cancel"
|
// category="cancel"
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
handleCancel();
|
// handleCancel();
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Pembatalan Kegiatan"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disable || loading}
|
||||||
|
category="cancel"
|
||||||
|
onPress={() => {
|
||||||
|
handleCancel();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView
|
<ScrollView
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -43,7 +43,7 @@ export default function EditProject() {
|
|||||||
setJudul(val)
|
setJudul(val)
|
||||||
if (val == "" || val == "null") {
|
if (val == "" || val == "null") {
|
||||||
setError(true)
|
setError(true)
|
||||||
}else{
|
} else {
|
||||||
setError(false)
|
setError(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -89,22 +89,36 @@ export default function EditProject() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
router.back();
|
// router.back();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Edit Judul Kegiatan",
|
headerTitle: "Edit Judul Kegiatan",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
disable={disable || loading}
|
// disable={disable || loading}
|
||||||
category="update"
|
// category="update"
|
||||||
onPress={() => { handleUpdate() }}
|
// onPress={() => { handleUpdate() }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Edit Judul Kegiatan"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disable || loading}
|
||||||
|
category="update"
|
||||||
|
onPress={() => { handleUpdate() }}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView>
|
<ScrollView>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import ButtonBackHeader from "@/components/buttonBackHeader";
|
import AppHeader from "@/components/AppHeader";
|
||||||
import HeaderRightProjectDetail from "@/components/project/headerProjectDetail";
|
import HeaderRightProjectDetail from "@/components/project/headerProjectDetail";
|
||||||
import SectionFile from "@/components/project/sectionFile";
|
import SectionFile from "@/components/project/sectionFile";
|
||||||
import SectionLink from "@/components/project/sectionLink";
|
import SectionLink from "@/components/project/sectionLink";
|
||||||
@@ -11,7 +11,7 @@ import Styles from "@/constants/Styles";
|
|||||||
import { apiGetProjectOne } from "@/lib/api";
|
import { apiGetProjectOne } from "@/lib/api";
|
||||||
import { useAuthSession } from "@/providers/AuthProvider";
|
import { useAuthSession } from "@/providers/AuthProvider";
|
||||||
import { router, Stack, useLocalSearchParams } from "expo-router";
|
import { router, Stack, useLocalSearchParams } from "expo-router";
|
||||||
import { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { RefreshControl, SafeAreaView, ScrollView, View } from "react-native";
|
import { RefreshControl, SafeAreaView, ScrollView, View } from "react-native";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
@@ -94,10 +94,20 @@ export default function DetailProject() {
|
|||||||
<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") && !isMember ? null : <HeaderRightProjectDetail id={id} status={data?.status} />,
|
// headerRight: () => (entityUser.role == "user" || entityUser.role == "coadmin") && !isMember ? null : <HeaderRightProjectDetail id={id} status={data?.status} />,
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title={loading ? 'Loading...' : data && data?.title || ''}
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
(entityUser.role == "user" || entityUser.role == "coadmin") && !isMember ? null : <HeaderRightProjectDetail id={id} status={data?.status} />
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView
|
<ScrollView
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -89,22 +89,36 @@ export default function ReportProject() {
|
|||||||
<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
|
// <ButtonSaveHeader
|
||||||
disable={disable || loading}
|
// disable={disable || loading}
|
||||||
category="update"
|
// category="update"
|
||||||
onPress={() => { handleUpdate() }}
|
// onPress={() => { handleUpdate() }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Laporan Kegiatan"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disable || loading}
|
||||||
|
category="update"
|
||||||
|
onPress={() => { handleUpdate() }}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView
|
<ScrollView
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -193,24 +193,39 @@ export default function CreateProject() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => (
|
// headerLeft: () => (
|
||||||
<ButtonBackHeader
|
// <ButtonBackHeader
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
handleBack();
|
// handleBack();
|
||||||
}}
|
// }}
|
||||||
/>
|
// />
|
||||||
),
|
// ),
|
||||||
headerTitle: "Tambah Kegiatan",
|
headerTitle: "Tambah Kegiatan",
|
||||||
headerTitleAlign: "center",
|
headerTitleAlign: "center",
|
||||||
headerRight: () => (
|
// headerRight: () => (
|
||||||
<ButtonSaveHeader
|
// <ButtonSaveHeader
|
||||||
disable={disableBtn || loading}
|
// disable={disableBtn || loading}
|
||||||
category="create"
|
// category="create"
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
handleCreate()
|
// handleCreate()
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Tambah Kegiatan"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disableBtn || loading}
|
||||||
|
category="create"
|
||||||
|
onPress={() => {
|
||||||
|
handleCreate()
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<ScrollView
|
<ScrollView
|
||||||
|
|||||||
@@ -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";
|
||||||
@@ -11,8 +11,8 @@ import { setMemberChoose } from "@/lib/memberChoose";
|
|||||||
import { useAuthSession } from "@/providers/AuthProvider";
|
import { useAuthSession } from "@/providers/AuthProvider";
|
||||||
import { AntDesign } from "@expo/vector-icons";
|
import { AntDesign } from "@expo/vector-icons";
|
||||||
import { router, Stack } from "expo-router";
|
import { router, Stack } from "expo-router";
|
||||||
import { useEffect, useState } from "react";
|
import React, { 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";
|
||||||
|
|
||||||
@@ -74,16 +74,31 @@ export default function AddMemberCreateProject() {
|
|||||||
<>
|
<>
|
||||||
<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
|
// <ButtonSaveHeader
|
||||||
category="create"
|
// category="create"
|
||||||
disable={selectMember.length > 0 ? false : true}
|
// disable={selectMember.length > 0 ? false : true}
|
||||||
onPress={() => {
|
// onPress={() => {
|
||||||
handleAddMember()
|
// handleAddMember()
|
||||||
}}
|
// }}
|
||||||
|
// />
|
||||||
|
// )
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Pilih Anggota"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
category="create"
|
||||||
|
disable={selectMember.length > 0 ? false : true}
|
||||||
|
onPress={() => {
|
||||||
|
handleAddMember()
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -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 ModalAddDetailTugasProject from "@/components/project/modalAddDetailTugasProject";
|
import ModalAddDetailTugasProject from "@/components/project/modalAddDetailTugasProject";
|
||||||
@@ -12,7 +12,7 @@ import { router, Stack } from "expo-router";
|
|||||||
import 'intl';
|
import 'intl';
|
||||||
import 'intl/locale-data/jsonp/id';
|
import 'intl/locale-data/jsonp/id';
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import {
|
import {
|
||||||
KeyboardAvoidingView,
|
KeyboardAvoidingView,
|
||||||
Platform,
|
Platform,
|
||||||
@@ -122,22 +122,36 @@ export default function CreateProjectAddTask() {
|
|||||||
<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
|
// <ButtonSaveHeader
|
||||||
disable={disable}
|
// disable={disable}
|
||||||
category="create"
|
// category="create"
|
||||||
onPress={() => { handleCreate() }}
|
// onPress={() => { handleCreate() }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Tambah Tugas"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disable}
|
||||||
|
category="create"
|
||||||
|
onPress={() => { handleCreate() }}
|
||||||
|
/>
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
),
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<KeyboardAvoidingView
|
<KeyboardAvoidingView
|
||||||
|
|||||||
@@ -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 ModalAddDetailTugasProject from "@/components/project/modalAddDetailTugasProject";
|
import ModalAddDetailTugasProject from "@/components/project/modalAddDetailTugasProject";
|
||||||
@@ -14,7 +14,7 @@ import { router, Stack, useLocalSearchParams } from "expo-router";
|
|||||||
import 'intl';
|
import 'intl';
|
||||||
import 'intl/locale-data/jsonp/id';
|
import 'intl/locale-data/jsonp/id';
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { KeyboardAvoidingView, Platform, Pressable, SafeAreaView, ScrollView, View } from "react-native";
|
import { KeyboardAvoidingView, Platform, Pressable, SafeAreaView, ScrollView, View } from "react-native";
|
||||||
import Toast from "react-native-toast-message";
|
import Toast from "react-native-toast-message";
|
||||||
import DateTimePicker, { DateType } from "react-native-ui-datepicker";
|
import DateTimePicker, { DateType } from "react-native-ui-datepicker";
|
||||||
@@ -172,14 +172,28 @@ export default function UpdateProjectTask() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
// headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
||||||
headerTitle: 'Edit Tanggal dan Tugas',
|
headerTitle: 'Edit Tanggal dan Tugas',
|
||||||
headerTitleAlign: 'center',
|
headerTitleAlign: 'center',
|
||||||
headerRight: () => <ButtonSaveHeader
|
// headerRight: () => <ButtonSaveHeader
|
||||||
disable={disableBtn || loadingSubmit}
|
// disable={disableBtn || loadingSubmit}
|
||||||
category="update"
|
// category="update"
|
||||||
onPress={() => { handleEdit() }}
|
// onPress={() => { handleEdit() }}
|
||||||
/>
|
// />
|
||||||
|
header: () => (
|
||||||
|
<AppHeader
|
||||||
|
title="Edit Tanggal dan Tugas"
|
||||||
|
showBack={true}
|
||||||
|
onPressLeft={() => router.back()}
|
||||||
|
right={
|
||||||
|
<ButtonSaveHeader
|
||||||
|
disable={disableBtn || loadingSubmit}
|
||||||
|
category="update"
|
||||||
|
onPress={() => { handleEdit() }}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<KeyboardAvoidingView
|
<KeyboardAvoidingView
|
||||||
|
|||||||
@@ -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 ImageUser from "@/components/imageNew";
|
import ImageUser from "@/components/imageNew";
|
||||||
import InputSearch from "@/components/inputSearch";
|
import InputSearch from "@/components/inputSearch";
|
||||||
import Text from '@/components/Text';
|
import Text from '@/components/Text';
|
||||||
@@ -82,9 +82,11 @@ export default function Search() {
|
|||||||
<SafeAreaView>
|
<SafeAreaView>
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
options={{
|
options={{
|
||||||
headerLeft: () => <ButtonBackHeader onPress={() => { router.back() }} />,
|
|
||||||
headerTitle: 'Pencarian',
|
headerTitle: 'Pencarian',
|
||||||
headerTitleAlign: 'center'
|
headerTitleAlign: 'center',
|
||||||
|
header: () => (
|
||||||
|
<AppHeader title="Pencarian" showBack={true} onPressLeft={() => router.back()} />
|
||||||
|
)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<View style={[Styles.p15]}>
|
<View style={[Styles.p15]}>
|
||||||
|
|||||||
33
components/AppHeader.tsx
Normal file
33
components/AppHeader.tsx
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import { useRouter } from 'expo-router';
|
||||||
|
import { StyleSheet, Text, View } from 'react-native';
|
||||||
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||||
|
import ButtonBackHeader from './buttonBackHeader';
|
||||||
|
import Styles from '@/constants/Styles';
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
title: string;
|
||||||
|
right?: React.ReactNode;
|
||||||
|
showBack?: boolean;
|
||||||
|
onPressLeft?: () => void
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function AppHeader({ title, right, showBack = true, onPressLeft }: Props) {
|
||||||
|
const insets = useSafeAreaInsets();
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={[Styles.headerContainer, { paddingTop: insets.top }]}>
|
||||||
|
<View style={Styles.headerApp}>
|
||||||
|
{showBack ? (
|
||||||
|
<ButtonBackHeader onPress={onPressLeft} />
|
||||||
|
) : (
|
||||||
|
<View style={Styles.headerSide} />
|
||||||
|
)}
|
||||||
|
|
||||||
|
<Text style={Styles.headerTitle}>{title}</Text>
|
||||||
|
|
||||||
|
<View style={Styles.headerSide}>{right}</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -631,7 +631,27 @@ const Styles = StyleSheet.create({
|
|||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
opacity: 0,
|
opacity: 0,
|
||||||
zIndex: -1,
|
zIndex: -1,
|
||||||
}
|
},
|
||||||
|
headerContainer: {
|
||||||
|
backgroundColor: '#19345E',
|
||||||
|
},
|
||||||
|
headerApp: {
|
||||||
|
// height: 40,
|
||||||
|
flexDirection: 'row',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
paddingHorizontal: 16,
|
||||||
|
paddingVertical: 3
|
||||||
|
},
|
||||||
|
headerTitle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: '600',
|
||||||
|
},
|
||||||
|
headerSide: {
|
||||||
|
width: 40,
|
||||||
|
alignItems: 'center',
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
export default Styles;
|
export default Styles;
|
||||||
Reference in New Issue
Block a user