diff --git a/src/App.js b/src/App.js
index 9fb4d32e5..36df2d84e 100644
--- a/src/App.js
+++ b/src/App.js
@@ -149,13 +149,16 @@ export default {
userBackground() {
return this.currentUser.background_image
},
+ foreignProfileBackground() {
+ return useMergedConfigStore().mergedConfig.allowForeignUserBackground && useInterfaceStore().foreignProfileBackground
+ },
instanceBackground() {
return useMergedConfigStore().mergedConfig.hideInstanceWallpaper
? null
: this.instanceBackgroundUrl
},
background() {
- return this.userBackground || this.instanceBackground
+ return this.foreignProfileBackground || this.userBackground || this.instanceBackground
},
bgStyle() {
if (this.background) {
diff --git a/src/App.scss b/src/App.scss
index 41fea782b..952af5b47 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -50,7 +50,7 @@ body {
// have a cursor/pointer to operate them
@media (any-pointer: fine) {
* {
- scrollbar-color: var(--text) transparent;
+ scrollbar-color: var(--icon) transparent;
&::-webkit-scrollbar {
background: transparent;
@@ -130,7 +130,7 @@ body {
}
// Body should have background to scrollbar otherwise it will use white (body color?)
html {
- scrollbar-color: var(--text) var(--wallpaper);
+ scrollbar-color: var(--icon) var(--wallpaper);
background: var(--wallpaper);
}
}
@@ -200,6 +200,7 @@ nav {
background-color: var(--wallpaper);
background-image: var(--body-background-image);
background-position: 50%;
+ transition: background-image 1s;
}
.underlay {
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 1d19987ac..36b669622 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -129,6 +129,7 @@ const EmojiPicker = {
hideCustomEmojiInPicker: false,
// Lazy-load only after the first time `showing` becomes true.
contentLoaded: false,
+ popoverShown: false,
groupRefs: {},
emojiRefs: {},
filteredEmojiGroups: [],
@@ -176,6 +177,13 @@ const EmojiPicker = {
const fullEmojiSize = emojiSizeReal + 2 * 0.2 * fontSizeMultiplier * 14
this.emojiSize = fullEmojiSize
},
+ togglePicker() {
+ if (this.popoverShown) {
+ this.hidePicker()
+ } else {
+ this.showPicker()
+ }
+ },
showPicker() {
this.$refs.popover.showPopover()
this.$nextTick(() => {
@@ -194,10 +202,10 @@ const EmojiPicker = {
}
},
onPopoverShown() {
- this.$emit('show')
+ this.popoverShown = true
},
onPopoverClosed() {
- this.$emit('close')
+ this.popoverShown = false
},
onStickerUploaded(e) {
this.$emit('sticker-uploaded', e)
diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js
index 6afd0be5c..78f71934b 100644
--- a/src/components/settings_modal/admin_tabs/emoji_tab.js
+++ b/src/components/settings_modal/admin_tabs/emoji_tab.js
@@ -11,8 +11,8 @@ import ModifiedIndicator from '../helpers/modified_indicator.vue'
import SharedComputedObject from '../helpers/shared_computed_object.js'
import StringSetting from '../helpers/string_setting.vue'
-import { useInstanceStore } from 'src/stores/instance.js'
import { useEmojiStore } from 'src/stores/emoji.js'
+import { useInstanceStore } from 'src/stores/instance.js'
import { useInterfaceStore } from 'src/stores/interface.js'
import { library } from '@fortawesome/fontawesome-svg-core'
@@ -176,21 +176,24 @@ const EmojiTab = {
},
refreshPackList() {
- useEmojiStore().getAdminPacks(
- this.remotePackInstance,
- this.$store.state.api.backendInteractor.listEmojiPacks,
- ).then((allPacks) => {
- this.knownLocalPacks = allPacks
- for (const name of Object.keys(this.knownLocalPacks)) {
- this.sortPackFiles(name)
- }
- })
+ useEmojiStore()
+ .getAdminPacks(
+ this.remotePackInstance,
+ this.$store.state.api.backendInteractor.listEmojiPacks,
+ )
+ .then((allPacks) => {
+ this.knownLocalPacks = allPacks
+ for (const name of Object.keys(this.knownLocalPacks)) {
+ this.sortPackFiles(name)
+ }
+ })
},
listRemotePacks() {
- useEmojiStore().getAdminPacks(
- this.remotePackInstance,
- this.$store.state.api.backendInteractor.listRemoteEmojiPacks,
- )
+ useEmojiStore()
+ .getAdminPacks(
+ this.remotePackInstance,
+ this.$store.state.api.backendInteractor.listRemoteEmojiPacks,
+ )
.then((allPacks) => {
let inst = this.remotePackInstance
if (!inst.startsWith('http')) {
diff --git a/src/components/settings_modal/helpers/vertical_tab_switcher.scss b/src/components/settings_modal/helpers/vertical_tab_switcher.scss
index f98d2d78f..67da9305b 100644
--- a/src/components/settings_modal/helpers/vertical_tab_switcher.scss
+++ b/src/components/settings_modal/helpers/vertical_tab_switcher.scss
@@ -41,6 +41,7 @@
.tab-slot-wrapper {
flex: 1 1 auto;
height: 100%;
+ padding: 0 1em;
overflow-y: auto;
display: grid;
grid-template-columns: minmax(1em, 1fr) minmax(min-content, 45em) minmax(1em, 1fr);
diff --git a/src/components/settings_modal/settings_modal.scss b/src/components/settings_modal/settings_modal.scss
index 313ed71b0..7d6e17244 100644
--- a/src/components/settings_modal/settings_modal.scss
+++ b/src/components/settings_modal/settings_modal.scss
@@ -38,6 +38,7 @@
p {
line-height: 1.5;
+ margin-left: 2em;
}
.sidenote {
@@ -49,6 +50,7 @@
.setting-description {
margin-top: 0.2em;
margin-bottom: 0;
+ margin-left: 0;
font-size: 80%;
}
diff --git a/src/components/settings_modal/tabs/appearance_tab.vue b/src/components/settings_modal/tabs/appearance_tab.vue
index f0ccf71f3..1343a36d5 100644
--- a/src/components/settings_modal/tabs/appearance_tab.vue
+++ b/src/components/settings_modal/tabs/appearance_tab.vue
@@ -263,6 +263,11 @@
{{ $t('settings.hide_wallpaper') }}
+
+
+ {{ $t('settings.foreign_user_background') }}
+
+
{{ $t('settings.compact_profiles') }}
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index a9312c8e6..5cd2de3ab 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -169,7 +169,10 @@
-
+
{
@@ -142,7 +148,7 @@ export default {
)
return
if (button.name === 'emoji') {
- this.$refs.picker.showPicker()
+ this.$refs.picker.togglePicker()
} else {
this.animationState = true
this.getComponent(button) === 'button' && this.doAction(button)
diff --git a/src/components/status_action_buttons/action_button.vue b/src/components/status_action_buttons/action_button.vue
index 88a342314..043cd995d 100644
--- a/src/components/status_action_buttons/action_button.vue
+++ b/src/components/status_action_buttons/action_button.vue
@@ -72,9 +72,8 @@
@@ -101,6 +100,8 @@
:hide-custom-emoji="hideCustomEmoji"
class="emoji-picker-panel"
@emoji="addReaction"
+ @show="onShowEmojiPicker"
+ @close="onHideEmojiPicker"
/>
diff --git a/src/components/status_action_buttons/action_button_container.js b/src/components/status_action_buttons/action_button_container.js
index 0f236b0a9..a5a070dde 100644
--- a/src/components/status_action_buttons/action_button_container.js
+++ b/src/components/status_action_buttons/action_button_container.js
@@ -20,6 +20,7 @@ export default {
UserTimedFilterModal,
},
props: ['button', 'status'],
+ emits: ['emojiPickerShown'],
mounted() {
if (this.button.name === 'mute') {
this.$store.dispatch('fetchDomainMutes')
diff --git a/src/components/status_action_buttons/action_button_container.vue b/src/components/status_action_buttons/action_button_container.vue
index 9c4e84c00..348b158a7 100644
--- a/src/components/status_action_buttons/action_button_container.vue
+++ b/src/components/status_action_buttons/action_button_container.vue
@@ -79,6 +79,7 @@
:button="button"
:status="status"
v-bind="$attrs"
+ @emojiPickerShown="e => $emit('emojiPickerShown', e)"
/>
true,
- active: () => false,
+ active: ({ emojiPickerShown }) => emojiPickerShown,
toggleable: true,
anonLink: true,
},
diff --git a/src/components/status_action_buttons/status_action_buttons.js b/src/components/status_action_buttons/status_action_buttons.js
index 8bdd87277..05809bbe9 100644
--- a/src/components/status_action_buttons/status_action_buttons.js
+++ b/src/components/status_action_buttons/status_action_buttons.js
@@ -28,6 +28,7 @@ const StatusActionButtons = {
/* no-op */
},
randomSeed: genRandomSeed(),
+ emojiPickerShown: false,
}
},
components: {
@@ -56,6 +57,7 @@ const StatusActionButtons = {
return {
status: this.status,
replying: this.replying,
+ emojiPickerShown: this.emojiPickerShown,
emit: this.$emit,
dispatch: this.$store.dispatch,
state: this.$store.state,
@@ -107,6 +109,9 @@ const StatusActionButtons = {
onExtraClose() {
this.showPin = false
},
+ onEmojiPickerShown(state) {
+ this.emojiPickerShown = state
+ },
isPinned(button) {
return this.pinnedItems.has(button.name)
},
diff --git a/src/components/status_action_buttons/status_action_buttons.vue b/src/components/status_action_buttons/status_action_buttons.vue
index 3837e6ae5..7017a8cf0 100644
--- a/src/components/status_action_buttons/status_action_buttons.vue
+++ b/src/components/status_action_buttons/status_action_buttons.vue
@@ -20,6 +20,7 @@
:get-component="getComponent"
:close="() => { /* no-op */ }"
:do-action="doAction"
+ @emojiPickerShown="onEmojiPickerShown"
/>