add route to cards
This commit is contained in:
@@ -23,7 +23,8 @@ function App() {
|
|||||||
<Route path="/dashboard" element={
|
<Route path="/dashboard" element={
|
||||||
<Dashboard />
|
<Dashboard />
|
||||||
} />
|
} />
|
||||||
<Route path="/card" element={
|
<Route path="/card" element={<TaskButton />} />
|
||||||
|
<Route path="/card/:id" element={
|
||||||
<TaskButton />
|
<TaskButton />
|
||||||
} />
|
} />
|
||||||
<Route path="*" element={<Navigate to="/auth/login" replace />} />
|
<Route path="*" element={<Navigate to="/auth/login" replace />} />
|
||||||
|
|||||||
@@ -1,14 +1,30 @@
|
|||||||
import { useState } from 'react'
|
import { useState, useEffect } from 'react'
|
||||||
|
import { useNavigate, useLocation } from 'react-router'
|
||||||
import styles from '@/lib/styles'
|
import styles from '@/lib/styles'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
import { X } from 'lucide-react'
|
import { X } from 'lucide-react'
|
||||||
|
|
||||||
|
|
||||||
export function TaskButton({ taskData }) {
|
export function TaskButton({ taskData }) {
|
||||||
|
const navigate = useNavigate()
|
||||||
|
const location = useLocation()
|
||||||
const [isModalOpen, setIsModalOpen] = useState(false)
|
const [isModalOpen, setIsModalOpen] = useState(false)
|
||||||
|
|
||||||
const openModal = () => setIsModalOpen(true)
|
const taskId = taskData?.id || 1
|
||||||
const closeModal = () => setIsModalOpen(false)
|
|
||||||
|
// Проверяем, открыта ли карточка по URL
|
||||||
|
useEffect(() => {
|
||||||
|
const isCardRoute = location.pathname === `/card/${taskId}`
|
||||||
|
setIsModalOpen(isCardRoute)
|
||||||
|
}, [location.pathname, taskId])
|
||||||
|
|
||||||
|
const openModal = () => {
|
||||||
|
navigate(`/card/${taskId}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
const closeModal = () => {
|
||||||
|
navigate(-1) // Возвращаемся на предыдущую страницу
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -28,19 +44,7 @@ export function TaskButton({ taskData }) {
|
|||||||
className="fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50 p-4"
|
className="fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50 p-4"
|
||||||
onClick={closeModal}
|
onClick={closeModal}
|
||||||
>
|
>
|
||||||
<div
|
<div onClick={(e) => e.stopPropagation()}>
|
||||||
className="relative w-fit h-fit"
|
|
||||||
onClick={(e) => e.stopPropagation()}
|
|
||||||
>
|
|
||||||
{/* Кнопка закрытия */}
|
|
||||||
<button
|
|
||||||
onClick={closeModal}
|
|
||||||
className="absolute -top-4 -right-4 z-10 bg-red-500 hover:bg-red-600 text-white rounded-full p-2 transition-colors"
|
|
||||||
aria-label="Close modal"
|
|
||||||
>
|
|
||||||
<X size={20} />
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<CardComponent
|
<CardComponent
|
||||||
status={taskData?.status}
|
status={taskData?.status}
|
||||||
time_spent={taskData?.time_spent}
|
time_spent={taskData?.time_spent}
|
||||||
|
|||||||
Reference in New Issue
Block a user