]> git.cworth.org Git - turbot/blobdiff - turbot/blocks.py
Implement a dialog box to edit a puzzle
[turbot] / turbot / blocks.py
index dde2cfb913d3bcddd76e1c44da9f465587aeb081..4949420ec5210a4b60d634db1733db6b6f62f254 100644 (file)
@@ -29,6 +29,41 @@ def actions_block(*elements):
         "elements": list(elements)
     }
 
+def checkbox_block(label, text, name, checked=False):
+
+    element = {
+        "type": "checkboxes",
+        "options": [
+            {
+                "value": name,
+                "text": {
+                    "type": "plain_text",
+                    "text": text
+                }
+            }
+        ]
+    }
+
+    if checked:
+        element["initial_options"] = [{
+            "value": name,
+            "text": {
+                "type": "plain_text",
+                "text": text
+            }
+        }]
+
+    return {
+        "type": "input",
+        "block_id": name,
+        "element": element,
+        "optional": True,
+        "label": {
+            "type": "plain_text",
+            "text": label
+        }
+    }
+
 def button_block(label, name, extra=None):
 
     block = {
@@ -54,28 +89,35 @@ def accessory_block(main, accessory):
         }
     }
 
-def input_block(label, name, placeholder, optional=False):
+def input_block(label, name, placeholder, initial_value=None, optional=False):
+
+    element = {
+        "type": "plain_text_input",
+        "action_id": name,
+        "placeholder": {
+            "type": "plain_text",
+            "text": placeholder,
+        }
+    }
+
+    if initial_value:
+        element["initial_value"] = initial_value
+
     return {
         "type": "input",
         "block_id": name,
         "optional": optional,
-        "element": {
-            "type": "plain_text_input",
-            "action_id": name,
-            "placeholder": {
-                "type": "plain_text",
-                "text": placeholder,
-            }
-        },
+        "element": element,
         "label": {
             "type": "plain_text",
             "text": label
         }
     }
 
-def multi_select_block(label, name, placeholder, options, default=None):
+def multi_select_block(label, name, placeholder, options,
+                       initial_options=None):
 
-    multi_select =  {
+    multi_select = {
         "action_id": name,
         "type": "multi_static_select",
         "placeholder": {
@@ -93,6 +135,17 @@ def multi_select_block(label, name, placeholder, options, default=None):
         ]
     }
 
+    if initial_options:
+        multi_select["initial_options"] = [
+            {
+                "text": {
+                    "type": "plain_text",
+                    "text": option
+                },
+                "value": option
+            } for option in initial_options
+        ]
+
     return accessory_block(
         section_block(text_block("*{}*".format(label)), block_id=name),
         multi_select