no log: Eslint plugin updates (#2574)

pull/2644/head
Anderson Shindy Oki 3 months ago committed by GitHub
parent 02a91253f0
commit fb3722f138
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -15,12 +15,11 @@
"@typescript-eslint/no-unused-vars": "warn" "@typescript-eslint/no-unused-vars": "warn"
}, },
"extends": [ "extends": [
"react-app",
"plugin:react-hooks/recommended",
"eslint:recommended", "eslint:recommended",
"plugin:react-hooks/recommended",
"plugin:@typescript-eslint/recommended" "plugin:@typescript-eslint/recommended"
], ],
"plugins": ["testing-library", "simple-import-sort"], "plugins": ["testing-library", "simple-import-sort", "react-refresh"],
"overrides": [ "overrides": [
{ {
"files": [ "files": [
@ -63,6 +62,7 @@
} }
} }
], ],
"parser": "@typescript-eslint/parser",
"parserOptions": { "parserOptions": {
"sourceType": "module", "sourceType": "module",
"ecmaVersion": "latest" "ecmaVersion": "latest"

File diff suppressed because it is too large Load Diff

@ -44,14 +44,16 @@
"@types/node": "^20.12.6", "@types/node": "^20.12.6",
"@types/react": "^18.3.4", "@types/react": "^18.3.4",
"@types/react-dom": "^18.3.0", "@types/react-dom": "^18.3.0",
"@typescript-eslint/eslint-plugin": "^7.16.0",
"@typescript-eslint/parser": "^7.16.0",
"@vite-pwa/assets-generator": "^0.2.4", "@vite-pwa/assets-generator": "^0.2.4",
"@vitejs/plugin-react": "^4.2.1", "@vitejs/plugin-react": "^4.2.1",
"@vitest/coverage-v8": "^1.4.0", "@vitest/coverage-v8": "^1.4.0",
"@vitest/ui": "^1.2.2", "@vitest/ui": "^1.2.2",
"clsx": "^2.1.0", "clsx": "^2.1.0",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.7",
"eslint-plugin-simple-import-sort": "^12.1.0", "eslint-plugin-simple-import-sort": "^12.1.0",
"eslint-plugin-testing-library": "^6.2.0", "eslint-plugin-testing-library": "^6.2.0",
"husky": "^9.0.11", "husky": "^9.0.11",

@ -25,23 +25,6 @@ const cacheEpisodes = (client: QueryClient, episodes: Item.Episode[]) => {
}); });
}; };
export function useEpisodesByIds(ids: number[]) {
const client = useQueryClient();
const query = useQuery({
queryKey: [QueryKeys.Series, QueryKeys.Episodes, ids],
queryFn: () => api.episodes.byEpisodeId(ids),
});
useEffect(() => {
if (query.isSuccess && query.data) {
cacheEpisodes(client, query.data);
}
}, [query.isSuccess, query.data, client]);
return query;
}
export function useEpisodesBySeriesId(id: number) { export function useEpisodesBySeriesId(id: number) {
const client = useQueryClient(); const client = useQueryClient();
@ -87,10 +70,11 @@ export function useEpisodeAddBlacklist() {
}, },
onSuccess: (_, { seriesId }) => { onSuccess: (_, { seriesId }) => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.Series, QueryKeys.Episodes, QueryKeys.Blacklist], queryKey: [QueryKeys.Series, QueryKeys.Episodes, QueryKeys.Blacklist],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.Series, seriesId], queryKey: [QueryKeys.Series, seriesId],
}); });
}, },
@ -105,8 +89,8 @@ export function useEpisodeDeleteBlacklist() {
mutationFn: (param: { all?: boolean; form?: FormType.DeleteBlacklist }) => mutationFn: (param: { all?: boolean; form?: FormType.DeleteBlacklist }) =>
api.episodes.deleteBlacklist(param.all, param.form), api.episodes.deleteBlacklist(param.all, param.form),
onSuccess: (_) => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.Series, QueryKeys.Episodes, QueryKeys.Blacklist], queryKey: [QueryKeys.Series, QueryKeys.Episodes, QueryKeys.Blacklist],
}); });
}, },

