Done
This commit is contained in:
parent
c47ea73fdb
commit
6ec649308d
|
|
@ -4,8 +4,6 @@ import Loading from './Components/Utils/Loading/Loading';
|
||||||
import { RoutesLinks } from './Routes';
|
import { RoutesLinks } from './Routes';
|
||||||
import Layout from './Layout/app/Layout';
|
import Layout from './Layout/app/Layout';
|
||||||
import Auth from './Pages/Auth/Page';
|
import Auth from './Pages/Auth/Page';
|
||||||
import EditAccount from './Pages/Account/EditAccount/EditAccount';
|
|
||||||
import { toast } from 'react-toastify';
|
|
||||||
const Page404 = lazy(() => import("./Layout/app/NotFoundPage"))
|
const Page404 = lazy(() => import("./Layout/app/NotFoundPage"))
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
|
|
|
||||||
|
|
@ -1,93 +1,33 @@
|
||||||
|
import React from 'react';
|
||||||
import { Menu, MenuItem, MenuButton } from '@szhsin/react-menu';
|
import { Menu, MenuItem, MenuButton } from '@szhsin/react-menu';
|
||||||
import { useTranslation, initReactI18next } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import i18n from 'i18next';
|
import { useLanguage, useLanguageMenu } from '../../Hooks/useChangeLanguage';
|
||||||
import translationEN from '../../translate/en.json';
|
import i18next from 'i18next';
|
||||||
import translationAR from '../../translate/ar.json';
|
|
||||||
import translationDE from '../../translate/de.json';
|
|
||||||
|
|
||||||
i18n.use(initReactI18next).init({
|
|
||||||
resources: {
|
|
||||||
en: {
|
|
||||||
translation: translationEN
|
|
||||||
},
|
|
||||||
ar: {
|
|
||||||
translation: translationAR
|
|
||||||
},
|
|
||||||
de: {
|
|
||||||
translation: translationDE
|
|
||||||
}
|
|
||||||
},
|
|
||||||
lng: 'en',
|
|
||||||
interpolation: {
|
|
||||||
escapeValue: false
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let What_the_language = localStorage.getItem('language') ?? "en";
|
|
||||||
|
|
||||||
if (What_the_language === "en") {
|
|
||||||
i18n.changeLanguage('en');
|
|
||||||
document.body.setAttribute('dir', 'ltr');
|
|
||||||
document.body.classList.add('en');
|
|
||||||
} else if (What_the_language === "ar") {
|
|
||||||
i18n.changeLanguage('ar');
|
|
||||||
document.body.setAttribute('dir', 'rtl');
|
|
||||||
document.body.classList.add('ar');
|
|
||||||
} else if (What_the_language === "de") {
|
|
||||||
i18n.changeLanguage('de');
|
|
||||||
document.body.setAttribute('dir', 'ltr');
|
|
||||||
document.body.classList.add('de');
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Translate() {
|
export default function Translate() {
|
||||||
const { t, i18n } = useTranslation();
|
const { changeLanguage } = useLanguage();
|
||||||
|
const { languageOptions } = useLanguageMenu();
|
||||||
|
|
||||||
const changeLanguage = (newLanguage : string) => {
|
const handleLanguageChange = (newLanguage:string) => {
|
||||||
i18n.changeLanguage(newLanguage);
|
changeLanguage(newLanguage);
|
||||||
localStorage.setItem("language", newLanguage);
|
|
||||||
What_the_language = newLanguage;
|
|
||||||
if (newLanguage === "ar") {
|
|
||||||
document.body.setAttribute('dir', 'rtl');
|
|
||||||
document.body.classList.remove('de');
|
|
||||||
document.body.classList.add('ar');
|
|
||||||
} else if (newLanguage === "en") {
|
|
||||||
document.body.setAttribute('dir', 'ltr');
|
|
||||||
document.body.classList.remove('ar', 'de');
|
|
||||||
document.body.classList.add('en');
|
|
||||||
} else if (newLanguage === "de") {
|
|
||||||
document.body.setAttribute('dir', 'ltr');
|
|
||||||
document.body.classList.remove('ar');
|
|
||||||
document.body.classList.add('de');
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='Translate'>
|
<div className='Translate'>
|
||||||
<Menu menuButton={<MenuButton>
|
<Menu menuButton={<MenuButton>
|
||||||
{What_the_language === "ar" ?
|
{languageOptions.map((option:any,index:number) => (
|
||||||
<>
|
option.code === i18next.language ?
|
||||||
<img alt='' src={`/Layout/Ar.svg`} width={20} height={20} /> {t("Arabic")}
|
<React.Fragment key={index}>
|
||||||
</>
|
<img alt='' src={option.icon} width={20} height={20} /> {option.label}
|
||||||
:
|
</React.Fragment>
|
||||||
What_the_language === "de" ?
|
: null
|
||||||
<>
|
))}
|
||||||
<img alt='' src={`/Layout/De.svg`} width={20} height={20} /> {t("German")}
|
|
||||||
</>
|
|
||||||
:
|
|
||||||
<>
|
|
||||||
<img alt='' src={`/Layout/En.svg`} width={20} height={20} /> {t("English")}
|
|
||||||
</>
|
|
||||||
}
|
|
||||||
</MenuButton>} transition>
|
</MenuButton>} transition>
|
||||||
<MenuItem onClick={() => changeLanguage('ar')}>
|
{languageOptions.map((option:any) => (
|
||||||
<img alt='' src='/Layout/Ar.svg' width={20} height={20} /> {t("Arabic")}
|
<MenuItem key={option.code} onClick={() => handleLanguageChange(option.code)}>
|
||||||
</MenuItem>
|
<img alt='' src={option.icon} width={20} height={20} /> {option.label}
|
||||||
<MenuItem onClick={() => changeLanguage('en')}>
|
|
||||||
<img alt='' src='/Layout/En.svg' width={20} height={20} /> {t("English")}
|
|
||||||
</MenuItem>
|
|
||||||
<MenuItem onClick={() => changeLanguage('de')}>
|
|
||||||
<img alt='' src='/Layout/De.svg' width={20} height={20} /> {t("German")}
|
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
))}
|
||||||
</Menu>
|
</Menu>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
71
src/Hooks/useChangeLanguage.tsx
Normal file
71
src/Hooks/useChangeLanguage.tsx
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
import { useEffect } from 'react';
|
||||||
|
import { initReactI18next, useTranslation } from 'react-i18next';
|
||||||
|
import i18n from 'i18next';
|
||||||
|
import translationEN from '../translate/en.json';
|
||||||
|
import translationAR from '../translate/ar.json';
|
||||||
|
import translationDE from '../translate/de.json';
|
||||||
|
|
||||||
|
|
||||||
|
let language = localStorage.getItem('language') ?? 'en';
|
||||||
|
|
||||||
|
i18n.use(initReactI18next).init({
|
||||||
|
resources: {
|
||||||
|
en: {
|
||||||
|
translation: translationEN
|
||||||
|
},
|
||||||
|
ar: {
|
||||||
|
translation: translationAR
|
||||||
|
},
|
||||||
|
de: {
|
||||||
|
translation: translationDE
|
||||||
|
}
|
||||||
|
},
|
||||||
|
lng: language ?? "en",
|
||||||
|
interpolation: {
|
||||||
|
escapeValue: false
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// console.log(navigator.language,"navigator.language");
|
||||||
|
|
||||||
|
export function useLanguage() {
|
||||||
|
useEffect(() => {
|
||||||
|
changeLanguage(language);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const changeLanguage = (newLanguage:any) => {
|
||||||
|
i18n.changeLanguage(newLanguage);
|
||||||
|
localStorage.setItem('language', newLanguage);
|
||||||
|
applyLanguageStyles(newLanguage);
|
||||||
|
};
|
||||||
|
|
||||||
|
return { changeLanguage };
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyLanguageStyles(language:any) {
|
||||||
|
if (language === 'ar') {
|
||||||
|
document.body.setAttribute('dir', 'rtl');
|
||||||
|
document.body.classList.remove('de');
|
||||||
|
document.body.classList.add('ar');
|
||||||
|
} else if (language === 'en') {
|
||||||
|
document.body.setAttribute('dir', 'ltr');
|
||||||
|
document.body.classList.remove('ar', 'de');
|
||||||
|
document.body.classList.add('en');
|
||||||
|
} else if (language === 'de') {
|
||||||
|
document.body.setAttribute('dir', 'ltr');
|
||||||
|
document.body.classList.remove('ar');
|
||||||
|
document.body.classList.add('de');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useLanguageMenu() {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const languageOptions = [
|
||||||
|
{ code: 'ar', icon: '/Layout/Ar.svg', label: t('Arabic') },
|
||||||
|
{ code: 'en', icon: '/Layout/En.svg', label: t('English') },
|
||||||
|
{ code: 'de', icon: '/Layout/De.svg', label: t('German') }
|
||||||
|
];
|
||||||
|
|
||||||
|
return { languageOptions };
|
||||||
|
}
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
import React, { FC, useEffect } from "react";
|
|
||||||
import { RegisterForm } from "./RegisterForm";
|
|
||||||
import { Card, CardHeader, CardBody } from "reactstrap";
|
|
||||||
import { useAddAccount } from "../../../api/Account";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { useNavigate } from "react-router-dom";
|
|
||||||
|
|
||||||
const AddAccount: FC = () => {
|
|
||||||
const {t} = useTranslation();
|
|
||||||
const addMutation: any = useAddAccount();
|
|
||||||
const Naviagte = useNavigate();
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (addMutation.isSuccess) {
|
|
||||||
Naviagte("/Account/View");
|
|
||||||
}
|
|
||||||
}, [addMutation.isSuccess]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Card>
|
|
||||||
<CardHeader>
|
|
||||||
<h4 className="add_account_title">{t("add_account")}</h4>
|
|
||||||
</CardHeader>
|
|
||||||
<CardBody>
|
|
||||||
<RegisterForm mutation={addMutation} />
|
|
||||||
</CardBody>
|
|
||||||
</Card>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default AddAccount;
|
|
||||||
|
|
@ -1,164 +0,0 @@
|
||||||
import React, { FC } from "react";
|
|
||||||
import { Form, Formik } from "formik";
|
|
||||||
import { Row, Col } from "reactstrap";
|
|
||||||
import MailOutlineIcon from "@mui/icons-material/MailOutline";
|
|
||||||
import LockOutlinedIcon from "@mui/icons-material/LockOutlined";
|
|
||||||
import PersonOutlineOutlinedIcon from "@mui/icons-material/PersonOutlineOutlined";
|
|
||||||
import { ADMIN, Roles, SUPER_ADMIN, VENDOR} from "../../../config/RoleConfige";
|
|
||||||
import * as Yup from "yup";
|
|
||||||
import "./index.css";
|
|
||||||
import PropTypes from "prop-types";
|
|
||||||
import { getDataToSend } from "../../../api/Account";
|
|
||||||
import Select from 'react-select';
|
|
||||||
import { convet_data_to_select } from "./Utils";
|
|
||||||
// import { useGetAllRoles } from "../../../api/Role";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { ValidatedField } from "../../../Components/Ui";
|
|
||||||
import { LoadingButton } from "../../../Components/Ui/LoadingButton";
|
|
||||||
import ValidationField from "../../../Components/ValidationField/ValidationField";
|
|
||||||
|
|
||||||
interface RegisterFormProps {
|
|
||||||
mutation: any;
|
|
||||||
editMode?: boolean;
|
|
||||||
objectToEdit?: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const RegisterForm: FC<RegisterFormProps> = ({ mutation, editMode = false, objectToEdit = {} }) => {
|
|
||||||
const {t} = useTranslation();
|
|
||||||
// const {data} = useGetAllRoles();
|
|
||||||
|
|
||||||
|
|
||||||
const rolesOptions = convet_data_to_select([]);
|
|
||||||
|
|
||||||
const handleSubmit = (values: any) => {
|
|
||||||
values['role_name'] = rolesOptions.find(e => e.value == values['role_id'])?.label
|
|
||||||
const dataToSend = getDataToSend(values, editMode, objectToEdit);
|
|
||||||
|
|
||||||
|
|
||||||
mutation.mutate(dataToSend);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Formik
|
|
||||||
initialValues={getInitialValues(editMode, objectToEdit)}
|
|
||||||
validationSchema={getValidationSchema(editMode)}
|
|
||||||
onSubmit={handleSubmit}
|
|
||||||
>
|
|
||||||
{(formik) => (
|
|
||||||
<Form>
|
|
||||||
<Row lg={2} xl={2}>
|
|
||||||
<Col>
|
|
||||||
<ValidationField
|
|
||||||
name="full_name"
|
|
||||||
label="full_name"
|
|
||||||
placeholder="full_name"
|
|
||||||
type="text"
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
<Col>
|
|
||||||
<ValidationField
|
|
||||||
type="Select"
|
|
||||||
option={rolesOptions}
|
|
||||||
label="role"
|
|
||||||
placeholder="Select Role"
|
|
||||||
name="role_id"
|
|
||||||
/>
|
|
||||||
<p style={{color:'red'}}>{formik.errors.role_name} </p>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
<Row xs={1} sm={1} md={2} lg={2} xl={2}>
|
|
||||||
<Col>
|
|
||||||
<ValidationField
|
|
||||||
name="email"
|
|
||||||
label="email"
|
|
||||||
placeholder="email"
|
|
||||||
type="text"
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
<Col>
|
|
||||||
<ValidationField
|
|
||||||
name="phone"
|
|
||||||
label="phone"
|
|
||||||
placeholder="phone"
|
|
||||||
type="number"
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
{!editMode && (
|
|
||||||
<>
|
|
||||||
<Col>
|
|
||||||
<ValidationField
|
|
||||||
name="password"
|
|
||||||
label="password"
|
|
||||||
placeholder="password"
|
|
||||||
type="password"
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
<Col>
|
|
||||||
<ValidationField
|
|
||||||
name="password_confirmation"
|
|
||||||
label="confirm_password"
|
|
||||||
placeholder="confirm_password"
|
|
||||||
type="password"
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</Row>
|
|
||||||
<LoadingButton
|
|
||||||
isLoading={mutation.isLoading}
|
|
||||||
className="mt-1 float-right"
|
|
||||||
color="primary"
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
{!editMode ? t("add") : t("save")}
|
|
||||||
</LoadingButton>
|
|
||||||
</Form>
|
|
||||||
)}
|
|
||||||
</Formik>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
RegisterForm.propTypes = {
|
|
||||||
editMode: PropTypes.bool,
|
|
||||||
objectToEdit: PropTypes.object,
|
|
||||||
};
|
|
||||||
|
|
||||||
RegisterForm.defaultProps = {
|
|
||||||
editMode: false,
|
|
||||||
objectToEdit: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
function getInitialValues(editMode: boolean, objectToEdit: any) {
|
|
||||||
if (editMode) {
|
|
||||||
|
|
||||||
return {
|
|
||||||
full_name: objectToEdit.full_name,
|
|
||||||
email: objectToEdit.email,
|
|
||||||
phone: objectToEdit.phone,
|
|
||||||
role: objectToEdit.role_type,
|
|
||||||
password: "",
|
|
||||||
password_confirmation: "",
|
|
||||||
role_id:objectToEdit?.roles.id
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
full_name: "",
|
|
||||||
email: "",
|
|
||||||
password: "",
|
|
||||||
password_confirmation: "",
|
|
||||||
phone: "",
|
|
||||||
role_name: "",
|
|
||||||
role_id:''
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function getValidationSchema(editMode: boolean) {
|
|
||||||
return Yup.object().shape({
|
|
||||||
full_name: Yup.string().required("required"),
|
|
||||||
email: Yup.string().email("validation.invalid_email").required("required"),
|
|
||||||
phone: Yup.string().required("required"),
|
|
||||||
role_id:Yup.string().required("required"),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
export const convet_data_to_select = (array: any[]): { label: string, value: string }[] => {
|
|
||||||
let new_array: { label: string, value: string }[] = [];
|
|
||||||
new_array = array.map(e => ({ label: e.name, value: e.id }));
|
|
||||||
return new_array;
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
.permissions-section {
|
|
||||||
padding: 1.5rem;
|
|
||||||
border: 1px solid lightgray;
|
|
||||||
border-radius: 10px;
|
|
||||||
|
|
||||||
white-space: pre-wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.RoleTitle{
|
|
||||||
font-weight: 500;
|
|
||||||
margin-bottom: 0;
|
|
||||||
color: var(--primary);
|
|
||||||
}
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
import React, { FC, useEffect } from "react";
|
|
||||||
import { RegisterForm } from "../AddAccount/RegisterForm";
|
|
||||||
import { Card, CardHeader, CardBody, Button } from "reactstrap";
|
|
||||||
import { useUpdateAccount } from "../../../api/Account";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { useLocation, useNavigate } from "react-router-dom";
|
|
||||||
|
|
||||||
interface EditAccountProps {
|
|
||||||
location: {
|
|
||||||
state: any;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const EditAccount: FC<EditAccountProps> = () => {
|
|
||||||
const {t} = useTranslation();
|
|
||||||
const location = useLocation()
|
|
||||||
const objectToEdit = location?.state;
|
|
||||||
console.log(objectToEdit);
|
|
||||||
|
|
||||||
const updateMutation = useUpdateAccount();
|
|
||||||
const Navigate = useNavigate();
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (updateMutation.isSuccess) {
|
|
||||||
Navigate("/Account/View");
|
|
||||||
}
|
|
||||||
}, [updateMutation.isSuccess]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Card>
|
|
||||||
<CardHeader style={{ display: 'flex', justifyContent: 'space-between', width: '100%' }}>
|
|
||||||
<h4 className="add_account_title">{t("edit_account")}</h4>
|
|
||||||
<Button onClick={() => Navigate('/Account/View')} color="primary">
|
|
||||||
{t('back')}
|
|
||||||
</Button>
|
|
||||||
</CardHeader>
|
|
||||||
<CardBody>
|
|
||||||
<RegisterForm
|
|
||||||
mutation={updateMutation}
|
|
||||||
editMode={true}
|
|
||||||
objectToEdit={objectToEdit}
|
|
||||||
/>
|
|
||||||
</CardBody>
|
|
||||||
</Card>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default EditAccount;
|
|
||||||
|
|
@ -1,80 +0,0 @@
|
||||||
import React, { FC, useState, useEffect } from "react";
|
|
||||||
import { Modal, ModalHeader, ModalBody, ModalFooter, Button } from "reactstrap";
|
|
||||||
import { Formik, Form } from "formik";
|
|
||||||
// import ChangePassword, {
|
|
||||||
// initialValues,
|
|
||||||
// validationSchema,
|
|
||||||
// } from "components/forms/ChangePassword";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { LoadingButton } from "../../../Components/Ui/LoadingButton";
|
|
||||||
import { useChangePassword } from "../../../api/Account";
|
|
||||||
import ChangePassword, { initialValues, validationSchema } from "./formutils";
|
|
||||||
|
|
||||||
interface EditPasswordModalProps {
|
|
||||||
isOpen: boolean;
|
|
||||||
setIsOpen: (isOpen: boolean) => void;
|
|
||||||
objectToEdit: any;
|
|
||||||
setObjectToEdit: (objectToEdit: any) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
const EditPasswordModal: FC<EditPasswordModalProps> = ({
|
|
||||||
isOpen,
|
|
||||||
setIsOpen,
|
|
||||||
objectToEdit,
|
|
||||||
setObjectToEdit,
|
|
||||||
}) => {
|
|
||||||
const {t} = useTranslation();
|
|
||||||
const updateMutation = useChangePassword();
|
|
||||||
|
|
||||||
const handleSubmit = (values: any) => {
|
|
||||||
updateMutation.mutate({ ...values, account_id: objectToEdit.id , password_confirmation:values.c_password });
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (updateMutation.isSuccess) {
|
|
||||||
setIsOpen(false);
|
|
||||||
}
|
|
||||||
}, [updateMutation.isSuccess, setIsOpen]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Modal centered isOpen={isOpen} size="md">
|
|
||||||
<ModalHeader className="change_password_header">{t("change_password")}</ModalHeader>
|
|
||||||
{objectToEdit && (
|
|
||||||
<Formik
|
|
||||||
onSubmit={handleSubmit}
|
|
||||||
initialValues={initialValues}
|
|
||||||
validationSchema={validationSchema}
|
|
||||||
>
|
|
||||||
{(formik) => (
|
|
||||||
<Form>
|
|
||||||
<ModalBody>
|
|
||||||
<div>
|
|
||||||
<h6 className="change_password_body">{objectToEdit?.full_name}</h6>
|
|
||||||
</div>
|
|
||||||
<ChangePassword />
|
|
||||||
</ModalBody>
|
|
||||||
<ModalFooter>
|
|
||||||
<Button
|
|
||||||
disabled={updateMutation.isLoading}
|
|
||||||
onClick={() => setIsOpen(false)}
|
|
||||||
color="danger"
|
|
||||||
>
|
|
||||||
{t("cancel")}
|
|
||||||
</Button>
|
|
||||||
<LoadingButton
|
|
||||||
type="submit"
|
|
||||||
color="primary"
|
|
||||||
isLoading={updateMutation.isLoading}
|
|
||||||
>
|
|
||||||
{t("save")}
|
|
||||||
</LoadingButton>
|
|
||||||
</ModalFooter>
|
|
||||||
</Form>
|
|
||||||
)}
|
|
||||||
</Formik>
|
|
||||||
)}
|
|
||||||
</Modal>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default EditPasswordModal;
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
import React, { FC } from "react";
|
|
||||||
import * as Yup from "yup";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { PasswordField } from "../../../Components/Ui/PasswordField/PasswordField";
|
|
||||||
|
|
||||||
interface ChangePasswordProps {
|
|
||||||
id?: string;
|
|
||||||
mutation?: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const validationSchema = Yup.object().shape({
|
|
||||||
password: Yup.string().required("_required.password"),
|
|
||||||
c_password: Yup.string()
|
|
||||||
.required("_required.password")
|
|
||||||
.oneOf([Yup.ref("password")], "validation.passwords_match"),
|
|
||||||
});
|
|
||||||
|
|
||||||
export const initialValues = {
|
|
||||||
password: "",
|
|
||||||
c_password: "",
|
|
||||||
};
|
|
||||||
|
|
||||||
const ChangePassword: FC<ChangePasswordProps> = ({ id, mutation }) => {
|
|
||||||
const {t} = useTranslation();
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<PasswordField
|
|
||||||
|
|
||||||
name="password"
|
|
||||||
label={t("password")}
|
|
||||||
// placeholder="Password"
|
|
||||||
/>
|
|
||||||
<PasswordField
|
|
||||||
name="c_password"
|
|
||||||
label={t("confirm_password")}
|
|
||||||
// placeholder="Confirm Password"
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default ChangePassword;
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
|
|
||||||
import React from 'react'
|
|
||||||
import { Col, Row } from 'reactstrap';
|
|
||||||
import ValidationField from '../../../Components/ValidationField/ValidationField';
|
|
||||||
import { FakeSelectData } from '../../../Layout/app/Const';
|
|
||||||
import { useFormikContext } from 'formik';
|
|
||||||
|
|
||||||
import { DatePicker } from 'antd';
|
|
||||||
|
|
||||||
function FormViewAccount() {
|
|
||||||
const formik = useFormikContext<any>();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Row xs={1} sm={1} md={1} lg={2} xl={2}>
|
|
||||||
<Col>
|
|
||||||
<ValidationField name="name" type="text"label='name' placeholder='placeholder' />
|
|
||||||
|
|
||||||
|
|
||||||
</Col>
|
|
||||||
<Col>
|
|
||||||
<ValidationField name="date" type="Date" label='date' placeholder='placeholder' />
|
|
||||||
|
|
||||||
</Col>
|
|
||||||
|
|
||||||
|
|
||||||
</Row>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default FormViewAccount
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
|
|
||||||
import React from 'react'
|
|
||||||
import DashBody from '../../../Layout/Dashboard/DashBody'
|
|
||||||
import DashHeader from '../../../Layout/Dashboard/DashHeader'
|
|
||||||
import LyTable from '../../../Layout/Dashboard/LyTable'
|
|
||||||
import useTableColumns from './useTableColumns'
|
|
||||||
import { useGetAccounts} from '../../../api/Account'
|
|
||||||
import { QueryStatusEnum } from '../../../config/QueryStatus'
|
|
||||||
import EditPasswordModal from '../EditAccount/EditPassword'
|
|
||||||
|
|
||||||
function ViewAccountPage() {
|
|
||||||
|
|
||||||
const {data ,status } = useGetAccounts()
|
|
||||||
|
|
||||||
const [editPasswordModal, setEditPasswordModal] = React.useState(false);
|
|
||||||
const [objectToEdit, setObjectToEdit] = React.useState(null);
|
|
||||||
|
|
||||||
const columns = useTableColumns(setEditPasswordModal ,setObjectToEdit);
|
|
||||||
|
|
||||||
return (
|
|
||||||
// Pass Status to Layout
|
|
||||||
<DashBody status={status as QueryStatusEnum} >
|
|
||||||
<DashHeader title={'view_accounts'} showAddButton={false}></DashHeader>
|
|
||||||
|
|
||||||
<LyTable
|
|
||||||
data={data}
|
|
||||||
isLoading={false}
|
|
||||||
columns={columns}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<EditPasswordModal
|
|
||||||
isOpen={editPasswordModal}
|
|
||||||
setIsOpen={setEditPasswordModal}
|
|
||||||
objectToEdit={objectToEdit}
|
|
||||||
setObjectToEdit={setObjectToEdit}
|
|
||||||
/>
|
|
||||||
|
|
||||||
</DashBody>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default ViewAccountPage
|
|
||||||
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
|
|
||||||
import * as Yup from "yup";
|
|
||||||
import { buildFormData } from "../../../api/helper/buildFormData";
|
|
||||||
|
|
||||||
interface formUtilCommon {
|
|
||||||
name:string,
|
|
||||||
email:string
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ObjectToEdit extends formUtilCommon {
|
|
||||||
|
|
||||||
id?:number,
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
interface InitialValues extends ObjectToEdit {
|
|
||||||
|
|
||||||
}
|
|
||||||
interface ValidateSchema extends formUtilCommon{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getInitialValues = (objectToEdit: ObjectToEdit | null = null): InitialValues => {
|
|
||||||
|
|
||||||
|
|
||||||
return {
|
|
||||||
id:objectToEdit?.id?? 0 ,
|
|
||||||
name:objectToEdit?.name ?? "",
|
|
||||||
email:objectToEdit?.email?? ""
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getValidationSchema = (editMode: boolean = false): Yup.Schema<ValidateSchema> => {
|
|
||||||
// validate input
|
|
||||||
return Yup.object().shape({
|
|
||||||
name:Yup.string().required('required'),
|
|
||||||
email:Yup.string().required("required")
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getDataToSend = (values: any): FormData => {
|
|
||||||
const data = { ...values };
|
|
||||||
|
|
||||||
|
|
||||||
const formData = new FormData();
|
|
||||||
buildFormData(formData, data);
|
|
||||||
return formData;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
|
|
||||||
import React, { useMemo } from "react";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import Actions from "../../../Components/Ui/tables/Actions";
|
|
||||||
import { useNavigate } from "react-router";
|
|
||||||
import useDeleteMutation from "../../../api/helper/useDeleteMutation";
|
|
||||||
import { useDeleteAccount } from "../../../api/Account";
|
|
||||||
import { RiLockPasswordFill } from "react-icons/ri";
|
|
||||||
|
|
||||||
|
|
||||||
const useTableColumns :any = (setEditPasswordModal:any ,setObjectToEdit: any) => {
|
|
||||||
const [t] = useTranslation();
|
|
||||||
const navigate = useNavigate();
|
|
||||||
const deleteMutation = useDeleteAccount();
|
|
||||||
|
|
||||||
return useMemo(
|
|
||||||
() => [
|
|
||||||
{
|
|
||||||
name: t("full_name"),
|
|
||||||
sortable: false,
|
|
||||||
center: "true",
|
|
||||||
cell: (row:any) => row?.full_name
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: t("role"),
|
|
||||||
sortable: false,
|
|
||||||
center: "true",
|
|
||||||
cell: (row:any) => row?.roles?.name
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: t("email"),
|
|
||||||
sortable: false,
|
|
||||||
center: "true",
|
|
||||||
cell: (row:any) => row?.email
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: t("phone"),
|
|
||||||
sortable: false,
|
|
||||||
center: "true",
|
|
||||||
cell: (row:any) => row?.phone
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
name: "#",
|
|
||||||
sortable: false,
|
|
||||||
center: "true",
|
|
||||||
cell: (row) => (
|
|
||||||
<>
|
|
||||||
<Actions
|
|
||||||
// importnat to return the row in on Edit Function to store in objectToEdit That Upper in Edit Modal
|
|
||||||
onEdit={() => {
|
|
||||||
navigate("/Account/Edit" ,{
|
|
||||||
state:row
|
|
||||||
})
|
|
||||||
}}
|
|
||||||
showView={false}
|
|
||||||
objectToEdit={row}
|
|
||||||
showEdit={true}
|
|
||||||
onDelete={() => deleteMutation.mutate({id:row.id })}
|
|
||||||
/>
|
|
||||||
<RiLockPasswordFill
|
|
||||||
onClick={() => {
|
|
||||||
// navigate('/')
|
|
||||||
setEditPasswordModal(true);
|
|
||||||
setObjectToEdit(row);
|
|
||||||
}}
|
|
||||||
className="lock_icon"
|
|
||||||
size={22}
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[t]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default useTableColumns;
|
|
||||||
|
|
||||||
|
|
@ -6,7 +6,6 @@ import ColumnsImage from "../../Components/Columns/ColumnsImage";
|
||||||
import { useDeleteCategories } from "../../api/Categories";
|
import { useDeleteCategories } from "../../api/Categories";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
|
|
||||||
function fnDelete(props :any ){}
|
|
||||||
|
|
||||||
const useTableColumns :any = () => {
|
const useTableColumns :any = () => {
|
||||||
const [t] = useTranslation();
|
const [t] = useTranslation();
|
||||||
|
|
@ -60,29 +59,7 @@ const useTableColumns :any = () => {
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// name: t("status"),
|
|
||||||
// sortable: false,
|
|
||||||
// center: "true",
|
|
||||||
// cell: (row:any) => {
|
|
||||||
|
|
||||||
// return(
|
|
||||||
// <p style={{
|
|
||||||
// background:!row.deleted_at ?'#19ab27':'#ea5454',
|
|
||||||
// color:"white",
|
|
||||||
// padding:6,
|
|
||||||
// borderRadius:10,
|
|
||||||
// position:"relative",
|
|
||||||
// top:'7px'
|
|
||||||
// }}>
|
|
||||||
// {
|
|
||||||
// !row.deleted_at ? t('available') : t('unavailable')
|
|
||||||
|
|
||||||
// }
|
|
||||||
// </p>
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
|
|
||||||
],
|
],
|
||||||
[t]
|
[t]
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
import React from 'react'
|
import React, { useEffect } from 'react'
|
||||||
import { Col, Row } from 'reactstrap';
|
import { Col, Row } from 'reactstrap';
|
||||||
import ValidationField from '../../../Components/ValidationField/ValidationField';
|
import ValidationField from '../../../Components/ValidationField/ValidationField';
|
||||||
import { useFormikContext } from 'formik';
|
import { useFormikContext } from 'formik';
|
||||||
|
|
@ -12,7 +12,7 @@ import useFormatToSelect from '../../../Hooks/useFormatToSelect';
|
||||||
import { useGetProduct } from '../../../api/product';
|
import { useGetProduct } from '../../../api/product';
|
||||||
|
|
||||||
function Form() {
|
function Form() {
|
||||||
const { values } = useFormikContext<any>();
|
const { values ,setFieldValue} = useFormikContext<any>();
|
||||||
const [t] = useTranslation(); // FLAT coupn not be spacified && flate
|
const [t] = useTranslation(); // FLAT coupn not be spacified && flate
|
||||||
const coupon_type = [{ lable: "general", value: "general" },{ lable: "specified", value: "specified" }]
|
const coupon_type = [{ lable: "general", value: "general" },{ lable: "specified", value: "specified" }]
|
||||||
const coupon_type_discount_flat = [{ lable: "general", value: "general" }]
|
const coupon_type_discount_flat = [{ lable: "general", value: "general" }]
|
||||||
|
|
@ -24,6 +24,16 @@ function Form() {
|
||||||
const SelectCategoriesData = useFormatToSelect(CategoriesData?.categories)
|
const SelectCategoriesData = useFormatToSelect(CategoriesData?.categories)
|
||||||
const SelectProductData = useFormatToSelect(ProductData?.BaseProducts)
|
const SelectProductData = useFormatToSelect(ProductData?.BaseProducts)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
|
||||||
|
if (values?.discount_type === 'flat') {
|
||||||
|
console.log(values?.coupon_type,"values?.coupon_type");
|
||||||
|
|
||||||
|
setFieldValue("coupon_type","general")
|
||||||
|
|
||||||
|
}
|
||||||
|
}, [values?.discount_type])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Row xs={1} sm={1} md={1} lg={2} xl={2}>
|
<Row xs={1} sm={1} md={1} lg={2} xl={2}>
|
||||||
<Col>
|
<Col>
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ export const getInitialValuesForAdd = (objectToEdit: any | null = null): any =>
|
||||||
maximum_number_of_uses_per_user: '',
|
maximum_number_of_uses_per_user: '',
|
||||||
maximum_number_of_uses: '',
|
maximum_number_of_uses: '',
|
||||||
coupon_value: '',
|
coupon_value: '',
|
||||||
coupon_type: '',
|
coupon_type: 'general',
|
||||||
discount_type: '',
|
discount_type: '',
|
||||||
product_attr: '',
|
product_attr: '',
|
||||||
category_attr: '',
|
category_attr: '',
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import Chart from "./Chart";
|
||||||
|
|
||||||
export default function HomePage() {
|
export default function HomePage() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const cardsData = [
|
const cardsData = [
|
||||||
{
|
{
|
||||||
icon: <FaRedRiver className="warning" size={24} />,
|
icon: <FaRedRiver className="warning" size={24} />,
|
||||||
|
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
|
|
||||||
import React from 'react'
|
|
||||||
import DashBody from '../../Layout/Dashboard/DashBody'
|
|
||||||
import DashHeader from '../../Layout/Dashboard/DashHeader'
|
|
||||||
import LyTable from '../../Layout/Dashboard/LyTable'
|
|
||||||
import useTableColumns from './useTableColumns'
|
|
||||||
import { useGetAppSetting} from '../../api/appSetting'
|
|
||||||
import { QueryStatusEnum } from '../../config/QueryStatus'
|
|
||||||
import EditAppSettingModal from './EditAppSettingModal'
|
|
||||||
|
|
||||||
function AppSettingPage() {
|
|
||||||
|
|
||||||
const column =useTableColumns()
|
|
||||||
const {data ,status } = useGetAppSetting()
|
|
||||||
|
|
||||||
return (
|
|
||||||
// Pass Status to Layout
|
|
||||||
<DashBody status={status as QueryStatusEnum} >
|
|
||||||
<DashHeader showAddButton={false} title={'app_setting'}></DashHeader>
|
|
||||||
|
|
||||||
<LyTable
|
|
||||||
data={data}
|
|
||||||
isLoading={false}
|
|
||||||
columns={column}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<EditAppSettingModal />
|
|
||||||
</DashBody>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default AppSettingPage
|
|
||||||
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
|
|
||||||
import React from 'react'
|
|
||||||
import LayoutModal from '../../Layout/Dashboard/LayoutModal'
|
|
||||||
import FormAppSetting from './FormAppSetting'
|
|
||||||
import { InitialValues, getInitialValues, getValidationSchema } from './formUtil'
|
|
||||||
import { usePageState } from '../../lib/state mangment/LayoutPagestate'
|
|
||||||
import { QueryStatusEnum } from '../../config/QueryStatus'
|
|
||||||
import { useUpdateAppSetting } from '../../api/appSetting'
|
|
||||||
|
|
||||||
function EditAppSettingModal() {
|
|
||||||
const {objectToEdit} = usePageState()
|
|
||||||
const {status , mutate } = useUpdateAppSetting();
|
|
||||||
const handleEditSubmit = (values:InitialValues) => {
|
|
||||||
console.log(values);
|
|
||||||
mutate({
|
|
||||||
key:values.key,
|
|
||||||
value:values.value,
|
|
||||||
setting_id:objectToEdit.id,
|
|
||||||
title:values.name,
|
|
||||||
is_percentage:values?.is_percentage
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
<LayoutModal
|
|
||||||
isAddModal={false}
|
|
||||||
getInitialValues={getInitialValues(objectToEdit)}
|
|
||||||
handleSubmit={handleEditSubmit}
|
|
||||||
status={status as QueryStatusEnum}
|
|
||||||
headerText='Edit Modal'
|
|
||||||
getValidationSchema={getValidationSchema(objectToEdit)}>
|
|
||||||
<FormAppSetting />
|
|
||||||
</LayoutModal>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default EditAppSettingModal
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
|
|
||||||
import React from 'react'
|
|
||||||
import { Col, Row } from 'reactstrap';
|
|
||||||
import ValidationField from '../../Components/ValidationField/ValidationField';
|
|
||||||
import { useFormikContext } from 'formik';
|
|
||||||
|
|
||||||
|
|
||||||
function FormAppSetting() {
|
|
||||||
const formik = useFormikContext<any>();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Row xs={1} sm={1} md={1} lg={2} xl={2}>
|
|
||||||
<Col>
|
|
||||||
<ValidationField name="name" type="text"label='name' isDisabled placeholder='placeholder' />
|
|
||||||
|
|
||||||
|
|
||||||
</Col>
|
|
||||||
<Col>
|
|
||||||
<ValidationField name="value" type="text"label='value' placeholder='placeholder' />
|
|
||||||
|
|
||||||
|
|
||||||
</Col>
|
|
||||||
|
|
||||||
|
|
||||||
</Row>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default FormAppSetting
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,59 +0,0 @@
|
||||||
|
|
||||||
import * as Yup from "yup";
|
|
||||||
import { buildFormData } from "../../api/helper/buildFormData";
|
|
||||||
|
|
||||||
interface formUtilCommon {
|
|
||||||
value:string
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ObjectToEdit extends formUtilCommon {
|
|
||||||
|
|
||||||
id?:number,
|
|
||||||
title:string,
|
|
||||||
key:string,
|
|
||||||
is_percentage:number,
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface InitialValues extends formUtilCommon {
|
|
||||||
id?:number,
|
|
||||||
name:string,
|
|
||||||
key:string,
|
|
||||||
is_percentage:number,
|
|
||||||
}
|
|
||||||
interface ValidateSchema extends formUtilCommon{
|
|
||||||
name:string,
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getInitialValues = (objectToEdit: ObjectToEdit | null = null): InitialValues => {
|
|
||||||
|
|
||||||
// console.log(objectToEdit);
|
|
||||||
|
|
||||||
return {
|
|
||||||
id:objectToEdit?.id?? 0 ,
|
|
||||||
name:objectToEdit?.title ?? "",
|
|
||||||
value:objectToEdit?.value?? "",
|
|
||||||
key:objectToEdit?.key?? "",
|
|
||||||
is_percentage:objectToEdit?.is_percentage?? 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getValidationSchema = (editMode: boolean = false): Yup.Schema<ValidateSchema> => {
|
|
||||||
// validate input
|
|
||||||
return Yup.object().shape({
|
|
||||||
name:Yup.string().required('required'),
|
|
||||||
value:Yup.string().required("required")
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getDataToSend = (values: any): FormData => {
|
|
||||||
const data = { ...values };
|
|
||||||
|
|
||||||
|
|
||||||
const formData = new FormData();
|
|
||||||
buildFormData(formData, data);
|
|
||||||
return formData;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
|
|
||||||
import React, { useMemo } from "react";
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import Actions from "../../Components/Ui/tables/Actions";
|
|
||||||
import { useDeleteAppSetting } from "../../api/appSetting";
|
|
||||||
|
|
||||||
|
|
||||||
const useTableColumns :any = () => {
|
|
||||||
const [t] = useTranslation();
|
|
||||||
const {mutate} = useDeleteAppSetting();
|
|
||||||
return useMemo(
|
|
||||||
() => [
|
|
||||||
|
|
||||||
{
|
|
||||||
name: t("name"),
|
|
||||||
sortable: false,
|
|
||||||
center: "true",
|
|
||||||
cell: (row:any) => row?.title
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: t("value"),
|
|
||||||
sortable: false,
|
|
||||||
center: "true",
|
|
||||||
cell: (row:any) => row?.value
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
name: "#",
|
|
||||||
sortable: false,
|
|
||||||
center: "true",
|
|
||||||
cell: (row) => (
|
|
||||||
<Actions
|
|
||||||
|
|
||||||
onEdit={() => {}}
|
|
||||||
showView={false}
|
|
||||||
objectToEdit={row}
|
|
||||||
showEdit={true}
|
|
||||||
// showDelete={false}
|
|
||||||
onDelete={() => mutate({ id: row.id })}
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[t]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default useTableColumns;
|
|
||||||
|
|
||||||
|
|
@ -1,15 +1,7 @@
|
||||||
import React, { useMemo } from "react";
|
|
||||||
// import { history } from "../../../history";
|
|
||||||
// import { GrView } from "react-icons/gr";
|
|
||||||
// import OrderStatus from "components/OrderStatus";
|
|
||||||
// import Actions from "components/table/TableActions";
|
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useDeleteOrder } from "../../api/order";
|
import { useDeleteOrder } from "../../api/order";
|
||||||
import { GrView } from "react-icons/gr";
|
|
||||||
import Actions from "../../Components/Ui/tables/Actions";
|
import Actions from "../../Components/Ui/tables/Actions";
|
||||||
import { history } from "../../ProviderContainer";
|
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import ColumnsImage from "../../Components/Columns/ColumnsImage";
|
|
||||||
|
|
||||||
const useTableColumns = () => {
|
const useTableColumns = () => {
|
||||||
const [t] = useTranslation();
|
const [t] = useTranslation();
|
||||||
|
|
@ -25,18 +17,6 @@ const useTableColumns = () => {
|
||||||
center:true,
|
center:true,
|
||||||
selector:(row:any) => row?.id,
|
selector:(row:any) => row?.id,
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// name: t("image"),
|
|
||||||
// sortable: false,
|
|
||||||
// center:true,
|
|
||||||
// width : "100px",
|
|
||||||
// selector:(row:any) => {
|
|
||||||
// let str = row?.photo;
|
|
||||||
// str = str?.replace(`public`, "/storage") ?? "";
|
|
||||||
// return <ColumnsImage src={str} />
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
|
|
||||||
{
|
{
|
||||||
name: t("name"),
|
name: t("name"),
|
||||||
sortable: false,
|
sortable: false,
|
||||||
|
|
@ -67,7 +47,6 @@ const useTableColumns = () => {
|
||||||
name: t("total"),
|
name: t("total"),
|
||||||
center: true,
|
center: true,
|
||||||
cell:(row:any)=>{
|
cell:(row:any)=>{
|
||||||
console.log(row);
|
|
||||||
|
|
||||||
return (row?.total)
|
return (row?.total)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user