From 0b2d71d7699be7fa1f8bf21ac575b354a2f2dda9 Mon Sep 17 00:00:00 2001
From: Giulia Ghisini <51911425+giuliaghisini@users.noreply.github.com>
Date: Fri, 12 Jul 2024 12:31:39 +0200
Subject: [PATCH] fix: view dates for Events in Listing image template (#717)
---
.../Blocks/Listing/Commons/CardCalendar.jsx | 108 +++++++++++++++---
theme/ItaliaTheme/Components/_card.scss | 88 ++++++++++++++
theme/ItaliaTheme/Views/_common.scss | 72 ------------
theme/_mixins.scss | 7 ++
theme/site.scss | 2 +
5 files changed, 186 insertions(+), 91 deletions(-)
create mode 100644 theme/ItaliaTheme/Components/_card.scss
create mode 100644 theme/_mixins.scss
diff --git a/src/components/ItaliaTheme/Blocks/Listing/Commons/CardCalendar.jsx b/src/components/ItaliaTheme/Blocks/Listing/Commons/CardCalendar.jsx
index fcbc4dbfa..f5c6cfa91 100644
--- a/src/components/ItaliaTheme/Blocks/Listing/Commons/CardCalendar.jsx
+++ b/src/components/ItaliaTheme/Blocks/Listing/Commons/CardCalendar.jsx
@@ -1,7 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import { useIntl, defineMessages } from 'react-intl';
-
+import cx from 'classnames';
import {
viewDate,
getRealStartAndEndWithRecurrence,
@@ -34,48 +34,118 @@ export const CardCalendar = ({ start, end, recurrence, rrule }) => {
intl,
);
if ((_start && _end) || recurrenceDates) {
- if (!recurrenceDates && _start.isSame(_end, 'day')) {
- return (
-
- {_start.format('D')}
- {_end.format('MMMM')}
-
- );
+ if (!recurrenceDates) {
+ if (_start.isSame(_end, 'day')) {
+ return (
+
+ {_start.format('D')}
+ {_end.format('MMMM')}
+
+ );
+ } else if (!_start.isSame(_end, 'year')) {
+ return (
+
+
+
+
+ {intl.formatMessage(messages.from)}
+
+ {_start.format('DD/MM/YY')}
+
+
+
+ {intl.formatMessage(messages.to)}
+
+ {_end.format('DD/MM/YY')}
+
+
+
+ );
+ } else {
+ return (
+
+
+
+
+ {intl.formatMessage(messages.from)}
+
+ {_start.format('DD/MM')}
+
+
+
+ {intl.formatMessage(messages.to)}
+
+ {_end.format('DD/MM')}
+
+
+
+ );
+ }
} else if (recurrenceDates) {
+ let dateFormat = 'DD/MM';
+ if (
+ !recurrenceDates?.recurrenceStart?.isSame(
+ recurrenceDates?.recurrenceEnd,
+ 'year',
+ )
+ )
+ dateFormat = 'DD/MM/YY';
return (
-
-
-
+
+
+
{intl.formatMessage(messages.from)}
- {recurrenceDates.recurrenceStart?.format('DD/MM')}
+ {recurrenceDates.recurrenceStart?.format(dateFormat)}
-
-
+
+
{intl.formatMessage(messages.to)}
- {recurrenceDates?.recurrenceEnd?.format('DD/MM')}
+ {recurrenceDates?.recurrenceEnd?.format(dateFormat)}
);
- } else {
+ } else if (_start.format('M') === _end.format('M')) {
return (
-
+ {_start.format('D')}{' '}
+ -{' '}
+ {_end.format('D')}
+
+
+ {_end.format('MMM')}
+
+
+
+ );
+ } else {
+ return (
+
+
+
+
{intl.formatMessage(messages.from)}
{_start.format('DD/MM')}
-
-
+
+
{intl.formatMessage(messages.to)}
{_end.format('DD/MM')}
diff --git a/theme/ItaliaTheme/Components/_card.scss b/theme/ItaliaTheme/Components/_card.scss
new file mode 100644
index 000000000..45ef7e9e4
--- /dev/null
+++ b/theme/ItaliaTheme/Components/_card.scss
@@ -0,0 +1,88 @@
+.public-ui {
+ .card-title {
+ margin: 0 !important;
+ margin-bottom: 1rem !important;
+ line-height: 1em;
+
+ a {
+ color: $primary;
+ font-size: 1.125rem;
+ line-height: 1.625rem;
+ }
+ }
+
+ .genericcard {
+ .card-title {
+ margin: 0 !important;
+ margin-bottom: 0.625rem !important;
+ line-height: 1em;
+
+ a {
+ color: $primary;
+ font-size: 1.125rem;
+ line-height: 1.625rem;
+ }
+ }
+ }
+
+ .card-wrapper.card-teaser-wrapper > .card-teaser {
+ &.attachment {
+ flex-wrap: nowrap;
+
+ .card-title {
+ a {
+ font-size: 1rem;
+ }
+ }
+ }
+
+ .card-body {
+ .category-top {
+ hyphens: auto;
+ }
+ }
+ }
+
+ .card.bigborder {
+ border: 1px solid #d9dadb;
+ border-left-width: 10px !important;
+ }
+}
+
+.custom-calendar-card {
+ .card-calendar.extended {
+ width: 100px;
+
+ .card-date .date-label {
+ @include rem-size(font-size, 16);
+ font-weight: 600;
+
+ + .date {
+ @include rem-size(font-size, 20);
+ }
+ }
+ }
+
+ .card-calendar {
+ .card-date {
+ .date {
+ font-family: $font-family-sans-serif;
+ font-size: 1.3rem;
+ font-weight: 700;
+ line-height: 1.4rem;
+
+ &.day {
+ @include rem-size(font-size, 28);
+ @include rem-size(line-height, 28);
+ }
+
+ &.month {
+ font-weight: 600;
+ text-transform: capitalize;
+ @include rem-size(font-size, 16);
+ @include rem-size(line-height, 21.1);
+ }
+ }
+ }
+ }
+}
diff --git a/theme/ItaliaTheme/Views/_common.scss b/theme/ItaliaTheme/Views/_common.scss
index fccca617d..c29da942e 100644
--- a/theme/ItaliaTheme/Views/_common.scss
+++ b/theme/ItaliaTheme/Views/_common.scss
@@ -103,11 +103,6 @@ h6 {
}
.public-ui {
- .card.bigborder {
- border: 1px solid #d9dadb;
- border-left-width: 10px !important;
- }
-
.link-esterni {
.card-title {
border-bottom: 1px solid $neutral-1-a2;
@@ -119,32 +114,6 @@ h6 {
font-size: 1.4rem;
}
- .card-title {
- margin: 0 !important;
- margin-bottom: 1rem !important;
- line-height: 1em;
-
- a {
- color: $primary;
- font-size: 1.125rem;
- line-height: 1.625rem;
- }
- }
-
- .genericcard {
- .card-title {
- margin: 0 !important;
- margin-bottom: 0.625rem !important;
- line-height: 1em;
-
- a {
- color: $primary;
- font-size: 1.125rem;
- line-height: 1.625rem;
- }
- }
- }
-
.link-list-wrapper {
ul {
li {
@@ -251,47 +220,6 @@ div.sticky-wrapper {
}
}
-.card-wrapper {
- .custom-calendar-card {
- .card-calendar {
- width: 6.4rem;
- text-align: left;
-
- .date-label {
- width: 1.4rem;
- font-family: $font-family-monospace;
- font-size: 0.7rem;
- font-weight: 500;
- text-align: center;
- text-transform: lowercase;
- }
-
- .date {
- font-family: $font-family-monospace;
- font-size: 1.3rem;
- font-weight: 200;
- }
- }
- }
-}
-
-.public-ui .card-wrapper.card-teaser-wrapper > .card-teaser {
- &.attachment {
- flex-wrap: nowrap;
-
- .card-title {
- a {
- font-size: 1rem;
- }
- }
- }
- .card-body {
- .category-top {
- hyphens: auto;
- }
- }
-}
-
.icon-argument-container {
display: flex;
diff --git a/theme/_mixins.scss b/theme/_mixins.scss
new file mode 100644
index 000000000..afb249093
--- /dev/null
+++ b/theme/_mixins.scss
@@ -0,0 +1,7 @@
+@mixin rem-size($key, $value) {
+ #{$key}: calc($value / 18) + rem;
+}
+
+@mixin margin-size($key, $value) {
+ #{$key}: calc($value / 18) + em;
+}
diff --git a/theme/site.scss b/theme/site.scss
index 5bed190b0..f81c1892a 100644
--- a/theme/site.scss
+++ b/theme/site.scss
@@ -1,6 +1,7 @@
@import 'site-variables';
@import 'bootstrap-override/bootstrap-italia-site';
@import 'cms-ui';
+@import 'mixins';
@import 'extras/blocks';
@import 'extras/sidebar';
@import 'extras/toolbar';
@@ -25,6 +26,7 @@
@import 'ItaliaTheme/Addons/customerSatisfaction';
@import 'ItaliaTheme/Addons/volto-gdpr-privacy';
@import 'ItaliaTheme/Components/unauthorized';
+@import 'ItaliaTheme/Components/card';
@import 'ItaliaTheme/Components/parentSiteMenu';
@import 'ItaliaTheme/Components/tertiaryMenu';
@import 'ItaliaTheme/Components/subsiteHeader';