table-pagination #27
@ -1,4 +1,5 @@
|
||||
import React, { Component } from "react";
|
||||
import { Fallback } from "./Fallback";
|
||||
|
||||
class ErrorBoundary extends Component {
|
||||
state = {
|
||||
@ -13,7 +14,7 @@ class ErrorBoundary extends Component {
|
||||
const { error } = this.state;
|
||||
|
||||
if (error) {
|
||||
return <div>Что-то пошло не так =( {error}</div>;
|
||||
return <Fallback />;
|
||||
}
|
||||
return this.props.children;
|
||||
}
|
20
src/hoc/Fallback.jsx
Normal file
20
src/hoc/Fallback.jsx
Normal file
@ -0,0 +1,20 @@
|
||||
import React from "react";
|
||||
import logo from "assets/images/logo/ITguild.svg";
|
||||
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
|
||||
import './fallback.scss'
|
||||
|
||||
export const Fallback = () => {
|
||||
|
||||
return (
|
||||
<div className="fallback">
|
||||
<img src={logo} alt="logo" className="logo" />
|
||||
<h1>Произошла непредвиденная ошибка</h1>
|
||||
<a href='/profile'>
|
||||
Вернуться назад
|
||||
<img src={rightArrow} alt="arrow" />
|
||||
</a>
|
||||
</div>
|
||||
);
|
||||
};
|
19
src/hoc/fallback.scss
Normal file
19
src/hoc/fallback.scss
Normal file
@ -0,0 +1,19 @@
|
||||
.fallback {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 100px;
|
||||
gap: 15px;
|
||||
|
||||
img {
|
||||
max-width: 250px;
|
||||
}
|
||||
|
||||
a {
|
||||
display: flex;
|
||||
column-gap: 10px;
|
||||
align-items: center;
|
||||
font-size: 16px;
|
||||
color: black;
|
||||
}
|
||||
}
|
@ -1,13 +1,16 @@
|
||||
import React from "react";
|
||||
import ReactDOM from "react-dom/client";
|
||||
import { Provider } from "react-redux";
|
||||
import ErrorBoundary from "./hoc/ErrorBoundary";
|
||||
|
||||
import App from "./App";
|
||||
import "./index.css";
|
||||
import { store } from "./store/store";
|
||||
|
||||
ReactDOM.createRoot(document.getElementById("root")).render(
|
||||
<ErrorBoundary>
|
||||
<Provider store={store}>
|
||||
<App />
|
||||
</Provider>
|
||||
</ErrorBoundary>
|
||||
);
|
||||
|
@ -14,6 +14,7 @@ import { Loader } from "@components/Common/Loader/Loader";
|
||||
import { Navigation } from "@components/Navigation/Navigation";
|
||||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||||
import { usePagination } from "@table-library/react-table-library/pagination";
|
||||
|
||||
import rightArrow from "assets/icons/arrows/arrowRight.svg";
|
||||
|
||||
@ -101,6 +102,13 @@ export const PartnerCategories = () => {
|
||||
}
|
||||
);
|
||||
|
||||
const pagination = usePagination(data, {
|
||||
state: {
|
||||
page: 0,
|
||||
size: 5,
|
||||
}
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
setLoader(true);
|
||||
apiRequest("/project/my-employee").then((el) => {
|
||||
@ -259,7 +267,27 @@ export const PartnerCategories = () => {
|
||||
data={data}
|
||||
theme={theme}
|
||||
sort={sort}
|
||||
pagination={pagination}
|
||||
/>
|
||||
<div className="table__pagination">
|
||||
<span>Total Pages: {pagination.state.getTotalPages(data.nodes)}</span>
|
||||
|
||||
<span className="table__pages">
|
||||
Page:{" "}
|
||||
{pagination.state.getPages(data.nodes).map((_, index) => (
|
||||
<button
|
||||
key={index}
|
||||
type="button"
|
||||
style={{
|
||||
fontWeight: pagination.state.page === index ? "bold" : "normal",
|
||||
}}
|
||||
onClick={() => pagination.fns.onSetPage(index)}
|
||||
>
|
||||
{index + 1}
|
||||
</button>
|
||||
))}
|
||||
</span>
|
||||
</div>
|
||||
</>
|
||||
) : (
|
||||
<div className="partner-categories__empty">
|
||||
|
@ -176,5 +176,19 @@
|
||||
font-size: 16px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&__pagination {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 16px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
&__pages {
|
||||
display: flex;
|
||||
column-gap: 5px;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user