diff --git a/hshassets/forms/elements.py b/hshassets/forms/elements.py index e11a5495662db1c3863c7d0236681e8d1675a203..6bdd65448de241efd19d42eb43e3eb4787e1b1b7 100644 --- a/hshassets/forms/elements.py +++ b/hshassets/forms/elements.py @@ -16,12 +16,13 @@ class AbstractElement(object): class Field(AbstractElement): - def __init__(self, field_name, *args, **kwargs): + def __init__(self, field_name, label='', *args, **kwargs): super().__init__(*args, **kwargs) self.field_name = field_name + self.label = label def render(self, field): - return mark_safe(render_form_field(field)) + return mark_safe(render_form_field(field, self.label)) class Columns(AbstractElement): @@ -29,10 +30,12 @@ class Columns(AbstractElement): class Column(AbstractElement): - markup = '<div class="column is-{}">{}</div>' + markup = '<div class="column {}">{}</div>' - def __init__(self, width, *args, **kwargs): + def __init__(self, *args, width='', **kwargs): super().__init__(*args, **kwargs) + if width: + width = 'is-' + width self.width = width def render(self, content): diff --git a/hshassets/forms/utils.py b/hshassets/forms/utils.py index 90dd7bc4c9ef10f91cab6c385c70799a0d74d104..1cd8793f03547df672dce042eff2fc48e8618149 100644 --- a/hshassets/forms/utils.py +++ b/hshassets/forms/utils.py @@ -3,21 +3,29 @@ from django.utils.html import format_html, format_html_join from django.template import defaulttags -def render_form_field(field): +def render_form_field(field, label): try: input_type = field.field.widget.input_type except AttributeError: input_type = None + def label_or_not(content): + if label == None: + return content + elif label == '': + return BulmaFieldMarkup.label(field.label, content) + else: + return BulmaFieldMarkup.label(label, content) + if input_type in ['text', 'number', 'email', 'url', 'password']: # one of those text-like that support icons - out = BulmaFieldMarkup.label(field.label, BulmaFieldMarkup.with_icons(field, field.as_widget())) + out = label_or_not(BulmaFieldMarkup.with_icons(field, field.as_widget())) elif input_type and getattr(BulmaFieldMarkup, input_type, None): # something else explicitly defined out = getattr(BulmaFieldMarkup, input_type)(field, field.as_widget()) else: # fallback default - out = BulmaFieldMarkup.label(field.label, BulmaFieldMarkup.div_control(field.as_widget())) + out = label_or_not(BulmaFieldMarkup.div_control(field.as_widget())) return BulmaFieldMarkup.div_field(field, out)