diff --git a/src/Components/AppShell/SideBar.tsx b/src/Components/AppShell/SideBar.tsx index 4c174351..94782f3c 100644 --- a/src/Components/AppShell/SideBar.tsx +++ b/src/Components/AppShell/SideBar.tsx @@ -1,10 +1,3 @@ -/* eslint-disable @typescript-eslint/consistent-type-definitions */ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -/* eslint-disable @typescript-eslint/no-unnecessary-condition */ -/* eslint-disable @typescript-eslint/restrict-plus-operands */ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -/* eslint-disable @typescript-eslint/no-unsafe-call */ import ChevronRightIcon from '@heroicons/react/24/outline/ChevronRightIcon' import { useRef, useState, useEffect } from 'react' import { NavLink, useLocation } from 'react-router-dom' @@ -12,35 +5,42 @@ import { Sidenav, initTE } from 'tw-elements' import SidebarSubmenu from './SidebarSubmenu' -type route = { +export interface Route { path: string icon: JSX.Element name: string - submenu?: route + submenu?: Route[] blank?: boolean } +interface SidenavType extends HTMLElement { + toggleSlim(): void + toggle(): void +} + /** * @category AppShell */ -export function SideBar({ routes, bottomRoutes }: { routes: route[]; bottomRoutes?: route[] }) { +export function SideBar({ routes, bottomRoutes }: { routes: Route[]; bottomRoutes?: Route[] }) { // prevent react18 from calling useEffect twice const init = useRef(false) const location = useLocation() - const [instance, setInstance] = useState(null) + const [instance, setInstance] = useState() const [slim, setSlim] = useState(false) const toggleSlim = () => { setSlim(!slim) - instance.toggleSlim() + instance?.toggleSlim() } useEffect(() => { if (!init.current) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call initTE({ Sidenav }) - const instance = Sidenav.getInstance(document.getElementById('sidenav')) + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + const instance = Sidenav.getInstance(document.getElementById('sidenav')) as SidenavType setInstance(instance) instance.toggleSlim() init.current = true @@ -86,12 +86,13 @@ export function SideBar({ routes, bottomRoutes }: { routes: route[]; bottomRoute `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}` } onClick={() => { - if (screen.width < 640 && !slim) instance.toggle() + if (screen.width < 640 && !slim) instance?.toggle() }} > {route.icon} @@ -139,7 +140,7 @@ export function SideBar({ routes, bottomRoutes }: { routes: route[]; bottomRoute `${isActive ? 'tw-font-semibold tw-bg-base-200 !tw-rounded-none' : 'tw-font-normal !tw-rounded-none'}` } onClick={() => { - if (screen.width < 640 && !slim) instance.toggle() + if (screen.width < 640 && !slim) instance?.toggle() }} > {route.icon} diff --git a/src/Components/AppShell/SidebarSubmenu.tsx b/src/Components/AppShell/SidebarSubmenu.tsx index ffb57872..1c12e851 100644 --- a/src/Components/AppShell/SidebarSubmenu.tsx +++ b/src/Components/AppShell/SidebarSubmenu.tsx @@ -1,11 +1,9 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable @typescript-eslint/no-unsafe-call */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ import ChevronDownIcon from '@heroicons/react/24/outline/ChevronDownIcon' import { useEffect, useState } from 'react' import { Link, useLocation } from 'react-router-dom' +import type { Route } from './SideBar' + function SidebarSubmenu({ submenu, name, @@ -14,7 +12,7 @@ function SidebarSubmenu({ path: string icon: JSX.Element name: string - submenu?: any | undefined + submenu?: Route[] }) { const location = useLocation() const [isExpanded, setIsExpanded] = useState(false) @@ -22,7 +20,7 @@ function SidebarSubmenu({ /** Open Submenu list if path found in routes, this is for directly loading submenu routes first time */ useEffect(() => { if ( - submenu.filter((m) => { + submenu?.filter((m) => { return m.path === location.pathname })[0] ) @@ -52,7 +50,7 @@ function SidebarSubmenu({ {/** Submenu list */}
    - {submenu.map((m, k) => { + {submenu?.map((m, k) => { return (
  • diff --git a/vite.config.ts b/vite.config.ts index b7c866e9..415f25db 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -14,7 +14,7 @@ export default defineConfig({ exclude: [...configDefaults.exclude], thresholds: { lines: 0, - functions: 66, + functions: 65, branches: 66, statements: 0, },