stack/src/components/fields/range-slider-field/range-slider-field.twig line 1

Open in your IDE?
  1. {%- set class_name = [
  2.   "f-range-slider",
  3.   "u-posr u-z-index-1 d-flex flex-column gap-1",
  4.   props.disabled ? "--disabled" : null,
  5.   props.extra_class ? props.extra_class : null,
  6. ]|join(' ')|trim -%}
  7. {%- set attrs = [
  8.   'class="' ~ class_name ~ '"',
  9. ] -%}
  10. {%- if props.id is defined %}
  11.   {%- set attrs = attrs|merge(['id="' ~ props.id ~ '"']) -%}
  12. {%- endif -%}
  13. {%- if props.disabled == true %}
  14.   {% set attrs = attrs|merge(['disabled']) %}
  15. {%- endif -%}
  16. {%- if props.data is defined -%}
  17.   {%- set data_attrs = [] -%}
  18.   {%- for key, attribute in props.data -%}
  19.     {%- set data_attrs = data_attrs|merge(['data-' ~ key ~ '="' ~ attribute ~ '"']) -%}
  20.   {%- endfor -%}
  21.   {%- set data_attrs = data_attrs|join(' ')|trim -%}
  22.   {%- set attrs = attrs|merge([data_attrs]) -%}
  23. {%- endif -%}
  24. {%- set attrs = attrs|join(' ')|trim -%}
  25. {# Input attrs #}
  26. {%- set class_name_range = [
  27.   "f-range-slider__range",
  28.   "u-posa"
  29. ]|join(' ')|trim -%}
  30. {%- set attrs_input = [] -%}
  31. {%- if props.required == true %}
  32.   {%- set attrs_input = attrs_input|merge(['required']) -%}
  33. {%- endif -%}
  34. {%- if props.disabled == true %}
  35.   {%- set attrs_input = attrs_input|merge(['disabled']) -%}
  36. {%- endif -%}
  37. {%- if props.readonly == true %}
  38.   {%- set attrs_input = attrs_input|merge(['readonly']) -%}
  39. {%- endif -%}
  40. {%- if props.min is defined %}
  41.   {%- set attrs_input = attrs_input|merge(['min="' ~ props.min ~ '"']) -%}
  42. {%- endif -%}
  43. {%- if props.max is defined %}
  44.   {%- set attrs_input = attrs_input|merge(['max="' ~ props.max ~ '"']) -%}
  45. {%- endif -%}
  46. {%- if props.step is defined %}
  47.   {%- set attrs_input = attrs_input|merge(['step="' ~ props.step ~ '"']) -%}
  48. {%- endif -%}
  49. {%- set attrs_from = [] -%}
  50. {%- if props.from.full_name is defined %}
  51.   {%- set attrs_from = attrs_from|merge(['name="' ~ props.from.full_name ~ '"']) -%}
  52. {%- endif -%}
  53. {%- if props.from.value is defined %}
  54.   {%- set attrs_from = attrs_from|merge(['value="' ~ props.from.value ~ '"']) -%}
  55. {%- endif -%}
  56. {%- if props.from.id is defined %}
  57.   {%- set attrs_from = attrs_from|merge(['id="' ~ props.from.id ~ '"']) -%}
  58. {%- endif -%}
  59. {%- set attrs_to = [] -%}
  60. {%- if props.to.full_name is defined %}
  61.   {%- set attrs_to = attrs_to|merge(['name="' ~ props.to.full_name ~ '"']) -%}
  62. {%- endif -%}
  63. {%- if props.to.value is defined %}
  64.   {%- set attrs_to = attrs_to|merge(['value="' ~ props.to.value ~ '"']) -%}
  65. {%- endif -%}
  66. {%- if props.to.id is defined %}
  67.   {%- set attrs_to = attrs_to|merge(['id="' ~ props.to.id ~ '"']) -%}
  68. {%- endif -%}
  69. {%- set attrs_from = attrs_from|merge(attrs_input) -%}
  70. {%- set attrs_to = attrs_to|merge(attrs_input) -%}
  71. {%- set attrs_range_from = [
  72.   'class="' ~ class_name_range ~ ' --from"',
  73.   'type="range"'
  74. ]|merge(attrs_from)|join(' ')|trim -%}
  75. {%- set attrs_range_to = [
  76.   'class="' ~ class_name_range ~ ' --to"',
  77.   'type="range"'
  78. ]|merge(attrs_to)|join(' ')|trim -%}
  79. <div {{ attrs|raw }}>
  80.   {% if props.label %}
  81.     {% include "@Components/fields/label-field/label-field.twig" with {props: {
  82.       title: props.label,
  83.       id: props.id,
  84.       required: props.required,
  85.     }} %}
  86.   {% endif %}
  87.   <div class="f-range-slider__ranges u-posr">
  88.     <div class="f-range-slider__range-wrap --from u-posr">
  89.       <input {{ attrs_range_from|raw }}>
  90.     </div>
  91.     <div class="f-range-slider__range-wrap --to u-posr">
  92.       <input {{ attrs_range_to|raw }}>
  93.     </div>
  94.     <div class="f-range-slider__label --from u-posa u-color-primary-500 u-fz-xs"></div>
  95.     <div class="f-range-slider__label --to u-posa u-color-primary-500 u-fz-xs"></div>
  96.   </div>
  97.   <div class="f-range-slider__inputs d-flex justify-content-between gap-2">
  98.     {% include "@Components/fields/text-field/text-field.twig" with {props: {
  99.       type: "number",
  100.       value: props.from.value,
  101.       extra_class: "f-range-slider__control w-100 --from"
  102.     }} %}
  103.     {% include "@Components/fields/text-field/text-field.twig" with {props: {
  104.       type: "number",
  105.       value: props.to.value,
  106.       extra_class: "f-range-slider__control w-100 --to"
  107.     }} %}
  108.   </div>
  109.   {% include "@Components/fields/error-field/error-field.twig" with {props: {}} %}
  110. </div>