diff --git a/extensions/tags/js/src/common/helpers/tagIcon.js b/extensions/tags/js/src/common/helpers/tagIcon.js index 5838cd971..9b39720c6 100644 --- a/extensions/tags/js/src/common/helpers/tagIcon.js +++ b/extensions/tags/js/src/common/helpers/tagIcon.js @@ -10,16 +10,14 @@ export default function tagIcon(tag, attrs = {}, settings = {}) { hasIcon ? tag.icon() : 'TagIcon' ]); - if (tag) { + if (tag && useColor) { attrs.style = attrs.style || {}; + attrs.style['--color'] = tag.color(); if (hasIcon) { - attrs.style.color = useColor ? tag.color() : ''; - } else { - attrs.style.backgroundColor = tag.color(); + attrs.style.color = tag.color(); } - - } else { + } else if (!tag) { attrs.className += ' untagged'; } diff --git a/extensions/tags/js/src/common/helpers/tagLabel.js b/extensions/tags/js/src/common/helpers/tagLabel.js index 462d25bbe..3f34c1ba2 100644 --- a/extensions/tags/js/src/common/helpers/tagLabel.js +++ b/extensions/tags/js/src/common/helpers/tagLabel.js @@ -12,7 +12,7 @@ export default function tagLabel(tag, attrs = {}) { if (tag) { const color = tag.color(); if (color) { - attrs.style.backgroundColor = attrs.style.color = color; + attrs.style['--tag-bg'] = color; attrs.className += ' colored'; } diff --git a/extensions/tags/js/src/forum/addTagFilter.js b/extensions/tags/js/src/forum/addTagFilter.js index 7bcfbabfc..9f2e69c3a 100644 --- a/extensions/tags/js/src/forum/addTagFilter.js +++ b/extensions/tags/js/src/forum/addTagFilter.js @@ -2,6 +2,7 @@ import { extend, override } from 'flarum/extend'; import IndexPage from 'flarum/components/IndexPage'; import DiscussionListState from 'flarum/states/DiscussionListState'; import GlobalSearchState from 'flarum/states/GlobalSearchState'; +import classList from 'flarum/utils/classList'; import TagHero from './components/TagHero'; @@ -67,13 +68,15 @@ export default function() { if (tag) { const color = tag.color(); const canStartDiscussion = tag.canStartDiscussion() || !app.session.user; + const newDiscussion = items.get('newDiscussion'); if (color) { - items.get('newDiscussion').attrs.style = {backgroundColor: color}; + newDiscussion.attrs.className = classList([newDiscussion.attrs.className, 'Button--tagColored']); + newDiscussion.attrs.style = { '--color': color }; } - items.get('newDiscussion').attrs.disabled = !canStartDiscussion; - items.get('newDiscussion').children = app.translator.trans(canStartDiscussion ? 'core.forum.index.start_discussion_button' : 'core.forum.index.cannot_start_discussion_button'); + newDiscussion.attrs.disabled = !canStartDiscussion; + newDiscussion.children = app.translator.trans(canStartDiscussion ? 'core.forum.index.start_discussion_button' : 'core.forum.index.cannot_start_discussion_button'); } }); diff --git a/extensions/tags/js/src/forum/addTagLabels.js b/extensions/tags/js/src/forum/addTagLabels.js index 98e957069..2da6fb2f7 100644 --- a/extensions/tags/js/src/forum/addTagLabels.js +++ b/extensions/tags/js/src/forum/addTagLabels.js @@ -22,7 +22,7 @@ export default function() { if (tags && tags.length) { const color = tags[0].color(); if (color) { - view.attrs.style = {backgroundColor: color}; + view.attrs.style = { '--hero-bg': color }; view.attrs.className += ' DiscussionHero--colored'; } } diff --git a/extensions/tags/js/src/forum/components/TagHero.js b/extensions/tags/js/src/forum/components/TagHero.js index e6e7c6506..6be76b925 100644 --- a/extensions/tags/js/src/forum/components/TagHero.js +++ b/extensions/tags/js/src/forum/components/TagHero.js @@ -8,7 +8,7 @@ export default class TagHero extends Component { return (
+ style={color ? { '--hero-bg': color } : ''}>

{tag.icon() && tagIcon(tag, {}, { useColor: false })} {tag.name()}

diff --git a/extensions/tags/js/src/forum/components/TagLinkButton.js b/extensions/tags/js/src/forum/components/TagLinkButton.js index adee402a1..0cec0d3a5 100644 --- a/extensions/tags/js/src/forum/components/TagLinkButton.js +++ b/extensions/tags/js/src/forum/components/TagLinkButton.js @@ -17,9 +17,9 @@ export default class TagLinkButton extends LinkButton { return ( - {tagIcon(tag, {className: 'Button-icon'})} + {tagIcon(tag, { className: 'Button-icon' })} {tag ? tag.name() : app.translator.trans('flarum-tags.forum.index.untagged_link')} diff --git a/extensions/tags/js/src/forum/components/TagsPage.js b/extensions/tags/js/src/forum/components/TagsPage.js index 131d2c0cc..172732c82 100755 --- a/extensions/tags/js/src/forum/components/TagsPage.js +++ b/extensions/tags/js/src/forum/components/TagsPage.js @@ -59,7 +59,7 @@ export default class TagsPage extends Page { return (
  • + style={{ '--tag-bg': tag.color() }}> {tag.icon() && tagIcon(tag, {}, { useColor: false })}

    {tag.name()}

    diff --git a/extensions/tags/less/admin.less b/extensions/tags/less/admin.less index 0aeeefb87..c7b0c5015 100644 --- a/extensions/tags/less/admin.less +++ b/extensions/tags/less/admin.less @@ -1,5 +1,4 @@ -@import "common/TagLabel"; -@import "common/TagIcon"; +@import "common/common"; @import "admin/TagsPage"; @import "admin/EditTagModal"; diff --git a/extensions/tags/less/common/TagIcon.less b/extensions/tags/less/common/TagIcon.less index a2a3a0481..4ebfac50b 100644 --- a/extensions/tags/less/common/TagIcon.less +++ b/extensions/tags/less/common/TagIcon.less @@ -5,7 +5,7 @@ display: inline-block; vertical-align: -3px; margin-left: 1px; - background: @control-bg; + background: var(--color, @control-bg); &.untagged { border: 1px dotted @muted-color; diff --git a/extensions/tags/less/common/TagLabel.less b/extensions/tags/less/common/TagLabel.less index 8136e127e..b56f67506 100644 --- a/extensions/tags/less/common/TagLabel.less +++ b/extensions/tags/less/common/TagLabel.less @@ -4,19 +4,21 @@ display: inline-block; padding: 0.1em 0.5em; border-radius: @border-radius; - background: @control-bg; - color: @control-color; + background: var(--tag-bg); + color: var(--tag-color); text-transform: none; &.untagged { - background: transparent; - border: 1px dotted @muted-color; - color: @muted-color; + --tag-bg: transparent; + --tag-color: @muted-color; + border: 1px dotted; } &.colored { + --tag-color: @body-bg; + .TagLabel-text { - color: @body-bg !important; + color: var(--tag-color) !important; } } @@ -26,13 +28,9 @@ font-size: 14px; &.colored { + --tag-color: var(--tag-bg); margin-right: 5px; background: @body-bg !important; - color: @muted-color; - - .TagLabel-text { - color: inherit !important; - } } } } diff --git a/extensions/tags/less/common/common.less b/extensions/tags/less/common/common.less new file mode 100644 index 000000000..809308389 --- /dev/null +++ b/extensions/tags/less/common/common.less @@ -0,0 +1,3 @@ +@import "root"; +@import "TagLabel"; +@import "TagIcon"; diff --git a/extensions/tags/less/common/root.less b/extensions/tags/less/common/root.less new file mode 100644 index 000000000..97005c093 --- /dev/null +++ b/extensions/tags/less/common/root.less @@ -0,0 +1,4 @@ +:root { + --tag-bg: @control-bg; + --tag-color: @control-color; +} diff --git a/extensions/tags/less/forum.less b/extensions/tags/less/forum.less index 2a334cfe4..49f48a7d6 100644 --- a/extensions/tags/less/forum.less +++ b/extensions/tags/less/forum.less @@ -1,25 +1,36 @@ -@import "common/TagLabel"; -@import "common/TagIcon"; +@import "common/common"; @import "forum/TagCloud"; @import "forum/TagDiscussionModal"; +@import "forum/TagHero"; @import "forum/TagTiles"; +.Button--tagColored { + --button-primary-bg: var(--color); + --button-primary-bg-hover: var(--color); + --button-primary-bg-active: var(--color); +} .DiscussionHero { .item-title { display: block; margin-top: 15px; } } -.TagLinkButton.child { - @media @tablet-up { - padding-top: 4px; - padding-bottom: 4px; - } - margin-left: 10px; +.TagLinkButton { + &.child { + @media @tablet-up { + padding-top: 4px; + padding-bottom: 4px; + } + margin-left: 10px; - .TagIcon { - display: none; + .TagIcon { + display: none; + } + } + + .active > & { + --sidenav-color-active: var(--color); } } .DiscussionComposer-changeTags { diff --git a/extensions/tags/less/forum/TagHero.less b/extensions/tags/less/forum/TagHero.less new file mode 100644 index 000000000..8d9a3f593 --- /dev/null +++ b/extensions/tags/less/forum/TagHero.less @@ -0,0 +1,5 @@ +.TagHero { + &--colored { + --hero-color: #fff; + } +} diff --git a/extensions/tags/less/forum/TagTiles.less b/extensions/tags/less/forum/TagTiles.less index 5886ab543..9075cc270 100755 --- a/extensions/tags/less/forum/TagTiles.less +++ b/extensions/tags/less/forum/TagTiles.less @@ -57,7 +57,7 @@ .TagTile { position: relative; - background: @control-bg; + background: var(--tag-bg); &, a { color: @control-color;