Skip to content

Commit df7182a

Browse files
YuryRybaktravist
authored andcommitted
Improvements to Select component asString method.
1 parent d7ced5a commit df7182a

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

src/components/select/Select.js

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -343,10 +343,14 @@ export default class SelectComponent extends Field {
343343
return headers;
344344
}
345345

346-
updateCustomItems() {
347-
this.setItems(this.evaluate(this.component.data.custom, {
346+
getCustomItems() {
347+
return this.evaluate(this.component.data.custom, {
348348
values: []
349-
}, 'values') || []);
349+
}, 'values');
350+
}
351+
352+
updateCustomItems() {
353+
this.setItems(this.getCustomItems() || []);
350354
}
351355

352356
/* eslint-disable max-statements */
@@ -805,10 +809,25 @@ export default class SelectComponent extends Field {
805809
asString(value) {
806810
value = value || this.getValue();
807811

808-
if (this.component.dataSrc === 'values') {
809-
value = this.component.multiple
810-
? _.filter(this.component.data.values, item => value.indexOf(item.value) !== -1)
811-
:_.find(this.component.data.values, ['value', value]);
812+
if (['values', 'custom'].includes(this.component.dataSrc)) {
813+
const {
814+
items,
815+
valueProperty,
816+
} = this.component.dataSrc === 'values'
817+
? {
818+
items: this.component.data.values,
819+
valueProperty: 'value',
820+
}
821+
: {
822+
items: this.getCustomItems(),
823+
valueProperty: this.component.valueProperty,
824+
};
825+
826+
value = (this.component.multiple && Array.isArray(value))
827+
? _.filter(items, (item) => value.includes(item.value))
828+
: valueProperty
829+
? _.find(items, [valueProperty, value])
830+
: value;
812831
}
813832

814833
if (_.isString(value)) {
@@ -821,7 +840,7 @@ export default class SelectComponent extends Field {
821840
return items.length > 0 ? items.join('<br />') : '-';
822841
}
823842

824-
return _.isObject(value)
843+
return !_.isNil(value)
825844
? this.itemTemplate(value)
826845
: '-';
827846
}

0 commit comments

Comments
 (0)