From 1b6eee049700f6fbb0c2e43877ead3ef4cf3041b Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Wed, 2 Sep 2020 21:01:31 +0300
Subject: change chats to use custom makeFetcher
---
src/components/chat/chat.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/chat/chat.js b/src/components/chat/chat.js
index 9c4e5b05..2062643d 100644
--- a/src/components/chat/chat.js
+++ b/src/components/chat/chat.js
@@ -5,6 +5,7 @@ import ChatMessage from '../chat_message/chat_message.vue'
import PostStatusForm from '../post_status_form/post_status_form.vue'
import ChatTitle from '../chat_title/chat_title.vue'
import chatService from '../../services/chat_service/chat_service.js'
+import { makeFetcher } from '../../services/fetcher/fetcher.js'
import { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContainerHeight } from './chat_layout_utils.js'
const BOTTOMED_OUT_OFFSET = 10
@@ -246,7 +247,7 @@ const Chat = {
const fetchOlderMessages = !!maxId
const sinceId = fetchLatest && chatMessageService.lastMessage && chatMessageService.lastMessage.id
- this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })
+ return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })
.then((messages) => {
// Clear the current chat in case we're recovering from a ws connection loss.
if (isFirstFetch) {
@@ -287,7 +288,7 @@ const Chat = {
},
doStartFetching () {
this.$store.dispatch('startFetchingCurrentChat', {
- fetcher: () => setInterval(() => this.fetchChat({ fetchLatest: true }), 5000)
+ fetcher: () => makeFetcher(() => this.fetchChat({ fetchLatest: true }), 5000)
})
this.fetchChat({ isFirstFetch: true })
},
--
cgit v1.2.3-70-g09d2
From 3fb35e8123d3a8cd151571b315b7ec4d7e0875c7 Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Fri, 4 Sep 2020 11:19:53 +0300
Subject: rename to promiseInterval
---
src/components/chat/chat.js | 4 ++--
src/modules/api.js | 2 +-
src/modules/chats.js | 4 ++--
src/services/fetcher/fetcher.js | 28 ----------------------
.../follow_request_fetcher.service.js | 4 ++--
.../notifications_fetcher.service.js | 4 ++--
src/services/promise_interval/promise_interval.js | 28 ++++++++++++++++++++++
.../timeline_fetcher/timeline_fetcher.service.js | 4 ++--
8 files changed, 39 insertions(+), 39 deletions(-)
delete mode 100644 src/services/fetcher/fetcher.js
create mode 100644 src/services/promise_interval/promise_interval.js
(limited to 'src/components')
diff --git a/src/components/chat/chat.js b/src/components/chat/chat.js
index 2062643d..15123885 100644
--- a/src/components/chat/chat.js
+++ b/src/components/chat/chat.js
@@ -5,7 +5,7 @@ import ChatMessage from '../chat_message/chat_message.vue'
import PostStatusForm from '../post_status_form/post_status_form.vue'
import ChatTitle from '../chat_title/chat_title.vue'
import chatService from '../../services/chat_service/chat_service.js'
-import { makeFetcher } from '../../services/fetcher/fetcher.js'
+import { promiseInterval } from '../../services/promise_interval/promise_interval.js'
import { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContainerHeight } from './chat_layout_utils.js'
const BOTTOMED_OUT_OFFSET = 10
@@ -288,7 +288,7 @@ const Chat = {
},
doStartFetching () {
this.$store.dispatch('startFetchingCurrentChat', {
- fetcher: () => makeFetcher(() => this.fetchChat({ fetchLatest: true }), 5000)
+ fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)
})
this.fetchChat({ isFirstFetch: true })
},
diff --git a/src/modules/api.js b/src/modules/api.js
index 7ddd8dde..73511442 100644
--- a/src/modules/api.js
+++ b/src/modules/api.js
@@ -20,7 +20,7 @@ const api = {
state.fetchers[fetcherName] = fetcher
},
removeFetcher (state, { fetcherName, fetcher }) {
- state.fetchers[fetcherName]()
+ state.fetchers[fetcherName].stop()
delete state.fetchers[fetcherName]
},
setWsToken (state, token) {
diff --git a/src/modules/chats.js b/src/modules/chats.js
index 45e4bdcc..60273a44 100644
--- a/src/modules/chats.js
+++ b/src/modules/chats.js
@@ -3,7 +3,7 @@ import { find, omitBy, orderBy, sumBy } from 'lodash'
import chatService from '../services/chat_service/chat_service.js'
import { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'
import { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'
-import { makeFetcher } from '../services/fetcher/fetcher.js'
+import { promiseInterval } from '../services/promise_interval/promise_interval.js'
const emptyChatList = () => ({
data: [],
@@ -46,7 +46,7 @@ const chats = {
const fetcher = () => dispatch('fetchChats', { latest: true })
fetcher()
commit('setChatListFetcher', {
- fetcher: () => makeFetcher(fetcher, 5000)
+ fetcher: () => promiseInterval(fetcher, 5000)
})
},
stopFetchingChats ({ commit }) {
diff --git a/src/services/fetcher/fetcher.js b/src/services/fetcher/fetcher.js
deleted file mode 100644
index aae1c2cc..00000000
--- a/src/services/fetcher/fetcher.js
+++ /dev/null
@@ -1,28 +0,0 @@
-
-// makeFetcher - replacement for setInterval for fetching, starts counting
-// the interval only after a request is done instead of immediately.
-// - promiseCall is a function that returns a promise, it's called the first
-// time after the first interval.
-// - interval is the interval delay in ms.
-
-export const makeFetcher = (promiseCall, interval) => {
- let stopped = false
- let timeout = null
- let func = () => {}
-
- func = () => {
- promiseCall().finally(() => {
- if (stopped) return
- timeout = window.setTimeout(func, interval)
- })
- }
-
- const stopFetcher = () => {
- stopped = true
- window.clearTimeout(timeout)
- }
-
- timeout = window.setTimeout(func, interval)
-
- return stopFetcher
-}
diff --git a/src/services/follow_request_fetcher/follow_request_fetcher.service.js b/src/services/follow_request_fetcher/follow_request_fetcher.service.js
index bec434aa..74af4081 100644
--- a/src/services/follow_request_fetcher/follow_request_fetcher.service.js
+++ b/src/services/follow_request_fetcher/follow_request_fetcher.service.js
@@ -1,5 +1,5 @@
import apiService from '../api/api.service.js'
-import { makeFetcher } from '../fetcher/fetcher.js'
+import { promiseInterval } from '../promise_interval/promise_interval.js'
const fetchAndUpdate = ({ store, credentials }) => {
return apiService.fetchFollowRequests({ credentials })
@@ -13,7 +13,7 @@ const fetchAndUpdate = ({ store, credentials }) => {
const startFetching = ({ credentials, store }) => {
const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })
boundFetchAndUpdate()
- return makeFetcher(boundFetchAndUpdate, 10000)
+ return promiseInterval(boundFetchAndUpdate, 10000)
}
const followRequestFetcher = {
diff --git a/src/services/notifications_fetcher/notifications_fetcher.service.js b/src/services/notifications_fetcher/notifications_fetcher.service.js
index 90988fc4..c908b644 100644
--- a/src/services/notifications_fetcher/notifications_fetcher.service.js
+++ b/src/services/notifications_fetcher/notifications_fetcher.service.js
@@ -1,5 +1,5 @@
import apiService from '../api/api.service.js'
-import { makeFetcher } from '../fetcher/fetcher.js'
+import { promiseInterval } from '../promise_interval/promise_interval.js'
const update = ({ store, notifications, older }) => {
store.dispatch('setNotificationsError', { value: false })
@@ -61,7 +61,7 @@ const startFetching = ({ credentials, store }) => {
setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)
const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })
boundFetchAndUpdate()
- return makeFetcher(boundFetchAndUpdate, 10000)
+ return promiseInterval(boundFetchAndUpdate, 10000)
}
const notificationsFetcher = {
diff --git a/src/services/promise_interval/promise_interval.js b/src/services/promise_interval/promise_interval.js
new file mode 100644
index 00000000..ee46a236
--- /dev/null
+++ b/src/services/promise_interval/promise_interval.js
@@ -0,0 +1,28 @@
+
+// promiseInterval - replacement for setInterval for promises, starts counting
+// the interval only after a promise is done instead of immediately.
+// - promiseCall is a function that returns a promise, it's called the first
+// time after the first interval.
+// - interval is the interval delay in ms.
+
+export const promiseInterval = (promiseCall, interval) => {
+ let stopped = false
+ let timeout = null
+ let func = () => {}
+
+ func = () => {
+ promiseCall().finally(() => {
+ if (stopped) return
+ timeout = window.setTimeout(func, interval)
+ })
+ }
+
+ const stopFetcher = () => {
+ stopped = true
+ window.clearTimeout(timeout)
+ }
+
+ timeout = window.setTimeout(func, interval)
+
+ return { stop: stopFetcher }
+}
diff --git a/src/services/timeline_fetcher/timeline_fetcher.service.js b/src/services/timeline_fetcher/timeline_fetcher.service.js
index 9f585f68..72ea4890 100644
--- a/src/services/timeline_fetcher/timeline_fetcher.service.js
+++ b/src/services/timeline_fetcher/timeline_fetcher.service.js
@@ -1,7 +1,7 @@
import { camelCase } from 'lodash'
import apiService from '../api/api.service.js'
-import { makeFetcher } from '../fetcher/fetcher.js'
+import { promiseInterval } from '../promise_interval/promise_interval.js'
const update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {
const ccTimeline = camelCase(timeline)
@@ -74,7 +74,7 @@ const startFetching = ({ timeline = 'friends', credentials, store, userId = fals
fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })
const boundFetchAndUpdate = () =>
fetchAndUpdate({ timeline, credentials, store, userId, tag })
- return makeFetcher(boundFetchAndUpdate, 10000)
+ return promiseInterval(boundFetchAndUpdate, 10000)
}
const timelineFetcher = {
fetchAndUpdate,
--
cgit v1.2.3-70-g09d2
From 40ca0b394ea066dea95c672eb0a42a35c9e65317 Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Sun, 6 Sep 2020 15:28:09 +0300
Subject: add basic deletes support that works with masto WS
---
src/components/status/status.js | 2 +-
src/components/status/status.scss | 11 +++++++++++
src/components/status/status.vue | 26 ++++++++++++++++++++++++++
src/components/user_avatar/user_avatar.vue | 11 +++++++++++
src/i18n/en.json | 3 ++-
src/modules/api.js | 2 ++
src/modules/statuses.js | 4 ++++
7 files changed, 57 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/status/status.js b/src/components/status/status.js
index d263da68..5a6110c1 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -157,7 +157,7 @@ const Status = {
return this.mergedConfig.hideFilteredStatuses
},
hideStatus () {
- return this.deleted || (this.muted && this.hideFilteredStatuses)
+ return (this.muted && this.hideFilteredStatuses)
},
isFocused () {
// retweet or root of an expanded conversation
diff --git a/src/components/status/status.scss b/src/components/status/status.scss
index 8d292d3f..02ce3ffa 100644
--- a/src/components/status/status.scss
+++ b/src/components/status/status.scss
@@ -25,6 +25,17 @@ $status-margin: 0.75em;
--icon: var(--selectedPostIcon, $fallback--icon);
}
+ .deleted {
+ padding: $status-margin;
+ color: $fallback--faint;
+ color: var(--faint, $fallback--faint);
+ display: flex;
+ .deleted-text {
+ margin: 0.5em 0;
+ align-items: center;
+ }
+ }
+
.status-container {
display: flex;
padding: $status-margin;
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 282ad37d..d7dfc0ab 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -95,6 +95,7 @@
+
+
+
+
+
+
+ {{ $t('status.status_deleted') }}
+
+
+
+
+
+
-
-
-
+
Date: Tue, 8 Sep 2020 06:31:02 +0000
Subject: Apply 1 suggestion(s) to 1 file(s)
---
src/components/status/status.scss | 1 +
1 file changed, 1 insertion(+)
(limited to 'src/components')
diff --git a/src/components/status/status.scss b/src/components/status/status.scss
index 02ce3ffa..2717c0ba 100644
--- a/src/components/status/status.scss
+++ b/src/components/status/status.scss
@@ -30,6 +30,7 @@ $status-margin: 0.75em;
color: $fallback--faint;
color: var(--faint, $fallback--faint);
display: flex;
+
.deleted-text {
margin: 0.5em 0;
align-items: center;
--
cgit v1.2.3-70-g09d2
From fa9176651952468ee996abe0e67d62d9a72d5a69 Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Tue, 8 Sep 2020 09:32:43 +0300
Subject: rename to gravestone
---
src/components/status/status.scss | 2 +-
src/components/status/status.vue | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/status/status.scss b/src/components/status/status.scss
index 2717c0ba..bd23157f 100644
--- a/src/components/status/status.scss
+++ b/src/components/status/status.scss
@@ -25,7 +25,7 @@ $status-margin: 0.75em;
--icon: var(--selectedPostIcon, $fallback--icon);
}
- .deleted {
+ .gravestone {
padding: $status-margin;
color: $fallback--faint;
color: var(--faint, $fallback--faint);
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index cb81b14e..75142250 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -349,7 +349,7 @@
@@ -359,6 +359,7 @@
{{ $t('status.status_deleted') }}
Date: Mon, 7 Sep 2020 14:27:37 +0300
Subject: added import/export mutes
---
local.json | 4 ----
.../settings_modal/tabs/data_import_export_tab.js | 28 ++++++++++++++++------
.../settings_modal/tabs/data_import_export_tab.vue | 17 +++++++++++++
src/i18n/en.json | 6 +++++
src/services/api/api.service.js | 13 ++++++++++
5 files changed, 57 insertions(+), 11 deletions(-)
delete mode 100644 local.json
(limited to 'src/components')
diff --git a/local.json b/local.json
deleted file mode 100644
index e9f4df0b..00000000
--- a/local.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "target": "https://aqueous-sea-10253.herokuapp.com/",
- "staticConfigPreference": false
-}
diff --git a/src/components/settings_modal/tabs/data_import_export_tab.js b/src/components/settings_modal/tabs/data_import_export_tab.js
index 168f89e1..f4b736d2 100644
--- a/src/components/settings_modal/tabs/data_import_export_tab.js
+++ b/src/components/settings_modal/tabs/data_import_export_tab.js
@@ -1,6 +1,7 @@
import Importer from 'src/components/importer/importer.vue'
import Exporter from 'src/components/exporter/exporter.vue'
import Checkbox from 'src/components/checkbox/checkbox.vue'
+import { mapState } from 'vuex'
const DataImportExportTab = {
data () {
@@ -18,21 +19,26 @@ const DataImportExportTab = {
Checkbox
},
computed: {
- user () {
- return this.$store.state.users.currentUser
- }
+ ...mapState({
+ backendInteractor: (state) => state.api.backendInteractor,
+ user: (state) => state.users.currentUser
+ })
},
methods: {
getFollowsContent () {
- return this.$store.state.api.backendInteractor.exportFriends({ id: this.$store.state.users.currentUser.id })
+ return this.backendInteractor.exportFriends({ id: this.user.id })
.then(this.generateExportableUsersContent)
},
getBlocksContent () {
- return this.$store.state.api.backendInteractor.fetchBlocks()
+ return this.backendInteractor.fetchBlocks()
+ .then(this.generateExportableUsersContent)
+ },
+ getMutesContent () {
+ return this.backendInteractor.fetchMutes()
.then(this.generateExportableUsersContent)
},
importFollows (file) {
- return this.$store.state.api.backendInteractor.importFollows({ file })
+ return this.backendInteractor.importFollows({ file })
.then((status) => {
if (!status) {
throw new Error('failed')
@@ -40,7 +46,15 @@ const DataImportExportTab = {
})
},
importBlocks (file) {
- return this.$store.state.api.backendInteractor.importBlocks({ file })
+ return this.backendInteractor.importBlocks({ file })
+ .then((status) => {
+ if (!status) {
+ throw new Error('failed')
+ }
+ })
+ },
+ importMutes (file) {
+ return this.backendInteractor.importMutes({ file })
.then((status) => {
if (!status) {
throw new Error('failed')
diff --git a/src/components/settings_modal/tabs/data_import_export_tab.vue b/src/components/settings_modal/tabs/data_import_export_tab.vue
index b5d0f5ed..a406077d 100644
--- a/src/components/settings_modal/tabs/data_import_export_tab.vue
+++ b/src/components/settings_modal/tabs/data_import_export_tab.vue
@@ -36,6 +36,23 @@
:export-button-label="$t('settings.block_export_button')"
/>
+
+
{{ $t('settings.mute_import') }}
+
{{ $t('settings.import_mutes_from_a_csv_file') }}
+
+
+
+
{{ $t('settings.mute_export') }}
+
+
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 8540f551..cf0a7e7c 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -276,6 +276,12 @@
"block_import": "Block import",
"block_import_error": "Error importing blocks",
"blocks_imported": "Blocks imported! Processing them will take a while.",
+ "mute_export": "Mute export",
+ "mute_export_button": "Export your mutes to a csv file",
+ "mute_import": "Mute import",
+ "mute_import_error": "Error importing mutes",
+ "mutes_imported": "Mutes imported! Processing them will take a while.",
+ "import_mutes_from_a_csv_file": "Import mutes from a csv file",
"blocks_tab": "Blocks",
"bot": "This is a bot account",
"btnRadius": "Buttons",
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index da519001..34f86f93 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -3,6 +3,7 @@ import { parseStatus, parseUser, parseNotification, parseAttachment, parseChat,
import { RegistrationError, StatusCodeError } from '../errors/errors'
/* eslint-env browser */
+const MUTES_IMPORT_URL = '/api/pleroma/mutes_import'
const BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'
const FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'
const DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'
@@ -710,6 +711,17 @@ const setMediaDescription = ({ id, description, credentials }) => {
}).then((data) => parseAttachment(data))
}
+const importMutes = ({ file, credentials }) => {
+ const formData = new FormData()
+ formData.append('list', file)
+ return fetch(MUTES_IMPORT_URL, {
+ body: formData,
+ method: 'POST',
+ headers: authHeaders(credentials)
+ })
+ .then((response) => response.ok)
+}
+
const importBlocks = ({ file, credentials }) => {
const formData = new FormData()
formData.append('list', file)
@@ -1280,6 +1292,7 @@ const apiService = {
getCaptcha,
updateProfileImages,
updateProfile,
+ importMutes,
importBlocks,
importFollows,
deleteAccount,
--
cgit v1.2.3-70-g09d2
From 70a5619496db1620fcc6d0127449ffb498a3dae4 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Fri, 18 Sep 2020 11:07:38 +0200
Subject: [fix] case in/sensitive emoji search
---
src/components/emoji_picker/emoji_picker.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 0f397b59..5c09f6ca 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -8,7 +8,10 @@ const LOAD_EMOJI_BY = 60
const LOAD_EMOJI_MARGIN = 64
const filterByKeyword = (list, keyword = '') => {
- return list.filter(x => x.displayText.includes(keyword))
+ const keywordLowercase = keyword.toLowerCase()
+ return list.filter(emoji =>
+ emoji.displayText.toLowerCase().includes(keywordLowercase)
+ )
}
const EmojiPicker = {
--
cgit v1.2.3-70-g09d2
From f9977dbb3c9b316521b6be40ddd1a34411f2d835 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Sat, 19 Sep 2020 21:28:03 +0200
Subject: fix excessive underline in sidebar
---
src/App.scss | 1 +
src/components/nav_panel/nav_panel.vue | 10 +++++-----
src/components/timeline_menu/timeline_menu.vue | 6 +-----
3 files changed, 7 insertions(+), 10 deletions(-)
(limited to 'src/components')
diff --git a/src/App.scss b/src/App.scss
index e2e2d079..8b1bbd2d 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -809,6 +809,7 @@ nav {
.button-icon {
font-size: 1.2em;
+ margin-right: 0.5em;
}
@keyframes shakeError {
diff --git a/src/components/nav_panel/nav_panel.vue b/src/components/nav_panel/nav_panel.vue
index f8459fd1..080e547f 100644
--- a/src/components/nav_panel/nav_panel.vue
+++ b/src/components/nav_panel/nav_panel.vue
@@ -7,12 +7,12 @@
:to="{ name: timelinesRoute }"
:class="onTimelineRoute && 'router-link-active'"
>
- {{ $t("nav.timelines") }}
+ {{ $t("nav.timelines") }}
- {{ $t("nav.interactions") }}
+ {{ $t("nav.interactions") }}
@@ -23,12 +23,12 @@
>
{{ unreadChatCount }}
- {{ $t("nav.chats") }}
+ {{ $t("nav.chats") }}
- {{ $t("nav.friend_requests") }}
+ {{ $t("nav.friend_requests") }}
- {{ $t("nav.about") }}
+ {{ $t("nav.about") }}
diff --git a/src/components/timeline_menu/timeline_menu.vue b/src/components/timeline_menu/timeline_menu.vue
index be512d60..3c029093 100644
--- a/src/components/timeline_menu/timeline_menu.vue
+++ b/src/components/timeline_menu/timeline_menu.vue
@@ -64,7 +64,7 @@
.timeline-menu-popover-wrap {
overflow: hidden;
// Match panel heading padding to line up menu with bottom of heading
- margin-top: 0.6rem;
+ margin-top: 0.6rem 0.65em;
padding: 0 15px 15px 15px;
}
.timeline-menu-popover {
@@ -138,10 +138,6 @@
&:last-child {
border: none;
}
-
- i {
- margin: 0 0.5em;
- }
}
a {
--
cgit v1.2.3-70-g09d2
From fee654f1eee276a1d30c8fcb2699e567fc281967 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Mon, 21 Sep 2020 17:29:36 +0200
Subject: feat/reorder-emojis-by-position-of-keyword
---
src/components/emoji_picker/emoji_picker.js | 13 ++++++++++---
src/components/react_button/react_button.js | 11 ++++++++---
2 files changed, 18 insertions(+), 6 deletions(-)
(limited to 'src/components')
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 5c09f6ca..713ecd8b 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -8,10 +8,17 @@ const LOAD_EMOJI_BY = 60
const LOAD_EMOJI_MARGIN = 64
const filterByKeyword = (list, keyword = '') => {
+ if (keyword === '') return list
+
const keywordLowercase = keyword.toLowerCase()
- return list.filter(emoji =>
- emoji.displayText.toLowerCase().includes(keywordLowercase)
- )
+ const orderedEmojiList = []
+ for (const emoji of list) {
+ const indexOfKeyword = emoji.displayText.toLowerCase().indexOf( keywordLowercase )
+ if ( indexOfKeyword > -1 ) {
+ orderedEmojiList.splice(indexOfKeyword, 0, emoji)
+ }
+ }
+ return orderedEmojiList
}
const EmojiPicker = {
diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js
index abcf0455..473a2506 100644
--- a/src/components/react_button/react_button.js
+++ b/src/components/react_button/react_button.js
@@ -29,9 +29,14 @@ const ReactButton = {
emojis () {
if (this.filterWord !== '') {
const filterWordLowercase = this.filterWord.toLowerCase()
- return this.$store.state.instance.emoji.filter(emoji =>
- emoji.displayText.toLowerCase().includes(filterWordLowercase)
- )
+ const orderedEmojiList = []
+ for (const emoji of this.$store.state.instance.emoji) {
+ const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf( filterWordLowercase )
+ if ( indexOfFilterWord > -1 ) {
+ orderedEmojiList.splice(indexOfFilterWord, 0, emoji)
+ }
+ }
+ return orderedEmojiList
}
return this.$store.state.instance.emoji || []
},
--
cgit v1.2.3-70-g09d2
From f1e1f20a8d89abf7920997c12d5c7b48cdb2d628 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Mon, 21 Sep 2020 17:42:17 +0200
Subject: fix 8x spaces inside this paren
---
src/components/emoji_picker/emoji_picker.js | 4 ++--
src/components/react_button/react_button.js | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
(limited to 'src/components')
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 713ecd8b..28ab0376 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -13,8 +13,8 @@ const filterByKeyword = (list, keyword = '') => {
const keywordLowercase = keyword.toLowerCase()
const orderedEmojiList = []
for (const emoji of list) {
- const indexOfKeyword = emoji.displayText.toLowerCase().indexOf( keywordLowercase )
- if ( indexOfKeyword > -1 ) {
+ const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)
+ if (indexOfKeyword > -1) {
orderedEmojiList.splice(indexOfKeyword, 0, emoji)
}
}
diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js
index 473a2506..28ce884a 100644
--- a/src/components/react_button/react_button.js
+++ b/src/components/react_button/react_button.js
@@ -31,8 +31,8 @@ const ReactButton = {
const filterWordLowercase = this.filterWord.toLowerCase()
const orderedEmojiList = []
for (const emoji of this.$store.state.instance.emoji) {
- const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf( filterWordLowercase )
- if ( indexOfFilterWord > -1 ) {
+ const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)
+ if (indexOfFilterWord > -1) {
orderedEmojiList.splice(indexOfFilterWord, 0, emoji)
}
}
--
cgit v1.2.3-70-g09d2
From cff202241b6eff8f6b381866e00a0392080d05a2 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Mon, 21 Sep 2020 18:10:55 +0200
Subject: improved algorithm, possibly speed too
---
src/components/emoji_picker/emoji_picker.js | 9 ++++++---
src/components/react_button/react_button.js | 9 ++++++---
2 files changed, 12 insertions(+), 6 deletions(-)
(limited to 'src/components')
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 28ab0376..29c559df 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -11,14 +11,17 @@ const filterByKeyword = (list, keyword = '') => {
if (keyword === '') return list
const keywordLowercase = keyword.toLowerCase()
- const orderedEmojiList = []
+ let orderedEmojiList = []
for (const emoji of list) {
const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)
if (indexOfKeyword > -1) {
- orderedEmojiList.splice(indexOfKeyword, 0, emoji)
+ if (!Array.isArray(orderedEmojiList[keywordLowercase])) {
+ orderedEmojiList[keywordLowercase] = []
+ }
+ orderedEmojiList[keywordLowercase].push(emoji)
}
}
- return orderedEmojiList
+ return orderedEmojiList.flat()
}
const EmojiPicker = {
diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js
index 28ce884a..16014405 100644
--- a/src/components/react_button/react_button.js
+++ b/src/components/react_button/react_button.js
@@ -29,14 +29,17 @@ const ReactButton = {
emojis () {
if (this.filterWord !== '') {
const filterWordLowercase = this.filterWord.toLowerCase()
- const orderedEmojiList = []
+ let orderedEmojiList = []
for (const emoji of this.$store.state.instance.emoji) {
const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)
if (indexOfFilterWord > -1) {
- orderedEmojiList.splice(indexOfFilterWord, 0, emoji)
+ if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {
+ orderedEmojiList[indexOfFilterWord] = []
+ }
+ orderedEmojiList[indexOfFilterWord].push(emoji)
}
}
- return orderedEmojiList
+ return orderedEmojiList.flat()
}
return this.$store.state.instance.emoji || []
},
--
cgit v1.2.3-70-g09d2
From bb59b8ee56f8c5c89720c9a42037a730caba4d11 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Mon, 21 Sep 2020 18:13:31 +0200
Subject: fixed copy-pasting leftovers
---
src/components/emoji_picker/emoji_picker.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'src/components')
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 29c559df..3ad80df3 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -15,10 +15,10 @@ const filterByKeyword = (list, keyword = '') => {
for (const emoji of list) {
const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)
if (indexOfKeyword > -1) {
- if (!Array.isArray(orderedEmojiList[keywordLowercase])) {
- orderedEmojiList[keywordLowercase] = []
+ if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {
+ orderedEmojiList[indexOfKeyword] = []
}
- orderedEmojiList[keywordLowercase].push(emoji)
+ orderedEmojiList[indexOfKeyword].push(emoji)
}
}
return orderedEmojiList.flat()
--
cgit v1.2.3-70-g09d2
From 3dacef944cf6980dc3a3c1843d5b3f94b851240a Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Thu, 24 Sep 2020 12:05:51 +0200
Subject: remove bio-table's max-width
---
src/components/user_profile/user_profile.vue | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue
index c7c67c0a..b26499b4 100644
--- a/src/components/user_profile/user_profile.vue
+++ b/src/components/user_profile/user_profile.vue
@@ -156,8 +156,7 @@
.user-profile-field {
display: flex;
- margin: 0.25em auto;
- max-width: 32em;
+ margin: 0.25em;
border: 1px solid var(--border, $fallback--border);
border-radius: $fallback--inputRadius;
border-radius: var(--inputRadius, $fallback--inputRadius);
--
cgit v1.2.3-70-g09d2
From f174f289a93e6bef1182a2face00bb809da49d18 Mon Sep 17 00:00:00 2001
From: Shpuld Shpludson
Date: Tue, 29 Sep 2020 10:18:37 +0000
Subject: Timeline virtual scrolling
---
CHANGELOG.md | 3 +
src/components/attachment/attachment.vue | 4 ++
src/components/conversation/conversation.js | 20 ++++++-
src/components/conversation/conversation.vue | 11 +++-
src/components/react_button/react_button.js | 5 +-
src/components/retweet_button/retweet_button.js | 5 +-
src/components/settings_modal/tabs/general_tab.vue | 5 ++
src/components/status/status.js | 31 ++++++++---
src/components/status/status.scss | 5 ++
src/components/status/status.vue | 7 ++-
src/components/status_content/status_content.vue | 2 +
src/components/still-image/still-image.js | 10 ++--
src/components/timeline/timeline.js | 64 +++++++++++++++++++++-
src/components/timeline/timeline.vue | 6 +-
.../video_attachment/video_attachment.js | 47 +++++++++++-----
.../video_attachment/video_attachment.vue | 3 +-
src/i18n/en.json | 1 +
src/modules/config.js | 3 +-
src/modules/instance.js | 1 +
src/modules/statuses.js | 6 ++
src/services/api/api.service.js | 2 +
21 files changed, 203 insertions(+), 38 deletions(-)
(limited to 'src/components')
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 18dafa8e..eebc7115 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
+### Added
+- New option to optimize timeline rendering to make the site more responsive (enabled by default)
+
## [Unreleased patch]
### Changed
diff --git a/src/components/attachment/attachment.vue b/src/components/attachment/attachment.vue
index 63e0ceba..7fabc963 100644
--- a/src/components/attachment/attachment.vue
+++ b/src/components/attachment/attachment.vue
@@ -80,6 +80,8 @@
class="video"
:attachment="attachment"
:controls="allowPlay"
+ @play="$emit('play')"
+ @pause="$emit('pause')"
/>
@@ -18,6 +20,7 @@
+
@@ -53,8 +60,8 @@
.conversation-status {
border-color: $fallback--border;
border-color: var(--border, $fallback--border);
- border-left: 4px solid $fallback--cRed;
- border-left: 4px solid var(--cRed, $fallback--cRed);
+ border-left-color: $fallback--cRed;
+ border-left-color: var(--cRed, $fallback--cRed);
}
.conversation-status:last-child {
diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js
index abcf0455..11627e9c 100644
--- a/src/components/react_button/react_button.js
+++ b/src/components/react_button/react_button.js
@@ -1,5 +1,4 @@
import Popover from '../popover/popover.vue'
-import { mapGetters } from 'vuex'
const ReactButton = {
props: ['status'],
@@ -35,7 +34,9 @@ const ReactButton = {
}
return this.$store.state.instance.emoji || []
},
- ...mapGetters(['mergedConfig'])
+ mergedConfig () {
+ return this.$store.getters.mergedConfig
+ }
}
}
diff --git a/src/components/retweet_button/retweet_button.js b/src/components/retweet_button/retweet_button.js
index d9a0f92e..5a41f22d 100644
--- a/src/components/retweet_button/retweet_button.js
+++ b/src/components/retweet_button/retweet_button.js
@@ -1,4 +1,3 @@
-import { mapGetters } from 'vuex'
const RetweetButton = {
props: ['status', 'loggedIn', 'visibility'],
@@ -28,7 +27,9 @@ const RetweetButton = {
'animate-spin': this.animated
}
},
- ...mapGetters(['mergedConfig'])
+ mergedConfig () {
+ return this.$store.getters.mergedConfig
+ }
}
}
diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue
index 7f06d0bd..13482de7 100644
--- a/src/components/settings_modal/tabs/general_tab.vue
+++ b/src/components/settings_modal/tabs/general_tab.vue
@@ -58,6 +58,11 @@
{{ $t('settings.emoji_reactions_on_timeline') }}
+
+
+ {{ $t('settings.virtual_scrolling') }}
+
+
diff --git a/src/components/status/status.js b/src/components/status/status.js
index d263da68..cd6e2f72 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -15,7 +15,6 @@ import generateProfileLink from 'src/services/user_profile_link_generator/user_p
import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'
import { muteWordHits } from '../../services/status_parser/status_parser.js'
import { unescape, uniqBy } from 'lodash'
-import { mapGetters, mapState } from 'vuex'
const Status = {
name: 'Status',
@@ -54,6 +53,8 @@ const Status = {
replying: false,
unmuted: false,
userExpanded: false,
+ mediaPlaying: [],
+ suspendable: true,
error: null
}
},
@@ -157,7 +158,7 @@ const Status = {
return this.mergedConfig.hideFilteredStatuses
},
hideStatus () {
- return this.deleted || (this.muted && this.hideFilteredStatuses)
+ return this.deleted || (this.muted && this.hideFilteredStatuses) || this.virtualHidden
},
isFocused () {
// retweet or root of an expanded conversation
@@ -207,11 +208,18 @@ const Status = {
hidePostStats () {
return this.mergedConfig.hidePostStats
},
- ...mapGetters(['mergedConfig']),
- ...mapState({
- betterShadow: state => state.interface.browserSupport.cssFilter,
- currentUser: state => state.users.currentUser
- })
+ currentUser () {
+ return this.$store.state.users.currentUser
+ },
+ betterShadow () {
+ return this.$store.state.interface.browserSupport.cssFilter
+ },
+ mergedConfig () {
+ return this.$store.getters.mergedConfig
+ },
+ isSuspendable () {
+ return !this.replying && this.mediaPlaying.length === 0
+ }
},
methods: {
visibilityIcon (visibility) {
@@ -251,6 +259,12 @@ const Status = {
},
generateUserProfileLink (id, name) {
return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)
+ },
+ addMediaPlaying (id) {
+ this.mediaPlaying.push(id)
+ },
+ removeMediaPlaying (id) {
+ this.mediaPlaying = this.mediaPlaying.filter(mediaId => mediaId !== id)
}
},
watch: {
@@ -280,6 +294,9 @@ const Status = {
if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {
this.$store.dispatch('fetchFavs', this.status.id)
}
+ },
+ 'isSuspendable': function (val) {
+ this.suspendable = val
}
},
filters: {
diff --git a/src/components/status/status.scss b/src/components/status/status.scss
index 8d292d3f..c92d870b 100644
--- a/src/components/status/status.scss
+++ b/src/components/status/status.scss
@@ -25,6 +25,11 @@ $status-margin: 0.75em;
--icon: var(--selectedPostIcon, $fallback--icon);
}
+ &.-conversation {
+ border-left-width: 4px;
+ border-left-style: solid;
+ }
+
.status-container {
display: flex;
padding: $status-margin;
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 282ad37d..aa67e433 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -16,7 +16,7 @@
/>
-
+
+
@@ -354,6 +357,7 @@
@onSuccess="clearError"
/>
+
+
diff --git a/src/components/status_content/status_content.vue b/src/components/status_content/status_content.vue
index 76fe3278..f7fb5ee2 100644
--- a/src/components/status_content/status_content.vue
+++ b/src/components/status_content/status_content.vue
@@ -107,6 +107,8 @@
:attachment="attachment"
:allow-play="true"
:set-media="setMedia()"
+ @play="$emit('mediaplay', attachment.id)"
+ @pause="$emit('mediapause', attachment.id)"
/>
_.id)
+ },
+ virtualScrollingEnabled () {
+ return this.$store.getters.mergedConfig.virtualScrolling
}
},
created () {
@@ -85,7 +96,7 @@ const Timeline = {
const credentials = store.state.users.currentUser.credentials
const showImmediately = this.timeline.visibleStatuses.length === 0
- window.addEventListener('scroll', this.scrollLoad)
+ window.addEventListener('scroll', this.handleScroll)
if (store.state.api.fetchers[this.timelineName]) { return false }
@@ -104,9 +115,10 @@ const Timeline = {
this.unfocused = document.hidden
}
window.addEventListener('keydown', this.handleShortKey)
+ setTimeout(this.determineVisibleStatuses, 250)
},
destroyed () {
- window.removeEventListener('scroll', this.scrollLoad)
+ window.removeEventListener('scroll', this.handleScroll)
window.removeEventListener('keydown', this.handleShortKey)
if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)
this.$store.commit('setLoading', { timeline: this.timelineName, value: false })
@@ -146,6 +158,48 @@ const Timeline = {
}
})
}, 1000, this),
+ determineVisibleStatuses () {
+ if (!this.$refs.timeline) return
+ if (!this.virtualScrollingEnabled) return
+
+ const statuses = this.$refs.timeline.children
+ const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))
+
+ if (statuses.length === 0) return
+
+ const height = Math.max(document.body.offsetHeight, window.pageYOffset)
+
+ const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)
+
+ // Start from approximating the index of some visible status by using the
+ // the center of the screen on the timeline.
+ let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))
+ let err = statuses[approxIndex].getBoundingClientRect().y
+
+ // if we have a previous scroll index that can be used, test if it's
+ // closer than the previous approximation, use it if so
+
+ const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y
+ if (Math.abs(err) > virtualScrollIndexY) {
+ approxIndex = cappedScrollIndex
+ err = virtualScrollIndexY
+ }
+
+ // if the status is too far from viewport, check the next/previous ones if
+ // they happen to be better
+ while (err < -20 && approxIndex < statuses.length - 1) {
+ err += statuses[approxIndex].offsetHeight
+ approxIndex++
+ }
+ while (err > window.innerHeight + 100 && approxIndex > 0) {
+ approxIndex--
+ err -= statuses[approxIndex].offsetHeight
+ }
+
+ // this status is now the center point for virtual scrolling and visible
+ // statuses will be nearby statuses before and after it
+ this.virtualScrollIndex = approxIndex
+ },
scrollLoad (e) {
const bodyBRect = document.body.getBoundingClientRect()
const height = Math.max(bodyBRect.height, -(bodyBRect.y))
@@ -155,6 +209,10 @@ const Timeline = {
this.fetchOlderStatuses()
}
},
+ handleScroll: throttle(function (e) {
+ this.determineVisibleStatuses()
+ this.scrollLoad(e)
+ }, 200),
handleVisibilityChange () {
this.unfocused = document.hidden
}
diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue
index 2ff933e9..c1e2f44b 100644
--- a/src/components/timeline/timeline.vue
+++ b/src/components/timeline/timeline.vue
@@ -32,7 +32,10 @@
-
+
diff --git a/src/components/video_attachment/video_attachment.js b/src/components/video_attachment/video_attachment.js
index f0ca7e89..107b8985 100644
--- a/src/components/video_attachment/video_attachment.js
+++ b/src/components/video_attachment/video_attachment.js
@@ -3,27 +3,48 @@ const VideoAttachment = {
props: ['attachment', 'controls'],
data () {
return {
- loopVideo: this.$store.getters.mergedConfig.loopVideo
+ blocksSuspend: false,
+ // Start from true because removing "loop" property seems buggy in Vue
+ hasAudio: true
+ }
+ },
+ computed: {
+ loopVideo () {
+ if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {
+ return !this.hasAudio
+ }
+ return this.$store.getters.mergedConfig.loopVideo
}
},
methods: {
- onVideoDataLoad (e) {
+ onPlaying (e) {
+ this.setHasAudio(e)
+ if (this.loopVideo) {
+ this.$emit('play', { looping: true })
+ return
+ }
+ this.$emit('play')
+ },
+ onPaused (e) {
+ this.$emit('pause')
+ },
+ setHasAudio (e) {
const target = e.srcElement || e.target
+ // If hasAudio is false, we've already marked this video to not have audio,
+ // a video can't gain audio out of nowhere so don't bother checking again.
+ if (!this.hasAudio) return
if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {
// non-zero if video has audio track
- if (target.webkitAudioDecodedByteCount > 0) {
- this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly
- }
- } else if (typeof target.mozHasAudio !== 'undefined') {
+ if (target.webkitAudioDecodedByteCount > 0) return
+ }
+ if (typeof target.mozHasAudio !== 'undefined') {
// true if video has audio track
- if (target.mozHasAudio) {
- this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly
- }
- } else if (typeof target.audioTracks !== 'undefined') {
- if (target.audioTracks.length > 0) {
- this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly
- }
+ if (target.mozHasAudio) return
+ }
+ if (typeof target.audioTracks !== 'undefined') {
+ if (target.audioTracks.length > 0) return
}
+ this.hasAudio = false
}
}
}
diff --git a/src/components/video_attachment/video_attachment.vue b/src/components/video_attachment/video_attachment.vue
index 1ffed4e0..a4bf01e8 100644
--- a/src/components/video_attachment/video_attachment.vue
+++ b/src/components/video_attachment/video_attachment.vue
@@ -7,7 +7,8 @@
:alt="attachment.description"
:title="attachment.description"
playsinline
- @loadeddata="onVideoDataLoad"
+ @playing="onPlaying"
+ @pause="onPaused"
/>
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 8540f551..8d831e3d 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -430,6 +430,7 @@
"false": "no",
"true": "yes"
},
+ "virtual_scrolling": "Optimize timeline rendering",
"fun": "Fun",
"greentext": "Meme arrows",
"notifications": "Notifications",
diff --git a/src/modules/config.js b/src/modules/config.js
index 409d77a4..444b8ec7 100644
--- a/src/modules/config.js
+++ b/src/modules/config.js
@@ -65,7 +65,8 @@ export const defaultState = {
useContainFit: false,
greentext: undefined, // instance default
hidePostStats: undefined, // instance default
- hideUserStats: undefined // instance default
+ hideUserStats: undefined, // instance default
+ virtualScrolling: undefined // instance default
}
// caching the instance default properties
diff --git a/src/modules/instance.js b/src/modules/instance.js
index 3fe3bbf3..b3cbffc6 100644
--- a/src/modules/instance.js
+++ b/src/modules/instance.js
@@ -41,6 +41,7 @@ const defaultState = {
sidebarRight: false,
subjectLineBehavior: 'email',
theme: 'pleroma-dark',
+ virtualScrolling: true,
// Nasty stuff
customEmoji: [],
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index e108b2a7..155cc4b9 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -568,6 +568,9 @@ export const mutations = {
updateStatusWithPoll (state, { id, poll }) {
const status = state.allStatusesObject[id]
status.poll = poll
+ },
+ setVirtualHeight (state, { statusId, height }) {
+ state.allStatusesObject[statusId].virtualHeight = height
}
}
@@ -753,6 +756,9 @@ const statuses = {
store.commit('addNewStatuses', { statuses: data.statuses })
return data
})
+ },
+ setVirtualHeight ({ commit }, { statusId, height }) {
+ commit('setVirtualHeight', { statusId, height })
}
},
mutations
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index da519001..d1842e17 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -539,8 +539,10 @@ const fetchTimeline = ({
const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')
url += `?${queryString}`
+
let status = ''
let statusText = ''
+
let pagination = {}
return fetch(url, { headers: authHeaders(credentials) })
.then((data) => {
--
cgit v1.2.3-70-g09d2
From 1675f1a133934956a39ca4ade99b809789bb84a2 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Tue, 29 Sep 2020 13:13:42 +0200
Subject: scoped back margin-right on icons
---
src/App.scss | 1 -
src/components/nav_panel/nav_panel.vue | 4 ++++
src/components/timeline_menu/timeline_menu.vue | 4 ++++
3 files changed, 8 insertions(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/App.scss b/src/App.scss
index 8b1bbd2d..e2e2d079 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -809,7 +809,6 @@ nav {
.button-icon {
font-size: 1.2em;
- margin-right: 0.5em;
}
@keyframes shakeError {
diff --git a/src/components/nav_panel/nav_panel.vue b/src/components/nav_panel/nav_panel.vue
index 080e547f..4f944c95 100644
--- a/src/components/nav_panel/nav_panel.vue
+++ b/src/components/nav_panel/nav_panel.vue
@@ -125,6 +125,10 @@
}
}
+.nav-panel .button-icon {
+ margin-right: 0.5em;
+}
+
.nav-panel .button-icon:before {
width: 1.1em;
}
diff --git a/src/components/timeline_menu/timeline_menu.vue b/src/components/timeline_menu/timeline_menu.vue
index 3c029093..481b1d09 100644
--- a/src/components/timeline_menu/timeline_menu.vue
+++ b/src/components/timeline_menu/timeline_menu.vue
@@ -170,6 +170,10 @@
text-decoration: underline;
}
}
+
+ i {
+ margin: 0 0.5em;
+ }
}
}
--
cgit v1.2.3-70-g09d2
From c17012cfe19ecab7efc27a54c90c4369c36de343 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Tue, 29 Sep 2020 13:20:16 +0200
Subject: fix appended 0.65em on wrong line
---
src/components/timeline_menu/timeline_menu.vue | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'src/components')
diff --git a/src/components/timeline_menu/timeline_menu.vue b/src/components/timeline_menu/timeline_menu.vue
index 481b1d09..b7e5f2da 100644
--- a/src/components/timeline_menu/timeline_menu.vue
+++ b/src/components/timeline_menu/timeline_menu.vue
@@ -64,7 +64,7 @@
.timeline-menu-popover-wrap {
overflow: hidden;
// Match panel heading padding to line up menu with bottom of heading
- margin-top: 0.6rem 0.65em;
+ margin-top: 0.6rem;
padding: 0 15px 15px 15px;
}
.timeline-menu-popover {
@@ -142,7 +142,7 @@
a {
display: block;
- padding: 0.6em 0;
+ padding: 0.6em 0.65em;
&:hover {
background-color: $fallback--lightBg;
@@ -172,7 +172,7 @@
}
i {
- margin: 0 0.5em;
+ margin-right: 0.5em;
}
}
}
--
cgit v1.2.3-70-g09d2
From 414558665f8370390cf4c6dc3c79745217d8d522 Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Thu, 1 Oct 2020 16:01:57 +0300
Subject: lint fix
---
src/components/status/status.scss | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
(limited to 'src/components')
diff --git a/src/components/status/status.scss b/src/components/status/status.scss
index ecca288f..66a91c1e 100644
--- a/src/components/status/status.scss
+++ b/src/components/status/status.scss
@@ -25,6 +25,11 @@ $status-margin: 0.75em;
--icon: var(--selectedPostIcon, $fallback--icon);
}
+ &.-conversation {
+ border-left-width: 4px;
+ border-left-style: solid;
+ }
+
.gravestone {
padding: $status-margin;
color: $fallback--faint;
@@ -36,11 +41,6 @@ $status-margin: 0.75em;
align-items: center;
}
}
-
- &.-conversation {
- border-left-width: 4px;
- border-left-style: solid;
- }
.status-container {
display: flex;
--
cgit v1.2.3-70-g09d2
From ff2fe5c68c6164853e70a12793982c42ff58d2e9 Mon Sep 17 00:00:00 2001
From: Mark Felder
Date: Thu, 1 Oct 2020 17:05:46 -0500
Subject: Fix Follow Requests title style
---
src/components/follow_requests/follow_requests.vue | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/follow_requests/follow_requests.vue b/src/components/follow_requests/follow_requests.vue
index 5fa4cf39..4b9101e2 100644
--- a/src/components/follow_requests/follow_requests.vue
+++ b/src/components/follow_requests/follow_requests.vue
@@ -1,7 +1,9 @@
-
- {{ $t('nav.friend_requests') }}
+
+
+ {{ $t('nav.friend_requests') }}
+
Date: Fri, 2 Oct 2020 12:21:56 +0300
Subject: Stop click propagation when unhiding nsfw
---
src/components/attachment/attachment.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/attachment/attachment.vue b/src/components/attachment/attachment.vue
index 7fabc963..19c713d5 100644
--- a/src/components/attachment/attachment.vue
+++ b/src/components/attachment/attachment.vue
@@ -28,7 +28,7 @@
:href="attachment.url"
:alt="attachment.description"
:title="attachment.description"
- @click.prevent="toggleHidden"
+ @click.prevent.stop="toggleHidden"
>
Date: Tue, 6 Oct 2020 16:18:30 +0000
Subject: Apply 1 suggestion(s) to 1 file(s)
---
src/components/follow_requests/follow_requests.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/follow_requests/follow_requests.vue b/src/components/follow_requests/follow_requests.vue
index 4b9101e2..41f19db8 100644
--- a/src/components/follow_requests/follow_requests.vue
+++ b/src/components/follow_requests/follow_requests.vue
@@ -1,6 +1,6 @@
-
+
{{ $t('nav.friend_requests') }}
--
cgit v1.2.3-70-g09d2
From e5bd1c20b0c5e16546884e32d6886a265555dbb6 Mon Sep 17 00:00:00 2001
From: Dym Sohin
Date: Sun, 11 Oct 2020 02:03:45 +0200
Subject: fix/leftover-emoji-checkboxes-in-settings
---
src/App.scss | 2 +-
src/components/moderation_tools/moderation_tools.vue | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/App.scss b/src/App.scss
index 88e5df86..e1e1bdd0 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -279,7 +279,7 @@ input, textarea, .select, .input {
+ label::before {
flex-shrink: 0;
display: inline-block;
- content: '✔';
+ content: '✓';
transition: color 200ms;
width: 1.1em;
height: 1.1em;
diff --git a/src/components/moderation_tools/moderation_tools.vue b/src/components/moderation_tools/moderation_tools.vue
index b2d5acc5..60fa6ceb 100644
--- a/src/components/moderation_tools/moderation_tools.vue
+++ b/src/components/moderation_tools/moderation_tools.vue
@@ -178,7 +178,7 @@
box-shadow: var(--inputShadow);
&.menu-checkbox-checked::after {
- content: '✔';
+ content: '✓';
}
}
--
cgit v1.2.3-70-g09d2
From 38142182774ea772aacc88f26586512d6279267f Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Mon, 19 Oct 2020 19:38:49 +0300
Subject: Some initial work on replacing icons with FA5
---
package.json | 4 +
src/App.scss | 9 +-
src/components/emoji_input/emoji_input.js | 9 ++
src/components/emoji_input/emoji_input.vue | 2 +-
src/components/emoji_picker/emoji_picker.js | 16 ++-
src/components/emoji_picker/emoji_picker.scss | 2 +-
src/components/emoji_picker/emoji_picker.vue | 4 +-
src/components/extra_buttons/extra_buttons.js | 4 +
src/components/extra_buttons/extra_buttons.vue | 6 +-
src/components/favorite_button/favorite_button.js | 14 +-
src/components/favorite_button/favorite_button.vue | 33 +++--
src/components/media_upload/media_upload.js | 8 ++
src/components/media_upload/media_upload.vue | 10 +-
src/components/nav_panel/nav_panel.js | 23 ++++
src/components/nav_panel/nav_panel.vue | 148 +++++++++++----------
src/components/poll/poll_form.js | 12 ++
src/components/poll/poll_form.vue | 16 ++-
.../post_status_form/post_status_form.js | 17 +++
.../post_status_form/post_status_form.vue | 31 +++--
src/components/react_button/react_button.js | 4 +
src/components/react_button/react_button.vue | 6 +-
src/components/reply_button/reply_button.js | 4 +
src/components/reply_button/reply_button.vue | 28 +++-
src/components/retweet_button/retweet_button.js | 8 +-
src/components/retweet_button/retweet_button.vue | 48 ++++---
src/components/scope_selector/scope_selector.js | 15 +++
src/components/scope_selector/scope_selector.vue | 48 ++++---
src/components/status/status.js | 49 ++++++-
src/components/status/status.scss | 26 +---
src/components/status/status.vue | 70 +++++-----
src/components/timeline_menu/timeline_menu.js | 18 +++
src/components/timeline_menu/timeline_menu.vue | 32 ++---
src/main.js | 4 +
yarn.lock | 31 +++++
34 files changed, 521 insertions(+), 238 deletions(-)
(limited to 'src/components')
diff --git a/package.json b/package.json
index 75d9ee56..6bc285c8 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,10 @@
"dependencies": {
"@babel/runtime": "^7.7.6",
"@chenfengyuan/vue-qrcode": "^1.0.0",
+ "@fortawesome/fontawesome-svg-core": "^1.2.32",
+ "@fortawesome/free-regular-svg-icons": "^5.15.1",
+ "@fortawesome/free-solid-svg-icons": "^5.15.1",
+ "@fortawesome/vue-fontawesome": "^2.0.0",
"body-scroll-lock": "^2.6.4",
"chromatism": "^3.0.0",
"cropperjs": "^1.4.3",
diff --git a/src/App.scss b/src/App.scss
index e1e1bdd0..d34698e2 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -318,7 +318,7 @@ option {
}
}
-i[class*=icon-] {
+i[class*=icon-], .svg-inline--fa {
color: $fallback--icon;
color: var(--icon, $fallback--icon);
}
@@ -808,7 +808,12 @@ nav {
}
.button-icon {
- font-size: 1.2em;
+ &i,
+ &.svg-inline--fa.fa-lg {
+ display: inline-block;
+ padding: 0 0.3em;
+ font-size: 1.1em;
+ }
}
@keyframes shakeError {
diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index f0123447..87303d08 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -3,6 +3,15 @@ import EmojiPicker from '../emoji_picker/emoji_picker.vue'
import { take } from 'lodash'
import { findOffset } from '../../services/offset_finder/offset_finder.service.js'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faSmileBeam
+} from '@fortawesome/free-regular-svg-icons'
+
+library.add(
+ faSmileBeam
+)
+
/**
* EmojiInput - augmented inputs for emoji and autocomplete support in inputs
* without having to give up the comfort of and elements
diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue
index b9a74572..224e72cf 100644
--- a/src/components/emoji_input/emoji_input.vue
+++ b/src/components/emoji_input/emoji_input.vue
@@ -11,7 +11,7 @@
class="emoji-picker-icon"
@click.prevent="togglePicker"
>
-
+
-
+
-
+
diff --git a/src/components/extra_buttons/extra_buttons.js b/src/components/extra_buttons/extra_buttons.js
index 5e0c36bb..6892dabc 100644
--- a/src/components/extra_buttons/extra_buttons.js
+++ b/src/components/extra_buttons/extra_buttons.js
@@ -1,4 +1,8 @@
import Popover from '../popover/popover.vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import { faEllipsisH } from '@fortawesome/free-solid-svg-icons'
+
+library.add(faEllipsisH)
const ExtraButtons = {
props: [ 'status' ],
diff --git a/src/components/extra_buttons/extra_buttons.vue b/src/components/extra_buttons/extra_buttons.vue
index 7a4e8642..0af264a5 100644
--- a/src/components/extra_buttons/extra_buttons.vue
+++ b/src/components/extra_buttons/extra_buttons.vue
@@ -73,9 +73,11 @@
-
diff --git a/src/components/favorite_button/favorite_button.js b/src/components/favorite_button/favorite_button.js
index 5014d84f..2a2ee84a 100644
--- a/src/components/favorite_button/favorite_button.js
+++ b/src/components/favorite_button/favorite_button.js
@@ -1,4 +1,14 @@
import { mapGetters } from 'vuex'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import { faStar } from '@fortawesome/free-solid-svg-icons'
+import {
+ faStar as faStarRegular
+} from '@fortawesome/free-regular-svg-icons'
+
+library.add(
+ faStar,
+ faStarRegular
+)
const FavoriteButton = {
props: ['status', 'loggedIn'],
@@ -23,9 +33,7 @@ const FavoriteButton = {
computed: {
classes () {
return {
- 'icon-star-empty': !this.status.favorited,
- 'icon-star': this.status.favorited,
- 'animate-spin': this.animated
+ '-favorited': this.status.favorited
}
},
...mapGetters(['mergedConfig'])
diff --git a/src/components/favorite_button/favorite_button.vue b/src/components/favorite_button/favorite_button.vue
index fbc90f84..6c7bfdab 100644
--- a/src/components/favorite_button/favorite_button.vue
+++ b/src/components/favorite_button/favorite_button.vue
@@ -1,18 +1,23 @@
-
{{ status.fave_num }}
-
{{ status.fave_num }}
@@ -23,18 +28,20 @@
diff --git a/src/components/media_upload/media_upload.js b/src/components/media_upload/media_upload.js
index 7b8a76cc..669d8190 100644
--- a/src/components/media_upload/media_upload.js
+++ b/src/components/media_upload/media_upload.js
@@ -2,6 +2,14 @@
import statusPosterService from '../../services/status_poster/status_poster.service.js'
import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faUpload,
+ faCircleNotch
+)
+
const mediaUpload = {
data () {
return {
diff --git a/src/components/media_upload/media_upload.vue b/src/components/media_upload/media_upload.vue
index c8865d77..38e00702 100644
--- a/src/components/media_upload/media_upload.vue
+++ b/src/components/media_upload/media_upload.vue
@@ -7,13 +7,15 @@
class="label"
:title="$t('tool_tip.media_upload')"
>
-
-
-
+
-
@@ -7,12 +7,14 @@
:to="{ name: timelinesRoute }"
:class="onTimelineRoute && 'router-link-active'"
>
- {{ $t("nav.timelines") }}
+
+ {{ $t("nav.timelines") }}
-
- {{ $t("nav.interactions") }}
+
+ {{ $t("nav.interactions") }}
-
@@ -23,12 +25,14 @@
>
{{ unreadChatCount }}
-
{{ $t("nav.chats") }}
+
+ {{ $t("nav.chats") }}
- {{ $t("nav.friend_requests") }}
+
+ {{ $t("nav.friend_requests") }}
- {{ $t("nav.about") }}
+ {{ $t("nav.about") }}
@@ -52,84 +56,88 @@
diff --git a/src/components/poll/poll_form.js b/src/components/poll/poll_form.js
index df93f038..1f8df3f9 100644
--- a/src/components/poll/poll_form.js
+++ b/src/components/poll/poll_form.js
@@ -1,5 +1,17 @@
import * as DateUtils from 'src/services/date_utils/date_utils.js'
import { uniq } from 'lodash'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes,
+ faChevronDown,
+ faPlus
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes,
+ faChevronDown,
+ faPlus
+)
export default {
name: 'PollForm',
diff --git a/src/components/poll/poll_form.vue b/src/components/poll/poll_form.vue
index d53f3837..3a8a2f42 100644
--- a/src/components/poll/poll_form.vue
+++ b/src/components/poll/poll_form.vue
@@ -24,8 +24,8 @@
v-if="options.length > 2"
class="icon-container"
>
-
@@ -35,7 +35,8 @@
class="add-option faint"
@click="addOption"
>
-
+
+
{{ $t("polls.add_option") }}
@@ -55,7 +56,7 @@
-
+
-
+
@@ -103,6 +104,7 @@
.add-option {
align-self: flex-start;
padding-top: 0.25em;
+ padding-left: 0.1em;
cursor: pointer;
}
@@ -124,8 +126,8 @@
.icon-container {
// Hack: Move the icon over the input box
- width: 2em;
- margin-left: -2em;
+ width: 1.5em;
+ margin-left: -1.5em;
z-index: 1;
}
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index ad149506..1267225d 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -12,6 +12,23 @@ import suggestor from '../emoji_input/suggestor.js'
import { mapGetters, mapState } from 'vuex'
import Checkbox from '../checkbox/checkbox.vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faChevronDown,
+ faSmileBeam,
+ faPollH,
+ faUpload,
+ faBan
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faChevronDown,
+ faSmileBeam,
+ faPollH,
+ faUpload,
+ faBan
+)
+
const buildMentionsString = ({ user, attentions = [] }, currentUser) => {
let allAttentions = [...attentions]
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index d67d9ae9..9a5be689 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -12,10 +12,11 @@
v-show="showDropIcon !== 'hide'"
:style="{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }"
class="drop-indicator"
- :class="[uploadFileLimitReached ? 'icon-block' : 'icon-upload']"
@dragleave="fileDragStop"
@drop.stop="fileDrop"
- />
+ >
+
+
-
+
-
+ >
+
+
-
+
-
diff --git a/src/components/reply_button/reply_button.js b/src/components/reply_button/reply_button.js
index 22957650..c7bd2a2b 100644
--- a/src/components/reply_button/reply_button.js
+++ b/src/components/reply_button/reply_button.js
@@ -1,3 +1,7 @@
+import { library } from '@fortawesome/fontawesome-svg-core'
+import { faReply } from '@fortawesome/free-solid-svg-icons'
+
+library.add(faReply)
const ReplyButton = {
name: 'ReplyButton',
diff --git a/src/components/reply_button/reply_button.vue b/src/components/reply_button/reply_button.vue
index b2904b5c..ae7b0e26 100644
--- a/src/components/reply_button/reply_button.vue
+++ b/src/components/reply_button/reply_button.vue
@@ -1,15 +1,19 @@
-
-
@@ -19,3 +23,19 @@
+
+
diff --git a/src/components/retweet_button/retweet_button.js b/src/components/retweet_button/retweet_button.js
index 5a41f22d..5ee4179a 100644
--- a/src/components/retweet_button/retweet_button.js
+++ b/src/components/retweet_button/retweet_button.js
@@ -1,3 +1,7 @@
+import { library } from '@fortawesome/fontawesome-svg-core'
+import { faRetweet } from '@fortawesome/free-solid-svg-icons'
+
+library.add(faRetweet)
const RetweetButton = {
props: ['status', 'loggedIn', 'visibility'],
@@ -22,9 +26,7 @@ const RetweetButton = {
computed: {
classes () {
return {
- 'retweeted': this.status.repeated,
- 'retweeted-empty': !this.status.repeated,
- 'animate-spin': this.animated
+ '-repeated': this.status.repeated
}
},
mergedConfig () {
diff --git a/src/components/retweet_button/retweet_button.vue b/src/components/retweet_button/retweet_button.vue
index 074f7747..3e15f30b 100644
--- a/src/components/retweet_button/retweet_button.vue
+++ b/src/components/retweet_button/retweet_button.vue
@@ -1,26 +1,33 @@
-
+
{{ status.repeat_num }}
-
-
{{ status.repeat_num }}
@@ -31,16 +38,21 @@
diff --git a/src/components/scope_selector/scope_selector.js b/src/components/scope_selector/scope_selector.js
index e9ccdefc..34efdc00 100644
--- a/src/components/scope_selector/scope_selector.js
+++ b/src/components/scope_selector/scope_selector.js
@@ -1,3 +1,18 @@
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faEnvelope,
+ faLock,
+ faLockOpen,
+ faGlobeEurope
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faEnvelope,
+ faGlobeEurope,
+ faLock,
+ faLockOpen
+)
+
const ScopeSelector = {
props: [
'showAll',
diff --git a/src/components/scope_selector/scope_selector.vue b/src/components/scope_selector/scope_selector.vue
index 291236f2..5b9abd64 100644
--- a/src/components/scope_selector/scope_selector.vue
+++ b/src/components/scope_selector/scope_selector.vue
@@ -1,36 +1,44 @@
-
+
-
+
+
+
-
+
+
+
-
+
+
+
+ >
+
+
@@ -39,12 +47,16 @@
diff --git a/src/components/font_control/font_control.js b/src/components/font_control/font_control.js
index 8e2b0e45..6274780b 100644
--- a/src/components/font_control/font_control.js
+++ b/src/components/font_control/font_control.js
@@ -1,4 +1,12 @@
import { set } from 'vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faChevronDown
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faChevronDown
+)
export default {
props: [
diff --git a/src/components/font_control/font_control.vue b/src/components/font_control/font_control.vue
index 61f0384b..40aed190 100644
--- a/src/components/font_control/font_control.vue
+++ b/src/components/font_control/font_control.vue
@@ -41,7 +41,7 @@
{{ option === 'custom' ? $t('settings.style.fonts.custom') : option }}
-
+
-
+
@@ -28,6 +28,14 @@
import languagesObject from '../../i18n/messages'
import ISO6391 from 'iso-639-1'
import _ from 'lodash'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faChevronDown
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faChevronDown
+)
export default {
computed: {
diff --git a/src/components/settings_modal/tabs/filtering_tab.js b/src/components/settings_modal/tabs/filtering_tab.js
index 3b2df556..5f38a5ae 100644
--- a/src/components/settings_modal/tabs/filtering_tab.js
+++ b/src/components/settings_modal/tabs/filtering_tab.js
@@ -2,6 +2,14 @@ import { filter, trim } from 'lodash'
import Checkbox from 'src/components/checkbox/checkbox.vue'
import SharedComputedObject from '../helpers/shared_computed_object.js'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faChevronDown
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faChevronDown
+)
const FilteringTab = {
data () {
diff --git a/src/components/settings_modal/tabs/filtering_tab.vue b/src/components/settings_modal/tabs/filtering_tab.vue
index eea41514..786f3618 100644
--- a/src/components/settings_modal/tabs/filtering_tab.vue
+++ b/src/components/settings_modal/tabs/filtering_tab.vue
@@ -53,7 +53,7 @@
-
+
diff --git a/src/components/settings_modal/tabs/general_tab.js b/src/components/settings_modal/tabs/general_tab.js
index 0eb37e44..a39d7071 100644
--- a/src/components/settings_modal/tabs/general_tab.js
+++ b/src/components/settings_modal/tabs/general_tab.js
@@ -2,6 +2,14 @@ import Checkbox from 'src/components/checkbox/checkbox.vue'
import InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'
import SharedComputedObject from '../helpers/shared_computed_object.js'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faChevronDown
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faChevronDown
+)
const GeneralTab = {
data () {
diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue
index 13482de7..9fc1470e 100644
--- a/src/components/settings_modal/tabs/general_tab.vue
+++ b/src/components/settings_modal/tabs/general_tab.vue
@@ -103,7 +103,7 @@
{{ subjectLineBehaviorDefaultValue == 'noop' ? $t('settings.instance_default_simple') : '' }}
-
+
@@ -127,7 +127,7 @@
{{ postContentTypeDefaultValue === postFormat ? $t('settings.instance_default_simple') : '' }}
-
+
diff --git a/src/components/settings_modal/tabs/theme_tab/theme_tab.js b/src/components/settings_modal/tabs/theme_tab/theme_tab.js
index e3c5e80a..6cf75fe7 100644
--- a/src/components/settings_modal/tabs/theme_tab/theme_tab.js
+++ b/src/components/settings_modal/tabs/theme_tab/theme_tab.js
@@ -35,6 +35,14 @@ import ExportImport from 'src/components/export_import/export_import.vue'
import Checkbox from 'src/components/checkbox/checkbox.vue'
import Preview from './preview.vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faChevronDown
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faChevronDown
+)
// List of color values used in v1
const v1OnlyNames = [
diff --git a/src/components/settings_modal/tabs/theme_tab/theme_tab.vue b/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
index 5328c350..fb8b16ae 100644
--- a/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
+++ b/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
@@ -80,7 +80,7 @@
{{ style[0] || style.name }}
-
+
@@ -907,7 +907,7 @@
{{ $t('settings.style.shadows.components.' + shadow) }}
-
+
diff --git a/src/components/shadow_control/shadow_control.js b/src/components/shadow_control/shadow_control.js
index f9e7b985..800c39d5 100644
--- a/src/components/shadow_control/shadow_control.js
+++ b/src/components/shadow_control/shadow_control.js
@@ -2,6 +2,20 @@ import ColorInput from '../color_input/color_input.vue'
import OpacityInput from '../opacity_input/opacity_input.vue'
import { getCssShadow } from '../../services/style_setter/style_setter.js'
import { hex2rgb } from '../../services/color_convert/color_convert.js'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes,
+ faChevronDown,
+ faChevronUp,
+ faPlus
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faChevronDown,
+ faChevronUp,
+ faTimes,
+ faPlus
+)
const toModel = (object = {}) => ({
x: 0,
diff --git a/src/components/shadow_control/shadow_control.vue b/src/components/shadow_control/shadow_control.vue
index 815a9e59..1f63f3f2 100644
--- a/src/components/shadow_control/shadow_control.vue
+++ b/src/components/shadow_control/shadow_control.vue
@@ -78,35 +78,35 @@
{{ $t('settings.style.shadows.shadow_id', { value: index }) }}
-
+
Date: Tue, 20 Oct 2020 21:18:23 +0300
Subject: cancel -> times
---
src/components/chat_message/chat_message.js | 8 ++++++++
src/components/chat_message/chat_message.vue | 2 +-
src/components/chat_panel/chat_panel.js | 8 ++++++--
src/components/chat_panel/chat_panel.vue | 2 +-
src/components/global_notice_list/global_notice_list.js | 8 ++++++++
src/components/global_notice_list/global_notice_list.vue | 2 +-
src/components/image_cropper/image_cropper.js | 8 ++++++++
src/components/image_cropper/image_cropper.vue | 4 ++--
src/components/login_form/login_form.js | 8 ++++++++
src/components/login_form/login_form.vue | 2 +-
src/components/mfa_form/recovery_form.js | 8 ++++++++
src/components/mfa_form/recovery_form.vue | 2 +-
src/components/mfa_form/totp_form.js | 9 +++++++++
src/components/mfa_form/totp_form.vue | 2 +-
src/components/mobile_nav/mobile_nav.js | 8 ++++++++
src/components/mobile_nav/mobile_nav.vue | 2 +-
src/components/password_reset/password_reset.js | 8 ++++++++
src/components/password_reset/password_reset.vue | 2 +-
src/components/post_status_form/post_status_form.js | 6 ++++--
src/components/post_status_form/post_status_form.vue | 10 +++++-----
src/components/search_bar/search_bar.js | 9 +++++++++
src/components/search_bar/search_bar.vue | 4 ++--
src/components/settings_modal/tabs/profile_tab.js | 8 ++++++++
src/components/settings_modal/tabs/profile_tab.vue | 12 ++++++------
src/components/settings_modal/tabs/theme_tab/preview.vue | 13 ++++++++++++-
25 files changed, 127 insertions(+), 28 deletions(-)
(limited to 'src/components')
diff --git a/src/components/chat_message/chat_message.js b/src/components/chat_message/chat_message.js
index be4a7c89..4ad993e3 100644
--- a/src/components/chat_message/chat_message.js
+++ b/src/components/chat_message/chat_message.js
@@ -7,6 +7,14 @@ import LinkPreview from '../link-preview/link-preview.vue'
import StatusContent from '../status_content/status_content.vue'
import ChatMessageDate from '../chat_message_date/chat_message_date.vue'
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes
+)
const ChatMessage = {
name: 'ChatMessage',
diff --git a/src/components/chat_message/chat_message.vue b/src/components/chat_message/chat_message.vue
index e923d694..7973e5ef 100644
--- a/src/components/chat_message/chat_message.vue
+++ b/src/components/chat_message/chat_message.vue
@@ -56,7 +56,7 @@
class="dropdown-item dropdown-item-icon"
@click="deleteMessage"
>
- {{ $t("chats.delete") }}
+ {{ $t("chats.delete") }}
diff --git a/src/components/chat_panel/chat_panel.js b/src/components/chat_panel/chat_panel.js
index 3dfec6df..c3887098 100644
--- a/src/components/chat_panel/chat_panel.js
+++ b/src/components/chat_panel/chat_panel.js
@@ -1,9 +1,13 @@
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
import { library } from '@fortawesome/fontawesome-svg-core'
-import { faBullhorn } from '@fortawesome/free-solid-svg-icons'
+import {
+ faBullhorn,
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
library.add(
- faBullhorn
+ faBullhorn,
+ faTimes
)
const chatPanel = {
diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/chat_panel/chat_panel.vue
index b64535b0..fc06f542 100644
--- a/src/components/chat_panel/chat_panel.vue
+++ b/src/components/chat_panel/chat_panel.vue
@@ -13,7 +13,7 @@
{{ $t('shoutbox.title') }}
diff --git a/src/components/global_notice_list/global_notice_list.js b/src/components/global_notice_list/global_notice_list.js
index 3af29c23..e93fba75 100644
--- a/src/components/global_notice_list/global_notice_list.js
+++ b/src/components/global_notice_list/global_notice_list.js
@@ -1,3 +1,11 @@
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes
+)
const GlobalNoticeList = {
computed: {
diff --git a/src/components/global_notice_list/global_notice_list.vue b/src/components/global_notice_list/global_notice_list.vue
index 0e4285cc..2965cd0d 100644
--- a/src/components/global_notice_list/global_notice_list.vue
+++ b/src/components/global_notice_list/global_notice_list.vue
@@ -10,7 +10,7 @@
{{ $t(notice.messageKey, notice.messageArgs) }}
diff --git a/src/components/image_cropper/image_cropper.js b/src/components/image_cropper/image_cropper.js
index 01361e25..9027b6eb 100644
--- a/src/components/image_cropper/image_cropper.js
+++ b/src/components/image_cropper/image_cropper.js
@@ -1,5 +1,13 @@
import Cropper from 'cropperjs'
import 'cropperjs/dist/cropper.css'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes
+)
const ImageCropper = {
props: {
diff --git a/src/components/image_cropper/image_cropper.vue b/src/components/image_cropper/image_cropper.vue
index 4e1b5927..389b06b9 100644
--- a/src/components/image_cropper/image_cropper.vue
+++ b/src/components/image_cropper/image_cropper.vue
@@ -41,8 +41,8 @@
class="alert error"
>
{{ submitErrorMsg }}
-
diff --git a/src/components/login_form/login_form.js b/src/components/login_form/login_form.js
index 0d8f1da6..638bd812 100644
--- a/src/components/login_form/login_form.js
+++ b/src/components/login_form/login_form.js
@@ -1,5 +1,13 @@
import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'
import oauthApi from '../../services/new_api/oauth.js'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes
+)
const LoginForm = {
data: () => ({
diff --git a/src/components/login_form/login_form.vue b/src/components/login_form/login_form.vue
index b4fdcefb..34f49576 100644
--- a/src/components/login_form/login_form.vue
+++ b/src/components/login_form/login_form.vue
@@ -77,7 +77,7 @@
{{ error }}
diff --git a/src/components/mfa_form/recovery_form.js b/src/components/mfa_form/recovery_form.js
index b25c65dd..01a62a50 100644
--- a/src/components/mfa_form/recovery_form.js
+++ b/src/components/mfa_form/recovery_form.js
@@ -1,5 +1,13 @@
import mfaApi from '../../services/new_api/mfa.js'
import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes
+)
export default {
data: () => ({
diff --git a/src/components/mfa_form/recovery_form.vue b/src/components/mfa_form/recovery_form.vue
index 57294630..8e98054e 100644
--- a/src/components/mfa_form/recovery_form.vue
+++ b/src/components/mfa_form/recovery_form.vue
@@ -55,7 +55,7 @@
{{ error }}
diff --git a/src/components/mfa_form/totp_form.js b/src/components/mfa_form/totp_form.js
index b774f2d0..6ee823ed 100644
--- a/src/components/mfa_form/totp_form.js
+++ b/src/components/mfa_form/totp_form.js
@@ -1,5 +1,14 @@
import mfaApi from '../../services/new_api/mfa.js'
import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes
+)
+
export default {
data: () => ({
code: null,
diff --git a/src/components/mfa_form/totp_form.vue b/src/components/mfa_form/totp_form.vue
index a344b395..bad2286f 100644
--- a/src/components/mfa_form/totp_form.vue
+++ b/src/components/mfa_form/totp_form.vue
@@ -57,7 +57,7 @@
{{ error }}
diff --git a/src/components/mobile_nav/mobile_nav.js b/src/components/mobile_nav/mobile_nav.js
index b2b5d264..bd32b266 100644
--- a/src/components/mobile_nav/mobile_nav.js
+++ b/src/components/mobile_nav/mobile_nav.js
@@ -3,6 +3,14 @@ import Notifications from '../notifications/notifications.vue'
import { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'
import GestureService from '../../services/gesture_service/gesture_service'
import { mapGetters } from 'vuex'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes
+)
const MobileNav = {
components: {
diff --git a/src/components/mobile_nav/mobile_nav.vue b/src/components/mobile_nav/mobile_nav.vue
index abd95f09..e5664dc5 100644
--- a/src/components/mobile_nav/mobile_nav.vue
+++ b/src/components/mobile_nav/mobile_nav.vue
@@ -59,7 +59,7 @@
class="mobile-nav-button"
@click.stop.prevent="closeMobileNotifications()"
>
-
+
({
diff --git a/src/components/password_reset/password_reset.vue b/src/components/password_reset/password_reset.vue
index 713c9dce..8e8225ed 100644
--- a/src/components/password_reset/password_reset.vue
+++ b/src/components/password_reset/password_reset.vue
@@ -66,7 +66,7 @@
class="button-icon dismiss"
@click.prevent="dismissError()"
>
-
+
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 1267225d..e763baa8 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -18,7 +18,8 @@ import {
faSmileBeam,
faPollH,
faUpload,
- faBan
+ faBan,
+ faTimes
} from '@fortawesome/free-solid-svg-icons'
library.add(
@@ -26,7 +27,8 @@ library.add(
faSmileBeam,
faPollH,
faUpload,
- faBan
+ faBan,
+ faTimes
)
const buildMentionsString = ({ user, attentions = [] }, currentUser) => {
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 9a5be689..7f7ac72f 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -40,7 +40,7 @@
class="button-icon dismiss"
@click.prevent="dismissScopeNotice()"
>
-
+
-
+
-
+
Error: {{ error }}
@@ -296,7 +296,7 @@
class="media-upload-wrapper"
>
({
searchTerm: undefined,
diff --git a/src/components/search_bar/search_bar.vue b/src/components/search_bar/search_bar.vue
index 4d5a1aec..6a08ebe5 100644
--- a/src/components/search_bar/search_bar.vue
+++ b/src/components/search_bar/search_bar.vue
@@ -29,8 +29,8 @@
>
-
diff --git a/src/components/settings_modal/tabs/profile_tab.js b/src/components/settings_modal/tabs/profile_tab.js
index bd6bef6a..37e829bb 100644
--- a/src/components/settings_modal/tabs/profile_tab.js
+++ b/src/components/settings_modal/tabs/profile_tab.js
@@ -8,6 +8,14 @@ import EmojiInput from 'src/components/emoji_input/emoji_input.vue'
import suggestor from 'src/components/emoji_input/suggestor.js'
import Autosuggest from 'src/components/autosuggest/autosuggest.vue'
import Checkbox from 'src/components/checkbox/checkbox.vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faTimes
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faTimes
+)
const ProfileTab = {
data () {
diff --git a/src/components/settings_modal/tabs/profile_tab.vue b/src/components/settings_modal/tabs/profile_tab.vue
index cf88c4e4..df54551c 100644
--- a/src/components/settings_modal/tabs/profile_tab.vue
+++ b/src/components/settings_modal/tabs/profile_tab.vue
@@ -129,7 +129,7 @@
>
@@ -169,7 +169,7 @@
@@ -197,7 +197,7 @@
@@ -231,7 +231,7 @@
>
Error: {{ bannerUploadError }}
@@ -243,7 +243,7 @@
@@ -277,7 +277,7 @@
>
Error: {{ backgroundUploadError }}
diff --git a/src/components/settings_modal/tabs/theme_tab/preview.vue b/src/components/settings_modal/tabs/theme_tab/preview.vue
index 9d984659..c8cb2665 100644
--- a/src/components/settings_modal/tabs/theme_tab/preview.vue
+++ b/src/components/settings_modal/tabs/theme_tab/preview.vue
@@ -53,7 +53,7 @@
/>
@@ -103,6 +103,17 @@
+
+
diff --git a/src/components/chat/chat.js b/src/components/chat/chat.js
index 1630ba80..083f850f 100644
--- a/src/components/chat/chat.js
+++ b/src/components/chat/chat.js
@@ -9,11 +9,13 @@ import { promiseInterval } from '../../services/promise_interval/promise_interva
import { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContainerHeight } from './chat_layout_utils.js'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
- faChevronDown
+ faChevronDown,
+ faChevronLeft
} from '@fortawesome/free-solid-svg-icons'
library.add(
- faChevronDown
+ faChevronDown,
+ faChevronLeft
)
const BOTTOMED_OUT_OFFSET = 10
diff --git a/src/components/chat/chat.scss b/src/components/chat/chat.scss
index 012a1b1d..b7b0d377 100644
--- a/src/components/chat/chat.scss
+++ b/src/components/chat/chat.scss
@@ -58,12 +58,8 @@
.go-back-button {
cursor: pointer;
- margin-right: 1.4em;
-
- i {
- display: flex;
- align-items: center;
- }
+ margin-right: 1.7em;
+ margin-left: 0.3em;
}
.jump-to-bottom-button {
diff --git a/src/components/chat/chat.vue b/src/components/chat/chat.vue
index 0d44c920..0670f1ac 100644
--- a/src/components/chat/chat.vue
+++ b/src/components/chat/chat.vue
@@ -14,7 +14,7 @@
class="go-back-button"
@click="goBack"
>
-
+
diff --git a/src/components/chat_new/chat_new.js b/src/components/chat_new/chat_new.js
index d023efc0..71585995 100644
--- a/src/components/chat_new/chat_new.js
+++ b/src/components/chat_new/chat_new.js
@@ -1,6 +1,16 @@
import { mapState, mapGetters } from 'vuex'
import BasicUserCard from '../basic_user_card/basic_user_card.vue'
import UserAvatar from '../user_avatar/user_avatar.vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faSearch,
+ faChevronLeft
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faSearch,
+ faChevronLeft
+)
const chatNew = {
components: {
diff --git a/src/components/chat_new/chat_new.scss b/src/components/chat_new/chat_new.scss
index 11305444..716172b0 100644
--- a/src/components/chat_new/chat_new.scss
+++ b/src/components/chat_new/chat_new.scss
@@ -8,9 +8,7 @@
}
}
- .icon-search {
- font-size: 1.5em;
- float: right;
+ .search-icon {
margin-right: 0.3em;
}
@@ -25,5 +23,7 @@
.go-back-button {
cursor: pointer;
+ margin-right: 1.7em;
+ margin-left: 0.3em;
}
}
diff --git a/src/components/chat_new/chat_new.vue b/src/components/chat_new/chat_new.vue
index 3333dbf9..95eebe6b 100644
--- a/src/components/chat_new/chat_new.vue
+++ b/src/components/chat_new/chat_new.vue
@@ -11,12 +11,12 @@
class="go-back-button"
@click="goBack"
>
-
+
diff --git a/src/components/side_drawer/side_drawer.js b/src/components/side_drawer/side_drawer.js
index 281052e5..fe736168 100644
--- a/src/components/side_drawer/side_drawer.js
+++ b/src/components/side_drawer/side_drawer.js
@@ -2,6 +2,34 @@ import { mapState, mapGetters } from 'vuex'
import UserCard from '../user_card/user_card.vue'
import { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'
import GestureService from '../../services/gesture_service/gesture_service'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faSignInAlt,
+ faSignOutAlt,
+ faHome,
+ faComments,
+ faBell,
+ faUserPlus,
+ faBullhorn,
+ faSearch,
+ faTachometerAlt,
+ faCog,
+ faInfoCircle
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faSignInAlt,
+ faSignOutAlt,
+ faHome,
+ faComments,
+ faBell,
+ faUserPlus,
+ faBullhorn,
+ faSearch,
+ faTachometerAlt,
+ faCog,
+ faInfoCircle
+)
const SideDrawer = {
props: [ 'logout' ],
diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue
index eda5a68c..fbdb2441 100644
--- a/src/components/side_drawer/side_drawer.vue
+++ b/src/components/side_drawer/side_drawer.vue
@@ -36,7 +36,7 @@
@click="toggleDrawer"
>
- {{ $t("login.login") }}
+ {{ $t("login.login") }}
- {{ $t("nav.timelines") }}
+ {{ $t("nav.timelines") }}
- {{ $t("nav.chats") }}
+ {{ $t("nav.chats") }}
- {{ $t("nav.interactions") }}
+ {{ $t("nav.interactions") }}
- {{ $t("nav.friend_requests") }}
+ {{ $t("nav.friend_requests") }}
- {{ $t("shoutbox.title") }}
+ {{ $t("shoutbox.title") }}
@@ -100,7 +100,7 @@
@click="toggleDrawer"
>
- {{ $t("nav.search") }}
+ {{ $t("nav.search") }}
- {{ $t("nav.who_to_follow") }}
+ {{ $t("nav.who_to_follow") }}
@@ -116,12 +116,12 @@
href="#"
@click="openSettingsModal"
>
- {{ $t("settings.settings") }}
+ {{ $t("settings.settings") }}
- {{ $t("nav.about") }}
+ {{ $t("nav.about") }}
- {{ $t("nav.administration") }}
+ {{ $t("nav.administration") }}
- {{ $t("login.logout") }}
+ {{ $t("login.logout") }}
diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index cfdeaa17..4f7df789 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -54,8 +54,9 @@
v-if="isOtherUser && !user.is_local"
:href="user.statusnet_profile_url"
target="_blank"
+ class="external-link-button"
>
-
+
diff --git a/src/hocs/with_subscription/with_subscription.js b/src/hocs/with_subscription/with_subscription.js
index 1775adcb..b1244276 100644
--- a/src/hocs/with_subscription/with_subscription.js
+++ b/src/hocs/with_subscription/with_subscription.js
@@ -3,6 +3,16 @@ import isEmpty from 'lodash/isEmpty'
import { getComponentProps } from '../../services/component_utils/component_utils'
import './with_subscription.scss'
+import { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faCircleNotch
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faCircleNotch
+)
+
const withSubscription = ({
fetch, // function to fetch entries and return a promise
select, // function to select data from store
@@ -72,7 +82,7 @@ const withSubscription = ({
)
--
cgit v1.2.3-70-g09d2
From 3cbaa0044943341fa4af4e4eb880649fc7eecda4 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Tue, 20 Oct 2020 22:54:43 +0300
Subject: more replacements + small renames
---
src/App.scss | 6 ++--
src/App.vue | 26 ++++++++------
src/components/font_control/font_control.vue | 2 +-
.../interface_language_switcher.vue | 2 +-
src/components/poll/poll_form.vue | 4 +--
.../post_status_form/post_status_form.vue | 2 +-
src/components/search_bar/search_bar.js | 3 +-
src/components/search_bar/search_bar.vue | 41 ++++++++++++----------
.../settings_modal/settings_modal_content.js | 23 ++++++++++++
.../settings_modal/settings_modal_content.vue | 8 ++---
.../settings_modal/tabs/filtering_tab.vue | 2 +-
src/components/settings_modal/tabs/general_tab.vue | 4 +--
.../settings_modal/tabs/theme_tab/preview.vue | 28 ++++++++++-----
.../settings_modal/tabs/theme_tab/theme_tab.vue | 4 +--
src/components/shadow_control/shadow_control.vue | 2 +-
src/components/tab_switcher/tab_switcher.js | 3 +-
src/components/tab_switcher/tab_switcher.scss | 3 +-
src/components/user_card/user_card.vue | 2 +-
18 files changed, 106 insertions(+), 59 deletions(-)
(limited to 'src/components')
diff --git a/src/App.scss b/src/App.scss
index 126a3297..06915e16 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -188,7 +188,7 @@ input, textarea, .select, .input {
opacity: 0.5;
}
- .icon-down-open {
+ .select-down-icon {
position: absolute;
top: 0;
bottom: 0;
@@ -368,7 +368,9 @@ i[class*=icon-], .svg-inline--fa {
flex-wrap: wrap;
.nav-icon {
- margin-left: 0.4em;
+ margin-left: 0.2em;
+ width: 2em;
+ text-align: center;
}
&.right {
diff --git a/src/App.vue b/src/App.vue
index 0276c6a6..5efaf717 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -42,36 +42,42 @@
diff --git a/src/components/font_control/font_control.vue b/src/components/font_control/font_control.vue
index 40aed190..6070ab22 100644
--- a/src/components/font_control/font_control.vue
+++ b/src/components/font_control/font_control.vue
@@ -41,7 +41,7 @@
{{ option === 'custom' ? $t('settings.style.fonts.custom') : option }}
-
+
-
+
diff --git a/src/components/poll/poll_form.vue b/src/components/poll/poll_form.vue
index 3a8a2f42..8c4ada89 100644
--- a/src/components/poll/poll_form.vue
+++ b/src/components/poll/poll_form.vue
@@ -56,7 +56,7 @@
-
+
-
+
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 7f7ac72f..817b2fa0 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -199,7 +199,7 @@
{{ $t(`post_status.content_type["${postFormat}"]`) }}
-
+
({
searchTerm: undefined,
hidden: true,
- error: false,
- loading: false
+ error: false
}),
watch: {
'$route': function (route) {
diff --git a/src/components/search_bar/search_bar.vue b/src/components/search_bar/search_bar.vue
index ecc0febf..fbbbbfe0 100644
--- a/src/components/search_bar/search_bar.vue
+++ b/src/components/search_bar/search_bar.vue
@@ -1,17 +1,17 @@
@@ -60,13 +68,10 @@
max-width: calc(100% - 30px - 30px - 20px);
}
- .search-button {
- margin-left: .5em;
- margin-right: .5em;
- }
-
- .icon-cancel {
+ .cancel-icon {
cursor: pointer;
+ color: $fallback--text;
+ color: var(--btnTopBarText, $fallback--text);
}
}
diff --git a/src/components/settings_modal/settings_modal_content.js b/src/components/settings_modal/settings_modal_content.js
index ef1a5ffa..9dcf1b5a 100644
--- a/src/components/settings_modal/settings_modal_content.js
+++ b/src/components/settings_modal/settings_modal_content.js
@@ -10,6 +10,29 @@ import GeneralTab from './tabs/general_tab.vue'
import VersionTab from './tabs/version_tab.vue'
import ThemeTab from './tabs/theme_tab/theme_tab.vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faWrench,
+ faUser,
+ faFilter,
+ faPaintBrush,
+ faBell,
+ faDownload,
+ faEyeSlash,
+ faInfo
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faWrench,
+ faUser,
+ faFilter,
+ faPaintBrush,
+ faBell,
+ faDownload,
+ faEyeSlash,
+ faInfo
+)
+
const SettingsModalContent = {
components: {
TabSwitcher,
diff --git a/src/components/settings_modal/settings_modal_content.vue b/src/components/settings_modal/settings_modal_content.vue
index bc30a0ff..c9ed2a38 100644
--- a/src/components/settings_modal/settings_modal_content.vue
+++ b/src/components/settings_modal/settings_modal_content.vue
@@ -37,7 +37,7 @@
@@ -45,7 +45,7 @@
@@ -62,14 +62,14 @@
v-if="isLoggedIn"
:label="$t('settings.mutes_and_blocks')"
:fullHeight="true"
- icon="eye-off"
+ icon="eye-slash"
data-tab-name="mutesAndBlocks"
>
diff --git a/src/components/settings_modal/tabs/filtering_tab.vue b/src/components/settings_modal/tabs/filtering_tab.vue
index 786f3618..ff1a129b 100644
--- a/src/components/settings_modal/tabs/filtering_tab.vue
+++ b/src/components/settings_modal/tabs/filtering_tab.vue
@@ -53,7 +53,7 @@
-
+
diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue
index 2ab6b314..99d3a0dc 100644
--- a/src/components/settings_modal/tabs/general_tab.vue
+++ b/src/components/settings_modal/tabs/general_tab.vue
@@ -103,7 +103,7 @@
{{ subjectLineBehaviorDefaultValue == 'noop' ? $t('settings.instance_default_simple') : '' }}
-
+
@@ -127,7 +127,7 @@
{{ postContentTypeDefaultValue === postFormat ? $t('settings.instance_default_simple') : '' }}
-
+
diff --git a/src/components/settings_modal/tabs/theme_tab/preview.vue b/src/components/settings_modal/tabs/theme_tab/preview.vue
index c8cb2665..65863c54 100644
--- a/src/components/settings_modal/tabs/theme_tab/preview.vue
+++ b/src/components/settings_modal/tabs/theme_tab/preview.vue
@@ -39,19 +39,23 @@
-
-
-
-
@@ -106,11 +110,17 @@
diff --git a/src/components/settings_modal/tabs/theme_tab/theme_tab.vue b/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
index fb8b16ae..9cc1c392 100644
--- a/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
+++ b/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
@@ -80,7 +80,7 @@
{{ style[0] || style.name }}
-
+
@@ -907,7 +907,7 @@
{{ $t('settings.style.shadows.components.' + shadow) }}
-
+
diff --git a/src/components/shadow_control/shadow_control.vue b/src/components/shadow_control/shadow_control.vue
index 1f63f3f2..32220ae8 100644
--- a/src/components/shadow_control/shadow_control.vue
+++ b/src/components/shadow_control/shadow_control.vue
@@ -78,7 +78,7 @@
{{ $t('settings.style.shadows.shadow_id', { value: index }) }}
-
+
--
cgit v1.2.3-70-g09d2
From a50cd7e37dce6e95f2c3d6cc63c382af71a2926e Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 21 Oct 2020 00:01:28 +0300
Subject: remaining changes...
---
src/components/attachment/attachment.js | 22 +++++++++--
src/components/attachment/attachment.vue | 14 ++++---
src/components/chat_panel/chat_panel.vue | 7 ++--
.../global_notice_list/global_notice_list.vue | 2 +-
src/components/image_cropper/image_cropper.js | 6 ++-
src/components/image_cropper/image_cropper.vue | 5 ++-
src/components/importer/importer.js | 11 ++++++
src/components/importer/importer.vue | 14 ++++---
src/components/login_form/login_form.vue | 2 +-
src/components/mfa_form/recovery_form.vue | 2 +-
src/components/mfa_form/totp_form.vue | 6 ++-
src/components/password_reset/password_reset.vue | 2 +-
src/components/poll/poll_form.vue | 9 +++++
.../post_status_form/post_status_form.js | 6 ++-
.../post_status_form/post_status_form.vue | 46 +++++++---------------
src/components/settings_modal/tabs/profile_tab.js | 6 ++-
.../settings_modal/tabs/profile_tab.scss | 6 +--
src/components/settings_modal/tabs/profile_tab.vue | 28 +++++++------
src/components/status/status.scss | 5 ---
src/components/status_content/status_content.js | 18 +++++++++
src/components/status_content/status_content.vue | 28 +++++++------
src/components/user_profile/user_profile.js | 8 ++++
src/components/user_profile/user_profile.vue | 6 ++-
23 files changed, 162 insertions(+), 97 deletions(-)
(limited to 'src/components')
diff --git a/src/components/attachment/attachment.js b/src/components/attachment/attachment.js
index cb31020d..e23fcb1b 100644
--- a/src/components/attachment/attachment.js
+++ b/src/components/attachment/attachment.js
@@ -3,6 +3,20 @@ import VideoAttachment from '../video_attachment/video_attachment.vue'
import nsfwImage from '../../assets/nsfw.png'
import fileTypeService from '../../services/file_type/file_type.service.js'
import { mapGetters } from 'vuex'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faFile,
+ faMusic,
+ faImage,
+ faVideo
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faFile,
+ faMusic,
+ faImage,
+ faVideo
+)
const Attachment = {
props: [
@@ -39,10 +53,10 @@ const Attachment = {
return this.attachment.description
},
placeholderIconClass () {
- if (this.type === 'image') return 'icon-picture'
- if (this.type === 'video') return 'icon-video'
- if (this.type === 'audio') return 'icon-music'
- return 'icon-doc'
+ if (this.type === 'image') return 'image'
+ if (this.type === 'video') return 'video'
+ if (this.type === 'audio') return 'music'
+ return 'file'
},
referrerpolicy () {
return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'
diff --git a/src/components/attachment/attachment.vue b/src/components/attachment/attachment.vue
index 19c713d5..0b7a3f9c 100644
--- a/src/components/attachment/attachment.vue
+++ b/src/components/attachment/attachment.vue
@@ -12,7 +12,7 @@
:alt="attachment.description"
:title="attachment.description"
>
-
+
{{ nsfw ? "NSFW / " : "" }}{{ placeholderName }}
@@ -36,9 +36,9 @@
:src="nsfwImage"
:class="{'small': isSmall}"
>
-
-
@@ -142,6 +142,10 @@
white-space: nowrap;
text-overflow: ellipsis;
max-width: 100%;
+
+ svg {
+ color: inherit;
+ }
}
.nsfw-placeholder {
diff --git a/src/components/chat_panel/chat_panel.vue b/src/components/chat_panel/chat_panel.vue
index fc06f542..51b99563 100644
--- a/src/components/chat_panel/chat_panel.vue
+++ b/src/components/chat_panel/chat_panel.vue
@@ -11,7 +11,7 @@
>
{{ $t('shoutbox.title') }}
-
@@ -63,7 +63,7 @@
@click.stop.prevent="togglePanel"
>
-
+
{{ $t('shoutbox.title') }}
@@ -87,7 +87,8 @@
.chat-panel {
.chat-heading {
cursor: pointer;
- .icon-comment-empty {
+
+ .icon {
color: $fallback--text;
color: var(--text, $fallback--text);
}
diff --git a/src/components/global_notice_list/global_notice_list.vue b/src/components/global_notice_list/global_notice_list.vue
index 2965cd0d..3a7139f4 100644
--- a/src/components/global_notice_list/global_notice_list.vue
+++ b/src/components/global_notice_list/global_notice_list.vue
@@ -9,7 +9,7 @@
{{ $t(notice.messageKey, notice.messageArgs) }}
-
diff --git a/src/components/image_cropper/image_cropper.js b/src/components/image_cropper/image_cropper.js
index 9027b6eb..59e4d07e 100644
--- a/src/components/image_cropper/image_cropper.js
+++ b/src/components/image_cropper/image_cropper.js
@@ -2,11 +2,13 @@ import Cropper from 'cropperjs'
import 'cropperjs/dist/cropper.css'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
- faTimes
+ faTimes,
+ faCircleNotch
} from '@fortawesome/free-solid-svg-icons'
library.add(
- faTimes
+ faTimes,
+ faCircleNotch
)
const ImageCropper = {
diff --git a/src/components/image_cropper/image_cropper.vue b/src/components/image_cropper/image_cropper.vue
index 389b06b9..e69cbd0b 100644
--- a/src/components/image_cropper/image_cropper.vue
+++ b/src/components/image_cropper/image_cropper.vue
@@ -31,9 +31,10 @@
@click="submit(false)"
v-text="saveWithoutCroppingText"
/>
-
-
@@ -142,6 +143,7 @@
.user-profile-fields {
margin: 0 0.5em;
+
img {
object-fit: contain;
vertical-align: middle;
--
cgit v1.2.3-70-g09d2
From 7495c6b698e0afe169c1138baabc29f70d4b44a2 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 21 Oct 2020 00:02:58 +0300
Subject: fix attachment remove pointer
---
src/components/post_status_form/post_status_form.vue | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 428b8560..3cd9e7a5 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -511,7 +511,7 @@
flex-direction: column;
}
- .attachments .media-upload-wrapper{
+ .attachments .media-upload-wrapper {
padding: 0 0.5em;
.attachment {
@@ -531,6 +531,7 @@
border-radius: $fallback--attachmentRadius;
border-radius: var(--attachmentRadius, $fallback--attachmentRadius);
font-weight: bold;
+ cursor: pointer;
}
}
--
cgit v1.2.3-70-g09d2
From 6aa7445ea7f8f76adbc31d018ebb3228294aef41 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 21 Oct 2020 00:25:59 +0300
Subject: come on and slam
---
src/components/nav_panel/nav_panel.js | 4 ++--
src/components/scope_selector/scope_selector.js | 4 ++--
src/components/scope_selector/scope_selector.vue | 2 +-
src/components/status/status.js | 6 +++---
src/components/timeline_menu/timeline_menu.js | 4 ++--
src/components/timeline_menu/timeline_menu.vue | 2 +-
6 files changed, 11 insertions(+), 11 deletions(-)
(limited to 'src/components')
diff --git a/src/components/nav_panel/nav_panel.js b/src/components/nav_panel/nav_panel.js
index 87e54133..81d49cc2 100644
--- a/src/components/nav_panel/nav_panel.js
+++ b/src/components/nav_panel/nav_panel.js
@@ -4,7 +4,7 @@ import { mapState, mapGetters } from 'vuex'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
faUsers,
- faGlobeEurope,
+ faGlobe,
faBookmark,
faEnvelope,
faHome,
@@ -15,7 +15,7 @@ import {
library.add(
faUsers,
- faGlobeEurope,
+ faGlobe,
faBookmark,
faEnvelope,
faHome,
diff --git a/src/components/scope_selector/scope_selector.js b/src/components/scope_selector/scope_selector.js
index ddb20ff2..2c9d06e0 100644
--- a/src/components/scope_selector/scope_selector.js
+++ b/src/components/scope_selector/scope_selector.js
@@ -3,12 +3,12 @@ import {
faEnvelope,
faLock,
faUnlock,
- faGlobeEurope
+ faGlobe
} from '@fortawesome/free-solid-svg-icons'
library.add(
faEnvelope,
- faGlobeEurope,
+ faGlobe,
faLock,
faUnlock
)
diff --git a/src/components/scope_selector/scope_selector.vue b/src/components/scope_selector/scope_selector.vue
index ddd89422..c098783d 100644
--- a/src/components/scope_selector/scope_selector.vue
+++ b/src/components/scope_selector/scope_selector.vue
@@ -37,7 +37,7 @@
:title="$t('post_status.scope.public')"
@click="changeVis('public')"
>
-
+
diff --git a/src/components/status/status.js b/src/components/status/status.js
index 5b93054f..46fa3b76 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -22,7 +22,7 @@ import {
faEnvelope,
faLock,
faUnlock,
- faGlobeEurope,
+ faGlobe,
faTimes,
faRetweet,
faReply,
@@ -38,7 +38,7 @@ import {
library.add(
faEnvelope,
- faGlobeEurope,
+ faGlobe,
faLock,
faUnlock,
faTimes,
@@ -270,7 +270,7 @@ const Status = {
case 'direct':
return 'envelope'
default:
- return 'globe-europe'
+ return 'globe'
}
},
showError (error) {
diff --git a/src/components/timeline_menu/timeline_menu.js b/src/components/timeline_menu/timeline_menu.js
index 991c600d..4ccd52b4 100644
--- a/src/components/timeline_menu/timeline_menu.js
+++ b/src/components/timeline_menu/timeline_menu.js
@@ -3,7 +3,7 @@ import { mapState } from 'vuex'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
faUsers,
- faGlobeEurope,
+ faGlobe,
faBookmark,
faEnvelope,
faHome,
@@ -12,7 +12,7 @@ import {
library.add(
faUsers,
- faGlobeEurope,
+ faGlobe,
faBookmark,
faEnvelope,
faHome,
diff --git a/src/components/timeline_menu/timeline_menu.vue b/src/components/timeline_menu/timeline_menu.vue
index 590752d3..1e546fae 100644
--- a/src/components/timeline_menu/timeline_menu.vue
+++ b/src/components/timeline_menu/timeline_menu.vue
@@ -36,7 +36,7 @@
- {{ $t("nav.twkn") }}
+ {{ $t("nav.twkn") }}
--
cgit v1.2.3-70-g09d2
From 1ec41302f729ac9100c3ec0cede5e4f79dd626a3 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 21 Oct 2020 00:28:24 +0300
Subject: rotate the shackle of the lock for better accessibility
---
src/components/scope_selector/scope_selector.js | 4 ++--
src/components/scope_selector/scope_selector.vue | 2 +-
src/components/status/status.js | 6 +++---
3 files changed, 6 insertions(+), 6 deletions(-)
(limited to 'src/components')
diff --git a/src/components/scope_selector/scope_selector.js b/src/components/scope_selector/scope_selector.js
index 2c9d06e0..74bf7284 100644
--- a/src/components/scope_selector/scope_selector.js
+++ b/src/components/scope_selector/scope_selector.js
@@ -2,7 +2,7 @@ import { library } from '@fortawesome/fontawesome-svg-core'
import {
faEnvelope,
faLock,
- faUnlock,
+ faLockOpen,
faGlobe
} from '@fortawesome/free-solid-svg-icons'
@@ -10,7 +10,7 @@ library.add(
faEnvelope,
faGlobe,
faLock,
- faUnlock
+ faLockOpen
)
const ScopeSelector = {
diff --git a/src/components/scope_selector/scope_selector.vue b/src/components/scope_selector/scope_selector.vue
index c098783d..d490f8ee 100644
--- a/src/components/scope_selector/scope_selector.vue
+++ b/src/components/scope_selector/scope_selector.vue
@@ -28,7 +28,7 @@
:title="$t('post_status.scope.unlisted')"
@click="changeVis('unlisted')"
>
-
+
Date: Wed, 21 Oct 2020 00:31:16 +0300
Subject: lint
---
src/App.vue | 17 +++--
src/components/account_actions/account_actions.vue | 5 +-
src/components/attachment/attachment.vue | 6 +-
src/components/chat/chat.vue | 5 +-
src/components/chat_new/chat_new.vue | 11 ++-
src/components/chat_panel/chat_panel.vue | 5 +-
src/components/emoji_picker/emoji_picker.vue | 10 ++-
src/components/exporter/exporter.vue | 6 +-
src/components/extra_buttons/extra_buttons.js | 2 +-
src/components/extra_buttons/extra_buttons.vue | 48 ++++++++++---
src/components/font_control/font_control.vue | 5 +-
.../global_notice_list/global_notice_list.vue | 3 +-
src/components/image_cropper/image_cropper.vue | 3 +-
.../interface_language_switcher.vue | 5 +-
src/components/login_form/login_form.vue | 3 +-
src/components/media_modal/media_modal.vue | 10 ++-
src/components/mfa_form/recovery_form.vue | 3 +-
src/components/mobile_nav/mobile_nav.vue | 18 ++++-
src/components/nav_panel/nav_panel.vue | 35 +++++++--
src/components/notification/notification.vue | 33 +++++++--
src/components/notifications/notifications.vue | 6 +-
src/components/panel_loading/panel_loading.vue | 6 +-
src/components/poll/poll_form.vue | 15 +++-
.../post_status_form/post_status_form.vue | 12 ++--
src/components/retweet_button/retweet_button.vue | 18 ++---
src/components/scope_selector/scope_selector.vue | 36 +++++++---
src/components/search/search.vue | 6 +-
src/components/search_bar/search_bar.vue | 12 ++--
.../settings_modal/tabs/filtering_tab.vue | 5 +-
src/components/settings_modal/tabs/general_tab.vue | 10 ++-
src/components/settings_modal/tabs/profile_tab.vue | 12 ++--
.../settings_modal/tabs/theme_tab/preview.vue | 12 ++--
.../settings_modal/tabs/theme_tab/theme_tab.vue | 10 ++-
src/components/shadow_control/shadow_control.vue | 25 +++++--
src/components/side_drawer/side_drawer.vue | 84 ++++++++++++++++++----
src/components/status/status.vue | 44 +++++++++---
src/components/status_popover/status_popover.vue | 6 +-
src/components/timeline/timeline.vue | 6 +-
src/components/timeline_menu/timeline_menu.vue | 40 +++++++++--
src/components/user_card/user_card.vue | 33 +++++++--
.../user_list_popover/user_list_popover.vue | 6 +-
41 files changed, 497 insertions(+), 140 deletions(-)
(limited to 'src/components')
diff --git a/src/App.vue b/src/App.vue
index 5efaf717..c27f51bf 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -54,7 +54,8 @@
@@ -64,9 +65,10 @@
class="mobile-hidden nav-icon"
target="_blank"
>
diff --git a/src/components/account_actions/account_actions.vue b/src/components/account_actions/account_actions.vue
index 61099d4f..e3ae376e 100644
--- a/src/components/account_actions/account_actions.vue
+++ b/src/components/account_actions/account_actions.vue
@@ -63,7 +63,10 @@
slot="trigger"
class="btn btn-default ellipsis-button"
>
-
+
diff --git a/src/components/attachment/attachment.vue b/src/components/attachment/attachment.vue
index 0b7a3f9c..f1fac2c8 100644
--- a/src/components/attachment/attachment.vue
+++ b/src/components/attachment/attachment.vue
@@ -38,7 +38,8 @@
>
diff --git a/src/components/chat/chat.vue b/src/components/chat/chat.vue
index 0670f1ac..5f58b9a6 100644
--- a/src/components/chat/chat.vue
+++ b/src/components/chat/chat.vue
@@ -14,7 +14,10 @@
class="go-back-button"
@click="goBack"
>
-
+
-
+
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index bd093c99..3262a3d9 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -13,7 +13,10 @@
:title="group.text"
@click.prevent="highlight(group.id)"
>
-
+
-
+
diff --git a/src/components/exporter/exporter.vue b/src/components/exporter/exporter.vue
index 156db9a3..ecd71bf1 100644
--- a/src/components/exporter/exporter.vue
+++ b/src/components/exporter/exporter.vue
@@ -1,7 +1,11 @@
-
+
{{ processingMessage }}
diff --git a/src/components/extra_buttons/extra_buttons.js b/src/components/extra_buttons/extra_buttons.js
index f325b2b4..1a8eef72 100644
--- a/src/components/extra_buttons/extra_buttons.js
+++ b/src/components/extra_buttons/extra_buttons.js
@@ -8,7 +8,7 @@ import {
faShareAlt
} from '@fortawesome/free-solid-svg-icons'
import {
- faBookmark as faBookmarkReg,
+ faBookmark as faBookmarkReg
} from '@fortawesome/free-regular-svg-icons'
library.add(
diff --git a/src/components/extra_buttons/extra_buttons.vue b/src/components/extra_buttons/extra_buttons.vue
index 1889eaed..4bf1e62a 100644
--- a/src/components/extra_buttons/extra_buttons.vue
+++ b/src/components/extra_buttons/extra_buttons.vue
@@ -15,14 +15,22 @@
class="dropdown-item dropdown-item-icon"
@click.prevent="muteConversation"
>
-
{{ $t("status.mute_conversation") }}
+
{{ $t("status.mute_conversation") }}
- {{ $t("status.unmute_conversation") }}
+ {{ $t("status.unmute_conversation") }}
- {{ $t("status.pin") }}
+ {{ $t("status.pin") }}
- {{ $t("status.unpin") }}
+ {{ $t("status.unpin") }}
- {{ $t("status.bookmark") }}
+ {{ $t("status.bookmark") }}
- {{ $t("status.unbookmark") }}
+ {{ $t("status.unbookmark") }}
- {{ $t("status.delete") }}
+ {{ $t("status.delete") }}
- {{ $t("status.copy_link") }}
+ {{ $t("status.copy_link") }}
diff --git a/src/components/font_control/font_control.vue b/src/components/font_control/font_control.vue
index 6070ab22..dd117ec0 100644
--- a/src/components/font_control/font_control.vue
+++ b/src/components/font_control/font_control.vue
@@ -41,7 +41,10 @@
{{ option === 'custom' ? $t('settings.style.fonts.custom') : option }}
-
+
diff --git a/src/components/image_cropper/image_cropper.vue b/src/components/image_cropper/image_cropper.vue
index e69cbd0b..605f7427 100644
--- a/src/components/image_cropper/image_cropper.vue
+++ b/src/components/image_cropper/image_cropper.vue
@@ -43,7 +43,8 @@
>
{{ submitErrorMsg }}
diff --git a/src/components/interface_language_switcher/interface_language_switcher.vue b/src/components/interface_language_switcher/interface_language_switcher.vue
index 76bdcdfe..d039e86b 100644
--- a/src/components/interface_language_switcher/interface_language_switcher.vue
+++ b/src/components/interface_language_switcher/interface_language_switcher.vue
@@ -19,7 +19,10 @@
{{ languageNames[i] }}
-
+
diff --git a/src/components/login_form/login_form.vue b/src/components/login_form/login_form.vue
index f6b767a2..4ab5d192 100644
--- a/src/components/login_form/login_form.vue
+++ b/src/components/login_form/login_form.vue
@@ -77,7 +77,8 @@
{{ error }}
diff --git a/src/components/media_modal/media_modal.vue b/src/components/media_modal/media_modal.vue
index cbcfc6d2..ea7f7a7f 100644
--- a/src/components/media_modal/media_modal.vue
+++ b/src/components/media_modal/media_modal.vue
@@ -34,7 +34,10 @@
class="modal-view-button-arrow modal-view-button-arrow--prev"
@click.stop.prevent="goPrev"
>
-
+
-
+
diff --git a/src/components/mfa_form/recovery_form.vue b/src/components/mfa_form/recovery_form.vue
index 61dbda24..f6526d2a 100644
--- a/src/components/mfa_form/recovery_form.vue
+++ b/src/components/mfa_form/recovery_form.vue
@@ -55,7 +55,8 @@
{{ error }}
diff --git a/src/components/mobile_nav/mobile_nav.vue b/src/components/mobile_nav/mobile_nav.vue
index 4d91af77..db9b0ba0 100644
--- a/src/components/mobile_nav/mobile_nav.vue
+++ b/src/components/mobile_nav/mobile_nav.vue
@@ -15,7 +15,11 @@
class="mobile-nav-button"
@click.stop.prevent="toggleMobileSidebar()"
>
-
+
-
+
-
+
-
+
{{ $t("nav.timelines") }}
-
+
{{ $t("nav.interactions") }}
@@ -25,13 +35,23 @@
>
{{ unreadChatCount }}
-
+
{{ $t("nav.chats") }}
-
+
{{ $t("nav.friend_requests") }}
- {{ $t("nav.about") }}
+ {{ $t("nav.about") }}
diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue
index 857727a4..b609ae04 100644
--- a/src/components/notification/notification.vue
+++ b/src/components/notification/notification.vue
@@ -18,7 +18,10 @@
href="#"
class="unmute"
@click.prevent="toggleMute"
- >
+ >
{{ notification.from_profile.name }}
-
+
{{ $t('notifications.favorited_you') }}
{{ $t('notifications.repeated_you') }}
-
+
{{ $t('notifications.followed_you') }}
-
+
{{ $t('notifications.follow_request') }}
-
+
{{ $t('notifications.migrated_to') }}
@@ -120,7 +136,10 @@
v-if="needMute"
href="#"
@click.prevent="toggleMute"
- >
+ >
diff --git a/src/components/panel_loading/panel_loading.vue b/src/components/panel_loading/panel_loading.vue
index 9bf3ab32..b15e7d38 100644
--- a/src/components/panel_loading/panel_loading.vue
+++ b/src/components/panel_loading/panel_loading.vue
@@ -1,7 +1,11 @@
-
+
{{ $t('general.loading') }}
diff --git a/src/components/poll/poll_form.vue b/src/components/poll/poll_form.vue
index f3e7a716..e598cf3b 100644
--- a/src/components/poll/poll_form.vue
+++ b/src/components/poll/poll_form.vue
@@ -36,7 +36,10 @@
class="add-option faint"
@click="addOption"
>
-
+
{{ $t("polls.add_option") }}
@@ -57,7 +60,10 @@
-
+
-
+
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 3cd9e7a5..9cf38a9a 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -15,7 +15,7 @@
@dragleave="fileDragStop"
@drop.stop="fileDrop"
>
-
+
-
+
-
+
@@ -245,7 +248,8 @@
diff --git a/src/components/settings_modal/tabs/theme_tab/preview.vue b/src/components/settings_modal/tabs/theme_tab/preview.vue
index 65863c54..20201e18 100644
--- a/src/components/settings_modal/tabs/theme_tab/preview.vue
+++ b/src/components/settings_modal/tabs/theme_tab/preview.vue
@@ -42,22 +42,26 @@
diff --git a/src/components/settings_modal/tabs/theme_tab/theme_tab.vue b/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
index 9cc1c392..280e1955 100644
--- a/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
+++ b/src/components/settings_modal/tabs/theme_tab/theme_tab.vue
@@ -80,7 +80,10 @@
{{ style[0] || style.name }}
-
+
@@ -907,7 +910,10 @@
{{ $t('settings.style.shadows.components.' + shadow) }}
-
+
diff --git a/src/components/shadow_control/shadow_control.vue b/src/components/shadow_control/shadow_control.vue
index 32220ae8..78f0e544 100644
--- a/src/components/shadow_control/shadow_control.vue
+++ b/src/components/shadow_control/shadow_control.vue
@@ -78,35 +78,50 @@
{{ $t('settings.style.shadows.shadow_id', { value: index }) }}
-
+
-
+
-
+
-
+
-
+
- {{ $t("login.login") }}
+ {{ $t("login.login") }}
- {{ $t("nav.timelines") }}
+ {{ $t("nav.timelines") }}
- {{ $t("nav.chats") }}
+ {{ $t("nav.chats") }}
- {{ $t("nav.interactions") }}
+ {{ $t("nav.interactions") }}
- {{ $t("nav.friend_requests") }}
+ {{ $t("nav.friend_requests") }}
- {{ $t("shoutbox.title") }}
+ {{ $t("shoutbox.title") }}
@@ -100,7 +130,12 @@
@click="toggleDrawer"
>
- {{ $t("nav.search") }}
+ {{ $t("nav.search") }}
- {{ $t("nav.who_to_follow") }}
+ {{ $t("nav.who_to_follow") }}
@@ -116,12 +156,22 @@
href="#"
@click="openSettingsModal"
>
- {{ $t("settings.settings") }}
+ {{ $t("settings.settings") }}
- {{ $t("nav.about") }}
+ {{ $t("nav.about") }}
- {{ $t("nav.administration") }}
+ {{ $t("nav.administration") }}
- {{ $t("login.logout") }}
+ {{ $t("login.logout") }}
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index b9b967cc..c94862d4 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -13,7 +13,7 @@
+ >
@@ -51,8 +51,12 @@
href="#"
class="unmute button-icon"
@click.prevent="toggleMute"
- >
-
+ >
+
@@ -61,7 +65,10 @@
v-if="showPinned"
class="pin"
>
-
+
{{ $t('status.pinned') }}
@@ -230,7 +253,7 @@
icon="reply"
size="lg"
flip="horizontal"
- />
+ />
@@ -358,7 +381,6 @@
@onSuccess="clearError"
/>
-
-
+
diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue
index ab17cbbc..aaf0349c 100644
--- a/src/components/timeline/timeline.vue
+++ b/src/components/timeline/timeline.vue
@@ -92,7 +92,11 @@
v-else
class="new-status-notification text-center panel-footer"
>
-
+
diff --git a/src/components/timeline_menu/timeline_menu.vue b/src/components/timeline_menu/timeline_menu.vue
index 1e546fae..8099ddd5 100644
--- a/src/components/timeline_menu/timeline_menu.vue
+++ b/src/components/timeline_menu/timeline_menu.vue
@@ -16,27 +16,52 @@
-
- {{ $t("nav.timeline") }}
+ {{ $t("nav.timeline") }}
-
- {{ $t("nav.bookmarks") }}
+ {{ $t("nav.bookmarks") }}
-
- {{ $t("nav.dms") }}
+ {{ $t("nav.dms") }}
-
- {{ $t("nav.public_tl") }}
+ {{ $t("nav.public_tl") }}
-
- {{ $t("nav.twkn") }}
+ {{ $t("nav.twkn") }}
@@ -46,7 +71,10 @@
class="title timeline-menu-title"
>
{{ timelineName() }}
-
+
diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index 6c35c781..c5f10b75 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -21,7 +21,11 @@
:user="user"
/>
-
+
-
+
-
+
Striped bg
-
+
@@ -162,8 +176,15 @@
:title="$t('user_card.unsubscribe')"
>
-
-
+
+
diff --git a/src/components/user_list_popover/user_list_popover.vue b/src/components/user_list_popover/user_list_popover.vue
index dd6977d2..95673733 100644
--- a/src/components/user_list_popover/user_list_popover.vue
+++ b/src/components/user_list_popover/user_list_popover.vue
@@ -31,7 +31,11 @@
-
+
--
cgit v1.2.3-70-g09d2
From 1b50d700aa496fdf9e7e774cd7d6b8835b91d13f Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 21 Oct 2020 00:34:42 +0300
Subject: bye bye fontello
---
build/webpack.base.conf.js | 10 -
package.json | 1 -
src/components/media_upload/media_upload.vue | 10 -
static/fontello.json | 416 ---------------------------
4 files changed, 437 deletions(-)
delete mode 100644 static/fontello.json
(limited to 'src/components')
diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js
index ef40333c..d987eff1 100644
--- a/build/webpack.base.conf.js
+++ b/build/webpack.base.conf.js
@@ -3,7 +3,6 @@ var config = require('../config')
var utils = require('./utils')
var projectRoot = path.resolve(__dirname, '../')
var ServiceWorkerWebpackPlugin = require('serviceworker-webpack-plugin')
-var FontelloPlugin = require("fontello-webpack-plugin")
var env = process.env.NODE_ENV
// check env & config/index.js to decide weither to enable CSS Sourcemaps for the
@@ -94,15 +93,6 @@ module.exports = {
new ServiceWorkerWebpackPlugin({
entry: path.join(__dirname, '..', 'src/sw.js'),
filename: 'sw-pleroma.js'
- }),
- new FontelloPlugin({
- config: require('../static/fontello.json'),
- host: 'https://fontello.com',
- name: 'fontello',
- output: {
- css: 'static/[name].' + now + '.css', // [hash] is not supported. Use the current timestamp instead for versioning.
- font: 'static/font/[name].' + now + '.[ext]'
- }
})
]
}
diff --git a/package.json b/package.json
index 6bc285c8..14738c3e 100644
--- a/package.json
+++ b/package.json
@@ -72,7 +72,6 @@
"eventsource-polyfill": "^0.9.6",
"express": "^4.13.3",
"file-loader": "^3.0.1",
- "fontello-webpack-plugin": "https://github.com/w3geo/fontello-webpack-plugin.git#6149eac8f2672ab6da089e8802fbfcac98487186",
"function-bind": "^1.0.2",
"html-webpack-plugin": "^3.0.0",
"http-proxy-middleware": "^0.17.2",
diff --git a/src/components/media_upload/media_upload.vue b/src/components/media_upload/media_upload.vue
index 15b2b8e4..88251a26 100644
--- a/src/components/media_upload/media_upload.vue
+++ b/src/components/media_upload/media_upload.vue
@@ -43,15 +43,5 @@
.new-icon {
cursor: pointer;
}
-
- .progress-icon {
- display: inline-block;
- line-height: 0;
- &::before {
- /* Overriding fontello to achieve the perfect speeeen */
- margin: 0;
- line-height: 0;
- }
- }
}
diff --git a/static/fontello.json b/static/fontello.json
deleted file mode 100644
index b0136fd9..00000000
--- a/static/fontello.json
+++ /dev/null
@@ -1,416 +0,0 @@
-{
- "name": "",
- "css_prefix_text": "icon-",
- "css_use_suffix": false,
- "hinting": true,
- "units_per_em": 1000,
- "ascent": 857,
- "glyphs": [
- {
- "uid": "9bd60140934a1eb9236fd7a8ab1ff6ba",
- "css": "spin4",
- "code": 59444,
- "src": "fontelico"
- },
- {
- "uid": "5211af474d3a9848f67f945e2ccaf143",
- "css": "cancel",
- "code": 59392,
- "src": "fontawesome"
- },
- {
- "uid": "eeec3208c90b7b48e804919d0d2d4a41",
- "css": "upload",
- "code": 59393,
- "src": "fontawesome"
- },
- {
- "uid": "2a6740fc2f9d0edea54205963f662594",
- "css": "spin3",
- "code": 59442,
- "src": "fontelico"
- },
- {
- "uid": "c6be5a58ee4e63a5ec399c2b0d15cf2c",
- "css": "reply",
- "code": 61714,
- "src": "fontawesome"
- },
- {
- "uid": "474656633f79ea2f1dad59ff63f6bf07",
- "css": "star",
- "code": 59394,
- "src": "fontawesome"
- },
- {
- "uid": "d17030afaecc1e1c22349b99f3c4992a",
- "css": "star-empty",
- "code": 59395,
- "src": "fontawesome"
- },
- {
- "uid": "09feb4465d9bd1364f4e301c9ddbaa92",
- "css": "retweet",
- "code": 59396,
- "src": "fontawesome"
- },
- {
- "uid": "7fd683b2c518ceb9e5fa6757f2276faa",
- "css": "eye-off",
- "code": 59397,
- "src": "fontawesome"
- },
- {
- "uid": "73ffeb70554099177620847206c12457",
- "css": "binoculars",
- "code": 61925,
- "src": "fontawesome"
- },
- {
- "uid": "e99461abfef3923546da8d745372c995",
- "css": "cog",
- "code": 59399,
- "src": "fontawesome"
- },
- {
- "uid": "1bafeeb1808a5fe24484c7890096901a",
- "css": "user-plus",
- "code": 62004,
- "src": "fontawesome"
- },
- {
- "uid": "559647a6f430b3aeadbecd67194451dd",
- "css": "menu",
- "code": 61641,
- "src": "fontawesome"
- },
- {
- "uid": "0d20938846444af8deb1920dc85a29fb",
- "css": "logout",
- "code": 59400,
- "src": "fontawesome"
- },
- {
- "uid": "ccddff8e8670dcd130e3cb55fdfc2fd0",
- "css": "down-open",
- "code": 59401,
- "src": "fontawesome"
- },
- {
- "uid": "44b9e75612c5fad5505edd70d071651f",
- "css": "attach",
- "code": 59402,
- "src": "entypo"
- },
- {
- "uid": "e15f0d620a7897e2035c18c80142f6d9",
- "css": "link-ext",
- "code": 61582,
- "src": "fontawesome"
- },
- {
- "uid": "e35de5ea31cd56970498e33efbcb8e36",
- "css": "link-ext-alt",
- "code": 61583,
- "src": "fontawesome"
- },
- {
- "uid": "381da2c2f7fd51f8de877c044d7f439d",
- "css": "picture",
- "code": 59403,
- "src": "fontawesome"
- },
- {
- "uid": "872d9516df93eb6b776cc4d94bd97dac",
- "css": "video",
- "code": 59404,
- "src": "fontawesome"
- },
- {
- "uid": "399ef63b1e23ab1b761dfbb5591fa4da",
- "css": "right-open",
- "code": 59405,
- "src": "fontawesome"
- },
- {
- "uid": "d870630ff8f81e6de3958ecaeac532f2",
- "css": "left-open",
- "code": 59406,
- "src": "fontawesome"
- },
- {
- "uid": "fe6697b391355dec12f3d86d6d490397",
- "css": "up-open",
- "code": 59407,
- "src": "fontawesome"
- },
- {
- "uid": "9c1376672bb4f1ed616fdd78a23667e9",
- "css": "comment-empty",
- "code": 61669,
- "src": "fontawesome"
- },
- {
- "uid": "ccc2329632396dc096bb638d4b46fb98",
- "css": "mail-alt",
- "code": 61664,
- "src": "fontawesome"
- },
- {
- "uid": "c1f1975c885aa9f3dad7810c53b82074",
- "css": "lock",
- "code": 59409,
- "src": "fontawesome"
- },
- {
- "uid": "05376be04a27d5a46e855a233d6e8508",
- "css": "lock-open-alt",
- "code": 61758,
- "src": "fontawesome"
- },
- {
- "uid": "197375a3cea8cb90b02d06e4ddf1433d",
- "css": "globe",
- "code": 59410,
- "src": "fontawesome"
- },
- {
- "uid": "b3a9e2dab4d19ea3b2f628242c926bfe",
- "css": "brush",
- "code": 59411,
- "src": "iconic"
- },
- {
- "uid": "9dd9e835aebe1060ba7190ad2b2ed951",
- "css": "search",
- "code": 59398,
- "src": "fontawesome"
- },
- {
- "uid": "ca90da02d2c6a3183f2458e4dc416285",
- "css": "adjust",
- "code": 59414,
- "src": "fontawesome"
- },
- {
- "uid": "5e2ab018e3044337bcef5f7e94098ea1",
- "css": "thumbs-up-alt",
- "code": 61796,
- "src": "fontawesome"
- },
- {
- "uid": "c76b7947c957c9b78b11741173c8349b",
- "css": "attention",
- "code": 59412,
- "src": "fontawesome"
- },
- {
- "uid": "1a5cfa186647e8c929c2b17b9fc4dac1",
- "css": "plus-squared",
- "code": 61694,
- "src": "fontawesome"
- },
- {
- "uid": "44e04715aecbca7f266a17d5a7863c68",
- "css": "plus",
- "code": 59413,
- "src": "fontawesome"
- },
- {
- "uid": "41087bc74d4b20b55059c60a33bf4008",
- "css": "edit",
- "code": 59415,
- "src": "fontawesome"
- },
- {
- "uid": "5717236f6134afe2d2a278a5c9b3927a",
- "css": "play-circled",
- "code": 61764,
- "src": "fontawesome"
- },
- {
- "uid": "d35a1d35efeb784d1dc9ac18b9b6c2b6",
- "css": "pencil",
- "code": 59416,
- "src": "fontawesome"
- },
- {
- "uid": "266d5d9adf15a61800477a5acf9a4462",
- "css": "chart-bar",
- "code": 59419,
- "src": "fontawesome"
- },
- {
- "uid": "d862a10e1448589215be19702f98f2c1",
- "css": "smile",
- "code": 61720,
- "src": "fontawesome"
- },
- {
- "uid": "671f29fa10dda08074a4c6a341bb4f39",
- "css": "bell-alt",
- "code": 61683,
- "src": "fontawesome"
- },
- {
- "uid": "5bb103cd29de77e0e06a52638527b575",
- "css": "wrench",
- "code": 59418,
- "src": "fontawesome"
- },
- {
- "uid": "5b0772e9484a1a11646793a82edd622a",
- "css": "pin",
- "code": 59417,
- "src": "fontawesome"
- },
- {
- "uid": "22411a88489225a018f68db737de3c77",
- "css": "ellipsis",
- "code": 61761,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M214 411V518Q214 540 199 556T161 571H54Q31 571 16 556T0 518V411Q0 388 16 373T54 357H161Q183 357 199 373T214 411ZM500 411V518Q500 540 484 556T446 571H339Q317 571 301 556T286 518V411Q286 388 301 373T339 357H446Q469 357 484 373T500 411ZM786 411V518Q786 540 770 556T732 571H625Q603 571 587 556T571 518V411Q571 388 587 373T625 357H732Q755 357 770 373T786 411Z",
- "width": 785.7
- },
- "search": [
- "ellipsis"
- ]
- },
- {
- "uid": "0bef873af785ead27781fdf98b3ae740",
- "css": "bell-ringing-o",
- "code": 59408,
- "src": "custom_icons",
- "selected": true,
- "svg": {
- "path": "M497.8 0C468.3 0 444.4 23.9 444.4 53.3 444.4 61.1 446.1 68.3 448.9 75 301.7 96.7 213.3 213.3 213.3 320 213.3 588.3 117.8 712.8 35.6 782.2 35.6 821.1 67.8 853.3 106.7 853.3H355.6C355.6 931.7 419.4 995.6 497.8 995.6S640 931.7 640 853.3H888.9C927.8 853.3 960 821.1 960 782.2 877.8 712.8 782.2 588.3 782.2 320 782.2 213.3 693.9 96.7 546.7 75 549.4 68.3 551.1 61.1 551.1 53.3 551.1 23.9 527.2 0 497.8 0ZM189.4 44.8C108.4 118.6 70.5 215.1 71.1 320.2L142.2 319.8C141.7 231.2 170.4 158.3 237.3 97.4L189.4 44.8ZM806.2 44.8L758.3 97.4C825.2 158.3 853.9 231.2 853.3 319.8L924.4 320.2C925.1 215.1 887.2 118.6 806.2 44.8ZM408.9 844.4C413.9 844.4 417.8 848.3 417.8 853.3 417.8 897.2 453.9 933.3 497.8 933.3 502.8 933.3 506.7 937.2 506.7 942.2S502.8 951.1 497.8 951.1C443.9 951.1 400 907.2 400 853.3 400 848.3 403.9 844.4 408.9 844.4Z",
- "width": 1000
- },
- "search": [
- "bell-ringing-o"
- ]
- },
- {
- "uid": "0b2b66e526028a6972d51a6f10281b4b",
- "css": "zoom-in",
- "code": 59420,
- "src": "fontawesome"
- },
- {
- "uid": "0bda4bc779d4c32623dec2e43bd67ee8",
- "css": "gauge",
- "code": 61668,
- "src": "fontawesome"
- },
- {
- "uid": "31972e4e9d080eaa796290349ae6c1fd",
- "css": "users",
- "code": 59421,
- "src": "fontawesome"
- },
- {
- "uid": "e82cedfa1d5f15b00c5a81c9bd731ea2",
- "css": "info-circled",
- "code": 59423,
- "src": "fontawesome"
- },
- {
- "uid": "w3nzesrlbezu6f30q7ytyq919p6gdlb6",
- "css": "home-2",
- "code": 59425,
- "src": "typicons"
- },
- {
- "uid": "dcedf50ab1ede3283d7a6c70e2fe32f3",
- "css": "chat",
- "code": 59422,
- "src": "fontawesome"
- },
- {
- "uid": "3a00327e61b997b58518bd43ed83c3df",
- "css": "login",
- "code": 59424,
- "src": "fontawesome"
- },
- {
- "uid": "f3ebd6751c15a280af5cc5f4a764187d",
- "css": "arrow-curved",
- "code": 59426,
- "src": "iconic"
- },
- {
- "uid": "0ddd3e8201ccc7d41f7b7c9d27eca6c1",
- "css": "link",
- "code": 59427,
- "src": "fontawesome"
- },
- {
- "uid": "4aad6bb50b02c18508aae9cbe14e784e",
- "css": "share",
- "code": 61920,
- "src": "fontawesome"
- },
- {
- "uid": "8b80d36d4ef43889db10bc1f0dc9a862",
- "css": "user",
- "code": 59428,
- "src": "fontawesome"
- },
- {
- "uid": "12f4ece88e46abd864e40b35e05b11cd",
- "css": "ok",
- "code": 59431,
- "src": "fontawesome"
- },
- {
- "uid": "4109c474ff99cad28fd5a2c38af2ec6f",
- "css": "filter",
- "code": 61616,
- "src": "fontawesome"
- },
- {
- "uid": "9a76bc135eac17d2c8b8ad4a5774fc87",
- "css": "download",
- "code": 59429,
- "src": "fontawesome"
- },
- {
- "uid": "f04a5d24e9e659145b966739c4fde82a",
- "css": "bookmark",
- "code": 59430,
- "src": "fontawesome"
- },
- {
- "uid": "2f5ef6f6b7aaebc56458ab4e865beff5",
- "css": "bookmark-empty",
- "code": 61591,
- "src": "fontawesome"
- },
- {
- "uid": "9ea0a737ccc45d6c510dcbae56058849",
- "css": "music",
- "code": 59432,
- "src": "fontawesome"
- },
- {
- "uid": "1b5a5d7b7e3c71437f5a26befdd045ed",
- "css": "doc",
- "code": 59433,
- "src": "fontawesome"
- },
- {
- "uid": "98d9c83c1ee7c2c25af784b518c522c5",
- "css": "block",
- "code": 59434,
- "src": "fontawesome"
- },
- {
- "uid": "3e674995cacc2b09692c096ea7eb6165",
- "css": "megaphone",
- "code": 59435,
- "src": "fontawesome"
- }
- ]
-}
\ No newline at end of file
--
cgit v1.2.3-70-g09d2
From 048e67f5fc8b480496c0846661bec0129f4909e0 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 21 Oct 2020 02:07:05 +0300
Subject: make subjectline input use size=1 for compatibility with CJK fonts
---
src/components/poll/poll_form.vue | 1 +
src/components/post_status_form/post_status_form.vue | 1 +
2 files changed, 2 insertions(+)
(limited to 'src/components')
diff --git a/src/components/poll/poll_form.vue b/src/components/poll/poll_form.vue
index d53f3837..a5bf0618 100644
--- a/src/components/poll/poll_form.vue
+++ b/src/components/poll/poll_form.vue
@@ -12,6 +12,7 @@
--
cgit v1.2.3-70-g09d2
From 2c441c79225e1f4412eee4300820f57c4ef5f4fc Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Tue, 27 Oct 2020 10:03:04 +0200
Subject: fix back button size, fix missing chat notifications being marked as
read too eagerly, fix promiseinterval erroring when not getting a promise
---
src/components/chat/chat.js | 14 ++++++++++----
src/components/chat/chat.scss | 11 ++++++-----
src/services/chat_utils/chat_utils.js | 2 +-
src/services/promise_interval/promise_interval.js | 9 ++++++++-
4 files changed, 25 insertions(+), 11 deletions(-)
(limited to 'src/components')
diff --git a/src/components/chat/chat.js b/src/components/chat/chat.js
index 34e723d0..681ba08f 100644
--- a/src/components/chat/chat.js
+++ b/src/components/chat/chat.js
@@ -11,6 +11,7 @@ import { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContaine
const BOTTOMED_OUT_OFFSET = 10
const JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 150
const SAFE_RESIZE_TIME_OFFSET = 100
+const MARK_AS_READ_DELAY = 1500
const Chat = {
components: {
@@ -94,7 +95,7 @@ const Chat = {
const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)
this.$nextTick(() => {
if (bottomedOutBeforeUpdate) {
- this.scrollDown({ forceRead: !document.hidden })
+ this.scrollDown()
}
})
},
@@ -200,7 +201,7 @@ const Chat = {
this.$nextTick(() => {
scrollable.scrollTo({ top: scrollable.scrollHeight, left: 0, behavior })
})
- if (forceRead || this.newMessageCount > 0) {
+ if (forceRead) {
this.readChat()
}
},
@@ -225,12 +226,17 @@ const Chat = {
} else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {
this.jumpToBottomButtonVisible = false
if (this.newMessageCount > 0) {
- this.readChat()
+ // Use a delay before marking as read to prevent situation where new messages
+ // arrive just as you're leaving the view and messages that you didn't actually
+ // get to see get marked as read.
+ window.setTimeout(() => {
+ if (this.$el) this.readChat()
+ }, MARK_AS_READ_DELAY)
}
} else {
this.jumpToBottomButtonVisible = true
}
- }, 100),
+ }, 200),
handleScrollUp (positionBeforeLoading) {
const positionAfterLoading = getScrollPosition(this.$refs.scrollable)
this.$refs.scrollable.scrollTo({
diff --git a/src/components/chat/chat.scss b/src/components/chat/chat.scss
index 012a1b1d..f91de618 100644
--- a/src/components/chat/chat.scss
+++ b/src/components/chat/chat.scss
@@ -25,7 +25,7 @@
min-height: 100%;
margin: 0 0 0 0;
border-radius: 10px 10px 0 0;
- border-radius: var(--panelRadius, 10px) var(--panelRadius, 10px) 0 0 ;
+ border-radius: var(--panelRadius, 10px) var(--panelRadius, 10px) 0 0;
&::after {
border-radius: 0;
@@ -58,11 +58,12 @@
.go-back-button {
cursor: pointer;
- margin-right: 1.4em;
+ padding: 0.6em;
+ margin: -0.6em 0.8em -0.6em -0.6em;
+ height: 100%;
i {
- display: flex;
- align-items: center;
+ vertical-align: middle;
}
}
@@ -78,7 +79,7 @@
display: flex;
justify-content: center;
align-items: center;
- box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.3), 0px 2px 4px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.3);
z-index: 10;
transition: 0.35s all;
transition-timing-function: cubic-bezier(0, 1, 0.5, 1);
diff --git a/src/services/chat_utils/chat_utils.js b/src/services/chat_utils/chat_utils.js
index 583438f7..86fe1af9 100644
--- a/src/services/chat_utils/chat_utils.js
+++ b/src/services/chat_utils/chat_utils.js
@@ -3,7 +3,7 @@ import { showDesktopNotification } from '../desktop_notification_utils/desktop_n
export const maybeShowChatNotification = (store, chat) => {
if (!chat.lastMessage) return
if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return
- if (store.rootState.users.currentUser.id === chat.lastMessage.account.id) return
+ if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return
const opts = {
tag: chat.lastMessage.id,
diff --git a/src/services/promise_interval/promise_interval.js b/src/services/promise_interval/promise_interval.js
index cf17970d..0c0a66a0 100644
--- a/src/services/promise_interval/promise_interval.js
+++ b/src/services/promise_interval/promise_interval.js
@@ -10,7 +10,14 @@ export const promiseInterval = (promiseCall, interval) => {
let timeout = null
const func = () => {
- promiseCall().finally(() => {
+ const promise = promiseCall()
+ // something unexpected happened and promiseCall did not
+ // return a promise, abort the loop.
+ if (!(promise && promise.finally)) {
+ console.warn('promiseInterval: promise call did not return a promise, stopping interval.')
+ return
+ }
+ promise.finally(() => {
if (stopped) return
timeout = window.setTimeout(func, interval)
})
--
cgit v1.2.3-70-g09d2
From 1403f20f9feda44206b35f5b303652facd5e2011 Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Tue, 27 Oct 2020 12:59:50 +0200
Subject: block clicks for a second when timeline moves
---
src/components/timeline/timeline.js | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/timeline/timeline.js b/src/components/timeline/timeline.js
index 17680542..25fa3e41 100644
--- a/src/components/timeline/timeline.js
+++ b/src/components/timeline/timeline.js
@@ -2,7 +2,7 @@ import Status from '../status/status.vue'
import timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'
import Conversation from '../conversation/conversation.vue'
import TimelineMenu from '../timeline_menu/timeline_menu.vue'
-import { throttle, keyBy } from 'lodash'
+import { debounce, throttle, keyBy } from 'lodash'
export const getExcludedStatusIdsByPinning = (statuses, pinnedStatusIds) => {
const ids = []
@@ -34,7 +34,8 @@ const Timeline = {
paused: false,
unfocused: false,
bottomedOut: false,
- virtualScrollIndex: 0
+ virtualScrollIndex: 0,
+ blockingClicks: false
}
},
components: {
@@ -124,6 +125,21 @@ const Timeline = {
this.$store.commit('setLoading', { timeline: this.timelineName, value: false })
},
methods: {
+ blockClickEvent (e) {
+ e.stopPropagation()
+ e.preventDefault()
+ },
+ stopBlockingClicks: debounce(function () {
+ this.blockingClicks = false
+ this.$el && this.$el.removeEventListener('click', this.blockClickEvent, true)
+ }, 1000),
+ blockClicksTemporarily () {
+ if (!this.blockingClicks) {
+ this.$el.addEventListener('click', this.blockClickEvent, true)
+ this.blockingClicks = true
+ }
+ this.stopBlockingClicks()
+ },
handleShortKey (e) {
// Ignore when input fields are focused
if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return
@@ -135,6 +151,7 @@ const Timeline = {
this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })
this.fetchOlderStatuses()
} else {
+ this.blockClicksTemporarily()
this.$store.commit('showNewStatuses', { timeline: this.timelineName })
this.paused = false
}
--
cgit v1.2.3-70-g09d2
From 7007659e05842dc06eb2c13eddaba6ab657df5ea Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Wed, 28 Oct 2020 08:53:23 +0200
Subject: change input blocking to use css
---
src/components/timeline/timeline.js | 10 +++-------
src/components/timeline/timeline.vue | 9 +++++++--
2 files changed, 10 insertions(+), 9 deletions(-)
(limited to 'src/components')
diff --git a/src/components/timeline/timeline.js b/src/components/timeline/timeline.js
index 25fa3e41..ea290fde 100644
--- a/src/components/timeline/timeline.js
+++ b/src/components/timeline/timeline.js
@@ -65,8 +65,10 @@ const Timeline = {
}
},
classes () {
+ let rootClasses = !this.embedded ? ['panel', 'panel-default'] : []
+ if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked'])
return {
- root: ['timeline'].concat(!this.embedded ? ['panel', 'panel-default'] : []),
+ root: rootClasses,
header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading'] : []),
body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),
footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])
@@ -125,17 +127,11 @@ const Timeline = {
this.$store.commit('setLoading', { timeline: this.timelineName, value: false })
},
methods: {
- blockClickEvent (e) {
- e.stopPropagation()
- e.preventDefault()
- },
stopBlockingClicks: debounce(function () {
this.blockingClicks = false
- this.$el && this.$el.removeEventListener('click', this.blockClickEvent, true)
}, 1000),
blockClicksTemporarily () {
if (!this.blockingClicks) {
- this.$el.addEventListener('click', this.blockClickEvent, true)
this.blockingClicks = true
}
this.stopBlockingClicks()
diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue
index c1e2f44b..234ca2d2 100644
--- a/src/components/timeline/timeline.vue
+++ b/src/components/timeline/timeline.vue
@@ -1,5 +1,5 @@
-
+
@import '../../_variables.scss';
-.timeline {
+.Timeline {
.loadmore-text {
opacity: 1;
}
+
+ &.-blocked {
+ pointer-events: none;
+ cursor: wait;
+ }
}
.timeline-heading {
--
cgit v1.2.3-70-g09d2
From 6d7ecd7d800450ab07cb2895d4af96ab13849ded Mon Sep 17 00:00:00 2001
From: Shpuld Shpludson
Date: Wed, 28 Oct 2020 10:02:51 +0000
Subject: Apply 1 suggestion(s) to 1 file(s)
---
src/components/timeline/timeline.vue | 1 -
1 file changed, 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue
index 234ca2d2..e4404daf 100644
--- a/src/components/timeline/timeline.vue
+++ b/src/components/timeline/timeline.vue
@@ -110,7 +110,6 @@
&.-blocked {
pointer-events: none;
- cursor: wait;
}
}
--
cgit v1.2.3-70-g09d2
From b6cf2bcefd5ddd20c11ee4b0d0f94e29e8f59c40 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 28 Oct 2020 21:31:16 +0200
Subject: improved the semantics for our icon scale, fixed preview, fixed
navbar desktop
---
src/App.scss | 12 ++++---
src/App.vue | 9 ++---
src/components/chat_new/chat_new.vue | 3 +-
src/components/extra_buttons/extra_buttons.vue | 2 +-
src/components/favorite_button/favorite_button.vue | 6 ++--
.../global_notice_list/global_notice_list.vue | 2 +-
src/components/image_cropper/image_cropper.vue | 2 +-
src/components/login_form/login_form.vue | 2 +-
src/components/mfa_form/recovery_form.vue | 2 +-
src/components/mfa_form/totp_form.vue | 2 +-
src/components/mobile_nav/mobile_nav.vue | 9 ++---
src/components/nav_panel/nav_panel.vue | 41 ++++++++--------------
src/components/notification/notification.vue | 8 ++---
src/components/password_reset/password_reset.vue | 2 +-
.../post_status_form/post_status_form.vue | 16 ++++-----
src/components/react_button/react_button.vue | 3 +-
src/components/reply_button/reply_button.vue | 6 ++--
src/components/retweet_button/retweet_button.vue | 9 ++---
src/components/scope_selector/scope_selector.vue | 12 +++----
src/components/search_bar/search_bar.vue | 6 ++--
src/components/settings_modal/tabs/profile_tab.vue | 4 +--
.../settings_modal/tabs/theme_tab/preview.vue | 8 ++---
src/components/side_drawer/side_drawer.vue | 38 +++++++-------------
src/components/status/status.vue | 24 +++++--------
src/components/timeline_menu/timeline_menu.vue | 15 +++-----
src/components/user_card/user_card.vue | 3 +-
26 files changed, 95 insertions(+), 151 deletions(-)
(limited to 'src/components')
diff --git a/src/App.scss b/src/App.scss
index 06915e16..6884f314 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -812,14 +812,18 @@ nav {
}
}
-.button-icon {
- &.svg-inline--fa.fa-lg {
- display: inline-block;
- padding: 0 0.3em;
+.fa-scale-110 {
+ &.svg-inline--fa {
font-size: 1.1em;
}
}
+.fa-old-padding {
+ &.svg-inline--fa {
+ padding: 0 0.3em;
+ }
+}
+
@keyframes shakeError {
0% {
transform: translateX(0);
diff --git a/src/App.vue b/src/App.vue
index c27f51bf..6e44c7e9 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -53,8 +53,7 @@
>
@@ -66,8 +65,7 @@
target="_blank"
>
@@ -78,8 +76,7 @@
@click.prevent="logout"
>
diff --git a/src/components/chat_new/chat_new.vue b/src/components/chat_new/chat_new.vue
index 8f02a699..f3894a3a 100644
--- a/src/components/chat_new/chat_new.vue
+++ b/src/components/chat_new/chat_new.vue
@@ -20,8 +20,7 @@
diff --git a/src/components/favorite_button/favorite_button.vue b/src/components/favorite_button/favorite_button.vue
index 6c7bfdab..dfe12f86 100644
--- a/src/components/favorite_button/favorite_button.vue
+++ b/src/components/favorite_button/favorite_button.vue
@@ -2,11 +2,10 @@
{{ status.fave_num }}
@@ -14,10 +13,9 @@
{{ status.fave_num }}
diff --git a/src/components/global_notice_list/global_notice_list.vue b/src/components/global_notice_list/global_notice_list.vue
index 06b6af9c..8a33b9eb 100644
--- a/src/components/global_notice_list/global_notice_list.vue
+++ b/src/components/global_notice_list/global_notice_list.vue
@@ -10,7 +10,7 @@
{{ $t(notice.messageKey, notice.messageArgs) }}
diff --git a/src/components/image_cropper/image_cropper.vue b/src/components/image_cropper/image_cropper.vue
index 605f7427..75def612 100644
--- a/src/components/image_cropper/image_cropper.vue
+++ b/src/components/image_cropper/image_cropper.vue
@@ -43,7 +43,7 @@
>
{{ submitErrorMsg }}
diff --git a/src/components/login_form/login_form.vue b/src/components/login_form/login_form.vue
index 4ab5d192..a1f77210 100644
--- a/src/components/login_form/login_form.vue
+++ b/src/components/login_form/login_form.vue
@@ -77,7 +77,7 @@
{{ error }}
diff --git a/src/components/mfa_form/recovery_form.vue b/src/components/mfa_form/recovery_form.vue
index f6526d2a..78953649 100644
--- a/src/components/mfa_form/recovery_form.vue
+++ b/src/components/mfa_form/recovery_form.vue
@@ -55,7 +55,7 @@
{{ error }}
diff --git a/src/components/mfa_form/totp_form.vue b/src/components/mfa_form/totp_form.vue
index 0c6412ea..9401cad5 100644
--- a/src/components/mfa_form/totp_form.vue
+++ b/src/components/mfa_form/totp_form.vue
@@ -58,7 +58,7 @@
{{ error }}
diff --git a/src/components/mobile_nav/mobile_nav.vue b/src/components/mobile_nav/mobile_nav.vue
index db9b0ba0..d2bc65ab 100644
--- a/src/components/mobile_nav/mobile_nav.vue
+++ b/src/components/mobile_nav/mobile_nav.vue
@@ -16,8 +16,7 @@
@click.stop.prevent="toggleMobileSidebar()"
>
diff --git a/src/components/nav_panel/nav_panel.vue b/src/components/nav_panel/nav_panel.vue
index 4755d7b7..e7301328 100644
--- a/src/components/nav_panel/nav_panel.vue
+++ b/src/components/nav_panel/nav_panel.vue
@@ -9,22 +9,18 @@
>
- {{ $t("nav.timelines") }}
+ />{{ $t("nav.timelines") }}
- {{ $t("nav.interactions") }}
+ />{{ $t("nav.interactions") }}
@@ -37,22 +33,18 @@
- {{ $t("nav.chats") }}
+ />{{ $t("nav.chats") }}
- {{ $t("nav.friend_requests") }}
+ />{{ $t("nav.friend_requests") }}
{{ $t("nav.about") }}
@@ -94,7 +85,7 @@
}
.follow-request-count {
- margin: -6px 10px;
+ vertical-align: bottom;
background-color: $fallback--bg;
background-color: var(--input, $fallback--faint);
}
@@ -126,7 +117,8 @@
a {
display: block;
- padding: 0.8em 0.85em;
+ align-items: stretch;
+ padding: 0.9em 1em;
&:hover {
background-color: $fallback--lightBg;
@@ -156,13 +148,8 @@
}
}
- .button-icon {
- margin-left: -0.1em;
- margin-right: 0.2em;
- }
-
- .button-icon:before {
- width: 1.1em;
+ .fa-scale-110 {
+ margin-right: 0.8em;
}
}
diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue
index b609ae04..2bbde108 100644
--- a/src/components/notification/notification.vue
+++ b/src/components/notification/notification.vue
@@ -19,7 +19,7 @@
class="unmute"
@click.prevent="toggleMute"
>
@@ -137,7 +137,7 @@
href="#"
@click.prevent="toggleMute"
>
@@ -157,13 +157,13 @@
>
diff --git a/src/components/password_reset/password_reset.vue b/src/components/password_reset/password_reset.vue
index 3fe42b84..0deb9ccf 100644
--- a/src/components/password_reset/password_reset.vue
+++ b/src/components/password_reset/password_reset.vue
@@ -63,7 +63,7 @@
>
{{ error }}
diff --git a/src/components/post_status_form/post_status_form.vue b/src/components/post_status_form/post_status_form.vue
index 9cf38a9a..a427bb98 100644
--- a/src/components/post_status_form/post_status_form.vue
+++ b/src/components/post_status_form/post_status_form.vue
@@ -37,7 +37,7 @@
>
{{ $t('post_status.scope_notice.public') }}
@@ -49,7 +49,7 @@
>
{{ $t('post_status.scope_notice.unlisted') }}
@@ -61,7 +61,7 @@
>
{{ $t('post_status.scope_notice.private') }}
@@ -83,7 +83,7 @@
@click.stop.prevent="togglePreview"
>
{{ $t('post_status.preview') }}
-
+
Error: {{ error }}
@@ -302,7 +301,7 @@
class="media-upload-wrapper"
>
@@ -389,7 +388,6 @@
}
.preview-toggle {
- display: flex;
cursor: pointer;
user-select: none;
@@ -524,7 +522,7 @@
position: relative;
}
- .button-icon {
+ .fa-scale-110 fa-old-padding {
position: absolute;
margin: 10px;
margin: .75em;
diff --git a/src/components/react_button/react_button.vue b/src/components/react_button/react_button.vue
index 8395d5e3..694e6470 100644
--- a/src/components/react_button/react_button.vue
+++ b/src/components/react_button/react_button.vue
@@ -38,9 +38,8 @@
diff --git a/src/components/reply_button/reply_button.vue b/src/components/reply_button/reply_button.vue
index ae7b0e26..a0ac8941 100644
--- a/src/components/reply_button/reply_button.vue
+++ b/src/components/reply_button/reply_button.vue
@@ -2,9 +2,8 @@
diff --git a/src/components/retweet_button/retweet_button.vue b/src/components/retweet_button/retweet_button.vue
index 706c6b81..b234f3d9 100644
--- a/src/components/retweet_button/retweet_button.vue
+++ b/src/components/retweet_button/retweet_button.vue
@@ -3,9 +3,8 @@
@@ -25,9 +23,8 @@
{{ status.repeat_num }}
diff --git a/src/components/scope_selector/scope_selector.vue b/src/components/scope_selector/scope_selector.vue
index a43af23b..a22a4fda 100644
--- a/src/components/scope_selector/scope_selector.vue
+++ b/src/components/scope_selector/scope_selector.vue
@@ -12,8 +12,7 @@
>
diff --git a/src/components/search_bar/search_bar.vue b/src/components/search_bar/search_bar.vue
index 442e91b2..f1c3fd7a 100644
--- a/src/components/search_bar/search_bar.vue
+++ b/src/components/search_bar/search_bar.vue
@@ -8,8 +8,7 @@
:title="$t('nav.search')"
>
@@ -34,10 +33,9 @@
diff --git a/src/components/settings_modal/tabs/profile_tab.vue b/src/components/settings_modal/tabs/profile_tab.vue
index 5a659fc8..d62bc392 100644
--- a/src/components/settings_modal/tabs/profile_tab.vue
+++ b/src/components/settings_modal/tabs/profile_tab.vue
@@ -235,7 +235,7 @@
>
Error: {{ bannerUploadError }}
@@ -286,7 +286,7 @@
Error: {{ backgroundUploadError }}
diff --git a/src/components/settings_modal/tabs/theme_tab/preview.vue b/src/components/settings_modal/tabs/theme_tab/preview.vue
index 20201e18..3174fd7c 100644
--- a/src/components/settings_modal/tabs/theme_tab/preview.vue
+++ b/src/components/settings_modal/tabs/theme_tab/preview.vue
@@ -42,25 +42,25 @@
diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue
index 2a4d794a..eac0ddb2 100644
--- a/src/components/side_drawer/side_drawer.vue
+++ b/src/components/side_drawer/side_drawer.vue
@@ -37,9 +37,8 @@
>
{{ $t("login.login") }}
@@ -50,9 +49,8 @@
>
{{ $t("nav.timelines") }}
@@ -66,9 +64,8 @@
style="position: relative"
>
{{ $t("nav.chats") }}
{{ $t("nav.interactions") }}
@@ -97,9 +93,8 @@
>
{{ $t("nav.friend_requests") }}
{{ $t("shoutbox.title") }}
@@ -131,9 +125,8 @@
>
{{ $t("nav.search") }}
@@ -144,9 +137,8 @@
>
{{ $t("nav.who_to_follow") }}
@@ -157,9 +149,8 @@
@click="openSettingsModal"
>
{{ $t("settings.settings") }}
@@ -167,9 +158,8 @@
{{ $t("nav.about") }}
@@ -183,9 +173,8 @@
target="_blank"
>
{{ $t("nav.administration") }}
@@ -199,9 +188,8 @@
@click="doLogout"
>
{{ $t("login.logout") }}
@@ -284,7 +272,7 @@
--lightText: var(--popoverLightText, $fallback--lightText);
--icon: var(--popoverIcon, $fallback--icon);
- .button-icon:before {
+ .fa-scale-110 fa-old-padding:before {
width: 1.1em;
}
}
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index c94862d4..21412faa 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -11,7 +11,7 @@
>
{{ error }}
@@ -22,7 +22,7 @@
@@ -49,13 +49,12 @@
@@ -186,9 +185,8 @@
:title="status.visibility | capitalize"
>
@@ -249,9 +244,8 @@
@click.prevent="gotoOriginal(status.in_reply_to_status_id)"
>
{{ $t("nav.timeline") }}
@@ -28,8 +27,7 @@
{{ $t("nav.bookmarks") }}
@@ -38,8 +36,7 @@
{{ $t("nav.dms") }}
@@ -48,8 +45,7 @@
{{ $t("nav.public_tl") }}
@@ -58,8 +54,7 @@
{{ $t("nav.twkn") }}
diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index c5f10b75..55e231d2 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -22,9 +22,8 @@
/>
--
cgit v1.2.3-70-g09d2
From 7c4af4ce3fe140d8dbe3ff6da55dfd0edcef7778 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 28 Oct 2020 21:41:42 +0200
Subject: improved side-drawer alignments
---
src/components/side_drawer/side_drawer.vue | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue
index eac0ddb2..c3370a9d 100644
--- a/src/components/side_drawer/side_drawer.vue
+++ b/src/components/side_drawer/side_drawer.vue
@@ -320,7 +320,6 @@
border-bottom: 1px solid;
border-color: $fallback--border;
border-color: var(--border, $fallback--border);
- margin: 0.2em 0;
}
.side-drawer ul:last-child {
@@ -331,8 +330,11 @@
padding: 0;
a {
+ box-sizing: border-box;
display: block;
- padding: 0.5em 0.85em;
+ height: 3em;
+ line-height: 2em;
+ padding: 0.5em 0.7em;
&:hover {
background-color: $fallback--lightBg;
--
cgit v1.2.3-70-g09d2
From fc7dfb3b9ecb92d2971ddc7007f708dc664e69f0 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 28 Oct 2020 21:47:42 +0200
Subject: update & unify the navbars heights
---
src/components/nav_panel/nav_panel.vue | 5 ++++-
src/components/side_drawer/side_drawer.vue | 4 ++--
2 files changed, 6 insertions(+), 3 deletions(-)
(limited to 'src/components')
diff --git a/src/components/nav_panel/nav_panel.vue b/src/components/nav_panel/nav_panel.vue
index e7301328..7308fb1e 100644
--- a/src/components/nav_panel/nav_panel.vue
+++ b/src/components/nav_panel/nav_panel.vue
@@ -117,8 +117,11 @@
a {
display: block;
+ box-sizing: border-box;
align-items: stretch;
- padding: 0.9em 1em;
+ height: 3.5em;
+ line-height: 3.5em;
+ padding: 0 1em;
&:hover {
background-color: $fallback--lightBg;
diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue
index c3370a9d..707c6c3d 100644
--- a/src/components/side_drawer/side_drawer.vue
+++ b/src/components/side_drawer/side_drawer.vue
@@ -333,8 +333,8 @@
box-sizing: border-box;
display: block;
height: 3em;
- line-height: 2em;
- padding: 0.5em 0.7em;
+ line-height: 3em;
+ padding: 0 0.7em;
&:hover {
background-color: $fallback--lightBg;
--
cgit v1.2.3-70-g09d2
From 0ac9d81788a2cb92cec54ae08264b52ea4c93b1c Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 28 Oct 2020 21:55:08 +0200
Subject: fix settings tabs on mobile, update follow request badge
---
src/components/nav_panel/nav_panel.vue | 2 +-
src/components/side_drawer/side_drawer.vue | 7 +++++--
src/components/tab_switcher/tab_switcher.scss | 2 +-
3 files changed, 7 insertions(+), 4 deletions(-)
(limited to 'src/components')
diff --git a/src/components/nav_panel/nav_panel.vue b/src/components/nav_panel/nav_panel.vue
index 7308fb1e..8b299bf2 100644
--- a/src/components/nav_panel/nav_panel.vue
+++ b/src/components/nav_panel/nav_panel.vue
@@ -85,7 +85,7 @@
}
.follow-request-count {
- vertical-align: bottom;
+ vertical-align: baseline;
background-color: $fallback--bg;
background-color: var(--input, $fallback--faint);
}
diff --git a/src/components/side_drawer/side_drawer.vue b/src/components/side_drawer/side_drawer.vue
index 707c6c3d..ed1ccb7d 100644
--- a/src/components/side_drawer/side_drawer.vue
+++ b/src/components/side_drawer/side_drawer.vue
@@ -272,9 +272,12 @@
--lightText: var(--popoverLightText, $fallback--lightText);
--icon: var(--popoverIcon, $fallback--icon);
- .fa-scale-110 fa-old-padding:before {
- width: 1.1em;
+ .follow-request-count {
+ vertical-align: baseline;
+ background-color: $fallback--bg;
+ background-color: var(--input, $fallback--faint);
}
+
}
.side-drawer-logo-wrapper {
diff --git a/src/components/tab_switcher/tab_switcher.scss b/src/components/tab_switcher/tab_switcher.scss
index cd8fff6f..1e963516 100644
--- a/src/components/tab_switcher/tab_switcher.scss
+++ b/src/components/tab_switcher/tab_switcher.scss
@@ -92,7 +92,7 @@
flex-direction: column;
@media all and (max-width: 800px) {
- min-width: 1em;
+ min-width: 4em;
}
&:not(.active)::after {
--
cgit v1.2.3-70-g09d2
From 2e6c51dfd4e59370c104abb3e2602ec5a70bd030 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 28 Oct 2020 22:49:53 +0200
Subject: better icon for picker
---
src/components/emoji_picker/emoji_picker.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'src/components')
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index b1671566..0d51c7e5 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -1,13 +1,13 @@
import Checkbox from '../checkbox/checkbox.vue'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
- faUnderline,
+ faIcons,
faStickyNote,
faSmileBeam
} from '@fortawesome/free-solid-svg-icons'
library.add(
- faUnderline,
+ faIcons,
faStickyNote,
faSmileBeam
)
@@ -195,7 +195,7 @@ const EmojiPicker = {
{
id: 'standard',
text: this.$t('emoji.unicode'),
- icon: 'underline',
+ icon: 'icons',
emojis: filterByKeyword(standardEmojis, this.keyword)
}
]
--
cgit v1.2.3-70-g09d2
From ef36ca44f613c3d7d2ea11a9ad4f7fe828f7ae83 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Wed, 28 Oct 2020 22:52:20 +0200
Subject: >boxes
---
src/components/emoji_picker/emoji_picker.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
(limited to 'src/components')
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 0d51c7e5..2716d93f 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -1,13 +1,13 @@
import Checkbox from '../checkbox/checkbox.vue'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
- faIcons,
+ faBoxOpen,
faStickyNote,
faSmileBeam
} from '@fortawesome/free-solid-svg-icons'
library.add(
- faIcons,
+ faBoxOpen,
faStickyNote,
faSmileBeam
)
@@ -195,7 +195,7 @@ const EmojiPicker = {
{
id: 'standard',
text: this.$t('emoji.unicode'),
- icon: 'icons',
+ icon: 'box-open',
emojis: filterByKeyword(standardEmojis, this.keyword)
}
]
--
cgit v1.2.3-70-g09d2
From 3ead79ddb42967e2e5e7ccc6d832543b066c7c9b Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson
Date: Thu, 29 Oct 2020 12:45:44 +0200
Subject: document thie this. check
---
src/components/chat/chat.js | 1 +
1 file changed, 1 insertion(+)
(limited to 'src/components')
diff --git a/src/components/chat/chat.js b/src/components/chat/chat.js
index e60fe09d..c0c9ad6c 100644
--- a/src/components/chat/chat.js
+++ b/src/components/chat/chat.js
@@ -240,6 +240,7 @@ const Chat = {
// arrive just as you're leaving the view and messages that you didn't actually
// get to see get marked as read.
window.setTimeout(() => {
+ // Don't mark as read if the element doesn't exist, user has left chat view
if (this.$el) this.readChat()
}, MARK_AS_READ_DELAY)
}
--
cgit v1.2.3-70-g09d2
From 8225717a7c5391e21dba00a28aebb642ffcc8cef Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Thu, 29 Oct 2020 20:03:53 +0200
Subject: Update and fix avatar shadow in user card
---
src/components/user_avatar/user_avatar.vue | 9 ++++++---
src/components/user_card/user_card.vue | 6 ++++--
2 files changed, 10 insertions(+), 5 deletions(-)
(limited to 'src/components')
diff --git a/src/components/user_avatar/user_avatar.vue b/src/components/user_avatar/user_avatar.vue
index eb3d375e..43947282 100644
--- a/src/components/user_avatar/user_avatar.vue
+++ b/src/components/user_avatar/user_avatar.vue
@@ -20,11 +20,14 @@
@import '../../_variables.scss';
.Avatar {
+ --_avatarShadowBox: var(--avatarStatusShadow);
+ --_avatarShadowFilter: var(--avatarStatusShadowFilter);
+ --_avatarShadowInset: var(--avatarStatusShadowInset);
--still-image-label-visibility: hidden;
width: 48px;
height: 48px;
- box-shadow: var(--avatarStatusShadow);
+ box-shadow: var(--_avatarShadowBox);
border-radius: $fallback--avatarRadius;
border-radius: var(--avatarRadius, $fallback--avatarRadius);
@@ -34,8 +37,8 @@
}
&.better-shadow {
- box-shadow: var(--avatarStatusShadowInset);
- filter: var(--avatarStatusShadowFilter)
+ box-shadow: var(--_avatarShadowInset);
+ filter: var(--_avatarShadowFilter);
}
&.animated::before {
diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue
index 55e231d2..52a54fa7 100644
--- a/src/components/user_card/user_card.vue
+++ b/src/components/user_card/user_card.vue
@@ -382,11 +382,13 @@
max-height: 56px;
.Avatar {
+ --_avatarShadowBox: var(--avatarShadow);
+ --_avatarShadowFilter: var(--avatarShadowFilter);
+ --_avatarShadowInset: var(--avatarShadowInset);
+
flex: 1 0 100%;
width: 56px;
height: 56px;
- box-shadow: 0px 1px 8px rgba(0,0,0,0.75);
- box-shadow: var(--avatarShadow);
object-fit: cover;
}
}
--
cgit v1.2.3-70-g09d2
From 0f8a7037eae6c1237b759430bacb8381604e74b7 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Thu, 29 Oct 2020 20:06:13 +0200
Subject: fix lain's issue in reaction picker
---
src/components/react_button/react_button.vue | 1 +
1 file changed, 1 insertion(+)
(limited to 'src/components')
diff --git a/src/components/react_button/react_button.vue b/src/components/react_button/react_button.vue
index 694e6470..fa862484 100644
--- a/src/components/react_button/react_button.vue
+++ b/src/components/react_button/react_button.vue
@@ -11,6 +11,7 @@
>
--
cgit v1.2.3-70-g09d2
From 633349ddff2fd96298ce26ac2d3c404edb1ebbf3 Mon Sep 17 00:00:00 2001
From: Henry Jameson
Date: Thu, 29 Oct 2020 21:13:31 +0200
Subject: Refactor desktop navbar into a component, change layout to grid for
better compatibility with search field and simpler CSS
---
src/App.js | 49 +----
src/App.scss | 119 -------------
src/App.vue | 75 +-------
src/boot/after_store.js | 1 +
src/components/desktop_nav/desktop_nav.js | 89 ++++++++++
src/components/desktop_nav/desktop_nav.scss | 112 ++++++++++++
src/components/desktop_nav/desktop_nav.vue | 79 ++++++++
src/components/mobile_nav/mobile_nav.vue | 267 +++++++++++++++-------------
src/components/search_bar/search_bar.vue | 77 ++++----
src/modules/instance.js | 1 +
static/config.json | 1 +
11 files changed, 465 insertions(+), 405 deletions(-)
create mode 100644 src/components/desktop_nav/desktop_nav.js
create mode 100644 src/components/desktop_nav/desktop_nav.scss
create mode 100644 src/components/desktop_nav/desktop_nav.vue
(limited to 'src/components')
diff --git a/src/App.js b/src/App.js
index ded772fa..4871b4ac 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,7 +1,6 @@
import UserPanel from './components/user_panel/user_panel.vue'
import NavPanel from './components/nav_panel/nav_panel.vue'
import Notifications from './components/notifications/notifications.vue'
-import SearchBar from './components/search_bar/search_bar.vue'
import InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'
import FeaturesPanel from './components/features_panel/features_panel.vue'
import WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'
@@ -11,6 +10,7 @@ import MediaModal from './components/media_modal/media_modal.vue'
import SideDrawer from './components/side_drawer/side_drawer.vue'
import MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'
import MobileNav from './components/mobile_nav/mobile_nav.vue'
+import DesktopNav from './components/desktop_nav/desktop_nav.vue'
import UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'
import PostStatusModal from './components/post_status_modal/post_status_modal.vue'
import GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'
@@ -22,7 +22,6 @@ export default {
UserPanel,
NavPanel,
Notifications,
- SearchBar,
InstanceSpecificPanel,
FeaturesPanel,
WhoToFollowPanel,
@@ -31,6 +30,7 @@ export default {
SideDrawer,
MobilePostStatusButton,
MobileNav,
+ DesktopNav,
SettingsModal,
UserReportingModal,
PostStatusModal,
@@ -38,14 +38,6 @@ export default {
},
data: () => ({
mobileActivePanel: 'timeline',
- searchBarHidden: true,
- supportsMask: window.CSS && window.CSS.supports && (
- window.CSS.supports('mask-size', 'contain') ||
- window.CSS.supports('-webkit-mask-size', 'contain') ||
- window.CSS.supports('-moz-mask-size', 'contain') ||
- window.CSS.supports('-ms-mask-size', 'contain') ||
- window.CSS.supports('-o-mask-size', 'contain')
- )
}),
created () {
// Load the locale from the storage
@@ -61,28 +53,6 @@ export default {
background () {
return this.currentUser.background_image || this.$store.state.instance.background
},
- enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },
- logoStyle () {
- return {
- 'visibility': this.enableMask ? 'hidden' : 'visible'
- }
- },
- logoMaskStyle () {
- return this.enableMask ? {
- 'mask-image': `url(${this.$store.state.instance.logo})`
- } : {
- 'background-color': this.enableMask ? '' : 'transparent'
- }
- },
- logoBgStyle () {
- return Object.assign({
- 'margin': `${this.$store.state.instance.logoMargin} 0`,
- opacity: this.searchBarHidden ? 1 : 0
- }, this.enableMask ? {} : {
- 'background-color': this.enableMask ? '' : 'transparent'
- })
- },
- logo () { return this.$store.state.instance.logo },
bgStyle () {
return {
'background-image': `url(${this.background})`
@@ -93,9 +63,7 @@ export default {
'--body-background-image': `url(${this.background})`
}
},
- sitename () { return this.$store.state.instance.name },
chat () { return this.$store.state.chat.channel.state === 'joined' },
- hideSitename () { return this.$store.state.instance.hideSitename },
suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },
showInstanceSpecificPanel () {
return this.$store.state.instance.showInstanceSpecificPanel &&
@@ -112,19 +80,6 @@ export default {
}
},
methods: {
- scrollToTop () {
- window.scrollTo(0, 0)
- },
- logout () {
- this.$router.replace('/main/public')
- this.$store.dispatch('logout')
- },
- onSearchBarToggled (hidden) {
- this.searchBarHidden = hidden
- },
- openSettingsModal () {
- this.$store.dispatch('openSettingsModal')
- },
updateMobileState () {
const mobileLayout = windowWidth() <= 800
const layoutHeight = windowHeight()
diff --git a/src/App.scss b/src/App.scss
index 6884f314..05e73b4b 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -359,119 +359,10 @@ i[class*=icon-], .svg-inline--fa {
padding: 0 10px 0 10px;
}
-.item {
- flex: 1;
- line-height: 50px;
- height: 50px;
- overflow: hidden;
- display: flex;
- flex-wrap: wrap;
-
- .nav-icon {
- margin-left: 0.2em;
- width: 2em;
- text-align: center;
- }
-
- &.right {
- justify-content: flex-end;
- }
-}
-
.auto-size {
flex: 1
}
-.nav-bar {
- padding: 0;
- width: 100%;
- align-items: center;
- position: fixed;
- height: 50px;
- box-sizing: border-box;
-
- button {
- &, i[class*=icon-], svg {
- color: $fallback--text;
- color: var(--btnTopBarText, $fallback--text);
- }
-
- &:active {
- background-color: $fallback--fg;
- background-color: var(--btnPressedTopBar, $fallback--fg);
- color: $fallback--text;
- color: var(--btnPressedTopBarText, $fallback--text);
- }
-
- &:disabled {
- color: $fallback--text;
- color: var(--btnDisabledTopBarText, $fallback--text);
- }
-
- &.toggled {
- color: $fallback--text;
- color: var(--btnToggledTopBarText, $fallback--text);
- background-color: $fallback--fg;
- background-color: var(--btnToggledTopBar, $fallback--fg)
- }
- }
-
-
- .logo {
- display: flex;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
-
- align-items: stretch;
- justify-content: center;
- flex: 0 0 auto;
- z-index: -1;
- transition: opacity;
- transition-timing-function: ease-out;
- transition-duration: 100ms;
-
- .mask {
- mask-repeat: no-repeat;
- mask-position: center;
- mask-size: contain;
- background-color: $fallback--fg;
- background-color: var(--topBarText, $fallback--fg);
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- }
-
- img {
- height: 100%;
- object-fit: contain;
- display: block;
- flex: 0;
- }
- }
-
- .inner-nav {
- position: relative;
- margin: auto;
- box-sizing: border-box;
- padding-left: 10px;
- padding-right: 10px;
- display: flex;
- align-items: center;
- flex-basis: 970px;
- height: 50px;
-
- a, a i, a svg {
- color: $fallback--link;
- color: var(--topBarLink, $fallback--link);
- }
- }
-}
-
main-router {
flex: 1;
}
@@ -781,16 +672,6 @@ nav {
}
}
-@media all and (min-width: 800px) {
- .logo {
- opacity: 1 !important;
- }
-}
-
-.item.right {
- text-align: right;
-}
-
.visibility-notice {
padding: .5em;
border: 1px solid $fallback--faint;
diff --git a/src/App.vue b/src/App.vue
index 6e44c7e9..b4eb0524 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -9,80 +9,7 @@
:style="bgStyle"
/>
-
+
{
? 0
: config.logoMargin
})
+ copyInstanceOption('logoLeft')
store.commit('authFlow/setInitialStrategy', config.loginMethod)
copyInstanceOption('redirectRootNoLogin')
diff --git a/src/components/desktop_nav/desktop_nav.js b/src/components/desktop_nav/desktop_nav.js
new file mode 100644
index 00000000..ee99ec10
--- /dev/null
+++ b/src/components/desktop_nav/desktop_nav.js
@@ -0,0 +1,89 @@
+import SearchBar from 'components/search_bar/search_bar.vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faSignInAlt,
+ faSignOutAlt,
+ faHome,
+ faComments,
+ faBell,
+ faUserPlus,
+ faBullhorn,
+ faSearch,
+ faTachometerAlt,
+ faCog,
+ faInfoCircle
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faSignInAlt,
+ faSignOutAlt,
+ faHome,
+ faComments,
+ faBell,
+ faUserPlus,
+ faBullhorn,
+ faSearch,
+ faTachometerAlt,
+ faCog,
+ faInfoCircle
+)
+
+export default {
+ components: {
+ SearchBar
+ },
+ data: () => ({
+ searchBarHidden: true,
+ supportsMask: window.CSS && window.CSS.supports && (
+ window.CSS.supports('mask-size', 'contain') ||
+ window.CSS.supports('-webkit-mask-size', 'contain') ||
+ window.CSS.supports('-moz-mask-size', 'contain') ||
+ window.CSS.supports('-ms-mask-size', 'contain') ||
+ window.CSS.supports('-o-mask-size', 'contain')
+ )
+ }),
+ computed: {
+ enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },
+ logoStyle () {
+ return {
+ 'visibility': this.enableMask ? 'hidden' : 'visible'
+ }
+ },
+ logoMaskStyle () {
+ return this.enableMask ? {
+ 'mask-image': `url(${this.$store.state.instance.logo})`
+ } : {
+ 'background-color': this.enableMask ? '' : 'transparent'
+ }
+ },
+ logoBgStyle () {
+ return Object.assign({
+ 'margin': `${this.$store.state.instance.logoMargin} 0`,
+ opacity: this.searchBarHidden ? 1 : 0
+ }, this.enableMask ? {} : {
+ 'background-color': this.enableMask ? '' : 'transparent'
+ })
+ },
+ logo () { return this.$store.state.instance.logo },
+ sitename () { return this.$store.state.instance.name },
+ hideSitename () { return this.$store.state.instance.hideSitename },
+ logoLeft () { return this.$store.state.instance.logoLeft },
+ currentUser () { return this.$store.state.users.currentUser },
+ privateMode () { return this.$store.state.instance.private },
+ },
+ methods: {
+ scrollToTop () {
+ window.scrollTo(0, 0)
+ },
+ logout () {
+ this.$router.replace('/main/public')
+ this.$store.dispatch('logout')
+ },
+ onSearchBarToggled (hidden) {
+ this.searchBarHidden = hidden
+ },
+ openSettingsModal () {
+ this.$store.dispatch('openSettingsModal')
+ },
+ }
+}
diff --git a/src/components/desktop_nav/desktop_nav.scss b/src/components/desktop_nav/desktop_nav.scss
new file mode 100644
index 00000000..028692a9
--- /dev/null
+++ b/src/components/desktop_nav/desktop_nav.scss
@@ -0,0 +1,112 @@
+@import '../../_variables.scss';
+
+.DesktopNav {
+ height: 50px;
+ width: 100%;
+ position: fixed;
+
+ .inner-nav {
+ display: grid;
+ grid-template-rows: 50px;
+ grid-template-columns: 2fr auto 2fr;
+ grid-template-areas: "sitename logo actions";
+ box-sizing: border-box;
+ padding: 0 1.2em;
+ margin: auto;
+ max-width: 980px;
+ }
+
+ &.-logoLeft {
+ grid-template-columns: auto 2fr 2fr;
+ grid-template-areas: "logo sitename actions";
+ }
+
+ button {
+ &, svg {
+ color: $fallback--text;
+ color: var(--btnTopBarText, $fallback--text);
+ }
+
+ &:active {
+ background-color: $fallback--fg;
+ background-color: var(--btnPressedTopBar, $fallback--fg);
+ color: $fallback--text;
+ color: var(--btnPressedTopBarText, $fallback--text);
+ }
+
+ &:disabled {
+ color: $fallback--text;
+ color: var(--btnDisabledTopBarText, $fallback--text);
+ }
+
+ &.toggled {
+ color: $fallback--text;
+ color: var(--btnToggledTopBarText, $fallback--text);
+ background-color: $fallback--fg;
+ background-color: var(--btnToggledTopBar, $fallback--fg)
+ }
+ }
+
+ .logo {
+ grid-area: logo;
+ position: relative;
+ transition: opacity;
+ transition-timing-function: ease-out;
+ transition-duration: 100ms;
+
+ @media all and (min-width: 800px) {
+ opacity: 1 !important;
+ }
+
+ .mask {
+ mask-repeat: no-repeat;
+ mask-position: center;
+ mask-size: contain;
+ background-color: $fallback--fg;
+ background-color: var(--topBarText, $fallback--fg);
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ }
+
+ img {
+ display: inline-block;
+ height: 50px;
+ }
+ }
+
+ .nav-icon {
+ margin-left: 0.2em;
+ width: 2em;
+ text-align: center;
+ }
+
+ a, a svg {
+ color: $fallback--link;
+ color: var(--topBarLink, $fallback--link);
+ }
+
+ .sitename {
+ grid-area: sitename;
+ }
+
+ .actions {
+ grid-area: actions;
+ }
+
+ .item {
+ flex: 1;
+ line-height: 50px;
+ height: 50px;
+ overflow: hidden;
+ display: flex;
+ flex-wrap: wrap;
+
+ &.right {
+ justify-content: flex-end;
+ text-align: right;
+ }
+ }
+}
diff --git a/src/components/desktop_nav/desktop_nav.vue b/src/components/desktop_nav/desktop_nav.vue
new file mode 100644
index 00000000..d166be08
--- /dev/null
+++ b/src/components/desktop_nav/desktop_nav.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
diff --git a/src/components/mobile_nav/mobile_nav.vue b/src/components/mobile_nav/mobile_nav.vue
index d2bc65ab..30b15149 100644
--- a/src/components/mobile_nav/mobile_nav.vue
+++ b/src/components/mobile_nav/mobile_nav.vue
@@ -1,55 +1,53 @@
-
+