{%- set fieldset = fieldset ?? false %} {%- set id = id ?? "field#{random()}" %} {%- set fieldId = fieldId ?? "#{id}-field" %} {%- set labelId = labelId ?? "#{id}-#{fieldset ? 'legend' : 'label'}" %} {%- set instructionsId = instructionsId ?? "#{id}-instructions" %} {%- set status = status ?? null %} {%- set label = fieldLabel ?? label ?? block('label') ?? null %} {%- if label == '__blank__' %} {%- set label = null %} {%- endif %} {%- set siteId = craft.app.getIsMultiSite() ? (siteId ?? null) : null %} {%- set site = siteId ? craft.app.sites.getSiteById(siteId) : null %} {%- set required = required ?? false %} {%- set instructions = instructions ?? block('instructions') ?? null %} {%- set instructionsPosition = instructionsPosition ?? 'before' %} {%- set tip = tip ?? block('tip') ?? null %} {%- set warning = warning ?? block('warning') ?? null %} {%- set orientation = orientation ?? (site ? site.getLocale() : craft.app.locale).getOrientation() %} {%- set translatable = translatable ?? (site is not same as(null)) %} {%- set errors = errors ?? null -%} {%- set fieldClass = (fieldClass ?? [])|explodeClass|merge([ 'field', (first ?? false) ? 'first' : null, errors ? 'has-errors' : null, ])|filter %} {%- set showAttribute = (attribute ?? false) and (currentUser.admin ?? false) and currentUser.getPreference('showFieldHandles') %} {%- set fieldAttributes = { class: fieldClass, id: fieldId, }|merge(fieldAttributes ?? [], recursive=true) %} {%- if block('attr') is defined %} {%- set fieldAttributes = fieldAttributes|merge(('
')|parseAttr, recursive=true) %} {% endif %} {%- set inputContainerAttributes = { class: [ 'input', orientation, errors ? 'errors' : null, ]|filter, }|merge(inputContainerAttributes ?? [], recursive=true) %} {%- set instructionsHtml = instructions ? tag('div', { id: instructionsId, class: ['instructions'], html: instructions|md('gfm-comment')|replace('/&(\\w+);/', '&$1;'), }) %} {% tag (fieldset ? 'fieldset' : 'div') with fieldAttributes %} {% if status %} {{ tag('div', { class: ['status-badge', status[0]], title: status[1], aria: { label: status[1], }, }) }} {% endif %} {% if label or showAttribute %}
{% block heading %} {% if label %} {{ tag(fieldset ? 'legend' : 'label', { id: labelId, class: required ? ['required'] : [], for: (id ?? false) and not fieldset ? id : null, html: label, }|merge(labelAttributes ?? [], recursive=true)) }} {%- if translatable %} {{ tag('div', { class: 't9n-indicator', title: translationDescription ?? 'This field is translatable.'|t('app'), aria: { label: translationDescription ?? 'This field is translatable.'|t('app'), }, data: { icon: 'language', }, }) }} {% endif -%} {% endif %} {% if showAttribute %}
{% include '_includes/forms/copytextbtn' with { id: "#{fieldId}-attribute", class: ['code', 'small', 'light'], value: attribute, } only %} {% endif %} {% endblock %}
{% endif %} {{ instructionsPosition == 'before' ? instructionsHtml|raw }} {% tag 'div' with inputContainerAttributes %} {% block input %} {{ input|raw }} {% endblock %} {% endtag %} {{ instructionsPosition == 'after' ? instructionsHtml|raw }} {% if tip %} {{ tag('p', { class: ['notice', 'with-icon'], html: tip|md(inlineOnly=true)|replace('/&(\\w+);/', '&$1;'), }) }} {% endif %} {% if warning %} {{ tag('p', { class: ['warning', 'with-icon'], html: warning|md(inlineOnly=true)|replace('/&(\\w+);/', '&$1;'), }) }} {% endif %} {% include "_includes/forms/errorList" with { errors: errors } %} {% endtag %}