some minor tweaks

This commit is contained in:
Jonas Weinz 2022-09-13 19:18:24 +02:00
parent c0bb89c752
commit 01eec041b5
6 changed files with 72 additions and 9 deletions

View File

@ -5,17 +5,25 @@ from pyscript_bootstrap_templates import HTML as HTML
app = bootstrap_templates.PyScriptBootstrapDashboard(
parent_element="pyscript_app", brand_name="hello_world")
div = bHTML.BootstrapContainer("This is a sidebar", parent=app.sidebar)
div = bHTML.Div("This is a sidebar", parent=app.sidebar)
div.font_size = 4
btn = bHTML.ButtonPrimary("Click me", parent=app.sidebar)
btn.w = 100
toast_container = bHTML.ToastContainer(parent=app.main_area)
toast_container.position_bottom = 0
toast_container.position_end = 0
def onclick(_):
alert = bHTML.AlertSuccess("You clicked me!", parent=app.main_area)
toast = bHTML.Toast("You clicked me!", parent=app.main_area)
toast.position_bottom = 0
toast.position_end = 0
alert.w = 25
toast = bHTML.Toast("You clicked me!", parent=toast_container)
toast.animation = True
toast.show()
btn.onclick = onclick

View File

@ -21,13 +21,20 @@ def sobel_image(img):
app = bootstrap_templates.PyScriptBootstrapDashboard(parent_element="pyscript_app", brand_name="Image Filter Example")
image_input = bInputs.InputFile(label_text="choose image file", parent=app.sidebar)
image_input.set_attribute("accept", "image/*")
# FIXME: add filter option to InputFile class!
image_input._input.set_attribute("accept", "image/*")
toast_container = bHTML.ToastContainer(parent=app.main_area)
toast_container.position_bottom = 0
toast_container.position_end = 0
def on_image_change(f, *args):
print("image changed")
print(f)
f.seek(0)
img = Image.open(f)
img = sobel_image(np.array(img))
output = bHTML.Image.from_numpy_array(img, parent=app.main_area)
@ -35,4 +42,7 @@ def on_image_change(f, *args):
output.rounded_size = 10
output.shadow = bHTML.Shadow.LARGE
bHTML.Toast("Processing Done", title="info", parent=toast_container).show()
image_input.onchange = on_image_change

View File

@ -6,7 +6,8 @@ from . import HTML
from .bootstrap_HTML_container import *
from js import bootstrap # type: ignore
class Div(BootstrapContainer):
pass
class Button(HTML.Button, BootstrapContainer):
_default_class_name = "btn"
@ -1350,7 +1351,7 @@ class Toast(BootstrapContainer):
self.set_attribute("role", "alert")
self.set_attribute("aria-live", "assertlive")
self.set_attribute("aria-atomic", True)
self.set_attribute("style", "position: absolute")
self.p = 2
ToastHeader(title, parent=self)
ToastBody(inner_html, parent=self)
@ -1363,6 +1364,50 @@ class Toast(BootstrapContainer):
def hide(self):
self._js_toast.hide()
def dispose(self):
self._js_toast.dispose()
@property
def animation(self) -> bool:
return self.get_attribute("data-bs-animation", is_boolean_attribute=True)
@animation.setter
def animation(self, value:bool):
self.set_attribute("data-bs-animation", attribute_value=value ,is_boolean_attribute=True)
@property
def autohide(self) -> bool:
return self.get_attribute("data-bs-autohide", is_boolean_attribute=True)
@autohide.setter
def autohide(self, value:bool):
self.set_attribute("data-bs-autohide", attribute_value=value ,is_boolean_attribute=True)
@property
def delay(self) -> bool:
return self.get_attribute("data-bs-delay", is_boolean_attribute=True)
@delay.setter
def delay(self, value:bool):
self.set_attribute("data-bs-delay", attribute_value=value ,is_boolean_attribute=True)
class ToastContainer(BootstrapContainer):
_default_class_name: str = "toast-container"
def __init__(self, inner_html: str = None,
id: str = None,
class_name: str = None,
parent: "Element" = None) -> None:
super().__init__(inner_html=inner_html, id=id, class_name=class_name, parent=parent)
self.position = Position.ABSOLUTE
self.p = 3
def show_toast(self, toast: Toast):
self.append_child(toast)
toast.show()
class OffcanvasTitle(HTML.H5, BootstrapContainer):
_default_class_name: str = "offcanvas-title"