ex4nicegui 0.2.1__tar.gz → 0.2.3__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.
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/PKG-INFO +1 -1
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/__init__.py +1 -1
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/__index.py +1 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/officials.py +65 -2
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui.egg-info/PKG-INFO +1 -1
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/LICENSE +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/README.md +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/layout/__init__.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/layout/gridbox.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/ECharts/ECharts.js +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/ECharts/ECharts.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/ECharts/__init__.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/UseDraggable/UseDraggable.js +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/UseDraggable/UseDraggable.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/UseDraggable/__init__.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/__init__.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/drawer.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/local_file_picker.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/q_pagination.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/rxui.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/useMouse/UseMouse.js +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/useMouse/UseMouse.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/useMouse/__init__.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/reactive/usePagination.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/tools/__init__.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/tools/debug.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/utils/__init__.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/utils/common.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui/utils/signals.py +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui.egg-info/SOURCES.txt +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui.egg-info/dependency_links.txt +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui.egg-info/not-zip-safe +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui.egg-info/requires.txt +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/ex4nicegui.egg-info/top_level.txt +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/setup.cfg +0 -0
- {ex4nicegui-0.2.1 → ex4nicegui-0.2.3}/setup.py +0 -0
|
@@ -83,6 +83,10 @@ class BindableUi(Generic[TWidget]):
|
|
|
83
83
|
cast(ui.element, self.element).tailwind(*args)
|
|
84
84
|
return self
|
|
85
85
|
|
|
86
|
+
def tooltip(self, text: str) -> Self:
|
|
87
|
+
cast(ui.element, self.element).tooltip(text)
|
|
88
|
+
return self
|
|
89
|
+
|
|
86
90
|
def add_slot(self, name: str, template: Optional[str] = None):
|
|
87
91
|
"""Add a slot to the element.
|
|
88
92
|
|
|
@@ -138,6 +142,9 @@ class BindableUi(Generic[TWidget]):
|
|
|
138
142
|
|
|
139
143
|
return self
|
|
140
144
|
|
|
145
|
+
def clear(self) -> None:
|
|
146
|
+
cast(ui.element, self.element).clear()
|
|
147
|
+
|
|
141
148
|
|
|
142
149
|
class SingleValueBindableUi(BindableUi[TWidget], Generic[T, TWidget]):
|
|
143
150
|
def __init__(self, value: TMaybeRef[T], element: TWidget) -> None:
|
|
@@ -338,7 +345,11 @@ class SwitchBindableUi(SingleValueBindableUi[bool, ui.switch]):
|
|
|
338
345
|
@staticmethod
|
|
339
346
|
def _setup_(binder: "SwitchBindableUi"):
|
|
340
347
|
def onValueChanged(e):
|
|
341
|
-
|
|
348
|
+
ele._send_update_on_value_change = ele.LOOPBACK
|
|
349
|
+
cur_value = ele._event_args_to_value(e)
|
|
350
|
+
ele.set_value(cur_value)
|
|
351
|
+
ele._send_update_on_value_change = True
|
|
352
|
+
binder._ref.value = cur_value
|
|
342
353
|
|
|
343
354
|
ele = cast(ValueElement, binder.element)
|
|
344
355
|
|
|
@@ -346,7 +357,7 @@ class SwitchBindableUi(SingleValueBindableUi[bool, ui.switch]):
|
|
|
346
357
|
def _():
|
|
347
358
|
ele.value = binder.value
|
|
348
359
|
|
|
349
|
-
ele.on("update:modelValue",
|
|
360
|
+
ele.on("update:modelValue", onValueChanged, [None], throttle=0) # type: ignore
|
|
350
361
|
|
|
351
362
|
def __init__(
|
|
352
363
|
self,
|
|
@@ -432,6 +443,58 @@ class CheckboxBindableUi(SingleValueBindableUi[bool, ui.checkbox]):
|
|
|
432
443
|
return self
|
|
433
444
|
|
|
434
445
|
|
|
446
|
+
class DateBindableUi(SingleValueBindableUi[Optional[str], ui.date]):
|
|
447
|
+
def __init__(
|
|
448
|
+
self,
|
|
449
|
+
value: TMaybeRef[Optional[str]] = None,
|
|
450
|
+
*,
|
|
451
|
+
mask: TMaybeRef[str] = "YYYY-MM-DD",
|
|
452
|
+
on_change: Optional[Callable[..., Any]] = None,
|
|
453
|
+
) -> None:
|
|
454
|
+
kws = {
|
|
455
|
+
"value": value,
|
|
456
|
+
"mask": mask,
|
|
457
|
+
"on_change": on_change,
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
value_kws = _convert_kws_ref2value(kws)
|
|
461
|
+
|
|
462
|
+
element = ui.date(**value_kws)
|
|
463
|
+
|
|
464
|
+
super().__init__(value, element)
|
|
465
|
+
|
|
466
|
+
for key, value in kws.items():
|
|
467
|
+
if is_ref(value) and key != "value":
|
|
468
|
+
self.bind_prop(key, value) # type: ignore
|
|
469
|
+
|
|
470
|
+
self._ex_setup()
|
|
471
|
+
|
|
472
|
+
def _ex_setup(self):
|
|
473
|
+
ele = self.element
|
|
474
|
+
|
|
475
|
+
@effect
|
|
476
|
+
def _():
|
|
477
|
+
ele.value = self.value
|
|
478
|
+
|
|
479
|
+
def onModelValueChanged(e):
|
|
480
|
+
self._ref.value = e.args[0] or "" # type: ignore
|
|
481
|
+
|
|
482
|
+
ele.on("update:modelValue", handler=onModelValueChanged)
|
|
483
|
+
|
|
484
|
+
def bind_prop(self, prop: str, ref_ui: ReadonlyRef):
|
|
485
|
+
if prop == "value":
|
|
486
|
+
return self.bind_value(ref_ui)
|
|
487
|
+
|
|
488
|
+
return super().bind_prop(prop, ref_ui)
|
|
489
|
+
|
|
490
|
+
def bind_value(self, ref_ui: ReadonlyRef[bool]):
|
|
491
|
+
@effect
|
|
492
|
+
def _():
|
|
493
|
+
self.element.on_value_change(ref_ui.value)
|
|
494
|
+
|
|
495
|
+
return self
|
|
496
|
+
|
|
497
|
+
|
|
435
498
|
class InputBindableUi(SingleValueBindableUi[str, ui.input]):
|
|
436
499
|
def __init__(
|
|
437
500
|
self,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|