@@ -65,7 +65,7 @@ Ractive.components['dropdown'] = Ractive.extend do
6565 selected -key -observer = null
6666 update -dropdown = (_new ) ~>
6767 if @get \debug
68- @actor .log.log "#{@_guid}: selected key is changed to: " , _new
68+ @actor .log.log "#{@_guid}: selected key is _being_ changed to: " , _new
6969 <~ set -immediate
7070 external -change := yes
7171 <~ :lo(op ) ~>
@@ -113,6 +113,7 @@ Ractive.components['dropdown'] = Ractive.extend do
113113 # button action. When selected key is cleared, all
114114 # necessary actions are handled in the listener.
115115 @fire \select , c , {}, (err ) ~>
116+ debugger if @get \debug
116117 if err and typeof ! err is \String
117118 @actor .v-err err
118119 return op !
@@ -150,13 +151,16 @@ Ractive.components['dropdown'] = Ractive.extend do
150151 if @get \async
151152 selected -key -observer .silence!
152153 @fire \select , c , selected , (err ) ~>
154+ debugger if @get \debug
153155 unless err
154156 @set \emptyReduced , no
155157 update -dropdown selected [keyField ]
156158 else
157159 curr = @get \selected -key
158160 if typeof ! err is \String
159- @actor .v-err err
161+ @actor .v-err """#{err}
162+ Dropdown, called #{@get 'selected'}
163+ """
160164 @actor .c-warn "Error reported for dropdown callback: " , err ,
161165 "falling back to #{curr}"
162166 @set \emptyReduced , yes
@@ -204,7 +208,9 @@ Ractive.components['dropdown'] = Ractive.extend do
204208 #@actor.c-log "Dropdown (#{@_guid}) : searchTerm is empty"
205209 @set \dataReduced , small -part -of data
206210 on -change : (value , text , selected ) ~>
207- return if external -change
211+ if external -change and not @get('listen-external' )
212+ if @get \debug => @actor .c-log "Dropdown: Exiting from on-change handler as this is an external change."
213+ return
208214 if @get \debug => @actor .c-log "Dropdown: #{@_guid}: dropdown is changed: " , value
209215 if @get \multiple
210216 set -item unless value ? => [] else value .split ','
@@ -251,6 +257,8 @@ Ractive.components['dropdown'] = Ractive.extend do
251257 update -dropdown _new
252258
253259 selected -key -observer = @observe \selected -key , ((val ) ~>
260+ unless val ?
261+ dd .dropdown 'clear'
254262 if @get \async
255263 console .log "this is async mode and item is changed: " , val
256264 set -item val
@@ -259,7 +267,9 @@ Ractive.components['dropdown'] = Ractive.extend do
259267 ), {-init }
260268
261269 # first update should be silent
262- set -immediate ~>
270+ sleep 100ms, ~>
271+ if @get \debug
272+ @actor .c-log "Setting initial dropdown value: " , @get 'selected-key'
263273 dd .dropdown 'set selected' , @get('selected-key' )
264274 dd .dropdown 'refresh'
265275
@@ -270,7 +280,8 @@ Ractive.components['dropdown'] = Ractive.extend do
270280 '_add' : (ctx ) ->
271281 c .button = ctx .component
272282 sleep 10 , -> dd .dropdown 'show'
273- err <~ @fire \add , c , @get \search -term
283+ newKey = @get \search -term
284+ err <~ @fire \add , c , newKey
274285 # dropdown should only be closed if there is
275286 # no error returned
276287 unless err
@@ -279,6 +290,10 @@ Ractive.components['dropdown'] = Ractive.extend do
279290 @set \search -term , ''
280291 # clear the dropdown search field
281292 $('.ui.dropdown' ).find(".search" ).val("" )
293+ <~ set -immediate
294+ dd .dropdown 'set selected' , newKey
295+ dd .dropdown 'refresh'
296+
282297 data : ->
283298 'search-fields' : <[ description ]>
284299 'search-term' : ''
@@ -303,3 +318,4 @@ Ractive.components['dropdown'] = Ractive.extend do
303318 'selected-key' : null
304319 'selected-name' : null
305320 'load-first' : 100
321+ 'listen-external' : yes # listen external key changes by default
0 commit comments