olivetin/frontend/resources/vue/components/choiceComboboxHelpers.js

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
}
}