{% macro widget_slot(field, control_id, locale) -%} {% if field.widget %}{% endif %} {%- endmacro %} {% macro render_field(field, locale, values, errors) -%} {% set localized = locale is not none %} {% set locale_code = locale.code if localized else '' %} {% set control_id = 'cm-field-' ~ block.id ~ '-' ~ field.name ~ ('-' ~ locale_code if localized else '') %} {% set label_control_id = control_id ~ '-start' if field.type == 'date_range' else control_id %} {% set field_value = values[field.name] if field.name in values else field.default %} {% set field_errors = errors.get(field.name, ()) %} {% set help_id = control_id ~ '-help' %} {% set errors_id = control_id ~ '-errors' %} {% set ns = namespace(input_type='text', required=field.required, min=none, max=none, minlength=none, maxlength=none, pattern=none, step=none) %} {% for validator in field.validators %} {% if validator.kind == 'required' %}{% set ns.required = true %}{% endif %} {% if validator.kind == 'email' %}{% set ns.input_type = 'email' %}{% endif %} {% if validator.kind == 'url' %}{% set ns.input_type = 'url' %}{% endif %} {% if validator.kind == 'integer' %}{% set ns.step = '1' %}{% endif %} {% if validator.kind == 'min' %}{% set ns.min = validator.value %}{% endif %} {% if validator.kind == 'max' %}{% set ns.max = validator.value %}{% endif %} {% if validator.kind == 'min_length' %}{% set ns.minlength = validator.value %}{% endif %} {% if validator.kind == 'max_length' %}{% set ns.maxlength = validator.value %}{% endif %} {% if validator.kind == 'pattern' %}{% set ns.pattern = validator.value %}{% endif %} {% endfor %} {% set described = (help_id if field.help else '') ~ (' ' ~ errors_id if field_errors else '') %}