forked from ddrilling/asb_cloud_front
UserView и Grid перенесены на tsx, поля фамилии и имени поменяны местами
This commit is contained in:
parent
5ee65b51e7
commit
92c7b0f6f7
@ -1,39 +0,0 @@
|
||||
export const Grid = ({children, style, ...other}) => {
|
||||
const gridContainerStyle = {
|
||||
display: 'grid',
|
||||
margin: '8px',
|
||||
justifyItems: 'stretch',
|
||||
alignItems: 'stretch',
|
||||
...style,
|
||||
}
|
||||
|
||||
return <div style={gridContainerStyle} {...other}>
|
||||
{children}
|
||||
</div>
|
||||
}
|
||||
|
||||
export const GridItem = ({children, row, col, rowSpan, colSpan, style, ...other}) => {
|
||||
const localRow = +row
|
||||
const localCol = +col
|
||||
const localColSpan = colSpan ? colSpan - 1 : 0
|
||||
const localRowSpan = rowSpan ? rowSpan - 1 : 0
|
||||
const gridItemStyle = {
|
||||
gridColumnStart: localCol,
|
||||
gridColumnEnd: localCol + localColSpan,
|
||||
gridRowStart: localRow,
|
||||
gridRowEnd: localRow + localRowSpan,
|
||||
padding: '4px',
|
||||
...style,
|
||||
}
|
||||
|
||||
return <div style={gridItemStyle} {...other}>
|
||||
{children}
|
||||
</div>
|
||||
}
|
||||
|
||||
export const Flex = ({children, style, ...other}) =>
|
||||
<div
|
||||
style={{display:'flex', ...style}}
|
||||
{...other}>
|
||||
{children}
|
||||
</div>
|
54
src/components/Grid.tsx
Normal file
54
src/components/Grid.tsx
Normal file
@ -0,0 +1,54 @@
|
||||
import React from 'react'
|
||||
|
||||
interface ComponentProps {
|
||||
children?: React.ReactNode
|
||||
style?: React.CSSProperties
|
||||
[other: string]: any
|
||||
}
|
||||
|
||||
interface GridItemProps extends ComponentProps {
|
||||
children?: React.ReactNode
|
||||
style?: React.CSSProperties
|
||||
row: number
|
||||
col: number
|
||||
rowSpan?: number
|
||||
colSpan?: number
|
||||
}
|
||||
|
||||
const gridDefaultStyle = {
|
||||
display: 'grid',
|
||||
margin: '8px',
|
||||
justifyItems: 'stretch',
|
||||
alignItems: 'stretch',
|
||||
}
|
||||
|
||||
export const Grid = ({ children, style, ...other }: ComponentProps) => (
|
||||
<div style={{...gridDefaultStyle, ...style}} {...other}>
|
||||
{children}
|
||||
</div>
|
||||
)
|
||||
|
||||
export const GridItem = ({ children, row, col, rowSpan, colSpan, style, ...other }: GridItemProps) => {
|
||||
const localRow = +row
|
||||
const localCol = +col
|
||||
const localColSpan = colSpan ? colSpan - 1 : 0
|
||||
const localRowSpan = rowSpan ? rowSpan - 1 : 0
|
||||
const gridItemStyle = {
|
||||
gridColumnStart: localCol,
|
||||
gridColumnEnd: localCol + localColSpan,
|
||||
gridRowStart: localRow,
|
||||
gridRowEnd: localRow + localRowSpan,
|
||||
padding: '4px',
|
||||
...style,
|
||||
}
|
||||
|
||||
return <div style={gridItemStyle} {...other}>
|
||||
{children}
|
||||
</div>
|
||||
}
|
||||
|
||||
export const Flex = ({ children, style, ...other } : ComponentProps) => (
|
||||
<div style={{ display: 'flex', ...style }} {...other}>
|
||||
{children}
|
||||
</div>
|
||||
)
|
@ -1,43 +0,0 @@
|
||||
import {Tooltip} from 'antd'
|
||||
import {UserOutlined} from '@ant-design/icons'
|
||||
import {Grid, GridItem} from './Grid'
|
||||
|
||||
export const UserView = ({user}) => {
|
||||
if(!user)
|
||||
return <Tooltip title='нет пользователя'>-</Tooltip>
|
||||
|
||||
const displayName = user?.login
|
||||
|
||||
const tooltipInfo = <Grid columnGap='8px'>
|
||||
<GridItem row={1} col={1}>
|
||||
Имя:
|
||||
</GridItem>
|
||||
<GridItem row={1} col={2}>
|
||||
{user?.name}
|
||||
</GridItem>
|
||||
<GridItem row={2} col={1}>
|
||||
Фамилия:
|
||||
</GridItem>
|
||||
<GridItem row={2} col={2}>
|
||||
{user?.surname}
|
||||
</GridItem>
|
||||
<GridItem row={3} col={1}>
|
||||
Отчество:
|
||||
</GridItem>
|
||||
<GridItem row={3} col={2}>
|
||||
{user?.patronymic}
|
||||
</GridItem>
|
||||
<GridItem row={4} col={1}>
|
||||
Компания:
|
||||
</GridItem>
|
||||
<GridItem row={4} col={2}>
|
||||
{user?.company?.caption}
|
||||
</GridItem>
|
||||
</Grid>
|
||||
|
||||
return <Tooltip title={tooltipInfo}>
|
||||
<UserOutlined style={{marginRight:8}}/>
|
||||
{displayName}
|
||||
</Tooltip>
|
||||
|
||||
}
|
29
src/components/UserView.tsx
Normal file
29
src/components/UserView.tsx
Normal file
@ -0,0 +1,29 @@
|
||||
import {Tooltip} from 'antd'
|
||||
import { UserOutlined } from '@ant-design/icons'
|
||||
import { Grid, GridItem } from './Grid'
|
||||
import { UserDto } from '../services/api'
|
||||
|
||||
interface UserViewProps {
|
||||
user: UserDto
|
||||
}
|
||||
|
||||
export const UserView = ({ user } : UserViewProps) => (user ? (
|
||||
<Tooltip title={(
|
||||
<Grid columnGap='8px'>
|
||||
<GridItem row={1} col={1}>Фамилия:</GridItem>
|
||||
<GridItem row={1} col={2}>{user?.surname}</GridItem>
|
||||
<GridItem row={2} col={1}>Имя:</GridItem>
|
||||
<GridItem row={2} col={2}>{user?.name}</GridItem>
|
||||
<GridItem row={3} col={1}>Отчество:</GridItem>
|
||||
<GridItem row={3} col={2}>{user?.patronymic}</GridItem>
|
||||
<GridItem row={4} col={1}>Компания:</GridItem>
|
||||
<GridItem row={4} col={2}>{user?.company?.caption}</GridItem>
|
||||
</Grid>
|
||||
)}>
|
||||
<UserOutlined style={{ marginRight: 8 }}/>
|
||||
{user?.login}
|
||||
</Tooltip>
|
||||
) : (
|
||||
<Tooltip title='нет пользователя'>-</Tooltip>
|
||||
)
|
||||
)
|
Loading…
Reference in New Issue
Block a user