Client/Shared: VersionHistoryPanel: Added a header component.

This commit is contained in:
Tatiana Lopaeva 2024-08-22 15:36:24 +03:00
parent 7a7f239190
commit f943d3f5f7
3 changed files with 15 additions and 23 deletions

View File

@ -27,7 +27,6 @@
import React from "react"; import React from "react";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import { Backdrop } from "@docspace/shared/components/backdrop"; import { Backdrop } from "@docspace/shared/components/backdrop";
import { Heading } from "@docspace/shared/components/heading";
import { Aside } from "@docspace/shared/components/aside"; import { Aside } from "@docspace/shared/components/aside";
import { FloatingButton } from "@docspace/shared/components/floating-button"; import { FloatingButton } from "@docspace/shared/components/floating-button";
@ -37,13 +36,11 @@ import { withTranslation } from "react-i18next";
import { import {
StyledVersionHistoryPanel, StyledVersionHistoryPanel,
StyledContent, StyledContent,
StyledHeaderContent,
StyledBody, StyledBody,
} from "../StyledPanels"; } from "../StyledPanels";
import { SectionBodyContent } from "../../../pages/VersionHistory/Section/"; import { SectionBodyContent } from "../../../pages/VersionHistory/Section/";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import config from "PACKAGE_FILE"; import config from "PACKAGE_FILE";
import { ArticleHeaderLoader } from "@docspace/shared/skeletons/article";
class PureVersionHistoryPanel extends React.Component { class PureVersionHistoryPanel extends React.Component {
onClose = () => { onClose = () => {
@ -85,26 +82,10 @@ class PureVersionHistoryPanel extends React.Component {
visible={visible} visible={visible}
onClose={this.onClose} onClose={this.onClose}
withoutBodyScroll withoutBodyScroll
isLoading={!versions && !isLoading}
header={versions ? versions[0].title : ""}
> >
<StyledContent> <StyledContent>
<StyledHeaderContent className="version-history-panel-header">
{versions && !isLoading ? (
<Heading
className="version-history-panel-heading"
size="medium"
truncate
>
{versions[0].title}
</Heading>
) : (
<ArticleHeaderLoader
className="loader-version-history"
height="28"
width="688"
/>
)}
</StyledHeaderContent>
<StyledBody className="version-history-panel-body"> <StyledBody className="version-history-panel-body">
<SectionBodyContent onClose={this.onClose} /> <SectionBodyContent onClose={this.onClose} />
</StyledBody> </StyledBody>

View File

@ -51,6 +51,7 @@ export interface AsideHeaderProps {
onBackClick?: () => void; onBackClick?: () => void;
onCloseClick?: () => void; onCloseClick?: () => void;
style?: React.CSSProperties; style?: React.CSSProperties;
isLoading?: boolean;
} }
export interface StyledAsideProps { export interface StyledAsideProps {
visible: boolean; visible: boolean;

View File

@ -31,6 +31,7 @@ import { IconButton } from "../icon-button";
import { Text } from "../text"; import { Text } from "../text";
import { AsideHeaderProps } from "./Aside.types"; import { AsideHeaderProps } from "./Aside.types";
import { StyledHeaderContainer } from "./Aside.styled"; import { StyledHeaderContainer } from "./Aside.styled";
import { RectangleSkeleton } from "../../skeletons/rectangle";
const AsideHeader = (props: AsideHeaderProps) => { const AsideHeader = (props: AsideHeaderProps) => {
const { const {
@ -43,6 +44,7 @@ const AsideHeader = (props: AsideHeaderProps) => {
className, className,
id, id,
style, style,
isLoading,
} = props; } = props;
const backButtonRender = ( const backButtonRender = (
@ -64,8 +66,8 @@ const AsideHeader = (props: AsideHeaderProps) => {
/> />
); );
return ( const mainComponent = (
<StyledHeaderContainer id={id} className={className} style={style}> <>
{isBackButton && backButtonRender} {isBackButton && backButtonRender}
{typeof header === "string" ? ( {typeof header === "string" ? (
<Text fontSize="21px" fontWeight={700} className="header-component"> <Text fontSize="21px" fontWeight={700} className="header-component">
@ -88,6 +90,14 @@ const AsideHeader = (props: AsideHeaderProps) => {
))} ))}
</div> </div>
)} )}
</>
);
const loaderComponent = <RectangleSkeleton height="28" width="100%" />;
return (
<StyledHeaderContainer id={id} className={className} style={style}>
{isLoading ? loaderComponent : mainComponent}
{isCloseable && closeIconRender} {isCloseable && closeIconRender}
</StyledHeaderContainer> </StyledHeaderContainer>
); );