UNPKG

react-xeditable

Version:
52 lines (42 loc) 1.82 kB
'use strict'; var React = require('react'); var Button = require('react-bootstrap').Button; var OverlayTrigger = require('react-bootstrap').OverlayTrigger; var Popover = require('react-bootstrap').Popover; var Input = require('react-bootstrap').Input; var ButtonToolbar = require('react-bootstrap').ButtonToolbar; var EditableTextField = React.createClass({ save: function() { this.props.onUpdate(this.props.name, this.refs.input.getValue()); this.refs.overlay.hide(); }, cancel: function() { this.refs.overlay.hide(); }, submit: function(event) { event.preventDefault(); this.save(); }, render: function() { var empty = this.props.value === ""; var linkText = empty ? 'Empty' : this.props.value; var linkClass = empty ? 'editable-click editable-empty' : 'editable-click'; var popover = <Popover> <form className='form-inline' onSubmit={this.submit}> <Input type='text' ref='input' placeholder='Empty' className='input-sm' defaultValue={this.props.value}> <ButtonToolbar className='editable-buttons'> <Button bsStyle='primary' className='btn-sm' onClick={this.save}><i className='glyphicon glyphicon-ok'></i></Button> <Button bsStyle='default' className='btn-sm' onClick={this.cancel}><i className='glyphicon glyphicon-remove'></i></Button> </ButtonToolbar> </Input> </form> </Popover>; return ( <OverlayTrigger ref='overlay' trigger='click' rootClose={true} placement='bottom' overlay={popover}> <a href='javascript:;' className={linkClass}>{linkText}</a> </OverlayTrigger> ); } }); module.exports = EditableTextField;