import { QueryObserverResult } from "@tanstack/react-query"; import { RadioGroupProps } from "antd/lib/radio"; import { BaseKey, BaseRecord, GetListResponse, HttpError, useSelect, UseSelectProps, } from "@pankod/refine-core"; export type UseRadioGroupReturnType = { radioGroupProps: RadioGroupProps; queryResult: QueryObserverResult>; }; /** * `useRadioGroup` hook allows you to manage an Ant Design {@link https://ant.design/components/radio/#components-radio-demo-radiogroup-with-name Radio.Group} component when records in a resource needs to be used as radio options. * * @see {@link https://refine.dev/docs/ui-frameworks/antd/hooks/field/useRadioGroup} for more details. * * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`} * */ type UseRadioGroupProps = Omit< UseSelectProps, "defaultValue" > & { /** * Sets the default value */ defaultValue?: BaseKey; }; export const useRadioGroup = < TData extends BaseRecord = BaseRecord, TError extends HttpError = HttpError, >({ resource, sort, filters, optionLabel, optionValue, queryOptions, fetchSize, pagination, liveMode, defaultValue, onLiveEvent, liveParams, metaData, dataProviderName, }: UseRadioGroupProps): UseRadioGroupReturnType => { const { queryResult, options } = useSelect({ resource, sort, filters, optionLabel, optionValue, queryOptions, fetchSize, pagination, liveMode, defaultValue, onLiveEvent, liveParams, metaData, dataProviderName, }); return { radioGroupProps: { options, defaultValue, }, queryResult, }; };