htmforge.core.component
htmforge.core.component.Component(**data)
Bases: BaseModel, ABC
Abstrakte Basisklasse für wiederverwendbare UI-Komponenten.
Subklassen deklarieren typisierte Props als Pydantic-Felder und
implementieren die :meth:render-Methode, die ein
:class:~htmforge.core.element.Element zurückgibt.
Die Klasse aktiviert Pydantic-Features
validate_assignment = True: Props werden auch nach der Initialisierung validiert.arbitrary_types_allowed = True: Erlaubt Non-Pydantic-Typen wie DOM-Elemente als Felder.frozen = False: Komponenten sind per Default mutable.
Example
from htmforge.elements import div, p
class Card(Component): ... title: str ... body: str ... ... def render(self) -> Element: ... return div(p(self.title), p(self.body), cls="card") ... Card(title="Hallo", body="Welt").to_html() '
'Hallo
Welt
Initialisiert die Komponente und blockiert Klassen ohne render.
Source code in htmforge/core/component.py
__init_subclass__(**kwargs)
Validiert, dass Unterklassen eine konkrete render-Methode haben.
Source code in htmforge/core/component.py
__repr__()
Gibt eine lesbare Debug-Darstellung der Komponente zurueck.
Example
Card(title="Hi", body="World") Card(title='Hi', body='World')
Source code in htmforge/core/component.py
clone(**overrides)
Gibt eine neue Instanz mit geaenderten Props zurueck.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
**overrides
|
Any
|
Felder die ueberschrieben werden sollen. |
{}
|
Returns:
| Type | Description |
|---|---|
Component
|
Eine neue Instanz desselben Typs mit den geaenderten Werten. |
Example
card = GreetingCard(title="Hi", body="World") card2 = card.clone(title="Hello") card2.title 'Hello' card2.body 'World'
Source code in htmforge/core/component.py
htmx_attrs()
Gibt alle gesetzten HTMX-Props als Attribut-Dict zurueck.
Returns:
| Type | Description |
|---|---|
dict[str, object]
|
Ein Dict mit nur den HTMX-Attributen, die nicht |
Example
button("Save", **self.htmx_attrs())
Source code in htmforge/core/component.py
render()
abstractmethod
Rendert die Komponente zu einem :class:~htmforge.core.element.Element.
Subklassen müssen diese Methode implementieren und das Root-Element der Komponente zurückgeben.
Returns:
| Type | Description |
|---|---|
Element
|
Das Root-:class: |
Source code in htmforge/core/component.py
to_django()
Gibt eine Django-kompatible HttpResponse zurück.
Note
Erfordert django als optionale Dependency.
Returns:
| Type | Description |
|---|---|
Any
|
Eine |
Raises:
| Type | Description |
|---|---|
ImportError
|
Wenn |
Source code in htmforge/core/component.py
to_fastapi()
Gibt eine FastAPI-kompatible HTMLResponse zurück.
Note
Erfordert fastapi als optionale Dependency.
Returns:
| Type | Description |
|---|---|
Any
|
Eine |
Raises:
| Type | Description |
|---|---|
ImportError
|
Wenn |
Source code in htmforge/core/component.py
to_flask()
Gibt eine Flask-kompatible Response zurück.
Note
Erfordert flask als optionale Dependency.
Returns:
| Type | Description |
|---|---|
Any
|
Eine |
Raises:
| Type | Description |
|---|---|
ImportError
|
Wenn |
Source code in htmforge/core/component.py
to_fragment()
Rendert die Komponente als HTMX-Fragment (identisch mit to_html()).
Explizite Methode fuer Fragmente um die Absicht zu dokumentieren: dieser Endpunkt liefert kein vollstaendiges Dokument, sondern nur einen HTML-Ausschnitt fuer HTMX-Swaps.
Returns:
| Type | Description |
|---|---|
str
|
Den HTML-String der Komponente ohne DOCTYPE. |
Example
Alert(message="OK").to_fragment() '
OK'
Source code in htmforge/core/component.py
to_html()
Delegiert das HTML-Rendering an :meth:render.
Returns:
| Type | Description |
|---|---|
str
|
Den vollständigen HTML-String der Komponente. |