diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-12 15:06:26 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-12 15:06:26 +0000 |
commit | 69944ffb68788d190e81ff7e33db5dcb6c903184 (patch) | |
tree | 4112a1285f186c140749e8410a8a2788b6812500 /app/assets | |
parent | 1b7381e998ff4b33ec8f633766030082e95f10c8 (diff) | |
download | gitlab-ce-69944ffb68788d190e81ff7e33db5dcb6c903184.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets')
-rw-r--r-- | app/assets/javascripts/blob/blob_utils.js | 5 | ||||
-rw-r--r-- | app/assets/javascripts/blob/viewer/index.js | 58 | ||||
-rw-r--r-- | app/assets/javascripts/blob_edit/edit_blob.js | 20 | ||||
-rw-r--r-- | app/assets/javascripts/boards/components/board_list.vue | 3 | ||||
-rw-r--r-- | app/assets/javascripts/boards/models/list.js | 4 | ||||
-rw-r--r-- | app/assets/stylesheets/framework/files.scss | 11 | ||||
-rw-r--r-- | app/assets/stylesheets/highlight/common.scss | 9 | ||||
-rw-r--r-- | app/assets/stylesheets/highlight/themes/dark.scss | 5 | ||||
-rw-r--r-- | app/assets/stylesheets/highlight/themes/monokai.scss | 5 | ||||
-rw-r--r-- | app/assets/stylesheets/highlight/themes/none.scss | 6 | ||||
-rw-r--r-- | app/assets/stylesheets/highlight/themes/solarized-dark.scss | 5 | ||||
-rw-r--r-- | app/assets/stylesheets/highlight/themes/solarized-light.scss | 5 | ||||
-rw-r--r-- | app/assets/stylesheets/highlight/white_base.scss | 5 |
13 files changed, 57 insertions, 84 deletions
diff --git a/app/assets/javascripts/blob/blob_utils.js b/app/assets/javascripts/blob/blob_utils.js deleted file mode 100644 index 27fcc7f7b79..00000000000 --- a/app/assets/javascripts/blob/blob_utils.js +++ /dev/null @@ -1,5 +0,0 @@ -// capture anything starting with http:// or https:// -// up until a disallowed character or whitespace -export const blobLinkRegex = /https?:\/\/[^"<>\\^`{|}\s]+/g; - -export default { blobLinkRegex }; diff --git a/app/assets/javascripts/blob/viewer/index.js b/app/assets/javascripts/blob/viewer/index.js index f032c2f216b..07e4dde41d9 100644 --- a/app/assets/javascripts/blob/viewer/index.js +++ b/app/assets/javascripts/blob/viewer/index.js @@ -4,10 +4,6 @@ import Flash from '../../flash'; import { handleLocationHash } from '../../lib/utils/common_utils'; import axios from '../../lib/utils/axios_utils'; import { __ } from '~/locale'; -import { blobLinkRegex } from '~/blob/blob_utils'; - -const SIMPLE_VIEWER_NAME = 'simple'; -const RICH_VIEWER_NAME = 'rich'; export default class BlobViewer { constructor() { @@ -25,7 +21,7 @@ export default class BlobViewer { } static initRichViewer() { - const viewer = document.querySelector(`.blob-viewer[data-type="${RICH_VIEWER_NAME}"]`); + const viewer = document.querySelector('.blob-viewer[data-type="rich"]'); if (!viewer || !viewer.dataset.richType) return; const initViewer = promise => @@ -65,12 +61,8 @@ export default class BlobViewer { this.switcherBtns = document.querySelectorAll('.js-blob-viewer-switch-btn'); this.copySourceBtn = document.querySelector('.js-copy-blob-source-btn'); - this.simpleViewer = this.$fileHolder[0].querySelector( - `.blob-viewer[data-type="${SIMPLE_VIEWER_NAME}"]`, - ); - this.richViewer = this.$fileHolder[0].querySelector( - `.blob-viewer[data-type="${RICH_VIEWER_NAME}"]`, - ); + this.simpleViewer = this.$fileHolder[0].querySelector('.blob-viewer[data-type="simple"]'); + this.richViewer = this.$fileHolder[0].querySelector('.blob-viewer[data-type="rich"]'); this.initBindings(); @@ -79,10 +71,10 @@ export default class BlobViewer { switchToInitialViewer() { const initialViewer = this.$fileHolder[0].querySelector('.blob-viewer:not(.hidden)'); - let initialViewerName = initialViewer.dataset.type; + let initialViewerName = initialViewer.getAttribute('data-type'); if (this.switcher && window.location.hash.indexOf('#L') === 0) { - initialViewerName = SIMPLE_VIEWER_NAME; + initialViewerName = 'simple'; } this.switchToViewer(initialViewerName); @@ -99,41 +91,35 @@ export default class BlobViewer { this.copySourceBtn.addEventListener('click', () => { if (this.copySourceBtn.classList.contains('disabled')) return this.copySourceBtn.blur(); - return this.switchToViewer(SIMPLE_VIEWER_NAME); + return this.switchToViewer('simple'); }); } } - static linkifyURLs(viewer) { - if (viewer.dataset.linkified) return; - - document.querySelectorAll('.js-blob-content .code .line').forEach(line => { - // eslint-disable-next-line no-param-reassign - line.innerHTML = line.innerHTML.replace(blobLinkRegex, '<a href="$&">$&</a>'); - }); - - // eslint-disable-next-line no-param-reassign - viewer.dataset.linkified = true; - } - switchViewHandler(e) { const target = e.currentTarget; e.preventDefault(); - this.switchToViewer(target.dataset.viewer); + this.switchToViewer(target.getAttribute('data-viewer')); } toggleCopyButtonState() { if (!this.copySourceBtn) return; - if (this.simpleViewer.dataset.loaded) { - this.copySourceBtn.dataset.title = __('Copy file contents'); + if (this.simpleViewer.getAttribute('data-loaded')) { + this.copySourceBtn.setAttribute('title', __('Copy file contents')); this.copySourceBtn.classList.remove('disabled'); } else if (this.activeViewer === this.simpleViewer) { - this.copySourceBtn.dataset.title = __('Wait for the file to load to copy its contents'); + this.copySourceBtn.setAttribute( + 'title', + __('Wait for the file to load to copy its contents'), + ); this.copySourceBtn.classList.add('disabled'); } else { - this.copySourceBtn.dataset.title = __('Switch to the source to copy the file contents'); + this.copySourceBtn.setAttribute( + 'title', + __('Switch to the source to copy the file contents'), + ); this.copySourceBtn.classList.add('disabled'); } @@ -173,8 +159,6 @@ export default class BlobViewer { this.$fileHolder.trigger('highlight:line'); handleLocationHash(); - if (name === SIMPLE_VIEWER_NAME) BlobViewer.linkifyURLs(viewer); - this.toggleCopyButtonState(); }) .catch(() => new Flash(__('Error loading viewer'))); @@ -182,17 +166,17 @@ export default class BlobViewer { static loadViewer(viewerParam) { const viewer = viewerParam; - const { url, loaded, loading } = viewer.dataset; + const url = viewer.getAttribute('data-url'); - if (!url || loaded || loading) { + if (!url || viewer.getAttribute('data-loaded') || viewer.getAttribute('data-loading')) { return Promise.resolve(viewer); } - viewer.dataset.loading = true; + viewer.setAttribute('data-loading', 'true'); return axios.get(url).then(({ data }) => { viewer.innerHTML = data.html; - viewer.dataset.loaded = true; + viewer.setAttribute('data-loaded', 'true'); return viewer; }); diff --git a/app/assets/javascripts/blob_edit/edit_blob.js b/app/assets/javascripts/blob_edit/edit_blob.js index 8561f650e8f..011898a5e7a 100644 --- a/app/assets/javascripts/blob_edit/edit_blob.js +++ b/app/assets/javascripts/blob_edit/edit_blob.js @@ -4,8 +4,7 @@ import $ from 'jquery'; import axios from '~/lib/utils/axios_utils'; import createFlash from '~/flash'; import { __ } from '~/locale'; -import { blobLinkRegex } from '~/blob/blob_utils'; -import TemplateSelectorMediator from '~/blob/file_template_mediator'; +import TemplateSelectorMediator from '../blob/file_template_mediator'; import getModeByFileExtension from '~/lib/utils/ace_utils'; import { addEditorMarkdownListeners } from '~/lib/utils/text_markdown'; @@ -18,7 +17,6 @@ export default class EditBlob { this.initModePanesAndLinks(); this.initSoftWrap(); this.initFileSelectors(); - this.initBlobContentLinkClickability(); } configureAceEditor() { @@ -91,22 +89,6 @@ export default class EditBlob { return this.editor.focus(); } - initBlobContentLinkClickability() { - this.editor.renderer.on('afterRender', () => { - document.querySelectorAll('.ace_text-layer .ace_line > *').forEach(token => { - if (token.dataset.linkified || !token.textContent.includes('http')) return; - - // eslint-disable-next-line no-param-reassign - token.innerHTML = token.innerHTML.replace( - blobLinkRegex, - '<a target="_blank" href="$&">$&</a>', - ); - // eslint-disable-next-line no-param-reassign - token.dataset.linkified = true; - }); - }); - } - initSoftWrap() { this.isSoftWrapped = false; this.$toggleButton = $('.soft-wrap-toggle'); diff --git a/app/assets/javascripts/boards/components/board_list.vue b/app/assets/javascripts/boards/components/board_list.vue index 1273fcc6a91..b8439bc8741 100644 --- a/app/assets/javascripts/boards/components/board_list.vue +++ b/app/assets/javascripts/boards/components/board_list.vue @@ -84,7 +84,8 @@ export default { this.$nextTick(() => { if ( this.scrollHeight() <= this.listHeight() && - this.list.issuesSize > this.list.issues.length + this.list.issuesSize > this.list.issues.length && + this.list.isExpanded ) { this.list.page += 1; this.list.getIssues(false).catch(() => { diff --git a/app/assets/javascripts/boards/models/list.js b/app/assets/javascripts/boards/models/list.js index 1e213c324eb..bb8c8e68297 100644 --- a/app/assets/javascripts/boards/models/list.js +++ b/app/assets/javascripts/boards/models/list.js @@ -50,8 +50,8 @@ class List { this.page = 1; this.loading = true; this.loadingMore = false; - this.issues = []; - this.issuesSize = 0; + this.issues = obj.issues || []; + this.issuesSize = obj.issuesSize ? obj.issuesSize : 0; this.defaultAvatar = defaultAvatar; if (obj.label) { diff --git a/app/assets/stylesheets/framework/files.scss b/app/assets/stylesheets/framework/files.scss index fc4944d731e..4938215b2e7 100644 --- a/app/assets/stylesheets/framework/files.scss +++ b/app/assets/stylesheets/framework/files.scss @@ -258,17 +258,6 @@ } } } - - .file-editor { - .ace_underline { - text-decoration: none; - } - - .ace_line a { - pointer-events: auto; - color: inherit; - } - } } span.idiff { diff --git a/app/assets/stylesheets/highlight/common.scss b/app/assets/stylesheets/highlight/common.scss index 95f6fb8c333..bdeac7e97c0 100644 --- a/app/assets/stylesheets/highlight/common.scss +++ b/app/assets/stylesheets/highlight/common.scss @@ -29,12 +29,3 @@ color: $link; } } - -// Links to URLs, emails, or dependencies -.code .line a { - color: inherit; - - &:hover { - text-decoration: underline; - } -} diff --git a/app/assets/stylesheets/highlight/themes/dark.scss b/app/assets/stylesheets/highlight/themes/dark.scss index 16e6824baf8..cbce0ba3f1e 100644 --- a/app/assets/stylesheets/highlight/themes/dark.scss +++ b/app/assets/stylesheets/highlight/themes/dark.scss @@ -193,6 +193,11 @@ $dark-il: #de935f; color: $dark-highlight-color !important; } + // Links to URLs, emails, or dependencies + .line a { + color: $dark-na; + } + .hll { background-color: $dark-hll-bg; } .c { color: $dark-c; } /* Comment */ .err { color: $dark-err; } /* Error */ diff --git a/app/assets/stylesheets/highlight/themes/monokai.scss b/app/assets/stylesheets/highlight/themes/monokai.scss index cfbb7a1db94..1b61ffa37e3 100644 --- a/app/assets/stylesheets/highlight/themes/monokai.scss +++ b/app/assets/stylesheets/highlight/themes/monokai.scss @@ -193,6 +193,11 @@ $monokai-gi: #a6e22e; color: $black !important; } + // Links to URLs, emails, or dependencies + .line a { + color: $monokai-k; + } + .hll { background-color: $monokai-hll; } .c { color: $monokai-c; } /* Comment */ .err { color: $monokai-err-color; background-color: $monokai-err-bg; } /* Error */ diff --git a/app/assets/stylesheets/highlight/themes/none.scss b/app/assets/stylesheets/highlight/themes/none.scss index a099563542d..a7ede266fb5 100644 --- a/app/assets/stylesheets/highlight/themes/none.scss +++ b/app/assets/stylesheets/highlight/themes/none.scss @@ -143,6 +143,12 @@ background-color: $white-normal; } + // Links to URLs, emails, or dependencies + .line a { + color: $gl-text-color; + text-decoration: underline; + } + .hll { background-color: $white-light; } .gd { diff --git a/app/assets/stylesheets/highlight/themes/solarized-dark.scss b/app/assets/stylesheets/highlight/themes/solarized-dark.scss index d74d5c6ebda..6569f3abc8b 100644 --- a/app/assets/stylesheets/highlight/themes/solarized-dark.scss +++ b/app/assets/stylesheets/highlight/themes/solarized-dark.scss @@ -196,6 +196,11 @@ $solarized-dark-il: #2aa198; background-color: $solarized-dark-highlight !important; } + // Links to URLs, emails, or dependencies + .line a { + color: $solarized-dark-kd; + } + /* Solarized Dark For use with Jekyll and Pygments diff --git a/app/assets/stylesheets/highlight/themes/solarized-light.scss b/app/assets/stylesheets/highlight/themes/solarized-light.scss index d995c5bba1f..4e74a9ea50a 100644 --- a/app/assets/stylesheets/highlight/themes/solarized-light.scss +++ b/app/assets/stylesheets/highlight/themes/solarized-light.scss @@ -204,6 +204,11 @@ $solarized-light-il: #2aa198; background-color: $solarized-light-highlight !important; } + // Links to URLs, emails, or dependencies + .line a { + color: $solarized-light-kd; + } + /* Solarized Light For use with Jekyll and Pygments diff --git a/app/assets/stylesheets/highlight/white_base.scss b/app/assets/stylesheets/highlight/white_base.scss index c58cf89f0ca..973f94c63aa 100644 --- a/app/assets/stylesheets/highlight/white_base.scss +++ b/app/assets/stylesheets/highlight/white_base.scss @@ -209,6 +209,11 @@ span.highlight_word { background-color: $white-highlight !important; } +// Links to URLs, emails, or dependencies +.line a { + color: $white-nb; +} + .hll { background-color: $white-hll-bg; } .c { color: $white-c; |