PromucFlow_constructor/app/client/src/pages/AppViewer/viewer/AppViewerHeader.tsx

97 lines
2.5 KiB
TypeScript
Raw Normal View History

import React from "react";
import { Link } from "react-router-dom";
import { noop } from "lodash";
import styled from "styled-components";
2019-11-25 05:07:27 +00:00
import StyledHeader from "components/designSystems/appsmith/StyledHeader";
import { FormIcons } from "icons/FormIcons";
2020-05-14 06:06:20 +00:00
import Button from "components/editorComponents/Button";
import { EDIT_APP } from "constants/messages";
import { isPermitted } from "pages/Applications/permissionHelpers";
import { ApplicationPayload } from "constants/ReduxActionConstants";
import { APPLICATIONS_URL } from "constants/routes";
2019-11-05 05:09:50 +00:00
const HeaderWrapper = styled(StyledHeader)`
position: fixed;
top: 0;
left: 0;
background: white;
justify-content: space-between;
`;
const StyledHomeButton = styled.div<{
open: boolean;
}>`
&& a {
:hover {
text-decoration: none;
}
color: ${props => props.theme.colors.textDefault};
}
2020-05-14 06:06:20 +00:00
display: flex;
justify-content: flex-start;
padding-left: ${props =>
props.open ? props.theme.sideNav.maxWidth : props.theme.sideNav.minWidth}px;
`;
const StyledButton = styled(Button)`
max-width: 200px;
display: flex;
justify-content: flex-end;
`;
const StyledApplicationName = styled.span`
font-size: 15px;
padding-left: 8px;
`;
2020-05-14 06:06:20 +00:00
type AppViewerHeaderProps = {
url?: string;
open: boolean;
permissionRequired: string;
permissions: string[];
currentApplicationDetails?: ApplicationPayload;
2020-05-14 06:06:20 +00:00
};
export const AppViewerHeader = (props: AppViewerHeaderProps) => {
const hasPermission = isPermitted(
props.permissions,
props.permissionRequired,
);
const { currentApplicationDetails, open } = props;
2020-05-14 06:06:20 +00:00
return (
<HeaderWrapper>
{currentApplicationDetails && (
<StyledHomeButton open={open}>
<Link to={APPLICATIONS_URL}>
<FormIcons.HOME_ICON
height={20}
width={20}
color={"grey"}
background={"grey"}
onClick={noop}
style={{ alignSelf: "center", cursor: "pointer" }}
/>
<StyledApplicationName>
{currentApplicationDetails.name}
</StyledApplicationName>
</Link>
</StyledHomeButton>
)}
{props.url && hasPermission && (
<StyledButton
2020-06-03 10:50:10 +00:00
className="t--back-to-editor"
2020-05-14 06:06:20 +00:00
href={props.url}
intent="primary"
icon="chevron-left"
iconAlignment="left"
text={EDIT_APP}
2020-05-14 06:06:20 +00:00
filled
/>
)}
</HeaderWrapper>
);
};
export default AppViewerHeader;