EMA Ratings
This component only provides the inputs type=’radio’, it presumes you already have your form and only want to include a rating system
{#
Accepts:
- title (string): title of the panel (default: '')
- default_rating (string): set a default rating (default: 0)
- name (string): name of your form group input
- disabled (boolean): read-only rating (default: false)
#}
{# Internal properties #}
{% set _css_class = 'ema-rating' %}
{% set _title = title|default('Your rating') %}
{% set _default_rating = default_rating|default(0) %}
{% set _name = name|default('ema-rating') %}
{% set _disabled = disabled|default(false) %}
{% set _feedback = feedback|default([]) %}
{# Internal logic - Process properties #}
{% if extra_class is defined %}
{% set _css_class = _css_class ~ ' ' ~ extra_class %}
{% endif %}
{# Print result #}
<div class="{{_css_class}}">
<span class="ema-rating__title">{{_title}}</span>
<div class="ema-rating__stars">
{% for i in 5..1 %}
<input
type="radio"
class="ema-rating__input"
aria-hidden="true"
id="ema-rating__{{_name}}--{{i}}"
name="{{ _name }}"
tabindex="{{ i-1 }}"
value="{{ i }}"
{{ _disabled ? 'disabled="disabled"'}}
{{ i == _default_rating ? 'aria-checked="true" checked="checked"' }}
/>
<label class="ema-rating__star" title="{{ _feedback[i-1] }}" {{ not _disabled ? 'for="ema-rating__' ~ _name ~ '--' ~ i ~ '"': 'disabled="disabled"'}}>
★
</label>
{% endfor %}
</div>
</div>
{
"title": "Add your rating",
"name": "ema-rating",
"feedback": [
"Unhelpful",
"Not very helpful",
"Fairly helpful",
"Helpful",
"Very helpful"
]
}
<div class="ema-rating">
<span class="ema-rating__title">Add your rating</span>
<div class="ema-rating__stars">
<input type="radio" class="ema-rating__input" aria-hidden="true" id="ema-rating__ema-rating--5" name="ema-rating" tabindex="4" value="5" />
<label class="ema-rating__star" title="Very helpful" for="ema-rating__ema-rating--5">
★
</label>
<input type="radio" class="ema-rating__input" aria-hidden="true" id="ema-rating__ema-rating--4" name="ema-rating" tabindex="3" value="4" />
<label class="ema-rating__star" title="Helpful" for="ema-rating__ema-rating--4">
★
</label>
<input type="radio" class="ema-rating__input" aria-hidden="true" id="ema-rating__ema-rating--3" name="ema-rating" tabindex="2" value="3" />
<label class="ema-rating__star" title="Fairly helpful" for="ema-rating__ema-rating--3">
★
</label>
<input type="radio" class="ema-rating__input" aria-hidden="true" id="ema-rating__ema-rating--2" name="ema-rating" tabindex="1" value="2" />
<label class="ema-rating__star" title="Not very helpful" for="ema-rating__ema-rating--2">
★
</label>
<input type="radio" class="ema-rating__input" aria-hidden="true" id="ema-rating__ema-rating--1" name="ema-rating" tabindex="0" value="1" />
<label class="ema-rating__star" title="Unhelpful" for="ema-rating__ema-rating--1">
★
</label>
</div>
</div>
-
Content:
.ema-rating { align-items: center; display: flex; margin: 0; } .ema-rating__title { margin-right: map-get($ecl-spacing, 'xxxs'); } .ema-rating__stars { display: inline-block; font-size: map-get($ecl-font-size, 'l'); .ema-rating__input { display: none; left: -9999px; opacity: 0; position: absolute; visibility: hidden; } .ema-rating__input:checked ~ label { color: map-get($ema-colors, 'orange-3'); } } .ema-rating__stars:not(:checked) { .ema-rating__star { color: map-get($ema-colors, 'grey-3'); float: right; } } .ema-rating__input:not(:disabled) ~ .ema-rating__star { cursor: pointer; } .ema-rating__input:not(:disabled) ~ .ema-rating__star:hover, .ema-rating__input:not(:disabled) ~ .ema-rating__star:hover ~ label { color: map-get($ema-colors, 'orange-2'); }
- URL: /components/raw/ema-ratings/ema-ratings.scss
- Filesystem Path: framework/components/ema-ratings/ema-ratings.scss
- Size: 830 Bytes
- Handle: @ec-europa/ema-ratings
- Preview:
- Filesystem Path: framework/components/ema-ratings/ema-ratings.twig