Skip to content

Commit

Permalink
Merge pull request #5718 from jimfb/linked-input
Browse files Browse the repository at this point in the history
Added LinkedInput addon.
  • Loading branch information
jimfb committed Jan 13, 2016
2 parents 689efd1 + 0acdb7b commit 7334fec
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/addons/link/LinkedInput.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule LinkedInput
*/

'use strict';

var React = require('React');
var LinkedValueUtils = require('LinkedValueUtils');

class LinkedInput extends React.Component {
render() {
var newProps = Object.assign({}, this.props);
newProps.value = LinkedValueUtils.getValue(this.props);
newProps.checked = LinkedValueUtils.getChecked(this.props);
delete newProps.valueLink;
delete newProps.checkedLink;
return <input {...newProps} />;
}
}

module.exports = LinkedInput;
42 changes: 42 additions & 0 deletions src/addons/link/__tests__/LinkedInput-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @emails react-core
*/

'use strict';


describe('LinkedStateMixin', function() {
var LinkedInput;
var React;
var ReactDOM;

beforeEach(function() {
LinkedInput = require('LinkedInput');
React = require('React');
ReactDOM = require('ReactDOM');
});

it('should basically work', function() {
var container = document.createElement('div');
var component = ReactDOM.render(<LinkedInput value="foo" onChange={function() {}} />, container);
var input = ReactDOM.findDOMNode(component);
expect(input.value).toBe('foo');
ReactDOM.render(<LinkedInput valueLink={{value: 'boo', requestChange: function() {}}} />, container);
expect(input.value).toBe('boo');
});

it('should throw', function() {
var container = document.createElement('div');
var element = <LinkedInput value="foo" valueLink={{value: 'boo', requestChange: function() {}}} />;
expect(function() {
ReactDOM.render(element, container);
}).toThrow();
});
});

0 comments on commit 7334fec

Please sign in to comment.