Add a shared searchable multiselect combobox for team/member pickers
Extracts the "Grant role" member picker's typeahead combobox into a reusable static/js/searchable-select.js (opt in via data-searchable on the widget), and reuses it for the news form's teams field -- a proper multiselect with removable pills and filter-as-you-type, replacing the plain checkbox list. Needed forwarding widget attrs through the shared select template, which never passed them to the rendered <select>.
This commit is contained in:
@@ -47,6 +47,7 @@ class ClubRoleAssignForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = ClubRole
|
||||
fields = ["member", "role"]
|
||||
widgets = {"member": forms.Select(attrs={"data-searchable": "true", "data-search-placeholder": _("Type a name to search...")})}
|
||||
|
||||
def __init__(self, *args, club=None, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
@@ -155,7 +156,10 @@ class NewsForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = News
|
||||
fields = ["title", "teams", "visibility", "body"]
|
||||
widgets = {"teams": forms.CheckboxSelectMultiple, "body": forms.Textarea(attrs={"rows": 8})}
|
||||
widgets = {
|
||||
"teams": forms.SelectMultiple(attrs={"data-searchable": "true", "data-search-placeholder": _("Type to filter teams...")}),
|
||||
"body": forms.Textarea(attrs={"rows": 8}),
|
||||
}
|
||||
|
||||
def __init__(self, *args, club=None, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user