0001-forms-use-a-css-class-to-display-radio-choices-inlin.patch
tests/test_fields.py | ||
---|---|---|
466 | 466 |
form = Form(use_tokens=False) |
467 | 467 |
field.add_to_form(form) |
468 | 468 |
form.render() |
469 |
assert str(form.widgets[-1].render()).count('<br') == 0
|
|
469 |
assert 'widget-inline-radio' in str(form.widgets[-1].render())
|
|
470 | 470 | |
471 | 471 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio', |
472 | 472 |
items=['aa'*30, 'ab', 'ac']) |
473 | 473 |
form = Form(use_tokens=False) |
474 | 474 |
field.add_to_form(form) |
475 | 475 |
form.render() |
476 |
assert str(form.widgets[-1].render()).count('<br') == 2
|
|
476 |
assert 'widget-inline-radio' not in str(form.widgets[-1].render())
|
|
477 | 477 | |
478 | 478 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio', |
479 | 479 |
items=['aa', 'ab'*30, 'ac']) |
480 | 480 |
form = Form(use_tokens=False) |
481 | 481 |
field.add_to_form(form) |
482 | 482 |
form.render() |
483 |
assert str(form.widgets[-1].render()).count('<br') == 2
|
|
483 |
assert 'widget-inline-radio' not in str(form.widgets[-1].render())
|
|
484 | 484 | |
485 | 485 |
field = fields.ItemField(id='1', label='Foobar', display_mode='radio', |
486 | 486 |
items=['aa', 'ab', 'ac', 'ad']) |
487 | 487 |
form = Form(use_tokens=False) |
488 | 488 |
field.add_to_form(form) |
489 | 489 |
form.render() |
490 |
assert str(form.widgets[-1].render()).count('<br') == 3
|
|
490 |
assert 'widget-inline-radio' not in str(form.widgets[-1].render())
|
|
491 | 491 | |
492 | 492 | |
493 | 493 |
def test_items_render(): |
wcs/fields.py | ||
---|---|---|
1565 | 1565 |
else: |
1566 | 1566 |
first_items = [x[1] for x in kwargs['options'][:3]] |
1567 | 1567 |
length_first_items = sum([len(x) for x in first_items]) |
1568 |
if len(kwargs['options']) > 3 or length_first_items > 40: |
|
1569 |
# TODO: absence/presence of delimitor should be an option |
|
1570 |
kwargs['delim'] = htmltext('<br />') |
|
1568 |
# display radio buttons on a single line if there's just a few |
|
1569 |
# short options. |
|
1570 |
# TODO: absence/presence of delimitor should be an option |
|
1571 |
self.inline = bool(len(kwargs['options']) <= 3 and length_first_items <= 40) |
|
1571 | 1572 |
elif display_mode == 'autocomplete': |
1572 | 1573 |
kwargs['select2'] = True |
1573 | 1574 |
elif display_mode == 'map': |
wcs/qommon/static/css/qommon.scss | ||
---|---|---|
273 | 273 |
margin-right: 2em; |
274 | 274 |
} |
275 | 275 | |
276 |
div.CheckboxesWidget .content label, |
|
277 |
div.RadiobuttonsWidget .content label { |
|
278 |
display: inline-block; |
|
276 |
div.CheckboxesWidget, div.RadiobuttonsWidget { |
|
279 | 277 |
padding: 5px 0; |
278 |
.content label { |
|
279 |
display: block; |
|
280 |
} |
|
281 |
&.widget-inline-radio .content label { |
|
282 |
display: inline-block; |
|
283 |
} |
|
280 | 284 |
} |
281 | 285 | |
282 | 286 |
div.dataview { |
wcs/qommon/templates/qommon/forms/widget.html | ||
---|---|---|
1 |
<div class="widget {{widget.class_name}} {{widget.extra_css_class}} |
|
1 |
<div class="{% block widget-css-classes %}widget {{widget.class_name}} {{widget.extra_css_class}}
|
|
2 | 2 |
{% if widget.readonly %}widget-readonly{% endif %} |
3 | 3 |
{% if widget.get_error %}widget-with-error{% endif %} |
4 | 4 |
{% if widget.is_required %}widget-required{% else %}widget-optional{% endif %} |
5 |
{% if widget.is_prefilled %}widget-prefilled{% endif %}" |
|
5 |
{% if widget.is_prefilled %}widget-prefilled{% endif %}{% endblock %}"
|
|
6 | 6 |
{% if widget.is_hidden %}style="display: none"{% endif %} |
7 | 7 |
{% if widget.field %}data-field-id="{{ widget.field.id }}"{% endif %} |
8 | 8 |
{% if widget.div_id %}id="{{widget.div_id}}" data-valuecontainerid="form_{{widget.name}}"{% endif %} |
wcs/qommon/templates/qommon/forms/widgets/radiobuttons.html | ||
---|---|---|
1 | 1 |
{% extends "qommon/forms/widget.html" %} |
2 | 2 | |
3 |
{% block widget-css-classes %}{{ block.super }}{% if widget.field.inline %} widget-inline-radio{% endif %}{% endblock %} |
|
4 | ||
3 | 5 |
{% block widget-control %} |
4 | 6 |
{% for option in widget.get_options %} |
5 | 7 |
<label {% if option.disabled %}class="disabled"{% endif %}><input |
6 |
- |