comment detail
This commit is contained in:
@@ -67,3 +67,7 @@ tbody tr:nth-child(odd) {
|
|||||||
.rmdp-container {
|
.rmdp-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rowTwoInput {
|
||||||
|
@apply flex flex-col sm:flex-row sm:gap-5 gap-5;
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,175 @@
|
|||||||
|
import { type FC, useState } from 'react'
|
||||||
|
import Button from '@/components/Button'
|
||||||
|
import Switch from '@/components/Switch'
|
||||||
|
import Input from '@/components/Input'
|
||||||
|
import { Checkbox } from '@/components/ui/checkbox'
|
||||||
|
import { TickCircle } from 'iconsax-react'
|
||||||
|
|
||||||
|
const CommentsDetails: FC = () => {
|
||||||
|
const [isActive, setIsActive] = useState(true)
|
||||||
|
const [foodSearch, setFoodSearch] = useState('')
|
||||||
|
const [categorySearch, setCategorySearch] = useState('')
|
||||||
|
const [selectedFoods, setSelectedFoods] = useState<string[]>([])
|
||||||
|
const [selectedCategories, setSelectedCategories] = useState<string[]>([])
|
||||||
|
|
||||||
|
const allFoods = ['پیتزا پپرونی', 'سالاد سزار', 'پاستا', 'همبرگر', 'سوشی']
|
||||||
|
const allCategories = ['پیش غذا', 'غذای اصلی', 'دسر', 'نوشیدنی', 'سالاد']
|
||||||
|
|
||||||
|
const foods = ['همه', ...allFoods]
|
||||||
|
const categories = ['همه', ...allCategories]
|
||||||
|
|
||||||
|
const filteredFoods = foods.filter(food => {
|
||||||
|
if (food === 'همه') return true
|
||||||
|
if (!foodSearch.trim()) return true
|
||||||
|
return food.includes(foodSearch)
|
||||||
|
})
|
||||||
|
|
||||||
|
const filteredCategories = categories.filter(category => {
|
||||||
|
if (category === 'همه') return true
|
||||||
|
if (!categorySearch.trim()) return true
|
||||||
|
return category.includes(categorySearch)
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleFoodToggle = (food: string) => {
|
||||||
|
if (food === 'همه') {
|
||||||
|
setSelectedFoods(allFoods.length === selectedFoods.length ? [] : allFoods)
|
||||||
|
} else {
|
||||||
|
setSelectedFoods(prev =>
|
||||||
|
prev.includes(food) ? prev.filter(f => f !== food) : [...prev, food]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleCategoryToggle = (category: string) => {
|
||||||
|
if (category === 'همه') {
|
||||||
|
setSelectedCategories(allCategories.length === selectedCategories.length ? [] : allCategories)
|
||||||
|
} else {
|
||||||
|
setSelectedCategories(prev =>
|
||||||
|
prev.includes(category) ? prev.filter(c => c !== category) : [...prev, category]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const commentNumber = '۱۲۳۴۵'
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='mt-5'>
|
||||||
|
|
||||||
|
<div className='flex justify-between items-center mb-8'>
|
||||||
|
<h1 className='text-lg font-light'>نظر {commentNumber}#</h1>
|
||||||
|
<Button
|
||||||
|
className='w-fit px-5'
|
||||||
|
onClick={() => console.log('تایید نظر')}
|
||||||
|
>
|
||||||
|
<div className='flex items-center gap-2'>
|
||||||
|
<TickCircle color='white' size={20} />
|
||||||
|
<span>تایید نظر</span>
|
||||||
|
</div>
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
<div className='flex gap-7'>
|
||||||
|
{/* Main Content */}
|
||||||
|
<div className='flex-1 bg-white rounded-4xl p-8'>
|
||||||
|
|
||||||
|
|
||||||
|
<div className='space-y-6'>
|
||||||
|
<div className='rowTwoInput'>
|
||||||
|
<Input
|
||||||
|
label='نام و نام خانوادگی'
|
||||||
|
value='حمید ضرغامی'
|
||||||
|
readOnly
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Input
|
||||||
|
label='ایمیل'
|
||||||
|
value='info@example.com'
|
||||||
|
readOnly
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Input
|
||||||
|
label='غذا ها'
|
||||||
|
value='پیتزا پپرونی ، سالاد سزار'
|
||||||
|
readOnly
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div className='flex gap-4'>
|
||||||
|
<button className='px-4 py-2 border border-red-500 text-red-500 rounded-xl text-sm bg-white whitespace-nowrap'>
|
||||||
|
تنوع کم و محدود
|
||||||
|
</button>
|
||||||
|
<button className='px-4 py-2 border border-green-500 text-green-500 rounded-xl text-sm bg-white whitespace-nowrap'>
|
||||||
|
کیفیت خوب منو
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p className='text-xs font-light leading-6'>
|
||||||
|
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی میباشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را میطلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانهای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت میتوان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Sidebar */}
|
||||||
|
<div className='w-[330px] h-fit bg-white rounded-4xl p-8 flex flex-col gap-6'>
|
||||||
|
|
||||||
|
<div className='flex items-center justify-between'>
|
||||||
|
<span className='text-sm'>فعال</span>
|
||||||
|
<Switch
|
||||||
|
active={isActive}
|
||||||
|
onChange={setIsActive}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div className='text-sm mb-4'>وضعیت نمایش</div>
|
||||||
|
|
||||||
|
<div className='mb-6 border border-border rounded-xl p-4'>
|
||||||
|
<div className='text-xs mb-3'>نمایش در غذاهای</div>
|
||||||
|
<Input
|
||||||
|
// variant='search'
|
||||||
|
placeholder='جستجو'
|
||||||
|
value={foodSearch}
|
||||||
|
onChange={(e) => setFoodSearch(e.target.value)}
|
||||||
|
className='mb-3'
|
||||||
|
/>
|
||||||
|
<div className='flex flex-col gap-3'>
|
||||||
|
{filteredFoods.map((food, index) => (
|
||||||
|
<div key={index} className='flex items-center gap-2'>
|
||||||
|
<Checkbox
|
||||||
|
checked={food === 'همه' ? selectedFoods.length === allFoods.length : selectedFoods.includes(food)}
|
||||||
|
onCheckedChange={() => handleFoodToggle(food)}
|
||||||
|
/>
|
||||||
|
<label className='text-xs cursor-pointer'>{food}</label>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='border border-border rounded-xl p-4'>
|
||||||
|
<div className='text-xs mb-3'>نمایش در دسته بندی های</div>
|
||||||
|
<Input
|
||||||
|
// variant='search'
|
||||||
|
placeholder='جستجو'
|
||||||
|
value={categorySearch}
|
||||||
|
onChange={(e) => setCategorySearch(e.target.value)}
|
||||||
|
className='mb-3'
|
||||||
|
/>
|
||||||
|
<div className='flex flex-col gap-3'>
|
||||||
|
{filteredCategories.map((category, index) => (
|
||||||
|
<div key={index} className='flex items-center gap-2'>
|
||||||
|
<Checkbox
|
||||||
|
checked={category === 'همه' ? selectedCategories.length === allCategories.length : selectedCategories.includes(category)}
|
||||||
|
onCheckedChange={() => handleCategoryToggle(category)}
|
||||||
|
/>
|
||||||
|
<label className='text-xs cursor-pointer'>{category}</label>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default CommentsDetails
|
||||||
@@ -15,6 +15,7 @@ import CreateCustomer from '@/pages/customers/Create'
|
|||||||
import OrdersList from '@/pages/orders/List'
|
import OrdersList from '@/pages/orders/List'
|
||||||
import OrderDetails from '@/pages/orders/Details'
|
import OrderDetails from '@/pages/orders/Details'
|
||||||
import CommentsList from '@/pages/comments/List'
|
import CommentsList from '@/pages/comments/List'
|
||||||
|
import CommentsDetails from '@/pages/comments/Details'
|
||||||
const MainRouter: FC = () => {
|
const MainRouter: FC = () => {
|
||||||
|
|
||||||
const { hasSubMenu } = useSharedStore()
|
const { hasSubMenu } = useSharedStore()
|
||||||
@@ -41,6 +42,7 @@ const MainRouter: FC = () => {
|
|||||||
<Route path={Pages.orders.list} element={<OrdersList />} />
|
<Route path={Pages.orders.list} element={<OrdersList />} />
|
||||||
<Route path={Pages.orders.detail + ':id'} element={<OrderDetails />} />
|
<Route path={Pages.orders.detail + ':id'} element={<OrderDetails />} />
|
||||||
<Route path={Pages.comments.list} element={<CommentsList />} />
|
<Route path={Pages.comments.list} element={<CommentsList />} />
|
||||||
|
<Route path={Pages.comments.detail + ':id'} element={<CommentsDetails />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user