Compare commits

..

No commits in common. "c47b78df76df16ad11992631b6c0ade175379549" and "251359e935443c2b2a3c4f20724e07be0e5f9575" have entirely different histories.

28 changed files with 119 additions and 475 deletions

View File

@ -1,7 +1,6 @@
import React, { useState, useEffect, useRef } from "react";
// import { IoSearch } from "react-icons/io5";
import { IoSearch } from "react-icons/io5";
import { useNavigate } from "react-router-dom";
import { LuSearch } from "react-icons/lu";
interface Option {
label: string;
@ -61,7 +60,7 @@ const SearchFieldWithSelect: React.FC<Props> = ({
return (
<div ref={node} className={`search-field ${isOpen ? "open" : ""}`}>
<div className="search-header" onClick={toggleDropdown}>
{withIcon && <LuSearch className="search__icon" />}
{withIcon && <IoSearch className="search__icon" />}
{/* <p className="search__input_text">{placeholder}</p> */}
<input

View File

@ -1,5 +1,6 @@
import React, { useState } from "react";
import { useTranslation } from "react-i18next";
import { Select } from "antd";
import { Divider, Select } from "antd";
import { TbReorder } from "react-icons/tb";
import { useFilterStateState } from "../../zustand/Filter";

View File

@ -23,7 +23,9 @@ const NavBarRightSide = () => {
// const translateArray = translateOptions(search_array, t);
const { handel_open_model } = useModalHandler();
const handleEdit = () => {
handel_open_model(ModalEnum.CHANGE_PASSWORD);
};
return (
<article>
<span className="header_icons">
@ -38,7 +40,6 @@ const NavBarRightSide = () => {
icon={<CiCirclePlus size={25} />}
/>
<TooltipComp
onClick={()=>(Navigate('/notifications'))}
className="NotificationsIcon"
note="notification"
color="#E0E0E0"

View File

@ -10,13 +10,11 @@ const TooltipComp = ({
color,
icon,
className = "",
onClick,
}: {
note: string;
color: string;
icon: any;
className?: string;
onClick?:() => void
}) => {
const [t] = useTranslation();
const { handel_open_model } = useModalHandler();
@ -25,12 +23,11 @@ const TooltipComp = ({
handel_open_model(ModalEnum.CHANGE_PASSWORD);
};
return (
<div className={className} onClick={onClick}>
<div className={className}>
<Tooltip
placement="top"
title={<div onClick={handleEdit}>{t(`header.${note}`)}</div>}
color={color}
>
<div className={`gear `}>{icon}</div>
</Tooltip>

View File

@ -16,15 +16,13 @@ const FilterLayout = ({
sub_children,
search_by = "name",
width = "500px",
haveFilter = true,
haveOrder = true
haveFilter=true
}: {
filterTitle: string;
sub_children: any;
search_by?:string;
width?:string;
haveFilter?:boolean;
haveOrder?:boolean
search_by?:string
width?:string
haveFilter?:boolean
}) => {
const { t } = useTranslation();
const translateArray = translateOptions(search_array, t);
@ -65,7 +63,7 @@ const FilterLayout = ({
</span>
<span>
{haveOrder && <OrderBySelect />}
<OrderBySelect />
</span>
</div>
</div>

View File

@ -1,6 +1,7 @@
import { useTranslation } from "react-i18next";
import { FaStore } from "react-icons/fa";
import ValidationField from "../../../../Components/ValidationField/ValidationField";
import { CiEdit } from "react-icons/ci";
import HeaderForm from "./HeaderForm";
const PasswordDetailsForm = () => {

View File

@ -35,6 +35,7 @@ const TableHeader = () => {
}
const deleteMutation = useDeleteReseller();
return (
<div className="TableWithHeader single_student">
<Suspense fallback={<Spin />}>
@ -42,7 +43,7 @@ const TableHeader = () => {
pageTitle="reseller_details"
/>
<div className="single_student_body">
<div className="student_info reseller_info">
<div className="student_info">
<InfoCard
withButton={true}
data={ReSellerParamInfo}

View File

@ -1,33 +0,0 @@
import React from "react";
import { getInitialValues, getValidationSchema } from "./formUtil";
import { ModalEnum } from "../../../../enums/Model";
import LayoutModel from "../../../../Layout/Dashboard/LayoutModel";
import { QueryStatusEnum } from "../../../../enums/QueryStatus";
import ModelForm from "./ModelForm";
import { useAddRole } from "../../../../api/role";
const AddModel: React.FC = () => {
const { mutate, status } = useAddRole();
const handleSubmit = (values: any) => {
mutate({
...values,
});
};
return (
<>
<LayoutModel
status={status as QueryStatusEnum}
ModelEnum={ModalEnum.ROLE_ADD}
modelTitle="role"
handleSubmit={handleSubmit}
getInitialValues={getInitialValues({})}
getValidationSchema={getValidationSchema}
>
<ModelForm />
</LayoutModel>
</>
);
};
export default AddModel;

View File

@ -1,36 +0,0 @@
import React from "react";
import { getInitialValues, getValidationSchema } from "./formUtil";
import { ModalEnum } from "../../../../enums/Model";
import LayoutModel from "../../../../Layout/Dashboard/LayoutModel";
import ModelForm from "./ModelForm";
import { QueryStatusEnum } from "../../../../enums/QueryStatus";
import { useObjectToEdit } from "../../../../zustand/ObjectToEditState";
import { useUpdateRole } from "../../../../api/role";
const EditModel: React.FC = () => {
const { mutate, status } = useUpdateRole();
const { objectToEdit } = useObjectToEdit((state) => state);
const handleSubmit = (values: any) => {
mutate({
...values,
});
};
return (
<>
<LayoutModel
status={status as QueryStatusEnum}
ModelEnum={ModalEnum.ROLE_EDIT}
modelTitle="role_details"
handleSubmit={handleSubmit}
getInitialValues={getInitialValues(objectToEdit)}
getValidationSchema={getValidationSchema}
isAddModal={false}
>
<ModelForm />
</LayoutModel>
</>
);
};
export default EditModel;

View File

@ -1,18 +0,0 @@
import React from "react";
import ValidationField from "../../../../Components/ValidationField/ValidationField";
import { Col, Row } from "reactstrap";
const FilterForm = () => {
return (
<div>
<Row>
<Col>
<ValidationField placeholder="name" label="name" name="name" />
<ValidationField placeholder="created_at" label="created_at" name="created_at" />
</Col>
</Row>
</div>
);
};
export default FilterForm;

View File

@ -1,15 +0,0 @@
import { Col, Row } from "reactstrap";
import ValidationField from "../../../../Components/ValidationField/ValidationField";
const Form = () => {
return (
<Row className="w-100">
<Col>
<ValidationField placeholder="name" label="name" name="name" />
<ValidationField placeholder="created_at" label="created_at" name="created_at" />
</Col>
</Row>
);
};
export default Form;

View File

@ -1,13 +0,0 @@
import * as Yup from "yup";
export const getInitialValues = (objectToEdit: any): any => {
return {
id: objectToEdit?.id ?? null,
name: objectToEdit?.name ?? null,
};
};
export const getValidationSchema = () => {
return Yup.object().shape({
name: Yup.string().required("validation.required"),
});
};

View File

@ -1,52 +0,0 @@
import { ModalEnum } from "../../../enums/Model";
import { useTranslation } from "react-i18next";
import { lazy, Suspense } from "react";
import { Spin } from "antd";
import { canAddRole, canAddTags } from "../../../utils/hasAbilityFn";
import useSetPageTitle from "../../../Hooks/useSetPageTitle";
import PageHeader from "../../../Layout/Dashboard/PageHeader";
import FilterLayout from "../../../Layout/Dashboard/FilterLayout";
import FilterForm from "./Model/FilterForm";
import { useDeleteRole } from "../../../api/role";
const Table = lazy(() => import("./Table"));
const AddModalForm = lazy(() => import("./Model/AddModel"));
const EditModalForm = lazy(() => import("./Model/EditModel"));
const DeleteModalForm = lazy(
() => import("../../../Layout/Dashboard/DeleteModels"),
);
const TableHeader = () => {
const [t] = useTranslation();
useSetPageTitle([
{name:`${t(`page_header.home`)}`, path:"/"},
{name:`${t(`page_header.role`)}`, path:"role"}
]);
const deleteMutation = useDeleteRole();
return (
<div className="TableWithHeader">
<Suspense fallback={<Spin />}>
<PageHeader
pageTitle="role"
ModelAbility={ModalEnum?.ROLE_ADD}
canAdd={canAddRole}
/>
<FilterLayout
sub_children={<FilterForm />}
filterTitle="sidebar.role"
haveFilter={false}
/>
<Table />
<DeleteModalForm
deleteMutation={deleteMutation}
ModelEnum={ModalEnum?.ROLE_DELETE}
/>
<AddModalForm />
<EditModalForm />
</Suspense>
</div>
);
};
export default TableHeader;

View File

@ -1,25 +0,0 @@
import React from "react";
import { useGetAllTag } from "../../../api/tags";
import DataTable from "../../../Layout/Dashboard/Table/DataTable";
import { useColumns } from "./useTableColumns";
import { useFilterState } from "../../../Components/Utils/Filter/FilterState";
import { useFilterStateState } from "../../../zustand/Filter";
import { useGetAllRole } from "../../../api/role";
const App: React.FC = () => {
const { filterState } = useFilterState();
const { Filter } = useFilterStateState();
const name = Filter?.name ;
const sort_by = Filter?.sort_by ;
const response = useGetAllRole({
pagination: true,
name,
sort_by,
...filterState,
});
return <DataTable response={response} useColumns={useColumns} />;
};
export default App;

View File

@ -1,17 +0,0 @@
import { useColumns } from "./useTableColumns";
import Table from "./Table";
import { FaPlus } from "react-icons/fa";
import AddModalForm from "./Model/AddModel";
import EditModalForm from "./Model/EditModel";
// import DeleteModalForm from "../../";
export {
Table,
useColumns,
AddModalForm,
EditModalForm,
// DeleteModalForm,
FaPlus,
};

View File

@ -1,65 +0,0 @@
import { TableColumnsType } from "antd";
import { ModalEnum } from "../../../enums/Model";
import { useObjectToEdit } from "../../../zustand/ObjectToEditState";
import { useModalState } from "../../../zustand/Modal";
import { useTranslation } from "react-i18next";
import { canDeleteRole,canEditRole } from "../../../utils/hasAbilityFn";
import ActionButtons from "../../../Components/Table/ActionButtons";
import { Role } from "../../../types/App";
export const useColumns = () => {
const [t] = useTranslation();
const { setIsOpen } = useModalState((state) => state);
const { setObjectToEdit } = useObjectToEdit((state) => state);
const handelDelete = (record: any) => {
setObjectToEdit(record);
setIsOpen(ModalEnum?.ROLE_DELETE);
};
const handleEdit = (record: any) => {
setObjectToEdit(record);
setIsOpen(ModalEnum?.ROLE_EDIT);
};
const columns: TableColumnsType<Role> = [
{
title: t("columns.id"),
dataIndex: "id",
key: "id",
align: "center",
},
{
title: t("columns.name"),
dataIndex: "name",
key: "name",
align: "center",
},
{
title: t("columns.created_at"),
dataIndex: "created_at",
key: "created_at",
align: "center",
},
{
title: t("columns.procedure"),
key: "actions",
align: "center",
width: "25vw",
render: (_text, record, index) => {
return (
<ActionButtons
canDelete={canEditRole}
canEdit={canDeleteRole}
index={index}
onDelete={() => handelDelete(record)}
onEdit={() => handleEdit(record)}
/>
);
},
},
];
return columns;
};

View File

@ -1,7 +1,5 @@
import { TCrudRoute, TMenuItem } from "./types/App";
import { FaCashRegister, FaHome, FaMoneyBill, FaPaperclip, FaSellcast, FaTag, FaUser,FaUserShield } from "react-icons/fa";
import { CiSquareQuestion } from "react-icons/ci";
import { GrGroup } from "react-icons/gr";
import { FaCashRegister, FaHome, FaMoneyBill, FaPaperclip, FaSellcast, FaTag, FaUser } from "react-icons/fa";
import React from "react";
const Dummy = React.lazy(() => import("./Pages/Home/Dummy"));
@ -38,7 +36,6 @@ const Param = React.lazy(() => import("./Pages/Admin/Param/Page"));
const QuestionBank = React.lazy(() => import("./Pages/Admin/QuestionBank/Page"));
const Notifications = React.lazy(() => import("./Pages/Admin/Notifications/Page"));
const Profile = React.lazy(() => import("./Pages/Admin/Profile/Page"));
const Roles = React.lazy(() => import("./Pages/Admin/Roles/Page"));
/// RESELLER ///
const Student_Package = React.lazy(
@ -98,7 +95,7 @@ export const menuItems: TMenuItem[] = [
{
header: "page_header.student",
element: <Student />,
icon: <GrGroup />,
icon: <MdGrade />,
text: "sidebar.student",
path: `/${ABILITIES_ENUM?.STUDENT}`,
abilities: ABILITIES_ENUM?.STUDENT,
@ -139,7 +136,7 @@ export const menuItems: TMenuItem[] = [
{
header: "page_header.questionBank",
element: <QuestionBank />,
icon: <CiSquareQuestion />,
icon: <FaSellcast />,
text: "sidebar.questionBank",
path: `/${ABILITIES_ENUM?.QUESTION}`,
abilities: ABILITIES_ENUM?.QUESTION,
@ -147,12 +144,12 @@ export const menuItems: TMenuItem[] = [
prevPath: 0,
},
{
header: "page_header.roles",
element: <Roles />,
icon: <FaUserShield />,
text: "sidebar.role",
path: `/${ABILITIES_ENUM?.ROLE}`,
abilities: ABILITIES_ENUM?.ROLE,
header: "page_header.notifications",
element: <Notifications />,
icon: <FaSellcast />,
text: "sidebar.notifications",
path: `/${ABILITIES_ENUM?.NOTIFICATIONS}`,
abilities: ABILITIES_ENUM?.NOTIFICATIONS,
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
prevPath: 0,
},
@ -265,15 +262,7 @@ export const CrudRoute: TCrudRoute[] = [
abilities: ABILITIES_ENUM?.PROFILE,
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
prevPath: 0,
},
{
header: "page_header.notifications",
element: <Notifications />,
path: `/${ABILITIES_ENUM?.NOTIFICATIONS}`,
abilities: ABILITIES_ENUM?.NOTIFICATIONS,
abilities_value: ABILITIES_VALUES_ENUM.INDEX,
prevPath: 0,
},
}
];
export const AppRoutes: Record<string, string> = Object.fromEntries(

View File

@ -54,8 +54,8 @@
outline: none;
border: none;
width: 120px;
border-radius: 7px;
padding: 7px;
border-radius: 10px;
padding: 10px;
font-weight: bold;
background: var(--primary);
color: var(--white);

View File

@ -49,7 +49,7 @@
border: none;
min-width: 120px;
border-radius: 6px;
padding: 9px !important;
padding: 6px 10px;
font-weight: bold;
background: var(--primary);
color: var(--white);

View File

@ -1,9 +1,10 @@
.search-field {
position: relative;
z-index: 999;
border-radius: 8px;
width: 280px;
direction: ltr;
border-radius: 10px;
// box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.001);
width: 220px;
// direction: ltr;
color: #6a7287b2;
}
.NavBar {
@ -11,14 +12,9 @@
color: var(--white) !important;
background-color: inherit;
border-radius: 8px;
border: 1px solid var(--borderColor);
svg{
font-size: 24px;
}
border: 2px solid var(--borderColor);
input {
color: #fff !important;
text-align: end;
font-size: 16px;
}
}
}
@ -32,6 +28,7 @@
background-color: var(--bg);
font-weight: bold;
border-radius: 10px;
// width: 18vw;
height: 40px;
transition: 0.5s ease-in-out;
}

View File

@ -1,7 +1,7 @@
.DataTable {
width: 100%;
border-radius: 0 0 10px 10px;
box-shadow: 2px 2px 8px 3px rgba(0, 0, 0, 0.1);
// box-shadow: 2px 2px 8px 3px rgba(0, 0, 0, 0.1);
}
.ant-table-cell {

View File

@ -1,8 +1,6 @@
.filter_header {
padding: 20px 20px;
border-radius: 10px 10px 0 0;
box-shadow: 2px 2px 7px 2px rgba(0, 0, 0, 0.1);
> div {
display: flex;
align-items: center;
@ -32,18 +30,16 @@
span {
display: flex;
align-items: center;
color: #6A7287;
color: #6a7287;
.pagination_select,
.order_by_select,
.filter_modal_select {
border: 1px solid var(--opacity);
border-radius: 10px;
// padding-bottom: 46.5px;
.addition_select_icon {
font-size: 25px;
}
div{
color: #6A7287;
}
}
p {
padding-inline: 10px;
@ -51,11 +47,8 @@
}
}
.search-field {
// box-shadow: 2px 2px 7px 2px rgba(0, 0, 0, 0.1);
border: 1px solid rgba(0, 0, 0, 0.1);
.search__input{
width: 90%;
text-align: end ;
}
.search__icon {
color: var(--primary);
}
@ -96,15 +89,3 @@
.model_sub_children{
padding-bottom: 30px;
}
.ant-select-selection-search{
color: #6A7287 !important;
display: none !important;
}
:where(.css-dev-only-do-not-override-oad6qy).ant-select-single.ant-select-lg .ant-select-selector .ant-select-selection-search{
input{
}
}
:where(.css-dev-only-do-not-override-oad6qy).ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input{
}

View File

@ -17,11 +17,7 @@
}
.filter_header_top {
h4{
color: var(--secondary);
font-weight:600;
font-size: 18px;
}
color: #202c4b;
}

View File

@ -120,7 +120,7 @@
.address_card {
width: 50%;
margin-block: 0 !important;
min-height: 30vh;
max-height: 17vw;
}
.info_card {
@ -131,35 +131,6 @@
.student_table {
width: 100%;
}
.reseller_info{
display: flex; flex-wrap: wrap;
.address_card,
.attachments_card,
.info_card{
width: 45%;
div{
span{
font-size: 1.6vw !important;
}
h4{
font-size: 1.8vw;
}
h2{
font-size: 1.6vw !important;
}
h6{
font-size: 1.6vw !important;
}
p{
font-size: 1.6vw !important;
}
}
}
.address_card,
.attachments_card{
max-height: 40vh !important;
}
}
}
}
}

View File

@ -48,7 +48,6 @@
}
/* pagination */
.ant-spin-nested-loading ul {
}
/* Ant tabs tab active */

View File

@ -12,5 +12,4 @@ export enum ParamsEnum {
QUESTION_ID = "question_id",
CHILDREN_QUESTION_ID = "children_question_id",
RE_SELLER_ID = "re_seller_id",
ROLE_ID = "role_id",
}

View File

@ -47,8 +47,8 @@
"max_mark_must_be_greater_than_min_mark_to_pass": "يجب ان تكون اكبر من علامة النجاح",
"Sorry, the question must have at least one option": "عذرًا، يجب أن يحتوي السؤال على خيار واحد على الأقل",
"at_least_one_answer_should_be_correct": "يجب أن تكون إجابة واحدة صحيحة",
"it_should_have_more_than_one_answers": "يجب أن يحتوي على أكثر من إجابة",
"it_should_have_more_than_one_correct_answers": "يجب أن يحتوي على إجابة صحيحة",
"it_should_have_more_than_one_answers":"يجب أن يحتوي على أكثر من إجابة",
"it_should_have_more_than_one_correct_answers":"يجب أن يحتوي على إجابة صحيحة",
"File_size_exceeds_2_MB_limit.":"حجم الملف يتجاوز الحد الأقصى البالغ 2 ميجابايت"
},
"header": {
@ -122,21 +122,20 @@
"sort_by": "ترتيب حسب",
"filter": "تصفية",
"per_page": "صف لكل صفحة",
"entries": "إدخالات",
"entries": "ادخالات",
"personal_information": "المعلومات الشخصية",
"address": "العنوان",
"attachment": "المرفق",
"subject_of_class": "مواد الصف",
"this_will_un_do_all_your_changes": "سوف يؤدي هذا إلى إلغاء جميع تغييراتك",
"edit_question": "تعديل سؤال",
"notifications": "الإشعارات",
"delete_all": " حذف الكل",
"delete": "حذف",
"attachments": "المرفقات",
"password": "كلمة المرور",
"edit": "تعديل",
"change": "تغيير",
"role_list": "قائمة الأدوار"
"this_will_un_do_all_your_changes":"سوف يؤدي هذا إلى إلغاء جميع تغييراتك",
"edit_question":"تعديل سؤال",
"notifications":"الإشعارات",
"delete_all":" حذف الكل",
"delete":"حذف",
"attachments":"المرفقات",
"password":"كلمة المرور",
"edit":"تعديل",
"change":"تغيير"
},
"columns": {
"id": "الرقم التعريفي",
@ -183,7 +182,7 @@
"min_mark_to_pass": "علامة النجاح",
"isBase": "سؤال رئيسي",
"question_options_count": "عدد الخيارات",
"procedure": "إجراء",
"procedure": "اجراء",
"icon": "الايقونة",
"canAnswersBeShuffled": "يمكن خلط الإجابات",
"phone_number": "رقم الهاتف",
@ -191,28 +190,27 @@
"expiration_date": "تاريخ الالغاء",
"activation_date": "تاريخ التنشيط",
"first_name": "الاسم الأول",
"quiz_date": "تاريخ الاختبار",
"quiz_address": "عنوان الاختبار",
"subject": "المادة",
"quiz_status": "حالة الاختبار",
"creator_name": "اسم المنشئ",
"created_by": "أنشئ بواسطة",
"quiz_date":"تاريخ الاختبار",
"quiz_address":"عنوان الاختبار",
"subject":"المادة",
"quiz_status":"حالة الاختبار",
"creator_name":"اسم المنشئ",
"created_by":"أنشئ بواسطة",
"question_type": "نوع تمرين",
"base_question": " تمرين متعدد ",
"normal_question": " تمرين عادي",
"hint": "شرح ",
"tags": "كلمات مفتاحية",
"course": " الصفوف",
"student_full_name": "اسم الطالب الثلاثي",
"amount_paid": "المبلغ المدفوع",
"sale_date": "تاريخ البيع",
"grade": "الصف",
"package": "حزمة",
"ID": "ID",
"residual": "المتبقي",
"date_of_receipt": "تاريخ الاستلام",
"amount": "مبلغ",
"created_at": "تم إنشاؤه في"
"hint":"شرح ",
"tags":"كلمات مفتاحية",
"course":" الصفوف",
"student_full_name":"اسم الطالب الثلاثي",
"amount_paid":"المبلغ المدفوع",
"sale_date":"تاريخ البيع",
"grade":"الصف",
"package":"حزمة",
"ID":"ID",
"residual":"المتبقي",
"date_of_receipt":"تاريخ الاستلام",
"amount":"مبلغ"
},
"practical": {
"to_confirm_deletion_please_re_enter": "لتأكيد الحذف، يرجى إعادة الإدخال",
@ -260,17 +258,17 @@
"next": "التالي",
"prev": "السابق",
"Abbreviations": "الاختصارات",
"address": "العنوان",
"quiz": "الاختبارات",
"hightes_quiz": "اعلى اختبار",
"sales": "المبيعات",
"collections": "التحصيلات",
"collecting_an_amount": "تحصيل مبلغ",
"governorate": "المحافظة",
"id_photo": "صورة الهوية",
"sorry_something_went_wrong": "عفوا ، حدث خطأ ما",
"error_404_Page_not_found._Sorry,_the_page_you_are_looking_for_does_not_exist": "خطأ 404 لم يتم العثور على الصفحة. عذرا الصفحة التي تبحث عنها غير موجودة ",
"return_to_the_dashboard": "العودة إلى لوحة القيادة"
"address":"العنوان",
"quiz":"الاختبارات",
"hightes_quiz":"اعلى اختبار",
"sales":"المبيعات",
"collections":"التحصيلات",
"collecting_an_amount":"تحصيل مبلغ",
"governorate":"المحافظة",
"id_photo":"صورة الهوية",
"sorry_something_went_wrong":"عفوا ، حدث خطأ ما",
"error_404_Page_not_found._Sorry,_the_page_you_are_looking_for_does_not_exist":"خطأ 404 لم يتم العثور على الصفحة. عذرا الصفحة التي تبحث عنها غير موجودة ",
"return_to_the_dashboard":"العودة إلى لوحة القيادة"
},
"Table": {
"header": "",
@ -342,10 +340,8 @@
"reseller_details": "تفاصيل اعادة البيع",
"reseller": "البائعين",
"student_package": "حزمة الطالب",
"collection": "تحصيل",
"profile": "الملف الشخصي",
"role_details": "تفاصيل الأدوار",
"created_at": "تم إنشاؤه في"
"collection":"تحصيل",
"profile":"الملف الشخصي"
},
"education_class_actions": {
"Student_Records": "سجلات الطلاب",
@ -461,15 +457,14 @@
"city": "المحافظة",
"personal_image": "صورة شخصية",
"id_image": "صورة الهوية",
"grade": "الصفوف",
"subject": "المادة",
"unit": "الوحدة",
"lesson": "الدرس",
"date_of_receipt": "تاريخ الاستلام",
"amount_value": "قيمة المبلغ",
"email_address": "عنوان البريد الإلكتروني",
"current_password": "كلمة المرور الحالية",
"created_at": "تم إنشاؤه في"
"grade":"الصفوف",
"subject":"المادة",
"unit":"الوحدة",
"lesson":"الدرس",
"date_of_receipt":"تاريخ الاستلام",
"amount_value":"قيمة المبلغ",
"email_address":"عنوان البريد الإلكتروني",
"current_password":"كلمة المرور الحالية"
},
"select": {
"enums": {
@ -726,6 +721,7 @@
"admin": "المسؤول",
"branchAdmin": "مسؤول الفروع"
},
"array": {
"Period": {
"Today": "اليوم",
@ -766,6 +762,7 @@
"waiting": "قيد الانتظار",
"done": "انتهى"
},
"sidebar": {
"dashboard": "لوحة القيادة",
"course": "الصفوف",
@ -778,7 +775,7 @@
"subject_details": "تفاصيل المادة",
"logout": "تسجيل الخروج",
"branch": "الفروع",
"role": "الأدوار",
"role": "الادوار",
"admin": "المسؤولون",
"subject": "المواد",
"tags": "كلمات مفتاحية",
@ -797,10 +794,10 @@
"reseller": "البائعين",
"param": "معامل",
"student_package": "حزمة الطالب",
"quiz": "الاختبارات",
"questionBank": "بنك الأسئلة",
"notifications": "الإشعارات",
"profile": "الملف الشخصي"
"quiz":"الاختبارات",
"questionBank":"بنك الأسئلة",
"notifications":"الإشعارات",
"profile":"الملف الشخصي"
},
"message": {
"some_thing_went_wrong": "حدث خطأ ما",
@ -815,7 +812,7 @@
"teacher": "المعلمون",
"payment": "الدفعات",
"branch": "الفروع",
"role": "الأدوار",
"role": "الادوار",
"admin": "المسؤولون",
"note": "ملاحظات",
"status": "حالة",
@ -828,18 +825,18 @@
"user": "مستخدم",
"param": "معامل",
"student_package": "حزمة الطالب",
"users": "المستخدمون",
"students": "الطلاب",
"students_details": "تفاصيل الطلاب",
"users":"المستخدمون",
"students":"الطلاب",
"students_details":"تفاصيل الطلاب",
"add_reseller": "إضافة بائع",
"grade": "الصفوف",
"report": "تقرير",
"tags": "كلمات مفتاحية",
"reseller": "البائعين",
"QuestionBank": "بنك الأسئلة",
"reseller_details": "تفاصيل البائع",
"notifications": "الإشعارات",
"profile": "الملف الشخصي"
"reseller":"البائعين",
"QuestionBank":"بنك الأسئلة",
"reseller_details":"تفاصيل البائع",
"notifications":"الإشعارات",
"profile":"الملف الشخصي"
},
"page_header": {
"home": "لوحة القيادة",
@ -847,7 +844,7 @@
"teacher": " المعلمون",
"payment": " الدفعات",
"branch": " الفروع",
"role": " الأدوار",
"role": " الادوار",
"student": " قائمة الطلاب ",
"admin": " المسؤولون",
"student_details": "تفاصيل الطالب",
@ -877,18 +874,17 @@
"add_reseller": " البائعين / إضافة بائع ",
"param": "معامل",
"student_package": "حزمة الطالب",
"QuestionBank": "بنك الأسئلة",
"reseller_details": "تفاصيل البائع",
"notifications": "الإشعارات",
"profile": "الملف الشخصي",
"user": "مستخدم"
"QuestionBank":"بنك الأسئلة",
"reseller_details":"تفاصيل البائع",
"notifications":"الإشعارات",
"profile":"الملف الشخصي"
},
"table": {
"student": "قائمة الطلاب",
"reseller": "البائعين",
"grade": "قائمة الصفوف",
"subjects": "مواد الصف",
"QuestionBank": "بنك الأسئلة"
"QuestionBank":"بنك الأسئلة"
},
"alphabet": {
"A": "A",

View File

@ -1,8 +0,0 @@
export type FilterLayout = {
filterTitle: string;
sub_children: any;
search_by?:string
width?:string
haveFilter?:boolean
};