Skip to content

Commit

Permalink
added keyword argument support to alerts
Browse files Browse the repository at this point in the history
  • Loading branch information
volfpeter committed Oct 24, 2022
1 parent b864d81 commit 48e5ad5
Showing 1 changed file with 36 additions and 32 deletions.
68 changes: 36 additions & 32 deletions markyp_bootstrap4/alerts.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from typing import Optional

from markyp import ElementType
from markyp import ElementType, PropertyValue
from markyp_bootstrap4.elements import close_icon
from markyp_html.block import div

Expand All @@ -24,7 +24,7 @@ class alert(div):
__slots__ = ()

@classmethod
def primary(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
def primary(cls, *args: ElementType, class_: Optional[str] = None, **kwargs: PropertyValue) -> "alert":
"""
Returns an alert element with `primary` context.
Expand All @@ -33,10 +33,10 @@ def primary(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
Arguments:
class_: Any additional CSS class names to add to the element.
"""
return cls(*args, context="primary", class_=class_)
return cls(*args, context="primary", class_=class_, **kwargs)

@classmethod
def secondary(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
def secondary(cls, *args: ElementType, class_: Optional[str] = None, **kwargs: PropertyValue) -> "alert":
"""
Returns an alert element with `secondary` context.
Expand All @@ -45,10 +45,10 @@ def secondary(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
Arguments:
class_: Any additional CSS class names to add to the element.
"""
return cls(*args, context="secondary", class_=class_)
return cls(*args, context="secondary", class_=class_, **kwargs)

@classmethod
def success(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
def success(cls, *args: ElementType, class_: Optional[str] = None, **kwargs: PropertyValue) -> "alert":
"""
Returns an alert element with `success` context.
Expand All @@ -57,10 +57,10 @@ def success(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
Arguments:
class_: Any additional CSS class names to add to the element.
"""
return cls(*args, context="success", class_=class_)
return cls(*args, context="success", class_=class_, **kwargs)

@classmethod
def danger(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
def danger(cls, *args: ElementType, class_: Optional[str] = None, **kwargs: PropertyValue) -> "alert":
"""
Returns an alert element with `danger` context.
Expand All @@ -69,10 +69,10 @@ def danger(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
Arguments:
class_: Any additional CSS class names to add to the element.
"""
return cls(*args, context="danger", class_=class_)
return cls(*args, context="danger", class_=class_, **kwargs)

@classmethod
def warning(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
def warning(cls, *args: ElementType, class_: Optional[str] = None, **kwargs: PropertyValue) -> "alert":
"""
Returns an alert element with `warning` context.
Expand All @@ -81,10 +81,10 @@ def warning(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
Arguments:
class_: Any additional CSS class names to add to the element.
"""
return cls(*args, context="warning", class_=class_)
return cls(*args, context="warning", class_=class_, **kwargs)

@classmethod
def info(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
def info(cls, *args: ElementType, class_: Optional[str] = None, **kwargs: PropertyValue) -> "alert":
"""
Returns an alert element with `info` context.
Expand All @@ -93,10 +93,10 @@ def info(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
Arguments:
class_: Any additional CSS class names to add to the element.
"""
return cls(*args, context="info", class_=class_)
return cls(*args, context="info", class_=class_, **kwargs)

@classmethod
def light(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
def light(cls, *args: ElementType, class_: Optional[str] = None, **kwargs: PropertyValue) -> "alert":
"""
Returns an alert element with `light` context.
Expand All @@ -105,10 +105,10 @@ def light(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
Arguments:
class_: Any additional CSS class names to add to the element.
"""
return cls(*args, context="light", class_=class_)
return cls(*args, context="light", class_=class_, **kwargs)

@classmethod
def dark(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
def dark(cls, *args: ElementType, class_: Optional[str] = None, **kwargs: PropertyValue) -> "alert":
"""
Returns an alert element with `dark` context.
Expand All @@ -117,12 +117,15 @@ def dark(cls, *args: ElementType, class_: Optional[str] = None) -> "alert":
Arguments:
class_: Any additional CSS class names to add to the element.
"""
return cls(*args, context="dark", class_=class_)
return cls(*args, context="dark", class_=class_, **kwargs)

def __init__(self,
*args: ElementType,
context: str,
class_: Optional[str] = None) -> None:
def __init__(
self,
*args: ElementType,
context: str,
class_: Optional[str] = None,
**kwargs: PropertyValue,
) -> None:
"""
Initialization.
Expand All @@ -133,11 +136,7 @@ def __init__(self,
class_: Any additional CSS class names to add to the element.
"""
base_class = f"alert alert-{context}"
super().__init__(
*args,
class_=f"{base_class} {class_}" if class_ else base_class,
role="alert"
)
super().__init__(*args, **kwargs, class_=f"{base_class} {class_}" if class_ else base_class, role="alert")

@property
def element_name(self) -> str:
Expand All @@ -153,10 +152,13 @@ class dismissable(alert):

__slots__ = ()

def __init__(self,
*args: ElementType,
context: str,
class_: Optional[str] = None) -> None:
def __init__(
self,
*args: ElementType,
context: str,
class_: Optional[str] = None,
**kwargs: PropertyValue,
) -> None:
"""
Initialization.
Expand All @@ -170,7 +172,9 @@ def __init__(self,
"""
base_class = "alert-dismissible fade show"
super().__init__(
*args, close_icon(**{"data-dismiss": "alert"}),
*args,
close_icon(**{"data-dismiss": "alert"}),
**kwargs,
class_=f"{base_class} {class_}" if class_ else base_class,
context=context
context=context,
)

0 comments on commit 48e5ad5

Please sign in to comment.