@@ -244,24 +244,31 @@ def select_edit_renderer(widget, data, custom_attrs={}):
244
244
def select_display_renderer (widget , data ):
245
245
value = fetch_value (widget , data )
246
246
if type (value ) in ITER_TYPES and not value :
247
- value = u''
247
+ value = attr_value ('empty_display_value' , widget , data )
248
+ if not value :
249
+ value = u''
248
250
multivalued = attr_value ('multivalued' , widget , data )
249
251
vocab = dict (attr_value ('vocabulary' , widget , data , []))
250
252
if not multivalued or not value :
251
253
value = vocab .get (value , value )
252
254
if data .tag .translate :
253
255
value = data .tag .translate (value )
254
256
return generic_display_renderer (widget , data , value = value )
257
+ cssclasses = [
258
+ attr_value ("display_class" , widget , data ),
259
+ f'display-{ attr_value ("class" , widget , data ) or "generic" } '
260
+ ]
255
261
attrs = {
256
262
'id' : cssid (widget , 'display' ),
257
- 'class_' : 'display-{0}' . format ( attr_value ( 'class' , widget , data ) )
263
+ 'class_' : ' ' . join ([ _ for _ in cssclasses if _ is not None ] )
258
264
}
259
265
attrs .update (as_data_attrs (attr_value ('data' , widget , data )))
260
266
content = u''
261
267
if multivalued and isinstance (value , STR_TYPE ):
262
268
value = [value ]
263
269
for key in value :
264
- content += data .tag ('li' , vocab .get (key , key ))
270
+ content += data .tag ('li' , vocab .get (key , key ),
271
+ ** {'class_' : attr_value ("display_item_class" , widget , data )})
265
272
return data .tag ('ul' , content , ** attrs )
266
273
267
274
0 commit comments