diff options
| author | polo <ordipolo@gmx.fr> | 2025-07-19 13:15:12 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-07-19 13:15:12 +0200 |
| commit | 976eaa544322be18c9feb1a165b9645533af4538 (patch) | |
| tree | 39ce8d68222b1b116390276f5b4751b7913b42e8 /public | |
| parent | 8338cbe662018eb7b7ec01cbbd21531aca1d9b31 (diff) | |
| download | cms-976eaa544322be18c9feb1a165b9645533af4538.tar.gz cms-976eaa544322be18c9feb1a165b9645533af4538.tar.bz2 cms-976eaa544322be18c9feb1a165b9645533af4538.zip | |
amélioration calendrier écran tactile, selection sans touché prolongé, versionedFileURL() dispo de partout
Diffstat (limited to 'public')
| -rw-r--r-- | public/css/calendar.css | 23 | ||||
| -rw-r--r-- | public/js/calendar.js | 18 | ||||
| -rw-r--r-- | public/js/calendar_admin.js | 2 |
3 files changed, 34 insertions, 9 deletions
diff --git a/public/css/calendar.css b/public/css/calendar.css index 1cfb0fd..314a5ad 100644 --- a/public/css/calendar.css +++ b/public/css/calendar.css | |||
| @@ -1,7 +1,10 @@ | |||
| 1 | /* !important est nécessaire pour écraser le CSS inséré par le javascript de fullcalendar */ | ||
| 2 | |||
| 1 | .event{ | 3 | .event{ |
| 2 | border: 2px double; | 4 | border: 2px double; |
| 3 | border-radius: 5px; | 5 | border-radius: 5px; |
| 4 | width: max-content; | 6 | width: max-content; |
| 7 | max-width: 250px; | ||
| 5 | padding: 5px; | 8 | padding: 5px; |
| 6 | } | 9 | } |
| 7 | #calendar_zone{ | 10 | #calendar_zone{ |
| @@ -13,16 +16,17 @@ | |||
| 13 | #calendar{ | 16 | #calendar{ |
| 14 | width: 1165px; /* on enlève le "gap" */ | 17 | width: 1165px; /* on enlève le "gap" */ |
| 15 | } | 18 | } |
| 19 | #event_modal{} | ||
| 16 | .event_title_box{ | 20 | .event_title_box{ |
| 17 | display: flex; | 21 | display: flex; |
| 18 | align-items: center; | 22 | align-items: center; |
| 19 | justify-content: space-between; | 23 | justify-content: space-between; |
| 20 | } | 24 | } |
| 21 | .event_close_button{ | 25 | .event_close_button{ |
| 22 | height: fit-content; | 26 | /*height: fit-content;*/ |
| 23 | } | 27 | } |
| 24 | .fc-toolbar-title{ | 28 | .fc-toolbar-title{ |
| 25 | font-size: x-large !important; | 29 | /*font-size: x-large !important;*/ |
| 26 | } | 30 | } |
| 27 | .fc-button{ | 31 | .fc-button{ |
| 28 | padding: 0.2em 0.4em !important; | 32 | padding: 0.2em 0.4em !important; |
| @@ -60,12 +64,21 @@ td .fc-timegrid-axis{ | |||
| 60 | padding: 0; | 64 | padding: 0; |
| 61 | } | 65 | } |
| 62 | .fc-toolbar-title{ | 66 | .fc-toolbar-title{ |
| 63 | font-size: large !important; | 67 | /*font-size: large !important;*/ |
| 68 | } | ||
| 69 | .fc-header-toolbar{ | ||
| 70 | font-size: smaller; | ||
| 71 | } | ||
| 72 | h3, p, .event > button{ | ||
| 73 | font-size: smaller; | ||
| 64 | } | 74 | } |
| 65 | } | 75 | } |
| 66 | @media screen and (max-width: 650px){ | 76 | @media screen and (max-width: 650px){ |
| 67 | .fc-toolbar-chunk{ | 77 | .fc-header-toolbar{ |
| 68 | font-size: smaller; | 78 | font-size: small; |
| 79 | } | ||
| 80 | .fc-toolbar-title{ | ||
| 81 | font-size: 1.5em !important; /* au lieu de 1.75em */ | ||
| 69 | } | 82 | } |
| 70 | } | 83 | } |
| 71 | @media screen and (max-width: 550px){ | 84 | @media screen and (max-width: 550px){ |
diff --git a/public/js/calendar.js b/public/js/calendar.js index 7450a91..2275c10 100644 --- a/public/js/calendar.js +++ b/public/js/calendar.js | |||
| @@ -29,6 +29,8 @@ document.addEventListener('DOMContentLoaded', function(){ | |||
| 29 | stickyHeaderDates: true, // garder les en-tête de colonnes lors du scroll | 29 | stickyHeaderDates: true, // garder les en-tête de colonnes lors du scroll |
| 30 | fixedWeekCount: false, // avec false, affiche 4, 5 ou 6 semaines selon le mois | 30 | fixedWeekCount: false, // avec false, affiche 4, 5 ou 6 semaines selon le mois |
| 31 | selectable: true, // sélection de jours multiples | 31 | selectable: true, // sélection de jours multiples |
| 32 | longPressDelay: 0, /* par défaut sur mobile, select est déclenché avec un appui d'une seconde, | ||
| 33 | chatgpt déconseille 0 par risque de conflit entre selection et scrolling, mettre plutôt 200 ou 300ms */ | ||
| 32 | navLinks: true, // numéros de jour et de semaines clicables | 34 | navLinks: true, // numéros de jour et de semaines clicables |
| 33 | 35 | ||
| 34 | // vue semaine | 36 | // vue semaine |
| @@ -43,6 +45,14 @@ document.addEventListener('DOMContentLoaded', function(){ | |||
| 43 | selected_start_string = info.startStr; // variable "globale" | 45 | selected_start_string = info.startStr; // variable "globale" |
| 44 | hideModal(); | 46 | hideModal(); |
| 45 | }, | 47 | }, |
| 48 | // méthode alternative à longPressDelay: 0 pour obtenir une sélection d'un simple "tap" sur écran tactile (mettre le if inverse dans select) | ||
| 49 | /*dateClick: function(info) { | ||
| 50 | if (window.matchMedia('(pointer: coarse)').matches) { | ||
| 51 | // utile sur mobile/tablette : déclenche sur un tap | ||
| 52 | console.log('dateClick', info.dateStr); | ||
| 53 | calendar.select(info.date, info.date); // hack permettant de sélectionner une journée seule uniquement | ||
| 54 | } | ||
| 55 | },*/ | ||
| 46 | //unselect: function(event, view){}, | 56 | //unselect: function(event, view){}, |
| 47 | 57 | ||
| 48 | eventClick: function(info){ | 58 | eventClick: function(info){ |
| @@ -72,14 +82,14 @@ document.addEventListener('DOMContentLoaded', function(){ | |||
| 72 | <h3>` + info.event.title + `</h3> | 82 | <h3>` + info.event.title + `</h3> |
| 73 | <p><i>` + info.event.extendedProps.description + `</i></p>`; | 83 | <p><i>` + info.event.extendedProps.description + `</i></p>`; |
| 74 | if(checked && (formated_start === formated_end)){ // affichage simplifié évènement d'un jour | 84 | if(checked && (formated_start === formated_end)){ // affichage simplifié évènement d'un jour |
| 75 | aside_content = aside_content + `<p>le ` + formated_start + `</p> | 85 | aside_content = aside_content + `<p>le ` + formated_start + `</p>`; |
| 76 | </div>`; | ||
| 77 | } | 86 | } |
| 78 | else{ | 87 | else{ |
| 79 | aside_content = aside_content + `<p>du ` + formated_start + `</p> | 88 | aside_content = aside_content + `<p>du ` + formated_start + `</p> |
| 80 | <p>au ` + formated_end + `</p> | 89 | <p>au ` + formated_end + `</p>`; |
| 81 | </div>`; | ||
| 82 | } | 90 | } |
| 91 | aside_content += `<button class="event_close_button">Fermer</button> | ||
| 92 | </div>`; | ||
| 83 | 93 | ||
| 84 | aside.innerHTML = aside_content; | 94 | aside.innerHTML = aside_content; |
| 85 | calendar.updateSize(); | 95 | calendar.updateSize(); |
diff --git a/public/js/calendar_admin.js b/public/js/calendar_admin.js index 76a1ce9..7f167a4 100644 --- a/public/js/calendar_admin.js +++ b/public/js/calendar_admin.js | |||
| @@ -30,6 +30,8 @@ document.addEventListener('DOMContentLoaded', function(){ | |||
| 30 | stickyHeaderDates: true, // garder les en-tête de colonnes lors du scroll | 30 | stickyHeaderDates: true, // garder les en-tête de colonnes lors du scroll |
| 31 | fixedWeekCount: false, // avec false, affiche 4, 5 ou 6 semaines selon le mois | 31 | fixedWeekCount: false, // avec false, affiche 4, 5 ou 6 semaines selon le mois |
| 32 | selectable: true, // sélection de jours multiples | 32 | selectable: true, // sélection de jours multiples |
| 33 | longPressDelay: 0, /* par défaut sur mobile, select est déclenché avec un appui d'une seconde, | ||
| 34 | chatgpt déconseille 0 par risque de conflit entre selection et scrolling, mettre plutôt 200 ou 300ms */ | ||
| 33 | navLinks: true, // numéros de jour et de semaines clicables | 35 | navLinks: true, // numéros de jour et de semaines clicables |
| 34 | 36 | ||
| 35 | // vue semaine | 37 | // vue semaine |
