From 42dcbd67cb15e6bac298e9c640806d53f78315a0 Mon Sep 17 00:00:00 2001 From: karimalden Date: Mon, 24 Jun 2024 15:27:42 +0300 Subject: [PATCH] finish_add_exercise --- .../CustomFields/Select/CustomSelect.scss | 1 + .../ValidationField/ValidationField.tsx | 4 +- .../ValidationField/View/Default.tsx | 7 +- .../ValidationField/View/NumberField.tsx | 70 ++++++++++++++ .../utils/ValidationField.scss | 17 ++++ src/Components/ValidationField/utils/types.ts | 28 +++++- src/Layout/Ui/NavBar.tsx | 2 +- src/Pages/Auth/FormField.tsx | 53 +---------- src/Pages/Auth/LoginForm.tsx | 8 +- .../earlyDeparture/Select/CustomSelect.scss | 6 +- src/Pages/Tags/Model/Add.tsx | 35 +++++++ src/Pages/Tags/Model/AddModel.tsx | 66 +++++++++++++ src/Pages/Tags/Model/Delete.tsx | 94 ++++++++++++++++++ src/Pages/Tags/Model/Edit.tsx | 24 +++++ src/Pages/Tags/Model/EditModel.tsx | 69 ++++++++++++++ src/Pages/Tags/Model/formUtil.ts | 14 +++ src/Pages/Tags/Page.tsx | 55 +++++++++++ src/Pages/Tags/Table.tsx | 17 ++++ src/Pages/Tags/index.tsx | 17 ++++ src/Pages/Tags/synonyms/DynamicTags.tsx | 70 ++++++++++++++ src/Pages/Tags/synonyms/Tag.tsx | 66 +++++++++++++ src/Pages/Tags/useTableColumns.tsx | 95 +++++++++++++++++++ src/Pages/Unit/Table.tsx | 2 +- src/Pages/exercise/Model/formUtil.ts | 27 ------ .../{exercise => question}/Model/Add.tsx | 33 +++++-- .../{exercise => question}/Model/AddModel.tsx | 27 ++++-- src/Pages/question/Model/Edit.tsx | 77 +++++++++++++++ src/Pages/question/Model/EditModel.tsx | 86 +++++++++++++++++ .../Model/Field/CheckboxField.tsx | 6 +- .../Model/Field/ChoiceFields.tsx | 0 .../Model/Field/File.tsx | 8 +- .../Model/Field/TextField.tsx | 2 +- .../Model/Tags/DynamicTags.tsx | 10 +- .../{exercise => question}/Model/Tags/Tag.tsx | 6 +- src/Pages/question/Model/formUtil.ts | 42 ++++++++ src/Pages/{exercise => question}/Page.tsx | 2 +- src/Pages/{exercise => question}/Table.tsx | 4 +- .../useTableColumns.tsx | 39 ++++---- src/Routes.tsx | 63 ++++++++++-- src/Styles/App/classNames.scss | 3 + src/Styles/Pages/exercise.scss | 1 + src/api/{exercise.ts => Question.ts} | 18 ++-- src/api/config.ts | 2 +- src/api/helper/useAxios.ts | 7 -- src/api/helper/useGetQuery.ts | 3 +- src/api/semantics.ts | 21 ++++ src/api/tags.ts | 21 ++++ src/enums/Model.ts | 10 ++ src/enums/abilities.ts | 2 +- src/enums/params.ts | 5 +- src/translate/ar.json | 29 ++++-- src/types/Item.ts | 30 ++++++ src/utils/LocalStorage.ts | 18 +++- src/utils/checkChanges.ts | 75 +++++++++++++++ src/utils/hasAbility.ts | 8 +- src/utils/removeStringKeys.ts | 14 +++ src/utils/useFormatDataToSelectQuas.tsx | 13 +++ src/zustand/AuthState.ts | 12 +-- tsconfig.json | 2 +- 59 files changed, 1340 insertions(+), 206 deletions(-) create mode 100644 src/Components/ValidationField/View/NumberField.tsx create mode 100644 src/Pages/Tags/Model/Add.tsx create mode 100644 src/Pages/Tags/Model/AddModel.tsx create mode 100644 src/Pages/Tags/Model/Delete.tsx create mode 100644 src/Pages/Tags/Model/Edit.tsx create mode 100644 src/Pages/Tags/Model/EditModel.tsx create mode 100644 src/Pages/Tags/Model/formUtil.ts create mode 100644 src/Pages/Tags/Page.tsx create mode 100644 src/Pages/Tags/Table.tsx create mode 100644 src/Pages/Tags/index.tsx create mode 100644 src/Pages/Tags/synonyms/DynamicTags.tsx create mode 100644 src/Pages/Tags/synonyms/Tag.tsx create mode 100644 src/Pages/Tags/useTableColumns.tsx delete mode 100644 src/Pages/exercise/Model/formUtil.ts rename src/Pages/{exercise => question}/Model/Add.tsx (57%) rename src/Pages/{exercise => question}/Model/AddModel.tsx (66%) create mode 100644 src/Pages/question/Model/Edit.tsx create mode 100644 src/Pages/question/Model/EditModel.tsx rename src/Pages/{exercise => question}/Model/Field/CheckboxField.tsx (78%) rename src/Pages/{exercise => question}/Model/Field/ChoiceFields.tsx (100%) rename src/Pages/{exercise => question}/Model/Field/File.tsx (88%) rename src/Pages/{exercise => question}/Model/Field/TextField.tsx (97%) rename src/Pages/{exercise => question}/Model/Tags/DynamicTags.tsx (91%) rename src/Pages/{exercise => question}/Model/Tags/Tag.tsx (96%) create mode 100644 src/Pages/question/Model/formUtil.ts rename src/Pages/{exercise => question}/Page.tsx (93%) rename src/Pages/{exercise => question}/Table.tsx (77%) rename src/Pages/{exercise => question}/useTableColumns.tsx (77%) rename src/api/{exercise.ts => Question.ts} (52%) create mode 100644 src/api/semantics.ts create mode 100644 src/api/tags.ts create mode 100644 src/utils/checkChanges.ts create mode 100644 src/utils/removeStringKeys.ts create mode 100644 src/utils/useFormatDataToSelectQuas.tsx diff --git a/src/Components/CustomFields/Select/CustomSelect.scss b/src/Components/CustomFields/Select/CustomSelect.scss index f979d63..5d0e830 100644 --- a/src/Components/CustomFields/Select/CustomSelect.scss +++ b/src/Components/CustomFields/Select/CustomSelect.scss @@ -108,6 +108,7 @@ border-top-left-radius: 30px !important; transition: 0.5s ease-in-out; + height: 2.5vw !important; // background-color: red !important; } diff --git a/src/Components/ValidationField/ValidationField.tsx b/src/Components/ValidationField/ValidationField.tsx index 7d3cc79..771ea8a 100644 --- a/src/Components/ValidationField/ValidationField.tsx +++ b/src/Components/ValidationField/ValidationField.tsx @@ -16,6 +16,7 @@ import { import { ValidationFieldProps, ValidationFieldType } from "./utils/types"; import LocalSearchField from "./View/LocalSearch"; import NumberFormate from "./View/NumberFormate"; +import NumberField from "./View/NumberField"; const components: { [key: string]: React.FC } = { Select: SelectField, @@ -30,10 +31,11 @@ const components: { [key: string]: React.FC } = { MaltyFile: MaltyFile, Checkbox: CheckboxField, NumberFormate: NumberFormate, + Number:NumberField }; const ValidationField: React.FC = React.memo( - ({ type, ...otherProps }) => { + ({ type, ...otherProps }:any) => { const Component = components[type as ValidationFieldType]; if (!Component) { diff --git a/src/Components/ValidationField/View/Default.tsx b/src/Components/ValidationField/View/Default.tsx index d26556a..79753d3 100644 --- a/src/Components/ValidationField/View/Default.tsx +++ b/src/Components/ValidationField/View/Default.tsx @@ -3,6 +3,7 @@ import React from "react"; import useFormField from "../../../Hooks/useFormField"; import { MdOutlineEdit } from "react-icons/md"; import { Field } from "formik"; +import { ValidationFieldPropsInput } from "../utils/types"; const Default = ({ name, @@ -14,7 +15,7 @@ const Default = ({ no_label, label_icon, ...props -}: any) => { +}: ValidationFieldPropsInput) => { const { errorMsg, isError, t } = useFormField(name, props); return ( @@ -50,9 +51,9 @@ const Default = ({ name={name} disabled={isDisabled} size="large" - {...props} - // onChange={onChange ? onChange : handleChange} + {...(type === "number" && { min: 0 })} + {...props} /> diff --git a/src/Components/ValidationField/View/NumberField.tsx b/src/Components/ValidationField/View/NumberField.tsx new file mode 100644 index 0000000..81c4d98 --- /dev/null +++ b/src/Components/ValidationField/View/NumberField.tsx @@ -0,0 +1,70 @@ +import { Form, Input, InputNumber } from "antd"; +import React from "react"; +import useFormField from "../../../Hooks/useFormField"; +import { MdOutlineEdit } from "react-icons/md"; +import { Field } from "formik"; +import { ValidationFieldPropsInput } from "../utils/types"; + +const NumberField = ({ + name, + label, + placeholder, + isDisabled, + onChange, + type, + no_label, + label_icon, + ...props +}: ValidationFieldPropsInput) => { + const { errorMsg, isError, t ,formik} = useFormField(name, props); + + const handleChange = ( + e: React.ChangeEvent, + ) => { + console.log('Change:', e); + formik.setFieldValue(name, e); + }; + + return ( +
+ {no_label ? ( + + ) : label_icon ? ( +
+ + +
+ ) : ( + + )} + + + + +
+ ); +}; + +export default React.memo(NumberField); diff --git a/src/Components/ValidationField/utils/ValidationField.scss b/src/Components/ValidationField/utils/ValidationField.scss index a2e8ee2..e3851d0 100644 --- a/src/Components/ValidationField/utils/ValidationField.scss +++ b/src/Components/ValidationField/utils/ValidationField.scss @@ -62,6 +62,10 @@ } .Checkboxs { padding: 4%; + +} +.ant-checkbox-wrapper{ + min-width: 100px; } .SearchField { button { @@ -209,4 +213,17 @@ input:-webkit-autofill:hover { svg{ color: var(--primary); } +} +.ValidationField:has(.input_number){ + max-width: 100px; + + .input_number{ + max-width: 100px; + } +} + +.flex{ + display: flex; + gap: 30px ; + max-width: 80% !important; } \ No newline at end of file diff --git a/src/Components/ValidationField/utils/types.ts b/src/Components/ValidationField/utils/types.ts index d2595cc..5535241 100644 --- a/src/Components/ValidationField/utils/types.ts +++ b/src/Components/ValidationField/utils/types.ts @@ -1,3 +1,5 @@ +import { InputProps } from "antd"; + export type ValidationFieldType = | "text" | "Select" @@ -159,8 +161,32 @@ export interface ValidationFieldPropstext { [key: string]: any; // Index signature to allow any additional props } + + + + +///// new +export interface BaseField { + name: string; + label?: string; + placeholder?: string; +} +export type OmitBaseType = 'placeholder' | 'name' | 'label' | 'type'; + +export type OmitPicker = OmitBaseType | 'format'; + +export interface ValidationFieldPropsInput + extends Omit, + BaseField { + type: 'text' | 'number' | 'password' | 'email' | "Number"; + isDisabled?:boolean +no_label?:string +label_icon?:string +} + + export type ValidationFieldProps = - | ValidationFieldPropsText + | ValidationFieldPropsInput | ValidationFieldPropsSelect | ValidationFieldPropsLocalSearch | ValidationFieldPropsDataRange diff --git a/src/Layout/Ui/NavBar.tsx b/src/Layout/Ui/NavBar.tsx index 2862f38..d96d1dd 100644 --- a/src/Layout/Ui/NavBar.tsx +++ b/src/Layout/Ui/NavBar.tsx @@ -51,7 +51,7 @@ const NavBar = () => {
- + {/* */} { - const { values } = useFormikContext(); - const [branchId, setbranchId] = useState(null); - const [cycleId, setcycleId] = useState(null); - const { cycle, branch } = values as any; - - useEffect(() => { - setbranchId(branch); - }, [branch]); - useEffect(() => { - setcycleId(cycle); - }, [cycle]); - - const { data: branchData } = useGetAllBranch(); - const { data: CycleData } = useGetAllCycle( - { br_id: branchId }, - { enabled: !!branchId }, - ); - const { data: TermData } = useGetAllTerm( - { cy_id: cycleId }, - { enabled: !!cycleId }, - ); - - const BranchDataSelect = useFormatAuthDataToSelect(branchData?.data); - const BranchCycleData = useFormatAuthDataToSelect(CycleData?.data); - const BranchTermData = useFormatAuthDataToSelect(TermData?.data); const [t] = useTranslation(); return (
- - - +