diff options
Diffstat (limited to 'app/assets/javascripts/blob')
6 files changed, 24 insertions, 106 deletions
diff --git a/app/assets/javascripts/blob/components/blob_header.vue b/app/assets/javascripts/blob/components/blob_header.vue index 361d736f740..4e47aa99fd8 100644 --- a/app/assets/javascripts/blob/components/blob_header.vue +++ b/app/assets/javascripts/blob/components/blob_header.vue @@ -66,7 +66,7 @@ export default { return !this.hideDefaultActions; }, isEmpty() { - return this.blob.rawSize === 0; + return this.blob.rawSize === '0'; }, blobSwitcherDocIcon() { return this.blob.richViewer?.fileType === 'csv' ? 'table' : 'document'; 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); - } } diff --git a/app/assets/javascripts/blob/notebook/index.js b/app/assets/javascripts/blob/notebook/index.js index 25fe29c4fbe..9259827edf1 100644 --- a/app/assets/javascripts/blob/notebook/index.js +++ b/app/assets/javascripts/blob/notebook/index.js @@ -1,13 +1,11 @@ import Vue from 'vue'; import NotebookViewer from './notebook_viewer.vue'; -export default () => { - const el = document.getElementById('js-notebook-viewer'); - +export default ({ el = document.getElementById('js-notebook-viewer'), relativeRawPath }) => { return new Vue({ el, provide: { - relativeRawPath: el.dataset.relativeRawPath, + relativeRawPath: relativeRawPath || el.dataset.relativeRawPath, }, render(createElement) { return createElement(NotebookViewer, { diff --git a/app/assets/javascripts/blob/openapi/index.js b/app/assets/javascripts/blob/openapi/index.js index 8cfdc00bb40..2386508aef5 100644 --- a/app/assets/javascripts/blob/openapi/index.js +++ b/app/assets/javascripts/blob/openapi/index.js @@ -15,8 +15,8 @@ const createSandbox = () => { return iframeEl; }; -export default async () => { - const wrapperEl = document.getElementById('js-openapi-viewer'); +export default async (el = document.getElementById('js-openapi-viewer')) => { + const wrapperEl = el; const sandboxEl = createSandbox(); const { data } = await axios.get(wrapperEl.dataset.endpoint); diff --git a/app/assets/javascripts/blob/template_selectors/type_selector.js b/app/assets/javascripts/blob/template_selectors/type_selector.js deleted file mode 100644 index 65e7ff0594c..00000000000 --- a/app/assets/javascripts/blob/template_selectors/type_selector.js +++ /dev/null @@ -1,24 +0,0 @@ -import initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown'; -import FileTemplateSelector from '../file_template_selector'; - -export default class FileTemplateTypeSelector extends FileTemplateSelector { - constructor({ mediator, dropdownData }) { - super(mediator); - this.mediator = mediator; - this.config = { - dropdown: '.js-template-type-selector', - wrapper: '.js-template-type-selector-wrap', - dropdownData, - }; - } - - initDropdown() { - initDeprecatedJQueryDropdown(this.$dropdown, { - data: this.config.dropdownData, - filterable: false, - selectable: true, - clicked: (options) => this.mediator.selectTemplateTypeOptions(options), - text: (item) => item.name, - }); - } -} diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js index 439c4258805..5e85e4cea38 100644 --- a/app/assets/javascripts/blob/viewer/index.js +++ b/app/assets/javascripts/blob/viewer/index.js @@ -1,5 +1,5 @@ import $ from 'jquery'; -import '~/behaviors/markdown/init_gfm'; +import { renderGFM } from '~/behaviors/markdown/render_gfm'; import { createAlert } from '~/flash'; import { __ } from '~/locale'; import { @@ -195,7 +195,7 @@ export class BlobViewer { this.toggleCopyButtonState(); loadViewer(newViewer) .then((viewer) => { - $(viewer).renderGFM(); + renderGFM(viewer); window.requestIdleCallback(() => { this.$fileHolder.trigger('highlight:line'); handleLocationHash(); |