blob: b413f31da00b5e5979961b1a502c524b278e9ab7 (
plain)
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
|
class @BlobGitIgnoreSelector
constructor: (opts) ->
{
@dropdown
@editor
@wrapper = @dropdown.parents('.gitignore-selector')
@fileNameInput = $('#file_name')
@data = @dropdown.data('filenames')
} = opts
@dropdown.glDropdown(
data: @data,
filterable: true,
selectable: true,
search:
fields: ['text']
clicked: @onClick.bind(@)
)
@toggleGitIgnoreSelector()
@bindEvents()
bindEvents: ->
@fileNameInput
.on 'keyup blur', (e) =>
@toggleGitIgnoreSelector()
toggleGitIgnoreSelector: ->
filename = @fileNameInput.val() or $('.editor-file-name').text().trim()
@wrapper.toggleClass 'hidden', filename isnt '.gitignore'
onClick: (item) ->
@requestIgnoreFile(item.text)
requestIgnoreFile: (name) ->
Api.gitIgnoreText name, @requestIgnoreFileSuccess.bind(@)
requestIgnoreFileSuccess: (gitignore) ->
@editor.setValue(gitignore.content, -1)
# Move cursor position to end of file
row = @editor.session.getLength() - 1
column = @editor.session.getLine(row).length
@editor.gotoLine(row + 1, column)
@editor.focus()
class @BlobGitIgnoreSelectors
constructor: (opts) ->
_this = @
{
@dropdowns = $('.js-gitignore-selector')
@editor
} = opts
@dropdowns.each ->
$dropdown = $(@)
new BlobGitIgnoreSelector(
dropdown: $dropdown,
editor: _this.editor
)
|