diff --git a/src/js/components/Style/ManageMyCandidates.jsx b/src/js/components/Style/ManageMyCandidates.jsx index 39e1d98ff..dba5c4bd9 100644 --- a/src/js/components/Style/ManageMyCandidates.jsx +++ b/src/js/components/Style/ManageMyCandidates.jsx @@ -58,7 +58,7 @@ export const VerticalBarWrapper = styled.div` align-self: stretch; display: flex; align-items: center; - margin: ${(p) => (p.$tight ? "0 4px" : "0 12px")}; + margin: ${(p) => (p.$tight ? '0 4px' : '0 12px')}; `; export const VerticalBar = styled.div` diff --git a/src/js/pages/ManageMyCandidates/SupporterTracking.jsx b/src/js/pages/ManageMyCandidates/SupporterTracking.jsx index e43c1e344..0e343dccf 100644 --- a/src/js/pages/ManageMyCandidates/SupporterTracking.jsx +++ b/src/js/pages/ManageMyCandidates/SupporterTracking.jsx @@ -1,10 +1,10 @@ import React, { useMemo, useState } from 'react'; import styled from 'styled-components'; import { Search as SearchIcon } from '@mui/icons-material'; -import IconButton from "@mui/material/IconButton"; -import Popover from "@mui/material/Popover"; -import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined"; -import CloseIcon from "@mui/icons-material/Close"; +import IconButton from '@mui/material/IconButton'; +import Popover from '@mui/material/Popover'; +import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; +import CloseIcon from '@mui/icons-material/Close'; import TagManager from 'react-gtm-module'; import DesignTokenColors from '../../common/components/Style/DesignTokenColors'; import VoterStore from '../../stores/VoterStore'; @@ -40,53 +40,53 @@ export default function SupporterTracking ({ selectedPoliticianWeVoteId = null } */ const SPOOF = [ { - id: "v_1", - status: "joined", - name: "Steve Smith", + id: 'v_1', + status: 'joined', + name: 'Steve Smith', endorsed: false, friendsInvited: 0, messageSentCount: 0, publicOpinion: - "", + '', }, { - id: "v_2", - status: "joined", - name: "Jane Smith", + id: 'v_2', + status: 'joined', + name: 'Jane Smith', endorsed: true, friendsInvited: 0, messageSentCount: 0, - publicOpinion: "", + publicOpinion: '', }, { - id: "v_3", - status: "joined", - name: "Steve Smith", + id: 'v_3', + status: 'joined', + name: 'Steve Smith', endorsed: true, friendsInvited: 0, messageSentCount: 0, publicOpinion: - "Lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet...", + 'Lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet...', }, { - id: "v_4", - status: "joined", - name: "Jen Smith", + id: 'v_4', + status: 'joined', + name: 'Jen Smith', endorsed: true, friendsInvited: 2, messageSentCount: 0, publicOpinion: - "Lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet...", + 'Lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet...', }, { - id: "v_5", - status: "joined", - name: "Mary Smith", + id: 'v_5', + status: 'joined', + name: 'Mary Smith', endorsed: true, friendsInvited: 2, messageSentCount: 1, publicOpinion: - "Lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet...", + 'Lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet...', }, // A couple non-joined for tabs @@ -100,10 +100,10 @@ export default function SupporterTracking ({ selectedPoliticianWeVoteId = null } // publicOpinion: "", // }, { - id: "v_6", - status: "invited", + id: 'v_6', + status: 'invited', joined: true, - name: "Alex Doe", + name: 'Alex Doe', emailInviteSent: true, textInviteSent: true, inviteLinkClicked: true, @@ -111,57 +111,57 @@ export default function SupporterTracking ({ selectedPoliticianWeVoteId = null } }, { - id: "v_7", - status: "remind", - reminderSubStatus: "invited", - name: "John Smith", + id: 'v_7', + status: 'remind', + reminderSubStatus: 'invited', + name: 'John Smith', emailInviteSent: true, textInviteSent: false, invitedDaysAgo: 9, }, { - id: "v_10", - status: "remind", - reminderSubStatus: "invited", - name: "James Smith", + id: 'v_10', + status: 'remind', + reminderSubStatus: 'invited', + name: 'James Smith', emailInviteSent: false, textInviteSent: true, invitedDaysAgo: 11, }, { - id: "v_11", - status: "remind", - reminderSubStatus: "invited", - name: "Jennifer Smith", + id: 'v_11', + status: 'remind', + reminderSubStatus: 'invited', + name: 'Jennifer Smith', emailInviteSent: true, textInviteSent: true, invitedDaysAgo: 14, }, { - id: "v_12", - status: "remind", - reminderSubStatus: "joined", - name: "Morgan Lee", + id: 'v_12', + status: 'remind', + reminderSubStatus: 'joined', + name: 'Morgan Lee', joined: true, endorsed: false, friendsInvited: 0, joinedDaysAgo: 8, }, { - id: "v_8", - status: "invited", + id: 'v_8', + status: 'invited', joined: false, - name: "Alex Doe", + name: 'Alex Doe', emailInviteSent: false, textInviteSent: true, inviteLinkClicked: false, friendsInvited: 0, }, { - id: "v_9", - status: "invited", + id: 'v_9', + status: 'invited', joined: false, - name: "SuperLong FirstNameLastName", + name: 'SuperLong FirstNameLastName', emailInviteSent: true, textInviteSent: false, inviteLinkClicked: false, @@ -223,12 +223,12 @@ export default function SupporterTracking ({ selectedPoliticianWeVoteId = null } open={open} anchorEl={anchorEl} onClose={handleClose} - anchorOrigin={{ vertical: "bottom", horizontal: "left" }} - transformOrigin={{ vertical: "top", horizontal: "left" }} + anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }} + transformOrigin={{ vertical: 'top', horizontal: 'left' }} PaperProps={{ style: { - background: "transparent", - boxShadow: "none", + background: 'transparent', + boxShadow: 'none', }, }} > diff --git a/src/js/pages/ManageMyCandidates/SupportersInvited.jsx b/src/js/pages/ManageMyCandidates/SupportersInvited.jsx index a07aa45d9..510cbda2d 100644 --- a/src/js/pages/ManageMyCandidates/SupportersInvited.jsx +++ b/src/js/pages/ManageMyCandidates/SupportersInvited.jsx @@ -217,7 +217,7 @@ export default function SupportersInvited ({ supporters }) { setFilterAnchorEl={setFilterAnchorEl} filterLabel={filterLabel} menuOptions={[ - { label: "All", onClick: () => setActiveFilter(FILTERS.ALL) }, + { label: 'All', onClick: () => setActiveFilter(FILTERS.ALL) }, { label: `Has invited friends - (${filterGroups.hasInvitedCount})`, onClick: () => setActiveFilter(FILTERS.HAS_INVITED) }, { label: `Has endorsed - (${filterGroups.hasEndorsedCount})`, diff --git a/src/js/pages/ManageMyCandidates/SupportersJoined.jsx b/src/js/pages/ManageMyCandidates/SupportersJoined.jsx index e69f4a7ab..b9a616f64 100644 --- a/src/js/pages/ManageMyCandidates/SupportersJoined.jsx +++ b/src/js/pages/ManageMyCandidates/SupportersJoined.jsx @@ -1,37 +1,37 @@ -import React, { useEffect, useMemo, useState } from "react"; -import styled from "styled-components"; -import Alert from "@mui/material/Alert"; -import Button from "@mui/material/Button"; -import ButtonBase from "@mui/material/ButtonBase"; -import Checkbox from "@mui/material/Checkbox"; -import CheckCircleIcon from "@mui/icons-material/CheckCircle"; -import ContentCopyIcon from "@mui/icons-material/ContentCopy"; -import DoneIcon from "@mui/icons-material/Done"; -import Dialog from "@mui/material/Dialog"; -import DialogTitle from "@mui/material/DialogTitle"; -import DialogContent from "@mui/material/DialogContent"; -import DialogActions from "@mui/material/DialogActions"; -import Drawer from "@mui/material/Drawer"; -import EditOutlinedIcon from "@mui/icons-material/EditOutlined"; -import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; -import KeyboardArrowRightIcon from "@mui/icons-material/KeyboardArrowRight"; -import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; -import ListItemIcon from "@mui/material/ListItemIcon"; -import ListItemText from "@mui/material/ListItemText"; -import MailOutlineIcon from "@mui/icons-material/MailOutline"; -import Menu from "@mui/material/Menu"; -import MenuItem from "@mui/material/MenuItem"; -import MoreHorizIcon from "@mui/icons-material/MoreHoriz"; -import Snackbar from "@mui/material/Snackbar"; -import TextField from "@mui/material/TextField"; -import ThumbUpIcon from "@mui/icons-material/ThumbUp"; -import VisibilityIcon from "@mui/icons-material/Visibility"; -import DesignTokenColors from "../../common/components/Style/DesignTokenColors"; +import React, { useEffect, useMemo, useState } from 'react'; +import styled from 'styled-components'; +import Alert from '@mui/material/Alert'; +import Button from '@mui/material/Button'; +import ButtonBase from '@mui/material/ButtonBase'; +import Checkbox from '@mui/material/Checkbox'; +import CheckCircleIcon from '@mui/icons-material/CheckCircle'; +import ContentCopyIcon from '@mui/icons-material/ContentCopy'; +import DoneIcon from '@mui/icons-material/Done'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import DialogContent from '@mui/material/DialogContent'; +import DialogActions from '@mui/material/DialogActions'; +import Drawer from '@mui/material/Drawer'; +import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; +import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; +import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; +import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import MailOutlineIcon from '@mui/icons-material/MailOutline'; +import Menu from '@mui/material/Menu'; +import MenuItem from '@mui/material/MenuItem'; +import MoreHorizIcon from '@mui/icons-material/MoreHoriz'; +import Snackbar from '@mui/material/Snackbar'; +import TextField from '@mui/material/TextField'; +import ThumbUpIcon from '@mui/icons-material/ThumbUp'; +import VisibilityIcon from '@mui/icons-material/Visibility'; +import DesignTokenColors from '../../common/components/Style/DesignTokenColors'; const FILTERS = { - ALL: "all", - HAS_INVITED: "hasInvited", - HAS_ENDORSED: "hasEndorsed", + ALL: 'all', + HAS_INVITED: 'hasInvited', + HAS_ENDORSED: 'hasEndorsed', }; const DEFAULT_THANK_YOU_MESSAGE = `Dear Candidate, @@ -50,7 +50,7 @@ export default function SupportersJoined ({ supporters }) { const [editOpen, setEditOpen] = useState(false); const [copyOpen, setCopyOpen] = useState(false); const [isSending, setIsSending] = useState(false); - const [sendToast, setSendToast] = useState({ open: false, ok: true, msg: "" }); + const [sendToast, setSendToast] = useState({ open: false, ok: true, msg: '' }); const totalCount = supporters.length; const selectedCount = selected.size; @@ -80,17 +80,17 @@ export default function SupportersJoined ({ supporters }) { await navigator.clipboard.writeText(thankYouMessage); setCopyOpen(true); } catch (err) { - console.error("Copy failed", err); + console.error('Copy failed', err); } }; const getPendingActions = (v) => ([ - !v.endorsed && "Endorse", - !v.publicOpinion && "Write public opinion", - v.friendsInvited === 0 && "Invite friends", + !v.endorsed && 'Endorse', + !v.publicOpinion && 'Write public opinion', + v.friendsInvited === 0 && 'Invite friends', ].filter(Boolean)); - const getActionsLabel = (v) => getPendingActions(v).join(", "); + const getActionsLabel = (v) => getPendingActions(v).join(', '); // ----- derived data for selected voters, dropdown + counts ----- const selectedVoters = useMemo(() => { @@ -143,9 +143,9 @@ export default function SupportersJoined ({ supporters }) { // ----- "All" filter dropdown data (counts) ----- const filterLabel = useMemo(() => { switch (activeFilter) { - case FILTERS.HAS_INVITED: return "Has invited friends"; - case FILTERS.HAS_ENDORSED: return "Has endorsed"; - default: return "All"; + case FILTERS.HAS_INVITED: return 'Has invited friends'; + case FILTERS.HAS_ENDORSED: return 'Has endorsed'; + default: return 'All'; } }, [activeFilter]); @@ -288,7 +288,7 @@ export default function SupportersJoined ({ supporters }) { setSendToast({ open: true, ok: true, - msg: `Sent to ${selectedVoters.length} supporter${selectedVoters.length === 1 ? "" : "s"}.`, + msg: `Sent to ${selectedVoters.length} supporter${selectedVoters.length === 1 ? '' : 's'}.`, }); // Optional: mark them as "messageSentCount + 1" in state once you have stateful supporters @@ -296,7 +296,7 @@ export default function SupportersJoined ({ supporters }) { // setSelected(new Set()); } catch (err) { console.error(err); - setSendToast({ open: true, ok: false, msg: "Send failed. Please try again." }); + setSendToast({ open: true, ok: false, msg: 'Send failed. Please try again.' }); } finally { setIsSending(false); } @@ -357,9 +357,9 @@ export default function SupportersJoined ({ supporters }) { @@ -418,9 +418,9 @@ export default function SupportersJoined ({ supporters }) { variant="text" onClick={openFilterMenu} aria-label="Filter options" - aria-controls={filterMenuOpen ? "all-filter-menu" : undefined} + aria-controls={filterMenuOpen ? 'all-filter-menu' : undefined} aria-haspopup="menu" - aria-expanded={filterMenuOpen ? "true" : undefined} + aria-expanded={filterMenuOpen ? 'true' : undefined} > {filterLabel} @@ -430,12 +430,12 @@ export default function SupportersJoined ({ supporters }) { anchorEl={filterAnchorEl} open={filterMenuOpen} onClose={closeFilterMenu} - anchorOrigin={{ vertical: "bottom", horizontal: "left" }} - transformOrigin={{ vertical: "top", horizontal: "left" }} + anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }} + transformOrigin={{ vertical: 'top', horizontal: 'left' }} PaperProps={{ style: { borderRadius: 12, - overflow: "hidden", + overflow: 'hidden', }, }} > @@ -467,9 +467,9 @@ export default function SupportersJoined ({ supporters }) { onClick={openThankYouMenu} className="u-show-mobile" aria-label="Thank you message options" - aria-controls={thankYouMenuOpen ? "thank-you-menu" : undefined} + aria-controls={thankYouMenuOpen ? 'thank-you-menu' : undefined} aria-haspopup="menu" - aria-expanded={thankYouMenuOpen ? "true" : undefined} + aria-expanded={thankYouMenuOpen ? 'true' : undefined} > Thank You message @@ -480,9 +480,9 @@ export default function SupportersJoined ({ supporters }) { anchorEl={thankYouAnchorEl} open={thankYouMenuOpen} onClose={closeThankYouMenu} - anchorOrigin={{ vertical: "bottom", horizontal: "left" }} - transformOrigin={{ vertical: "top", horizontal: "left" }} - PaperProps={{ style: { borderRadius: 12, overflow: "hidden", minWidth: 260 } }} + anchorOrigin={{ vertical: 'bottom', horizontal: 'left' }} + transformOrigin={{ vertical: 'top', horizontal: 'left' }} + PaperProps={{ style: { borderRadius: 12, overflow: 'hidden', minWidth: 260 } }} > @@ -622,7 +622,7 @@ export default function SupportersJoined ({ supporters }) { {hasMessageSent ? ( - {" "} + {' '} Message sent ({v.messageSentCount}) ) : needsAction ? ( @@ -666,7 +666,7 @@ export default function SupportersJoined ({ supporters }) {
{v.publicOpinion ? ( - {isOpen ? v.publicOpinion : "..."} + {isOpen ? v.publicOpinion : '...'} ) : ( No public opinion available. )} @@ -717,12 +717,12 @@ export default function SupportersJoined ({ supporters }) { anchorEl={rowMenuAnchorEl} open={rowMenuOpen} onClose={closeRowMenu} - anchorOrigin={{ vertical: "bottom", horizontal: "right" }} - transformOrigin={{ vertical: "top", horizontal: "right" }} + anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }} + transformOrigin={{ vertical: 'top', horizontal: 'right' }} PaperProps={{ style: { borderRadius: 12, - overflow: "hidden", + overflow: 'hidden', minWidth: 220, }, }} @@ -747,10 +747,10 @@ export default function SupportersJoined ({ supporters }) { anchor="right" open={candidateDrawerOpen} onClose={closeCandidateDrawer} - PaperProps={{ sx: { width: "min(920px, 92vw)" } }} + PaperProps={{ sx: { width: 'min(920px, 92vw)' } }} > -
-
+
+
Candidate page
@@ -759,8 +759,8 @@ export default function SupportersJoined ({ supporters }) { {/* http://localhost:3000/shannon-d-dicus-politician-from-california/-/ */}