From b4aa0534201aa7247c5bd25bfd8605700c478af2 Mon Sep 17 00:00:00 2001 From: "David M. Pankros" Date: Fri, 10 Feb 2017 11:38:41 -0500 Subject: [PATCH 1/3] Added appearance property to BoolField. Allows rendering as a Toggle if appearance set to 'toggle'. Default or any other value is 'checkbox' (present behavior) Updated combined tests for the above --- packages/uniforms-material/src/BoolField.js | 33 ++++++++++++++------- packages/uniforms-material/test/combined.js | 19 ++++++++++-- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/packages/uniforms-material/src/BoolField.js b/packages/uniforms-material/src/BoolField.js index 6e768ab44..479b6c3d9 100644 --- a/packages/uniforms-material/src/BoolField.js +++ b/packages/uniforms-material/src/BoolField.js @@ -1,4 +1,5 @@ import Checkbox from 'material-ui/Checkbox'; +import Toggle from 'material-ui/Toggle'; import React from 'react'; import connectField from 'uniforms/connectField'; import filterDOMProps from 'uniforms/filterDOMProps'; @@ -11,18 +12,28 @@ const Bool = ({ name, onChange, value, + appearance = 'checkbox', ...props }) => - disabled || onChange(value)} - ref={inputRef} - {...filterDOMProps(props)} - /> -; + appearance === 'toggle' ? + ( disabled || onChange(value)} + ref={inputRef}{...filterDOMProps(props)} + />) + : + ( disabled || onChange(value)} + ref={inputRef}{...filterDOMProps(props)} + />); export default connectField(Bool); diff --git a/packages/uniforms-material/test/combined.js b/packages/uniforms-material/test/combined.js index c603d328d..513a49f6c 100644 --- a/packages/uniforms-material/test/combined.js +++ b/packages/uniforms-material/test/combined.js @@ -7,6 +7,7 @@ import {spy} from 'sinon'; import {stub} from 'sinon'; import MaterialCheckbox from 'material-ui/Checkbox'; +import MaterialToggle from 'material-ui/Toggle'; import MaterialDatePicker from 'material-ui/DatePicker'; import MaterialRadio from 'material-ui/RadioButton'; import MaterialRadioGroup from 'material-ui/RadioButton/RadioButtonGroup'; @@ -57,7 +58,7 @@ describe('Everything', () => { const transform = x => x; const checkboxes = true; const allowedValues = ['1', '2', '3']; - const base = {label, required}; + const base = {label, required}; const schema = { 'x00': {...base, __type__: Number}, @@ -92,7 +93,8 @@ describe('Everything', () => { 'x31': {...base, __type__: String, allowedValues, checkboxes, component: SelectField}, 'x32': {...base, __type__: String, component: HiddenField}, 'x33': {...base, __type__: String, component: HiddenField, value: undefined}, - 'x34': {...base, __type__: Number, step: 4} + 'x34': {...base, __type__: Number, step: 4}, + 'x35': {...base, __type__: Boolean, appearance: 'toggle'} }; const bridgeName = name => name.replace(/\.\d+/g, '.$'); @@ -448,6 +450,19 @@ describe('Everything', () => { expect(onSubmit.lastCall.calledWithMatch({x32: 'x32'})).to.be.ok; }); + it('works (BoolField, isToggle)', async () => { + const find = () => wrapper.find(MaterialToggle).filterWhere(x => x.props().name === 'x35'); + + expect(find().props()).to.have.property('toggled', false); + expect(find().props().onToggle({}, true)).to.equal(undefined); + expect(find().props()).to.have.property('toggled', true); + + await new Promise(resolve => setTimeout(resolve, 5)); + + expect(onChange.lastCall.calledWith('x35', true)).to.be.ok; + expect(onSubmit.lastCall.calledWithMatch({x35: true})).to.be.ok; + }); + it('works (ListField, custom children)', async function _ () { this.timeout(30000); From 16cc5a460027fcf408e775cb14e257509f415612 Mon Sep 17 00:00:00 2001 From: "David M. Pankros" Date: Fri, 10 Feb 2017 12:13:57 -0500 Subject: [PATCH 2/3] Updated: Changed sorting of imports and params in BoolField.js and combined.js Update: Formatting of ternary expression in BoolField.js --- packages/uniforms-material/src/BoolField.js | 17 +++++++++-------- packages/uniforms-material/test/combined.js | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/uniforms-material/src/BoolField.js b/packages/uniforms-material/src/BoolField.js index 479b6c3d9..82b1ac4d7 100644 --- a/packages/uniforms-material/src/BoolField.js +++ b/packages/uniforms-material/src/BoolField.js @@ -1,10 +1,11 @@ import Checkbox from 'material-ui/Checkbox'; -import Toggle from 'material-ui/Toggle'; import React from 'react'; +import Toggle from 'material-ui/Toggle'; import connectField from 'uniforms/connectField'; import filterDOMProps from 'uniforms/filterDOMProps'; const Bool = ({ + appearance = 'checkbox', disabled, id, inputRef, @@ -12,11 +13,10 @@ const Bool = ({ name, onChange, value, - appearance = 'checkbox', ...props }) => - appearance === 'toggle' ? - ( disabled || onChange(value)} ref={inputRef}{...filterDOMProps(props)} - />) - : - ( + ) : ( + disabled || onChange(value)} ref={inputRef}{...filterDOMProps(props)} - />); + /> + ); export default connectField(Bool); diff --git a/packages/uniforms-material/test/combined.js b/packages/uniforms-material/test/combined.js index 513a49f6c..7b5b0caf6 100644 --- a/packages/uniforms-material/test/combined.js +++ b/packages/uniforms-material/test/combined.js @@ -7,13 +7,13 @@ import {spy} from 'sinon'; import {stub} from 'sinon'; import MaterialCheckbox from 'material-ui/Checkbox'; -import MaterialToggle from 'material-ui/Toggle'; import MaterialDatePicker from 'material-ui/DatePicker'; import MaterialRadio from 'material-ui/RadioButton'; import MaterialRadioGroup from 'material-ui/RadioButton/RadioButtonGroup'; import MaterialSelectField from 'material-ui/SelectField'; import MaterialTextField from 'material-ui/TextField'; import MaterialTimePicker from 'material-ui/TimePicker'; +import MaterialToggle from 'material-ui/Toggle'; import getMuiTheme from 'material-ui/styles/getMuiTheme'; import lightBaseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'; From 02bcab6b863fc5dc9e311e3777e4c1f41366342b Mon Sep 17 00:00:00 2001 From: "David M. Pankros" Date: Fri, 10 Feb 2017 14:38:46 -0500 Subject: [PATCH 3/3] Added documentation to API.md --- API.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/API.md b/API.md index 5fb35d933..75a6c494d 100644 --- a/API.md +++ b/API.md @@ -138,6 +138,13 @@ import BaseField from 'uniforms/BaseField'; import BoolField from 'uniforms-unstyled/BoolField'; // Choose your theme package.