From 371821667f87dfab1ec3a19224eb6db158307ac7 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Tue, 26 Jul 2016 01:44:47 +0100 Subject: [PATCH 1/2] Added template_selector.js.es6 --- .../javascripts/blob/template_selector.js.es6 | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 app/assets/javascripts/blob/template_selector.js.es6 diff --git a/app/assets/javascripts/blob/template_selector.js.es6 b/app/assets/javascripts/blob/template_selector.js.es6 new file mode 100644 index 000000000000..312e6de66b63 --- /dev/null +++ b/app/assets/javascripts/blob/template_selector.js.es6 @@ -0,0 +1,69 @@ +(() => { + class TemplateSelector { + constructor(opts = {}) { + this.dropdown = opts.dropdown; + this.data = opts.data; + this.pattern = opts.pattern; + this.wrapper = opts.wrapper; + this.editor = opts.editor; + this.fileEndpoint = opts.fileEndpoint; + this.$input = opts.$input || $('#file_name'); + + this.buildDropdown(); + this.bindEvents(); + this.onFilenameUpdate(); + } + + buildDropdown() { + this.dropdown.glDropdown({ + data: this.data, + filterable: true, + selectable: true, + search: { + fields: ['name'] + }, + clicked: this.onClick, + text: (item) => { + return item.name; + } + }); + } + + bindEvents() { + this.$input.on('keyup blur', () => { + this.onFilenameUpdate(); + }); + } + + onFilenameUpdate() { + if (!this.input.length) return; + + let filenameMatches = this.pattern.test(this.$input.val().trim()); + + if (!filenameMatches) { + this.wrapper.addClass('hidden'); + return; + } + + this.wrapper.removeClass('hidden'); + } + + onClick(item, el, e) { + e.preventDefault(); + this.requestFile(item); + } + + requestFile(item) { + // To be implemented on the extending class + // e.g. + // Api.gitignoreText(item.name, this.requestFileSuccess.bind(this)); + } + + requestFileSuccess(file) { + this.editor.setValue(file.content, 1); + this.editor.focus(); + } + } + + this.TemplateSelector = TemplateSelector; +}); -- GitLab From b00da87e18d77de5cc4cf8628220435eae28d4d6 Mon Sep 17 00:00:00 2001 From: Luke Bennett Date: Tue, 26 Jul 2016 03:25:18 +0100 Subject: [PATCH 2/2] Parsed global scope to IIFE --- app/assets/javascripts/blob/template_selector.js.es6 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/blob/template_selector.js.es6 b/app/assets/javascripts/blob/template_selector.js.es6 index 312e6de66b63..4738e7735966 100644 --- a/app/assets/javascripts/blob/template_selector.js.es6 +++ b/app/assets/javascripts/blob/template_selector.js.es6 @@ -1,4 +1,4 @@ -(() => { +((global) => { class TemplateSelector { constructor(opts = {}) { this.dropdown = opts.dropdown; @@ -65,5 +65,5 @@ } } - this.TemplateSelector = TemplateSelector; -}); + global.TemplateSelector = TemplateSelector; +})(window); -- GitLab