Skip to content

Commit

Permalink
feat: URLField widget, display a clickable link
Browse files Browse the repository at this point in the history
  • Loading branch information
khaled5321 committed Sep 7, 2024
1 parent b0bb94f commit aeab95c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/unfold/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
UnfoldAdminSplitDateTimeWidget,
UnfoldAdminTextareaWidget,
UnfoldAdminTextInputWidget,
UnfoldAdminURLInputWidget,
UnfoldAdminUUIDInputWidget,
UnfoldBooleanSwitchWidget,
UnfoldBooleanWidget,
Expand Down Expand Up @@ -80,7 +81,7 @@
models.EmailField: {"widget": UnfoldAdminEmailInputWidget},
models.CharField: {"widget": UnfoldAdminTextInputWidget},
models.URLField: {"widget": UnfoldAdminTextInputWidget},
models.GenericIPAddressField: {"widget": UnfoldAdminTextInputWidget},
models.GenericIPAddressField: {"widget": UnfoldAdminURLInputWidget},
models.UUIDField: {"widget": UnfoldAdminUUIDInputWidget},
models.TextField: {"widget": UnfoldAdminTextareaWidget},
models.NullBooleanField: {"widget": UnfoldAdminNullBooleanSelectWidget},
Expand Down
4 changes: 4 additions & 0 deletions src/unfold/templates/unfold/widgets/url.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{% if url_valid %}
{{ current_label }} <a href="{{ widget.href }}" class="text-primary-600 dark:text-primary-500">{{ widget.value }}</a>
{% endif %}
{% include "django/forms/widgets/input.html" %}
8 changes: 8 additions & 0 deletions src/unfold/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
AdminTextareaWidget,
AdminTextInputWidget,
AdminTimeWidget,
AdminURLFieldWidget,
AdminUUIDInputWidget,
ForeignKeyRawIdWidget,
RelatedFieldWidgetWrapper,
Expand Down Expand Up @@ -255,6 +256,13 @@ def __init__(self, attrs: Optional[Dict[str, Any]] = None) -> None:
super().__init__(attrs={"class": " ".join(INPUT_CLASSES), **(attrs or {})})


class UnfoldAdminURLInputWidget(AdminURLFieldWidget):
template_name = "unfold/widgets/url.html"

def __init__(self, attrs: Optional[Dict[str, Any]] = None) -> None:
super().__init__(attrs={"class": " ".join(INPUT_CLASSES), **(attrs or {})})


class UnfoldAdminColorInputWidget(AdminTextInputWidget):
def __init__(self, attrs: Optional[Dict[str, Any]] = None) -> None:
super().__init__(
Expand Down

0 comments on commit aeab95c

Please sign in to comment.