summaryrefslogtreecommitdiff
path: root/app/assets
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-11-12 15:06:26 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-11-12 15:06:26 +0000
commit69944ffb68788d190e81ff7e33db5dcb6c903184 (patch)
tree4112a1285f186c140749e8410a8a2788b6812500 /app/assets
parent1b7381e998ff4b33ec8f633766030082e95f10c8 (diff)
downloadgitlab-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.js5
-rw-r--r--app/assets/javascripts/blob/viewer/index.js58
-rw-r--r--app/assets/javascripts/blob_edit/edit_blob.js20
-rw-r--r--app/assets/javascripts/boards/components/board_list.vue3
-rw-r--r--app/assets/javascripts/boards/models/list.js4
-rw-r--r--app/assets/stylesheets/framework/files.scss11
-rw-r--r--app/assets/stylesheets/highlight/common.scss9
-rw-r--r--app/assets/stylesheets/highlight/themes/dark.scss5
-rw-r--r--app/assets/stylesheets/highlight/themes/monokai.scss5
-rw-r--r--app/assets/stylesheets/highlight/themes/none.scss6
-rw-r--r--app/assets/stylesheets/highlight/themes/solarized-dark.scss5
-rw-r--r--app/assets/stylesheets/highlight/themes/solarized-light.scss5
-rw-r--r--app/assets/stylesheets/highlight/white_base.scss5
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;