import { templateIdUrl } from "@appsmith/RouteBuilder"; import { FORK_THIS_TEMPLATE, FORK_THIS_TEMPLATE_BUILDING_BLOCK, GO_BACK, createMessage, } from "@appsmith/constants/messages"; import { Button, Link, Text } from "design-system"; import { useQuery } from "pages/Editor/utils"; import React from "react"; import { useSelector } from "react-redux"; import { getActiveTemplateSelector, getForkableWorkspaces, isImportingTemplateToAppSelector, } from "selectors/templatesSelectors"; import styled from "styled-components"; import history from "utils/history"; import ForkTemplate from "./ForkTemplate"; import { TEMPLATE_BUILDING_BLOCKS_FILTER_FUNCTION_VALUE } from "./constants"; const HeaderWrapper = styled.div` display: flex; align-items: center; justify-content: space-between; `; const Title = styled(Text)` display: inline-block; color: var(--ads-v2-color-fg-emphasis-plus); `; interface Props { templateId: string; onClickUseTemplate?: (id: string) => void; showBack: boolean; } const SHOW_FORK_MODAL_PARAM = "showForkTemplateModal"; function TemplateViewHeader({ onClickUseTemplate, showBack, templateId, }: Props) { const currentTemplate = useSelector(getActiveTemplateSelector); const query = useQuery(); const workspaceList = useSelector(getForkableWorkspaces); const isImportingTemplateToApp = useSelector( isImportingTemplateToAppSelector, ); const goBack = () => { history.goBack(); }; const onForkModalClose = () => { history.replace(`${templateIdUrl({ id: templateId })}`); }; const onForkButtonTrigger = () => { if (onClickUseTemplate) { onClickUseTemplate(templateId); } else { history.replace( `${templateIdUrl({ id: templateId })}?${SHOW_FORK_MODAL_PARAM}=true`, ); } }; const FORK_BUTTON_TEXT = currentTemplate?.functions.includes( TEMPLATE_BUILDING_BLOCKS_FILTER_FUNCTION_VALUE, ) ? FORK_THIS_TEMPLATE_BUILDING_BLOCK : FORK_THIS_TEMPLATE; return ( {showBack && ( {createMessage(GO_BACK)} )} {currentTemplate?.title}
{!!workspaceList.length && ( )}
); } export default TemplateViewHeader;