made quick settings into their own component, added quick view settings,
added both to conversation view
This commit is contained in:
parent
3fc9673a7d
commit
f4276f7241
@ -1,6 +1,8 @@
|
|||||||
import { reduce, filter, findIndex, clone, get } from 'lodash'
|
import { reduce, filter, findIndex, clone, get } from 'lodash'
|
||||||
import Status from '../status/status.vue'
|
import Status from '../status/status.vue'
|
||||||
import ThreadTree from '../thread_tree/thread_tree.vue'
|
import ThreadTree from '../thread_tree/thread_tree.vue'
|
||||||
|
import QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'
|
||||||
|
import QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'
|
||||||
|
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
import {
|
import {
|
||||||
@ -343,7 +345,9 @@ const conversation = {
|
|||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
Status,
|
Status,
|
||||||
ThreadTree
|
ThreadTree,
|
||||||
|
QuickFilterSettings,
|
||||||
|
QuickViewSettings
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
statusId (newVal, oldVal) {
|
statusId (newVal, oldVal) {
|
||||||
|
@ -17,6 +17,14 @@
|
|||||||
>
|
>
|
||||||
{{ $t('timeline.collapse') }}
|
{{ $t('timeline.collapse') }}
|
||||||
</button>
|
</button>
|
||||||
|
<QuickFilterSettings
|
||||||
|
v-if="!collapsable"
|
||||||
|
:conversation="true"
|
||||||
|
/>
|
||||||
|
<QuickViewSettings
|
||||||
|
v-if="!collapsable"
|
||||||
|
:conversation="true"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="conversation-body panel-body">
|
<div class="conversation-body panel-body">
|
||||||
<div
|
<div
|
||||||
|
@ -9,7 +9,10 @@ library.add(
|
|||||||
faWrench
|
faWrench
|
||||||
)
|
)
|
||||||
|
|
||||||
const TimelineQuickSettings = {
|
const QuickFilterSettings = {
|
||||||
|
props: {
|
||||||
|
conversation: Boolean
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
Popover
|
Popover
|
||||||
},
|
},
|
||||||
@ -64,4 +67,4 @@ const TimelineQuickSettings = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default TimelineQuickSettings
|
export default QuickFilterSettings
|
@ -1,13 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<Popover
|
<Popover
|
||||||
trigger="click"
|
trigger="click"
|
||||||
class="TimelineQuickSettings"
|
class="QuickFilterSettings"
|
||||||
:bound-to="{ x: 'container' }"
|
:bound-to="{ x: 'container' }"
|
||||||
>
|
>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<div v-if="loggedIn">
|
<div v-if="loggedIn">
|
||||||
<button
|
<button
|
||||||
|
v-if="!conversation"
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
@click="replyVisibilityAll = true"
|
@click="replyVisibilityAll = true"
|
||||||
>
|
>
|
||||||
@ -17,6 +18,7 @@
|
|||||||
/>{{ $t('settings.reply_visibility_all') }}
|
/>{{ $t('settings.reply_visibility_all') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
|
v-if="!conversation"
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
@click="replyVisibilityFollowing = true"
|
@click="replyVisibilityFollowing = true"
|
||||||
>
|
>
|
||||||
@ -26,6 +28,7 @@
|
|||||||
/>{{ $t('settings.reply_visibility_following_short') }}
|
/>{{ $t('settings.reply_visibility_following_short') }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
|
v-if="!conversation"
|
||||||
class="button-default dropdown-item"
|
class="button-default dropdown-item"
|
||||||
@click="replyVisibilitySelf = true"
|
@click="replyVisibilitySelf = true"
|
||||||
>
|
>
|
||||||
@ -35,6 +38,7 @@
|
|||||||
/>{{ $t('settings.reply_visibility_self_short') }}
|
/>{{ $t('settings.reply_visibility_self_short') }}
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div
|
||||||
|
v-if="!conversation"
|
||||||
role="separator"
|
role="separator"
|
||||||
class="dropdown-divider"
|
class="dropdown-divider"
|
||||||
/>
|
/>
|
||||||
@ -70,13 +74,7 @@
|
|||||||
class="button-default dropdown-item dropdown-item-icon"
|
class="button-default dropdown-item dropdown-item-icon"
|
||||||
@click="openTab('filtering')"
|
@click="openTab('filtering')"
|
||||||
>
|
>
|
||||||
<FAIcon icon="font" />{{ $t('settings.word_filter') }}
|
<FAIcon icon="font" />{{ $t('settings.word_filter_and_more') }}
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
class="button-default dropdown-item dropdown-item-icon"
|
|
||||||
@click="openTab('general')"
|
|
||||||
>
|
|
||||||
<FAIcon icon="wrench" />{{ $t('settings.more_settings') }}
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -88,11 +86,11 @@
|
|||||||
</Popover>
|
</Popover>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="./timeline_quick_settings.js"></script>
|
<script src="./quick_filter_settings.js"></script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|
||||||
.TimelineQuickSettings {
|
.QuickFilterSettings {
|
||||||
|
|
||||||
> button {
|
> button {
|
||||||
line-height: 100%;
|
line-height: 100%;
|
69
src/components/quick_view_settings/quick_view_settings.js
Normal file
69
src/components/quick_view_settings/quick_view_settings.js
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
import Popover from '../popover/popover.vue'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
|
import { faTableList, faFolderTree, faBars, faWrench } from '@fortawesome/free-solid-svg-icons'
|
||||||
|
|
||||||
|
library.add(
|
||||||
|
faTableList,
|
||||||
|
faFolderTree,
|
||||||
|
faBars,
|
||||||
|
faWrench
|
||||||
|
)
|
||||||
|
|
||||||
|
const QuickViewSettings = {
|
||||||
|
props: {
|
||||||
|
conversation: Boolean
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
Popover
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
setConversationDisplay (visibility) {
|
||||||
|
this.$store.dispatch('setOption', { name: 'conversationDisplay', value: visibility })
|
||||||
|
this.$store.dispatch('queueFlushAll')
|
||||||
|
},
|
||||||
|
openTab (tab) {
|
||||||
|
this.$store.dispatch('openSettingsModalTab', tab)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters(['mergedConfig']),
|
||||||
|
loggedIn () {
|
||||||
|
return !!this.$store.state.users.currentUser
|
||||||
|
},
|
||||||
|
conversationDisplay: {
|
||||||
|
get () { return this.mergedConfig.conversationDisplay },
|
||||||
|
set (newVal) { this.setConversationDisplay(newVal) }
|
||||||
|
},
|
||||||
|
autoUpdate: {
|
||||||
|
get () { return this.mergedConfig.streaming },
|
||||||
|
set () {
|
||||||
|
const value = !this.autoUpdate
|
||||||
|
this.$store.dispatch('setOption', { name: 'streaming', value })
|
||||||
|
}
|
||||||
|
},
|
||||||
|
collapseWithSubjects: {
|
||||||
|
get () { return this.mergedConfig.collapseMessageWithSubject },
|
||||||
|
set () {
|
||||||
|
const value = !this.collapseWithSubjects
|
||||||
|
this.$store.dispatch('setOption', { name: 'collapseMessageWithSubject', value })
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showUserAvatars: {
|
||||||
|
get () { return this.mergedConfig.mentionLinkShowAvatar },
|
||||||
|
set () {
|
||||||
|
const value = !this.mentionLinkShowAvatar
|
||||||
|
this.$store.dispatch('setOption', { name: 'mentionLinkShowAvatar', value })
|
||||||
|
}
|
||||||
|
},
|
||||||
|
muteBotStatuses: {
|
||||||
|
get () { return this.mergedConfig.muteBotStatuses },
|
||||||
|
set () {
|
||||||
|
const value = !this.muteBotStatuses
|
||||||
|
this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default QuickViewSettings
|
96
src/components/quick_view_settings/quick_view_settings.vue
Normal file
96
src/components/quick_view_settings/quick_view_settings.vue
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
<template>
|
||||||
|
<Popover
|
||||||
|
trigger="click"
|
||||||
|
class="QuickViewSettings"
|
||||||
|
:bound-to="{ x: 'container' }"
|
||||||
|
>
|
||||||
|
<template #content>
|
||||||
|
<div class="dropdown-menu">
|
||||||
|
<div v-if="loggedIn">
|
||||||
|
<button
|
||||||
|
class="button-default dropdown-item"
|
||||||
|
@click="conversationDisplay = 'tree'"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="menu-checkbox -radio"
|
||||||
|
:class="{ 'menu-checkbox-checked': conversationDisplay === 'tree' }"
|
||||||
|
/><FAIcon icon="folder-tree"/> {{ $t('settings.conversation_display_tree_quick') }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="button-default dropdown-item"
|
||||||
|
@click="conversationDisplay = 'linear'"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="menu-checkbox -radio"
|
||||||
|
:class="{ 'menu-checkbox-checked': conversationDisplay === 'linear' }"
|
||||||
|
/><FAIcon icon="bars"/> {{ $t('settings.conversation_display_linear_quick') }}
|
||||||
|
</button>
|
||||||
|
<div
|
||||||
|
role="separator"
|
||||||
|
class="dropdown-divider"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
class="button-default dropdown-item"
|
||||||
|
@click="showUserAvatars = !showUserAvatars"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="menu-checkbox"
|
||||||
|
:class="{ 'menu-checkbox-checked': showUserAvatars }"
|
||||||
|
/>{{ $t('settings.mention_link_show_avatar_quick') }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
v-if="!conversation"
|
||||||
|
class="button-default dropdown-item"
|
||||||
|
@click="autoUpdate = !autoUpdate"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="menu-checkbox"
|
||||||
|
:class="{ 'menu-checkbox-checked': autoUpdate }"
|
||||||
|
/>{{ $t('settings.auto_update') }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
v-if="!conversation"
|
||||||
|
class="button-default dropdown-item"
|
||||||
|
@click="collapseWithSubjects = !collapseWithSubjects"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
class="menu-checkbox"
|
||||||
|
:class="{ 'menu-checkbox-checked': collapseWithSubjects }"
|
||||||
|
/>{{ $t('settings.collapse_subject') }}
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="button-default dropdown-item dropdown-item-icon"
|
||||||
|
@click="openTab('general')"
|
||||||
|
>
|
||||||
|
<FAIcon icon="wrench" />{{ $t('settings.more_settings') }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #trigger>
|
||||||
|
<button class="button-unstyled">
|
||||||
|
<FAIcon icon="table-list" />
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
</Popover>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script src="./quick_view_settings.js"></script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
|
||||||
|
.QuickViewSettings {
|
||||||
|
|
||||||
|
> button {
|
||||||
|
line-height: 100%;
|
||||||
|
height: 100%;
|
||||||
|
width: var(--__panel-heading-height-inner);
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
svg {
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
@ -2,7 +2,8 @@ import Status from '../status/status.vue'
|
|||||||
import timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'
|
import timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'
|
||||||
import Conversation from '../conversation/conversation.vue'
|
import Conversation from '../conversation/conversation.vue'
|
||||||
import TimelineMenu from '../timeline_menu/timeline_menu.vue'
|
import TimelineMenu from '../timeline_menu/timeline_menu.vue'
|
||||||
import TimelineQuickSettings from './timeline_quick_settings.vue'
|
import QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'
|
||||||
|
import QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'
|
||||||
import { debounce, throttle, keyBy } from 'lodash'
|
import { debounce, throttle, keyBy } from 'lodash'
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
import { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'
|
import { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'
|
||||||
@ -38,7 +39,8 @@ const Timeline = {
|
|||||||
Status,
|
Status,
|
||||||
Conversation,
|
Conversation,
|
||||||
TimelineMenu,
|
TimelineMenu,
|
||||||
TimelineQuickSettings
|
QuickFilterSettings,
|
||||||
|
QuickViewSettings
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
filteredVisibleStatuses () {
|
filteredVisibleStatuses () {
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
>
|
>
|
||||||
{{ $t('timeline.up_to_date') }}
|
{{ $t('timeline.up_to_date') }}
|
||||||
</div>
|
</div>
|
||||||
<TimelineQuickSettings v-if="!embedded" />
|
<QuickFilterSettings v-if="!embedded" />
|
||||||
|
<QuickViewSettings v-if="!embedded" />
|
||||||
</div>
|
</div>
|
||||||
<div :class="classes.body">
|
<div :class="classes.body">
|
||||||
<div
|
<div
|
||||||
|
@ -375,7 +375,7 @@
|
|||||||
"filtering": "Filtering",
|
"filtering": "Filtering",
|
||||||
"wordfilter": "Wordfilter",
|
"wordfilter": "Wordfilter",
|
||||||
"filtering_explanation": "All statuses containing these words will be muted, one per line",
|
"filtering_explanation": "All statuses containing these words will be muted, one per line",
|
||||||
"word_filter": "Word filter",
|
"word_filter_and_more": "Word filter and more...",
|
||||||
"follow_export": "Follow export",
|
"follow_export": "Follow export",
|
||||||
"follow_export_button": "Export your follows to a csv file",
|
"follow_export_button": "Export your follows to a csv file",
|
||||||
"follow_import": "Follow import",
|
"follow_import": "Follow import",
|
||||||
@ -509,6 +509,7 @@
|
|||||||
"subject_line_noop": "Do not copy",
|
"subject_line_noop": "Do not copy",
|
||||||
"conversation_display": "Conversation display style",
|
"conversation_display": "Conversation display style",
|
||||||
"conversation_display_tree": "Tree-style",
|
"conversation_display_tree": "Tree-style",
|
||||||
|
"conversation_display_tree_quick": "Tree view",
|
||||||
"disable_sticky_headers": "Don't stick column headers to top of the screen",
|
"disable_sticky_headers": "Don't stick column headers to top of the screen",
|
||||||
"show_scrollbars": "Show side column's scrollbars",
|
"show_scrollbars": "Show side column's scrollbars",
|
||||||
"third_column_mode": "When there's enough space, show third column containing",
|
"third_column_mode": "When there's enough space, show third column containing",
|
||||||
@ -518,6 +519,7 @@
|
|||||||
"tree_advanced": "Allow more flexible navigation in tree view",
|
"tree_advanced": "Allow more flexible navigation in tree view",
|
||||||
"tree_fade_ancestors": "Display ancestors of the current status in faint text",
|
"tree_fade_ancestors": "Display ancestors of the current status in faint text",
|
||||||
"conversation_display_linear": "Linear-style",
|
"conversation_display_linear": "Linear-style",
|
||||||
|
"conversation_display_linear_quick": "Linear view",
|
||||||
"conversation_other_replies_button": "Show the \"other replies\" button",
|
"conversation_other_replies_button": "Show the \"other replies\" button",
|
||||||
"conversation_other_replies_button_below": "Below statuses",
|
"conversation_other_replies_button_below": "Below statuses",
|
||||||
"conversation_other_replies_button_inside": "Inside statuses",
|
"conversation_other_replies_button_inside": "Inside statuses",
|
||||||
@ -526,8 +528,10 @@
|
|||||||
"sensitive_by_default": "Mark posts as sensitive by default",
|
"sensitive_by_default": "Mark posts as sensitive by default",
|
||||||
"stop_gifs": "Pause animated images until you hover on them",
|
"stop_gifs": "Pause animated images until you hover on them",
|
||||||
"streaming": "Automatically show new posts when scrolled to the top",
|
"streaming": "Automatically show new posts when scrolled to the top",
|
||||||
|
"auto_update": "Show new posts automatically",
|
||||||
"user_mutes": "Users",
|
"user_mutes": "Users",
|
||||||
"useStreamingApi": "Receive posts and notifications real-time",
|
"useStreamingApi": "Receive posts and notifications real-time",
|
||||||
|
"use_websockets": "Use websockets (Realtime updates)",
|
||||||
"text": "Text",
|
"text": "Text",
|
||||||
"theme": "Theme",
|
"theme": "Theme",
|
||||||
"theme_help": "Use hex color codes (#rrggbb) to customize your color theme.",
|
"theme_help": "Use hex color codes (#rrggbb) to customize your color theme.",
|
||||||
@ -549,6 +553,7 @@
|
|||||||
"mention_link_display_full": "always as full names (e.g. {'@'}foo{'@'}example.org)",
|
"mention_link_display_full": "always as full names (e.g. {'@'}foo{'@'}example.org)",
|
||||||
"mention_link_use_tooltip": "Show user card when clicking mention links",
|
"mention_link_use_tooltip": "Show user card when clicking mention links",
|
||||||
"mention_link_show_avatar": "Show user avatar beside the link",
|
"mention_link_show_avatar": "Show user avatar beside the link",
|
||||||
|
"mention_link_show_avatar_quick": "Show user avatar next to mentions",
|
||||||
"mention_link_fade_domain": "Fade domains (e.g. {'@'}example.org in {'@'}foo{'@'}example.org)",
|
"mention_link_fade_domain": "Fade domains (e.g. {'@'}example.org in {'@'}foo{'@'}example.org)",
|
||||||
"mention_link_bolden_you": "Highlight mention of you when you are mentioned",
|
"mention_link_bolden_you": "Highlight mention of you when you are mentioned",
|
||||||
"user_popover_avatar_zoom": "Clicking on user avatar in popover zooms it instead of closing the popover",
|
"user_popover_avatar_zoom": "Clicking on user avatar in popover zooms it instead of closing the popover",
|
||||||
|
Loading…
Reference in New Issue
Block a user