From 82ab913f1a013214419a43b5452479bccaaa6d9e Mon Sep 17 00:00:00 2001
From: Tim Fechner <tim.fechner@hs-hannover.de>
Date: Fri, 17 Nov 2017 14:05:02 +0100
Subject: [PATCH] Support no labels at all

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

           You MUST provide the column width after child elements
---
 hshassets/forms/elements.py | 11 +++++++----
 hshassets/forms/utils.py    | 14 +++++++++++---
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/hshassets/forms/elements.py b/hshassets/forms/elements.py
index e11a5495..6bdd6544 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 90dd7bc4..1cd8793f 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)
 
-- 
GitLab