import Component from '@ember/component'; import { filter } from '@ember/object/computed'; const OptionTextComponent = Component.extend({ tagName: '', 'value-field': 'value', 'text-field': 'text', didReceiveAttrs() { const me = this; me._super(...arguments); let val = me.get('value'); if (val) { const valueField = me.get('value-field'); const option = (me.get('options') || []).findBy(valueField, val); if (option) { let text = option[me.get('text-field')]; let textExp = me.get('text-exp'); me.set('text', textExp ? textExp.replace('$value', option[valueField]) .replace('$text', text) .replace(/\$\.\w+/g, field => option[field.replace('$.', '')] || '') : text); } else { me.set('text', 'N/A'); } } } }); OptionTextComponent.reopenClass({ positionalParams: ['options', 'value', 'value-field', 'text-field', 'text-exp'], }); export default OptionTextComponent;