Browse Source

Add class name property to component (#545)

PeterYusuke 2 years ago
parent
commit
7fa1a85d91
1 changed files with 13 additions and 1 deletions
  1. 13 1
      pynecone/components/component.py

+ 13 - 1
pynecone/components/component.py

@@ -47,6 +47,9 @@ class Component(Base, ABC):
     # The id for the component.
     id: Any = None
 
+    # The class name for the component.
+    class_name: Any = None
+
     @classmethod
     def __init_subclass__(cls, **kwargs):
         """Set default properties.
@@ -145,6 +148,11 @@ class Component(Base, ABC):
             }
         )
 
+        # Convert class_name to str if it's list
+        class_name = kwargs.get("class_name", "")
+        if isinstance(class_name, (List, tuple)):
+            kwargs["class_name"] = " ".join(class_name)
+
         # Construct the component.
         super().__init__(*args, **kwargs)
 
@@ -370,7 +378,11 @@ class Component(Base, ABC):
         tag = self._render()
         return str(
             tag.add_props(
-                **self.event_triggers, key=self.key, sx=self.style, id=self.id
+                **self.event_triggers,
+                key=self.key,
+                sx=self.style,
+                id=self.id,
+                class_name=self.class_name,
             ).set(
                 contents=utils.join(
                     [str(tag.contents)] + [child.render() for child in self.children]