8 | }
9 |
10 | export default PermComponent;
11 |
--------------------------------------------------------------------------------
/src/components/PrevPageButton.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { useNavigate } from 'react-router-dom';
3 |
4 | const PrevPageButton = ({className}) => {
5 | const navigate = useNavigate()
6 | return (
7 |
8 | );
9 | }
10 |
11 | export default PrevPageButton;
12 |
--------------------------------------------------------------------------------
/src/components/SpinnerLoad.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const SpinnerLoad = ({ colorClass, isSmall, inline }) => {
4 | return (
5 |
8 |
12 |
13 | );
14 | };
15 |
16 | export default SpinnerLoad;
17 |
--------------------------------------------------------------------------------
/src/components/form/FormikError.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const FormikError = ({children}) => {
4 | return (
5 | {children}
6 | );
7 | }
8 |
9 | export default FormikError;
10 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { createRoot } from "react-dom/client";
3 | import { BrowserRouter } from "react-router-dom";
4 | import App from "./App";
5 |
6 | createRoot(document.getElementById("root")).render(
7 |
8 |
9 |
10 | );
11 |
--------------------------------------------------------------------------------
/src/pages/brands/Brands.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import AddBrands from "./AddBrands";
3 | import Brandstable from "./BrandsTable";
4 |
5 | const Brands = () => {
6 | return (
7 |
11 |
مدیریت برند ها
12 |
13 |
14 | );
15 | };
16 |
17 | export default Brands;
18 |
--------------------------------------------------------------------------------
/src/pages/carts/Carts.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AddCart from './AddCart';
3 | import CartsTable from './CartsTable';
4 |
5 | const Carts = () => {
6 | return (
7 |
8 |
مدیریت سبد خرید
9 |
10 |
11 | );
12 | }
13 |
14 | export default Carts;
15 |
--------------------------------------------------------------------------------
/src/pages/category/attrs/ShowInFilter.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const ShowInFilter = ({rowData}) => {
4 | return (
5 |
6 | {rowData.in_filter ? "هست" : "نیست"}
7 |
8 | );
9 | };
10 |
11 | export default ShowInFilter;
12 |
--------------------------------------------------------------------------------
/src/pages/category/tableAdditons/ShowInMenu.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | const ShowInMenu = ({rowData}) => {
4 | return (
5 |
6 | {rowData.show_in_menu ? "هست" : "نیست"}
7 |
8 | );
9 | };
10 |
11 | export default ShowInMenu;
12 |
--------------------------------------------------------------------------------
/src/pages/colors/Colors.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AddColor from './AddColor';
3 | import ColorsTable from './ColorsTable';
4 |
5 | const Colors = () => {
6 | return (
7 |
8 |
مدیریت رنگ ها
9 |
10 |
11 |
12 | );
13 | }
14 |
15 | export default Colors;
16 |
--------------------------------------------------------------------------------
/src/pages/guaranties/Guaranties.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import GuarantiesTable from "./GuarantiesTable";
3 |
4 | const Guaranties = () => {
5 | return (
6 |
10 |
مدیریت گارانتی ها
11 |
12 |
13 | );
14 | };
15 |
16 | export default Guaranties;
17 |
--------------------------------------------------------------------------------
/src/pages/orders/Orders.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import OrdersTable from './OrdersTable';
3 |
4 | const Orders = () => {
5 | return (
6 |
7 |
مدیریت سفارشات
8 |
9 |
10 |
11 | );
12 | }
13 |
14 | export default Orders;
15 |
--------------------------------------------------------------------------------
/src/pages/product/Product.jsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import TableProduct from "./TableProduct";
3 |
4 | const Product = () => {
5 | return (
6 |
10 |
مدیریت محصولات
11 |
12 |
13 | );
14 | };
15 |
16 | export default Product;
17 |
--------------------------------------------------------------------------------
/src/pages/roles/Roles.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AddRole from './AddRole';
3 | import RolesTable from './RolesTable';
4 |
5 | const Roles = () => {
6 | return (
7 |
8 |
مدیریت نقش ها
9 |
10 |
11 |
12 | );
13 | }
14 |
15 | export default Roles;
16 |
--------------------------------------------------------------------------------
/src/pages/users/Users.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AddUser from './AddUser';
3 | import UsersTable from './UsersTable';
4 |
5 | const Users = () => {
6 | return (
7 |
8 |
مدیریت کاربران
9 |
10 |
11 | );
12 | }
13 |
14 | export default Users;
15 |
--------------------------------------------------------------------------------
/src/pages/users/tableAddition/Roles.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const Roles = ({rowData}) => {
4 | return rowData.roles?.map((r) => (
5 |
6 | {r.title}
7 |
8 | ));
9 |
10 | }
11 |
12 | export default Roles;
13 |
--------------------------------------------------------------------------------
/src/redux/store.js:
--------------------------------------------------------------------------------
1 | import { configureStore } from "@reduxjs/toolkit";
2 | import { applyMiddleware, createStore } from "redux";
3 | import userReducer from "./user/userReducer";
4 |
5 | // const store = createStore(rolesReducer, applyMiddleware(thunk))
6 | const store = configureStore({
7 | reducer:{
8 | userReducer
9 | },
10 | })
11 |
12 | export default store
--------------------------------------------------------------------------------
/src/redux/user/userTypes.js:
--------------------------------------------------------------------------------
1 | export const SEND_USER_REQUEST = "SEND_USER_REQUEST"
2 | export const RECEIVE_USER_RESPONSE = "RECEIVE_USER_RESPONSE"
3 | export const RECEIVE_USER_ERROR = "RECEIVE_USER_ERROR"
--------------------------------------------------------------------------------
/src/services/auth.js:
--------------------------------------------------------------------------------
1 | import httpService from "./httpService";
2 |
3 | export const loginService = (values) => {
4 | return httpService("/auth/login", "post", {
5 | ...values,
6 | remember: values.remember ? 1 : 0,
7 | });
8 | };
9 |
10 | export const logoutService = ()=>{
11 | return httpService("/auth/logout", "get")
12 | }
13 |
14 | export const getUserService = ()=>{
15 | return httpService("/auth/user", "get")
16 | }
17 |
--------------------------------------------------------------------------------
/src/services/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "onlinePath" : "https://ecomadminapi.azhadev.ir",
3 | "offlinePath" : "http://127.0.0.1:8000"
4 | }
--------------------------------------------------------------------------------
/src/utils/alerts.js:
--------------------------------------------------------------------------------
1 | import swal from "sweetalert";
2 |
3 | export const Alert = (title, text, icon)=>{
4 | swal({
5 | title,
6 | text,
7 | icon,
8 | button: "متوجه شدم",
9 | });
10 | }
11 |
12 | export const Confirm = (title, text)=>{
13 | return swal({
14 | title,
15 | text,
16 | icon:"warning",
17 | buttons: ["خیر", "بله"],
18 | dangerMode: true
19 | })
20 | }
--------------------------------------------------------------------------------
/src/utils/convertData.js:
--------------------------------------------------------------------------------
1 | export const convertDataToFormdata = (dataObj)=>{
2 | const formdata = new FormData()
3 | for (const key in dataObj) {
4 | formdata.append(key, dataObj[key] )
5 | }
6 | return formdata
7 | }
--------------------------------------------------------------------------------
/src/utils/convertDate.js:
--------------------------------------------------------------------------------
1 | import jMoment from 'jalali-moment'
2 |
3 | export const convertDateToJalali =(date, format='jYYYY/jMM/jDD')=>{
4 | return jMoment(date).format(format)
5 | }
6 |
7 | export const convertFormDateToMiladi = (date)=>{
8 | return jMoment(date, 'jD / jM / jYYYY').format('YYYY-M-D')
9 | }
--------------------------------------------------------------------------------
/src/utils/numbers.js:
--------------------------------------------------------------------------------
1 | export const numberWithCommas = (number)=>{
2 | number = number || 0
3 | const numStrArr = number?.toString().split(".")
4 | const dec = numStrArr?.length > 1 ? numStrArr[1] : null
5 | const intNum = numStrArr[0];
6 | const withDecInt = intNum?.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
7 | return dec && parseInt(dec) != 0 ? withDecInt+"/"+dec : withDecInt
8 | }
9 |
--------------------------------------------------------------------------------