import React from "react"; import { LightLinkOutSvg } from "@dndbeyond/character-components/es"; export enum CtaBannerOptions { NEW = "New", BETA = "Beta", ALPHA = "Alpha", } interface Props { preferenceEnabled: boolean; className: string; onPreferenceClick: () => void; preferenceTitle: string; linkHref?: string; linkTitle?: string; icon?: React.ReactNode; borderColor?: string; switchColor?: string; backgroundImageUrl?: string; bannerTitle?: CtaBannerOptions; } export default class CtaPreferenceManager extends React.PureComponent< Props, {} > { static defaultProps = { className: "", }; handlePreferenceToggle = (evt: React.MouseEvent): void => { const { onPreferenceClick } = this.props; evt.nativeEvent.stopImmediatePropagation(); evt.stopPropagation(); onPreferenceClick(); }; handlePreferenceSwitch = (evt: React.MouseEvent): void => { evt.nativeEvent.stopImmediatePropagation(); evt.stopPropagation(); //Needed to prevent the label from triggering the input onClick handler //https://stackoverflow.com/questions/24501497/why-the-onclick-element-will-trigger-twice-for-label-element }; render() { const { preferenceEnabled, className, linkHref, linkTitle, icon, borderColor, switchColor, backgroundImageUrl, bannerTitle, preferenceTitle, } = this.props; const classNames: Array = [className, "ct-cta-preference-manager"]; return (
{bannerTitle && (
{bannerTitle}
)}
{icon && (
{icon}
)}
{preferenceTitle}
{linkHref && ( {linkTitle ? linkTitle : "Feedback Forum"} )}
); } }