3
0

Fixes CInputSelect prop type errors

This commit is contained in:
Emmy Leke 2024-02-07 10:55:48 +01:00 committed by EmmyMay
parent 32c79d2730
commit 7a2045d375
2 changed files with 40 additions and 23 deletions

View File

@ -45,6 +45,7 @@
v-model="multipleSelected"
:options="options"
:get-option-key="getOptionKey"
:get-option-label="getOptionLabel"
:disabled="!module"
:loading="processing"
:clearable="false"
@ -70,10 +71,9 @@
ref="singleSelect"
:options="options"
:get-option-key="getOptionKey"
:get-option-label="getOptionLabel"
:disabled="!module"
:loading="processing"
option-value="recordID"
option-text="label"
:clearable="false"
:filterable="false"
:searchable="searchable"
@ -98,10 +98,9 @@
v-if="field.options.selectType === 'each'"
:options="options"
:get-option-key="getOptionKey"
:get-option-label="getOptionLabel"
:disabled="!module"
:loading="processing"
option-value="recordID"
option-text="label"
:clearable="false"
:filterable="false"
:searchable="searchable"
@ -139,10 +138,9 @@
v-model="selected"
:options="options"
:get-option-key="getOptionKey"
:get-option-label="getOptionLabel"
:disabled="!module"
:loading="processing"
option-value="recordID"
option-text="label"
:placeholder="placeholder"
:filterable="false"
:searchable="searchable"
@ -295,10 +293,8 @@ export default {
}),
getRecord (index = undefined) {
const value = index !== undefined ? this.value[index] : this.value
if (value) {
return this.convert({ recordID: value })
}
const recordID = index !== undefined ? this.value[index] : this.value
return (this.convert({ recordID }) || {}).value
},
setRecord (event, index = undefined) {
@ -506,10 +502,26 @@ export default {
this.filter.pageCursor = next ? this.filter.nextPage : this.filter.prevPage
},
getOptionKey ({ value }) {
findRecord (recordID) {
return this.options.find(r => r.value === recordID) || {}
},
getOptionKey (v) {
if (typeof v === 'string') {
return v
}
const { value } = v || {}
return value
},
getOptionLabel (v) {
if (typeof v === 'string') {
return this.findRecord(v).label || v
}
const { label } = v || {}
return label
},
setDefaultValues () {
this.processing = false
this.query = ''

View File

@ -95,7 +95,7 @@
:options="options"
:get-option-label="getOptionLabel"
:get-option-key="getOptionKey"
:value="getUserByIndex(ctx.index)"
:value="getUserIDByIndex(ctx.index)"
:clearable="false"
:filterable="false"
:selectable="option => option.selectable"
@ -112,7 +112,7 @@
@next="goToPage(true)"
/>
</c-input-select>
<span v-else>{{ getOptionLabel(getUserByIndex(ctx.index)) }}</span>
<span v-else>{{ getOptionLabel(getUserIDByIndex(ctx.index)) }}</span>
</template>
</multi>
@ -124,7 +124,7 @@
:options="options"
:get-option-label="getOptionLabel"
:get-option-key="getOptionKey"
:value="getUserByIndex()"
:value="getUserIDByIndex()"
:filterable="false"
:selectable="option => option.selectable"
:loading="processing"
@ -268,11 +268,19 @@ export default {
addUserToResolved: 'user/push',
}),
getOptionKey ({ userID }) {
return userID
getOptionKey (user) {
if (typeof user === 'string') {
return user
}
return user.userID
},
getOptionLabel ({ userID, email, name, username }) {
getOptionLabel (user) {
if (typeof user === 'string') {
user = this.findByID(user)
}
const { name, username, email, userID } = user || {}
return name || username || email || `<@${userID}>`
},
@ -295,7 +303,7 @@ export default {
const { userID } = user
if (this.field.isMulti) {
if (index >= 0) {
this.value[index] = userID
this.value.splice(index, 1, userID)
} else {
// <0, assume we're appending
this.value.push(userID)
@ -316,11 +324,8 @@ export default {
* Retrives user (via value) from record field
* Handles single & multi value fields
*/
getUserByIndex (index = 0) {
const userID = this.field.isMulti ? this.value[index] : this.value
if (userID) {
return this.findByID(userID) || {}
}
getUserIDByIndex (index = 0) {
return this.field.isMulti ? this.value[index] : this.value
},
search: debounce(function (query = '') {