react / react-0.13.3 / examples / basic-commonjs / node_modules / reactify / node_modules / react-tools / src / browser / ui / dom / components / ReactDOMButton.js
81165 views/**1* Copyright 2013-2014, Facebook, Inc.2* All rights reserved.3*4* This source code is licensed under the BSD-style license found in the5* LICENSE file in the root directory of this source tree. An additional grant6* of patent rights can be found in the PATENTS file in the same directory.7*8* @providesModule ReactDOMButton9*/1011"use strict";1213var AutoFocusMixin = require('AutoFocusMixin');14var ReactBrowserComponentMixin = require('ReactBrowserComponentMixin');15var ReactCompositeComponent = require('ReactCompositeComponent');16var ReactElement = require('ReactElement');17var ReactDOM = require('ReactDOM');1819var keyMirror = require('keyMirror');2021// Store a reference to the <button> `ReactDOMComponent`. TODO: use string22var button = ReactElement.createFactory(ReactDOM.button.type);2324var mouseListenerNames = keyMirror({25onClick: true,26onDoubleClick: true,27onMouseDown: true,28onMouseMove: true,29onMouseUp: true,30onClickCapture: true,31onDoubleClickCapture: true,32onMouseDownCapture: true,33onMouseMoveCapture: true,34onMouseUpCapture: true35});3637/**38* Implements a <button> native component that does not receive mouse events39* when `disabled` is set.40*/41var ReactDOMButton = ReactCompositeComponent.createClass({42displayName: 'ReactDOMButton',4344mixins: [AutoFocusMixin, ReactBrowserComponentMixin],4546render: function() {47var props = {};4849// Copy the props; except the mouse listeners if we're disabled50for (var key in this.props) {51if (this.props.hasOwnProperty(key) &&52(!this.props.disabled || !mouseListenerNames[key])) {53props[key] = this.props[key];54}55}5657return button(props, this.props.children);58}5960});6162module.exports = ReactDOMButton;636465