@proca/widget
Version:
Proca is an open-source campaign toolkit designed to empower activists and organisations in their digital advocacy efforts. It provides a flexible and customisable platform for creating and managing online petitions, email campaigns, and other forms of di
112 lines (102 loc) • 3.25 kB
JavaScript
import React, { useEffect } from "react";
import ReactDOM from "react-dom";
import { useCampaignConfig } from "@hooks/useConfig";
import useCount from "@hooks/useCount";
import { formatNumber } from "@components/ProgressCounter";
import { makeStyles } from "@material-ui/core/styles";
import Box from "@material-ui/core/Box";
const useStyles = makeStyles(theme => ({
"@global": {
"#proca-ribbon": {
display: "block",
opacity: 1,
transition: "all .5s",
},
".proca-progress": {
display: "none",
},
},
root: {
top: 100,
right: 0,
width: 800,
position: "fixed",
zIndex: 70000,
},
widget: {
margin: "10px",
},
box: {
opacity: 0.8,
padding: "10px",
color: "white",
backgroundColor: theme.palette.primary.main,
},
ribbon: {
backgroundColor: theme.palette.primary.main,
color: "white",
width: 850,
textAlign: "center",
padding: "10px 200px",
zIndex: 10000,
"&::before": {
position: "absolute",
zIndex: -1,
content: "",
display: "block",
border: "5px solid #2980b9",
},
"&::after": {
position: "absolute",
zIndex: -1,
content: "",
display: "block",
border: "5px solid #2980b9",
},
transform: "translateX(180px) rotate(35deg)",
top: 60,
marginLeft: -40,
},
}));
const elem = document.createElement("div");
elem.id = "proca-ribbon";
document.body.prepend(elem);
const Closed = () => {
const config = useCampaignConfig();
const count = useCount(config.actionPage);
const classes = useStyles();
useEffect(() => {
document.addEventListener("mousedown", () => {
const ribbon = document.getElementById("proca-ribbon");
window.setTimeout(() => (ribbon.style.display = "none"), 500);
});
if (config.component.notice?.widget === true) {
// not sure if used still
const ribbon = document.getElementById("ribbon");
const widget = document.getElementsByClassName("proca-widget")[0];
widget.before(ribbon);
}
}, []);
let root = classes.root;
let box = classes.ribbon;
if (config.component.notice?.widget === true) {
root = classes.widget;
box = classes.box;
}
if (config.component.widget?.closed !== true) return null;
return ReactDOM.createPortal(
<div className={root}>
<Box className={box} boxShadow={3}>
<h3>{formatNumber(count)}</h3>
<span className={classes.span}>
Thank you - Благодаря ти - Hvala vam - Děkujib – Tack – Bedankt –
Aitäh – Kiitos – Merci – Danke – ευχαριστώ – Kösz – Grazie – Paldies -
Dziękuję Ci – Obrigado – Mulțumesc – Ďakujem - Hvala vam – Gracias
</span>
</Box>
</div>,
elem
);
// return (<Alert icon={<ThumbUpIcon fontSize="inherit" />} severity="success" autoHideDuration={null} title={formatNumber(count)}>Thank you - Благодаря ти - Hvala vam - Děkujib – Tack – Bedankt – Aitäh – Kiitos – Merci – Danke – ευχαριστώ – Kösz – Grazie – Paldies - Dziękuję Ci – Obrigado – Mulțumesc – Ďakujem - Hvala vam – Gracias</Alert>);
};
export default Closed;