diff options
author | Bryce Johnson <bryce@gitlab.com> | 2017-04-03 17:54:40 +0000 |
---|---|---|
committer | Alfredo Sumaran <alfredo@gitlab.com> | 2017-04-03 17:54:40 +0000 |
commit | f564cbb21ac31da88841ad93d6051d90677b7c12 (patch) | |
tree | 0d7812f9b2c74f0c6eac5c1e846f0885ec6f1295 /app/assets/javascripts/blob/file_template_selector.js | |
parent | ca6a7f1e9c9296317315249de9b8b3803d1c6ddc (diff) | |
download | gitlab-ce-f564cbb21ac31da88841ad93d6051d90677b7c12.tar.gz |
Make file templates easy to use and discover
Diffstat (limited to 'app/assets/javascripts/blob/file_template_selector.js')
-rw-r--r-- | app/assets/javascripts/blob/file_template_selector.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/app/assets/javascripts/blob/file_template_selector.js b/app/assets/javascripts/blob/file_template_selector.js new file mode 100644 index 00000000000..31dd45fac89 --- /dev/null +++ b/app/assets/javascripts/blob/file_template_selector.js @@ -0,0 +1,60 @@ +/* global Api */ + +export default class FileTemplateSelector { + constructor(mediator) { + this.mediator = mediator; + this.$dropdown = null; + this.$wrapper = null; + } + + init() { + const cfg = this.config; + + this.$dropdown = $(cfg.dropdown); + this.$wrapper = $(cfg.wrapper); + this.$loadingIcon = this.$wrapper.find('.fa-chevron-down'); + this.$dropdownToggleText = this.$wrapper.find('.dropdown-toggle-text'); + + this.initDropdown(); + } + + show() { + if (this.$dropdown === null) { + this.init(); + } + + this.$wrapper.removeClass('hidden'); + } + + hide() { + if (this.$dropdown !== null) { + this.$wrapper.addClass('hidden'); + } + } + + getToggleText() { + return this.$dropdownToggleText.text(); + } + + setToggleText(text) { + this.$dropdownToggleText.text(text); + } + + renderLoading() { + this.$loadingIcon + .addClass('fa-spinner fa-spin') + .removeClass('fa-chevron-down'); + } + + renderLoaded() { + this.$loadingIcon + .addClass('fa-chevron-down') + .removeClass('fa-spinner fa-spin'); + } + + reportSelection(query, el, e, data) { + e.preventDefault(); + return this.mediator.selectTemplateFile(this, query, data); + } +} + |