summaryrefslogtreecommitdiff
path: root/web-ui
diff options
context:
space:
mode:
authorsw00 <sett.wai@gmail.com>2015-10-04 23:52:20 -0300
committerFolker Bernitt <fbernitt@thoughtworks.com>2015-10-13 10:38:48 +0200
commit7689919f19ff786792aa647c69bc129a1a25a309 (patch)
tree25d9bae71a2bea781ba6296f12f37445e285066e /web-ui
parent74a6870edefc9e693f314f3bae0b805ddf6e273e (diff)
create draft_button component that listens to `draft:save`, `draft:saved`
Diffstat (limited to 'web-ui')
-rw-r--r--web-ui/app/js/mail_view/ui/draft_button.js41
-rw-r--r--web-ui/app/js/mixins/with_mail_edit_base.js4
-rw-r--r--web-ui/test/spec/mail_view/ui/draft_button.spec.js40
3 files changed, 84 insertions, 1 deletions
diff --git a/web-ui/app/js/mail_view/ui/draft_button.js b/web-ui/app/js/mail_view/ui/draft_button.js
new file mode 100644
index 00000000..1a89c414
--- /dev/null
+++ b/web-ui/app/js/mail_view/ui/draft_button.js
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2014 ThoughtWorks, Inc.
+*
+* Pixelated is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Affero General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* Pixelated is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Affero General Public License for more details.
+*
+* You should have received a copy of the GNU Affero General Public License
+* along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
+*/
+'use strict';
+
+define([
+ 'flight/lib/component',
+ 'page/events',
+],
+function (defineComponent, events) {
+ return defineComponent(draftButton);
+
+ function draftButton() {
+ this.enableButton = function () {
+ this.$node.prop('disabled', false);
+ };
+
+ this.disableButton = function () {
+ this.$node.prop('disabled', true);
+ };
+
+ this.after('initialize', function(){
+ this.disableButton();
+ this.on(document, events.mail.saveDraft, this.disableButton);
+ this.on(document, events.mail.draftSaved, this.enableButton);
+ });
+ }
+});
diff --git a/web-ui/app/js/mixins/with_mail_edit_base.js b/web-ui/app/js/mixins/with_mail_edit_base.js
index 2434df92..b4a2b0c8 100644
--- a/web-ui/app/js/mixins/with_mail_edit_base.js
+++ b/web-ui/app/js/mixins/with_mail_edit_base.js
@@ -23,9 +23,10 @@ define(
'page/events',
'views/i18n',
'mail_view/ui/send_button',
+ 'mail_view/ui/draft_button',
'flight/lib/utils'
],
- function(viewHelper, Recipients, DraftSaveStatus, events, i18n, SendButton, utils) {
+ function(viewHelper, Recipients, DraftSaveStatus, events, i18n, SendButton, DraftButton, utils) {
'use strict';
function withMailEditBase() {
@@ -94,6 +95,7 @@ define(
this.on(this.select('draftButton'), 'click', this.buildAndSaveDraft);
this.on(this.select('trashButton'), 'click', this.trashMail);
SendButton.attachTo(this.select('sendButton'));
+ DraftButton.attachTo(this.select('draftButton'));
this.warnSendButtonOfRecipients();
};
diff --git a/web-ui/test/spec/mail_view/ui/draft_button.spec.js b/web-ui/test/spec/mail_view/ui/draft_button.spec.js
new file mode 100644
index 00000000..e1e968de
--- /dev/null
+++ b/web-ui/test/spec/mail_view/ui/draft_button.spec.js
@@ -0,0 +1,40 @@
+/* global Pixelated */
+
+describeComponent('mail_view/ui/draft_button', function(){
+ 'use strict';
+
+ describe('draft save button', function(){
+ beforeEach(function(){
+ this.setupComponent('<button></button>');
+ });
+
+ describe('after initialize', function(){
+ it('should be enabled', function(){
+ expect(this.$node).toBeDisabled();
+ });
+ });
+
+ describe('when enabled', function(){
+ beforeEach(function(){
+ this.$node.prop('disabled', false);
+ });
+
+ it('should be disabled when saving draft message', function(){
+ $(document).trigger(Pixelated.events.mail.saveDraft, {});
+ expect(this.$node).toBeDisabled();
+ });
+ });
+
+ describe('when disabled', function(){
+ beforeEach(function(){
+ this.$node.prop('disabled', true);
+ });
+
+ it('should be enabled when draft message has been saved', function(){
+ $(document).trigger(Pixelated.events.mail.draftSaved, {});
+ expect(this.$node).not.toBeDisabled();
+ });
+ });
+
+ });
+});