bugfix(DisabledContextProvider): fix disabled logic (#38886)

* bugfix(DisabledContextProvider): fix disabled logic

* test: add test for ConfigProvider componentDisabled

Co-authored-by: dian.li <dian.li@yunzhanghu.com>
This commit is contained in:
dainli 2022-11-23 11:04:23 +08:00 committed by MadCcc
parent ea6a801290
commit 8907c3910f
2 changed files with 22 additions and 1 deletions

View File

@ -12,7 +12,7 @@ export interface DisabledContextProps {
export const DisabledContextProvider: React.FC<DisabledContextProps> = ({ children, disabled }) => { export const DisabledContextProvider: React.FC<DisabledContextProps> = ({ children, disabled }) => {
const originDisabled = React.useContext(DisabledContext); const originDisabled = React.useContext(DisabledContext);
return ( return (
<DisabledContext.Provider value={disabled || originDisabled}> <DisabledContext.Provider value={disabled ?? originDisabled}>
{children} {children}
</DisabledContext.Provider> </DisabledContext.Provider>
); );

View File

@ -4,6 +4,7 @@ import ConfigProvider from '..';
import { render } from '../../../tests/utils'; import { render } from '../../../tests/utils';
import type { FormInstance } from '../../form'; import type { FormInstance } from '../../form';
import Form from '../../form'; import Form from '../../form';
import Input from '../../input';
import zhCN from '../../locale/zh_CN'; import zhCN from '../../locale/zh_CN';
describe('ConfigProvider.Form', () => { describe('ConfigProvider.Form', () => {
@ -125,4 +126,24 @@ describe('ConfigProvider.Form', () => {
expect(container.querySelector('.ant-form-item-no-colon')).toBeFalsy(); expect(container.querySelector('.ant-form-item-no-colon')).toBeFalsy();
}); });
}); });
describe('form disabled', () => {
it('set Input enabled', () => {
const { container } = render(
<Form disabled>
<ConfigProvider componentDisabled={false}>
<Form.Item name="input1" label="启用">
<Input />
</Form.Item>
</ConfigProvider>
<Form.Item name="input" label="禁用">
<Input />
</Form.Item>
</Form>,
);
expect(container.querySelector('#input1[disabled]')).toBeFalsy();
expect(container.querySelector('#input[disabled]')).toBeTruthy();
});
});
}); });