{%- set id = id ?? "lightswitch#{random()}" %} {%- set on = on ?? false %} {%- set indeterminate = not on and (indeterminate ?? false) %} {%- set value = value ?? '1' %} {%- set indeterminateValue = indeterminateValue ?? '-' %} {%- set small = small ?? false %} {%- set toggle = toggle ?? null %} {%- set reverseToggle = reverseToggle ?? null %} {%- set disabled = (disabled ?? false) ? true : false %} {%- set onLabel = onLabel ?? label ?? false %} {%- set offLabel = offLabel ?? false %} {%- set hasOnLabel = onLabel is not same as(false) %} {%- set hasOffLabel = offLabel is not same as(false) %} {%- set hasLabels = hasOnLabel or hasOffLabel %} {%- set containerAttributes = { id: id, class: [ 'lightswitch', on ? 'on' : null, hasLabels ? 'has-labels' : null, indeterminate ? 'indeterminate' : null, small ? 'small' : null, toggle or reverseToggle ? 'fieldtoggle' : null, disabled ? 'disabled' : null, ]|filter, tabindex: '0', data: { 'value': value != '1' ? value : false, 'indeterminate-value': indeterminateValue != '-' ? indeterminateValue : false, 'target': toggle ?: false, 'reverse-target': reverseToggle ?: false, }, role: 'switch', aria: { checked: on ? 'true' : (indeterminate ? 'mixed' : 'false'), labelledby: labelId ?? null, }, }|merge(containerAttributes ?? [], recursive=true) %} {%- if block('attr') is defined %} {%- set containerAttributes = containerAttributes|merge(('
')|parseAttr, recursive=true) %} {% endif %} {% set input %}
{% if name is defined -%} {{ hiddenInput(name, on ? value : (indeterminate ? indeterminateValue : ''), {disabled: disabled}) }} {%- endif %}
{% endset %} {% if hasLabels -%}
{% if hasOffLabel %} {% endif %} {{ input }} {% if hasOnLabel %} {% endif %}
{% else %} {{ input }} {%- endif %}