From 3d4af6340b01a3947d3fc39eaffbb402e34fff4f Mon Sep 17 00:00:00 2001 From: Shiki <64834708+xshiki@users.noreply.github.com> Date: Mon, 13 Jan 2025 17:02:42 +0100 Subject: [PATCH 1/2] Added simple warning for incorrect input --- ipywidgets_jsonschema/form.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ipywidgets_jsonschema/form.py b/ipywidgets_jsonschema/form.py index fdf4a9f..74dec48 100644 --- a/ipywidgets_jsonschema/form.py +++ b/ipywidgets_jsonschema/form.py @@ -439,6 +439,19 @@ def pattern_checker(val): def _register_observer(h, n, t): widget.observe(h, names=n, type=t) + warning_label = ipywidgets.Label("", layout=ipywidgets.Layout(color="red", display="none")) + def _observer(change): + if not pattern_checker(widget.value): + pattern = schema.get("pattern", ".*") + warning_label.value = f"Warning: Input does not match the specified pattern" + warning_label.layout.display = "block" + change.owner.layout.border = "2px solid red" + else: + change.owner.layout.border = "none" + warning_label.value = "" + warning_label.layout.display = "none" + + widget.observe(_observer, names="value", type="change") def _setter(_d): if pattern_checker(_d): widget.value = _d @@ -486,7 +499,7 @@ def _getter(): getter=_getter, setter=_setter, resetter=_resetter, - widgets=[box], + widgets=[box, warning_label], register_observer=_register_observer, ) From d1c290805d00232a801f5a2edadce050ec83fa05 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 12:56:01 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- ipywidgets_jsonschema/form.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ipywidgets_jsonschema/form.py b/ipywidgets_jsonschema/form.py index 74dec48..e8a2a5d 100644 --- a/ipywidgets_jsonschema/form.py +++ b/ipywidgets_jsonschema/form.py @@ -439,11 +439,16 @@ def pattern_checker(val): def _register_observer(h, n, t): widget.observe(h, names=n, type=t) - warning_label = ipywidgets.Label("", layout=ipywidgets.Layout(color="red", display="none")) + warning_label = ipywidgets.Label( + "", layout=ipywidgets.Layout(color="red", display="none") + ) + def _observer(change): if not pattern_checker(widget.value): pattern = schema.get("pattern", ".*") - warning_label.value = f"Warning: Input does not match the specified pattern" + warning_label.value = ( + f"Warning: Input does not match the specified pattern" + ) warning_label.layout.display = "block" change.owner.layout.border = "2px solid red" else: @@ -452,6 +457,7 @@ def _observer(change): warning_label.layout.display = "none" widget.observe(_observer, names="value", type="change") + def _setter(_d): if pattern_checker(_d): widget.value = _d