summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/blob/template_selector.js
diff options
context:
space:
mode:
authorFatih Acet <acetfatih@gmail.com>2016-07-22 17:01:57 +0300
committerFatih Acet <acetfatih@gmail.com>2016-07-22 17:07:29 +0300
commitbc3f33f92a16d3afdb8a472f60940e7c46a31564 (patch)
treec6e568504b7888591ad15586bb1ace99db8941ca /app/assets/javascripts/blob/template_selector.js
parent033e5423a2594e08a7ebcd2379bd2331f4c39032 (diff)
downloadgitlab-ce-jsify.tar.gz
JSify all the things!jsify
Diffstat (limited to 'app/assets/javascripts/blob/template_selector.js')
-rw-r--r--app/assets/javascripts/blob/template_selector.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/app/assets/javascripts/blob/template_selector.js b/app/assets/javascripts/blob/template_selector.js
new file mode 100644
index 00000000000..cb32b5d7ac5
--- /dev/null
+++ b/app/assets/javascripts/blob/template_selector.js
@@ -0,0 +1,71 @@
+var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+
+this.TemplateSelector = (function() {
+ function TemplateSelector(opts) {
+ var ref;
+ if (opts == null) {
+ opts = {};
+ }
+ this.onClick = bind(this.onClick, this);
+ 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 = (ref = opts.$input) != null ? ref : $('#file_name');
+ this.buildDropdown();
+ this.bindEvents();
+ this.onFilenameUpdate();
+ }
+
+ TemplateSelector.prototype.buildDropdown = function() {
+ return this.dropdown.glDropdown({
+ data: this.data,
+ filterable: true,
+ selectable: true,
+ toggleLabel: this.toggleLabel,
+ search: {
+ fields: ['name']
+ },
+ clicked: this.onClick,
+ text: function(item) {
+ return item.name;
+ }
+ });
+ };
+
+ TemplateSelector.prototype.bindEvents = function() {
+ return this.$input.on('keyup blur', (function(_this) {
+ return function(e) {
+ return _this.onFilenameUpdate();
+ };
+ })(this));
+ };
+
+ TemplateSelector.prototype.toggleLabel = function(item) {
+ return item.name;
+ };
+
+ TemplateSelector.prototype.onFilenameUpdate = function() {
+ var filenameMatches;
+ if (!this.$input.length) {
+ return;
+ }
+ filenameMatches = this.pattern.test(this.$input.val().trim());
+ if (!filenameMatches) {
+ this.wrapper.addClass('hidden');
+ return;
+ }
+ return this.wrapper.removeClass('hidden');
+ };
+
+ TemplateSelector.prototype.onClick = function(item, el, e) {
+ e.preventDefault();
+ return this.requestFile(item);
+ };
+
+ TemplateSelector.prototype.requestFile = function(item) {};
+
+ TemplateSelector.prototype.requestFileSuccess = function(file) {
+ this.editor.setValue(file.content, 1);
+ return this.editor.focus();
+ };
+
+ return TemplateSelector;
+
+})();