aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/chat/chat.js8
-rw-r--r--src/components/media_modal/media_modal.vue10
-rw-r--r--src/components/poll/poll_form.vue1
-rw-r--r--src/components/registration/registration.js17
-rw-r--r--src/components/registration/registration.vue17
5 files changed, 49 insertions, 4 deletions
diff --git a/src/components/chat/chat.js b/src/components/chat/chat.js
index e57fcb91..2780be75 100644
--- a/src/components/chat/chat.js
+++ b/src/components/chat/chat.js
@@ -234,6 +234,13 @@ const Chat = {
const scrollable = this.$refs.scrollable
return scrollable && scrollable.scrollTop <= 0
},
+ cullOlderCheck () {
+ window.setTimeout(() => {
+ if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {
+ this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)
+ }
+ }, 5000)
+ },
handleScroll: _.throttle(function () {
if (!this.currentChat) { return }
@@ -241,6 +248,7 @@ const Chat = {
this.fetchChat({ maxId: this.currentChatMessageService.minId })
} else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {
this.jumpToBottomButtonVisible = false
+ this.cullOlderCheck()
if (this.newMessageCount > 0) {
// 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
diff --git a/src/components/media_modal/media_modal.vue b/src/components/media_modal/media_modal.vue
index ea7f7a7f..54bc5335 100644
--- a/src/components/media_modal/media_modal.vue
+++ b/src/components/media_modal/media_modal.vue
@@ -73,11 +73,21 @@
}
}
+@keyframes media-fadein {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
+
.modal-image {
max-width: 90%;
max-height: 90%;
box-shadow: 0px 5px 15px 0 rgba(0, 0, 0, 0.5);
image-orientation: from-image; // NOTE: only FF supports this
+ animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;
}
.modal-view-button-arrow {
diff --git a/src/components/poll/poll_form.vue b/src/components/poll/poll_form.vue
index 09496105..c4403210 100644
--- a/src/components/poll/poll_form.vue
+++ b/src/components/poll/poll_form.vue
@@ -151,6 +151,7 @@
border: none;
box-shadow: none;
background-color: transparent;
+ padding-right: 0.75em;
}
}
diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js
index dab06e1e..1ac8e8be 100644
--- a/src/components/registration/registration.js
+++ b/src/components/registration/registration.js
@@ -10,7 +10,8 @@ const registration = {
fullname: '',
username: '',
password: '',
- confirm: ''
+ confirm: '',
+ reason: ''
},
captcha: {}
}),
@@ -24,7 +25,8 @@ const registration = {
confirm: {
required,
sameAsPassword: sameAs('password')
- }
+ },
+ reason: { required: requiredIf(() => this.accountApprovalRequired) }
}
}
},
@@ -38,7 +40,10 @@ const registration = {
computed: {
token () { return this.$route.params.token },
bioPlaceholder () {
- return this.$t('registration.bio_placeholder').replace(/\s*\n\s*/g, ' \n')
+ return this.replaceNewlines(this.$t('registration.bio_placeholder'))
+ },
+ reasonPlaceholder () {
+ return this.replaceNewlines(this.$t('registration.reason_placeholder'))
},
...mapState({
registrationOpen: (state) => state.instance.registrationOpen,
@@ -46,7 +51,8 @@ const registration = {
isPending: (state) => state.users.signUpPending,
serverValidationErrors: (state) => state.users.signUpErrors,
termsOfService: (state) => state.instance.tos,
- accountActivationRequired: (state) => state.instance.accountActivationRequired
+ accountActivationRequired: (state) => state.instance.accountActivationRequired,
+ accountApprovalRequired: (state) => state.instance.accountApprovalRequired
})
},
methods: {
@@ -73,6 +79,9 @@ const registration = {
},
setCaptcha () {
this.getCaptcha().then(cpt => { this.captcha = cpt })
+ },
+ replaceNewlines (str) {
+ return str.replace(/\s*\n\s*/g, ' \n')
}
}
}
diff --git a/src/components/registration/registration.vue b/src/components/registration/registration.vue
index 100df0d6..062d4121 100644
--- a/src/components/registration/registration.vue
+++ b/src/components/registration/registration.vue
@@ -163,6 +163,23 @@
</div>
<div
+ v-if="accountApprovalRequired"
+ class="form-group"
+ >
+ <label
+ class="form--label"
+ for="reason"
+ >{{ $t('registration.reason') }}</label>
+ <textarea
+ id="reason"
+ v-model="user.reason"
+ :disabled="isPending"
+ class="form-control"
+ :placeholder="reasonPlaceholder"
+ />
+ </div>
+
+ <div
v-if="captcha.type != 'none'"
id="captcha-group"
class="form-group"