Skip to content

Commit 422bf42

Browse files
authored
feat: URLField widget, display a clickable link (#723)
1 parent b0bb94f commit 422bf42

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

src/unfold/admin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
UnfoldAdminSplitDateTimeWidget,
5050
UnfoldAdminTextareaWidget,
5151
UnfoldAdminTextInputWidget,
52+
UnfoldAdminURLInputWidget,
5253
UnfoldAdminUUIDInputWidget,
5354
UnfoldBooleanSwitchWidget,
5455
UnfoldBooleanWidget,
@@ -79,7 +80,7 @@
7980
models.TimeField: {"widget": UnfoldAdminSingleTimeWidget},
8081
models.EmailField: {"widget": UnfoldAdminEmailInputWidget},
8182
models.CharField: {"widget": UnfoldAdminTextInputWidget},
82-
models.URLField: {"widget": UnfoldAdminTextInputWidget},
83+
models.URLField: {"widget": UnfoldAdminURLInputWidget},
8384
models.GenericIPAddressField: {"widget": UnfoldAdminTextInputWidget},
8485
models.UUIDField: {"widget": UnfoldAdminUUIDInputWidget},
8586
models.TextField: {"widget": UnfoldAdminTextareaWidget},
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{% if url_valid %}
2+
{{ current_label }} <a href="{{ widget.href }}" class="text-primary-600 dark:text-primary-500">{{ widget.value }}</a>
3+
{% endif %}
4+
{% include "django/forms/widgets/input.html" %}

src/unfold/widgets.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
AdminTextareaWidget,
1414
AdminTextInputWidget,
1515
AdminTimeWidget,
16+
AdminURLFieldWidget,
1617
AdminUUIDInputWidget,
1718
ForeignKeyRawIdWidget,
1819
RelatedFieldWidgetWrapper,
@@ -255,6 +256,13 @@ def __init__(self, attrs: Optional[Dict[str, Any]] = None) -> None:
255256
super().__init__(attrs={"class": " ".join(INPUT_CLASSES), **(attrs or {})})
256257

257258

259+
class UnfoldAdminURLInputWidget(AdminURLFieldWidget):
260+
template_name = "unfold/widgets/url.html"
261+
262+
def __init__(self, attrs: Optional[Dict[str, Any]] = None) -> None:
263+
super().__init__(attrs={"class": " ".join(INPUT_CLASSES), **(attrs or {})})
264+
265+
258266
class UnfoldAdminColorInputWidget(AdminTextInputWidget):
259267
def __init__(self, attrs: Optional[Dict[str, Any]] = None) -> None:
260268
super().__init__(

0 commit comments

Comments
 (0)