@ -15,23 +15,6 @@ const cacheMovies = (client: QueryClient, movies: Item.Movie[]) => {
}); });
}; };
export function useMoviesByIds(ids: number[]) {
const client = useQueryClient();
const query = useQuery({
queryKey: [QueryKeys.Movies, ...ids],
queryFn: () => api.movies.movies(ids),
});
useEffect(() => {
if (query.isSuccess && query.data) {
cacheMovies(client, query.data);
}
}, [query.isSuccess, query.data, client]);
return query;
}
export function useMovieById(id: number) { export function useMovieById(id: number) {
return useQuery({ return useQuery({
queryKey: [QueryKeys.Movies, id], queryKey: [QueryKeys.Movies, id],
@ -74,12 +57,13 @@ export function useMovieModification() {
onSuccess: (_, form) => { onSuccess: (_, form) => {
form.id.forEach((v) => { form.id.forEach((v) => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.Movies, v], queryKey: [QueryKeys.Movies, v],
}); });
}); });
// TODO: query less // TODO: query less
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.Movies], queryKey: [QueryKeys.Movies],
}); });
}, },
@ -93,7 +77,7 @@ export function useMovieAction() {
mutationFn: (form: FormType.MoviesAction) => api.movies.action(form), mutationFn: (form: FormType.MoviesAction) => api.movies.action(form),
onSuccess: () => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.Movies], queryKey: [QueryKeys.Movies],
}); });
}, },
@ -125,10 +109,11 @@ export function useMovieAddBlacklist() {
}, },
onSuccess: (_, { id }) => { onSuccess: (_, { id }) => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.Movies, QueryKeys.Blacklist], queryKey: [QueryKeys.Movies, QueryKeys.Blacklist],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.Movies, id], queryKey: [QueryKeys.Movies, id],
}); });
}, },
@ -143,8 +128,8 @@ export function useMovieDeleteBlacklist() {
mutationFn: (param: { all?: boolean; form?: FormType.DeleteBlacklist }) => mutationFn: (param: { all?: boolean; form?: FormType.DeleteBlacklist }) =>
api.movies.deleteBlacklist(param.all, param.form), api.movies.deleteBlacklist(param.all, param.form),
onSuccess: (_, param) => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.Movies, QueryKeys.Blacklist], queryKey: [QueryKeys.Movies, QueryKeys.Blacklist],
}); });
}, },

@ -54,22 +54,27 @@ export function useSettingsMutation() {
mutationFn: (data: LooseObject) => api.system.updateSettings(data), mutationFn: (data: LooseObject) => api.system.updateSettings(data),
onSuccess: () => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.System], queryKey: [QueryKeys.System],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.Series], queryKey: [QueryKeys.Series],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.Episodes], queryKey: [QueryKeys.Episodes],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.Movies], queryKey: [QueryKeys.Movies],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.Wanted], queryKey: [QueryKeys.Wanted],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.Badges], queryKey: [QueryKeys.Badges],
}); });
}, },
@ -101,7 +106,7 @@ export function useDeleteLogs() {
mutationFn: () => api.system.deleteLogs(), mutationFn: () => api.system.deleteLogs(),
onSuccess: () => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Logs], queryKey: [QueryKeys.System, QueryKeys.Logs],
}); });
}, },
@ -128,11 +133,12 @@ export function useSystemAnnouncementsAddDismiss() {
return api.system.addAnnouncementsDismiss(hash); return api.system.addAnnouncementsDismiss(hash);
}, },
onSuccess: (_, { hash }) => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Announcements], queryKey: [QueryKeys.System, QueryKeys.Announcements],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Badges], queryKey: [QueryKeys.System, QueryKeys.Badges],
}); });
}, },
@ -156,10 +162,11 @@ export function useRunTask() {
mutationFn: (id: string) => api.system.runTask(id), mutationFn: (id: string) => api.system.runTask(id),
onSuccess: () => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Tasks], queryKey: [QueryKeys.System, QueryKeys.Tasks],
}); });
client.invalidateQueries({
void client.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Backups], queryKey: [QueryKeys.System, QueryKeys.Backups],
}); });
}, },
@ -180,7 +187,7 @@ export function useCreateBackups() {
mutationFn: () => api.system.createBackups(), mutationFn: () => api.system.createBackups(),
onSuccess: () => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Backups], queryKey: [QueryKeys.System, QueryKeys.Backups],
}); });
}, },
@ -194,7 +201,7 @@ export function useRestoreBackups() {
mutationFn: (filename: string) => api.system.restoreBackups(filename), mutationFn: (filename: string) => api.system.restoreBackups(filename),
onSuccess: () => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Backups], queryKey: [QueryKeys.System, QueryKeys.Backups],
}); });
}, },
@ -208,7 +215,7 @@ export function useDeleteBackups() {
mutationFn: (filename: string) => api.system.deleteBackups(filename), mutationFn: (filename: string) => api.system.deleteBackups(filename),
onSuccess: () => { onSuccess: () => {
client.invalidateQueries({ void client.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Backups], queryKey: [QueryKeys.System, QueryKeys.Backups],
}); });
}, },

