{% import 'macros/form.html' as form %}

{%- set info = field.get('info', {}) -%}
{%- set help_text = info.get('notes', '') -%}

{%- set options=[{'value':'', 'text':''}] -%}
{%- set choices=column_type.choices() -%}
{%- if column_type.choice_value_key -%}
  {%- set value=column_type.choice_value_key(value) -%}
{%- endif -%}
{%- if value and value not in choices -%}
  {%- do options.append({
    'value': value,
    'text': value ~ ' ' ~ _('(invalid choice)')
  }) -%}
{%- endif -%}
{% if choices is mapping %}
  {%- for c, v in choices.items() -%}
    {%- do options.append({'value': c, 'text': v}) -%}
  {%- endfor -%}
{%- else -%}
  {%- for c in choices -%}
    {%- do options.append({'value': c, 'text': c}) -%}
  {%- endfor -%}
{%- endif -%}

{%- call form.select(
    'col__' ~ position ~ '__value',
    id='field-' ~ position,
    label=info.get('label', '') or field.id
      ~ (_(' (Primary key)') if pk else ''), classes=['control-full'],
    options=options,
    selected=value,
    error=errors.get(field.id),
    is_required=is_required
) -%}
  {%- if help_text -%}
    {{- form.info(help_text) -}}
  {%- endif -%}
{% endcall %}
