Public event page:
- Share buttons: X (Twitter), Facebook, Instagram (copy link), TikTok (copy link), copy link
- Buttons use url_encode for share URLs with event title + URL
- Instagram/TikTok copy to clipboard (no direct share URL support)
- Consistent brutal design with aria-labels
Organizer dashboard:
- Share X, Facebook, copy link buttons per event in events list
- QR code download button per event
- Route /mon-compte/evenement/{id}/qrcode: generates 400px PNG QR code via Endroid
- QR code points to public event URL, downloaded as qrcode-{slug}.png
JS module:
- assets/modules/share.js: initShare() handles data-share-copy buttons
- Copies URL to clipboard, shows checkmark for 1.5s then restores icon
- 4 tests (no buttons, copy, checkmark restore, multiple buttons)
Social icons already displayed via _social_icons.html.twig component
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
import "./app.scss"
|
|
import { initMobileMenu } from "./modules/mobile-menu.js"
|
|
import { initTabs } from "./modules/tabs.js"
|
|
import { registerEditor } from "./modules/editor.js"
|
|
import { initCookieConsent } from "./modules/cookie-consent.js"
|
|
import { initEventMap } from "./modules/event-map.js"
|
|
import { initCopyUrl } from "./modules/copy-url.js"
|
|
import { initSortable } from "./modules/sortable.js"
|
|
import { initBilletDesigner } from "./modules/billet-designer.js"
|
|
import { initCommissionCalculator } from "./modules/commission-calculator.js"
|
|
import { initCart } from "./modules/cart.js"
|
|
import { initStripePayment } from "./modules/stripe-payment.js"
|
|
import { initShare } from "./modules/share.js"
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
initMobileMenu()
|
|
initTabs()
|
|
registerEditor()
|
|
initCookieConsent()
|
|
initCopyUrl()
|
|
initEventMap()
|
|
initSortable()
|
|
initBilletDesigner()
|
|
initCommissionCalculator()
|
|
initCart()
|
|
initStripePayment()
|
|
initShare()
|
|
|
|
document.querySelectorAll('[data-confirm]').forEach(form => {
|
|
form.addEventListener('submit', (e) => {
|
|
if (!globalThis.confirm(form.dataset.confirm)) {
|
|
e.preventDefault()
|
|
}
|
|
})
|
|
})
|
|
})
|