diff --git a/resources/assets/src/views/admin/PlayersManagement/Card.tsx b/resources/assets/src/views/admin/PlayersManagement/Card.tsx index ae5df7a8..c9304355 100644 --- a/resources/assets/src/views/admin/PlayersManagement/Card.tsx +++ b/resources/assets/src/views/admin/PlayersManagement/Card.tsx @@ -1,18 +1,8 @@ -/** @jsx jsx */ -import { jsx, css } from '@emotion/core' +import React from 'react' import { t } from '@/scripts/i18n' import { showModal } from '@/scripts/notify' import { Player } from '@/scripts/types' -import * as breakpoints from '@/styles/breakpoints' - -const style = css` - width: 48%; - margin: 7px; - - ${breakpoints.lessThan(breakpoints.Breakpoint.lg)} { - width: 98%; - } -` +import { Box } from './styles' interface Props { player: Player @@ -65,7 +55,7 @@ const Card: React.FC = (props) => { } return ( -
+
= (props) => {
- + ) } diff --git a/resources/assets/src/views/admin/PlayersManagement/LoadingCard.tsx b/resources/assets/src/views/admin/PlayersManagement/LoadingCard.tsx new file mode 100644 index 00000000..2f67bbfc --- /dev/null +++ b/resources/assets/src/views/admin/PlayersManagement/LoadingCard.tsx @@ -0,0 +1,40 @@ +import React from 'react' +import styled from '@emotion/styled' +import Skeleton from 'react-loading-skeleton' +import { Box } from './styles' + +const ShrinkedSkeleton = styled(Skeleton)<{ width?: string }>` + width: ${(props) => props.width}; +` + +const LoadingCard: React.FC = () => ( + +
+ +
+
+
+
+ +
+
+
+ + + +
+
+
+
+
+ +
+
+ +
+
+
+
+) + +export default LoadingCard diff --git a/resources/assets/src/views/admin/PlayersManagement/LoadingRow.tsx b/resources/assets/src/views/admin/PlayersManagement/LoadingRow.tsx new file mode 100644 index 00000000..b7043a28 --- /dev/null +++ b/resources/assets/src/views/admin/PlayersManagement/LoadingRow.tsx @@ -0,0 +1,17 @@ +import React from 'react' +import styled from '@emotion/styled' +import Skeleton from 'react-loading-skeleton' + +const ThickSkeleton = styled(Skeleton)` + line-height: 2; +` + +const LoadingRow: React.FC = () => ( + + + + + +) + +export default LoadingRow diff --git a/resources/assets/src/views/admin/PlayersManagement/index.tsx b/resources/assets/src/views/admin/PlayersManagement/index.tsx index 614d6691..41ee6ae9 100644 --- a/resources/assets/src/views/admin/PlayersManagement/index.tsx +++ b/resources/assets/src/views/admin/PlayersManagement/index.tsx @@ -7,11 +7,12 @@ import * as fetch from '@/scripts/net' import { Player, Paginator } from '@/scripts/types' import { toast, showModal } from '@/scripts/notify' import urls from '@/scripts/urls' -import Loading from '@/components/Loading' import Pagination from '@/components/Pagination' import Header from '../UsersManagement/Header' import Card from './Card' +import LoadingCard from './LoadingCard' import Row from './Row' +import LoadingRow from './LoadingRow' import ModalUpdateTexture from './ModalUpdateTexture' const PlayersManagement: React.FC = () => { @@ -205,15 +206,11 @@ const PlayersManagement: React.FC = () => { - {isLoading ? ( -
- -
- ) : players.length === 0 ? ( + {players.length === 0 && !isLoading ? (
{t('general.noResult')}
) : isTableMode ? (
- +
@@ -225,8 +222,27 @@ const PlayersManagement: React.FC = () => { - {players.map((player, i) => ( - ) + : players.map((player, i) => ( + handleUpdateName(player, i)} + onUpdateOwner={() => handleUpdateOwner(player, i)} + onUpdateTexture={() => setTextureUpdating(i)} + onDelete={() => handleDelete(player)} + /> + ))} + +
PID
+
+ ) : ( +
+ {isLoading + ? new Array(10).fill(null).map((_, i) => ) + : players.map((player, i) => ( + handleUpdateName(player, i)} @@ -235,21 +251,6 @@ const PlayersManagement: React.FC = () => { onDelete={() => handleDelete(player)} /> ))} - - -
- ) : ( -
- {players.map((player, i) => ( - handleUpdateName(player, i)} - onUpdateOwner={() => handleUpdateOwner(player, i)} - onUpdateTexture={() => setTextureUpdating(i)} - onDelete={() => handleDelete(player)} - /> - ))}
)}
diff --git a/resources/assets/src/views/admin/PlayersManagement/styles.ts b/resources/assets/src/views/admin/PlayersManagement/styles.ts new file mode 100644 index 00000000..20e33a5f --- /dev/null +++ b/resources/assets/src/views/admin/PlayersManagement/styles.ts @@ -0,0 +1,11 @@ +import styled from '@emotion/styled' +import * as breakpoints from '@/styles/breakpoints' + +export const Box = styled.div` + width: 48%; + margin: 7px; + + ${breakpoints.lessThan(breakpoints.Breakpoint.lg)} { + width: 98%; + } +`