From ee31758de73c9ed58a8494636b2d13585348d981 Mon Sep 17 00:00:00 2001 From: Jan-Christoph Borchardt <hey@jancborchardt.net> Date: Sun, 19 Jan 2020 13:21:57 +0100 Subject: [PATCH] Remove delete action from list, fix #1368 Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net> --- css/ContactsListItem.scss | 32 ------ .../ContactsList/ContactsListItem.vue | 108 ++++-------------- 2 files changed, 23 insertions(+), 117 deletions(-) diff --git a/css/ContactsListItem.scss b/css/ContactsListItem.scss index 87e1cb066..e7c763e6d 100644 --- a/css/ContactsListItem.scss +++ b/css/ContactsListItem.scss @@ -19,38 +19,6 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -// ensure transition for delete and non-deleted transition state -.app-content-list-item { - transition: left 200ms; -} - -.app-content-list-item.deleted { - z-index: 2; - // make sure we hide the undeleted element by sliding over it - // and force the background even on hover - background-color: var(--color-main-background) !important; - - .app-content-list-item-icon__avatar { - filter: brightness(.8) grayscale(1); - } - .app-content-list-item-line-one { - text-decoration: line-through; - } - - // vuejs animation - &.delete-slide-left-enter-active, - &.delete-slide-left-leave-active { - position: absolute; - top: 0; - left: 0; - width: 100%; - } - - &.delete-slide-left-enter, - &.delete-slide-left-leave-to { - left: 100%; - } -} .app-content-list-item-icon { overflow: hidden; diff --git a/src/components/ContactsList/ContactsListItem.vue b/src/components/ContactsList/ContactsListItem.vue index 40a0ef877..b6ecad5bf 100644 --- a/src/components/ContactsList/ContactsListItem.vue +++ b/src/components/ContactsList/ContactsListItem.vue @@ -1,61 +1,30 @@ <template> - <transition name="delete-slide-left"> - <div v-if="!deleteTimeout" - :id="id" - :class="{active: selectedContact === contact.key}" - tabindex="0" - class="app-content-list-item" - @click.prevent.stop="selectContact" - @keypress.enter.prevent.stop="selectContact"> - <!-- keyboard accessibility will focus the input and not the label --> - <!-- - <input ref="selected" :id="contact.key" type="checkbox" - class="app-content-list-item-checkbox checkbox" @keypress.enter.space.prevent.stop="toggleSelect"> - <label :for="contact.key" @click.prevent.stop="toggleSelect" @keypress.enter.space.prevent.stop="toggleSelect" /> - --> - <div :style="{ 'backgroundColor': colorAvatar }" class="app-content-list-item-icon"> - {{ contact.displayName | firstLetter }} - <!-- try to fetch the avatar only if the contact exists on the server --> - <div v-if="hasPhoto" :style="{ 'backgroundImage': avatarUrl }" class="app-content-list-item-icon__avatar" /> - </div> - - <!-- contact data --> - <div class="app-content-list-item-line-one"> - {{ contact.displayName }} - </div> - <div v-if="contact.email" class="app-content-list-item-line-two"> - {{ contact.email }} - </div> - - <!-- undo actions --> - <div v-if="!contact.addressbook.readOnly && !deleteTimeout" - class="icon-delete" - tabindex="0" - @click.prevent.stop="deleteContact" - @keypress.enter.prevent.stop="deleteContact" /> + <div :id="id" + :class="{active: selectedContact === contact.key}" + tabindex="0" + class="app-content-list-item" + @click.prevent.stop="selectContact" + @keypress.enter.prevent.stop="selectContact"> + <!-- keyboard accessibility will focus the input and not the label --> + <!-- + <input ref="selected" :id="contact.key" type="checkbox" + class="app-content-list-item-checkbox checkbox" @keypress.enter.space.prevent.stop="toggleSelect"> + <label :for="contact.key" @click.prevent.stop="toggleSelect" @keypress.enter.space.prevent.stop="toggleSelect" /> + --> + <div :style="{ 'backgroundColor': colorAvatar }" class="app-content-list-item-icon"> + {{ contact.displayName | firstLetter }} + <!-- try to fetch the avatar only if the contact exists on the server --> + <div v-if="hasPhoto" :style="{ 'backgroundImage': avatarUrl }" class="app-content-list-item-icon__avatar" /> </div> - <!-- Deleted contact (pending) --> - <div v-else - :id="id" - key="deleted" - class="deleted app-content-list-item"> - <div :style="{ backgroundColor: 'grey' }" class="app-content-list-item-icon"> - {{ contact.displayName | firstLetter }} - <!-- try to fetch the avatar only if the contact exists on the server --> - <div v-if="hasPhoto" :style="{ 'backgroundImage': avatarUrl }" class="app-content-list-item-icon__avatar" /> - </div> - <!-- contact data --> - <div class="app-content-list-item-line-one"> - {{ contact.displayName }} - </div> - <div v-tooltip.auto="t('contacts', 'Deleting the contact in {countdown} seconds', { countdown })" - class="icon-history" - tabindex="0" - @click.prevent.stop="cancelDeletion" - @keypress.enter.prevent.stop="cancelDeletion" /> + <!-- contact data --> + <div class="app-content-list-item-line-one"> + {{ contact.displayName }} + </div> + <div v-if="contact.email" class="app-content-list-item-line-two"> + {{ contact.email }} </div> - </transition> + </div> </template> <script> @@ -76,13 +45,6 @@ export default { required: true, }, }, - data() { - return { - deleteInterval: null, - deleteTimeout: null, - countdown: 7, - } - }, computed: { selectedGroup() { return this.$route.params.selectedGroup @@ -129,30 +91,6 @@ export default { this.$refs.selected.checked = !this.$refs.selected.checked }, - /** - * Dispatch contact deletion request - */ - deleteContact() { - this.deleteInterval = setInterval(() => { - this.countdown-- - }, 1000) - this.deleteTimeout = setTimeout(() => { - this.$store.dispatch('deleteContact', { contact: this.contact }) - this.$emit('deleted', this.index) - // reset - clearInterval(this.deleteInterval) - this.countdown = 7 - }, 7000) - }, - - cancelDeletion() { - clearTimeout(this.deleteTimeout) - clearInterval(this.deleteInterval) - this.deleteTimeout = null - this.deleteInterval = null - this.countdown = 7 - }, - /** * Select this contact within the list */