diff --git a/app/(application)/_layout.tsx b/app/(application)/_layout.tsx
index c2b02ad..347fa7f 100644
--- a/app/(application)/_layout.tsx
+++ b/app/(application)/_layout.tsx
@@ -42,6 +42,7 @@ export default function RootLayout() {
headerTitleAlign: 'center',
headerRight: () =>
}} />
+
>
diff --git a/app/(application)/division/[id]/(fitur-division)/_layout.tsx b/app/(application)/division/[id]/(fitur-division)/_layout.tsx
new file mode 100644
index 0000000..6735e5c
--- /dev/null
+++ b/app/(application)/division/[id]/(fitur-division)/_layout.tsx
@@ -0,0 +1,21 @@
+import ButtonBackHeader from "@/components/buttonBackHeader"
+import HeaderRightTaskList from "@/components/task/headerTaskList"
+import { Headers } from "@/constants/Headers"
+import { router, Stack } from "expo-router"
+import { StatusBar } from "expo-status-bar"
+
+export default function RootLayout() {
+ return (
+ <>
+
+ { router.back() }} />,
+ title: 'Tugas Divisi',
+ headerTitleAlign: 'center',
+ headerRight: () =>
+ }} />
+
+
+ >
+ )
+}
\ No newline at end of file
diff --git a/app/(application)/division/[id]/(fitur-division)/task/[detail]/add-file.tsx b/app/(application)/division/[id]/(fitur-division)/task/[detail]/add-file.tsx
new file mode 100644
index 0000000..3ca0696
--- /dev/null
+++ b/app/(application)/division/[id]/(fitur-division)/task/[detail]/add-file.tsx
@@ -0,0 +1,58 @@
+import AlertKonfirmasi from "@/components/alertKonfirmasi";
+import BorderBottomItem from "@/components/borderBottomItem";
+import ButtonBackHeader from "@/components/buttonBackHeader";
+import { ButtonForm } from "@/components/buttonForm";
+import ButtonSelect from "@/components/buttonSelect";
+import Styles from "@/constants/Styles";
+import { MaterialCommunityIcons } from "@expo/vector-icons";
+import { router, Stack, useLocalSearchParams } from "expo-router";
+import { SafeAreaView, ScrollView, Text, ToastAndroid, View } from "react-native";
+
+export default function TaskDivisionAddFile() {
+ const { id, detail } = useLocalSearchParams()
+ return (
+
+ { router.back() }} />,
+ headerTitle: 'Tambah File',
+ headerTitleAlign: 'center',
+ }}
+ />
+
+
+
+
+ File
+
+ }
+ title="image_pertama.jpg"
+ titleWeight="normal"
+ />
+ }
+ title="file_kedua.pdf"
+ titleWeight="normal"
+ />
+
+
+ {
+ AlertKonfirmasi({
+ title: 'Konfirmasi',
+ desc: 'Apakah anda yakin ingin menambahkan data?',
+ onPress: () => {
+ ToastAndroid.show('Berhasil menambahkan data', ToastAndroid.SHORT)
+ router.push('./')
+ }
+ })
+ }} />
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/app/(application)/division/[id]/(fitur-division)/task/[detail]/add-task.tsx b/app/(application)/division/[id]/(fitur-division)/task/[detail]/add-task.tsx
new file mode 100644
index 0000000..809adcf
--- /dev/null
+++ b/app/(application)/division/[id]/(fitur-division)/task/[detail]/add-task.tsx
@@ -0,0 +1,74 @@
+import AlertKonfirmasi from "@/components/alertKonfirmasi";
+import ButtonBackHeader from "@/components/buttonBackHeader";
+import { ButtonForm } from "@/components/buttonForm";
+import { InputForm } from "@/components/inputForm";
+import Styles from "@/constants/Styles";
+import dayjs from "dayjs";
+import { router, Stack, useLocalSearchParams } from "expo-router";
+import { useState } from "react";
+import { SafeAreaView, ScrollView, View, ToastAndroid, Text } from "react-native";
+import DateTimePicker, { DateType, getDefaultStyles } from "react-native-ui-datepicker";
+
+export default function TaskDivisionAddTask() {
+ const { id, detail } = useLocalSearchParams()
+ const [range, setRange] = useState<{ startDate: DateType; endDate: DateType; }>({ startDate: undefined, endDate: undefined });
+ const defaultStyles = getDefaultStyles()
+
+ const from = range.startDate
+ ? dayjs(range.startDate).format('MMM DD, YYYY')
+ : '';
+ const to = range.endDate ? dayjs(range.endDate).format('MMM DD, YYYY') : '';
+
+
+ return (
+
+ { router.back() }} />,
+ headerTitle: 'Tambah Tugas',
+ headerTitleAlign: 'center',
+ }}
+ />
+
+
+
+ setRange(param)}
+ styles={defaultStyles}
+ />
+
+
+
+ Tanggal Mulai *
+
+ {from}
+
+
+
+ Tanggal Berakhir *
+
+ {to}
+
+
+
+
+ {
+ AlertKonfirmasi({
+ title: 'Konfirmasi',
+ desc: 'Apakah anda yakin ingin menambahkan data?',
+ onPress: () => {
+ ToastAndroid.show('Berhasil menambahkan data', ToastAndroid.SHORT)
+ router.push('./')
+ }
+ })
+ }} />
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/app/(application)/division/[id]/(fitur-division)/task/[detail]/cancel.tsx b/app/(application)/division/[id]/(fitur-division)/task/[detail]/cancel.tsx
new file mode 100644
index 0000000..ac61b1c
--- /dev/null
+++ b/app/(application)/division/[id]/(fitur-division)/task/[detail]/cancel.tsx
@@ -0,0 +1,39 @@
+import AlertKonfirmasi from "@/components/alertKonfirmasi"
+import ButtonBackHeader from "@/components/buttonBackHeader"
+import { ButtonForm } from "@/components/buttonForm"
+import { InputForm } from "@/components/inputForm"
+import Styles from "@/constants/Styles"
+import { router, Stack, useLocalSearchParams } from "expo-router"
+import { SafeAreaView, ScrollView, ToastAndroid, View } from "react-native"
+
+export default function TaskDivisionCancel(){
+ const { id, detail } = useLocalSearchParams()
+ return (
+
+ { router.back() }} />,
+ headerTitle: 'Pembatalan Tugas',
+ headerTitleAlign: 'center',
+ }}
+ />
+
+
+
+ {
+ AlertKonfirmasi({
+ title: 'Konfirmasi',
+ desc: 'Apakah anda yakin ingin membatalkan tugas? Pembatalan bersifat permanen',
+ onPress: () => {
+ ToastAndroid.show('Berhasil mengubah data', ToastAndroid.SHORT)
+ router.push('./')
+ }
+ })
+ }} />
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/app/(application)/division/[id]/(fitur-division)/task/[detail]/edit.tsx b/app/(application)/division/[id]/(fitur-division)/task/[detail]/edit.tsx
new file mode 100644
index 0000000..e4173a9
--- /dev/null
+++ b/app/(application)/division/[id]/(fitur-division)/task/[detail]/edit.tsx
@@ -0,0 +1,39 @@
+import AlertKonfirmasi from "@/components/alertKonfirmasi";
+import ButtonBackHeader from "@/components/buttonBackHeader";
+import { ButtonForm } from "@/components/buttonForm";
+import { InputForm } from "@/components/inputForm";
+import Styles from "@/constants/Styles";
+import { router, Stack, useLocalSearchParams } from "expo-router";
+import { SafeAreaView, ScrollView, ToastAndroid, View } from "react-native";
+
+export default function TaskDivisionEdit() {
+ const { id, detail } = useLocalSearchParams()
+ return (
+
+ { router.back() }} />,
+ headerTitle: 'Edit Judul Tugas',
+ headerTitleAlign: 'center',
+ }}
+ />
+
+
+
+ {
+ AlertKonfirmasi({
+ title: 'Konfirmasi',
+ desc: 'Apakah anda yakin ingin mengubah data?',
+ onPress: () => {
+ ToastAndroid.show('Berhasil mengubah data', ToastAndroid.SHORT)
+ router.push('./')
+ }
+ })
+ }} />
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/app/(application)/division/[id]/(fitur-division)/task/[detail]/index.tsx b/app/(application)/division/[id]/(fitur-division)/task/[detail]/index.tsx
new file mode 100644
index 0000000..74f50a5
--- /dev/null
+++ b/app/(application)/division/[id]/(fitur-division)/task/[detail]/index.tsx
@@ -0,0 +1,35 @@
+import ButtonBackHeader from "@/components/buttonBackHeader";
+import SectionFile from "@/components/sectionFile";
+import SectionMember from "@/components/sectionMember";
+import SectionProgress from "@/components/sectionProgress";
+import SectionTanggalTugas from "@/components/sectionTanggalTugas";
+import HeaderRightTaskDetail from "@/components/task/headerTaskDetail";
+import Styles from "@/constants/Styles";
+import { router, Stack, useLocalSearchParams } from "expo-router";
+import { SafeAreaView, ScrollView, View } from "react-native";
+
+export default function DetailTaskDivision() {
+ const { id, detail } = useLocalSearchParams()
+
+
+ return (
+
+ { router.back() }} />,
+ headerTitle: 'Judul Tugas',
+ headerTitleAlign: 'center',
+ headerRight: () => ,
+ }}
+ />
+
+
+
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/app/(application)/division/[id]/(fitur-division)/task/create.tsx b/app/(application)/division/[id]/(fitur-division)/task/create.tsx
new file mode 100644
index 0000000..083b95d
--- /dev/null
+++ b/app/(application)/division/[id]/(fitur-division)/task/create.tsx
@@ -0,0 +1,44 @@
+import AlertKonfirmasi from "@/components/alertKonfirmasi";
+import ButtonBackHeader from "@/components/buttonBackHeader";
+import { ButtonForm } from "@/components/buttonForm";
+import ButtonSelect from "@/components/buttonSelect";
+import { InputForm } from "@/components/inputForm";
+import Styles from "@/constants/Styles";
+import { router, Stack, useLocalSearchParams } from "expo-router";
+import { SafeAreaView, ScrollView, ToastAndroid, View } from "react-native";
+
+export default function CreateTaskDivision() {
+ const { id } = useLocalSearchParams()
+
+ return (
+
+ { router.back() }} />,
+ headerTitle: `Tambah Tugas`,
+ headerTitleAlign: 'center',
+ }}
+ />
+
+
+
+
+
+
+ {
+ AlertKonfirmasi({
+ title: 'Konfirmasi',
+ desc: 'Apakah anda yakin ingin menambahkan data?',
+ onPress: () => {
+ ToastAndroid.show('Berhasil menambahkan data', ToastAndroid.SHORT)
+ router.push('../task?status=0')
+ }
+ })
+ }} />
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/app/(application)/division/[id]/(fitur-division)/task/index.tsx b/app/(application)/division/[id]/(fitur-division)/task/index.tsx
new file mode 100644
index 0000000..b97186b
--- /dev/null
+++ b/app/(application)/division/[id]/(fitur-division)/task/index.tsx
@@ -0,0 +1,134 @@
+import BorderBottomItem from "@/components/borderBottomItem";
+import ButtonTab from "@/components/buttonTab";
+import InputSearch from "@/components/inputSearch";
+import LabelStatus from "@/components/labelStatus";
+import PaperGridContent from "@/components/paperGridContent";
+import ProgressBar from "@/components/progressBar";
+import { ColorsStatus } from "@/constants/ColorsStatus";
+import Styles from "@/constants/Styles";
+import { AntDesign, Ionicons, MaterialCommunityIcons } from "@expo/vector-icons";
+import { router, useLocalSearchParams } from "expo-router";
+import { useState } from "react";
+import { Pressable, SafeAreaView, ScrollView, Text, View } from "react-native";
+
+export default function ListTask() {
+ const { status } = useLocalSearchParams<{ status: string }>()
+ const [isList, setList] = useState(false)
+
+ return (
+
+
+
+
+ { router.push('./task?status=0') }}
+ label="Segera"
+ icon={}
+ n={4} />
+ { router.push('./task?status=1') }}
+ label="Dikerjakan"
+ icon={}
+ n={4} />
+ { router.push('./task?status=2') }}
+ label="Selesai"
+ icon={}
+ n={4} />
+ { router.push('./task?status=3') }}
+ label="Batal"
+ icon={}
+ n={4} />
+
+
+
+ { setList(!isList) }}>
+
+
+
+ {
+ isList
+ ?
+
+ { }}
+ borderType="bottom"
+ icon={
+
+
+
+ }
+ title="Pembangunan Jembatan"
+ />
+ { }}
+ borderType="bottom"
+ icon={
+
+
+
+ }
+ title="Pembangunan Jembatan"
+ />
+ { }}
+ borderType="bottom"
+ icon={
+
+
+
+ }
+ title="Pembangunan Jembatan"
+ />
+ { }}
+ borderType="bottom"
+ icon={
+
+
+
+ }
+ title="Pembangunan Jembatan"
+ />
+
+ :
+
+
+ { router.push('./task/321') }} content="page" title="Pembangunan Jembatan" headerColor="primary">
+
+
+ 13 Februari 2025
+
+
+
+
+
+
+ 13 Februari 2025
+
+
+
+
+
+
+ 13 Februari 2025
+
+
+
+
+
+ }
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/components/division/fiturDivisionDetail.tsx b/components/division/fiturDivisionDetail.tsx
index cbb879d..7fb9336 100644
--- a/components/division/fiturDivisionDetail.tsx
+++ b/components/division/fiturDivisionDetail.tsx
@@ -3,6 +3,7 @@ import Styles from "@/constants/Styles"
import { AntDesign, MaterialIcons, SimpleLineIcons } from "@expo/vector-icons"
import { Text, View } from "react-native"
import BorderBottomItem from "../borderBottomItem"
+import { router } from "expo-router"
export default function FiturDivisionDetail() {
return (
@@ -21,6 +22,7 @@ export default function FiturDivisionDetail() {
title="Tugas"
subtitle='15 Tugas'
width={28}
+ onPress={() => {router.push('/division/123/task?status=0')}}
/>
+ { setVisible(true) }} />
+
+
+ }
+ title="Tambah Tugas"
+ onPress={() => {
+ setVisible(false)
+ router.push(`./${id}/add-task`)
+ }}
+ />
+ }
+ title="Tambah File"
+ onPress={() => {
+ setVisible(false)
+ router.push(`./${id}/add-file`)
+ }}
+ />
+
+ }
+ title="Tambah Anggota"
+ onPress={() => {
+ // setVisible(false)
+
+ }}
+ />
+
+
+
+ }
+ title="Edit"
+ onPress={() => {
+ setVisible(false)
+ router.push(`./${id}/edit`)
+ }}
+ />
+ }
+ title="Batal"
+ onPress={() => {
+ setVisible(false)
+ router.push(`./${id}/cancel`)
+ }}
+ />
+
+
+ >
+ )
+}
\ No newline at end of file
diff --git a/components/task/headerTaskList.tsx b/components/task/headerTaskList.tsx
new file mode 100644
index 0000000..0936ec9
--- /dev/null
+++ b/components/task/headerTaskList.tsx
@@ -0,0 +1,29 @@
+import Styles from "@/constants/Styles"
+import { AntDesign } from "@expo/vector-icons"
+import { useState } from "react"
+import { View } from "react-native"
+import ButtonMenuHeader from "../buttonMenuHeader"
+import DrawerBottom from "../drawerBottom"
+import MenuItemRow from "../menuItemRow"
+import { router } from "expo-router"
+
+export default function HeaderRightTaskList() {
+ const [isVisible, setVisible] = useState(false)
+ return (
+ <>
+ { setVisible(true) }} />
+
+
+ }
+ title="Tambah Tugas Divisi"
+ onPress={() => {
+ setVisible(false)
+ router.push('./task/create')
+ }}
+ />
+
+
+ >
+ )
+}
\ No newline at end of file