{%- set class_name = [
"f-checkbox-select d-flex flex-column",
"u-posr",
props.variant in ["inline"] ? "--" ~ props.variant : "--default",
]|join(' ')|trim -%}
{%- set attrs = [
'class="' ~ class_name ~ '"',
] -%}
{%- if props.full_name is defined %}
{%- set attrs = attrs|merge(['data-name="' ~ props.full_name ~ '"']) -%}
{%- endif -%}
{%- set attrs = attrs|join(' ')|trim -%}
{# Could be one liner, but filter 'filter' doesnt seem to work, sadly. Prefered solution ⬇️
{% set selected_count = props.options|filter(option => option.checked == true) %}
Twing seems to support filter 'filter' https://www.npmjs.com/package/gulp-twing
https://nightlycommit.github.io/twing/language-reference/filters/filter.html #}
{% set selected_count = 0 %}
{% for choice in props.choices %}
{% if choice.checked == true %}
{% set selected_count = selected_count + 1 %}
{% endif %}
{% endfor %}
{% set clear_tag = {
title: selected_count,
name: "f-checkbox-select__clear u-cursor-pointer",
extra_class: selected_count > 0 ? "--active" : "",
size: "sm",
tag: "span",
icon: {
src: "@Images/svg/xmark.svg",
size: "sm"
},
} %}
<div {{ attrs|raw }}>
{% if props.label %}
{% include "@Components/fields/label-field/label-field.twig" with {props: {
title: props.label,
id: props.id,
required: props.required,
}} %}
{% endif %}
<header class="f-checkbox-select__header d-flex align-items-center u-posr px-1" title="{{ props.title }}">
<div class="f-checkbox-select__title flex-grow-1 u-color-primary-500 u-fz-sm u-posr u-top-0 u-left-0 overflow-hidden u-cursor-pointer">
<span class="u-posa u-left-0 u-top-50-p u-translate-middle-y text-nowrap">{{ props.title }}</span>
</div>
<div class="flex-shrink-0 d-flex gap-1 ms-auto align-items-center">
{% include "@Components/items/tag-item/tag-item.twig" with {props: clear_tag} %}
<div class="f-checkbox-select__toggler d-flex align-items-center justify-content-center u-cursor-pointer">
{% include "@Components/icon/icon.twig" with {props: {
src: "@Images/svg/arrow-down.svg",
size: "lg",
}} %}
</div>
</div>
</header>
<div class="f-checkbox-select__body u-scrollbar u-posa" data-scrollbar-y>
<div class="f-checkbox-select__body-inner">
<div class="d-flex gap-2 flex-column pt-2 ps-1">
{% for choice in props.choices %}
{% include "@Components/fields/checkbox-field/checkbox-field.twig" with {props: choice|merge({
id: props.id ~ "-" ~ loop.index0,
name: props.full_name,
data: {
"filter-title": choice.label
}
})} %}
{% endfor %}
</div>
</div>
</div>
</div>