{# settings/partials/module_card.html Inline-Einstellungskarte für ein Modul auf der Einstellungsseite. Erwartet im Kontext: data.mod, data.schema, data.values #} {% from "partials/components/ui_macros.html" import btn, btn_save, form_input, form_select, form_textarea, toggle_field %} {% set mod = data['mod'] %} {% set schema = data['schema'] %} {% set values = data['values'] %}
{{ mod.label }}
{% set ns = namespace(grid_open=False, grid_cols=1, first_section=True) %} {% for field in schema %} {% set ftype = field.get('type', 'text') %} {% if ftype == 'section' %} {% if ns.grid_open %}
{% endif %} {% set ns.first_section = False %} {% set ns.grid_cols = field.get('cols', 1) %}
{% set ns.grid_open = True %} {% else %} {% if not ns.grid_open %}
{% set ns.grid_open = True %} {% endif %} {% set fkey = field.key %} {% set fval = values.get(fkey, field.get('default', '')) %} {% set fspan = field.get('span', 1) %} {% if fspan > 1 %}
{% endif %}
{% if ftype == 'select' %} {{ form_select(fkey, field.options, fval, placeholder='') }} {% elif ftype == 'checkbox' %} {{ toggle_field(fkey, fval in (True, '1', 'true', 'on'), label='', field_id='tf-' ~ fkey) }} {% elif ftype == 'list' %} {% set flist = fval if fval is iterable and fval is not string else [] %}
{% call btn(attrs='style="gap:5px;" @click="add()"') %} Hinzufügen {% endcall %}
{% elif ftype == 'textarea' %} {%- set _ta_attrs -%} style="resize:vertical; font-family:{% if field.get('mono') %}var(--font-mono){% else %}inherit{% endif %};" {%- endset -%} {{ form_textarea(fkey, fval, rows=field.get('rows', 3), placeholder=field.get('placeholder', ''), attrs=_ta_attrs) }} {% elif ftype == 'password' %} {{ form_input(fkey, type='password', placeholder=field.get('placeholder', '••••••••'), attrs='autocomplete="new-password"') }} {% else %} {%- set _attrs -%} {%- if field.get('mono') %}style="font-family:var(--font-mono);{% if field.get('width') %}width:{{ field.width }};{% endif %}" {%- elif field.get('width') %}style="width:{{ field.width }};"{% endif -%} {%- endset -%} {{ form_input(fkey, fval, type=ftype, placeholder=field.get('placeholder', ''), attrs=_attrs) }} {% endif %} {% if field.get('description') %} {{ field.description }} {% endif %}
{% if fspan > 1 %}
{% endif %} {% endif %} {% endfor %} {% if ns.grid_open %}
{% endif %}
{{ btn_save() }}