@@ -98,6 +98,6 @@
diff --git a/src/components/chat_new/chat_new.scss b/src/components/chat_new/chat_new.scss
index 240e1a38..b145ecf9 100644
--- a/src/components/chat_new/chat_new.scss
+++ b/src/components/chat_new/chat_new.scss
@@ -1,7 +1,7 @@
.chat-new {
.input-wrap {
display: flex;
- margin: 0.7em 0.5em 0.7em 0.5em;
+ margin: 0.7em 0.5em;
input {
width: 100%;
diff --git a/src/components/chat_new/chat_new.vue b/src/components/chat_new/chat_new.vue
index bf09a379..52306c1d 100644
--- a/src/components/chat_new/chat_new.vue
+++ b/src/components/chat_new/chat_new.vue
@@ -46,6 +46,6 @@
diff --git a/src/components/chat_title/chat_title.vue b/src/components/chat_title/chat_title.vue
index ab7491fa..93db4fa7 100644
--- a/src/components/chat_title/chat_title.vue
+++ b/src/components/chat_title/chat_title.vue
@@ -26,7 +26,7 @@
diff --git a/src/components/color_input/color_input.scss b/src/components/color_input/color_input.scss
index 3de31fde..ca46199a 100644
--- a/src/components/color_input/color_input.scss
+++ b/src/components/color_input/color_input.scss
@@ -1,4 +1,4 @@
-@import '../../_variables.scss';
+@import "../../variables";
.color-input {
display: inline-flex;
@@ -8,7 +8,7 @@
flex: 0 0 0;
max-width: 9em;
align-items: stretch;
- padding: .2em 8px;
+ padding: 0.2em 8px;
input {
background: none;
@@ -31,6 +31,7 @@
min-height: 100%;
}
}
+
.computedIndicator,
.transparentIndicator {
flex: 0 0 2em;
@@ -38,22 +39,27 @@
align-self: stretch;
min-height: 100%;
}
+
.transparentIndicator {
// forgot to install counter-strike source, ooops
- background-color: #FF00FF;
+ background-color: #f0f;
position: relative;
- &::before, &::after {
+
+ &::before,
+ &::after {
display: block;
- content: '';
- background-color: #000000;
+ content: "";
+ background-color: #000;
position: absolute;
height: 50%;
width: 50%;
}
+
&::after {
top: 0;
left: 0;
}
+
&::before {
bottom: 0;
right: 0;
@@ -64,5 +70,4 @@
.label {
flex: 1 1 auto;
}
-
}
diff --git a/src/components/contrast_ratio/contrast_ratio.vue b/src/components/contrast_ratio/contrast_ratio.vue
index 374cb9ba..bbd6fd4a 100644
--- a/src/components/contrast_ratio/contrast_ratio.vue
+++ b/src/components/contrast_ratio/contrast_ratio.vue
@@ -87,7 +87,6 @@ export default {
.contrast-ratio {
display: flex;
justify-content: flex-end;
-
margin-top: -4px;
margin-bottom: 5px;
diff --git a/src/components/conversation/conversation.vue b/src/components/conversation/conversation.vue
index afa04db0..7577129e 100644
--- a/src/components/conversation/conversation.vue
+++ b/src/components/conversation/conversation.vue
@@ -210,17 +210,16 @@
diff --git a/src/components/extra_buttons/extra_buttons.vue b/src/components/extra_buttons/extra_buttons.vue
index b2fad1c9..a84d47f6 100644
--- a/src/components/extra_buttons/extra_buttons.vue
+++ b/src/components/extra_buttons/extra_buttons.vue
@@ -172,15 +172,10 @@
diff --git a/src/components/follow_card/follow_card.vue b/src/components/follow_card/follow_card.vue
index c919b11a..eff69fb2 100644
--- a/src/components/follow_card/follow_card.vue
+++ b/src/components/follow_card/follow_card.vue
@@ -39,9 +39,8 @@
&-content-container {
flex-shrink: 0;
display: flex;
- flex-direction: row;
+ flex-flow: row wrap;
justify-content: space-between;
- flex-wrap: wrap;
line-height: 1.5em;
}
diff --git a/src/components/follow_request_card/follow_request_card.vue b/src/components/follow_request_card/follow_request_card.vue
index 1b12ba4b..eb222cc7 100644
--- a/src/components/follow_request_card/follow_request_card.vue
+++ b/src/components/follow_request_card/follow_request_card.vue
@@ -22,8 +22,8 @@
diff --git a/src/components/global_notice_list/global_notice_list.vue b/src/components/global_notice_list/global_notice_list.vue
index d828b819..0e58476f 100644
--- a/src/components/global_notice_list/global_notice_list.vue
+++ b/src/components/global_notice_list/global_notice_list.vue
@@ -25,7 +25,7 @@
diff --git a/src/components/lists_edit/lists_edit.vue b/src/components/lists_edit/lists_edit.vue
index 6521aba6..eec0f978 100644
--- a/src/components/lists_edit/lists_edit.vue
+++ b/src/components/lists_edit/lists_edit.vue
@@ -164,7 +164,7 @@
diff --git a/src/components/media_upload/media_upload.vue b/src/components/media_upload/media_upload.vue
index a538a5ed..2799495b 100644
--- a/src/components/media_upload/media_upload.vue
+++ b/src/components/media_upload/media_upload.vue
@@ -29,7 +29,7 @@
diff --git a/src/components/moderation_tools/moderation_tools.vue b/src/components/moderation_tools/moderation_tools.vue
index 8535ef27..b708cdc8 100644
--- a/src/components/moderation_tools/moderation_tools.vue
+++ b/src/components/moderation_tools/moderation_tools.vue
@@ -166,18 +166,21 @@
diff --git a/src/components/mute_card/mute_card.vue b/src/components/mute_card/mute_card.vue
index ca33c6c5..97e91cbc 100644
--- a/src/components/mute_card/mute_card.vue
+++ b/src/components/mute_card/mute_card.vue
@@ -37,6 +37,7 @@
.mute-card-content-container {
margin-top: 0.5em;
text-align: right;
+
button {
width: 10em;
}
diff --git a/src/components/nav_panel/nav_panel.vue b/src/components/nav_panel/nav_panel.vue
index d628c380..1a826cc4 100644
--- a/src/components/nav_panel/nav_panel.vue
+++ b/src/components/nav_panel/nav_panel.vue
@@ -102,7 +102,7 @@
diff --git a/src/components/navigation/navigation_entry.vue b/src/components/navigation/navigation_entry.vue
index f4d53836..411ca536 100644
--- a/src/components/navigation/navigation_entry.vue
+++ b/src/components/navigation/navigation_entry.vue
@@ -63,7 +63,7 @@
diff --git a/src/components/reply_button/reply_button.vue b/src/components/reply_button/reply_button.vue
index dada511b..6e3964b7 100644
--- a/src/components/reply_button/reply_button.vue
+++ b/src/components/reply_button/reply_button.vue
@@ -51,8 +51,8 @@
diff --git a/src/components/report/report.scss b/src/components/report/report.scss
index 578b4eb1..9762400b 100644
--- a/src/components/report/report.scss
+++ b/src/components/report/report.scss
@@ -1,4 +1,4 @@
-@import '../../_variables.scss';
+@import "../../variables";
.Report {
.report-content {
diff --git a/src/components/retweet_button/retweet_button.vue b/src/components/retweet_button/retweet_button.vue
index 240828e3..7700ee0d 100644
--- a/src/components/retweet_button/retweet_button.vue
+++ b/src/components/retweet_button/retweet_button.vue
@@ -65,8 +65,8 @@
diff --git a/src/components/search_bar/search_bar.vue b/src/components/search_bar/search_bar.vue
index 199a7500..3969d8de 100644
--- a/src/components/search_bar/search_bar.vue
+++ b/src/components/search_bar/search_bar.vue
@@ -56,7 +56,7 @@
diff --git a/src/components/selectable_list/selectable_list.vue b/src/components/selectable_list/selectable_list.vue
index 1f7683ab..14910fc5 100644
--- a/src/components/selectable_list/selectable_list.vue
+++ b/src/components/selectable_list/selectable_list.vue
@@ -51,7 +51,7 @@
diff --git a/src/components/settings_modal/helpers/size_setting.vue b/src/components/settings_modal/helpers/size_setting.vue
index 90c9f538..5a78f100 100644
--- a/src/components/settings_modal/helpers/size_setting.vue
+++ b/src/components/settings_modal/helpers/size_setting.vue
@@ -45,10 +45,11 @@
diff --git a/src/components/settings_modal/settings_modal.scss b/src/components/settings_modal/settings_modal.scss
index 13cb0e65..f5861229 100644
--- a/src/components/settings_modal/settings_modal.scss
+++ b/src/components/settings_modal/settings_modal.scss
@@ -1,4 +1,5 @@
-@import 'src/_variables.scss';
+@import "src/variables";
+
.settings-modal {
overflow: hidden;
@@ -6,32 +7,13 @@
.option-list {
list-style-type: none;
padding-left: 2em;
+
li {
margin-bottom: 0.5em;
}
- .suboptions {
- margin-top: 0.3em
- }
- }
-
- &.peek {
- .settings-modal-panel {
- /* Explanation:
- * Modal is positioned vertically centered.
- * 100vh - 100% = Distance between modal's top+bottom boundaries and screen
- * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen
- * + 100% - we move modal completely off-screen, it's top boundary touches
- * bottom of the screen
- * - 50px - leaving tiny amount of space so that titlebar + tiny amount of modal is visible
- */
- transform: translateY(calc(((100vh - 100%) / 2 + 100%) - 50px));
- @media all and (max-width: 800px) {
- /* For mobile, the modal takes 100% of the available screen.
- This ensures the minimized modal is always 50px above the browser bottom bar regardless of whether or not it is visible.
- */
- transform: translateY(calc(100% - 50px));
- }
+ .suboptions {
+ margin-top: 0.3em;
}
}
@@ -63,6 +45,7 @@
.settings-footer {
display: flex;
+
>* {
margin-right: 0.5em;
}
@@ -72,4 +55,26 @@
flex-grow: 1;
}
}
+
+ &.peek {
+ .settings-modal-panel {
+ /* Explanation:
+ * Modal is positioned vertically centered.
+ * 100vh - 100% = Distance between modal's top+bottom boundaries and screen
+ * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen
+ * + 100% - we move modal completely off-screen, it's top boundary touches
+ * bottom of the screen
+ * - 50px - leaving tiny amount of space so that titlebar + tiny amount of modal is visible
+ */
+ transform: translateY(calc(((100vh - 100%) / 2 + 100%) - 50px));
+
+ @media all and (max-width: 800px) {
+ /* For mobile, the modal takes 100% of the available screen.
+ This ensures the minimized modal is always 50px above the browser bottom
+ bar regardless of whether or not it is visible.
+ */
+ transform: translateY(calc(100% - 50px));
+ }
+ }
+ }
}
diff --git a/src/components/settings_modal/settings_modal_content.scss b/src/components/settings_modal/settings_modal_content.scss
index 81ab434b..87df7982 100644
--- a/src/components/settings_modal/settings_modal_content.scss
+++ b/src/components/settings_modal/settings_modal_content.scss
@@ -1,4 +1,5 @@
-@import 'src/_variables.scss';
+@import "src/variables";
+
.settings_tab-switcher {
height: 100%;
@@ -10,7 +11,8 @@
> div,
> label {
display: block;
- margin-bottom: .5em;
+ margin-bottom: 0.5em;
+
&:last-child {
margin-bottom: 0;
}
@@ -21,7 +23,7 @@
.option-list {
margin: 0;
- padding-left: .5em;
+ padding-left: 0.5em;
}
}
diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue
index 8561647b..582cb288 100644
--- a/src/components/settings_modal/tabs/general_tab.vue
+++ b/src/components/settings_modal/tabs/general_tab.vue
@@ -464,6 +464,7 @@
justify-content: space-evenly;
flex-wrap: wrap;
}
+
.column-settings .size-label {
display: block;
margin-bottom: 0.5em;
diff --git a/src/components/settings_modal/tabs/mutes_and_blocks_tab.scss b/src/components/settings_modal/tabs/mutes_and_blocks_tab.scss
index 2adff847..5fa3a27b 100644
--- a/src/components/settings_modal/tabs/mutes_and_blocks_tab.scss
+++ b/src/components/settings_modal/tabs/mutes_and_blocks_tab.scss
@@ -1,29 +1,29 @@
.mutes-and-blocks-tab {
- height: 100%;
+ height: 100%;
- .usersearch-wrapper {
- padding: 1em;
- }
+ .usersearch-wrapper {
+ padding: 1em;
+ }
- .bulk-actions {
- text-align: right;
- padding: 0 1em;
- min-height: 2em;
- }
+ .bulk-actions {
+ text-align: right;
+ padding: 0 1em;
+ min-height: 2em;
+ }
- .bulk-action-button {
- width: 10em
- }
+ .bulk-action-button {
+ width: 10em;
+ }
- .domain-mute-form {
- padding: 1em;
- display: flex;
- flex-direction: column
- }
+ .domain-mute-form {
+ padding: 1em;
+ display: flex;
+ flex-direction: column;
+ }
- .domain-mute-button {
- align-self: flex-end;
- margin-top: 1em;
- width: 10em
- }
+ .domain-mute-button {
+ align-self: flex-end;
+ margin-top: 1em;
+ width: 10em;
+ }
}
diff --git a/src/components/settings_modal/tabs/profile_tab.scss b/src/components/settings_modal/tabs/profile_tab.scss
index 201f1a76..73879192 100644
--- a/src/components/settings_modal/tabs/profile_tab.scss
+++ b/src/components/settings_modal/tabs/profile_tab.scss
@@ -1,4 +1,5 @@
-@import '../../../_variables.scss';
+@import "../../../variables";
+
.profile-tab {
.bio {
margin: 0;
@@ -8,7 +9,7 @@
padding-top: 5px;
}
- input[type=file] {
+ input[type="file"] {
padding: 5px;
height: auto;
}
@@ -52,7 +53,7 @@
right: 0.2em;
border-radius: $fallback--tooltipRadius;
border-radius: var(--tooltipRadius, $fallback--tooltipRadius);
- background-color: rgba(0, 0, 0, 0.6);
+ background-color: rgb(0 0 0 / 60%);
opacity: 0.7;
width: 1.5em;
height: 1.5em;
diff --git a/src/components/settings_modal/tabs/security_tab/mfa.vue b/src/components/settings_modal/tabs/security_tab/mfa.vue
index 455d17b6..ee5b6b13 100644
--- a/src/components/settings_modal/tabs/security_tab/mfa.vue
+++ b/src/components/settings_modal/tabs/security_tab/mfa.vue
@@ -137,9 +137,11 @@
diff --git a/src/components/thread_tree/thread_tree.vue b/src/components/thread_tree/thread_tree.vue
index c6fffc71..04727278 100644
--- a/src/components/thread_tree/thread_tree.vue
+++ b/src/components/thread_tree/thread_tree.vue
@@ -119,7 +119,8 @@
diff --git a/src/components/update_notification/update_notification.scss b/src/components/update_notification/update_notification.scss
index ce8129d0..4337acc4 100644
--- a/src/components/update_notification/update_notification.scss
+++ b/src/components/update_notification/update_notification.scss
@@ -1,4 +1,5 @@
-@import 'src/_variables.scss';
+@import "src/variables";
+
.UpdateNotification {
overflow: hidden;
}
@@ -21,7 +22,8 @@
@media all and (max-width: 800px) {
/* For mobile, the modal takes 100% of the available screen.
- This ensures the minimized modal is always 50px above the browser bottom bar regardless of whether or not it is visible.
+ This ensures the minimized modal is always 50px above the browser
+ bottom bar regardless of whether or not it is visible.
*/
width: 100vw;
}
@@ -44,7 +46,7 @@
}
.panel-body {
- border-width: 0 0 1px 0;
+ border-width: 0 0 1px;
border-style: solid;
border-color: var(--border, $fallback--border);
}
@@ -67,7 +69,7 @@
z-index: 20;
position: relative;
shape-margin: 0.5em;
- filter: drop-shadow(5px 5px 10px rgba(0,0,0,0.5));
+ filter: drop-shadow(5px 5px 10px rgb(0 0 0 / 50%));
pointer-events: none;
}
@@ -94,7 +96,7 @@
}
&.-peek {
- /* Explanation:
+ /* Explanation:
* 100vh - 100% = Distance between modal's top+bottom boundaries and screen
* (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen
*/
@@ -103,7 +105,7 @@
.pleroma-tan {
float: right;
z-index: 10;
- shape-image-threshold: 0.7;
+ shape-image-threshold: 70%;
}
.extra-info-group {
diff --git a/src/components/user_avatar/user_avatar.vue b/src/components/user_avatar/user_avatar.vue
index f4d294df..91c17611 100644
--- a/src/components/user_avatar/user_avatar.vue
+++ b/src/components/user_avatar/user_avatar.vue
@@ -27,7 +27,7 @@
diff --git a/src/components/user_card/user_card.scss b/src/components/user_card/user_card.scss
index cdb8cb57..942673c4 100644
--- a/src/components/user_card/user_card.scss
+++ b/src/components/user_card/user_card.scss
@@ -1,4 +1,4 @@
-@import '../../_variables.scss';
+@import "../../variables";
.user-card {
position: relative;
@@ -11,7 +11,7 @@
}
.panel-heading {
- padding: .5em 0;
+ padding: 0.5em 0;
text-align: center;
box-shadow: none;
background: transparent;
@@ -35,17 +35,19 @@
left: 0;
right: 0;
bottom: 0;
- mask: linear-gradient(to top, white, transparent) bottom no-repeat,
- linear-gradient(to top, white, white);
+ mask:
+ linear-gradient(to top, white, transparent) bottom no-repeat,
+ linear-gradient(to top, white, white);
// Autoprefixer seem to ignore this one, and also syntax is different
- -webkit-mask-composite: xor;
+ mask-composite: xor;
mask-composite: exclude;
background-size: cover;
mask-size: 100% 60%;
- border-top-left-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);
- border-top-right-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);
- border-bottom-left-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);
- border-bottom-right-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);
+ border-radius:
+ calc(var(--__roundnessTop, --panelRadius) - 1px)
+ calc(var(--__roundnessTop, --panelRadius) - 1px)
+ calc(var(--__roundnessBottom, --panelRadius) - 1px)
+ calc(var(--__roundnessBottom, --panelRadius) - 1px);
background-color: var(--profileBg);
z-index: -2;
@@ -159,17 +161,17 @@
top: 0;
right: 0;
bottom: 0;
- background-color: rgba(0, 0, 0, 0.3);
+ background-color: rgb(0 0 0 / 30%);
display: flex;
justify-content: center;
align-items: center;
border-radius: $fallback--avatarRadius;
border-radius: var(--avatarRadius, $fallback--avatarRadius);
opacity: 0;
- transition: opacity .2s ease;
+ transition: opacity 0.2s ease;
svg {
- color: #FFF;
+ color: #fff;
}
}
@@ -178,7 +180,8 @@
}
}
- .external-link-button, .edit-profile-button {
+ .external-link-button,
+ .edit-profile-button {
cursor: pointer;
width: 2.5em;
text-align: center;
@@ -191,34 +194,6 @@
}
}
- .user-summary {
- display: block;
- margin-left: 0.6em;
- text-align: left;
- text-overflow: ellipsis;
- white-space: nowrap;
- flex: 1 1 0;
- // This is so that text doesn't get overlapped by avatar's shadow if it has
- // big one
- z-index: 1;
- line-height: 2em;
-
- --emoji-size: 1.7em;
-
- .top-line,
- .bottom-line {
- display: flex;
- }
- }
-
- .user-name {
- text-overflow: ellipsis;
- overflow: hidden;
- flex: 1 1 auto;
- margin-right: 1em;
- font-size: 1.1em;
- }
-
.bottom-line {
font-weight: light;
font-size: 1.1em;
@@ -253,8 +228,36 @@
}
}
+ .user-summary {
+ display: block;
+ margin-left: 0.6em;
+ text-align: left;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ flex: 1 1 0;
+ // This is so that text doesn't get overlapped by avatar's shadow if it has
+ // big one
+ z-index: 1;
+ line-height: 2em;
+
+ --emoji-size: 1.7em;
+
+ .top-line,
+ .bottom-line {
+ display: flex;
+ }
+ }
+
+ .user-name {
+ text-overflow: ellipsis;
+ overflow: hidden;
+ flex: 1 1 auto;
+ margin-right: 1em;
+ font-size: 1.1em;
+ }
+
.user-meta {
- margin-bottom: .15em;
+ margin-bottom: 0.15em;
display: flex;
align-items: baseline;
line-height: 22px;
@@ -263,7 +266,7 @@
.following {
flex: 1 0 auto;
margin: 0;
- margin-bottom: .25em;
+ margin-bottom: 0.25em;
text-align: left;
}
@@ -271,7 +274,7 @@
flex: 0 1 auto;
display: flex;
flex-wrap: wrap;
- margin-right: -.5em;
+ margin-right: -0.5em;
align-self: start;
.userHighlightCl {
@@ -294,19 +297,20 @@
.userHighlightText,
.userHighlightSel {
vertical-align: top;
- margin-right: .5em;
- margin-bottom: .25em;
+ margin-right: 0.5em;
+ margin-bottom: 0.25em;
}
}
}
+
.user-interactions {
position: relative;
display: flex;
flex-flow: row wrap;
- margin-right: -.75em;
+ margin-right: -0.75em;
> * {
- margin: 0 .75em .6em 0;
+ margin: 0 0.75em 0.6em 0;
white-space: nowrap;
min-width: 95px;
}
@@ -317,7 +321,7 @@
}
.user-note {
- margin: 0 .75em .6em 0;
+ margin: 0 0.75em 0.6em 0;
}
}
@@ -327,8 +331,8 @@
.user-counts {
display: flex;
- line-height:16px;
- padding: .5em 1.5em 0em 1.5em;
+ line-height: 16px;
+ padding: 0.5em 1.5em 0;
text-align: center;
justify-content: space-between;
color: $fallback--lightText;
@@ -338,14 +342,16 @@
.user-count {
flex: 1 0 auto;
- padding: .5em 0 .5em 0;
- margin: 0 .5em;
+ padding: 0.5em 0;
+ margin: 0 0.5em;
h5 {
- font-size:1em;
+ font-size: 1em;
font-weight: bolder;
margin: 0 0 0.25em;
}
+
+ /* stylelint-disable-next-line no-descending-specificity */
a {
text-decoration: none;
}
diff --git a/src/components/user_list_popover/user_list_popover.vue b/src/components/user_list_popover/user_list_popover.vue
index 635dc7f6..8307cc8a 100644
--- a/src/components/user_list_popover/user_list_popover.vue
+++ b/src/components/user_list_popover/user_list_popover.vue
@@ -48,7 +48,7 @@
diff --git a/src/components/user_profile/user_profile.vue b/src/components/user_profile/user_profile.vue
index d5e8d230..2720f052 100644
--- a/src/components/user_profile/user_profile.vue
+++ b/src/components/user_profile/user_profile.vue
@@ -140,7 +140,7 @@
diff --git a/src/components/who_to_follow_panel/who_to_follow_panel.vue b/src/components/who_to_follow_panel/who_to_follow_panel.vue
index c1ba6fb1..0fecec0b 100644
--- a/src/components/who_to_follow_panel/who_to_follow_panel.vue
+++ b/src/components/who_to_follow_panel/who_to_follow_panel.vue
@@ -33,24 +33,28 @@
.who-to-follow * {
vertical-align: middle;
}
+
.who-to-follow img {
width: 32px;
height: 32px;
}
+
.who-to-follow {
- padding: 0em 1em;
- margin: 0px;
+ padding: 0 1em;
+ margin: 0;
}
+
.who-to-follow-items {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
- padding: 0px;
- margin: 1em 0em;
+ padding: 0;
+ margin: 1em 0;
}
+
.who-to-follow-more {
- padding: 0px;
- margin: 1em 0em;
+ padding: 0;
+ margin: 1em 0;
text-align: center;
}
diff --git a/src/hocs/with_load_more/with_load_more.scss b/src/hocs/with_load_more/with_load_more.scss
index de86ed4a..bad852f4 100644
--- a/src/hocs/with_load_more/with_load_more.scss
+++ b/src/hocs/with_load_more/with_load_more.scss
@@ -1,5 +1,4 @@
-
-@import '../../_variables.scss';
+@import "../../variables";
.with-load-more {
&-footer {
diff --git a/src/hocs/with_subscription/with_subscription.scss b/src/hocs/with_subscription/with_subscription.scss
index 7fd83802..996045b4 100644
--- a/src/hocs/with_subscription/with_subscription.scss
+++ b/src/hocs/with_subscription/with_subscription.scss
@@ -7,4 +7,4 @@
font-size: 1rem;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/panel.scss b/src/panel.scss
index a53e47c6..9471da11 100644
--- a/src/panel.scss
+++ b/src/panel.scss
@@ -1,3 +1,4 @@
+/* stylelint-disable no-descending-specificity */
.panel {
position: relative;
display: flex;
@@ -12,14 +13,14 @@
}
&::after {
- content: '';
+ content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 5;
- box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);
+ box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);
box-shadow: var(--panelShadow);
pointer-events: none;
}
@@ -87,7 +88,7 @@
&::after,
&::before {
- content: '';
+ content: "";
position: absolute;
top: 0;
bottom: 0;
@@ -126,7 +127,7 @@
.panel-heading {
border-radius: $fallback--panelRadius $fallback--panelRadius 0 0;
border-radius: var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius) 0 0;
- border-width: 0 0 1px 0;
+ border-width: 0 0 1px;
align-items: start;
// panel theme
color: var(--panelText);
@@ -150,7 +151,7 @@
.button-unstyled:hover,
a:hover {
- i[class*=icon-],
+ i[class*="icon-"],
.svg-inline--fa,
.iconLetter {
color: var(--panelText);
@@ -173,7 +174,7 @@
flex-shrink: 0;
&,
- i[class*=icon-] {
+ i[class*="icon-"] {
color: $fallback--text;
color: var(--btnPanelText, $fallback--text);
}
@@ -234,7 +235,8 @@
border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;
border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);
align-items: center;
- border-width: 1px 0 0 0;
+ border-width: 1px 0 0;
border-style: solid;
border-color: var(--border, $fallback--border);
}
+/* stylelint-enable no-descending-specificity */
diff --git a/yarn.lock b/yarn.lock
index c0061cf8..e2e06dec 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5278,7 +5278,7 @@ jest-worker@^27.4.5:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest-worker@^28.0.2:
+jest-worker@^28.0.2, jest-worker@^28.1.0:
version "28.1.3"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98"
integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==
@@ -8014,6 +8014,17 @@ stylelint-scss@^4.0.0:
postcss-selector-parser "^6.0.6"
postcss-value-parser "^4.1.0"
+stylelint-webpack-plugin@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stylelint-webpack-plugin/-/stylelint-webpack-plugin-3.3.0.tgz#3ba40e2b2b2b7d1802fa53618e01fc28bc21ffb3"
+ integrity sha512-F53bapIZ9zI16ero8IWm6TrUE6SSibZBphJE9b5rR2FxtvmGmm1YmS+a5xjQzn63+cv71GVSCu4byX66fBLpEw==
+ dependencies:
+ globby "^11.1.0"
+ jest-worker "^28.1.0"
+ micromatch "^4.0.5"
+ normalize-path "^3.0.0"
+ schema-utils "^4.0.0"
+
stylelint@14.16.1:
version "14.16.1"
resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.16.1.tgz#b911063530619a1bbe44c2b875fd8181ebdc742d"
--
cgit v1.2.3-70-g09d2
From aea9f92d39df4af5e7579e9d0ec443d3fb18a756 Mon Sep 17 00:00:00 2001
From: flxy
Date: Wed, 11 Jan 2023 13:52:49 +0100
Subject: Adjust query selector to actually get the popover now
---
src/components/react_button/react_button.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js
index 2a0dac85..58fbb61b 100644
--- a/src/components/react_button/react_button.js
+++ b/src/components/react_button/react_button.js
@@ -41,7 +41,7 @@ const ReactButton = {
},
focusInput () {
this.$nextTick(() => {
- const input = this.$el.querySelector('input')
+ const input = document.querySelector('.popover.ReactButton').querySelector('input')
if (input) input.focus()
})
},
--
cgit v1.2.3-70-g09d2
From d81fdafacb86b120714b6541bd83cf588ab8b577 Mon Sep 17 00:00:00 2001
From: flxy
Date: Wed, 11 Jan 2023 14:12:29 +0100
Subject: Pick a better query selector
---
src/components/react_button/react_button.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/react_button/react_button.js b/src/components/react_button/react_button.js
index 58fbb61b..47a48623 100644
--- a/src/components/react_button/react_button.js
+++ b/src/components/react_button/react_button.js
@@ -41,7 +41,7 @@ const ReactButton = {
},
focusInput () {
this.$nextTick(() => {
- const input = document.querySelector('.popover.ReactButton').querySelector('input')
+ const input = document.querySelector('.reaction-picker-filter > input')
if (input) input.focus()
})
},
--
cgit v1.2.3-70-g09d2
From d21ce77670d1a639929aac468e0b4c88cf0b2186 Mon Sep 17 00:00:00 2001
From: flxy
Date: Thu, 12 Jan 2023 09:45:10 +0100
Subject: Use splice instead of delete
---
src/components/settings_modal/tabs/profile_tab.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/settings_modal/tabs/profile_tab.js b/src/components/settings_modal/tabs/profile_tab.js
index b86faef0..ff2ccef2 100644
--- a/src/components/settings_modal/tabs/profile_tab.js
+++ b/src/components/settings_modal/tabs/profile_tab.js
@@ -153,7 +153,7 @@ const ProfileTab = {
return false
},
deleteField (index, event) {
- this.$delete(this.newFields, index)
+ this.newFields.splice(index, 1)
},
uploadFile (slot, e) {
const file = e.target.files[0]
--
cgit v1.2.3-70-g09d2
From a28032fa58ff341b8815a0651d621ed358efd168 Mon Sep 17 00:00:00 2001
From: tusooa
Date: Fri, 13 Jan 2023 00:37:42 -0500
Subject: Disable no-shorthand for certain props for better readability
---
.stylelintrc.json | 17 ++++++++++++++++-
src/App.scss | 2 --
src/components/desktop_nav/desktop_nav.scss | 2 --
src/components/user_card/user_card.scss | 9 ++++-----
4 files changed, 20 insertions(+), 10 deletions(-)
(limited to 'src/components')
diff --git a/.stylelintrc.json b/.stylelintrc.json
index 7517362c..d6689cc0 100644
--- a/.stylelintrc.json
+++ b/.stylelintrc.json
@@ -21,6 +21,21 @@
"import-notation": null,
"custom-property-pattern": null,
"keyframes-name-pattern": null,
- "scss/operator-no-newline-after": null
+ "scss/operator-no-newline-after": null,
+ "declaration-block-no-redundant-longhand-properties": [
+ true,
+ {
+ "ignoreShorthands": [
+ "grid-template",
+ "margin",
+ "padding",
+ "border",
+ "border-width",
+ "border-style",
+ "border-color",
+ "border-radius"
+ ]
+ }
+ ]
}
}
diff --git a/src/App.scss b/src/App.scss
index 0d2daa7d..be5dce9d 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -214,10 +214,8 @@ nav {
grid-template-columns:
var(--effectiveSidebarColumnWidth)
var(--effectiveContentColumnWidth);
- /* stylelint-disable declaration-block-no-redundant-longhand-properties */
grid-template-areas: "sidebar content";
grid-template-rows: 1fr;
- /* stylelint-enable declaration-block-no-redundant-longhand-properties */
box-sizing: border-box;
margin: 0 auto;
align-content: flex-start;
diff --git a/src/components/desktop_nav/desktop_nav.scss b/src/components/desktop_nav/desktop_nav.scss
index 00f434bf..c7e02936 100644
--- a/src/components/desktop_nav/desktop_nav.scss
+++ b/src/components/desktop_nav/desktop_nav.scss
@@ -14,11 +14,9 @@
.inner-nav {
display: grid;
- /* stylelint-disable declaration-block-no-redundant-longhand-properties */
grid-template-rows: var(--navbar-height);
grid-template-columns: 2fr auto 2fr;
grid-template-areas: "sitename logo actions";
- /* stylelint-enable declaration-block-no-redundant-longhand-properties */
box-sizing: border-box;
padding: 0 1.2em;
margin: auto;
diff --git a/src/components/user_card/user_card.scss b/src/components/user_card/user_card.scss
index 942673c4..d56b6672 100644
--- a/src/components/user_card/user_card.scss
+++ b/src/components/user_card/user_card.scss
@@ -43,11 +43,10 @@
mask-composite: exclude;
background-size: cover;
mask-size: 100% 60%;
- border-radius:
- calc(var(--__roundnessTop, --panelRadius) - 1px)
- calc(var(--__roundnessTop, --panelRadius) - 1px)
- calc(var(--__roundnessBottom, --panelRadius) - 1px)
- calc(var(--__roundnessBottom, --panelRadius) - 1px);
+ border-top-left-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);
+ border-top-right-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);
+ border-bottom-left-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);
+ border-bottom-right-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);
background-color: var(--profileBg);
z-index: -2;
--
cgit v1.2.3-70-g09d2
From 274d384572f5699ddf0b43065235b32304954ca1 Mon Sep 17 00:00:00 2001
From: tusooa
Date: Sat, 14 Jan 2023 10:19:08 -0500
Subject: Make modal easier to close if there is only one image
---
src/components/media_modal/media_modal.js | 5 +++++
src/components/media_modal/media_modal.vue | 1 +
src/components/swipe_click/swipe_click.js | 7 +++++++
3 files changed, 13 insertions(+)
(limited to 'src/components')
diff --git a/src/components/media_modal/media_modal.js b/src/components/media_modal/media_modal.js
index ff993664..05ef9fbe 100644
--- a/src/components/media_modal/media_modal.js
+++ b/src/components/media_modal/media_modal.js
@@ -63,6 +63,11 @@ const MediaModal = {
},
type () {
return this.currentMedia ? this.getType(this.currentMedia) : null
+ },
+ swipeDisableClickThreshold () {
+ // If there is only one media, allow more mouse movements to close the modal
+ // because there is less chance that the user wants to switch to another image
+ return () => this.canNavigate ? 1 : 30
}
},
methods: {
diff --git a/src/components/media_modal/media_modal.vue b/src/components/media_modal/media_modal.vue
index d59055b3..8e1adda5 100644
--- a/src/components/media_modal/media_modal.vue
+++ b/src/components/media_modal/media_modal.vue
@@ -10,6 +10,7 @@
class="modal-image-container"
:direction="swipeDirection"
:threshold="swipeThreshold"
+ :disable-click-threshold="swipeDisableClickThreshold"
@preview-requested="handleSwipePreview"
@swipe-finished="handleSwipeEnd"
@swipeless-clicked="hide"
diff --git a/src/components/swipe_click/swipe_click.js b/src/components/swipe_click/swipe_click.js
index 238e6df8..2a423901 100644
--- a/src/components/swipe_click/swipe_click.js
+++ b/src/components/swipe_click/swipe_click.js
@@ -5,6 +5,8 @@ import GestureService from '../../services/gesture_service/gesture_service'
* direction: a vector that indicates the direction of the intended swipe
* threshold: the minimum distance in pixels the swipe has moved on `direction'
* for swipe-finished() to have a non-zero sign
+ * disableClickThreshold: the minimum distance in pixels for the swipe to
+ * not trigger a click
* perpendicularTolerance: see gesture_service
*
* Events:
@@ -34,6 +36,10 @@ const SwipeClick = {
type: Function,
default: () => 30
},
+ disableClickThreshold: {
+ type: Function,
+ default: () => 1
+ },
perpendicularTolerance: {
type: Number,
default: 1.0
@@ -72,6 +78,7 @@ const SwipeClick = {
this.$gesture = new GestureService.SwipeAndClickGesture({
direction: this.direction,
threshold: this.threshold,
+ disableClickThreshold: this.disableClickThreshold,
perpendicularTolerance: this.perpendicularTolerance,
swipePreviewCallback: this.preview,
swipeEndCallback: this.end,
--
cgit v1.2.3-70-g09d2
From 8acbc31a20069c737a65a9bc38f760741560574d Mon Sep 17 00:00:00 2001
From: tusooa
Date: Sat, 14 Jan 2023 22:36:21 -0500
Subject: Use bdi to isolate repeater name
---
src/components/status/status.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index 82eb7ac6..f3bdb19d 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -84,7 +84,7 @@
:user="statusoid.user"
/>
-
@@ -101,7 +101,7 @@
v-else
:to="retweeterProfileLink"
>{{ retweeter }}
-
+
{{ ' ' }}
Date: Sat, 14 Jan 2023 22:43:18 -0500
Subject: Debounce mute word setting
---
src/components/settings_modal/tabs/filtering_tab.js | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
(limited to 'src/components')
diff --git a/src/components/settings_modal/tabs/filtering_tab.js b/src/components/settings_modal/tabs/filtering_tab.js
index 5354e5db..7c37f0bc 100644
--- a/src/components/settings_modal/tabs/filtering_tab.js
+++ b/src/components/settings_modal/tabs/filtering_tab.js
@@ -1,4 +1,4 @@
-import { filter, trim } from 'lodash'
+import { filter, trim, debounce } from 'lodash'
import BooleanSetting from '../helpers/boolean_setting.vue'
import ChoiceSetting from '../helpers/choice_setting.vue'
import IntegerSetting from '../helpers/integer_setting.vue'
@@ -29,11 +29,16 @@ const FilteringTab = {
},
set (value) {
this.muteWordsStringLocal = value
+ this.debouncedSetMuteWords(value)
+ }
+ },
+ debouncedSetMuteWords () {
+ return debounce((value) => {
this.$store.dispatch('setOption', {
name: 'muteWords',
value: filter(value.split('\n'), (word) => trim(word).length > 0)
})
- }
+ }, 1000)
}
},
// Updating nested properties
--
cgit v1.2.3-70-g09d2
From a58a6d3c357592f34007c67bbf7fdf740864212a Mon Sep 17 00:00:00 2001
From: tusooa
Date: Sat, 14 Jan 2023 23:20:28 -0500
Subject: Fix notification attachment icon overflow
---
src/components/attachment/attachment.js | 4 +++-
src/components/attachment/attachment.scss | 7 ++++++-
src/components/attachment/attachment.vue | 5 +++--
src/components/gallery/gallery.js | 1 +
src/components/gallery/gallery.vue | 1 +
src/components/status_content/status_content.vue | 1 +
6 files changed, 15 insertions(+), 4 deletions(-)
(limited to 'src/components')
diff --git a/src/components/attachment/attachment.js b/src/components/attachment/attachment.js
index 5dc50475..6e14b24d 100644
--- a/src/components/attachment/attachment.js
+++ b/src/components/attachment/attachment.js
@@ -36,6 +36,7 @@ library.add(
const Attachment = {
props: [
'attachment',
+ 'compact',
'description',
'hideDescription',
'nsfw',
@@ -71,7 +72,8 @@ const Attachment = {
{
'-loading': this.loading,
'-nsfw-placeholder': this.hidden,
- '-editable': this.edit !== undefined
+ '-editable': this.edit !== undefined,
+ '-compact': this.compact
},
'-type-' + this.type,
this.size && '-size-' + this.size,
diff --git a/src/components/attachment/attachment.scss b/src/components/attachment/attachment.scss
index b2dea98d..966acc68 100644
--- a/src/components/attachment/attachment.scss
+++ b/src/components/attachment/attachment.scss
@@ -102,7 +102,6 @@
padding-top: 0.5em;
}
-
.play-icon {
position: absolute;
font-size: 64px;
@@ -265,4 +264,10 @@
object-fit: cover;
}
}
+
+ &.-compact {
+ .placeholder-container {
+ padding-bottom: 0.5em;
+ }
+ }
}
diff --git a/src/components/attachment/attachment.vue b/src/components/attachment/attachment.vue
index 2a89886d..79f62806 100644
--- a/src/components/attachment/attachment.vue
+++ b/src/components/attachment/attachment.vue
@@ -162,10 +162,11 @@
target="_blank"
>
-
+
{{ localDescription }}
diff --git a/src/components/gallery/gallery.js b/src/components/gallery/gallery.js
index 4e1bda55..e86a3eea 100644
--- a/src/components/gallery/gallery.js
+++ b/src/components/gallery/gallery.js
@@ -4,6 +4,7 @@ import { sumBy, set } from 'lodash'
const Gallery = {
props: [
'attachments',
+ 'compact',
'limitRows',
'descriptions',
'limit',
diff --git a/src/components/gallery/gallery.vue b/src/components/gallery/gallery.vue
index ccf6e3e2..bc18f545 100644
--- a/src/components/gallery/gallery.vue
+++ b/src/components/gallery/gallery.vue
@@ -20,6 +20,7 @@
v-for="(attachment, attachmentIndex) in row.items"
:key="attachment.id"
class="gallery-item"
+ :compact="compact"
:nsfw="nsfw"
:attachment="attachment"
:size="size"
diff --git a/src/components/status_content/status_content.vue b/src/components/status_content/status_content.vue
index e2120f7a..c0e5c0b9 100644
--- a/src/components/status_content/status_content.vue
+++ b/src/components/status_content/status_content.vue
@@ -33,6 +33,7 @@
Date: Wed, 9 Feb 2022 15:04:53 -0500
Subject: Add delete status confirm modal
---
src/components/extra_buttons/extra_buttons.js | 31 +++++++++++++++++++++-----
src/components/extra_buttons/extra_buttons.vue | 10 +++++++++
src/modules/config.js | 6 +++++
src/modules/instance.js | 6 +++++
4 files changed, 47 insertions(+), 6 deletions(-)
(limited to 'src/components')
diff --git a/src/components/extra_buttons/extra_buttons.js b/src/components/extra_buttons/extra_buttons.js
index 3dc968c9..b1458d30 100644
--- a/src/components/extra_buttons/extra_buttons.js
+++ b/src/components/extra_buttons/extra_buttons.js
@@ -1,4 +1,5 @@
import Popover from '../popover/popover.vue'
+import ConfirmModal from '../confirm_modal/confirm_modal.vue'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
faEllipsisH,
@@ -32,10 +33,14 @@ library.add(
const ExtraButtons = {
props: ['status'],
- components: { Popover },
+ components: {
+ Popover,
+ ConfirmModal
+ },
data () {
return {
- expanded: false
+ expanded: false,
+ showingDeleteDialog: false
}
},
methods: {
@@ -46,11 +51,22 @@ const ExtraButtons = {
this.expanded = false
},
deleteStatus () {
- const confirmed = window.confirm(this.$t('status.delete_confirm'))
- if (confirmed) {
- this.$store.dispatch('deleteStatus', { id: this.status.id })
+ if (this.shouldConfirmDelete) {
+ this.showDeleteStatusConfirmDialog()
+ } else {
+ this.doDeleteStatus()
}
},
+ doDeleteStatus () {
+ this.$store.dispatch('deleteStatus', { id: this.status.id })
+ hideDeleteStatusConfirmDialog()
+ },
+ showDeleteStatusConfirmDialog () {
+ this.showingDeleteDialog = true
+ },
+ hideDeleteStatusConfirmDialog () {
+ this.showingDeleteDialog = false
+ },
pinStatus () {
this.$store.dispatch('pinStatus', this.status.id)
.then(() => this.$emit('onSuccess'))
@@ -133,7 +149,10 @@ const ExtraButtons = {
isEdited () {
return this.status.edited_at !== null
},
- editingAvailable () { return this.$store.state.instance.editingAvailable }
+ editingAvailable () { return this.$store.state.instance.editingAvailable },
+ shouldConfirmDelete () {
+ return this.$store.getters.mergedConfig.modalOnDelete
+ }
}
}
diff --git a/src/components/extra_buttons/extra_buttons.vue b/src/components/extra_buttons/extra_buttons.vue
index a84d47f6..293f6d68 100644
--- a/src/components/extra_buttons/extra_buttons.vue
+++ b/src/components/extra_buttons/extra_buttons.vue
@@ -165,6 +165,16 @@
/>
+
+ {{ $t('status.delete_confirm') }}
+
diff --git a/src/modules/config.js b/src/modules/config.js
index 3cd6888f..a8949030 100644
--- a/src/modules/config.js
+++ b/src/modules/config.js
@@ -78,6 +78,12 @@ export const defaultState = {
minimalScopesMode: undefined, // instance default
// This hides statuses filtered via a word filter
hideFilteredStatuses: undefined, // instance default
+ modalOnRepeat: undefined, // instance default
+ modalOnUnfollow: undefined, // instance default
+ modalOnBlock: undefined, // instance default
+ modalOnMute: undefined, // instance default
+ modalOnDelete: undefined, // instance default
+ modalOnLogout: undefined, // instance default
playVideosInModal: false,
useOneClickNsfw: false,
useContainFit: true,
diff --git a/src/modules/instance.js b/src/modules/instance.js
index 8e8d13d3..6fc3830c 100644
--- a/src/modules/instance.js
+++ b/src/modules/instance.js
@@ -71,6 +71,12 @@ const defaultState = {
hideSitename: false,
hideUserStats: false,
muteBotStatuses: false,
+ modalOnRepeat: false,
+ modalOnUnfollow: false,
+ modalOnBlock: true,
+ modalOnMute: false,
+ modalOnDelete: true,
+ modalOnLogout: true,
loginMethod: 'password',
logo: '/static/logo.svg',
logoMargin: '.2em',
--
cgit v1.2.3-70-g09d2
From 1e352fbfacddc205397153bf5087484d550129e6 Mon Sep 17 00:00:00 2001
From: Tusooa Zhu
Date: Wed, 9 Feb 2022 15:05:21 -0500
Subject: Add English translations for delete status confirm modal
---
src/components/extra_buttons/extra_buttons.js | 2 +-
src/i18n/en.json | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/extra_buttons/extra_buttons.js b/src/components/extra_buttons/extra_buttons.js
index b1458d30..48b960b2 100644
--- a/src/components/extra_buttons/extra_buttons.js
+++ b/src/components/extra_buttons/extra_buttons.js
@@ -59,7 +59,7 @@ const ExtraButtons = {
},
doDeleteStatus () {
this.$store.dispatch('deleteStatus', { id: this.status.id })
- hideDeleteStatusConfirmDialog()
+ this.hideDeleteStatusConfirmDialog()
},
showDeleteStatusConfirmDialog () {
this.showingDeleteDialog = true
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 1ee1147a..b2bec692 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -852,6 +852,9 @@
"bookmark": "Bookmark",
"unbookmark": "Unbookmark",
"delete_confirm": "Do you really want to delete this status?",
+ "delete_confirm_title": "Delete confirmation",
+ "delete_confirm_accept_button": "Delete",
+ "delete_confirm_cancel_button": "Keep",
"reply_to": "Reply to",
"mentions": "Mentions",
"replies_list": "Replies:",
--
cgit v1.2.3-70-g09d2
From 1ff2948aeb485ef48a4add6310ba8fb9d43d262c Mon Sep 17 00:00:00 2001
From: Tusooa Zhu
Date: Wed, 9 Feb 2022 15:17:06 -0500
Subject: Add setting entries for whether to show confirmation dialogs
---
src/components/settings_modal/tabs/general_tab.vue | 35 ++++++++++++++++++++++
1 file changed, 35 insertions(+)
(limited to 'src/components')
diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue
index 582cb288..906c3758 100644
--- a/src/components/settings_modal/tabs/general_tab.vue
+++ b/src/components/settings_modal/tabs/general_tab.vue
@@ -148,6 +148,41 @@
+
+ {{ $t('settings.confirm_dialogs') }}
+
+ -
+
+ {{ $t('settings.confirm_dialogs_repeat') }}
+
+
+ -
+
+ {{ $t('settings.confirm_dialogs_unfollow') }}
+
+
+ -
+
+ {{ $t('settings.confirm_dialogs_block') }}
+
+
+ -
+
+ {{ $t('settings.confirm_dialogs_mute') }}
+
+
+ -
+
+ {{ $t('settings.confirm_dialogs_delete') }}
+
+
+ -
+
+ {{ $t('settings.confirm_dialogs_logout') }}
+
+
+
+
--
cgit v1.2.3-70-g09d2
From 4d175235f1bc72c369c5e5fc8ed1997b384c0b83 Mon Sep 17 00:00:00 2001
From: Tusooa Zhu
Date: Wed, 9 Feb 2022 15:49:39 -0500
Subject: Add confirmation for repeating
---
src/components/retweet_button/retweet_button.js | 24 +++++++++++++++++++++++-
src/components/retweet_button/retweet_button.vue | 10 ++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
(limited to 'src/components')
diff --git a/src/components/retweet_button/retweet_button.js b/src/components/retweet_button/retweet_button.js
index 4d92b5fa..198b6c14 100644
--- a/src/components/retweet_button/retweet_button.js
+++ b/src/components/retweet_button/retweet_button.js
@@ -1,3 +1,4 @@
+import ConfirmModal from '../confirm_modal/confirm_modal.vue'
import { library } from '@fortawesome/fontawesome-svg-core'
import {
faRetweet,
@@ -15,13 +16,24 @@ library.add(
const RetweetButton = {
props: ['status', 'loggedIn', 'visibility'],
+ components: {
+ ConfirmModal
+ },
data () {
return {
- animated: false
+ animated: false,
+ showingConfirmDialog: false
}
},
methods: {
retweet () {
+ if (!this.status.repeated && this.shouldConfirmRepeat) {
+ this.showConfirmDialog()
+ } else {
+ this.doRetweet()
+ }
+ },
+ doRetweet () {
if (!this.status.repeated) {
this.$store.dispatch('retweet', { id: this.status.id })
} else {
@@ -31,6 +43,13 @@ const RetweetButton = {
setTimeout(() => {
this.animated = false
}, 500)
+ this.hideConfirmDialog()
+ },
+ showConfirmDialog () {
+ this.showingConfirmDialog = true
+ },
+ hideConfirmDialog () {
+ this.showingConfirmDialog = false
}
},
computed: {
@@ -39,6 +58,9 @@ const RetweetButton = {
},
remoteInteractionLink () {
return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })
+ },
+ shouldConfirmRepeat () {
+ return this.mergedConfig.modalOnRepeat
}
}
}
diff --git a/src/components/retweet_button/retweet_button.vue b/src/components/retweet_button/retweet_button.vue
index 7700ee0d..38d4dc3f 100644
--- a/src/components/retweet_button/retweet_button.vue
+++ b/src/components/retweet_button/retweet_button.vue
@@ -59,6 +59,16 @@
>
{{ status.repeat_num }}
+
+ {{ $t('status.repeat_confirm') }}
+