Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-12-01 21:14:38 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-12-01 21:14:38 +0300
commit07cbb41fee42601767b3aea2979d6fa6d990ce5b (patch)
tree00ba0463347c4e2951660c7236652bb24750976d /app/assets/javascripts
parentc3ddbeb162e4261f4ce3df291909fadeba637995 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/content_editor/extensions/reference.js21
-rw-r--r--app/assets/javascripts/content_editor/services/asset_resolver.js9
2 files changed, 22 insertions, 8 deletions
diff --git a/app/assets/javascripts/content_editor/extensions/reference.js b/app/assets/javascripts/content_editor/extensions/reference.js
index fd248709b5a..0c385481ac5 100644
--- a/app/assets/javascripts/content_editor/extensions/reference.js
+++ b/app/assets/javascripts/content_editor/extensions/reference.js
@@ -72,11 +72,20 @@ export default Node.create({
addInputRules() {
const { editor } = this;
const { assetResolver } = this.options;
- const referenceInputRegex = /(?:^|\s)([\w/]*([!&#])\d+(\+?s?))(?:\s|\n)/m;
+ const referenceInputRegex = /(?:^|\s)([\w/]*([#!&%$@~]|\[vulnerability:)[\w.]+(\+?s?\]?))(?:\s|\n)/m;
const referenceTypes = {
'#': 'issue',
'!': 'merge_request',
'&': 'epic',
+ '%': 'milestone',
+ $: 'snippet',
+ '@': 'user',
+ '~': 'label',
+ '[vulnerability:': 'vulnerability',
+ };
+ const nodeTypes = {
+ label: editor.schema.nodes.referenceLabel,
+ default: editor.schema.nodes.reference,
};
return [
@@ -91,22 +100,26 @@ export default Node.create({
text,
expandedText,
fullyExpandedText,
+ backgroundColor,
} = await assetResolver.resolveReference(referenceId);
if (!text) return;
let referenceText = text;
- if (expansionType === '+') referenceText = expandedText;
- if (expansionType === '+s') referenceText = fullyExpandedText;
+ if (expansionType === '+') referenceText = expandedText || text;
+ if (expansionType === '+s') referenceText = fullyExpandedText || text;
const position = findReference(editor, referenceId);
if (!position) return;
+ const nodeType = nodeTypes[referenceType] || nodeTypes.default;
+
editor.view.dispatch(
editor.state.tr.replaceWith(position, position + referenceId.length, [
- this.type.create({
+ nodeType.create({
referenceType,
originalText: referenceId,
+ color: backgroundColor,
href,
text: referenceText,
}),
diff --git a/app/assets/javascripts/content_editor/services/asset_resolver.js b/app/assets/javascripts/content_editor/services/asset_resolver.js
index 0d4396fc176..07a69db7428 100644
--- a/app/assets/javascripts/content_editor/services/asset_resolver.js
+++ b/app/assets/javascripts/content_editor/services/asset_resolver.js
@@ -27,10 +27,11 @@ export default class AssetResolver {
if (!a.length) return {};
return {
- href: a[0].getAttribute('href'),
- text: a[0].textContent,
- expandedText: a[1].textContent,
- fullyExpandedText: a[2].textContent,
+ href: a[0]?.getAttribute('href'),
+ text: a[0]?.textContent,
+ expandedText: a[1]?.textContent,
+ fullyExpandedText: a[2]?.textContent,
+ backgroundColor: a[0]?.firstElementChild?.style.backgroundColor,
};
});