/
githubmirror
/
material-ui
Обзор
Документация
Войти
/
githubmirror
/
material-ui
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
packages/mui-material/src/FormControl/useFormControl.ts
33 строки
1 KB
Albert Yu
[form controls] Add internal `useFormControlState` hook (#48344)
05 май 2026, 15:00
Не верифицирован
05 май 2026, 15:00
7330289
Код
Авторство
О чём код?
'use client'; import * as React from 'react'; import FormControlContext, { type FormControlState } from './FormControlContext'; type FormControlStateKey = keyof FormControlState; type FormControlStateResult<Props, States extends readonly FormControlStateKey[]> = { [State in States[number]]: State extends keyof Props ? Props[State] | FormControlState[State] : FormControlState[State]; }; export default function useFormControl(): FormControlState | undefined { return React.useContext(FormControlContext); } export function useFormControlState<Props, States extends readonly FormControlStateKey[]>({ props, states, }: { props: Props; states: States; }): [FormControlStateResult<Props, States>, FormControlState | undefined] { const muiFormControl = React.useContext(FormControlContext); const result = {} as Partial<Record<FormControlStateKey, unknown>>; states.forEach((state) => { const value = (props as Partial<Record<FormControlStateKey, unknown>>)[state]; result[state] = value === undefined && muiFormControl ? muiFormControl[state] : value; }); return [result as FormControlStateResult<Props, States>, muiFormControl]; }