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