diff --git a/extensions/mentions/js/src/forum/index.js b/extensions/mentions/js/src/forum/index.js
index 0ab3f120f..96c9caed1 100644
--- a/extensions/mentions/js/src/forum/index.js
+++ b/extensions/mentions/js/src/forum/index.js
@@ -2,6 +2,8 @@ import { extend } from 'flarum/common/extend';
import app from 'flarum/forum/app';
import NotificationGrid from 'flarum/forum/components/NotificationGrid';
import { getPlainContent } from 'flarum/common/utils/string';
+import textContrastClass from 'flarum/common/helpers/textContrastClass';
+import Post from 'flarum/forum/components/Post';
import addPostMentionPreviews from './addPostMentionPreviews';
import addMentionedByList from './addMentionedByList';
@@ -84,6 +86,13 @@ app.initializers.add('flarum-mentions', function () {
// Remove post mentions when rendering post previews.
getPlainContent.removeSelectors.push('a.PostMention');
+
+ // Apply color contrast fix on group mentions.
+ extend(Post.prototype, 'oncreate', function () {
+ this.$('.GroupMention--colored').each(function () {
+ this.classList.add(textContrastClass(getComputedStyle(this).getPropertyValue('--group-color')));
+ });
+ });
});
export * from './utils/textFormatter';
diff --git a/extensions/mentions/js/src/forum/utils/textFormatter.js b/extensions/mentions/js/src/forum/utils/textFormatter.js
index 54055069e..415d99907 100644
--- a/extensions/mentions/js/src/forum/utils/textFormatter.js
+++ b/extensions/mentions/js/src/forum/utils/textFormatter.js
@@ -1,7 +1,6 @@
import app from 'flarum/forum/app';
import username from 'flarum/common/helpers/username';
import extractText from 'flarum/common/utils/extractText';
-import isDark from 'flarum/common/utils/isDark';
export function filterUserMentions(tag) {
let user;
@@ -41,7 +40,6 @@ export function filterGroupMentions(tag) {
tag.setAttribute('groupname', extractText(group.namePlural()));
tag.setAttribute('icon', group.icon());
tag.setAttribute('color', group.color());
- tag.setAttribute('class', isDark(group.color()) ? 'GroupMention--light' : 'GroupMention--dark');
return true;
}
diff --git a/extensions/mentions/less/forum.less b/extensions/mentions/less/forum.less
index 4843645a6..8177e4d1c 100644
--- a/extensions/mentions/less/forum.less
+++ b/extensions/mentions/less/forum.less
@@ -1,17 +1,17 @@
.PostMention, .UserMention, .GroupMention {
- background: @control-bg;
- color: @control-color;
+ background: var(--control-bg);
+ color: var(--control-color);
border-radius: @border-radius;
padding: 2px 5px;
border: 0 !important;
font-weight: 600;
blockquote & {
- background: @body-bg;
+ background: var(--body-bg);
}
&:hover,
&:active {
- color: @link-color;
+ color: var(--link-color);
}
}
.UserMention, .PostMention, .GroupMention {
@@ -98,35 +98,13 @@
.Button--color(@tooltip-color, @tooltip-bg);
}
.GroupMention {
- & when (@config-dark-mode = false) {
- &,
- &:hover,
- &:active {
- color: @text-on-light;
- }
- }
- & when (@config-dark-mode = true) {
- &,
- &:hover,
- &:active {
- color: @text-on-dark;
- }
- }
+ background-color: var(--group-color, var(--control-bg));
+ color: var(--control-color);
+ --link-color: currentColor;
- &--light {
- &,
- &:hover,
- &:active {
- color: @text-on-light;
- }
- }
-
- &--dark {
- &,
- &:hover,
- &:active {
- color: @text-on-dark;
- }
+ &--colored {
+ --control-color: var(--contrast-color, var(--body-bg));
+ --link-color: var(--control-color);
}
.icon {
diff --git a/extensions/mentions/src/ConfigureMentions.php b/extensions/mentions/src/ConfigureMentions.php
index 296291c20..7f47beec2 100644
--- a/extensions/mentions/src/ConfigureMentions.php
+++ b/extensions/mentions/src/ConfigureMentions.php
@@ -14,7 +14,6 @@ use Flarum\Http\UrlGenerator;
use Flarum\Post\PostRepository;
use Flarum\Settings\SettingsRepositoryInterface;
use Flarum\User\User;
-use Illuminate\Support\Str;
use s9e\TextFormatter\Configurator;
use s9e\TextFormatter\Parser\Tag;
@@ -151,16 +150,37 @@ class ConfigureMentions
$tag->attributes->add('groupname');
$tag->attributes->add('icon');
$tag->attributes->add('color');
- $tag->attributes->add('class');
$tag->attributes->add('id')->filterChain->append('#uint');
$tag->template = '
One of the @Mods will look at this
', $response['data']['attributes']['contentHtml']); + $this->assertStringContainsString('GroupMention', $response['data']['attributes']['contentHtml']); + $this->assertStringContainsString('#80349E', $response['data']['attributes']['contentHtml']); $this->assertNotNull(CommentPost::find($response['data']['id'])->mentionsGroups->find(4)); }