From 6e304b1069ab6197d3c32ae3738a91652962b763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20My=C5=9Bli=C5=84ski?= Date: Mon, 15 Jan 2018 20:36:41 +0100 Subject: [PATCH 1/2] Render custom checkbox and custom radio with checked prop --- package.json | 2 +- src/Field.js | 18 ++++++++---------- src/Field.test.js | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 2049ce7e..fea8ec23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-final-form", - "version": "3.0.2", + "version": "3.0.3", "description": "🏁 High performance subscription-based form state management for React", "main": "dist/react-final-form.cjs.js", diff --git a/src/Field.js b/src/Field.js index 8d31322b..714546da 100644 --- a/src/Field.js +++ b/src/Field.js @@ -143,18 +143,16 @@ export default class Field extends React.PureComponent { value = '' } const input = { name, value, ...this.handlers } - if (component === 'input') { - if (rest.type === 'checkbox') { - if (_value === undefined) { - input.checked = !!value - } else { - input.checked = Array.isArray(value) && ~value.indexOf(_value) - input.value = _value - } - } else if (rest.type === 'radio') { - input.checked = value === _value + if (rest.type === 'checkbox') { + if (_value === undefined) { + input.checked = !!value + } else { + input.checked = Array.isArray(value) && ~value.indexOf(_value) input.value = _value } + } else if (rest.type === 'radio') { + input.checked = value === _value + input.value = _value } if (component === 'select' && rest.multiple) { input.value = input.value || [] diff --git a/src/Field.test.js b/src/Field.test.js index b81da3b9..929a28cc 100644 --- a/src/Field.test.js +++ b/src/Field.test.js @@ -541,6 +541,40 @@ describe('Field', () => { expect(bazInput.checked).toBe(true) }) + it('should render custom radio component with checked prop', () => { + const Radio = jest.fn(() => null) + TestUtils.renderIntoDocument( +
( + + + + )} + initialValues={{ foo: 'yes' }} + /> + ) + expect(Radio.mock.calls[0][0]).toMatchObject({ input: { checked: true } }) + }) + + it('should render custom checkbox component with checked prop', () => { + const Checkbox = jest.fn(() => null) + TestUtils.renderIntoDocument( +
( + + + + )} + initialValues={{ foo: true }} + /> + ) + expect(Checkbox.mock.calls[0][0]).toMatchObject({ + input: { checked: true } + }) + }) + it('should use isEqual to calculate dirty/pristine', () => { const input = jest.fn(({ input }) => ) From 319ee332b9e38cdb3e3e94c33789b76f9580cc87 Mon Sep 17 00:00:00 2001 From: Erik Rasmussen Date: Mon, 15 Jan 2018 21:02:10 +0100 Subject: [PATCH 2/2] Undo version number change --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fea8ec23..2049ce7e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-final-form", - "version": "3.0.3", + "version": "3.0.2", "description": "🏁 High performance subscription-based form state management for React", "main": "dist/react-final-form.cjs.js",