diff --git a/build/main.js b/build/main.js index 5707cb5..b1ef892 100644 --- a/build/main.js +++ b/build/main.js @@ -30343,9 +30343,8 @@ var Dialog = (function (_Component) { var title = _props.title; var description = _props.description; var active = _props.active; - var value = _props.value; - var conditionalInput = input ? _react2['default'].createElement('input', { ref: 'input', defaultValue: value }) : ''; + var conditionalInput = input ? _react2['default'].createElement('input', { ref: 'input' }) : ''; var buttons = this.props.buttons.map(function (button, i) { return _react2['default'].createElement( @@ -30388,6 +30387,15 @@ var Dialog = (function (_Component) { groupButtons ); } + }, { + key: 'componentDidUpdate', + value: function componentDidUpdate() { + if (!this.props.value) return; + + var input = _react2['default'].findDOMNode(this.refs.input); + + input.value = this.props.value; + } }]); return Dialog; @@ -31584,6 +31592,8 @@ var _store = require('store'); var _store2 = _interopRequireDefault(_store); +var INVALID_NAME = 'Please enter a valid name.'; + exports['default'] = { createDialog: { title: 'Create', @@ -31594,6 +31604,8 @@ exports['default'] = { action: function action() { var input = _react2['default'].findDOMNode(this.refs.input); + if (!input.value) (0, _actionsDialog.show)('errorDialog', { description: INVALID_NAME }); + var cwd = _store2['default'].getState().get('cwd'); var path = cwd + '/' + input.value; var action = (0, _actionsFile.create)(path.replace(/^\//, '')); @@ -31607,6 +31619,8 @@ exports['default'] = { action: function action() { var input = _react2['default'].findDOMNode(this.refs.input); + if (!input.value) (0, _actionsDialog.show)('errorDialog', { description: INVALID_NAME }); + var cwd = _store2['default'].getState().get('cwd'); var path = cwd + '/' + input.value; var action = (0, _actionsFile.create)(path.replace(/^\//, ''), true); @@ -31640,6 +31654,8 @@ exports['default'] = { action: function action() { var input = _react2['default'].findDOMNode(this.refs.input); + if (!input.value) (0, _actionsDialog.show)('errorDialog', { description: INVALID_NAME }); + var activeFile = _store2['default'].getState().get('activeFile'); this.props.dispatch((0, _actionsFile.rename)(activeFile, input.value)); this.props.dispatch((0, _actionsDialog.hideAll)()); @@ -31689,6 +31705,8 @@ exports['default'] = { action: function action() { var input = _react2['default'].findDOMNode(this.refs.input); + if (!input.value) (0, _actionsDialog.show)('errorDialog', { description: INVALID_NAME }); + var action = (0, _actionsFilesView.search)(input.value); this.props.dispatch(action); this.props.dispatch((0, _actionsDialog.hideAll)()); diff --git a/releases/hawk-1.0.0.zip b/releases/hawk-1.0.0.zip index 7f2cb3b..4e32b79 100644 Binary files a/releases/hawk-1.0.0.zip and b/releases/hawk-1.0.0.zip differ diff --git a/src/js/components/dialog.js b/src/js/components/dialog.js index 44a8255..27c85de 100644 --- a/src/js/components/dialog.js +++ b/src/js/components/dialog.js @@ -3,8 +3,8 @@ import { template } from 'utils'; export default class Dialog extends Component { render() { - let { input, title, description, active, value } = this.props; - let conditionalInput = input ? : ''; + let { input, title, description, active } = this.props; + let conditionalInput = input ? : ''; let buttons = this.props.buttons.map((button, i) => { return ( @@ -41,4 +41,12 @@ export default class Dialog extends Component { ) } + + componentDidUpdate() { + if (!this.props.value) return; + + let input = React.findDOMNode(this.refs.input); + + input.value = this.props.value; + } } diff --git a/src/js/dialogs.js b/src/js/dialogs.js index a233019..624c4e2 100644 --- a/src/js/dialogs.js +++ b/src/js/dialogs.js @@ -1,9 +1,11 @@ import React from 'react'; -import { hide, hideAll } from 'actions/dialog'; +import { hide, hideAll, show } from 'actions/dialog'; import { rename, remove, create, active } from 'actions/file'; import { search } from 'actions/files-view'; import store, { bind } from 'store'; +const INVALID_NAME = 'Please enter a valid name.'; + export default { createDialog: { title: 'Create', @@ -15,6 +17,8 @@ export default { action() { let input = React.findDOMNode(this.refs.input); + if (!input.value) show('errorDialog', {description: INVALID_NAME}); + let cwd = store.getState().get('cwd'); let path = cwd + '/' + input.value; let action = create(path.replace(/^\//, '')); @@ -29,6 +33,8 @@ export default { action() { let input = React.findDOMNode(this.refs.input); + if (!input.value) show('errorDialog', {description: INVALID_NAME}); + let cwd = store.getState().get('cwd'); let path = cwd + '/' + input.value; let action = create(path.replace(/^\//, ''), true); @@ -66,6 +72,8 @@ export default { action() { let input = React.findDOMNode(this.refs.input); + if (!input.value) show('errorDialog', {description: INVALID_NAME}); + let activeFile = store.getState().get('activeFile'); this.props.dispatch(rename(activeFile, input.value)) this.props.dispatch(hideAll()); @@ -121,6 +129,8 @@ export default { action() { let input = React.findDOMNode(this.refs.input); + if (!input.value) show('errorDialog', {description: INVALID_NAME}); + let action = search(input.value); this.props.dispatch(action); this.props.dispatch(hideAll());