Skip to content

Commit 2066238

Browse files
committed
feat: remove user form view on deletion
1 parent 9b2ed06 commit 2066238

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

src/runtime/assets/nuxt-users.css

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,4 +645,25 @@ form {
645645
.n-users-login-title {
646646
font-size: 1.5rem;
647647
}
648+
}
649+
650+
/* Transition animations for user list */
651+
.n-users-list-move,
652+
.n-users-list-enter-active,
653+
.n-users-list-leave-active {
654+
transition: all 0.3s ease;
655+
}
656+
657+
.n-users-list-enter-from,
658+
.n-users-list-leave-to {
659+
opacity: 0;
660+
transform: translateX(2rem);
661+
}
662+
663+
.n-users-list-leave-active {
664+
position: absolute;
665+
}
666+
667+
.n-users-list-move {
668+
transition-timing-function: ease;
648669
}

src/runtime/components/NUsersList.vue

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ withDefaults(defineProps<Props>(), {
2929
fieldLabels: () => defaultFieldLabels
3030
})
3131
32-
defineEmits<{
32+
const emit = defineEmits<{
3333
(e: 'editClick' | 'delete', user: User): void
3434
}>()
3535
@@ -69,6 +69,11 @@ defineExpose({
6969
onMounted(() => {
7070
fetchUsers()
7171
})
72+
73+
const handleDelete = (user: User) => {
74+
users.value = users.value.filter(u => u.id !== user.id)
75+
emit('delete', user)
76+
}
7277
</script>
7378

7479
<template>
@@ -105,7 +110,11 @@ onMounted(() => {
105110

106111
<div v-if="users.length">
107112
<slot name="usersList">
108-
<ul class="n-users-grid n-users-grid-auto">
113+
<TransitionGroup
114+
name="n-users-list"
115+
tag="ul"
116+
class="n-users-grid n-users-grid-auto"
117+
>
109118
<li
110119
v-for="(user, index) in users"
111120
:key="user.id"
@@ -121,11 +130,11 @@ onMounted(() => {
121130
:display-fields="displayFields"
122131
:field-labels="fieldLabels"
123132
@edit-click="$emit('editClick', user)"
124-
@delete="$emit('delete', user)"
133+
@delete="handleDelete(user)"
125134
/>
126135
</slot>
127136
</li>
128-
</ul>
137+
</TransitionGroup>
129138
</slot>
130139

131140
<slot
@@ -169,5 +178,3 @@ onMounted(() => {
169178
</div>
170179
</div>
171180
</template>
172-
173-
<!-- CSS removed - now consolidated in nuxt-users.css -->

0 commit comments

Comments
 (0)