From b958ad9250489c5421927f2ba7694b049c3db27c Mon Sep 17 00:00:00 2001 From: David Paul Graham <43794491+dpgraham4401@users.noreply.github.com> Date: Wed, 31 Jul 2024 14:59:11 -0400 Subject: [PATCH] change typescript-eslint configuration of explicit any usage to 'warn' and disable eslint or fix for existing usage (#757) --- .../ManifestCountBarChart.tsx | 6 ++++-- .../ManifestStatusPieChart.tsx | 8 ++++++++ client/src/components/Layout/PrivateRoute.tsx | 2 +- client/src/components/Layout/Root.tsx | 20 ++++++++++--------- .../Search/RcrainfoSiteSearchBadge.tsx | 12 ++++++----- .../SiteSelect/SiteTypeSelect.spec.tsx | 1 + .../Manifest/Transporter/TransporterTable.tsx | 1 + .../HazardousWasteForm/HazardousWasteForm.tsx | 2 ++ .../StateWasteCodeSelect.tsx | 1 + .../WasteLineTable/WasteLineTable.tsx | 1 + .../src/components/UI/FloatingActionBtn.tsx | 1 + .../components/UI/HtPaginate/HtPaginate.tsx | 1 + .../src/features/NewManifest/NewManifest.tsx | 3 +++ .../useSaveManifest/useSaveManifest.tsx | 4 ++-- 14 files changed, 44 insertions(+), 19 deletions(-) diff --git a/client/src/components/Charts/ManifestCountBarChart/ManifestCountBarChart.tsx b/client/src/components/Charts/ManifestCountBarChart/ManifestCountBarChart.tsx index ef9ca2c9b..af075de38 100644 --- a/client/src/components/Charts/ManifestCountBarChart/ManifestCountBarChart.tsx +++ b/client/src/components/Charts/ManifestCountBarChart/ManifestCountBarChart.tsx @@ -1,3 +1,4 @@ +import React, { ReactElement } from 'react'; import { Bar, BarChart, @@ -8,7 +9,6 @@ import { XAxis, YAxis, } from 'recharts'; -import React, { JSXElementConstructor, ReactElement } from 'react'; const data = [ { @@ -73,6 +73,7 @@ const data = [ }, ]; +// eslint-disable-next-line @typescript-eslint/no-explicit-any const monthTickFormatter = (tick: any) => { const date = new Date(tick); @@ -80,8 +81,9 @@ const monthTickFormatter = (tick: any) => { }; const renderQuarterTick = ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any tickProps: any -): ReactElement> => { +): ReactElement => { const { x, y, payload } = tickProps; const { value, offset } = payload; const date = new Date(value); diff --git a/client/src/components/Charts/ManifestStatusPieChart/ManifestStatusPieChart.tsx b/client/src/components/Charts/ManifestStatusPieChart/ManifestStatusPieChart.tsx index c755fbd60..8b4953466 100644 --- a/client/src/components/Charts/ManifestStatusPieChart/ManifestStatusPieChart.tsx +++ b/client/src/components/Charts/ManifestStatusPieChart/ManifestStatusPieChart.tsx @@ -54,6 +54,7 @@ const calculateCoordinates = ( }; }; +// eslint-disable-next-line @typescript-eslint/no-explicit-any const renderCustomLabel = (props: any): ReactElement | null => { const { cx, cy, midAngle, outerRadius, value, hover, activeIndex, index } = props; const { sin, cos } = calculateTrig(midAngle); @@ -83,6 +84,7 @@ const renderCustomLabel = (props: any): ReactElement | null => { return activeIndex !== index ? labelElement : null; }; +// eslint-disable-next-line @typescript-eslint/no-explicit-any const renderOuterRing = (props: any): ReactElement => { const { cx, cy, midAngle, outerRadius, startAngle, endAngle, fill, payload, percent } = props; const { sin, cos } = calculateTrig(midAngle); @@ -145,6 +147,7 @@ const renderOuterRing = (props: any): ReactElement => { }; /** Render the currently focused pie slice*/ +// eslint-disable-next-line @typescript-eslint/no-explicit-any const renderActiveShape = (props: any): ReactElement => { const { cx, cy, midAngle, innerRadius, outerRadius, startAngle, endAngle, fill, onClick } = props; const { sin, cos } = calculateTrig(midAngle); @@ -170,6 +173,7 @@ const renderActiveShape = (props: any): ReactElement => { ); }; +// eslint-disable-next-line @typescript-eslint/no-explicit-any const renderLegend = (props: any): ReactElement => { const { payload, handleMouseEnter, handleMouseLeave, handleClick } = props; @@ -182,6 +186,7 @@ const renderLegend = (props: any): ReactElement => { className="recharts-default-legend" style={{ padding: '0px', margin: '10px', textAlign: 'center' }} > + {/* eslint-disable-next-line @typescript-eslint/no-explicit-any*/} {payload.map((entry: any, index: number) => { const dataEntry = data.find((d) => d.name === entry.value); const activeAlphaColor = entry.color.slice( @@ -234,6 +239,7 @@ export function ManifestStatusPieChart() { const navigate = useNavigate(); const handleMouseEnter = useCallback( + // eslint-disable-next-line @typescript-eslint/no-explicit-any (_: any, index: number) => { setAnimationIsActive(false); // stop animation if impatient user setActiveIndex(index); @@ -246,6 +252,7 @@ export function ManifestStatusPieChart() { setActiveIndex(-1); }, [setActiveIndex]); + // eslint-disable-next-line @typescript-eslint/no-explicit-any const renderLabel = (props: any) => { return renderCustomLabel({ ...props, hover: false, activeIndex: activeIndex }); }; @@ -261,6 +268,7 @@ export function ManifestStatusPieChart() { renderLegend({ ...props, handleMouseEnter, handleMouseLeave, handleClick }) } diff --git a/client/src/components/Layout/PrivateRoute.tsx b/client/src/components/Layout/PrivateRoute.tsx index 06e388012..a1d286756 100644 --- a/client/src/components/Layout/PrivateRoute.tsx +++ b/client/src/components/Layout/PrivateRoute.tsx @@ -3,7 +3,7 @@ import { Navigate } from 'react-router-dom'; import { selectAuthenticated, useAppSelector } from 'store'; interface Props { - children: any; + children: ReactElement; } /** Redirect to the login if user is not authenticated*/ diff --git a/client/src/components/Layout/Root.tsx b/client/src/components/Layout/Root.tsx index c601682ea..78f688d01 100644 --- a/client/src/components/Layout/Root.tsx +++ b/client/src/components/Layout/Root.tsx @@ -22,15 +22,17 @@ export function Root() { return ( - - - - - }> - - - - +
+ + + + + }> + + + + +
); diff --git a/client/src/components/Manifest/Handler/Search/RcrainfoSiteSearchBadge.tsx b/client/src/components/Manifest/Handler/Search/RcrainfoSiteSearchBadge.tsx index 2d02dc188..228858390 100644 --- a/client/src/components/Manifest/Handler/Search/RcrainfoSiteSearchBadge.tsx +++ b/client/src/components/Manifest/Handler/Search/RcrainfoSiteSearchBadge.tsx @@ -1,13 +1,15 @@ +import { faCheck, faXmark } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { HtSpinner } from 'components/UI'; import React from 'react'; import { Badge } from 'react-bootstrap'; -import { HtSpinner } from 'components/UI'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faCheck, faXmark } from '@fortawesome/free-solid-svg-icons'; interface RcrainfoInfoStatusProps { - isFetching: boolean; - error: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any data: any; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + error: any; + isFetching: boolean; rcraInfoIntegrated: boolean; } diff --git a/client/src/components/Manifest/SiteSelect/SiteTypeSelect.spec.tsx b/client/src/components/Manifest/SiteSelect/SiteTypeSelect.spec.tsx index fb6530a84..266e29597 100644 --- a/client/src/components/Manifest/SiteSelect/SiteTypeSelect.spec.tsx +++ b/client/src/components/Manifest/SiteSelect/SiteTypeSelect.spec.tsx @@ -8,6 +8,7 @@ import { describe, expect, test } from 'vitest'; function TestComponent({ siteType }: { siteType?: RcraSiteType }) { const [mockSiteType, setMockSiteType] = useState(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any const handleChange = (siteType: any) => setMockSiteType(siteType); const { control } = useForm(); return ( diff --git a/client/src/components/Manifest/Transporter/TransporterTable.tsx b/client/src/components/Manifest/Transporter/TransporterTable.tsx index 539144a5f..5206ddd6f 100644 --- a/client/src/components/Manifest/Transporter/TransporterTable.tsx +++ b/client/src/components/Manifest/Transporter/TransporterTable.tsx @@ -17,6 +17,7 @@ interface TransporterTableProps { setupSign: () => void; } +// eslint-disable-next-line @typescript-eslint/no-explicit-any function CustomToggle({ eventKey }: any) { const [open, setOpen] = useState(false); const decoratedOnClick = useAccordionButton(eventKey, () => setOpen(!open)); diff --git a/client/src/components/Manifest/WasteLine/HazardousWasteForm/HazardousWasteForm.tsx b/client/src/components/Manifest/WasteLine/HazardousWasteForm/HazardousWasteForm.tsx index 6d79936a9..d8f4948e1 100644 --- a/client/src/components/Manifest/WasteLine/HazardousWasteForm/HazardousWasteForm.tsx +++ b/client/src/components/Manifest/WasteLine/HazardousWasteForm/HazardousWasteForm.tsx @@ -55,6 +55,8 @@ export function HazardousWasteForm({ epaWaste }: HazardousWasteFormProps) { * see SO question here * https://stackoverflow.com/questions/52482985/react-select-show-different-text-label-for-drop-down-and-control */ + + // eslint-disable-next-line @typescript-eslint/no-explicit-any const MultiValue = (props: any) => ( {props.data.code} ); diff --git a/client/src/components/Manifest/WasteLine/HazardousWasteForm/StateWasteCodeSelect.tsx b/client/src/components/Manifest/WasteLine/HazardousWasteForm/StateWasteCodeSelect.tsx index 3398cf48f..91472f3bd 100644 --- a/client/src/components/Manifest/WasteLine/HazardousWasteForm/StateWasteCodeSelect.tsx +++ b/client/src/components/Manifest/WasteLine/HazardousWasteForm/StateWasteCodeSelect.tsx @@ -43,6 +43,7 @@ export function StateWasteCodeSelect({ stateId, fieldName }: StateWasteCodeSelec * see SO question here * https://stackoverflow.com/questions/52482985/react-select-show-different-text-label-for-drop-down-and-control */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any const MultiValue = (props: any) => ( {props.data.code} ); diff --git a/client/src/components/Manifest/WasteLine/WasteLineTable/WasteLineTable.tsx b/client/src/components/Manifest/WasteLine/WasteLineTable/WasteLineTable.tsx index b5affef3c..d2a4a9980 100644 --- a/client/src/components/Manifest/WasteLine/WasteLineTable/WasteLineTable.tsx +++ b/client/src/components/Manifest/WasteLine/WasteLineTable/WasteLineTable.tsx @@ -34,6 +34,7 @@ const WasteCodes = ({ wasteLine }: { wasteLine: WasteLine }) => { ); }; +// eslint-disable-next-line @typescript-eslint/no-explicit-any const CustomToggle = ({ eventKey }: any) => { const [open, setOpen] = useState(false); const decoratedOnClick = useAccordionButton(eventKey, () => setOpen(!open)); diff --git a/client/src/components/UI/FloatingActionBtn.tsx b/client/src/components/UI/FloatingActionBtn.tsx index 51a6692b7..6f3418872 100644 --- a/client/src/components/UI/FloatingActionBtn.tsx +++ b/client/src/components/UI/FloatingActionBtn.tsx @@ -4,6 +4,7 @@ import { Button, ButtonProps } from 'react-bootstrap'; interface HtFloatingActionBtnProps extends ButtonProps { position?: 'bottom-left' | 'bottom-right'; extended?: boolean; + // eslint-disable-next-line @typescript-eslint/no-explicit-any component?: any; } diff --git a/client/src/components/UI/HtPaginate/HtPaginate.tsx b/client/src/components/UI/HtPaginate/HtPaginate.tsx index 55ddb3767..053e5c89d 100644 --- a/client/src/components/UI/HtPaginate/HtPaginate.tsx +++ b/client/src/components/UI/HtPaginate/HtPaginate.tsx @@ -15,6 +15,7 @@ interface usePaginationProps { } interface HtPaginateProps extends usePaginationProps { + // eslint-disable-next-line @typescript-eslint/no-explicit-any onPageChange: any; } diff --git a/client/src/features/NewManifest/NewManifest.tsx b/client/src/features/NewManifest/NewManifest.tsx index 2ff1a4aaa..e10137e75 100644 --- a/client/src/features/NewManifest/NewManifest.tsx +++ b/client/src/features/NewManifest/NewManifest.tsx @@ -41,8 +41,10 @@ export function NewManifest() { const selectBySiteId = useMemo(() => { return createSelector( + // eslint-disable-next-line @typescript-eslint/no-explicit-any (res: any) => res.data, (_res, siteId) => siteId, + // eslint-disable-next-line @typescript-eslint/no-explicit-any (data: any, siteId) => { return data?.sites[siteId]?.handler ?? undefined; } @@ -72,6 +74,7 @@ export function NewManifest() { if (isLoading && siteId) return ; + // eslint-disable-next-line @typescript-eslint/no-explicit-any const handleSiteChange = (site: any) => { updateSiteSelection(site); }; diff --git a/client/src/hooks/manifest/useSaveManifest/useSaveManifest.tsx b/client/src/hooks/manifest/useSaveManifest/useSaveManifest.tsx index 0dd78b444..2f73e3539 100644 --- a/client/src/hooks/manifest/useSaveManifest/useSaveManifest.tsx +++ b/client/src/hooks/manifest/useSaveManifest/useSaveManifest.tsx @@ -1,5 +1,5 @@ -import { useEffect, useState } from 'react'; import { Manifest } from 'components/Manifest'; +import { useEffect, useState } from 'react'; import { useCreateManifestMutation, useSaveEManifestMutation, @@ -13,7 +13,7 @@ export function useSaveManifest() { const [data, setData] = useState(); const [isLoading, setIsLoading] = useState(false); const [taskId, setTaskId] = useState(); - const [error, setError] = useState(null); + const [error, setError] = useState(null); const [createManifest, { data: createData, error: createError, isLoading: createIsLoading }] = useCreateManifestMutation();