summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/issuable_edit.js.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/issuable_edit.js.coffee')
-rw-r--r--app/assets/javascripts/issuable_edit.js.coffee65
1 files changed, 39 insertions, 26 deletions
diff --git a/app/assets/javascripts/issuable_edit.js.coffee b/app/assets/javascripts/issuable_edit.js.coffee
index d7eab1c2d09..89b989e7658 100644
--- a/app/assets/javascripts/issuable_edit.js.coffee
+++ b/app/assets/javascripts/issuable_edit.js.coffee
@@ -1,9 +1,24 @@
class @IssuableEdit
constructor: ->
+ @getElements()
@removeEventListeners()
@initEventListeners()
- new GLForm $('.js-issuable-inline-form')
+ new GLForm(@elements.form)
+
+ getElements: ->
+ @elements =
+ form: $('.js-issuable-inline-form')
+ title:
+ element: $('.js-issuable-title')
+ field: $('.js-issuable-title-field')
+ fieldset: $('.js-issuable-edit-title')
+ loading: $('.js-issuable-title-loading')
+ description:
+ element: $('.js-issuable-description')
+ field: $('.js-task-list-field')
+ fieldset: $('.js-issuable-description-field')
+ loading: $('.js-issuable-title-loading')
removeEventListeners: ->
$(document).off 'ajax:success', '.js-issuable-inline-form'
@@ -12,56 +27,54 @@ class @IssuableEdit
$(document).off 'click', '.js-issuable-description'
$(document).off 'blur', '.js-task-list-field'
$(document).off 'click', '.js-issuable-title-save'
- $(document).off 'click', '.js-issuable-description-cancel'
+ $(document).off 'click', '.js-issuable-edit-cancel'
$(document).off 'click', '.js-issuable-description-save'
initEventListeners: ->
$(document).on 'ajax:success', '.js-issuable-inline-form', @afterSave
+ $(document).on 'click', '.js-issuable-edit-cancel', @hideFields
# Title field
$(document).on 'click', '.js-issuable-title', @showTitleEdit
- $(document).on 'blur', '.js-issuable-edit-title', @hideTitleEdit
$(document).on 'click', '.js-issuable-title-save', @saveTitle
# Description field
$(document).on 'click', '.js-issuable-description', @showDescriptionEdit
- $(document).on 'click', '.js-issuable-description-cancel', @hideDescriptionEdit
$(document).on 'click', '.js-issuable-description-save', @saveDescription
- showTitleEdit: ->
- $(this).addClass 'hidden'
- $('.js-issuable-edit-title')
- .removeClass 'hidden'
- $('.js-issuable-title-field')
- .focus()
+ hideFields: (e) =>
+ @hideTitleEdit(e)
+ @hideDescriptionEdit(e)
+
+ showTitleEdit: =>
+ @elements.title.element.addClass 'hidden'
+ @elements.title.fieldset.removeClass 'hidden'
+ @elements.title.field.focus()
hideTitleEdit: (e) ->
- unless e.relatedTarget?
- $('.js-issuable-edit-title').addClass 'hidden'
- $('.js-issuable-title').removeClass 'hidden'
+ @elements.title.fieldset.addClass 'hidden'
+ @elements.title.element.removeClass 'hidden'
saveTitle: (e) =>
- @hideTitleEdit(e)
- $('.js-issuable-title-loading').removeClass 'hidden'
+ @hideTitleEdit()
+ @elements.title.loading.removeClass 'hidden'
saveDescription: (e) =>
@hideDescriptionEdit(e)
showDescriptionEdit: ->
- $(this).addClass 'hidden'
- $('.js-issuable-description-field')
- .removeClass 'hidden'
- $('.js-task-list-field')
- .focus()
+ @elements.description.element.addClass 'hidden'
+ @elements.description.fieldset.removeClass 'hidden'
+ @elements.description.field.focus()
hideDescriptionEdit: (e) ->
- $('.js-issuable-description-field').addClass 'hidden'
- $('.js-issuable-description').removeClass 'hidden'
+ @elements.description.fieldset.addClass 'hidden'
+ @elements.description.element.removeClass 'hidden'
- afterSave: (e, data) ->
- $('.js-issuable-title-loading').addClass 'hidden'
+ afterSave: (e, data) =>
+ @elements.title.loading.addClass 'hidden'
# Update the HTML
# We need HTML returned so that the markdown can be correctly created on server side
- $('.js-issuable-title').html data.title
- $('.js-issuable-description').html data.description
+ @elements.title.element.html data.title
+ @elements.description.element.html data.description