34 lines
850 B
JavaScript
34 lines
850 B
JavaScript
export function findSelectedChoice (choices, modelValue) {
|
|
if (!modelValue) {
|
|
return null
|
|
}
|
|
|
|
return choices.find(choice => choice.value === modelValue) ?? null
|
|
}
|
|
|
|
export function choiceDisplayLabel (choice) {
|
|
return choice.title || choice.value
|
|
}
|
|
|
|
export function displayLabelForModelValue (choices, modelValue) {
|
|
const match = findSelectedChoice(choices, modelValue)
|
|
return match ? choiceDisplayLabel(match) : ''
|
|
}
|
|
|
|
export function normalizedModelValue (choices, modelValue) {
|
|
if (!modelValue) {
|
|
return ''
|
|
}
|
|
|
|
return findSelectedChoice(choices, modelValue) ? modelValue : ''
|
|
}
|
|
|
|
export function syncStateFromModelValue (choices, modelValue) {
|
|
const normalizedValue = normalizedModelValue(choices, modelValue)
|
|
|
|
return {
|
|
query: displayLabelForModelValue(choices, normalizedValue),
|
|
modelValue: normalizedValue
|
|
}
|
|
}
|