dars-framework 1.0.5__tar.gz → 1.0.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dars_framework-1.0.5 → dars_framework-1.0.7}/PKG-INFO +6 -2
- {dars_framework-1.0.5 → dars_framework-1.0.7}/README.md +3 -1
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/all.py +2 -0
- dars_framework-1.0.7/dars/components/basic/button.py +55 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/input.py +8 -2
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/core/app.py +388 -79
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/core/component.py +32 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/exporters/base.py +13 -4
- dars_framework-1.0.5/dars/exporters/web/html_css_js.py → dars_framework-1.0.7/dars/exporters/web/OLD/html_css_js_OLD4.py +151 -105
- dars_framework-1.0.7/dars/exporters/web/html_css_js.py +1671 -0
- dars_framework-1.0.7/dars/scripts/dscript.py +26 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/advanced/advanced_modal_demo.py +2 -2
- dars_framework-1.0.7/dars/templates/examples/demo/complete_app.py +24 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/version.py +2 -2
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars_framework.egg-info/PKG-INFO +6 -2
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars_framework.egg-info/SOURCES.txt +2 -0
- dars_framework-1.0.7/dars_framework.egg-info/requires.txt +4 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/pyproject.toml +4 -2
- dars_framework-1.0.5/dars/components/basic/button.py +0 -29
- dars_framework-1.0.5/dars/templates/examples/demo/complete_app.py +0 -720
- dars_framework-1.0.5/dars_framework.egg-info/requires.txt +0 -2
- {dars_framework-1.0.5 → dars_framework-1.0.7}/LICENSE +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/cli/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/cli/hot_reload.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/cli/main.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/cli/preview.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/cli/translations.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/advanced/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/advanced/accordion.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/advanced/card.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/advanced/modal.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/advanced/navbar.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/advanced/table.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/advanced/tabs.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/checkbox.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/container.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/datepicker.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/image.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/link.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/page.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/progressbar.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/radiobutton.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/select.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/slider.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/spinner.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/text.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/textarea.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/basic/tooltip.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/layout/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/layout/anchor.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/layout/flex.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/components/layout/grid.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/core/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/core/events.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/core/properties.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/docs/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/exporters/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/exporters/web/OLD/html_css_js_old.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/exporters/web/OLD/html_css_js_old2.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/exporters/web/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/scripts/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/scripts/script.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/advanced/all_components_demo.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/advanced/dashboard.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/advanced/modern_web_app.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/basic/flex_layout_responsive.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/basic/form_components.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/basic/grid_layout_responsive.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/basic/hello_world.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/basic/layout_multipage_demo.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/basic/multipage_example.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/basic/pwa_custom_icons.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/examples/basic/simple_form.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars/templates/html/__init__.py +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars_framework.egg-info/dependency_links.txt +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars_framework.egg-info/entry_points.txt +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/dars_framework.egg-info/top_level.txt +0 -0
- {dars_framework-1.0.5 → dars_framework-1.0.7}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dars-framework
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.7
|
|
4
4
|
Summary: Dars is a Python UI framework for building modern, interactive web apps with only Python code. Write your interface in Python, export it to static HTML/CSS/JS, and deploy anywhere.
|
|
5
5
|
Author-email: ztamdev <zondax2009@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -29,11 +29,15 @@ Description-Content-Type: text/markdown
|
|
|
29
29
|
License-File: LICENSE
|
|
30
30
|
Requires-Dist: rich
|
|
31
31
|
Requires-Dist: bs4
|
|
32
|
+
Requires-Dist: uvicorn
|
|
33
|
+
Requires-Dist: fastapi
|
|
32
34
|
Dynamic: license-file
|
|
33
35
|
|
|
34
36
|
# Dars Framework
|
|
35
37
|
|
|
36
|
-
Dars
|
|
38
|
+
Dars Landing Page: https://ztamdev.github.io/Dars-Framework/
|
|
39
|
+
|
|
40
|
+
Dars is a Python UI framework for building modern, interactive web apps with Python code. Write your interface in Python, export it to static HTML/CSS/JS, and deploy anywhere.
|
|
37
41
|
|
|
38
42
|
> Some Javascript or frontend stack required.
|
|
39
43
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Dars Framework
|
|
2
2
|
|
|
3
|
-
Dars
|
|
3
|
+
Dars Landing Page: https://ztamdev.github.io/Dars-Framework/
|
|
4
|
+
|
|
5
|
+
Dars is a Python UI framework for building modern, interactive web apps with Python code. Write your interface in Python, export it to static HTML/CSS/JS, and deploy anywhere.
|
|
4
6
|
|
|
5
7
|
> Some Javascript or frontend stack required.
|
|
6
8
|
|
|
@@ -39,6 +39,7 @@ from dars.components.layout.flex import FlexLayout
|
|
|
39
39
|
from dars.components.layout.anchor import AnchorPoint
|
|
40
40
|
|
|
41
41
|
from dars.scripts.script import *
|
|
42
|
+
from dars.scripts.dscript import dScript
|
|
42
43
|
|
|
43
44
|
# Exporters (optional, for direct use)
|
|
44
45
|
# from dars.exporters.web.html_css_js import HTMLCSSJSExporter
|
|
@@ -52,4 +53,5 @@ __all__ = [
|
|
|
52
53
|
'RadioButton', 'Select', 'Slider', 'Spinner', 'Text', 'Textarea', 'Tooltip',
|
|
53
54
|
'Accordion', 'Card', 'Modal', 'Navbar', 'Table', 'Tabs',
|
|
54
55
|
'GridLayout', 'FlexLayout', 'LayoutBase', 'AnchorPoint',
|
|
56
|
+
'InlineScript', 'FileScript', 'dScript',
|
|
55
57
|
]
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from dars.core.component import Component
|
|
2
|
+
from dars.core.properties import StyleProps
|
|
3
|
+
from dars.core.events import EventTypes
|
|
4
|
+
from dars.scripts.script import Script
|
|
5
|
+
from typing import Optional, Union, Dict, Any, Callable
|
|
6
|
+
|
|
7
|
+
class Button(Component):
|
|
8
|
+
def __init__(
|
|
9
|
+
self,
|
|
10
|
+
text: str = "Button",
|
|
11
|
+
id: Optional[str] = None,
|
|
12
|
+
class_name: Optional[str] = None,
|
|
13
|
+
style: Optional[Dict[str, Any]] = None,
|
|
14
|
+
disabled: bool = False,
|
|
15
|
+
button_type: str = "button", # "button", "submit", "reset"
|
|
16
|
+
on_click: Optional[Callable] = None,
|
|
17
|
+
on_double_click: Optional[Callable] = None,
|
|
18
|
+
on_mouse_enter: Optional[Callable] = None,
|
|
19
|
+
on_mouse_leave: Optional[Callable] = None,
|
|
20
|
+
on_mouse_down: Optional[Callable] = None,
|
|
21
|
+
on_mouse_up: Optional[Callable] = None,
|
|
22
|
+
on_key_down: Optional[Callable] = None,
|
|
23
|
+
on_key_up: Optional[Callable] = None
|
|
24
|
+
):
|
|
25
|
+
super().__init__(id=id, class_name=class_name, style=style)
|
|
26
|
+
self.text = text
|
|
27
|
+
self.disabled = disabled
|
|
28
|
+
self.button_type = button_type
|
|
29
|
+
|
|
30
|
+
# Soporte para presets JS editables con dScript u otros Script
|
|
31
|
+
if on_click:
|
|
32
|
+
# Convertir a Script si es necesario
|
|
33
|
+
if not isinstance(on_click, Script) and callable(on_click):
|
|
34
|
+
from dars.scripts.dscript import dScript
|
|
35
|
+
on_click = dScript(on_click.__code__)
|
|
36
|
+
self.set_event(EventTypes.CLICK, on_click)
|
|
37
|
+
if on_double_click:
|
|
38
|
+
self.set_event(EventTypes.DOUBLE_CLICK, on_double_click)
|
|
39
|
+
if on_mouse_enter:
|
|
40
|
+
self.set_event(EventTypes.MOUSE_ENTER, on_mouse_enter)
|
|
41
|
+
if on_mouse_leave:
|
|
42
|
+
self.set_event(EventTypes.MOUSE_LEAVE, on_mouse_leave)
|
|
43
|
+
if on_mouse_down:
|
|
44
|
+
self.set_event(EventTypes.MOUSE_DOWN, on_mouse_down)
|
|
45
|
+
if on_mouse_up:
|
|
46
|
+
self.set_event(EventTypes.MOUSE_UP, on_mouse_up)
|
|
47
|
+
if on_key_down:
|
|
48
|
+
self.set_event(EventTypes.KEY_DOWN, on_key_down)
|
|
49
|
+
if on_key_up:
|
|
50
|
+
self.set_event(EventTypes.KEY_UP, on_key_up)
|
|
51
|
+
|
|
52
|
+
def render(self, exporter: Any) -> str:
|
|
53
|
+
# El método render será implementado por cada exportador
|
|
54
|
+
raise NotImplementedError("El método render debe ser implementado por el exportador")
|
|
55
|
+
|
|
@@ -21,7 +21,9 @@ class Input(Component):
|
|
|
21
21
|
on_change: Optional[Callable] = None,
|
|
22
22
|
on_input: Optional[Callable] = None,
|
|
23
23
|
on_focus: Optional[Callable] = None,
|
|
24
|
-
on_blur: Optional[Callable] = None
|
|
24
|
+
on_blur: Optional[Callable] = None,
|
|
25
|
+
on_key_down: Optional[Callable] = None,
|
|
26
|
+
on_key_up: Optional[Callable] = None
|
|
25
27
|
):
|
|
26
28
|
super().__init__(id=id, class_name=class_name, style=style)
|
|
27
29
|
self.value = value
|
|
@@ -34,7 +36,7 @@ class Input(Component):
|
|
|
34
36
|
self.min_length = min_length
|
|
35
37
|
self.pattern = pattern
|
|
36
38
|
|
|
37
|
-
#
|
|
39
|
+
# Soporte para presets JS editables con dScript u otros Script
|
|
38
40
|
if on_change:
|
|
39
41
|
self.set_event(EventTypes.CHANGE, on_change)
|
|
40
42
|
if on_input:
|
|
@@ -43,6 +45,10 @@ class Input(Component):
|
|
|
43
45
|
self.set_event(EventTypes.FOCUS, on_focus)
|
|
44
46
|
if on_blur:
|
|
45
47
|
self.set_event(EventTypes.BLUR, on_blur)
|
|
48
|
+
if on_key_down:
|
|
49
|
+
self.set_event(EventTypes.KEY_DOWN, on_key_down)
|
|
50
|
+
if on_key_up:
|
|
51
|
+
self.set_event(EventTypes.KEY_UP, on_key_up)
|
|
46
52
|
|
|
47
53
|
def render(self, exporter: Any) -> str:
|
|
48
54
|
# El método render será implementado por cada exportador
|