@@ -13,11 +13,14 @@ import airdatepickerLocaleDe from "air-datepicker/locale/de";
1313import airdatepickerLocaleEs from "air-datepicker/locale/es" ;
1414import airdatepickerLocaleNl from "air-datepicker/locale/nl" ;
1515import airdatepickerLocaleIt from "air-datepicker/locale/it" ;
16+ import airdatepickerLocaleHu from "air-datepicker/locale/hu" ;
1617import "moment/locale/de" ;
1718import "moment/locale/fr" ;
1819import "moment/locale/es" ;
1920import "moment/locale/nl" ;
2021import "moment/locale/it" ;
22+ import "moment/locale/hu" ;
23+ import "moment/locale/lv" ;
2124import QRCodeStyling from "qr-code-styling" ;
2225import { Presenter } from "./presenter" ;
2326import { Manager } from "./manager" ;
@@ -26,28 +29,53 @@ import { TourGuideClient } from "@sjmc11/tourguidejs/src/Tour";
2629window . moment = moment ;
2730
2831// Get supported locales from backend configuration or fallback to default list
29- const supportedLocales = window . claperConfig ?. supportedLocales || [ "en" , "fr" , "de" , "es" , "nl" , "it" ] ;
32+ const supportedLocales = window . claperConfig ?. supportedLocales || [
33+ "en" ,
34+ "fr" ,
35+ "de" ,
36+ "es" ,
37+ "nl" ,
38+ "it" ,
39+ "hu" ,
40+ "lv" ,
41+ ] ;
42+
43+ const airdatePickrSupportedLocales = window . claperConfig ?. supportedLocales || [
44+ "en" ,
45+ "fr" ,
46+ "de" ,
47+ "es" ,
48+ "nl" ,
49+ "it" ,
50+ "hu" ,
51+ ] ;
3052
3153var locale =
3254 document . querySelector ( "html" ) . getAttribute ( "lang" ) ||
3355 navigator . language . split ( "-" ) [ 0 ] ;
3456
57+ var airdatepickrLocale = locale ;
58+
3559if ( ! supportedLocales . includes ( locale ) ) {
3660 locale = "en" ;
3761}
62+ if ( ! airdatePickrSupportedLocales . includes ( locale ) ) {
63+ airdatepickrLocale = "en" ;
64+ }
3865
3966window . moment . locale ( "en" ) ;
4067window . moment . locale ( locale ) ;
4168window . Alpine = Alpine ;
4269Alpine . start ( ) ;
4370
44- let airdatepickerLocale = {
71+ let airdatePickrLocales = {
4572 en : airdatepickerLocaleEn ,
4673 fr : airdatepickerLocaleFr ,
4774 de : airdatepickerLocaleDe ,
4875 es : airdatepickerLocaleEs ,
4976 nl : airdatepickerLocaleNl ,
5077 it : airdatepickerLocaleIt ,
78+ hu : airdatepickerLocaleHu ,
5179} ;
5280let csrfToken = document
5381 . querySelector ( "meta[name='csrf-token']" )
@@ -70,8 +98,8 @@ Hooks.EmbeddedBanner = {
7098Hooks . TourGuide = {
7199 mounted ( ) {
72100 this . triggerDiv = document . querySelector ( this . el . dataset . btnTrigger ) ;
73- this . btnTrigger = this . triggerDiv . querySelector ( ' .open' ) ;
74- this . closeBtnTrigger = this . triggerDiv . querySelector ( ' .close' ) ;
101+ this . btnTrigger = this . triggerDiv . querySelector ( " .open" ) ;
102+ this . closeBtnTrigger = this . triggerDiv . querySelector ( " .close" ) ;
75103
76104 this . tour = new TourGuideClient ( {
77105 nextLabel : this . el . dataset . nextLabel ,
@@ -106,7 +134,7 @@ Hooks.TourGuide = {
106134 destroyed ( ) {
107135 this . btnTrigger . removeEventListener ( "click" , ( ) => {
108136 this . startTour ( ) ;
109- } ) ;
137+ } ) ;
110138 this . closeBtnTrigger . removeEventListener ( "click" , ( ) => {
111139 this . triggerDiv . classList . add ( "hidden" ) ;
112140 this . tour . finishTour ( true , this . el . dataset . group ) ;
@@ -201,26 +229,36 @@ Hooks.Scroll = {
201229Hooks . ScrollIntoDiv = {
202230 mounted ( ) {
203231 let useParent = this . el . dataset . useParent === "true" ;
204- this . scrollElement = this . el . dataset . useParent === "true" ? this . el . parentElement : this . el ;
232+ this . scrollElement =
233+ this . el . dataset . useParent === "true" ? this . el . parentElement : this . el ;
205234 this . checkIfAtBottom ( ) ;
206235 this . scrollToBottom ( true ) ;
207236 this . handleEvent ( "scroll" , ( ) => this . scrollToBottom ( ) ) ;
208237 this . scrollElement . addEventListener ( "scroll" , ( ) => this . checkIfAtBottom ( ) ) ;
209238 } ,
210239 checkIfAtBottom ( ) {
211- this . isAtBottom = this . scrollElement . scrollHeight - this . scrollElement . scrollTop - this . scrollElement . clientHeight <= 30 ;
240+ this . isAtBottom =
241+ this . scrollElement . scrollHeight -
242+ this . scrollElement . scrollTop -
243+ this . scrollElement . clientHeight <=
244+ 30 ;
212245 } ,
213246 scrollToBottom ( force = false ) {
214247 if ( force || this . isAtBottom ) {
215- this . scrollElement . scrollTo ( { top : this . scrollElement . scrollHeight , behavior : "smooth" } ) ;
248+ this . scrollElement . scrollTo ( {
249+ top : this . scrollElement . scrollHeight ,
250+ behavior : "smooth" ,
251+ } ) ;
216252 }
217253 } ,
218254 updated ( ) {
219255 this . scrollToBottom ( ) ;
220256 } ,
221257 destroyed ( ) {
222- this . scrollElement . removeEventListener ( "scroll" , ( ) => this . checkIfAtBottom ( ) ) ;
223- }
258+ this . scrollElement . removeEventListener ( "scroll" , ( ) =>
259+ this . checkIfAtBottom ( ) ,
260+ ) ;
261+ } ,
224262} ;
225263
226264Hooks . NicknamePicker = {
@@ -244,7 +282,7 @@ Hooks.NicknamePicker = {
244282 clicked ( e ) {
245283 let nickname = prompt (
246284 this . el . dataset . prompt ,
247- localStorage . getItem ( "nickname" ) || ""
285+ localStorage . getItem ( "nickname" ) || "" ,
248286 ) ;
249287
250288 if ( nickname ) {
@@ -354,7 +392,7 @@ Hooks.Pickr = {
354392 const utc = moment ( date ) . utc ( ) . format ( "YYYY-MM-DDTHH:mm:ss" ) ;
355393 utcTime . value = utc ;
356394 } ,
357- locale : airdatepickerLocale [ locale ] ,
395+ locale : airdatePickrLocales [ airdatepickrLocale ] ,
358396 } ) ;
359397 } ,
360398 updated ( ) { } ,
@@ -393,7 +431,7 @@ Hooks.OpenPresenter = {
393431 window . open (
394432 this . el . dataset . url ,
395433 "newwindow" ,
396- "width=" + window . screen . width + ",height=" + window . screen . height
434+ "width=" + window . screen . width + ",height=" + window . screen . height ,
397435 ) ;
398436 } ,
399437 mounted ( ) {
@@ -418,7 +456,12 @@ Hooks.GlobalReacts = {
418456 const container = document . createElement ( "div" ) ;
419457 container . innerHTML = svgContent ;
420458 const svgElement = container . firstChild ;
421- svgElement . classList . add ( "react-animation" , "absolute" , "transform" , "opacity-0" ) ;
459+ svgElement . classList . add (
460+ "react-animation" ,
461+ "absolute" ,
462+ "transform" ,
463+ "opacity-0" ,
464+ ) ;
422465 svgElement . classList . add ( ...this . el . className . split ( " " ) ) ;
423466 this . el . appendChild ( svgElement ) ;
424467 }
@@ -430,15 +473,17 @@ Hooks.GlobalReacts = {
430473
431474 preloadSVGs ( ) {
432475 const svgTypes = [ "heart" , "hundred" , "clap" , "raisehand" ] ;
433- svgTypes . forEach ( type => {
476+ svgTypes . forEach ( ( type ) => {
434477 fetch ( `/images/icons/${ type } .svg` )
435- . then ( response => response . text ( ) )
436- . then ( svgContent => {
478+ . then ( ( response ) => response . text ( ) )
479+ . then ( ( svgContent ) => {
437480 this . svgCache [ type ] = svgContent ;
438481 } )
439- . catch ( error => console . error ( `Error loading SVG for ${ type } :` , error ) ) ;
482+ . catch ( ( error ) =>
483+ console . error ( `Error loading SVG for ${ type } :` , error ) ,
484+ ) ;
440485 } ) ;
441- }
486+ } ,
442487} ;
443488Hooks . JoinEvent = {
444489 mounted ( ) {
@@ -630,7 +675,6 @@ window.addEventListener("phx:page-loading-stop", (info) => {
630675 topbar . hide ( ) ;
631676} ) ;
632677
633-
634678const onlineUserTemplate = function ( user ) {
635679 return `
636680 <div id="online-user">
0 commit comments