<div class="c-check-in">
<div class="c-check-in__wrapper">
<div class="c-check-in__summary">
<div class="c-check-in__product">
<img src="/images/svgs/p1.svg" alt="Parcheggio P1" class="c-check-in__product-img">
<div class="c-check-in__product-info">
<a href="#" class="c-link c-link--spaceless">
Mappa
<svg class="c-icon c-icon--16">
<use xlink:href="#ic_open_in_new_24px"></use>
</svg></a> <button type="button" class="c-button c-button--as-link js-fr-dialogmodal-open" aria-label="Apri la modale per consultare la mappa del parcheggio" aria-controls="dialog-p1-info">
Info
<svg class="c-icon--16">
<use xlink:href="#ic-info-serif"></use>
</svg>
</button>
</div>
</div>
<div class="c-check-in__price">
<p class="initial-price">40,00 €</p>
<p class="final-price">20,00 €</p>
</div>
<div class="c-check-in__details">
<div class="block-date">
<div class="block-date__item">
<p><strong>Entrata</strong></p>
<p class="text-value">Dal <strong>15/03/2025</strong></p>
<p class="text-value">ore <strong>9:30</strong></p>
</div>
<div class="block-date__item">
<p><strong>Uscita</strong></p>
<p class="text-value">Al <strong>16/03/2025</strong></p>
<p class="text-value">ore <strong>19:30</strong></p>
</div>
</div>
</div>
<div class="c-check-in__cta">
<button type="button" class="c-button c-button--adding btn-assign js-btn-checkin-panel-open">
Intesta parcheggio
</button> <button type="button" class="c-button c-button--ghost btn-delete js-fr-dialogmodal-open" aria-label="Elimina" aria-controls="dialog-parking-item-deletion">
<span>Elimina</span>
<svg class="c-icon--16">
<use xlink:href="#ic-trash"></use>
</svg>
</button>
</div>
</div>
<div class="c-check-in__panel js-checkin-panel">
<div class="c-check-in-form">
<div grid="grid" class="c-form c-form--label-bottom-less">
<div grid="6@md">
<label for="name-text-field" class="" aria-label="">
Nome <span class="required-marker" aria-hidden="true">*</span>
<input id="name-text-field" type="text" class="" placeholder="" value="" aria-describedby="name-text-note">
<p class="c-field__note " id="name-text-note">
Inserisci il nome dell’intestatario della prenotazione
</p>
</label>
</div>
<div grid="6@md">
<label for="surname-text-field" class="" aria-label="">
Cognome <span class="required-marker" aria-hidden="true">*</span>
<input id="surname-text-field" type="text" class="" placeholder="" value="" aria-describedby="surname-text-note">
<p class="c-field__note " id="surname-text-note">
Inserisci il cognome dell’intestatario della prenotazione
</p>
</label>
</div>
<div grid="6@md">
<label for="phone-text-field" class="" aria-label="">
Telefono
<input id="phone-text-field" type="tel" class="" placeholder="" value="" aria-describedby="phone-text-note">
<p class="c-field__note " id="phone-text-note">
Inserisci il numero di telefono sul quale sarà possibile contattarti
</p>
</label>
</div>
<div grid="6@md">
<label for="email-text-field" class="" aria-label="">
Email
<input id="email-text-field" type="email" class="" placeholder="" value="" aria-describedby="email-text-note">
<p class="c-field__note " id="email-text-note">
Inserisci l'indirizzo email sul quale sarà possibile contattarti
</p>
</label>
<div class="u-mt-space-8"><input type="checkbox" id="send-confirmation-email" name="send-confirmation-email" class="u-visuallyhidden " role="group" aria-label="send-confirmation-email">
<label for="send-confirmation-email" class="">
Invia a questa mail la conferma della prenotazione
</label>
</div>
</div>
<div grid="6@md">
<label for="license-plate-field" class="" aria-label="">
Targa
<div class="input-license-plate">
<input id="license-plate-field" type="text" class="input-license-plate" placeholder="" value="" aria-describedby="license-plate-note">
</div>
<div class="c-field__note " id="license-plate-note">
La targa deve rispettare lo <button type="button" class="c-button c-button--as-link js-fr-dialogmodal-open" aria-controls="dialog-license-plate-info"><strong>standard europeo</strong></button> (es. AA000AA)
</div>
</label>
<div class="c-dialog js-fr-dialogmodal " id="dialog-license-plate-info">
<div class="c-dialog__inner js-fr-dialogmodal-modal" aria-labelledby="dialog-license-plate-info-title">
<div role="document">
<p class="c-dialog__title" id="dialog-license-plate-info-title" aria-hidden="true">
La targa deve rispettare lo standard europeo
</p>
<p><strong>La targa deve rispettare lo standard europeo</strong></p>
<p>Il formato standard per le targhe automobilistiche europee include una striscia blu sul lato sinistro che mostra il simbolo dell'UE (un cerchio di 12 stelle) e il codice del paese dello stato membro. Il resto della targa presenta una serie di caratteri unici per ogni autoveicolo, con questi standard:</p>
<ul class='c-list--bulleted u-mt-space-8'>
<li>lunghezza minima 5</li>
<li>lunghezza massima 10</li>
<li>numeri 0-9</li>
<li>lettere A-Z</li>
</ul>
<button type="button" class="c-dialog__close js-fr-dialogmodal-close" aria-label="Chiudi la modale">
<svg class="c-icon c-icon--32">
<use xlink:href="#ic_close_black_24px"></use>
</svg> </button>
</div>
</div>
</div>
</div>
</div>
<div class="c-check-in-form__footer">
<div class="c-check-in-form__actions">
<button type="button" class="c-button c-button--submit">
Conferma
</button> <button type="button" class="c-button c-button--ghost js-btn-checkin-panel-close">
Annulla
</button>
</div>
</div>
</div>
</div>
</div>
<div class="c-dialog js-fr-dialogmodal c-dialog--small" id="dialog-parking-item-deletion">
<div class="c-dialog__inner js-fr-dialogmodal-modal" aria-labelledby="dialog-parking-item-deletion-dialog-title">
<div role="document">
<p class="c-dialog__title" id="dialog-parking-item-deletion-dialog-title" aria-hidden="true">Vuoi eliminare il parcheggio dal carrello?</p>
<div class="c-dialog__text">
Questa operazione non può essere annullata
</div>
<div class="c-dialog__actions">
<button type="button" class="c-button c-button--danger">
Elimina parcheggio
</button> <button type="button" class="c-button c-button--ghost">
Annulla
</button>
</div>
<button type="button" class="c-dialog__close js-fr-dialogmodal-close" aria-label="Chiudi la modale">
<svg class="c-icon c-icon--32">
<use xlink:href="#ic_close_black_24px"></use>
</svg> </button>
</div>
</div>
</div>
</div>
<div class="c-check-in{{#if modifier}} {{modifier}}{{/if}}">
<div class="c-check-in__wrapper">
{{!-- SUMMARY --}}
<div class="c-check-in__summary">
{{!-- Product --}}
<div class="c-check-in__product">
<img src="{{ product.img.src }}" alt="{{ product.img.alt }}" class="c-check-in__product-img">
<div class="c-check-in__product-info">
{{> @link product.lookOnMap }}
{{> @button product.lookOnDetails }}
</div>
</div>
{{!-- End Product --}}
{{!-- Price --}}
<div class="c-check-in__price">
<p class="initial-price">{{ price.initial }}</p>
<p class="final-price">{{ price.final }}</p>
</div>
{{!-- End Price --}}
{{!-- Details --}}
<div class="c-check-in__details">
<div class="block-date">
{{#each date}}
<div class="block-date__item">
<p><strong>{{ label }}</strong></p>
<p class="text-value">{{{ day }}}</p>
<p class="text-value">{{{ time }}}</p>
</div>
{{/each}}
</div>
</div>
{{!-- End Details --}}
{{!-- Cta --}}
<div class="c-check-in__cta">
{{#each cta}}
{{> @button }}
{{/each}}
</div>
{{!-- End Cta --}}
</div>
{{!-- END SUMMARY --}}
{{!-- PANEL --}}
<div class="c-check-in__panel js-checkin-panel">
{{ render "@check-in-form" check-in-form merge=true }}
</div>
{{!-- END PANEL --}}
</div>
{{!-- FOLD --}}
{{#if has-fold}}
<div class="c-check-in__fold">
{{ render "@fold" fold merge=true }}
</div>
{{/if}}
{{!-- END FOLD --}}
{{> @dialog--deletion dialog-parking-item-deletion }}
</div>
{
"product": {
"img": {
"src": "/images/svgs/p1.svg",
"alt": "Parcheggio P1"
},
"lookOnMap": {
"modifier": "c-link c-link--spaceless",
"text": "Mappa",
"url": "#",
"svg": {
"symbol": "ic_open_in_new_24px",
"class": "c-icon c-icon--16"
}
},
"lookOnDetails": {
"type": "button",
"text": "Info",
"modifier": "c-button--as-link js-fr-dialogmodal-open",
"opens-dialog": "dialog-p1-info",
"aria-label": "Apri la modale per consultare la mappa del parcheggio",
"svg": {
"symbol": "ic-info-serif",
"class": "c-icon--16"
}
}
},
"price": {
"initial": "40,00 €",
"final": "20,00 €"
},
"date": [
{
"label": "Entrata",
"day": "Dal <strong>15/03/2025</strong>",
"time": "ore <strong>9:30</strong>"
},
{
"label": "Uscita",
"day": "Al <strong>16/03/2025</strong>",
"time": "ore <strong>19:30</strong>"
}
],
"cta": [
{
"type": "button",
"text": "Intesta parcheggio",
"modifier": "c-button--adding btn-assign js-btn-checkin-panel-open"
},
{
"type": "button",
"text": "<span>Elimina</span>",
"aria-label": "Elimina",
"modifier": "c-button--ghost btn-delete js-fr-dialogmodal-open",
"opens-dialog": "dialog-parking-item-deletion",
"svg": {
"symbol": "ic-trash",
"class": "c-icon--16"
}
}
],
"label-assigned": {
"text": "Intestato",
"modifier": "c-rounded-label--positive c-rounded-label--small",
"svg": {
"symbol": "ic_check_black_24px",
"class": "c-icon c-icon--16"
}
},
"btn-edit-data": {
"type": "button",
"text": "Modifica dati",
"modifier": "c-button--as-link btn-reset-style js-btn-checkin-panel-open"
},
"dialog-parking-item-deletion": {
"modifier": "c-dialog--small",
"id": "dialog-parking-item-deletion",
"dialog-labelledby": "dialog-title",
"title": "Vuoi eliminare il parcheggio dal carrello?",
"body-text": "Questa operazione non può essere annullata",
"actions": [
{
"name": "default",
"type": "button",
"text": "Elimina parcheggio",
"modifier": "c-button--danger"
},
{
"name": "default",
"type": "button",
"text": "Annulla",
"modifier": "c-button--ghost"
}
]
}
}
.c-check-in {
@include shadow(medium);
border-radius: remify(20px);
}
.c-check-in__wrapper {
background-color: secondary(basic-white, 100);
border: remify(1px) solid primary(night, 20);
border-radius: remify(20px);
padding: remify(24px) remify(16px);
}
.c-check-in:has(.c-check-in__fold) {
.c-check-in__wrapper {
border-radius: remify(20px) remify(20px) 0 0;
}
}
.c-check-in__summary {
display: grid;
gap: remify(24px) remify(16px);
grid-template-areas:
"product price"
"details details"
"cta cta";
@include min-screen(remify(1180px)) {
grid-template-areas: "product details price cta";
grid-template-columns: max-content 43% auto remify(260px);
gap: remify(24px);
}
}
.c-check-in__product {
grid-area: product;
display: flex;
gap: remify(16px);
align-items: center;
}
.c-check-in__product-info {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: remify(12px);
@include font-scale(level-1-5)
}
.c-check-in__price {
grid-area: price;
display: flex;
flex-direction: column;
align-items: flex-end;
justify-content: center;
.initial-price {
@include font-scale(level-2);
color: primary(night, 60);
text-decoration: line-through;
}
.final-price {
@include font-scale(level-4, bold);
color: secondary(text, 100);
}
}
.c-check-in__details {
grid-area: details;
display: flex;
flex-direction: column;
gap: remify(24px);
color: secondary(text, 100);
// @include min-screen(bp(tablet)) {
// flex-direction: row;
// }
@include min-screen(remify(1180px)) {
gap: remify(40px);
flex-direction: row;
}
.block-date {
display: flex;
justify-content: space-between;
gap: remify(16px);
position: relative;
// @include min-screen(bp(tablet)) {
// gap: remify(80px);
// }
@include min-screen(remify(1180px)) {
gap: remify(64px);
justify-content: initial;
}
&:after {
content: "";
display: inline-block;
--s: 1px;
height: 100%;
max-height: remify(70px);
aspect-ratio: 1 / 5;
clip-path: polygon(0 0, var(--s) 0, 100% 50%, var(--s) 100%, 0 100%, calc(100% - var(--s)) 50%);
background: primary(sky, 60);
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
}
}
// .block-booking-data {
// @include min-screen(bp(tablet)) {
// flex: 1 0 auto;
// }
// }
.text-value {
white-space: nowrap;
}
.c-pictogram__icon,
.c-pictogram__text {
color: secondary(text, 100);
}
}
.c-check-in__cta {
grid-area: cta;
display: flex;
align-items: center;
gap: remify(16px);
@include min-screen(remify(1180px)) {
justify-content: flex-end;
}
.btn-delete,
.btn-assign {
padding: remify(8px) remify(12px);
border-radius: remify(8px);
display: flex;
align-items: center;
justify-content: center;
gap: remify(8px);
@include font-scale(level-1, bold);
flex: 1;
@include min-screen(remify(1180px)) {
@include font-scale(level-2, semibold);
flex: initial;
border-radius: remify(12px);
padding: remify(12px) remify(24px);
}
}
.btn-delete {
span {
@include min-screen(remify(1180px)) {
display: none;
}
}
@include min-screen(remify(1180px)) {
width: remify(48px);
aspect-ratio: 1 / 1;
padding: 0;
}
}
.c-rounded-label {
margin: 0;
}
}
.c-check-in__product-img {
width: remify(58px);
}
.c-check-in .btn-reset-style {
&:not(.c-button--disabled) {
display: flex;
flex-direction: row-reverse;
align-items: center;
gap: remify(4px);
color: secondary(text, 100);
text-align: left;
svg {
margin: 0;
}
}
}
.c-check-in__panel {
display: none;
margin-top: remify(16px);
}
/*------------------------------------*\
Assigned modifier
\*------------------------------------*/
.c-check-in--assigned {
.c-check-in__cta {
@include max-screen(remify(1180px)) {
justify-content: space-between;
align-items: flex-end;
}
}
.assigned {
display: flex;
gap: remify(8px);
flex-wrap: wrap;
@include min-screen(remify(1180px)) {
flex-direction: column;
align-items: center;
}
}
}
/*------------------------------------*\
Error modifier
\*------------------------------------*/
.c-check-in--error {
.c-check-in__wrapper {
border-color: status(negative);
}
}
/*------------------------------------*\
Opened modifier
\*------------------------------------*/
.c-check-in--opened {
.c-check-in__panel {
display: block;
}
}
/*------------------------------------*\
Static modifier
\*------------------------------------*/
.c-check-in--static {
.c-check-in__summary {
grid-template-areas:
"product price"
"details details"
"cta cta";
@include min-screen(remify(1180px)) {
grid-template-areas: "product details price";
grid-template-columns: remify(60px) auto max-content;
}
}
.booking-data-container {
display: flex;
flex-wrap: wrap;
gap: remify(24px);
@include min-screen(remify(1180px)) {
gap: remify(40px);
}
}
.block-booking-data {
flex: 1 0 auto;
}
.assigned {
margin-bottom: remify(8px);
}
}
document.addEventListener('DOMContentLoaded', function() {
// Select all check-in components in the page
const checkInComponents = document.querySelectorAll('.c-check-in');
checkInComponents.forEach(component => {
// Find buttons and details div within this specific component
const openButton = component.querySelector('.js-btn-checkin-panel-open');
const closeButton = component.querySelector('.js-btn-checkin-panel-close');
const detailsDiv = component.querySelector('.js-checkin-panel');
if (openButton && closeButton && detailsDiv) {
// Handle click on open button
openButton.addEventListener('click', function() {
detailsDiv.style.display = 'block';
openButton.disabled = true;
openButton.classList.add('c-button--disabled');
});
// Handle click on close button
closeButton.addEventListener('click', function() {
detailsDiv.style.display = 'none';
openButton.disabled = false;
openButton.classList.remove('c-button--disabled');
});
}
});
});
No notes defined.