From b2ea58b19e4fa8d243e635b89e7273cb357c86e2 Mon Sep 17 00:00:00 2001 From: karimaldeen Date: Mon, 9 Sep 2024 16:23:12 +0300 Subject: [PATCH] FIX PAGE --- package.json | 4 + pnpm-lock.yaml | 72 +++++++ src/Pages/Admin/Unit/DrapableTable.tsx | 85 ++++++-- src/Pages/Admin/Unit/Model/AddModel.tsx | 4 +- src/Pages/Admin/Unit/Page.tsx | 3 +- src/Pages/Admin/Unit/useTableColumns.tsx | 3 + src/Pages/Admin/lesson/DrapableTable.tsx | 194 +++++++++++++++++++ src/Pages/Admin/lesson/Model/AddModel.tsx | 1 + src/Pages/Admin/lesson/Model/EditModel.tsx | 1 + src/Pages/Admin/lesson/Page.tsx | 2 +- src/Pages/Admin/lesson/useTableColumns.tsx | 2 + src/Pages/Admin/question/FilterForm.tsx | 25 +++ src/Pages/Admin/question/Page.tsx | 17 +- src/Pages/Admin/question/useTableColumns.tsx | 12 +- src/Routes.tsx | 26 +-- src/api/config.ts | 4 +- src/api/lesson.ts | 3 + src/api/unit.ts | 2 + 18 files changed, 403 insertions(+), 57 deletions(-) create mode 100644 src/Pages/Admin/lesson/DrapableTable.tsx create mode 100644 src/Pages/Admin/question/FilterForm.tsx diff --git a/package.json b/package.json index 160eac3..40242d4 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,10 @@ "private": true, "dependencies": { "@ant-design/icons": "^5.3.7", + "@dnd-kit/core": "^6.1.0", + "@dnd-kit/modifiers": "^7.0.0", + "@dnd-kit/sortable": "^8.0.0", + "@dnd-kit/utilities": "^3.2.2", "antd": "^5.17.4", "axios": "^1.7.2", "bootstrap": "^5.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98426af..ffcdba4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,18 @@ importers: '@ant-design/icons': specifier: ^5.3.7 version: 5.3.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/core': + specifier: ^6.1.0 + version: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/modifiers': + specifier: ^7.0.0 + version: 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/sortable': + specifier: ^8.0.0 + version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': + specifier: ^3.2.2 + version: 3.2.2(react@18.3.1) antd: specifier: ^5.17.4 version: 5.17.4(date-fns@3.3.1)(luxon@3.4.4)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -865,6 +877,34 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} + '@dnd-kit/accessibility@3.1.0': + resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==} + peerDependencies: + react: '>=16.8.0' + + '@dnd-kit/core@6.1.0': + resolution: {integrity: sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@dnd-kit/modifiers@7.0.0': + resolution: {integrity: sha512-BG/ETy3eBjFap7+zIti53f0PCLGDzNXyTmn6fSdrudORf+OH04MxrW4p5+mPu4mgMk9kM41iYONjc3DOUWTcfg==} + peerDependencies: + '@dnd-kit/core': ^6.1.0 + react: '>=16.8.0' + + '@dnd-kit/sortable@8.0.0': + resolution: {integrity: sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==} + peerDependencies: + '@dnd-kit/core': ^6.1.0 + react: '>=16.8.0' + + '@dnd-kit/utilities@3.2.2': + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + '@emotion/hash@0.8.0': resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} @@ -4731,6 +4771,38 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} + '@dnd-kit/accessibility@3.1.0(react@18.3.1)': + dependencies: + react: 18.3.1 + tslib: 2.6.2 + + '@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/accessibility': 3.1.0(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tslib: 2.6.2 + + '@dnd-kit/modifiers@7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + tslib: 2.6.2 + + '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': + dependencies: + '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@dnd-kit/utilities': 3.2.2(react@18.3.1) + react: 18.3.1 + tslib: 2.6.2 + + '@dnd-kit/utilities@3.2.2(react@18.3.1)': + dependencies: + react: 18.3.1 + tslib: 2.6.2 + '@emotion/hash@0.8.0': {} '@emotion/unitless@0.7.5': {} diff --git a/src/Pages/Admin/Unit/DrapableTable.tsx b/src/Pages/Admin/Unit/DrapableTable.tsx index b6514dd..9bc32d0 100644 --- a/src/Pages/Admin/Unit/DrapableTable.tsx +++ b/src/Pages/Admin/Unit/DrapableTable.tsx @@ -1,4 +1,4 @@ -import React, { useContext, useEffect, useMemo } from "react"; +import React, { Suspense, useContext, useEffect, useMemo } from "react"; import { HolderOutlined } from "@ant-design/icons"; import type { DragEndEvent } from "@dnd-kit/core"; import { DndContext } from "@dnd-kit/core"; @@ -12,10 +12,16 @@ import { } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; import { Button, Table } from "antd"; -import type { TableColumnsType } from "antd"; import { useParams } from "react-router-dom"; -import { ParamsEnum } from "../../enums/params"; -import { useGetAllUnit } from "../../api/unit"; +import { ParamsEnum } from "../../../enums/params"; +import { useGetAllUnit, useUpdateUnitOrder } from "../../../api/unit"; + +const NotFoundLottie = React.lazy(() => import("../../../Components/Lottie/NotFound/NotFoundLottie")); +const LoadingLottie = React.lazy(() => import("../../../Components/Lottie/Loading/LoadingLottie" )); + + +import { useTranslation } from "react-i18next"; +import { useColumns } from "./useTableColumns"; interface DataType { id: string; // Unique identifier for each row @@ -32,7 +38,7 @@ interface RowContextProps { const RowContext = React.createContext({}); -const DragHandle: React.FC = () => { +export const DragHandleUnit: React.FC = () => { const { setActivatorNodeRef, listeners } = useContext(RowContext); return (