add service part 1
This commit is contained in:
Generated
+22
@@ -31,6 +31,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.17.0",
|
"@eslint/js": "^9.17.0",
|
||||||
|
"@types/draft-js": "^0.11.18",
|
||||||
"@types/react": "^18.3.17",
|
"@types/react": "^18.3.17",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^18.3.5",
|
||||||
"@types/swiper": "^5.4.3",
|
"@types/swiper": "^5.4.3",
|
||||||
@@ -1815,6 +1816,17 @@
|
|||||||
"integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
|
"integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/draft-js": {
|
||||||
|
"version": "0.11.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.18.tgz",
|
||||||
|
"integrity": "sha512-lP6yJ+EKv5tcG1dflWgDKeezdwBa8wJ7KkiNrrHqXuXhl/VGes1SKjEfKHDZqOz19KQbrAhFvNhDPWwnQXYZGQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/react": "*",
|
||||||
|
"immutable": "~3.7.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/estree": {
|
"node_modules/@types/estree": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||||
@@ -3296,6 +3308,16 @@
|
|||||||
"node": ">= 4"
|
"node": ">= 4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/immutable": {
|
||||||
|
"version": "3.7.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz",
|
||||||
|
"integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/import-fresh": {
|
"node_modules/import-fresh": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.17.0",
|
"@eslint/js": "^9.17.0",
|
||||||
|
"@types/draft-js": "^0.11.18",
|
||||||
"@types/react": "^18.3.17",
|
"@types/react": "^18.3.17",
|
||||||
"@types/react-dom": "^18.3.5",
|
"@types/react-dom": "^18.3.5",
|
||||||
"@types/swiper": "^5.4.3",
|
"@types/swiper": "^5.4.3",
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export const Pages = {
|
|||||||
mine: "/services",
|
mine: "/services",
|
||||||
other: "/other-service",
|
other: "/other-service",
|
||||||
detail: "/services/detail/",
|
detail: "/services/detail/",
|
||||||
|
add: "/services/add",
|
||||||
},
|
},
|
||||||
transactions: "/transactions",
|
transactions: "/transactions",
|
||||||
receipts: {
|
receipts: {
|
||||||
|
|||||||
+8
-2
@@ -69,7 +69,8 @@
|
|||||||
"logout": "خروج"
|
"logout": "خروج"
|
||||||
},
|
},
|
||||||
"submenu": {
|
"submenu": {
|
||||||
"services_list": "لیست سرویس ها"
|
"services_list": "لیست سرویس ها",
|
||||||
|
"add_service": "افزودن سرویس"
|
||||||
},
|
},
|
||||||
"header": {
|
"header": {
|
||||||
"search": "جستجو"
|
"search": "جستجو"
|
||||||
@@ -118,8 +119,13 @@
|
|||||||
"enter_title_comment": "عنوان نظر خود را وارد کنید",
|
"enter_title_comment": "عنوان نظر خود را وارد کنید",
|
||||||
"your_comment": "نظر شما",
|
"your_comment": "نظر شما",
|
||||||
"write_your_comment": "نظر خود را راجع به این سرویس بنویسید",
|
"write_your_comment": "نظر خود را راجع به این سرویس بنویسید",
|
||||||
"users_comments": "نظرات کاربران"
|
"users_comments": "نظرات کاربران",
|
||||||
|
"add_service": "افزودن سرویس",
|
||||||
|
"service_name": "نام سرویس",
|
||||||
|
"description_short": "توضیح کوتاه سرویس",
|
||||||
|
"company_developed": "شرکت توسعه دهنده"
|
||||||
},
|
},
|
||||||
|
"select": "انتخاب",
|
||||||
"footer": {
|
"footer": {
|
||||||
"home": "صفحه اصلی",
|
"home": "صفحه اصلی",
|
||||||
"other_services": "سایر سرویس ها",
|
"other_services": "سایر سرویس ها",
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
import { FC } from 'react'
|
||||||
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import Input from '../../components/Input'
|
||||||
|
import Select from '../../components/Select'
|
||||||
|
|
||||||
|
const AddService: FC = () => {
|
||||||
|
|
||||||
|
const { t } = useTranslation('global')
|
||||||
|
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='w-full flex gap-6 mt-4'>
|
||||||
|
<div className='flex-1'>
|
||||||
|
<div>
|
||||||
|
{t('service.add_service')}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='flex-1 mt-10 bg-white py-8 xl:px-10 px-4 rounded-3xl'>
|
||||||
|
<Input
|
||||||
|
label={t('service.service_name')}
|
||||||
|
/>
|
||||||
|
<div className='mt-8'>
|
||||||
|
<Input
|
||||||
|
label={t('service.description_short')}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='mt-8 rowTwoInput'>
|
||||||
|
<Input
|
||||||
|
label={t('service.company_developed')}
|
||||||
|
/>
|
||||||
|
<Input
|
||||||
|
label={t('service.year_make')}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='mt-8 rowTwoInput'>
|
||||||
|
<Input
|
||||||
|
label={t('service.user_count')}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Select
|
||||||
|
label={t('service.lang_app')}
|
||||||
|
items={[
|
||||||
|
{
|
||||||
|
label: 'فارسی',
|
||||||
|
value: ''
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
placeholder={t('select')}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='mt-8'>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='bg-white w-sidebar text-xs hidden 2xl:block h-fit px-5 py-7 rounded-3xl'>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AddService
|
||||||
@@ -24,6 +24,7 @@ import DetailService from '../pages/service/DetailService'
|
|||||||
import { clx } from '../helpers/utils'
|
import { clx } from '../helpers/utils'
|
||||||
import { useSharedStore } from '../shared/store/sharedStore'
|
import { useSharedStore } from '../shared/store/sharedStore'
|
||||||
import CreateReceipt from '../pages/receipts/Create'
|
import CreateReceipt from '../pages/receipts/Create'
|
||||||
|
import AddService from '../pages/service/AddService'
|
||||||
|
|
||||||
const MainRouter: FC = () => {
|
const MainRouter: FC = () => {
|
||||||
|
|
||||||
@@ -46,6 +47,7 @@ const MainRouter: FC = () => {
|
|||||||
<Route path={Pages.services.mine} element={<MyServices />} />
|
<Route path={Pages.services.mine} element={<MyServices />} />
|
||||||
<Route path={Pages.services.other} element={<OtherServices />} />
|
<Route path={Pages.services.other} element={<OtherServices />} />
|
||||||
<Route path={Pages.services.detail + ':id'} element={<DetailService />} />
|
<Route path={Pages.services.detail + ':id'} element={<DetailService />} />
|
||||||
|
<Route path={Pages.services.add} element={<AddService />} />
|
||||||
<Route path={Pages.ticket.list} element={<TicketList />} />
|
<Route path={Pages.ticket.list} element={<TicketList />} />
|
||||||
<Route path={Pages.ticket.create} element={<CreateTicket />} />
|
<Route path={Pages.ticket.create} element={<CreateTicket />} />
|
||||||
<Route path={Pages.ticket.detail + ':id'} element={<TicketDetail />} />
|
<Route path={Pages.ticket.detail + ':id'} element={<TicketDetail />} />
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { FC } from 'react'
|
|||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import SubMenuItem from './SubMenuItem'
|
import SubMenuItem from './SubMenuItem'
|
||||||
import { useLocation } from 'react-router-dom'
|
import { useLocation } from 'react-router-dom'
|
||||||
|
import { Pages } from '../../config/Pages'
|
||||||
|
|
||||||
const ServicesSubMenu: FC = () => {
|
const ServicesSubMenu: FC = () => {
|
||||||
|
|
||||||
@@ -30,8 +31,13 @@ const ServicesSubMenu: FC = () => {
|
|||||||
<div className='flex flex-col mt-10 gap-4'>
|
<div className='flex flex-col mt-10 gap-4'>
|
||||||
<SubMenuItem
|
<SubMenuItem
|
||||||
title={t('submenu.services_list')}
|
title={t('submenu.services_list')}
|
||||||
isActive={isActive('services')}
|
isActive={isActive('list')}
|
||||||
link='/services'
|
link={Pages.services.mine}
|
||||||
|
/>
|
||||||
|
<SubMenuItem
|
||||||
|
title={t('submenu.add_service')}
|
||||||
|
isActive={isActive('add')}
|
||||||
|
link={Pages.services.add}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+6
-3
@@ -1,7 +1,10 @@
|
|||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from "vite";
|
||||||
import react from '@vitejs/plugin-react'
|
import react from "@vitejs/plugin-react";
|
||||||
|
|
||||||
// https://vite.dev/config/
|
// https://vite.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [react()],
|
plugins: [react()],
|
||||||
})
|
define: {
|
||||||
|
global: "window", // تعریف `global` برای مرورگر
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user