stack/src/components/img/img.twig line 1

Open in your IDE?
  1. {%- set class_name = [
  2.   "img",
  3.   props.objectfit in ["cover", "contain"] ? "--" ~ props.objectfit : null,
  4.   props.is_placeholder ? "--placeholder" : null,
  5.   props.ratio in ["4-3", "16-9", "3-2", "1-1", "3-4"] ? "--ratio-" ~ props.ratio : null,
  6.   props.extra_class|default(false) ? props.extra_class : null
  7. ]|join(' ')|trim -%}
  8. {%- set attrs = [
  9.   'class="' ~ class_name ~ '"',
  10. ] -%}
  11. {%- set attrs = attrs|join(' ')|trim -%}
  12. {# Image Attributes #}
  13. {%- set src_attribute = props.native_lazyload or props.disable_lazy ? 'src="' : 'src="" data-src="' -%}
  14. {%- set src_set_attribute = props.native_lazyload or props.disable_lazy ? 'srcset="' : 'srcset="" data-srcset="' -%}
  15. {%- set img_attrs = [
  16.   src_attribute ~ props.src|default("") ~ '"'
  17. ] -%}
  18. {%- set img_attrs = img_attrs|merge(['alt="' ~ props.alt|default("") ~ '"']) -%}
  19. {%- if props.width is defined -%}
  20.   {%- set img_attrs = img_attrs|merge(['width="' ~ props.width ~ '"']) -%}
  21. {%- endif -%}
  22. {%- if props.height is defined -%}
  23.   {%- set img_attrs = img_attrs|merge(['height="' ~ props.height ~ '"']) -%}
  24. {%- endif -%}
  25. {%- if props.native_lazyload and not props.disable_lazy|default(false) -%}
  26.   {%- set img_attrs = img_attrs|merge(['loading="lazy"']) -%}
  27. {%- endif -%}
  28. {%- if props.sizes -%}
  29.   {%- set img_attrs = img_attrs|merge(['sizes="' ~ props.sizes|join(', ')|trim ~ '"']) -%}
  30. {%- endif -%}
  31. {%- if props.draggable|default(false) == false -%}
  32.   {%- set img_attrs = img_attrs|merge(['draggable="false"']) -%}
  33. {%- endif -%}
  34. {%- if props.srcset is defined -%}
  35.   {%- set img_attrs = img_attrs|merge([src_set_attribute ~ props.srcset|join(', ')|trim ~ '"']) -%}
  36. {%- endif -%}
  37. {% if props.fetchpriority in ["high", "low"] %}
  38.   {%- set img_attrs = img_attrs|merge(['fetchpriority="' ~ props.fetchpriority ~ '"']) -%}
  39. {% endif %}
  40. {%- set img_attrs = img_attrs|join(' ')|trim -%}
  41. <div {{ attrs|raw }}>
  42.   <picture>
  43.     {% if props.sources %}
  44.       {% include "@Components/source/source.twig" with {props: {
  45.         sources: props.sources,
  46.         native_lazyload: props.native_lazyload,
  47.         disable_lazy: props.disable_lazy,
  48.       }} %}
  49.     {% endif %}
  50.     <img {{ img_attrs|raw }}>
  51.   </picture>
  52. </div>