@@ -89,8 +89,9 @@ export class UIPSelectSetting extends UIPSetting {
89
89
transformValue ( value : string , attrValue : string | null ) : string | null {
90
90
if ( ! attrValue ) return value || null ;
91
91
92
- const attrTokens = this . settingOptions . reduce ( ( tokens , option ) =>
93
- TokenListUtils . remove ( tokens , option ) , TokenListUtils . split ( attrValue ) ) ;
92
+ const attrTokens = this . settingOptions . reduce ( ( tokens , option ) => {
93
+ return TokenListUtils . split ( option ) . reduce ( ( token , optionItem ) => TokenListUtils . remove ( token , optionItem ) , tokens ) ;
94
+ } , TokenListUtils . split ( attrValue ) ) ;
94
95
value && attrTokens . push ( value ) ;
95
96
96
97
return TokenListUtils . join ( attrTokens ) ;
@@ -125,15 +126,18 @@ export class UIPSelectSetting extends UIPSetting {
125
126
/** Updates setting's value for {@link mode} = "append" */
126
127
protected appendFrom ( attrValues : ( string | null ) [ ] ) : void {
127
128
// array of each attribute's value intersection with select options
128
- const valuesOptions = attrValues . map ( ( val ) => TokenListUtils . intersection ( this . settingOptions , TokenListUtils . split ( val ) ) ) ;
129
+ const valuesOptions : string [ ] = this . settingOptions . filter ( ( option ) => {
130
+ return TokenListUtils . split ( option ) . length ===
131
+ TokenListUtils . intersection ( TokenListUtils . split ( option ) , TokenListUtils . split ( attrValues [ 0 ] ) ) . length ;
132
+ } ) ;
129
133
130
134
// make empty option active if no options intersections among attribute values
131
135
if ( this . settingOptions . includes ( '' ) && valuesOptions . every ( ( inter ) => ! inter . length ) ) {
132
136
return this . setValue ( '' ) ;
133
137
}
134
138
135
139
// common options among all attribute values
136
- const commonOptions = TokenListUtils . intersection ( ... valuesOptions ) ;
140
+ const commonOptions = TokenListUtils . intersection ( valuesOptions ) ;
137
141
138
142
if ( this . multiple || commonOptions . length ) return this . setValue ( TokenListUtils . join ( commonOptions ) ) ;
139
143
@@ -146,7 +150,7 @@ export class UIPSelectSetting extends UIPSetting {
146
150
147
151
protected setValue ( value : string ) : void {
148
152
this . $$off ( this . _onChange ) ;
149
- value . split ( ' ' ) . forEach ( ( opt ) => this . $field . setSelected ( opt , true ) ) ;
153
+ this . $field . setSelected ( value , true ) ;
150
154
this . $$on ( this . _onChange ) ;
151
155
}
152
156
0 commit comments