diff --git a/lib/builders/Input.ChoiceSet.js b/lib/builders/Input.ChoiceSet.js index a50338bd..77e4e04e 100644 --- a/lib/builders/Input.ChoiceSet.js +++ b/lib/builders/Input.ChoiceSet.js @@ -10,10 +10,6 @@ const { COLORS } = require('./../utils/color-reference') const showWhen = prop => `${prop} ? parseTemplate(\`{{ \${${prop}} }}\`, { data }) === 'true' : true` module.exports = function (definition, options) { - definition.choicesPath = definition.choicesPath - ? `${definition.choicesPath}.map(r => { return { label: r.title, value: r.value, sublabel: r.subtitle } })` - : '' - const { // inset, isMultiSelect, @@ -97,6 +93,8 @@ function select (div, definition) { select .addAttribute(':emit-value', true) .addAttribute(':map-options', true) + .addAttribute('option-value', 'value') + .addAttribute(':option-label', choicesPath ? 'opt => opt.title || opt.label' : 'opt => opt.label') .addAttribute(':dense', true) const pathToOptions = choicesPath || `lists.${id}` @@ -131,7 +129,7 @@ function select (div, definition) { selectItem .addChildTag('q-item-section') .addChildTag('q-item-label') - .content('{{ props.opt.label }}') + .content(choicesPath ? '{{ props.opt.title || props.opt.label }}' : '{{ props.opt.label }}') if (isMultiSelect) { select.addAttribute('multiple', null) @@ -195,7 +193,7 @@ function radioOrCheckbox (div, definition, selectionType) { const itemLabel = itemSectionLabel .addChildTag('q-item-label') - .content('{{ opt.label }}') + .content(choicesPath ? '{{ opt.title || opt.label }}' : '{{ opt.label }}') const tooltipIcon = itemLabel .addChildTag('q-icon') @@ -210,9 +208,9 @@ function radioOrCheckbox (div, definition, selectionType) { .addChildTag('q-item-label') .addAttribute('caption', null) .addAttribute('class', 'q-my-sm') - .addAttribute('v-if', 'Array.isArray(opt.sublabel)') + .addAttribute('v-if', choicesPath ? 'Array.isArray(opt.subtitle || opt.sublabel)' : 'Array.isArray(opt.sublabel)') .addChildTag('div') - .addAttribute('v-for', '(sublabel, idx) in opt.sublabel') + .addAttribute('v-for', choicesPath ? '(sublabel, idx) in opt.subtitle || opt.sublabel' : '(sublabel, idx) in opt.sublabel') .addAttribute(':key', 'idx') .content('{{ sublabel }}') @@ -220,8 +218,8 @@ function radioOrCheckbox (div, definition, selectionType) { .addChildTag('q-item-label') .addAttribute('caption', null) .addAttribute('class', 'q-my-sm') - .addAttribute('v-if', 'typeof opt.sublabel === \'string\'') - .content('{{ opt.sublabel }}') + .addAttribute('v-if', choicesPath ? 'typeof opt.subtitle === \'string\' || typeof opt.sublabel === \'string\'' : 'typeof opt.sublabel === \'string\'') + .content(choicesPath ? '{{ opt.subtitle || opt.sublabel }}' : '{{ opt.sublabel }}') // const itemSectionTooltip = item // .addChildTag('q-item-section')