Skip to content
Snippets Groups Projects
Commit 82ab913f authored by Tim Fechner's avatar Tim Fechner
Browse files

Support no labels at all

ATTENTION: hshassets.forms.elements.Column.__init__ changed!

           You MUST provide the column width after child elements
parent e56585eb
No related branches found
No related tags found
No related merge requests found
...@@ -16,12 +16,13 @@ class AbstractElement(object): ...@@ -16,12 +16,13 @@ class AbstractElement(object):
class Field(AbstractElement): class Field(AbstractElement):
def __init__(self, field_name, *args, **kwargs): def __init__(self, field_name, label='', *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.field_name = field_name self.field_name = field_name
self.label = label
def render(self, field): def render(self, field):
return mark_safe(render_form_field(field)) return mark_safe(render_form_field(field, self.label))
class Columns(AbstractElement): class Columns(AbstractElement):
...@@ -29,10 +30,12 @@ class Columns(AbstractElement): ...@@ -29,10 +30,12 @@ class Columns(AbstractElement):
class Column(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) super().__init__(*args, **kwargs)
if width:
width = 'is-' + width
self.width = width self.width = width
def render(self, content): def render(self, content):
......
...@@ -3,21 +3,29 @@ from django.utils.html import format_html, format_html_join ...@@ -3,21 +3,29 @@ from django.utils.html import format_html, format_html_join
from django.template import defaulttags from django.template import defaulttags
def render_form_field(field): def render_form_field(field, label):
try: try:
input_type = field.field.widget.input_type input_type = field.field.widget.input_type
except AttributeError: except AttributeError:
input_type = None 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']: if input_type in ['text', 'number', 'email', 'url', 'password']:
# one of those text-like that support icons # 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): elif input_type and getattr(BulmaFieldMarkup, input_type, None):
# something else explicitly defined # something else explicitly defined
out = getattr(BulmaFieldMarkup, input_type)(field, field.as_widget()) out = getattr(BulmaFieldMarkup, input_type)(field, field.as_widget())
else: else:
# fallback default # 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) return BulmaFieldMarkup.div_field(field, out)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment