From 318cc306d1c5abc568a891af8a00a0b35e22d2cc Mon Sep 17 00:00:00 2001 From: Pierre-Louis Guhur Date: Sun, 6 Nov 2022 10:25:37 +0100 Subject: [PATCH] fix: type and compile issues --- components/Alert.tsx | 1 + components/Chart.tsx | 41 --------- components/ChartWrapper.js | 17 ---- components/CopyField.tsx | 2 +- components/CreationSteps.tsx | 31 ++++++- components/Logo.tsx | 11 +-- components/Toggle.tsx | 23 ----- components/admin/CandidateField.tsx | 30 +++++-- components/admin/CandidateModalSet.tsx | 4 +- components/admin/ConfirmField.tsx | 47 ++++++++-- components/admin/DateField.tsx | 26 ------ components/admin/GradeField.tsx | 25 +++--- components/admin/Grades.tsx | 12 ++- components/admin/HelpButton.tsx | 75 ---------------- components/admin/ParamsField.tsx | 2 +- components/banner/Helloasso.tsx | 24 ----- components/banner/Paypal.tsx | 43 --------- components/banner/PaypalNologo.tsx | 42 --------- components/layouts/Footer.tsx | 31 ++----- components/layouts/Header.tsx | 2 +- components/layouts/LanguageSelector.tsx | 1 - components/layouts/result/HeaderResult.tsx | 10 +-- components/layouts/useBbox.tsx | 20 ----- package-lock.json | 93 +++++++------------ package.json | 4 +- pages/admin/confirm/[pid].tsx | 4 +- pages/admin/new.tsx | 6 +- pages/admin/settings/index.tsx | 2 - pages/faq.tsx | 4 +- pages/index.tsx | 13 ++- pages/result/[pid]/[[...tid]].tsx | 7 +- pages/vote/[pid]/[[...tid]].tsx | 16 ++-- pages/vote/[pid]/confirm.tsx | 4 +- public/locales/en/resource.json | 5 +- public/locales/fr/resource.json | 6 +- services/api.ts | 100 ++++++++++++--------- services/constants.ts | 38 ++++---- services/date.ts | 37 -------- services/i18n.ts | 0 services/index.ts | 0 styles/scss/_admin.scss | 3 - 41 files changed, 269 insertions(+), 593 deletions(-) delete mode 100644 components/Chart.tsx delete mode 100644 components/ChartWrapper.js delete mode 100644 components/Toggle.tsx delete mode 100644 components/admin/DateField.tsx delete mode 100644 components/admin/HelpButton.tsx delete mode 100644 components/banner/Helloasso.tsx delete mode 100644 components/banner/Paypal.tsx delete mode 100644 components/banner/PaypalNologo.tsx delete mode 100644 components/layouts/useBbox.tsx delete mode 100644 services/date.ts delete mode 100644 services/i18n.ts delete mode 100644 services/index.ts diff --git a/components/Alert.tsx b/components/Alert.tsx index 2f3f5ed..9ceb491 100644 --- a/components/Alert.tsx +++ b/components/Alert.tsx @@ -1,5 +1,6 @@ import { UncontrolledAlert } from 'reactstrap'; import { useTranslation } from 'next-i18next'; +import { CONTACT_MAIL } from '@services/constants'; const AlertDismissible = ({ msg, color }) => { const { t } = useTranslation(); diff --git a/components/Chart.tsx b/components/Chart.tsx deleted file mode 100644 index 0edb539..0000000 --- a/components/Chart.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import * as React from 'react'; -import * as d3 from 'd3'; - -function drawChart(svgRef: React.RefObject) { - const data = [12, 5, 6, 6, 9, 10]; - const h = 120; - const w = 250; - const svg = d3.select(svgRef.current); - - svg - .attr('width', w) - .attr('height', h) - .style('margin-top', 50) - .style('margin-left', 50); - - svg - .selectAll('rect') - .data(data) - .enter() - .append('rect') - .attr('x', (d, i) => i * 40) - .attr('y', (d, i) => h - 10 * d) - .attr('width', 20) - .attr('height', (d, i) => d * 10) - .attr('fill', 'steelblue'); -} - -const Chart: React.FunctionComponent = () => { - const svg = React.useRef(null); - React.useEffect(() => { - drawChart(svg); - }, [svg]); - - return ( -
- -
- ); -}; - -export default Chart; diff --git a/components/ChartWrapper.js b/components/ChartWrapper.js deleted file mode 100644 index fb55fa8..0000000 --- a/components/ChartWrapper.js +++ /dev/null @@ -1,17 +0,0 @@ -import React, { useRef, useState, useEffect } from 'react'; -import D3Chart from './D3Chart'; - -const ChartWrapper = () => { - const chartArea = useRef(null); - const [chart, setChart] = useState(null); - - useEffect(() => { - if (!chart) { - setChart(new D3Chart(chartArea.current)); - } - }, [chart]); - - return
; -}; - -export default ChartWrapper; diff --git a/components/CopyField.tsx b/components/CopyField.tsx index 2a5c259..924bab2 100644 --- a/components/CopyField.tsx +++ b/components/CopyField.tsx @@ -27,7 +27,7 @@ const CopyField = (props) => { type="text" style={{ display: 'none' }} className="form-control" - ref={ref} + // ref={ref} value={value} readOnly onClick={handleClickOnField} diff --git a/components/CreationSteps.tsx b/components/CreationSteps.tsx index 47199b0..3fe38e6 100644 --- a/components/CreationSteps.tsx +++ b/components/CreationSteps.tsx @@ -6,11 +6,11 @@ import { faArrowLeft, faCheck } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; const { Row, Col, Container } = require('reactstrap'); -const Step = ({ name, position, active, check }) => { +const Step = ({ name, position, active, check, onClick }) => { const { t } = useTranslation(); const disabled = !active && !check; return ( - + { export const creationSteps = ['candidate', 'params', 'confirm']; -export const ProgressSteps = ({ step, className, ...props }) => { +interface GoToStep { + (): void; +} + +interface ProgressStepsProps { + step: string; + goToParams: GoToStep; + goToCandidates: GoToStep; + className?: string; + [props: string]: any; +} + +export const ProgressSteps = ({ + step, + goToParams, + goToCandidates, + className = '', + ...props +}: ProgressStepsProps) => { const { t } = useTranslation(); if (!creationSteps.includes(step)) { @@ -35,6 +53,8 @@ export const ProgressSteps = ({ step, className, ...props }) => { } const stepId = creationSteps.indexOf(step); + const gotosteps = [goToCandidates, goToParams]; + return ( @@ -43,7 +63,9 @@ export const ProgressSteps = ({ step, className, ...props }) => { - {t('admin.candidates-back-step')} + + {t('admin.candidates-back-step')} + )} @@ -56,6 +78,7 @@ export const ProgressSteps = ({ step, className, ...props }) => { check={i < stepId} key={i} position={i + 1} + onClick={gotosteps[i]} /> ))} diff --git a/components/Logo.tsx b/components/Logo.tsx index c8caca7..750298c 100644 --- a/components/Logo.tsx +++ b/components/Logo.tsx @@ -1,21 +1,12 @@ -import PropTypes from 'prop-types'; import Image from 'next/image'; import logoWithText from '../public/logos/logo.svg'; import logo from '../public/logos/logo-footer.svg'; import { useTranslation } from 'next-i18next'; -const Logo = ({ title, ...props }) => { +const Logo = ({ title = undefined, ...props }) => { const { t } = useTranslation(); const src = title ? logoWithText : logo; return {t('logo.alt')}; }; -Logo.propTypes = { - title: PropTypes.bool, -}; - -Logo.defaultProps = { - title: true, -}; - export default Logo; diff --git a/components/Toggle.tsx b/components/Toggle.tsx deleted file mode 100644 index c3fccf8..0000000 --- a/components/Toggle.tsx +++ /dev/null @@ -1,23 +0,0 @@ -/** - * A toggle button using bootstrap - */ - -const Toggle = ({ active, children }) => { - return ( - - ); -}; - -Toggle.defaultProps = { - active: false, -}; - -export default Toggle; diff --git a/components/admin/CandidateField.tsx b/components/admin/CandidateField.tsx index 937a148..3bad202 100644 --- a/components/admin/CandidateField.tsx +++ b/components/admin/CandidateField.tsx @@ -8,11 +8,23 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faPlus, faTrashCan } from '@fortawesome/free-solid-svg-icons'; import { Row, Col } from 'reactstrap'; import { useElection, useElectionDispatch } from './ElectionContext'; -import defaultAvatar from '../../public/avatar.svg'; +import whiteAvatar from '../../public/avatar.svg'; import CandidateModalSet from './CandidateModalSet'; import CandidateModalDel from './CandidateModalDel'; -const CandidateField = ({ position, className = '', ...inputProps }) => { +interface CandidateProps { + position: number; + className?: string; + defaultAvatar?: any; + [props: string]: any; +} + +const CandidateField = ({ + position, + className = '', + defaultAvatar = whiteAvatar, + ...props +}: CandidateProps) => { const { t } = useTranslation(); const election = useElection(); @@ -38,25 +50,27 @@ const CandidateField = ({ position, className = '', ...inputProps }) => { } p-2 my-3 border border-dashed border-2 border-light border-opacity-25 align-items-center ${ active ? 'active' : '' }`} - {...inputProps} + {...props} > - + - + {t('common.thumbnail')} - + {candidate.name ? candidate.name : t('admin.add-candidate')} - + {active ? ( { tabIndex={position + 1} value={state.name} onChange={handleName} - maxLength="250" + // maxLength="250" autoFocus required /> @@ -138,7 +138,7 @@ const CandidateModal = ({ isOpen, position, toggle }) => { placeholder={t('admin.candidate-desc-placeholder')} onChange={handleDescription} value={state.description} - maxLength="250" + // maxLength="250" /> diff --git a/components/admin/ConfirmField.tsx b/components/admin/ConfirmField.tsx index 242479e..4db5ee7 100644 --- a/components/admin/ConfirmField.tsx +++ b/components/admin/ConfirmField.tsx @@ -6,6 +6,7 @@ import { faCheck, faArrowLeft, faPen, + faArrowRight, } from '@fortawesome/free-solid-svg-icons'; import { Button, @@ -21,15 +22,19 @@ import { import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useElection } from './ElectionContext'; import CandidateField from './CandidateField'; +import AccessResults from './AccessResults'; +import LimitDate from './LimitDate'; +import Grades from './Grades'; +import Private from './Private'; const TitleField = () => { const { t } = useTranslation(); const election = useElection(); return ( - + -

{t('admin.access-results')}

+
{t('admin.confirm-question')}

{election.title}

@@ -41,17 +46,17 @@ const CandidatesField = () => { const { t } = useTranslation(); const election = useElection(); return ( - + -

{t('admin.access-results')}

+
{t('admin.confirm-candidates')}
{election.candidates.map((_, i) => ( - + ))}
); @@ -62,15 +67,39 @@ const ConfirmField = ({ onSubmit, goToCandidates, goToParams }) => { const election = useElection(); return ( - + - -

{t('common.the-vote')}

+ + +

{t('common.the-vote')}

+
- + + +

{t('common.the-params')}

+
+ + + + +
+
+ +
); }; diff --git a/components/admin/DateField.tsx b/components/admin/DateField.tsx deleted file mode 100644 index 9f288ce..0000000 --- a/components/admin/DateField.tsx +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This component manages the date for ending the election - */ -import { useState } from 'react'; -import { Row } from 'reactstrap'; -import { useTranslation } from 'next-i18next'; -import { useElection, useElectionDispatch } from './ElectionContext'; -import Toggle from '@components/Toggle'; - -const DateField = () => { - const election = useElection(); - const dispatch = useElectionDispatch(); - const [toggle, setToggle] = useState(false); - const { t } = useTranslation(); - - return ( - - {t('admin.date-limit')} - - !t)} /> - - - ); -}; - -export default DateField; diff --git a/components/admin/GradeField.tsx b/components/admin/GradeField.tsx index fa22eb2..572698b 100644 --- a/components/admin/GradeField.tsx +++ b/components/admin/GradeField.tsx @@ -42,18 +42,21 @@ const GradeField = ({ value }) => { }; return ( - - +
+
{grade.name} - - - - - +
+
+ +
+
); }; diff --git a/components/admin/Grades.tsx b/components/admin/Grades.tsx index 5bd9376..4682dce 100644 --- a/components/admin/Grades.tsx +++ b/components/admin/Grades.tsx @@ -66,10 +66,14 @@ const Grades = () => {

{t('admin.grades-desc')}

- {grades.map((_, i) => ( - - ))} - {/* */} + + {grades.map((_, i) => ( + + + + ))} + {/* */} +
diff --git a/components/admin/HelpButton.tsx b/components/admin/HelpButton.tsx deleted file mode 100644 index 2a36e83..0000000 --- a/components/admin/HelpButton.tsx +++ /dev/null @@ -1,75 +0,0 @@ -/* eslint react/prop-types: 0 */ -import React, { Component } from 'react'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons'; - -class HelpButton extends Component { - constructor(props) { - super(props); - - this.state = { - tooltipOpen: false, - }; - } - - showTooltip = () => { - this.setState({ - tooltipOpen: true, - }); - }; - - hideTooltip = () => { - this.setState({ - tooltipOpen: false, - }); - }; - - render() { - return ( - - - {this.state.tooltipOpen ? ( - - - {this.props.children} - - ) : ( - - )} - - - - ); - } -} -export default HelpButton; diff --git a/components/admin/ParamsField.tsx b/components/admin/ParamsField.tsx index 6dff031..619dda8 100644 --- a/components/admin/ParamsField.tsx +++ b/components/admin/ParamsField.tsx @@ -11,7 +11,7 @@ const ParamsField = ({ onSubmit }) => { const { t } = useTranslation(); return ( - +
diff --git a/components/banner/Helloasso.tsx b/components/banner/Helloasso.tsx deleted file mode 100644 index 8375508..0000000 --- a/components/banner/Helloasso.tsx +++ /dev/null @@ -1,24 +0,0 @@ -/* eslint react/prop-types: 0 */ -import React from 'react'; -import i18n from '../../i18n'; - -const Helloasso = (props) => { - const locale = - i18n.language.substring(0, 2).toLowerCase() === 'fr' ? 'fr' : 'en'; - const linkHelloAssoBanner = - locale === 'fr' - ? 'https://www.helloasso.com/associations/mieux-voter/formulaires/1/widget' - : 'https://www.helloasso.com/associations/mieux-voter/formulaires/1/widget/en'; - - return ( - - support us on helloasso - - ); -}; - -export default Helloasso; diff --git a/components/banner/Paypal.tsx b/components/banner/Paypal.tsx deleted file mode 100644 index c4a64ec..0000000 --- a/components/banner/Paypal.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { useTranslation } from 'next-i18next'; -import { useRouter } from 'next/router'; -import { faPaypal } from '@fortawesome/free-brands-svg-icons'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; - -const Paypal = () => { - const { t } = useTranslation(); - - // FIXME generate a xx_XX string for locale version - const { locale } = useRouter(); - let localeShort = locale.substring(0, 2); - let localeComplete = - localeShort.toLowerCase() + '_' + localeShort.toUpperCase(); - if (localeComplete === 'en_EN') { - localeComplete = 'en_US'; - } - const pixelLink = `https://www.paypal.com/${localeComplete}/i/scr/pixel.gif`; - - return ( -
-
- - - - -
-
- ); -}; - -export default Paypal; diff --git a/components/banner/PaypalNologo.tsx b/components/banner/PaypalNologo.tsx deleted file mode 100644 index 95e571b..0000000 --- a/components/banner/PaypalNologo.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { useTranslation } from 'next-i18next'; -import { useRouter } from 'next/router'; -import { faPaypal } from '@fortawesome/free-brands-svg-icons'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; - -const PaypalNoLogo = () => { - const { t } = useTranslation(); - - // FIXME generate a xx_XX string for locale version - const { locale } = useRouter(); - let localeShort = locale.substring(0, 2); - let localeComplete = - localeShort.toLowerCase() + '_' + localeShort.toUpperCase(); - if (localeComplete === 'en_EN') { - localeComplete = 'en_US'; - } - const pixelLink = `https://www.paypal.com/${localeComplete}/i/scr/pixel.gif`; - - return ( -
-
- - - - -
-
- ); -}; - -export default PaypalNoLogo; diff --git a/components/layouts/Footer.tsx b/components/layouts/Footer.tsx index aa4c062..a16f29b 100644 --- a/components/layouts/Footer.tsx +++ b/components/layouts/Footer.tsx @@ -5,26 +5,14 @@ import Logo from '@components/Logo'; import LanguageSelector from '@components/layouts/LanguageSelector'; const Footer = () => { - const linkStyle = { whiteSpace: 'nowrap' }; const { t } = useTranslation(); - // const [bboxLink1, link1] = useBbox(); - // const [bboxLink2, link2] = useBbox(); - // const [bboxLink3, link3] = useBbox(); - // const [bboxLink4, link4] = useBbox(); - // const [bboxLink5, link5] = useBbox(); - - // - {t('menu.majority-judgment')} - - ), + component: {t('menu.majority-judgment')}, }, { component: ( @@ -32,29 +20,20 @@ const Footer = () => { href="https://mieuxvoter.fr/" target="_blank" rel="noopener noreferrer" - style={linkStyle} > {t('menu.whoarewe')} ), }, { - component: ( - - {t('menu.faq')} - - ), + component: {t('menu.faq')}, }, { - component: ( - - {t('menu.news')} - - ), + component: {t('menu.news')}, }, { component: ( - + {t('menu.contact-us')} ), @@ -72,7 +51,7 @@ const Footer = () => {
- + {menu.map((item, i) => ( {item.component} diff --git a/components/layouts/Header.tsx b/components/layouts/Header.tsx index b382a1b..1235317 100644 --- a/components/layouts/Header.tsx +++ b/components/layouts/Header.tsx @@ -87,7 +87,7 @@ const Header = () => { - +
diff --git a/components/layouts/LanguageSelector.tsx b/components/layouts/LanguageSelector.tsx index be908cd..e2147be 100644 --- a/components/layouts/LanguageSelector.tsx +++ b/components/layouts/LanguageSelector.tsx @@ -22,7 +22,6 @@ const LanguageSelector = () => { customLabels={{ GB: 'English', FR: 'Francais' }} className="menu-flags" selectedSize={14} - selectedSize={14} /> ); }; diff --git a/components/layouts/result/HeaderResult.tsx b/components/layouts/result/HeaderResult.tsx index af1f8d3..746d9ed 100644 --- a/components/layouts/result/HeaderResult.tsx +++ b/components/layouts/result/HeaderResult.tsx @@ -1,11 +1,11 @@ import React from 'react'; import HeaderDesktopResult from './HeaderDesktopResult'; import HeaderMobileResult from './HeaderMobileResult'; -import { useMediaQuery } from 'react-responsive'; +// import { useMediaQuery } from 'react-responsive'; export default function HeaderResult() { - const isMobile = useMediaQuery({ query: '(max-width: 800px)' }); - - if (isMobile) return ; - else return ; + // const isMobile = useMediaQuery({ query: '(max-width: 800px)' }); + // + // if (isMobile) return ; + return ; } diff --git a/components/layouts/useBbox.tsx b/components/layouts/useBbox.tsx deleted file mode 100644 index 57e9f45..0000000 --- a/components/layouts/useBbox.tsx +++ /dev/null @@ -1,20 +0,0 @@ -/* eslint react/prop-types: 0 */ -import { useState } from 'react'; -import { useRef } from 'react'; -import { useEffect } from 'react'; - -export const useBbox = () => { - const ref = useRef(); - const [bbox, setBbox] = useState({}); - - const set = () => - setBbox(ref && ref.current ? ref.current.getBoundingClientRect() : {}); - - useEffect(() => { - set(); - window.addEventListener('resize', set); - return () => window.removeEventListener('resize', set); - }, []); - - return [bbox, ref]; -}; diff --git a/package-lock.json b/package-lock.json index f762355..a79e35d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,20 +20,18 @@ "bootstrap-scss": "^5.2.2", "clipboard": "^2.0.10", "dotenv": "^8.6.0", + "embla-carousel-react": "^7.0.4", "eslint-config-next": "^13.0.0", "framer-motion": "^7.6.4", - "highcharts-react-official": "^3.1.0", "i18next": "^22.0.3", "mailgun.js": "^3.3.2", "next": "^13.0.0", "next-i18next": "^12.1.0", - "prop-types": "^15.8.1", "react": "^18.2.0", "react-datepicker": "^4.8.0", "react-dom": "^18.2.0", "react-flags-select": "^2.2.3", "react-i18next": "^12.0.0", - "react-toastify": "^9.1.0", "reactstrap": "^9.1.4", "sass": "^1.32.13", "typescript": "^4.8.4" @@ -1476,14 +1474,6 @@ "node": ">=6" } }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -1659,6 +1649,22 @@ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "peer": true }, + "node_modules/embla-carousel": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-7.0.4.tgz", + "integrity": "sha512-2/EO9Zh6yT1EiTNkCUhbYfAqe6PVODSYFZQxTeuLGFYYNTKTkHvalfuFVIdEDmtxbbGepuYtLqCmk6yzJfJeyw==" + }, + "node_modules/embla-carousel-react": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-7.0.4.tgz", + "integrity": "sha512-pSnxrvsLMt3TwVS8uqYMZGfJvRLy+3rcg3JOImVDgvNEtEbbzXoL8tR34Dph6Jh38e/Z9IZW7jVX0igu/haLyQ==", + "dependencies": { + "embla-carousel": "7.0.4" + }, + "peerDependencies": { + "react": "^18.1.0" + } + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2636,21 +2642,6 @@ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, - "node_modules/highcharts": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.3.1.tgz", - "integrity": "sha512-8UgVcLmgpiYwnsII0Ht76O+GRutfbrLslZFH3c53fXgl3aZ6NRB4mW5qsIyfsUExMny/n9JqYO/BFNejOKC6AA==", - "peer": true - }, - "node_modules/highcharts-react-official": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/highcharts-react-official/-/highcharts-react-official-3.1.0.tgz", - "integrity": "sha512-CkWJHrVMOc6CT8KFu1dR+a0w5OxCVKKgZUNWtEi5TmR0xqBDIDe+RyM652MAN/jBYppxMo6TCUVlRObCyWAn0Q==", - "peerDependencies": { - "highcharts": ">=6.0.0", - "react": ">=16.8.0" - } - }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -3803,18 +3794,6 @@ "react-dom": "^16.8.0 || ^17 || ^18" } }, - "node_modules/react-toastify": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.0.tgz", - "integrity": "sha512-63i/5SROvfYz9yzdkmxIrpndtggTdif/5ZpswY3VH+s2/S1Hxo/hiv+oGXnPH6UO2pJBOgfcLNeyVh7okRmnhg==", - "dependencies": { - "clsx": "^1.1.1" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" - } - }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -5465,11 +5444,6 @@ "shallow-clone": "^3.0.0" } }, - "clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -5599,6 +5573,19 @@ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "peer": true }, + "embla-carousel": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-7.0.4.tgz", + "integrity": "sha512-2/EO9Zh6yT1EiTNkCUhbYfAqe6PVODSYFZQxTeuLGFYYNTKTkHvalfuFVIdEDmtxbbGepuYtLqCmk6yzJfJeyw==" + }, + "embla-carousel-react": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-7.0.4.tgz", + "integrity": "sha512-pSnxrvsLMt3TwVS8uqYMZGfJvRLy+3rcg3JOImVDgvNEtEbbzXoL8tR34Dph6Jh38e/Z9IZW7jVX0igu/haLyQ==", + "requires": { + "embla-carousel": "7.0.4" + } + }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -6316,18 +6303,6 @@ "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" }, - "highcharts": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.3.1.tgz", - "integrity": "sha512-8UgVcLmgpiYwnsII0Ht76O+GRutfbrLslZFH3c53fXgl3aZ6NRB4mW5qsIyfsUExMny/n9JqYO/BFNejOKC6AA==", - "peer": true - }, - "highcharts-react-official": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/highcharts-react-official/-/highcharts-react-official-3.1.0.tgz", - "integrity": "sha512-CkWJHrVMOc6CT8KFu1dR+a0w5OxCVKKgZUNWtEi5TmR0xqBDIDe+RyM652MAN/jBYppxMo6TCUVlRObCyWAn0Q==", - "requires": {} - }, "hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -7070,14 +7045,6 @@ "warning": "^4.0.2" } }, - "react-toastify": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.0.tgz", - "integrity": "sha512-63i/5SROvfYz9yzdkmxIrpndtggTdif/5ZpswY3VH+s2/S1Hxo/hiv+oGXnPH6UO2pJBOgfcLNeyVh7okRmnhg==", - "requires": { - "clsx": "^1.1.1" - } - }, "react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", diff --git a/package.json b/package.json index d2f4c9e..7c2df40 100644 --- a/package.json +++ b/package.json @@ -22,20 +22,18 @@ "bootstrap-scss": "^5.2.2", "clipboard": "^2.0.10", "dotenv": "^8.6.0", + "embla-carousel-react": "^7.0.4", "eslint-config-next": "^13.0.0", "framer-motion": "^7.6.4", - "highcharts-react-official": "^3.1.0", "i18next": "^22.0.3", "mailgun.js": "^3.3.2", "next": "^13.0.0", "next-i18next": "^12.1.0", - "prop-types": "^15.8.1", "react": "^18.2.0", "react-datepicker": "^4.8.0", "react-dom": "^18.2.0", "react-flags-select": "^2.2.3", "react-i18next": "^12.0.0", - "react-toastify": "^9.1.0", "reactstrap": "^9.1.4", "sass": "^1.32.13", "typescript": "^4.8.4" diff --git a/pages/admin/confirm/[pid].tsx b/pages/admin/confirm/[pid].tsx index 7f13d15..6eea963 100644 --- a/pages/admin/confirm/[pid].tsx +++ b/pages/admin/confirm/[pid].tsx @@ -26,7 +26,7 @@ import config from '../../../next-i18next.config.js'; import { AnimatePresence, motion } from 'framer-motion'; export async function getServerSideProps({ query: { pid }, locale }) { let [details, translations] = await Promise.all([ - getDetails(pid), + getDetails(pid, console.log, console.log), serverSideTranslations(locale, [], config), ]); @@ -63,7 +63,7 @@ const ConfirmElection = ({ const { t } = useTranslation(); if (err) { - return ; + return ; } const origin = diff --git a/pages/admin/new.tsx b/pages/admin/new.tsx index 843fb85..d577fef 100644 --- a/pages/admin/new.tsx +++ b/pages/admin/new.tsx @@ -54,7 +54,11 @@ const CreateElectionForm = () => { return ( - + setStepId(0)} + goToParams={() => setStepId(1)} + /> {Step} ); diff --git a/pages/admin/settings/index.tsx b/pages/admin/settings/index.tsx index f9cd729..dade81a 100644 --- a/pages/admin/settings/index.tsx +++ b/pages/admin/settings/index.tsx @@ -11,7 +11,6 @@ import { Input, Label, InputGroup, - InputGroupAddon, Button, Card, CardBody, @@ -19,7 +18,6 @@ import { ModalHeader, ModalBody, ModalFooter, - CustomInput, } from 'reactstrap'; import { GetStaticProps } from 'next'; // import {ReactMultiEmail, isEmail} from "react-multi-email"; diff --git a/pages/faq.tsx b/pages/faq.tsx index b862aa5..4f2561b 100644 --- a/pages/faq.tsx +++ b/pages/faq.tsx @@ -1,7 +1,6 @@ import Link from 'next/link'; import { Container, Row, Col } from 'reactstrap'; import { useTranslation } from 'next-i18next'; -import Paypal from '@components/banner/Paypal'; import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; import config from '../next-i18next.config.js'; import { GetStaticProps } from 'next'; @@ -39,7 +38,7 @@ const FAQ = () => { »).

-