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 ;
};
-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}
>
-
+
-
+
-
+
{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 (
-
-
-
- );
-};
-
-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 = () => {
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 = () => {
»).
-