CatOrNot/venv/lib/python3.6/site-packages/wtforms/widgets/html5.py
2018-12-11 00:32:28 +01:00

125 lines
2.4 KiB
Python

"""
Widgets for various HTML5 input types.
"""
from .core import Input
__all__ = (
'ColorInput', 'DateInput', 'DateTimeInput', 'DateTimeLocalInput',
'EmailInput', 'MonthInput', 'NumberInput', 'RangeInput', 'SearchInput',
'TelInput', 'TimeInput', 'URLInput', 'WeekInput',
)
class SearchInput(Input):
"""
Renders an input with type "search".
"""
input_type = 'search'
class TelInput(Input):
"""
Renders an input with type "tel".
"""
input_type = 'tel'
class URLInput(Input):
"""
Renders an input with type "url".
"""
input_type = 'url'
class EmailInput(Input):
"""
Renders an input with type "email".
"""
input_type = 'email'
class DateTimeInput(Input):
"""
Renders an input with type "datetime".
"""
input_type = 'datetime'
class DateInput(Input):
"""
Renders an input with type "date".
"""
input_type = 'date'
class MonthInput(Input):
"""
Renders an input with type "month".
"""
input_type = 'month'
class WeekInput(Input):
"""
Renders an input with type "week".
"""
input_type = 'week'
class TimeInput(Input):
"""
Renders an input with type "time".
"""
input_type = 'time'
class DateTimeLocalInput(Input):
"""
Renders an input with type "datetime-local".
"""
input_type = 'datetime-local'
class NumberInput(Input):
"""
Renders an input with type "number".
"""
input_type = 'number'
def __init__(self, step=None, min=None, max=None):
self.step = step
self.min = min
self.max = max
def __call__(self, field, **kwargs):
if self.step is not None:
kwargs.setdefault('step', self.step)
if self.min is not None:
kwargs.setdefault('min', self.min)
if self.max is not None:
kwargs.setdefault('max', self.max)
return super(NumberInput, self).__call__(field, **kwargs)
class RangeInput(Input):
"""
Renders an input with type "range".
"""
input_type = 'range'
def __init__(self, step=None):
self.step = step
def __call__(self, field, **kwargs):
if self.step is not None:
kwargs.setdefault('step', self.step)
return super(RangeInput, self).__call__(field, **kwargs)
class ColorInput(Input):
"""
Renders an input with type "color".
"""
input_type = 'color'