Files
dmail-admin/src/pages/setting/address/Address.tsx
T
hamid zarghami ed8cd1392d template
2025-07-15 14:57:54 +03:30

79 lines
2.4 KiB
TypeScript

import { FC, useEffect, useState } from 'react'
import { AddressData } from './types/Types'
import AddressTable from './components/AddressTable'
import AddressForm from './components/AddressForm'
import AddressDeleteModal from './components/AddressDeleteModal'
const Address: FC = () => {
const [search, setSearch] = useState<string>('')
const [status, setStatus] = useState<string>('all')
const [currentPage, setCurrentPage] = useState<number>(1)
const [selectedAddress, setSelectedAddress] = useState<AddressData | null>(null)
const [isEditMode, setIsEditMode] = useState(false)
const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false)
const [addressToDelete, setAddressToDelete] = useState<AddressData | null>(null)
const handleEdit = (address: AddressData) => {
setSelectedAddress(address)
setIsEditMode(true)
}
const handleDelete = (address: AddressData) => {
setAddressToDelete(address)
setIsDeleteModalOpen(true)
}
const handleCancelEdit = () => {
setSelectedAddress(null)
setIsEditMode(false)
}
const handleFormSuccess = () => {
setSelectedAddress(null)
setIsEditMode(false)
}
const handleDeleteSuccess = () => {
setAddressToDelete(null)
}
const handleDeleteModalClose = () => {
setIsDeleteModalOpen(false)
setAddressToDelete(null)
}
useEffect(() => {
setCurrentPage(1)
}, [search, status])
return (
<div className='flex xl:flex-row flex-col-reverse gap-8 mt-8'>
<AddressTable
search={search}
status={status}
currentPage={currentPage}
onSearchChange={setSearch}
onStatusChange={setStatus}
onPageChange={setCurrentPage}
onEdit={handleEdit}
onDelete={handleDelete}
/>
<AddressForm
selectedAddress={selectedAddress}
isEditMode={isEditMode}
onCancel={handleCancelEdit}
onSuccess={handleFormSuccess}
/>
<AddressDeleteModal
isOpen={isDeleteModalOpen}
addressToDelete={addressToDelete}
onClose={handleDeleteModalClose}
onSuccess={handleDeleteSuccess}
/>
</div>
)
}
export default Address