1
1
<script setup lang="ts">
2
- import { avatarText , kFormatter } from ' #imports'
3
- import type { UserWithRoles } from ' ~/stores/admin/user'
2
+ import { type User , type UserWithRoles , useUserStore } from ' @base/stores/admin/user'
3
+ import UserDrawer from ' ./UserDrawer.vue'
4
+ import { avatarText } from ' #imports'
4
5
5
6
defineProps <{
6
7
user: UserWithRoles
7
8
}>()
8
9
9
- const standardPlan = {
10
- plan: ' Standard' ,
11
- price: 99 ,
12
- benefits: [' 10 Users' , ' Up to 10GB storage' , ' Basic Support' ],
13
- }
14
-
15
10
const isUserInfoEditDialogVisible = ref (false )
16
11
const isUpgradePlanDialogVisible = ref (false )
17
12
18
- // 👉 Role variant resolver
19
- function resolveUserRoleVariant(role : string ) {
20
- if (role === ' subscriber' )
21
- return { color: ' primary' , icon: ' ri-user-line' }
22
- if (role === ' author' )
23
- return { color: ' warning' , icon: ' ri-settings-2-line' }
24
- if (role === ' maintainer' )
25
- return { color: ' success' , icon: ' ri-database-2-line' }
26
- if (role === ' editor' )
27
- return { color: ' info' , icon: ' ri-pencil-line' }
28
- if (role === ' admin' )
29
- return { color: ' error' , icon: ' ri-server-line' }
30
-
31
- return { color: ' primary' , icon: ' ri-user-line' }
13
+ const route = useRoute (' admin-users-id' )
14
+
15
+ const userStore = useUserStore ()
16
+
17
+ async function handleSubmitEdit(payload : Partial <User >) {
18
+ await userStore .updateUser (route .params .id , payload )
32
19
}
33
20
</script >
34
21
@@ -62,14 +49,9 @@ function resolveUserRoleVariant(role: string) {
62
49
{{ user.full_name }}
63
50
</h5 >
64
51
65
- <!-- 👉 Role chip -->
66
- <VChip
67
- :color =" resolveUserRoleVariant(user.roles[0]?.role.name || '').color"
68
- size =" small"
69
- class =" text-capitalize mt-4"
70
- >
71
- {{ user.roles[0]?.role.name || '' }}
72
- </VChip >
52
+ <h6 class =" text-body-1" >
53
+ {{ user.email }}
54
+ </h6 >
73
55
</VCardText >
74
56
75
57
<VCardText class =" d-flex justify-center flex-wrap gap-6 pb-6" >
@@ -88,12 +70,9 @@ function resolveUserRoleVariant(role: string) {
88
70
/>
89
71
</VAvatar >
90
72
91
- <div >
92
- <h5 class =" text-h5" >
93
- {{ kFormatter(456) }}
94
- </h5 >
95
- <span >Task Done</span >
96
- </div >
73
+ <h5 class =" text-h5" >
74
+ {{ $t('Verified') }}
75
+ </h5 >
97
76
</div >
98
77
99
78
<!-- 👉 Done Project -->
@@ -107,67 +86,48 @@ function resolveUserRoleVariant(role: string) {
107
86
>
108
87
<VIcon
109
88
size =" 24"
110
- icon =" ri-briefcase -line"
89
+ icon =" ri-shield-user -line"
111
90
/>
112
91
</VAvatar >
113
92
114
- <div >
115
- <h5 class =" text-h5" >
116
- {{ kFormatter(123) }}
117
- </h5 >
118
- <span >Project Done</span >
119
- </div >
93
+ <h5 class =" text-h5" >
94
+ {{ user.roles[0]?.role.name || $t('No role') }}
95
+ </h5 >
120
96
</div >
121
97
</VCardText >
122
98
123
99
<!-- 👉 Details -->
124
100
<VCardText class =" pb-6" >
125
- <h5 class =" text-h5" >
126
- Details
127
- </h5 >
128
-
129
- <VDivider class =" my-4" />
130
-
131
- <!-- 👉 User Details list -->
132
101
<VList class =" card-list" >
133
102
<VListItem >
134
103
<VListItemTitle class =" text-sm" >
135
- <span class =" font-weight-medium" >Phone:</span >
104
+ <span class =" font-weight-medium" >{{ $t(' Phone') }} :</span >
136
105
<span class =" text-body-1" >
137
- +{{ user.phone }}
138
- </span >
139
- </VListItemTitle >
140
- </VListItem >
141
-
142
- <VListItem >
143
- <VListItemTitle class =" text-sm" >
144
- <span class =" font-weight-medium" >
145
- Billing Email:
106
+ {{ user.phone }}
146
107
</span >
147
- <span class =" text-body-1" >{{ user.email }}</span >
148
108
</VListItemTitle >
149
109
</VListItem >
150
110
151
111
<VListItem >
152
112
<VListItemTitle class =" text-sm" >
153
113
<span class =" font-weight-medium" >
154
- Status:
114
+ {{ $t(' Status') }} :
155
115
</span >
156
116
<span class =" text-body-1 text-capitalize" >{{ user.status }}</span >
157
117
</VListItemTitle >
158
118
</VListItem >
159
119
160
120
<VListItem >
161
121
<VListItemTitle class =" text-sm" >
162
- <span class =" font-weight-medium" >Role: </span >
122
+ <span class =" font-weight-medium" >{{ $t(' Role') }} : </span >
163
123
<span class =" text-capitalize text-body-1" >{{ user.roles[0]?.role.name || '' }}</span >
164
124
</VListItemTitle >
165
125
</VListItem >
166
126
167
127
<VListItem >
168
128
<VListItemTitle class =" text-sm" >
169
129
<span class =" font-weight-medium" >
170
- Country:
130
+ {{ $t(' Country') }} :
171
131
</span >
172
132
<span class =" text-body-1" >
173
133
{{ user.country }}
@@ -178,7 +138,7 @@ function resolveUserRoleVariant(role: string) {
178
138
<VListItem >
179
139
<VListItemTitle class =" text-sm" >
180
140
<span class =" font-weight-medium" >
181
- ZIP Code:
141
+ {{ $t(' ZIP Code') }} :
182
142
</span >
183
143
<span class =" text-body-1" >{{ user.postcode }}</span >
184
144
</VListItemTitle >
@@ -187,20 +147,11 @@ function resolveUserRoleVariant(role: string) {
187
147
<VListItem >
188
148
<VListItemTitle class =" text-sm" >
189
149
<span class =" font-weight-medium" >
190
- Language:
150
+ {{ $t(' Language') }} :
191
151
</span >
192
152
<span class =" text-body-1" >{{ user.language }}</span >
193
153
</VListItemTitle >
194
154
</VListItem >
195
-
196
- <VListItem >
197
- <VListItemTitle class =" text-sm" >
198
- <span class =" font-weight-medium" >
199
- Country:
200
- </span >
201
- <span class =" text-body-1" >{{ user.country }}</span >
202
- </VListItemTitle >
203
- </VListItem >
204
155
</VList >
205
156
</VCardText >
206
157
@@ -211,23 +162,24 @@ function resolveUserRoleVariant(role: string) {
211
162
class =" me-4"
212
163
@click =" isUserInfoEditDialogVisible = true"
213
164
>
214
- Edit
165
+ {{ $t(' Edit') }}
215
166
</VBtn >
216
167
<VBtn
217
168
variant =" outlined"
218
169
color =" error"
219
170
>
220
- Suspend
171
+ {{ $t(' Suspend') }}
221
172
</VBtn >
222
173
</VCardText >
223
174
</VCard >
224
175
</VCol >
225
176
</VRow >
226
177
227
178
<!-- 👉 Edit user info dialog -->
228
- <UserInfoEditDialog
229
- v-model:is-dialog-visible =" isUserInfoEditDialogVisible"
230
- :user-data =" user"
179
+ <UserDrawer
180
+ v-model =" isUserInfoEditDialogVisible"
181
+ :user =" user"
182
+ @edit =" handleSubmitEdit"
231
183
/>
232
184
233
185
<!-- 👉 Upgrade plan dialog -->
0 commit comments