summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/blob/file_template_mediator.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/blob/file_template_mediator.js')
-rw-r--r--app/assets/javascripts/blob/file_template_mediator.js90
1 files changed, 17 insertions, 73 deletions
diff --git a/app/assets/javascripts/blob/file_template_mediator.js b/app/assets/javascripts/blob/file_template_mediator.js
index adc2649e5df..2ea3c93625d 100644
--- a/app/assets/javascripts/blob/file_template_mediator.js
+++ b/app/assets/javascripts/blob/file_template_mediator.js
@@ -11,7 +11,6 @@ import DockerfileSelector from './template_selectors/dockerfile_selector';
import GitignoreSelector from './template_selectors/gitignore_selector';
import LicenseSelector from './template_selectors/license_selector';
import MetricsDashboardSelector from './template_selectors/metrics_dashboard_selector';
-import FileTemplateTypeSelector from './template_selectors/type_selector';
export default class FileTemplateMediator {
constructor({ editor, currentAction, projectId }) {
@@ -20,7 +19,6 @@ export default class FileTemplateMediator {
this.projectId = projectId;
this.initTemplateSelectors();
- this.initTemplateTypeSelector();
this.initDomElements();
this.initDropdowns();
this.initPageEvents();
@@ -38,26 +36,6 @@ export default class FileTemplateMediator {
].map((TemplateSelectorClass) => new TemplateSelectorClass({ mediator: this }));
}
- initTemplateTypeSelector() {
- this.typeSelector = new FileTemplateTypeSelector({
- mediator: this,
- dropdownData: this.templateSelectors
- .map((templateSelector) => {
- const cfg = templateSelector.config;
-
- return {
- name: cfg.name,
- key: cfg.key,
- id: cfg.key,
- };
- })
- .reduce(
- (acc, current) => (acc.find((item) => item.id === current.id) ? acc : [...acc, current]),
- [],
- ),
- });
- }
-
initDomElements() {
const $templatesMenu = $('.template-selectors-menu');
const $undoMenu = $templatesMenu.find('.template-selectors-undo-menu');
@@ -71,13 +49,10 @@ export default class FileTemplateMediator {
this.$fileContent = $fileEditor.find('#file-content');
this.$commitForm = $fileEditor.find('form');
this.$navLinks = $fileEditor.find('.nav-links');
- this.$templateTypes = this.$templateSelectors.find('.template-type-selector');
}
initDropdowns() {
- if (this.currentAction === 'create') {
- this.typeSelector.show();
- } else {
+ if (this.currentAction !== 'create') {
this.hideTemplateSelectorMenu();
}
@@ -101,32 +76,12 @@ export default class FileTemplateMediator {
const hash = urlPieces[1];
if (hash === 'preview') {
this.hideTemplateSelectorMenu();
- } else if (hash === 'editor' && !this.typeSelector.isHidden()) {
+ } else if (hash === 'editor' && this.templateSelectors.find((sel) => sel.dropdown !== null)) {
this.showTemplateSelectorMenu();
}
});
}
- selectTemplateType(item, e) {
- if (e) {
- e.preventDefault();
- }
-
- this.templateSelectors.forEach((selector) => {
- if (selector.config.key === item.key) {
- selector.show();
- } else {
- selector.hide();
- }
- });
- this.setTypeSelectorToggleText(item.name);
- this.cacheToggleText();
- }
-
- selectTemplateTypeOptions(options) {
- this.selectTemplateType(options.selectedObj, options.e);
- }
-
selectTemplateFile(selector, query, data) {
const self = this;
const { name } = selector.config;
@@ -139,7 +94,7 @@ export default class FileTemplateMediator {
this.setEditorContent(file);
this.setFilename(name);
selector.renderLoaded();
- this.typeSelector.setToggleText(name);
+
toast(__(`${query} template applied`), {
action: {
text: __('Undo'),
@@ -163,15 +118,20 @@ export default class FileTemplateMediator {
displayMatchedTemplateSelector() {
const currentInput = this.getFilename();
- this.templateSelectors.forEach((selector) => {
- const match = selector.config.pattern.test(currentInput);
-
- if (match) {
- this.typeSelector.show();
- this.selectTemplateType(selector.config);
- this.showTemplateSelectorMenu();
+ const matchedSelector = this.templateSelectors.find((sel) =>
+ sel.config.pattern.test(currentInput),
+ );
+ const currentSelector = this.templateSelectors.find((sel) => !sel.isHidden());
+
+ if (matchedSelector) {
+ if (currentSelector) {
+ currentSelector.hide();
}
- });
+ matchedSelector.show();
+ this.showTemplateSelectorMenu();
+ } else {
+ this.hideTemplateSelectorMenu();
+ }
}
fetchFileTemplate(type, query, data = {}) {
@@ -194,16 +154,13 @@ export default class FileTemplateMediator {
this.editor.navigateFileStart();
}
- findTemplateSelectorByKey(key) {
- return this.templateSelectors.find((selector) => selector.config.key === key);
- }
-
hideTemplateSelectorMenu() {
this.$templatesMenu.hide();
}
showTemplateSelectorMenu() {
this.$templatesMenu.show();
+ this.cacheToggleText();
}
cacheToggleText() {
@@ -219,7 +176,6 @@ export default class FileTemplateMediator {
this.setEditorContent(this.cachedContent);
this.setFilename(this.cachedFilename);
this.setTemplateSelectorToggleText();
- this.setTypeSelectorToggleText(__('Select a template type'));
}
getTemplateSelectorToggleText() {
@@ -234,14 +190,6 @@ export default class FileTemplateMediator {
.text(this.cachedToggleText);
}
- getTypeSelectorToggleText() {
- return this.typeSelector.getToggleText();
- }
-
- setTypeSelectorToggleText(text) {
- this.typeSelector.setToggleText(text);
- }
-
getFilename() {
return this.$filenameInput.val();
}
@@ -253,8 +201,4 @@ export default class FileTemplateMediator {
input.dispatchEvent(new Event('change'));
}
}
-
- getSelected() {
- return this.templateSelectors.find((selector) => selector.selected);
- }
}