PromucFlow_constructor/app/client/src/pages/Editor/ReflowBetaCard.tsx
rahulramesha b6bcfec549
chore: Reflow Info Card (#10481)
* removing reflow flag and adding Reflow Info card

* verbage correction

* adding reflow docs link
2022-01-20 14:59:09 +05:30

158 lines
3.8 KiB
TypeScript

import React from "react";
import styled from "styled-components";
import { useDispatch, useSelector } from "react-redux";
import Checkbox from "components/ads/Checkbox";
import { ReactComponent as BetaIcon } from "assets/icons/menu/beta.svg";
import { ReactComponent as RightArrow } from "assets/icons/ads/arrow-right-line.svg";
import { ReactComponent as CloseIcon } from "assets/icons/control/close.svg";
import {
closeOnboardingCardAction,
setEnableReflowAction,
} from "actions/reflowActions";
import {
getIsShowReflowCard,
isReflowEnabled,
} from "selectors/widgetReflowSelectors";
import { setReflowBetaFlag } from "utils/storage";
import AnalyticsUtil from "utils/AnalyticsUtil";
import {
createMessage,
REFLOW_BETA_CHECKBOX_LABEL,
REFLOW_INFO_CARD_CONTENT_1,
REFLOW_INFO_CARD_CONTENT_2,
REFLOW_INFO_CARD_HEADER,
REFLOW_LEARN_MORE,
} from "constants/messages";
import { getCurrentUser } from "selectors/usersSelectors";
import { User } from "constants/userConstants";
const ReflowBetaWrapper = styled.div`
display: inline-flex;
flex-direction: row;
.beta-icon {
width: 45px;
height: 25px;
fill: #1d9bd1;
rect {
stroke: #1d9bd1;
}
path {
fill: #fff;
}
}
`;
const ReflowBetaInfoCard = styled.div`
display: flex;
padding: 8px;
flex-direction: row;
color: #00407D;
background: #E8F5FA;
}
`;
const BulletList = styled.ul`
list-style: inherit;
list-style-position: outside;
margin-left: 18px;
`;
const LearnMoreLink = styled.div`
display: flex;
align-items: center;
width: fit-content;
cursor: pointer;
transition: transform 200ms;
:hover {
border-bottom: 1px solid #00407d;
transform: scale(1.05);
}
`;
const StyledCloseIcon = styled(CloseIcon)`
width: 65px;
fill: #1d9bd1;
cursor: pointer;
transition: transform 200ms;
path {
fill: #1d9bd1;
}
:hover {
transform: scale(1.1);
fill: #00407d;
path {
fill: #00407d;
}
}
`;
const StyledRightArrow = styled(RightArrow)`
fill: #00407d;
path {
fill: #00407d;
}
`;
const BoldHeading = styled.h3`
font-weight: 600;
padding: 5px 0;
`;
export function ReflowBetaCard() {
const dispatch = useDispatch();
const user: User | undefined = useSelector(getCurrentUser);
const shouldReflow = useSelector(isReflowEnabled);
const shouldShowReflowCard = useSelector(getIsShowReflowCard);
const openReflowDocs = () => {
window.open(
"https://docs.appsmith.com/core-concepts/designing-an-application",
"_blank",
);
};
const reflowBetaToggle = (isChecked: boolean) => {
if (user?.email) {
setReflowBetaFlag(user.email, isChecked);
}
dispatch(setEnableReflowAction(isChecked));
AnalyticsUtil.logEvent("REFLOW_BETA_FLAG", {
enabled: isChecked,
});
};
const reflowCloseCard = () => {
dispatch(closeOnboardingCardAction());
};
return (
<>
<ReflowBetaWrapper>
<Checkbox
isDefaultChecked={shouldReflow}
label={createMessage(REFLOW_BETA_CHECKBOX_LABEL)}
onCheckChange={reflowBetaToggle}
/>
<BetaIcon className="beta-icon" />
</ReflowBetaWrapper>
{shouldShowReflowCard && (
<ReflowBetaInfoCard>
<div>
<BoldHeading>{createMessage(REFLOW_INFO_CARD_HEADER)}</BoldHeading>
<BulletList>
<li>{createMessage(REFLOW_INFO_CARD_CONTENT_1)}</li>
<li>{createMessage(REFLOW_INFO_CARD_CONTENT_2)}</li>
</BulletList>
<LearnMoreLink onClick={openReflowDocs}>
<BoldHeading>{createMessage(REFLOW_LEARN_MORE)}</BoldHeading>
<StyledRightArrow />
</LearnMoreLink>
</div>
<StyledCloseIcon onClick={reflowCloseCard} />
</ReflowBetaInfoCard>
)}
</>
);
}