From 0acdb7b56ac62d81f79feb309e7beaef8140aeb9 Mon Sep 17 00:00:00 2001 From: jim Date: Tue, 22 Dec 2015 15:27:38 -0800 Subject: [PATCH] Added LinkedInput addon. --- src/addons/link/LinkedInput.js | 28 +++++++++++++ src/addons/link/__tests__/LinkedInput-test.js | 42 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/addons/link/LinkedInput.js create mode 100644 src/addons/link/__tests__/LinkedInput-test.js diff --git a/src/addons/link/LinkedInput.js b/src/addons/link/LinkedInput.js new file mode 100644 index 0000000000000..cfd8f92edef08 --- /dev/null +++ b/src/addons/link/LinkedInput.js @@ -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 ; + } +} + +module.exports = LinkedInput; diff --git a/src/addons/link/__tests__/LinkedInput-test.js b/src/addons/link/__tests__/LinkedInput-test.js new file mode 100644 index 0000000000000..fab7c3d5282ec --- /dev/null +++ b/src/addons/link/__tests__/LinkedInput-test.js @@ -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(, container); + var input = ReactDOM.findDOMNode(component); + expect(input.value).toBe('foo'); + ReactDOM.render(, container); + expect(input.value).toBe('boo'); + }); + + it('should throw', function() { + var container = document.createElement('div'); + var element = ; + expect(function() { + ReactDOM.render(element, container); + }).toThrow(); + }); +});