#32125: Added basic support for <datalist> elements for suggestions in Input
widgets
-------------------------------------+-------------------------------------
     Reporter:  Volodymyr            |                    Owner:  nobody
         Type:  New feature          |                   Status:  new
    Component:  Forms                |                  Version:  master
     Severity:  Normal               |               Resolution:
     Keywords:  datalist, forms,     |             Triage Stage:
  html5                              |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  1
-------------------------------------+-------------------------------------
Description changed by Volodymyr:

Old description:

> HTML5 introduces a support for {{{<datalist>}}} '''HTML5''' elements for
> suggestions in '''input''' tag
>
> To do this in Django currently, you have to do something like:
>
> '''django/forms/widgets/datalist.html'''
> {{{
> {% include "django/forms/widgets/input.html" %}
> <datalist id="{{ widget.id }}" name="{{ widget.name }}"{% include
> "django/forms/widgets/attrs.html" %}>{% for group_name, group_choices,
> group_index in widget.optgroups %}{% if group_name %}
>   <optgroup label="{{ group_name }}">{% endif %}{% for option in
> group_choices %}
>   {% include option.template_name with widget=option %}{% endfor %}{% if
> group_name %}
>   </optgroup>{% endif %}{% endfor %}
> </datalist>
> }}}
>
> '''django/forms/widgets/datalist_option.html'''
> {{{
> <option value="{{ widget.value|stringformat:'s' }}"{% include
> "django/forms/widgets/attrs.html" %}>
> }}}
>
> '''django/forms/widgets.py'''
> {{{#!python
> class Datalist(Select):
>     input_type = 'text'
>     template_name = 'django/forms/widgets/datalist.html'
>     option_template_name = 'django/forms/widgets/datalist_option.html'
>     add_id_index = False
>     checked_attribute = {'selected': True}
>     option_inherits_attrs = False
> }}}
>
> '''django/forms/fields.py'''
> {{{#!python
> class DatalistField(ChoiceField):
>     widget = Datalist
>     default_error_messages = {
>         'invalid_choice': _('Select a valid choice. %(value)s is not one
> of the available choices.'),
>     }
>
>     def __init__(self, *, choices='', **kwargs):
>         super().__init__(**kwargs)
>         self.choices = choices
> }}}

New description:

 HTML5 introduces a support for {{{<datalist>}}} '''HTML5''' elements for
 suggestions in '''input''' tag

 To do this in Django currently, you have to do something like:

 '''django/forms/widgets/datalist.html'''
 {{{
 {% include "django/forms/widgets/input.html" %}
 <datalist id="{{ widget.id }}"{% include "django/forms/widgets/attrs.html"
 %}>{% for group_name, group_choices, group_index in widget.optgroups %}{%
 if group_name %}
   <optgroup label="{{ group_name }}">{% endif %}{% for option in
 group_choices %}
   {% include option.template_name with widget=option %}{% endfor %}{% if
 group_name %}
   </optgroup>{% endif %}{% endfor %}
 </datalist>
 }}}

 '''django/forms/widgets/datalist_option.html'''
 {{{
 <option value="{{ widget.value|stringformat:'s' }}"{% include
 "django/forms/widgets/attrs.html" %}>
 }}}

 '''django/forms/widgets.py'''
 {{{#!python
 class Datalist(Select):
     input_type = 'text'
     template_name = 'django/forms/widgets/datalist.html'
     option_template_name = 'django/forms/widgets/datalist_option.html'
     add_id_index = False
     checked_attribute = {'selected': True}
     option_inherits_attrs = False
 }}}

 '''django/forms/fields.py'''
 {{{#!python
 class DatalistField(ChoiceField):
     widget = Datalist
     default_error_messages = {
         'invalid_choice': _('Select a valid choice. %(value)s is not one
 of the available choices.'),
     }

     def __init__(self, *, choices='', **kwargs):
         super().__init__(**kwargs)
         self.choices = choices
 }}}

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32125#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.99868a9da4c6bbe420020dea3c956075%40djangoproject.com.

Reply via email to