add new route navigater

This commit is contained in:
karimaldeen 2024-09-15 10:03:06 +03:00
parent b7276a2c6a
commit 0f54e21546
19 changed files with 171 additions and 86 deletions

View File

@ -15,6 +15,8 @@
.text, .text,
.ant-form-item { .ant-form-item {
margin-bottom: 7px !important; margin-bottom: 7px !important;
font-weight: bold;
font-size: 19px;
> span { > span {
color: transparent; color: transparent;
} }
@ -65,3 +67,15 @@
.ant-input-textarea-affix-wrapper.ant-input-affix-wrapper { .ant-input-textarea-affix-wrapper.ant-input-affix-wrapper {
height: 120px; height: 120px;
} }
//// malty select
///
.ant-select-multiple{
height: auto !important;
min-height: 40px;
.ant-select-selector{
min-height: 40px;
}
}

View File

@ -1,5 +1,4 @@
import React from "react";
import SearchBar from "../../Components/Ui/SearchBar/SearchBar";
import { Button } from "antd"; import { Button } from "antd";
import { BsPlusCircleFill } from "react-icons/bs"; import { BsPlusCircleFill } from "react-icons/bs";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
@ -8,8 +7,7 @@ import useModalHandler from "../../utils/useModalHandler";
import { MdOutlineArrowForwardIos } from "react-icons/md"; import { MdOutlineArrowForwardIos } from "react-icons/md";
import { deletePathSegments } from "../../utils/deletePathSegments"; import { deletePathSegments } from "../../utils/deletePathSegments";
import { getPrevPathRoute } from "../../utils/getPrevPathRoute"; import { getPrevPathRoute } from "../../utils/getPrevPathRoute";
import { usePageTitleState } from "../../zustand/PageTitleState"; import PageTitleComponent from "./PageTitle";
import FillterForm from "../Ui/FillterForm";
const PageHeader = ({ const PageHeader = ({
canAdd, canAdd,
@ -35,20 +33,20 @@ const PageHeader = ({
if (PrevPath === 0) { if (PrevPath === 0) {
return; return;
} }
navigate(deletePathSegments(location.pathname, PrevPath)); // navigate(deletePathSegments(location.pathname, PrevPath));
}; };
const handleNavigateToPage = (location: string) => { const handleNavigateToPage = (location: string) => {
navigate(location); // navigate(location);
}; };
console.log(); console.log();
const { PageTitle } = usePageTitleState();
return ( return (
<div className="page_header"> <div className="page_header">
<header className="d-flex justify-content-between"> <header className="d-flex justify-content-between">
<span className="page_header_links" onClick={handelNavigate}> <span className="page_header_links" onClick={handelNavigate}>
<h1 className="page_title">{t(`PageTitle.${pageTitle}`)}</h1> <h1 className="page_title">{t(`PageTitle.${pageTitle}`)}</h1>
<span className="page_links"> <span className="page_links">
<MdOutlineArrowForwardIos /> {PageTitle} <MdOutlineArrowForwardIos /> <PageTitleComponent/>
</span> </span>
</span> </span>
{ addModal ? canAdd && ( { addModal ? canAdd && (

View File

@ -0,0 +1,30 @@
import React from 'react'
import { useLocation, useNavigate } from 'react-router-dom'
import { usePageTitleState } from '../../zustand/PageTitleState'
const PageTitleComponent = () => {
const {PageTitle,setPageTitle} = usePageTitleState()
const navigate = useNavigate()
const location = useLocation()
const handleNavigate = (path:string)=>{
const currentPath = location.pathname ;
const newPath = currentPath?.split(path)?.[0] + path ;
if(newPath !== currentPath){
navigate(newPath)
}
}
return (
<div className='PageTitle'>
{(Array.isArray(PageTitle) ? PageTitle : [])?.map((item,index)=>{
return (
<div key={index} className='PageTitleItems' onClick={()=>handleNavigate(item?.path)}>
{item?.name} /
</div>
)
})}
</div>
)
}
export default PageTitleComponent

View File

@ -20,7 +20,10 @@ const TableHeader = () => {
const [t] = useTranslation(); const [t] = useTranslation();
const deleteMutation = useDeleteGrade(); const deleteMutation = useDeleteGrade();
useSetPageTitle(t(`page_header.grade`)); useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.grade`)}`, path:"grade"}
]);
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -18,7 +18,11 @@ const DeleteModalForm = lazy(
const TableHeader = () => { const TableHeader = () => {
const [t] = useTranslation(); const [t] = useTranslation();
useSetPageTitle(t(`page_header.param`));
useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.param`)}`, path:"param"}
]);
const deleteMutation = useDeleteParam(); const deleteMutation = useDeleteParam();
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -20,8 +20,11 @@ const TableHeader = () => {
const [t] = useTranslation(); const [t] = useTranslation();
const deleteMutation = useDeleteQuestion(); const deleteMutation = useDeleteQuestion();
useSetPageTitle(t(`page_header.QuestionBank`));
useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.Question`)}`, path:"Question"}
]);
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">
<Suspense fallback={<Spin />}> <Suspense fallback={<Spin />}>

View File

@ -21,9 +21,12 @@ const SearchField = lazy(
); );
const TableHeader = () => { const TableHeader = () => {
const { handel_open_model } = useModalHandler();
const [t] = useTranslation(); const [t] = useTranslation();
useSetPageTitle(t(`page_header.report`));
useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.report`)}`, path:"report"}
]);
const deleteMutation = useDeleteTag(); const deleteMutation = useDeleteTag();
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -24,7 +24,10 @@ const SearchField = lazy(
const TableHeader = () => { const TableHeader = () => {
const [t] = useTranslation(); const [t] = useTranslation();
useSetPageTitle(t(`page_header.reseller`)); useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.reseller`)}`, path:"reseller"}
]);
const deleteMutation = useDeleteTag(); const deleteMutation = useDeleteTag();
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -20,8 +20,10 @@ const TableHeader = () => {
const [t] = useTranslation(); const [t] = useTranslation();
const deleteMutation = useDeleteStudent(); const deleteMutation = useDeleteStudent();
useSetPageTitle(t(`page_header.student`)); useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.student`)}`, path:"student"}
]);
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">
<Suspense fallback={<Spin />}> <Suspense fallback={<Spin />}>

View File

@ -16,14 +16,15 @@ const EditModalForm = lazy(() => import("./Model/EditModel"));
const DeleteModalForm = lazy( const DeleteModalForm = lazy(
() => import("../../../Layout/Dashboard/DeleteModels"), () => import("../../../Layout/Dashboard/DeleteModels"),
); );
const SearchField = lazy(
() => import("../../../Components/DataTable/SearchField"),
);
const TableHeader = () => { const TableHeader = () => {
const { handel_open_model } = useModalHandler();
const [t] = useTranslation(); const [t] = useTranslation();
useSetPageTitle(t(`page_header.tags`));
useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.tags`)}`, path:"tag"}
]);
const deleteMutation = useDeleteTag(); const deleteMutation = useDeleteTag();
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -35,15 +35,13 @@ const TableHeader = () => {
}); });
const gradeName = grade?.data?.name ?? ""; const gradeName = grade?.data?.name ?? "";
const SubjectName = Subject?.data?.name ?? ""; const SubjectName = Subject?.data?.name ?? "";
useSetPageTitle( useSetPageTitle([
t(`page_header.grade`) + {name:`${t(`page_header.home`)}`, path:"/"},
" / " + {name:`${t(`page_header.grade`)}`, path:"grade"},
` ${t("header.subject_of_class")} (${gradeName})` + {name:` ${t("header.subject_of_class")} (${gradeName})`, path:`grade/${grade_id}`},
" / " + {name:SubjectName, path:`subject/${subject_id}`}
SubjectName, ]);
);
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -18,7 +18,10 @@ const DeleteModalForm = lazy(
const TableHeader = () => { const TableHeader = () => {
const [t] = useTranslation(); const [t] = useTranslation();
useSetPageTitle(t(`page_header.user`)); useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.user`)}`, path:"user"}
]);
const deleteMutation = useDeleteUser(); const deleteMutation = useDeleteUser();
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -26,7 +26,7 @@ const TableHeader = () => {
const [t] = useTranslation(); const [t] = useTranslation();
const deleteMutation = useDeleteLesson(); const deleteMutation = useDeleteLesson();
const { unit_id, curriculum_id, grade_id, subject_id } = const { unit_id, grade_id, subject_id } =
useParams<ParamsEnum>(); useParams<ParamsEnum>();
const { data: unit } = useGetAllUnit({ show: unit_id }); const { data: unit } = useGetAllUnit({ show: unit_id });
@ -41,15 +41,15 @@ const TableHeader = () => {
const SubjectName = Subject?.data?.name ?? ""; const SubjectName = Subject?.data?.name ?? "";
const unitName = unit?.data?.name ?? ""; const unitName = unit?.data?.name ?? "";
useSetPageTitle(
t(`page_header.grade`) + useSetPageTitle([
" / " + {name:`${t(`page_header.home`)}`, path:"/"},
` ${t("header.subject_of_class")} (${gradeName})` + {name:`${t(`page_header.grade`)}`, path:"grade"},
" / " + {name:` ${t("header.subject_of_class")} (${gradeName})`, path:`grade/${grade_id}`},
SubjectName + {name:SubjectName, path:`subject/${subject_id}`},
" / " + {name:unitName, path:`unit/${unit_id}`}
unitName, ]);
);
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -42,17 +42,15 @@ const TableHeader = () => {
const unitName = unit?.data?.name ?? ""; const unitName = unit?.data?.name ?? "";
const LessonName = Lesson?.data?.name ?? ""; const LessonName = Lesson?.data?.name ?? "";
useSetPageTitle( useSetPageTitle([
t(`page_header.grade`) + {name:`${t(`page_header.home`)}`, path:"/"},
" / " + {name:`${t(`page_header.grade`)}`, path:"grade"},
` ${t("header.subject_of_class")} (${gradeName})` + {name:` ${t("header.subject_of_class")} (${gradeName})`, path:`grade/${grade_id}`},
" / " + {name:SubjectName, path:`subject/${subject_id}`},
SubjectName + {name:unitName, path:`unit/${unit_id}`},
" / " + {name:LessonName, path:`lesson/${lesson_id }`}
unitName + ]);
" / " +
LessonName,
);
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -32,11 +32,15 @@ const TableWithHeader = () => {
}); });
const gradeName = grade?.data?.name ?? ""; const gradeName = grade?.data?.name ?? "";
useSetPageTitle(
t(`page_header.grade`) +
" / " + useSetPageTitle([
` ${t("header.subject_of_class")} (${gradeName})`, {name:`${t(`page_header.home`)}`, path:"/"},
); {name:`${t(`page_header.grade`)}`, path:"grade"},
{name:` ${t("header.subject_of_class")} (${gradeName})`, path:`grade/${grade_id}`}
]);
return ( return (
<div className="TableWithHeader"> <div className="TableWithHeader">

View File

@ -4,6 +4,7 @@ import { ABILITIES_ENUM } from "../../enums/abilities";
import useSetPageTitle from "../../Hooks/useSetPageTitle"; import useSetPageTitle from "../../Hooks/useSetPageTitle";
import useFilter from "../../Components/FilterField/components/useFilter"; import useFilter from "../../Components/FilterField/components/useFilter";
import { Button, Popconfirm } from "antd"; import { Button, Popconfirm } from "antd";
import PageTitle from "../../Layout/Dashboard/PageTitle";
const Dummy = () => { const Dummy = () => {
const [t] = useTranslation(); const [t] = useTranslation();
@ -11,8 +12,7 @@ const Dummy = () => {
const { FilterButton, FilterBody } = useFilter(); const { FilterButton, FilterBody } = useFilter();
return ( return (
<div className="DummyHomePage"> <div className="DummyHomePage">
{/* <FilterButton /> <PageTitle/>
<FilterBody>karim</FilterBody> */}
</div> </div>
); );

View File

@ -9,6 +9,9 @@
} }
.page_links { .page_links {
color: var(--opacity); color: var(--opacity);
display: flex;
align-items: center;
gap: 10px;
} }
} }
} }
@ -16,3 +19,12 @@
.filter_header_top { .filter_header_top {
color: #202c4b; color: #202c4b;
} }
.PageTitle{
display: flex;
gap: 10px;
.PageTitleItems{
cursor: pointer;
}
}

