1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
class @IssuableEdit
constructor: ->
@getElements()
@removeEventListeners()
@initEventListeners()
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'
$(document).off 'click', '.js-issuable-edit-cancel'
$(document).off 'click', '.js-issuable-title'
$(document).off 'click', '.js-issuable-title-save'
$(document).off 'click', '.js-issuable-description'
$(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 'click', '.js-issuable-title-save', @saveTitle
# Description field
$(document).on 'click', '.js-issuable-description', @showDescriptionEdit
$(document).on 'click', '.js-issuable-description-save', @saveDescription
hideFields: (e) =>
@hideTitleEdit(e)
@hideDescriptionEdit(e)
showTitleEdit: =>
@hideDescriptionEdit()
@elements.title.element.addClass 'hidden'
@elements.title.fieldset.removeClass 'hidden'
@elements.title.field.focus()
hideTitleEdit: (e) ->
@elements.title.fieldset.addClass 'hidden'
@elements.title.element.removeClass 'hidden'
saveTitle: (e) =>
@hideTitleEdit()
@elements.title.loading.removeClass 'hidden'
saveDescription: (e) =>
@hideDescriptionEdit(e)
@elements.description.element.addClass 'is-loading'
showDescriptionEdit: (e) =>
if $(e.target).is(':not(input,a)')
@hideTitleEdit(e)
@elements.description.element.addClass 'hidden'
@elements.description.fieldset.removeClass 'hidden'
@elements.description.field.focus()
hideDescriptionEdit: ->
@elements.description.fieldset.addClass 'hidden'
@elements.description.element.removeClass 'hidden'
afterSave: (e, data) =>
$('.js-issuable-inline-form [type="submit"]').enable()
@hideTitleEdit()
@hideDescriptionEdit(e)
@elements.title.loading.addClass 'hidden'
@elements.description.element.removeClass 'is-loading'
# Update the HTML
# We need HTML returned so that the markdown can be correctly created on server side
@elements.title.element.html data.title
@elements.description.element.html data.description
$('.detail-page-description .js-task-list-container').taskList('enable')
|