diff --git a/src/api/endpoints/klass.ts b/src/api/endpoints/klass.ts index bbe7271..2a28b7e 100644 --- a/src/api/endpoints/klass.ts +++ b/src/api/endpoints/klass.ts @@ -56,7 +56,11 @@ export type ListClassesResult = _ListResult< } } > -export type ListClassesArg = _ListArg<{ teacher: Teacher["id"] }> +export type ListClassesArg = _ListArg<{ + teacher: Teacher["id"] + _id: Class["id"] | Class["id"][] + id_or_name: string +}> export default function getReadClassEndpoints< RetrieveResult extends _RetrieveResult = RetrieveClassResult, diff --git a/src/components/router/Link.tsx b/src/components/router/Link.tsx index adb7ee6..da6506f 100644 --- a/src/components/router/Link.tsx +++ b/src/components/router/Link.tsx @@ -1,13 +1,20 @@ import { Link as MuiLink, type LinkProps as MuiLinkProps } from "@mui/material" -import type { FC } from "react" import { Link as RouterLink } from "react-router-dom" import { type LinkProps as RouterLinkProps } from "../../utils/router" -export type LinkProps = Omit & RouterLinkProps +export type LinkProps< + Override extends "delta" | "to", + State extends Record = Record, +> = Omit & RouterLinkProps // https://mui.com/material-ui/integrations/routing/#link -const Link: FC = props => { +const Link: { + (props: LinkProps<"delta">): JSX.Element + = Record>( + props: LinkProps<"to", State>, + ): JSX.Element +} = (props: LinkProps<"delta"> | LinkProps<"to">) => { // @ts-expect-error return } diff --git a/src/components/router/LinkButton.tsx b/src/components/router/LinkButton.tsx index ec8b294..df48048 100644 --- a/src/components/router/LinkButton.tsx +++ b/src/components/router/LinkButton.tsx @@ -1,13 +1,20 @@ import { Button, type ButtonProps } from "@mui/material" -import type { FC } from "react" import { Link } from "react-router-dom" import { type LinkProps } from "../../utils/router" -export type LinkButtonProps = Omit & LinkProps +export type LinkButtonProps< + Override extends "delta" | "to", + State extends Record = Record, +> = Omit & LinkProps // https://mui.com/material-ui/integrations/routing/#button -const LinkButton: FC = props => { +const LinkButton: { + (props: LinkButtonProps<"delta">): JSX.Element + = Record>( + props: LinkButtonProps<"to", State>, + ): JSX.Element +} = (props: LinkButtonProps<"delta"> | LinkButtonProps<"to">) => { return