The @uol-event-cards component lets users see a selection of upcoming events sorted in chronological order.
Each card supports the following data:
Use the @uol-event-cards component within the @uol-widget-events pattern to display a selection of upcoming events, typically on a home page of section introduction page.
Do not use this pattern for:
Start and end dates with time where available should be passed to the component in a as a standard date format, eg: ‘2021-07-19’ or ‘2021-07-25 11:00’
{% if events.length %}
<div class="events-cards">
{% for event in events %}
<div class="event-card-outer">
<div class="event-card">
<h3 class="event-card__title">
<a class="event-card__link" href="{{ event.link }}">{{ event.title }}</a>
</h3>
{% if event.start %}
<div class="event-card__dates">
<div aria-hidden="true">
<span class="event-card__date__start-date__day">{{ event.start | date('DD') }}</span>
{% if event.start | date('DD MMMM YY') !== event.end | date('DD MMMM YY') %}
{% if event.start | date('YYYY') !== event.end | date('YYYY') %}
{{- event.start | date('MMMM YYYY') -}}
{% else %}
{%- if event.start | date('MM') !== event.end | date('MM') -%}
{{ event.start | date('MMMM') }}
{%- endif -%}
{% endif %} – <span class="event-card__date__end-date">{{ event.end | date('DD MMMM YYYY') }}</span>
{% else %}
{{ event.start | date('MMMM YYYY') }}
{% endif %}
</div>
<span class="hide-accessible">
{{ event.start | date('DD MMMM YYYY') }}
{% if event.start | date('DD MMMM YYYY') !== event.end | date('DD MMMM YYYY') %} to
{{ event.end | date('DD MMMM YYYY') }}
{% endif -%}
</span>
</div>
{% endif %}
{% if (event.start | date('HH:mm')) !== "00:00" %}
{% if (event.start | date('HHmm')) > 1200 %}
{% set start_period = "pm" %}
{% else %}
{% set start_period = "am" %}
{% endif %}
{% if (event.end | date('HHmm')) > 1200 %}
{% set end_period = "pm" %}
{% else %}
{% set end_period = "am" %}
{% endif %}
{% if start_period == end_period %}
{% set start_period = null %}
{% endif %}
<div class="event-card__time">
<span aria-hidden="true">
{{ event.start | date('h:mm') }}{{ start_period }} – {{ event.end | date('h:mm') }}{{ end_period }}
</span>
<span class="hide-accessible">
{{ event.start | date('h:mm') }}{{ start_period }} to {{ event.end | date('h:mm') }}{{ end_period }}
</span>
</div>
{% endif %}
</div>
</div>
{% endfor %}
</div>
{% endif %}
<div class="events-cards">
<div class="event-card-outer">
<div class="event-card">
<h3 class="event-card__title">
<a class="event-card__link" href="/some-event-link">The Cottingley Fairies: A Study in Deception</a>
</h3>
<div class="event-card__dates">
<div aria-hidden="true">
<span class="event-card__date__start-date__day">19</span>
July 2021
</div>
<span class="hide-accessible">
19 July 2021
</span>
</div>
</div>
</div>
<div class="event-card-outer">
<div class="event-card">
<h3 class="event-card__title">
<a class="event-card__link" href="/some-event-link-2">Creating climate-resilient agri-food systems in sub-Saharan Africa</a>
</h3>
<div class="event-card__dates">
<div aria-hidden="true">
<span class="event-card__date__start-date__day">25</span>
July – <span class="event-card__date__end-date">25 August 2021</span>
</div>
<span class="hide-accessible">
25 July 2021
to
25 August 2021
</span>
</div>
<div class="event-card__time">
<span aria-hidden="true">
11:00am – 4:30pm
</span>
<span class="hide-accessible">
11:00am to 4:30pm
</span>
</div>
</div>
</div>
<div class="event-card-outer">
<div class="event-card">
<h3 class="event-card__title">
<a class="event-card__link" href="/some-event-link-3">Global Food and Environment Institute symposium</a>
</h3>
<div class="event-card__dates">
<div aria-hidden="true">
<span class="event-card__date__start-date__day">10</span>
October 2021 – <span class="event-card__date__end-date">09 December 2022</span>
</div>
<span class="hide-accessible">
10 October 2021
to
09 December 2022
</span>
</div>
<div class="event-card__time">
<span aria-hidden="true">
1:00 – 3:30pm
</span>
<span class="hide-accessible">
1:00 to 3:30pm
</span>
</div>
</div>
</div>
<div class="event-card-outer">
<div class="event-card">
<h3 class="event-card__title">
<a class="event-card__link" href="/some-event-link-4">Undergraduate Virtual Open Days</a>
</h3>
<div class="event-card__dates">
<div aria-hidden="true">
<span class="event-card__date__start-date__day">19</span>
November 2021 – <span class="event-card__date__end-date">19 November 2022</span>
</div>
<span class="hide-accessible">
19 November 2021
to
19 November 2022
</span>
</div>
<div class="event-card__time">
<span aria-hidden="true">
1:00 – 2:00pm
</span>
<span class="hide-accessible">
1:00 to 2:00pm
</span>
</div>
</div>
</div>
</div>
.events-cards {
box-sizing: border-box;
@include media(">=uol-media-m") {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
margin: 0 -#{$spacing-2};
}
@include media(">=uol-media-l") {
margin: 0 -#{$spacing-3};
}
@include media(">=uol-media-xl") {
margin: 0 -#{$spacing-4};
}
}
.event-card-outer {
box-sizing: border-box;
width: 100%;
@include media(">=uol-media-m") {
width: 50%;
padding: 0 $spacing-2;
}
@include media(">=uol-media-l") {
padding: 0 $spacing-3;
}
@include media(">=uol-media-xl") {
width: 25%;
padding: 0 $spacing-4;
}
.uol-side-nav-container--populated + .uol-homepage-content & {
@include media(">=uol-media-l") {
width: 50%;
}
@include media(">=uol-media-xl") {
width: calc(100% / 3);
}
}
}
.event-card {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
position: relative;
box-sizing: border-box;
border-top: 2px solid $color-brand;
padding: $spacing-4 0 $spacing-6 0;
height: 100%;
&:focus-within {
background-color: $color-brand--faded;
}
}
.event-card__title {
@extend .uol-typography-heading-5;
width: 100%;
margin: $spacing-2 0 $spacing-1;
}
.event-card__link {
text-decoration: none;
&::after {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.event-card:focus-within &,
&:hover,
&:focus {
text-decoration: underline;
text-decoration-color: $color-brand--bright;
}
}
.event-card__dates {
order: -1;
margin-left: 2.25rem;
margin-top: 0.75rem;
@include media("<=uol-media-m") {
width: 100%;
}
@include media(">=uol-media-m") {
margin-left: 3rem;
margin-top: 1.5rem;
}
@include media(">=uol-media-l") {
margin-left: 3.5rem;
margin-top: 1.875rem;
}
}
.event-card__dates,
.event-card__time {
@extend .uol-typography-paragraph-small;
font-weight: $font-weight-medium--sans-serif;
font-variant-numeric: lining-nums;
}
.event-card__time {
width: 100%;
}
.event-card__date__end-date {
white-space: nowrap;
}
.event-card__date__start-date__day {
@extend .uol-typography-heading-1;
position: absolute;
left: 0;
top: $spacing-4;
font-variant-numeric: lining-nums;
}
{
"events": [
{
"title": "The Cottingley Fairies: A Study in Deception",
"link": "/some-event-link",
"start": "2021-07-19",
"end": "2021-07-19"
},
{
"title": "Creating climate-resilient agri-food systems in sub-Saharan Africa",
"link": "/some-event-link-2",
"start": "2021-07-25 11:00",
"end": "2021-08-25 16:30"
},
{
"title": "Global Food and Environment Institute symposium",
"link": "/some-event-link-3",
"start": "2021-10-10 13:00",
"end": "2022-12-09 15:30"
},
{
"title": "Undergraduate Virtual Open Days",
"link": "/some-event-link-4",
"start": "2021-11-19 13:00",
"end": "2022-11-19 14:00"
}
]
}