View File

@ -127,12 +127,14 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
width: 100%; width: 100%;
padding: 14px 10px; padding: 14px 20px;
background: #f2f4f8; background: #f2f4f8;
border-radius: 10px 10px 0 0; border-radius: 10px 10px 0 0;
margin: 0 !important; margin: 0 !important;
box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, 0.1); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, 0.1);
div{
margin-left: 25px;
}
img { img {
cursor: pointer; cursor: pointer;
} }
@ -245,4 +247,11 @@
>header{ >header{
padding: 30px 2vw 10px 2vw; padding: 30px 2vw 10px 2vw;
} }
}
.SelectTag{
label{
font-weight: bold;
font-size: 19px;
}
} }

View File

@ -798,14 +798,14 @@
"QuestionBank":"بنك الأسئلة" "QuestionBank":"بنك الأسئلة"
}, },
"page_header": { "page_header": {
"dashboard": "لوحة القيادة / الصفحة الرئيسية", "home": "لوحة القيادة",
"course": " لوحة القيادة / الصفوف ", "course": " الصفوف ",
"teacher": " لوحة القيادة / المعلمون", "teacher": " المعلمون",
"payment": " لوحة القيادة / الدفعات", "payment": " الدفعات",
"branch": " لوحة القيادة / الفروع", "branch": " الفروع",
"role": " لوحة القيادة / الادوار", "role": " الادوار",
"student": " لوحة القيادة / قائمة الطلاب ", "student": " قائمة الطلاب ",
"admin": " لوحة القيادة / المسؤولون", "admin": " المسؤولون",
"student_details": "تفاصيل الطالب", "student_details": "تفاصيل الطالب",
"create_student": "إنشاء طالب", "create_student": "إنشاء طالب",
"course_details": "تفاصيل الصف", "course_details": "تفاصيل الصف",
@ -813,27 +813,27 @@
"student_payment": "دفع الطالب", "student_payment": "دفع الطالب",
"student_note": "ملاحظات الطالب", "student_note": "ملاحظات الطالب",
"student_status": "حالة الطالب", "student_status": "حالة الطالب",
"education_class": "لوحة القيادة / الصفوف / الشعب", "education_class": "الصفوف / الشعب",
"education_class_details": " لوحة القيادة / الصفوف / الشعب / تفاصيل الشعبة", "education_class_details": " الصفوف / الشعب / تفاصيل الشعبة",
"subject_details": " لوحة القيادة / تفاصيل المادة ", "subject_details": " تفاصيل المادة ",
"cycle": "لوحة القيادة / السنة دراسية ", "cycle": " السنة دراسية ",
"term": "لوحة القيادة / الفصل ", "term": "الفصل ",
"unit_details": "لوحة القيادة / تفاصيل المادة / تفاصيل الوحدة", "unit_details": "تفاصيل المادة / تفاصيل الوحدة",
"lesson_details": "لوحة القيادة / تفاصيل المادة / تفاصيل الوحدة / تفاصيل الدرس", "lesson_details": "تفاصيل المادة / تفاصيل الوحدة / تفاصيل الدرس",
"exercise_add": "لوحة القيادة / تفاصيل الدرس / إضافة تمارين ", "exercise_add": "تفاصيل الدرس / إضافة تمارين ",
"subject": "لوحة القيادة / المادة", "subject": "المادة",
"tags": "لوحة القيادة / كلمات مفتاحية", "tags": "كلمات مفتاحية",
"Question": "لوحة القيادة /اسئلة ", "Question": "سئلة ",
"add_Question": "لوحة القيادة /إضافة اسئلة ", "add_Question": "ضافة اسئلة ",
"edit_Question": "لوحة القيادة /تعديل اسئلة ", "edit_Question": "عديل اسئلة ",
"grade": "لوحة القيادة / الصفوف", "grade": "الصفوف",
"report": "تقرير", "report": "تقرير",
"users": "لوحة القيادة / المستخدمون", "users": "المستخدمون",
"reseller": " لوحة القيادة / البائعين", "reseller": " البائعين",
"add_reseller": " لوحة القيادة / البائعين / إضافة بائع ", "add_reseller": " البائعين / إضافة بائع ",
"param": "معامل", "param": "معامل",
"student_package": "حزمة الطالب", "student_package": "حزمة الطالب",
"QuestionBank":"لوحة القيادة / بنك الأسئلة" "QuestionBank":"بنك الأسئلة"
}, },
"table": { "table": {
"student": "قائمة الطلاب", "student": "قائمة الطلاب",