2.20 #Components.Modal Modal
Okno modalne z backdrop, grafiką (opcjonalną), tytułem, tekstem, wartością
i przyciskami (confirm/cancel). Wariant modal--points z dużą liczbą
- labelem. JS:
Modal.show({...}). Stany:.is-active,.is-dismissing. Desktop: two-column layout (grafika + body). Scroll lock:.modal-open.
Example
Czy na pewno chcesz odebrać ten voucher?
Z Twojego konta zostanie pobrane:
500 punktów
Markup: modal.html
<!-- Modal: statyczny podgląd (bez backdrop) -->
<div style="position:relative; background:#f5f5f1; padding:20px; border-radius:8px; max-width:500px;">
<div class="modal" style="position:relative; transform:none; opacity:1; max-width:100%; border-radius:8px;">
<button class="modal__close" aria-label="Zamknij"></button>
<div class="modal__body" style="order:1;">
<h2 class="modal__title">Czy na pewno chcesz odebrać ten voucher?</h2>
<div class="modal__separator"></div>
<p class="modal__text">Z Twojego konta zostanie pobrane:</p>
<p class="modal__value">500 punktów</p>
<div class="modal__actions">
<button class="btn btn-primary">Odbierz</button>
<button class="btn btn-secondary-positive">Anuluj</button>
</div>
</div>
</div>
</div>
<button class="btn btn-primary"
onclick="Modal.show({ image: '../assets/images/vouchers/voucher-decathlon.jpg', title: 'Czy na pewno chcesz odebrać ten voucher?', text: 'Z Twojego konta zostanie pobrane:', value: '500 punktów', confirmLabel: 'Odbierz', cancelLabel: 'Anuluj', onConfirm: function() { Toast.show({ title: 'Sukces!', text: 'Voucher odebrany.' }); } })">
Otwórz Modal (pełny)
</button>
<button class="btn btn-primary"
onclick="Modal.show({ image: '../assets/images/vouchers/voucher-decathlon.jpg', title: 'Gratulacje!', text: 'Twój voucher został aktywowany.', confirmLabel: 'OK' })">
Otwórz Modal (1 button)
</button>
<button class="btn btn-primary"
onclick="Modal.show({ title: 'Czy na pewno?', text: 'Tej operacji nie można cofnąć.', confirmLabel: 'Potwierdź', cancelLabel: 'Anuluj' })">
Otwórz Modal (bez grafiki)
</button>
<button class="btn btn-primary"
onclick="Modal.show({ variant: 'points', image: '../assets/images/own-it-card-big.jpg', pointsNumber: '235', pointsLabel: 'Punktów', text: 'Jan, kod został wprowadzony poprawnie!', value: '+ 15 PUNKTÓW', confirmLabel: 'Zamknij' })">
Kod poprawny
</button>
<button class="btn btn-primary"
onclick="Modal.show({ variant: 'points', image: '../assets/images/own-it-card-big.jpg', pointsNumber: '235', pointsLabel: 'Punktów', text: '<strong>Brawo!</strong><br/> Dodatkowe punkty wpadły na Twoje konto!', value: '+ 10 PUNKTÓW', confirmLabel: 'Zamknij' })">
Brawo (dodatkowe)
</button>
<button class="btn btn-primary"
onclick="Modal.show({ variant: 'points', image: '../assets/images/own-it-card-big.jpg', pointsNumber: '335', pointsLabel: 'Punktów', text: '<strong>Gratulacje!</strong><br/><br/> Twój znajomy pomyślnie zarejestrował się z&nbsp;linku polecającego, otrzymujesz punkty lojalnościowe:', value: '+ 100 PUNKTÓW', confirmLabel: 'Wyślij kolejne zaproszenie', cancelLabel: 'Zamknij' })">
Zaproszenie
</button>
<button class="btn btn-primary"
onclick="Modal.show({ image: '../assets/images/vouchers/voucher-decathlon.jpg', title: 'Gratulacje, voucher jest Twój!', text: 'Nagroda została wysłana na Twoją skrzynkę e-mail.', confirmLabel: 'Zobacz voucher' })">
Gratulacje
</button>
<button class="btn btn-primary"
onclick="Modal.show({ image: '../assets/images/vouchers/voucher-decathlon.jpg', title: 'Wykorzystałeś swój limit miesięczny', text: 'Pamiętaj, że możesz wymienić punkty na <strong>1 voucher w ciągu miesiąca</strong>.', confirmLabel: 'Zamknij' })">
Limit miesięczny
</button>
<button class="btn btn-primary"
onclick="Modal.show({ image: '../assets/images/vouchers/voucher-decathlon.jpg', title: 'Wykorzystałeś swój limit roczny', text: 'Pamiętaj, że możesz odebrać do <strong>6 voucherów w ciągu roku</strong>.', confirmLabel: 'Zamknij' })">
Limit roczny
</button>
<button class="btn btn-primary"
onclick="Modal.show({ image: '../assets/images/vouchers/voucher-decathlon.jpg', title: 'Nie masz wystarczającej ilości punktów', text: 'Rejestruj kody z paczek i zdobądź punkty, aby odebrać ten voucher.', confirmLabel: 'Dodaj nowy kod', cancelLabel: 'Anuluj' })">
Brak punktów
</button>
Source:
src/scss/components/_modal.scss, line 1