diff --git a/src/Picker/PickerToggle.tsx b/src/Picker/PickerToggle.tsx index 611794ee2..1246024c4 100644 --- a/src/Picker/PickerToggle.tsx +++ b/src/Picker/PickerToggle.tsx @@ -31,6 +31,7 @@ export interface PickerToggleProps extends ToggleButtonProps { // Renders an input and is editable editable?: boolean; + name?: string; inputPlaceholder?: string; inputMask?: (string | RegExp)[]; onInputChange?: (value: string, event: React.ChangeEvent) => void; @@ -85,6 +86,7 @@ const PickerToggle: RsRefForwardingComponent ( ), - [editable] + [editable, name] ); const ToggleCaret = useToggleCaret(placement); diff --git a/src/Picker/test/PickerToggleSpec.tsx b/src/Picker/test/PickerToggleSpec.tsx index 727fc7d21..52e24a086 100644 --- a/src/Picker/test/PickerToggleSpec.tsx +++ b/src/Picker/test/PickerToggleSpec.tsx @@ -30,6 +30,13 @@ describe('', () => { assert.equal(instance.textContent, Title); }); + it('Should render a hidden element with given "name" attribute', () => { + const { container } = render(); + + // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access + expect(container.querySelector('input')).to.have.attr('name', 'field'); + }); + describe('Cleanable (`cleanable`=true)', () => { it('Should render a clear button when value is present', () => { render( diff --git a/src/Picker/utils.ts b/src/Picker/utils.ts index b2111a6ab..79d97db8a 100644 --- a/src/Picker/utils.ts +++ b/src/Picker/utils.ts @@ -109,8 +109,9 @@ export function usePickerClassName(props: PickerClassNameProps): [string, string }) ); + // Those props that're used for composing the className const usedClassNamePropKeys = Object.keys( - omit(props, [...Object.keys(rest || {}), 'disabled', 'readOnly', 'plaintext']) + omit(props, [...Object.keys(rest || {}), 'disabled', 'readOnly', 'plaintext', 'name']) ); return [classes, usedClassNamePropKeys]; diff --git a/src/SelectPicker/test/SelectPickerSpec.tsx b/src/SelectPicker/test/SelectPickerSpec.tsx index bf7647320..357126d8b 100644 --- a/src/SelectPicker/test/SelectPickerSpec.tsx +++ b/src/SelectPicker/test/SelectPickerSpec.tsx @@ -59,6 +59,13 @@ describe('SelectPicker', () => { expect(instance).to.have.class('rs-picker-disabled'); }); + it('Should render a hidden with given "name" attribute', () => { + const { container } = render(); + + // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access + expect(container.querySelector('input')).to.have.attr('name', 'field'); + }); + describe('Loading state', () => { it('Should display a spinner when loading=true', () => { render();