diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-12-01 21:14:38 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-12-01 21:14:38 +0300 |
commit | 07cbb41fee42601767b3aea2979d6fa6d990ce5b (patch) | |
tree | 00ba0463347c4e2951660c7236652bb24750976d /app/assets/javascripts | |
parent | c3ddbeb162e4261f4ce3df291909fadeba637995 (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.js | 21 | ||||
-rw-r--r-- | app/assets/javascripts/content_editor/services/asset_resolver.js | 9 |
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, }; }); |