@ -16,7 +16,6 @@ type MutateActionProps<DATA, VAR> = Omit<
function MutateAction<DATA, VAR>({ function MutateAction<DATA, VAR>({
mutation, mutation,
noReset,
onSuccess, onSuccess,
onError, onError,
args, args,

@ -15,7 +15,6 @@ type MutateButtonProps<DATA, VAR> = Omit<
function MutateButton<DATA, VAR>({ function MutateButton<DATA, VAR>({
mutation, mutation,
noReset,
onSuccess, onSuccess,
onError, onError,
args, args,

@ -12,7 +12,7 @@ interface QueryOverlayProps {
const QueryOverlay: FunctionComponent<QueryOverlayProps> = ({ const QueryOverlay: FunctionComponent<QueryOverlayProps> = ({
children, children,
global = false, global = false,
result: { isLoading, isError, error }, result: { isLoading },
}) => { }) => {
return ( return (
<LoadingProvider value={isLoading}> <LoadingProvider value={isLoading}>

@ -7,7 +7,7 @@ import {
Select, Select,
SelectProps, SelectProps,
} from "@mantine/core"; } from "@mantine/core";
import { isNull, isUndefined, noop } from "lodash"; import { isNull, isUndefined } from "lodash";
import { LOG } from "@/utilities/console"; import { LOG } from "@/utilities/console";
export type SelectorOption<T> = Override< export type SelectorOption<T> = Override<
@ -49,10 +49,7 @@ export type GroupedSelectorProps<T> = Override<
>; >;
export function GroupedSelector<T>({ export function GroupedSelector<T>({
value,
options, options,
getkey = DefaultKeyBuilder,
onOptionSubmit = noop,
...select ...select
}: GroupedSelectorProps<T>) { }: GroupedSelectorProps<T>) {
return ( return (

@ -5,11 +5,8 @@ import { ModalSettings } from "@mantine/modals/lib/context";
import { ModalComponent, ModalIdContext } from "./WithModal"; import { ModalComponent, ModalIdContext } from "./WithModal";
export function useModals() { export function useModals() {
const { const { openContextModal: openMantineContextModal, ...rest } =
openContextModal: openMantineContextModal, useMantineModals();
closeContextModal: closeContextModalRaw,
...rest
} = useMantineModals();
const openContextModal = useCallback( const openContextModal = useCallback(
<ARGS extends {}>( <ARGS extends {}>(
@ -26,7 +23,7 @@ export function useModals() {
[openMantineContextModal], [openMantineContextModal],
); );
const closeContextModal = useCallback( const closeContext = useCallback(
(modal: ModalComponent) => { (modal: ModalComponent) => {
rest.closeModal(modal.modalKey); rest.closeModal(modal.modalKey);
}, },
@ -43,7 +40,7 @@ export function useModals() {
// TODO: Performance // TODO: Performance
return useMemo( return useMemo(
() => ({ openContextModal, closeContextModal, closeSelf, ...rest }), () => ({ openContextModal, closeContext, closeSelf, ...rest }),
[closeContextModal, closeSelf, openContextModal, rest], [closeContext, closeSelf, openContextModal, rest],
); );
} }

@ -40,13 +40,17 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
update: (ids) => { update: (ids) => {
LOG("info", "Invalidating series", ids); LOG("info", "Invalidating series", ids);
ids.forEach((id) => { ids.forEach((id) => {
queryClient.invalidateQueries({ queryKey: [QueryKeys.Series, id] }); void queryClient.invalidateQueries({
queryKey: [QueryKeys.Series, id],
});
}); });
}, },
delete: (ids) => { delete: (ids) => {
LOG("info", "Invalidating series", ids); LOG("info", "Invalidating series", ids);
ids.forEach((id) => { ids.forEach((id) => {
queryClient.invalidateQueries({ queryKey: [QueryKeys.Series, id] }); void queryClient.invalidateQueries({
queryKey: [QueryKeys.Series, id],
});
}); });
}, },
}, },
@ -55,13 +59,17 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
update: (ids) => { update: (ids) => {
LOG("info", "Invalidating movies", ids); LOG("info", "Invalidating movies", ids);
ids.forEach((id) => { ids.forEach((id) => {
queryClient.invalidateQueries({ queryKey: [QueryKeys.Movies, id] }); void queryClient.invalidateQueries({
queryKey: [QueryKeys.Movies, id],
});
}); });
}, },
delete: (ids) => { delete: (ids) => {
LOG("info", "Invalidating movies", ids); LOG("info", "Invalidating movies", ids);
ids.forEach((id) => { ids.forEach((id) => {
queryClient.invalidateQueries({ queryKey: [QueryKeys.Movies, id] }); void queryClient.invalidateQueries({
queryKey: [QueryKeys.Movies, id],
});
}); });
}, },
}, },
@ -78,7 +86,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
id, id,
]); ]);
if (episode !== undefined) { if (episode !== undefined) {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Series, episode.sonarrSeriesId], queryKey: [QueryKeys.Series, episode.sonarrSeriesId],
}); });
} }
@ -92,7 +100,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
id, id,
]); ]);
if (episode !== undefined) { if (episode !== undefined) {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Series, episode.sonarrSeriesId], queryKey: [QueryKeys.Series, episode.sonarrSeriesId],
}); });
} }
@ -101,28 +109,28 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
}, },
{ {
key: "episode-wanted", key: "episode-wanted",
update: (ids) => { update: () => {
// Find a better way to update wanted // Find a better way to update wanted
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Episodes, QueryKeys.Wanted], queryKey: [QueryKeys.Episodes, QueryKeys.Wanted],
}); });
}, },
delete: () => { delete: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Episodes, QueryKeys.Wanted], queryKey: [QueryKeys.Episodes, QueryKeys.Wanted],
}); });
}, },
}, },
{ {
key: "movie-wanted", key: "movie-wanted",
update: (ids) => { update: () => {
// Find a better way to update wanted // Find a better way to update wanted
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Movies, QueryKeys.Wanted], queryKey: [QueryKeys.Movies, QueryKeys.Wanted],
}); });
}, },
delete: () => { delete: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Movies, QueryKeys.Wanted], queryKey: [QueryKeys.Movies, QueryKeys.Wanted],
}); });
}, },
@ -130,13 +138,13 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "settings", key: "settings",
any: () => { any: () => {
queryClient.invalidateQueries({ queryKey: [QueryKeys.System] }); void queryClient.invalidateQueries({ queryKey: [QueryKeys.System] });
}, },
}, },
{ {
key: "languages", key: "languages",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Languages], queryKey: [QueryKeys.System, QueryKeys.Languages],
}); });
}, },
@ -144,7 +152,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "badges", key: "badges",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Badges], queryKey: [QueryKeys.System, QueryKeys.Badges],
}); });
}, },
@ -152,7 +160,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "movie-history", key: "movie-history",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Movies, QueryKeys.History], queryKey: [QueryKeys.Movies, QueryKeys.History],
}); });
}, },
@ -160,7 +168,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "movie-blacklist", key: "movie-blacklist",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Movies, QueryKeys.Blacklist], queryKey: [QueryKeys.Movies, QueryKeys.Blacklist],
}); });
}, },
@ -168,7 +176,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "episode-history", key: "episode-history",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Episodes, QueryKeys.History], queryKey: [QueryKeys.Episodes, QueryKeys.History],
}); });
}, },
@ -176,7 +184,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "episode-blacklist", key: "episode-blacklist",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Episodes, QueryKeys.Blacklist], queryKey: [QueryKeys.Episodes, QueryKeys.Blacklist],
}); });
}, },
@ -184,7 +192,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "reset-episode-wanted", key: "reset-episode-wanted",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Episodes, QueryKeys.Wanted], queryKey: [QueryKeys.Episodes, QueryKeys.Wanted],
}); });
}, },
@ -192,7 +200,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "reset-movie-wanted", key: "reset-movie-wanted",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.Movies, QueryKeys.Wanted], queryKey: [QueryKeys.Movies, QueryKeys.Wanted],
}); });
}, },
@ -200,7 +208,7 @@ export function createDefaultReducer(): SocketIO.Reducer[] {
{ {
key: "task", key: "task",
any: () => { any: () => {
queryClient.invalidateQueries({ void queryClient.invalidateQueries({
queryKey: [QueryKeys.System, QueryKeys.Tasks], queryKey: [QueryKeys.System, QueryKeys.Tasks],
}); });
}, },

@ -2,7 +2,7 @@ import { FunctionComponent, PropsWithChildren, ReactElement } from "react";
import { useForm } from "@mantine/form"; import { useForm } from "@mantine/form";
import { describe, it } from "vitest"; import { describe, it } from "vitest";
import { FormContext, FormValues } from "@/pages/Settings/utilities/FormValues"; import { FormContext, FormValues } from "@/pages/Settings/utilities/FormValues";
import { render, RenderOptions, screen } from "@/tests"; import { render, screen } from "@/tests";
import { Number, Text } from "./forms"; import { Number, Text } from "./forms";
const FormSupport: FunctionComponent<PropsWithChildren> = ({ children }) => { const FormSupport: FunctionComponent<PropsWithChildren> = ({ children }) => {
@ -15,10 +15,8 @@ const FormSupport: FunctionComponent<PropsWithChildren> = ({ children }) => {
return <FormContext.Provider value={form}>{children}</FormContext.Provider>; return <FormContext.Provider value={form}>{children}</FormContext.Provider>;
}; };
const formRender = ( const formRender = (ui: ReactElement) =>
ui: ReactElement, render(<FormSupport>{ui}</FormSupport>);
options?: Omit<RenderOptions, "wrapper">,
) => render(<FormSupport>{ui}</FormSupport>);
describe("Settings form", () => { describe("Settings form", () => {
describe("number component", () => { describe("number component", () => {

@ -1,4 +1,4 @@
import { FunctionComponent, ReactNode, ReactText } from "react"; import { FunctionComponent, ReactNode } from "react";
import { import {
Input, Input,
NumberInput, NumberInput,
@ -49,7 +49,7 @@ export const Number: FunctionComponent<NumberProps> = (props) => {
); );
}; };
export type TextProps = BaseInput<ReactText> & TextInputProps; export type TextProps = BaseInput<string | number> & TextInputProps;
export const Text: FunctionComponent<TextProps> = (props) => { export const Text: FunctionComponent<TextProps> = (props) => {
const { value, update, rest } = useBaseInput(props); const { value, update, rest } = useBaseInput(props);
@ -86,11 +86,7 @@ export interface CheckProps extends BaseInput<boolean> {
inline?: boolean; inline?: boolean;
} }
export const Check: FunctionComponent<CheckProps> = ({ export const Check: FunctionComponent<CheckProps> = ({ label, ...props }) => {
label,
inline,
...props
}) => {
const { value, update, rest } = useBaseInput(props); const { value, update, rest } = useBaseInput(props);
return ( return (

Loading…
Cancel
Save