Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(flat-component): add return to previous page button to MainPageNavHorizontal. #720

Merged
merged 1 commit into from
Jun 8, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
width: 100%;
top: 0;
z-index: 1;
// margin: 0 24px;
padding-top: 9px;
background: #fff;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
top: 0;
z-index: 1;
margin: 0 24px;
padding-top: 12px;
background: #fff;
}

Expand Down
2 changes: 1 addition & 1 deletion desktop/renderer-app/src/pages/RoomDetailPage/index.less
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.room-detail-page-header-container {
margin-top: 24px;
margin-top: 12px;
margin-left: 24px;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
.main-page-header-container {
display: flex;
align-items: center;
line-height: 24px;
margin-bottom: 16px;
line-height: 3;
}

.main-page-header-back {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import { Divider } from "antd";
import { useTranslation } from "react-i18next";

export interface MainPageHeaderProps {
onBackPreviousPage: () => void;
title: React.ReactNode;
onBackPreviousPage?: () => void;
title?: React.ReactNode;
}

export const MainPageHeader: React.FC<MainPageHeaderProps> = ({ onBackPreviousPage, title }) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ Overview.args = {
activeKeys: ["home"],
avatarSrc: "http://placekitten.com/200/200",
userName: "Flat Name",
title: <div>Title</div>,
onBackPreviousPage: () => null,
};
Overview.argTypes = {
activeKeys: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ import classNames from "classnames";
import { MainPageLayoutItem } from "../types";
import { MainPageNavAvatar, MainPageNavAvatarProps } from "../MainPageNavAvatar";
import { Tabs } from "antd";
import { MainPageHeader, MainPageHeaderProps } from "../MainPageHeader";

export interface MainPageNavHorizontalProps extends MainPageNavAvatarProps {
export interface MainPageNavHorizontalProps extends MainPageNavAvatarProps, MainPageHeaderProps {
/** when an item is clicked */
onClick: (mainPageLayoutItem: MainPageLayoutItem) => void;
/** a list of keys to highlight the items */
Expand All @@ -14,6 +15,8 @@ export interface MainPageNavHorizontalProps extends MainPageNavAvatarProps {
leftMenu: MainPageLayoutItem[];
/** outside footer menu in MainPageLayout */
rightMenu: MainPageLayoutItem[];
/** display return to previous page button if provided*/
onBackPreviousPage?: () => void;
}

export const MainPageNavHorizontal: React.FC<MainPageNavHorizontalProps> = ({
Expand All @@ -24,34 +27,42 @@ export const MainPageNavHorizontal: React.FC<MainPageNavHorizontalProps> = ({
leftMenu,
rightMenu,
popMenu,
onBackPreviousPage,
title,
}) => {
const { TabPane } = Tabs;

return (
<div className="main-page-nav-horizontal-container">
<div className="main-page-nav-horizontal-content">
<div className="main-page-nav-horizontal-left">
<Tabs
activeKey={
activeKeys.find(key =>
leftMenu.some(menuItem => menuItem.key === key),
) || "none"
}
onChange={key => {
const item = leftMenu.find(e => e.key === key);
if (item) {
onClick(item);
} else {
if (process.env.NODE_ENV === "development") {
console.warn("[MainPageNav] tab missing key", key);
}
{onBackPreviousPage ? (
<div className="main-page-nav-horizontal-left-header">
<MainPageHeader title={title} onBackPreviousPage={onBackPreviousPage} />
</div>
) : (
<Tabs
activeKey={
activeKeys.find(key =>
leftMenu.some(menuItem => menuItem.key === key),
) || "none"
}
}}
>
{leftMenu.map(menuItem => {
return <TabPane tab={menuItem.title} key={menuItem.key}></TabPane>;
})}
</Tabs>
onChange={key => {
const item = leftMenu.find(e => e.key === key);
if (item) {
onClick(item);
} else {
if (process.env.NODE_ENV === "development") {
console.warn("[MainPageNav] tab missing key", key);
}
}
}}
>
{leftMenu.map(menuItem => {
return <TabPane tab={menuItem.title} key={menuItem.key}></TabPane>;
})}
</Tabs>
)}
</div>
<div className="main-page-nav-horizontal-right">
<div className="main-page-nav-horizontal-right-item">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
}
}

.main-page-nav-horizontal-left-header {
}

.main-page-nav-horizontal-right {
display: flex;
flex-direction: row;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,7 @@ Overview.args = {
roomStatus: RoomStatus.Started,
beginTime: 1619771930756,
endTime: 1619775530756,
count: 7,
},
showRoomCountVisible: true,
};
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,11 @@
font-size: 12px;
color: #7a7b7c;
}

.room-detail-body-content-room-count {
margin-left: auto;
text-align: center;
margin-top: 16px;
cursor: pointer;
color: #3381ff;
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,19 @@ import { zhCN } from "date-fns/locale";
import { RoomInfo, RoomType } from "../../../types/room";
import { RoomStatusElement } from "../../RoomStatusElement";
import { useTranslation } from "react-i18next";
import { observer } from "mobx-react-lite";

export interface RoomDetailBodyProps {
roomInfo: RoomInfo;
showRoomCountVisible?: boolean;
jumpToPeriodicRoomDetailPage?: () => void;
}

export const RoomDetailBody: React.FC<RoomDetailBodyProps> = ({ roomInfo }) => {
export const RoomDetailBody = observer<RoomDetailBodyProps>(function RoomDetailBody({
roomInfo,
showRoomCountVisible,
jumpToPeriodicRoomDetailPage,
}) {
const { t } = useTranslation();
const { beginTime, endTime } = roomInfo;
const { i18n } = useTranslation();
Expand All @@ -23,10 +30,10 @@ export const RoomDetailBody: React.FC<RoomDetailBodyProps> = ({ roomInfo }) => {
() => (beginTime ? formatTime(beginTime, i18n.language) : null),
[beginTime, i18n.language],
);
const formattedEndTime = useMemo(() => (endTime ? formatTime(endTime, i18n.language) : null), [
endTime,
i18n.language,
]);
const formattedEndTime = useMemo(
() => (endTime ? formatTime(endTime, i18n.language) : null),
[endTime, i18n.language],
);

return (
<div className="room-detail-body">
Expand Down Expand Up @@ -65,6 +72,14 @@ export const RoomDetailBody: React.FC<RoomDetailBodyProps> = ({ roomInfo }) => {
</div>
)}
</div>
{showRoomCountVisible && (
<div
className="room-detail-body-content-room-count"
onClick={jumpToPeriodicRoomDetailPage}
>
查看全部 {roomInfo.count} 场房间
</div>
)}
<div className="room-detail-body-content-cut-line" />
<div className="room-detail-body-content-info">
<div>
Expand All @@ -87,4 +102,4 @@ export const RoomDetailBody: React.FC<RoomDetailBodyProps> = ({ roomInfo }) => {
</div>
</div>
);
};
});
13 changes: 11 additions & 2 deletions packages/flat-components/src/components/RoomDetailPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,20 @@ import { RoomDetailFooter, RoomDetailFooterProps } from "./RoomDetailFooter";

export type RoomDetailPanelProps = RoomDetailBodyProps & RoomDetailFooterProps;

export const RoomDetailPanel: React.FC<RoomDetailPanelProps> = ({ roomInfo, ...restProps }) => {
export const RoomDetailPanel: React.FC<RoomDetailPanelProps> = ({
roomInfo,
showRoomCountVisible,
jumpToPeriodicRoomDetailPage,
...restProps
}) => {
return (
<div className="room-detail-panel-container">
<div className="room-detail-panel-body">
<RoomDetailBody roomInfo={roomInfo} />
<RoomDetailBody
roomInfo={roomInfo}
jumpToPeriodicRoomDetailPage={jumpToPeriodicRoomDetailPage}
showRoomCountVisible={showRoomCountVisible}
/>
</div>
<div className="room-detail-panel-footer">
<RoomDetailFooter {...restProps} />
Expand Down
23 changes: 10 additions & 13 deletions web/flat-web/src/components/EditRoomPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import "./style.less";

import React from "react";
import { observer } from "mobx-react-lite";
import { EditRoomBody, EditRoomBodyProps, MainPageHeader } from "flat-components";
import { EditRoomBody, EditRoomBodyProps } from "flat-components";
import { useHistory } from "react-router";
import { MainPageLayoutHorizontalContainer } from "../MainPageLayoutHorizontalContainer";

Expand All @@ -12,19 +12,16 @@ export const EditRoomPage = observer<EditRoomPageProps>(function EditRoomPage(pr
const history = useHistory();

return (
<MainPageLayoutHorizontalContainer>
<div className="edit-room-page">
<div className="edit-room-page-header-container">
<MainPageHeader
onBackPreviousPage={() => history.goBack()}
title={
<span className="edit-room-page-header-title">
{props.type === "schedule" ? "预定房间" : "修改房间"}
</span>
}
/>
<MainPageLayoutHorizontalContainer
title={
<div className="edit-room-page-header-title">
{props.type === "schedule" ? "预定房间" : "修改房间"}
</div>
<div className="edit-room-page-body fancy-scrollbar">
}
onBackPreviousPage={() => history.goBack()}
>
<div className="edit-room-page">
<div className="edit-room-page-body">
<div className="edit-room-page-body-content">
<EditRoomBody {...props} />
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@ export interface MainPageLayoutHorizontalContainerProps {
subMenu?: MainPageLayoutItem[];
activeKeys?: string[];
onRouteChange?: MainPageLayoutProps["onClick"];
title?: React.ReactNode;
onBackPreviousPage?: () => void;
}

export const MainPageLayoutHorizontalContainer: React.FC<MainPageLayoutHorizontalContainerProps> =
({ subMenu, children, activeKeys, onRouteChange }) => {
({ subMenu, children, activeKeys, onRouteChange, title, onBackPreviousPage }) => {
const leftMenu = [
{
key: routeConfig[RouteNameType.HomePage].path,
Expand Down Expand Up @@ -97,6 +99,8 @@ export const MainPageLayoutHorizontalContainer: React.FC<MainPageLayoutHorizonta

return (
<MainPageLayoutHorizontal
title={title}
onBackPreviousPage={onBackPreviousPage}
leftMenu={leftMenu}
rightMenu={rightMenu}
popMenu={popMenu}
Expand Down
19 changes: 6 additions & 13 deletions web/flat-web/src/pages/PeriodicRoomDetailPage/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { observer } from "mobx-react-lite";
import { useHistory, useParams } from "react-router-dom";
import React, { useContext, useEffect, useState } from "react";
import { useLastLocation } from "react-router-last-location";
import { LoadingPage, MainPageHeader, PeriodicRoomPanel } from "flat-components";
import { LoadingPage, PeriodicRoomPanel } from "flat-components";
import { RoomStoreContext } from "../../components/StoreProvider";
import { errorTips } from "../../components/Tips/ErrorTips";
import { globalStore } from "../../stores/GlobalStore";
Expand Down Expand Up @@ -120,19 +120,12 @@ export const PeriodicRoomDetailPage = observer<{}>(function PeriodicRoomDetailPa
}

return (
<MainPageLayoutHorizontalContainer>
<MainPageLayoutHorizontalContainer
title={<h1 className="periodic-room-detail-page-header-title">{title}</h1>}
onBackPreviousPage={backPreviousPage}
>
<div className="periodic-room-detail-page-container">
<div className="periodic-room-detail-page-header-container">
<MainPageHeader
title={
<>
<h1 className="periodic-room-detail-page-header-title">{title}</h1>
</>
}
onBackPreviousPage={backPreviousPage}
/>
</div>
<div className="periodic-room-detail-page-panel-container fancy-scrollbar">
<div className="periodic-room-detail-page-panel-container">
<PeriodicRoomPanel
rooms={rooms}
userName={ownerUserName}
Expand Down
Loading