Skip to content

Commit d168ed2

Browse files
enable users to select and enter new options to the username field
1 parent 88231b3 commit d168ed2

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

ui/src/views/project/AddAccountOrUserToProject.vue

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -117,27 +117,23 @@
117117
<template #label>
118118
<tooltip-label :title="$t('label.name')" :tooltip="apiParams.addUserToProject.username.description"/>
119119
</template>
120-
<a-select
121-
show-search
120+
<a-auto-complete
122121
v-model:value="form.username"
123122
:placeholder="apiParams.addUserToProject.username.description"
124-
v-focus="true"
125-
:filterOption="false"
126-
@search="fetchUsers"
123+
:filterOption="filterOption"
124+
:options="users"
127125
>
128126
<template v-if="load.users" #notFoundContent>
129127
<a-spin size="small" />
130128
</template>
131-
<template v-if="!load.users">
132-
<a-select-option v-for="user in users" :key="user.username" :value="user.username">
133-
<span v-if="user.icon">
134-
<resource-icon :image="user.icon.base64image" size="1x" style="margin-right: 5px"/>
135-
</span>
136-
<block-outlined v-else style="margin-right: 5px" />
137-
{{ user.firstname + ' ' + user.lastname + " (" + user.username + ")" }}
138-
</a-select-option>
129+
<template v-if="!load.users" #option="item">
130+
<span v-if="item.icon">
131+
<resource-icon :image="item.icon.base64image" size="1x" style="margin-right: 5px"/>
132+
</span>
133+
<block-outlined v-else style="margin-right: 5px" />
134+
{{ item.firstName + ' ' + item.lastName + " (" + item.value + ")" }}
139135
</template>
140-
</a-select>
136+
</a-auto-complete>
141137
</a-form-item>
142138
<a-form-item name="email" ref="email">
143139
<template #label>
@@ -262,13 +258,27 @@ export default {
262258
params.keyword = keyword
263259
}
264260
api('listUsers', params).then(response => {
265-
this.users = response.listusersresponse.user ? response.listusersresponse.user : []
261+
this.users = this.parseUsers(response?.listusersresponse?.user)
266262
}).catch(error => {
267263
this.$notifyError(error)
268264
}).finally(() => {
269265
this.load.users = false
270266
})
271267
},
268+
parseUsers (users) {
269+
if (!users) {
270+
return []
271+
}
272+
273+
return users.map(user => {
274+
return {
275+
value: user.username,
276+
firstName: user.firstname,
277+
lastName: user.lastname,
278+
icon: user.icon
279+
}
280+
})
281+
},
272282
fetchAccounts (keyword) {
273283
this.load.accounts = true
274284
const params = { domainid: this.resource.domainid, showicon: true }

0 commit comments

Comments
 (0)