[IMPROVE] Added border to page header. (#16792)

pull/16923/head^2
gabriellsh 5 years ago committed by GitHub
parent 489c953dcc
commit 8f94dde98a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 44
      client/components/basic/Page.js

@ -1,32 +1,40 @@
import { Box, Flex, Margins, Scrollable } from '@rocket.chat/fuselage';
import React, { useMemo } from 'react';
import React, { useMemo, createContext, useContext, useState } from 'react';
import { BurgerMenuButton } from './BurgerMenuButton';
const PageContext = createContext();
export function Page(props) {
return <Flex.Container direction='column'>
<Box is='section' style={useMemo(() => ({ height: '100%' }), [])} {...props} />
</Flex.Container>;
const [border, setBorder] = useState(false);
return <PageContext.Provider value={[border, setBorder]}>
<Flex.Container direction='column'>
<Box is='section' style={useMemo(() => ({ height: '100%' }), [])} {...props} />
</Flex.Container>
</PageContext.Provider>;
}
export function PageHeader({ children, title, ...props }) {
return <Margins all='x16'>
<Flex.Container wrap='nowrap' alignItems='center'>
<Box style={{ minHeight: '2.75rem' }} {...props}>
<Margins inlineEnd='x8'>
<BurgerMenuButton />
</Margins>
<Flex.Item grow='1'>
<Box is='h1' textStyle='h1' textColor='default'>{title}</Box>
</Flex.Item>
{children}
</Box>
</Flex.Container>
</Margins>;
const [border] = useContext(PageContext);
return <Box style={{ borderBlockEndColor: border ? 'var(--color-gray-lightest)' : 'transparent', transition: 'border-block-end-color 0.3s', borderBlockEnd: '2px solid transparent' }}>
<Margins all='x16'>
<Flex.Container wrap='no-wrap' alignItems='center' direction='row'>
<Box style={{ minHeight: '2.75rem' }} {...props}>
<Margins inlineEnd='x8'>
<BurgerMenuButton />
</Margins>
<Flex.Item grow={1}>
<Box is='h1' textStyle='h1' textColor='default'>{title}</Box>
</Flex.Item>
{children}
</Box>
</Flex.Container>
</Margins>
</Box>;
}
export function PageContent(props) {
return <Scrollable>
const [, setBorder] = useContext(PageContext);
return <Scrollable onScrollContent={({ top }) => { setBorder(!top); }}>
<Box style={useMemo(() => ({ padding: '1rem' }), [])} {...props} />
</Scrollable>;
}

Loading…
Cancel
Save