amalia/08-jun-26 #56

Merged
amaliadwiy merged 6 commits from amalia/08-jun-26 into join 2026-06-08 17:27:24 +08:00
9 changed files with 208 additions and 25 deletions
Showing only changes of commit a5c58d0de2 - Show all commits

View File

@@ -77,6 +77,22 @@ export default function AddMemberDivision() {
}
}
const availableData = data.filter((item: any) => !dataOld.some((i: any) => i.idUser == item.id))
const isAllSelected = availableData.length > 0 && availableData.every((item: any) =>
selectMember.some((s: any) => s.idUser == item.id)
)
function handleSelectAll() {
if (isAllSelected) {
setSelectMember([])
} else {
const newMembers = availableData
.filter((item: any) => !selectMember.some((s: any) => s.idUser == item.id))
.map((item: any) => ({ idUser: item.id, name: item.name, img: item.img }))
setSelectMember([...selectMember, ...newMembers])
}
}
async function handleAddMember() {
try {
setLoading(true)
@@ -141,7 +157,7 @@ export default function AddMemberDivision() {
selectMember.length > 0
?
<View>
<ScrollView horizontal style={[Styles.mb10, Styles.pv10]} showsHorizontalScrollIndicator={false}>
<ScrollView horizontal style={[Styles.mb05, Styles.pv10]} showsHorizontalScrollIndicator={false}>
{
selectMember.map((item: any, index: any) => (
<ImageWithLabel
@@ -162,6 +178,15 @@ export default function AddMemberDivision() {
showsVerticalScrollIndicator={false}
>
{availableData.length > 0 && (
<Pressable
style={[Styles.itemSelectModal, { borderColor: colors.icon + '20', paddingTop: 0 }]}
onPress={handleSelectAll}
>
<Text style={[Styles.textMediumSemiBold]}>{isAllSelected ? 'Batalkan Semua' : 'Pilih Semua'}</Text>
{isAllSelected && <AntDesign name="check" size={20} color={colors.text} />}
</Pressable>
)}
{
data.length > 0 ?
data.map((item: any, index: any) => {

View File

@@ -9,8 +9,8 @@ import Styles from "@/constants/Styles";
import { apiGetUser } from "@/lib/api";
import { setFormCreateDivision } from "@/lib/divisionCreate";
import { useAuthSession } from "@/providers/AuthProvider";
import { AntDesign } from "@expo/vector-icons";
import { useTheme } from "@/providers/ThemeProvider";
import { AntDesign } from "@expo/vector-icons";
import { router, Stack, useLocalSearchParams } from "expo-router";
import { useEffect, useState } from "react";
import { Pressable, ScrollView, View } from "react-native";
@@ -55,6 +55,21 @@ export default function CreateDivisionAddMember() {
}
}
const isAllSelected = data.length > 0 && data.every((item: any) =>
selectMember.some((s: any) => s.idUser == item.id)
)
function handleSelectAll() {
if (isAllSelected) {
setSelectMember([])
} else {
const newMembers = data
.filter((item: any) => !selectMember.some((s: any) => s.idUser == item.id))
.map((item: any) => ({ idUser: item.id, name: item.name, img: item.img }))
setSelectMember([...selectMember, ...newMembers])
}
}
async function handleAddMember() {
dispatch(setFormCreateDivision({ ...update, member: selectMember }))
router.push(`./add-admin-division`)
@@ -93,7 +108,7 @@ export default function CreateDivisionAddMember() {
selectMember.length > 0
?
<View>
<ScrollView horizontal style={[Styles.mb10, Styles.pv10]} showsHorizontalScrollIndicator={false}>
<ScrollView horizontal style={[Styles.mb05, Styles.pv10]} showsHorizontalScrollIndicator={false}>
{
selectMember.map((item: any, index: any) => (
<ImageWithLabel
@@ -114,6 +129,15 @@ export default function CreateDivisionAddMember() {
showsVerticalScrollIndicator={false}
>
{data.length > 0 && (
<Pressable
style={[Styles.itemSelectModal, { borderColor: colors.icon + '20', paddingTop: 0 }]}
onPress={handleSelectAll}
>
<Text style={[Styles.textMediumSemiBold]}>{isAllSelected ? 'Batalkan Semua' : 'Pilih Semua'}</Text>
{isAllSelected && <AntDesign name="check" size={20} color={colors.text} />}
</Pressable>
)}
{
data.length > 0 ?
data.map((item: any, index: any) => {