import App from '../../../base' let content = '' App.directive('addCommentEntry', () => ({ restrict: 'E', templateUrl: 'addCommentEntryTemplate', scope: { onStartNew: '&', onSubmit: '&', onCancel: '&' }, link(scope, element, attrs) { scope.state = { isAdding: false, content: content } scope.$on('comment:start_adding', () => scope.startNewComment()) scope.$on('$destroy', function() { content = scope.state.content }) scope.startNewComment = function() { scope.state.isAdding = true scope.onStartNew() setTimeout(() => scope.$broadcast('comment:new:open')) } scope.cancelNewComment = function() { scope.state.isAdding = false scope.state.content = '' scope.onCancel() } scope.handleCommentKeyPress = function(ev) { if (ev.keyCode === 13 && !ev.shiftKey && !ev.ctrlKey && !ev.metaKey) { ev.preventDefault() if (scope.state.content.length > 0) { scope.submitNewComment() } } } scope.submitNewComment = function(event) { scope.onSubmit({ content: scope.state.content }) content = scope.state.content scope.state.isAdding = false scope.state.content = '' } } }))