From 98f8b677edb96f9175b7d4c20370c3d6744543bd Mon Sep 17 00:00:00 2001 From: woothu <32914662+woothu@users.noreply.github.com> Date: Wed, 10 Jun 2020 10:27:40 +0200 Subject: [PATCH] feat: add query parameters to Users view --- src/views/users/Users.js | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/views/users/Users.js b/src/views/users/Users.js index 3d654336b..05d525b9a 100644 --- a/src/views/users/Users.js +++ b/src/views/users/Users.js @@ -1,5 +1,5 @@ -import React from 'react'; -import { useHistory } from "react-router-dom"; +import React, { useState, useEffect } from 'react' +import { useHistory, useLocation } from 'react-router-dom' import { CBadge, CCard, @@ -7,12 +7,13 @@ import { CCardHeader, CCol, CDataTable, - CRow -} from '@coreui/react'; + CRow, + CPagination +} from '@coreui/react' import usersData from './UsersData' -const getBadge = (status) => { +const getBadge = status => { switch (status) { case 'Active': return 'success' case 'Inactive': return 'secondary' @@ -24,6 +25,18 @@ const getBadge = (status) => { const Users = () => { const history = useHistory() + const queryPage = useLocation().search.match(/page=([0-9]+)/, '') + const currentPage = Number(queryPage && queryPage[1] ? queryPage[1] : 1) + const [page, setPage] = useState(currentPage) + + const pageChange = newPage => { + currentPage !== newPage && history.push(`/users?page=${newPage}`) + } + + useEffect(() => { + currentPage !== page && setPage(currentPage) + }, [currentPage, page]) + return ( @@ -37,13 +50,14 @@ const Users = () => { items={usersData} fields={[ { key: 'name', _classes: 'font-weight-bold' }, - 'registered', 'role', 'status']} + 'registered', 'role', 'status' + ]} hover striped - pagination={{ doubleArrows: false, align: 'center' }} itemsPerPage={5} + activePage={page} clickableRows - onRowClick={(item, index) => history.push(`/users/${item.id}`)} + onRowClick={(item) => history.push(`/users/${item.id}`)} scopedSlots = {{ 'status': (item)=>( @@ -55,6 +69,13 @@ const Users = () => { ) }} /> +