imio.smartweb.core 1.3.1__py3-none-any.whl → 1.3.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. imio/smartweb/core/browser/controlpanel.py +25 -1
  2. imio/smartweb/core/browser/sitemap.py +15 -11
  3. imio/smartweb/core/contents/rest/base.py +4 -0
  4. imio/smartweb/core/contents/rest/campaign/endpoint.py +18 -1
  5. imio/smartweb/core/profiles/default/metadata.xml +1 -1
  6. imio/smartweb/core/profiles/default/types/imio.smartweb.SectionTimestampedPublications.xml +4 -0
  7. imio/smartweb/core/profiles/default/types.xml +1 -0
  8. imio/smartweb/core/profiles/default/workflows.xml +1 -0
  9. imio/smartweb/core/tests/test_ideabox.py +5 -3
  10. imio/smartweb/core/tests/test_rest.py +21 -3
  11. imio/smartweb/core/tests/test_sitemap.py +19 -0
  12. imio/smartweb/core/upgrades/configure.zcml +19 -0
  13. imio/smartweb/core/upgrades/profiles/1061_to_1062/types/imio.smartweb.SectionTimestampedPublications.xml +1 -5
  14. imio/smartweb/core/upgrades/profiles/1066_to_1067/types/imio.smartweb.SectionTimestampedPublications.xml +39 -0
  15. imio/smartweb/core/webcomponents/build/css/666.smartweb-webcomponents-compiled.css +1 -1
  16. imio/smartweb/core/webcomponents/build/css/smartweb-webcomponents-compiled.css +1 -1
  17. imio/smartweb/core/webcomponents/build/js/373.smartweb-webcomponents-compiled.js +1 -1
  18. imio/smartweb/core/webcomponents/build/js/486.smartweb-webcomponents-compiled.js +1 -1
  19. imio/smartweb/core/webcomponents/build/js/666.smartweb-webcomponents-compiled.js +1 -1
  20. imio/smartweb/core/webcomponents/build/js/884.smartweb-webcomponents-compiled.js +1 -1
  21. imio/smartweb/core/webcomponents/build/js/919.smartweb-webcomponents-compiled.js +1 -1
  22. imio/smartweb/core/webcomponents/build/js/922.smartweb-webcomponents-compiled.js +1 -1
  23. imio/smartweb/core/webcomponents/src/components/Annuaire/Annuaire.jsx +3 -2
  24. imio/smartweb/core/webcomponents/src/components/Annuaire/ContactContent/ContactContent.jsx +16 -2
  25. imio/smartweb/core/webcomponents/src/components/Campaign/Campaign.jsx +2 -15
  26. imio/smartweb/core/webcomponents/src/components/Campaign/Campaign.scss +117 -0
  27. imio/smartweb/core/webcomponents/src/components/Campaign/CampaignCard/CampaignCard.jsx +8 -2
  28. imio/smartweb/core/webcomponents/src/components/Campaign/CampaignContent/CampaignContent.jsx +18 -3
  29. imio/smartweb/core/webcomponents/src/components/Campaign/CampaignList/CampaignList.jsx +1 -0
  30. imio/smartweb/core/webcomponents/src/components/Campaign/Filters/Filter.jsx +6 -6
  31. imio/smartweb/core/webcomponents/src/components/Events/EventContent/EventContent.jsx +15 -1
  32. imio/smartweb/core/webcomponents/src/components/Events/Events.jsx +4 -5
  33. imio/smartweb/core/webcomponents/src/components/News/News.jsx +4 -5
  34. imio/smartweb/core/webcomponents/src/components/News/NewsContent/NewsContent.jsx +16 -1
  35. imio/smartweb/core/webcomponents/src/hooks/useAxios.js +3 -1
  36. imio/smartweb/core/webcomponents/src/index.scss +13 -3
  37. {imio.smartweb.core-1.3.1.dist-info → imio.smartweb.core-1.3.3.dist-info}/METADATA +28 -1
  38. {imio.smartweb.core-1.3.1.dist-info → imio.smartweb.core-1.3.3.dist-info}/RECORD +44 -43
  39. /imio.smartweb.core-1.3.1-py3.12-nspkg.pth → /imio.smartweb.core-1.3.3-py3.12-nspkg.pth +0 -0
  40. {imio.smartweb.core-1.3.1.dist-info → imio.smartweb.core-1.3.3.dist-info}/LICENSE.GPL +0 -0
  41. {imio.smartweb.core-1.3.1.dist-info → imio.smartweb.core-1.3.3.dist-info}/LICENSE.rst +0 -0
  42. {imio.smartweb.core-1.3.1.dist-info → imio.smartweb.core-1.3.3.dist-info}/WHEEL +0 -0
  43. {imio.smartweb.core-1.3.1.dist-info → imio.smartweb.core-1.3.3.dist-info}/namespace_packages.txt +0 -0
  44. {imio.smartweb.core-1.3.1.dist-info → imio.smartweb.core-1.3.3.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkimio_smartweb_core_webcomponents=self.webpackChunkimio_smartweb_core_webcomponents||[]).push([[922],{14541:(e,n,t)=>{t.d(n,{A:()=>r});t(25602);const r=t.p+"assets/pin-react-active.07d154037a15be5525b823fdc626cf29.svg"},62678:(e,n,t)=>{t.d(n,{A:()=>r});t(25602);const r=t.p+"assets/pin-react.fda934b5daf26dd4da2a71a7e7e44431.svg"},94274:(e,n,t)=>{t.d(n,{c:()=>r});const r=[{label:"Commerçant",value:"merchant"},{label:"Demandeur d'emploi",value:"job_seeker"},{label:"En situation de handicap",value:"disabled_person"},{label:"Jeune",value:"young"},{label:"Journaliste",value:"journalist"},{label:"Nouvel arrivant",value:"newcomer"},{label:"Organisateur d'événement",value:"event_planner"},{label:"Parent",value:"parent"},{label:"Senior",value:"elder"},{label:"Touriste",value:"tourist"}]},68473:(e,n,t)=>{function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function a(e,n,t){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}t.d(n,{E:()=>i,o:()=>l});const i={control:e=>o(o({},e),{},{backgroundColor:"white",borderColor:"transparent",borderRadius:"10px",minWidth:"150px",height:"40px"}),menu:e=>o(o({},e),{},{width:"max-content",maxWidth:"250px"}),placeholder:e=>o(o({},e),{},{color:"000",fontWeight:"bold",fontSize:"14px",letterSpacing:"1.4px"}),indicators:e=>o(o({},e),{},{color:"blue"}),option:e=>o({},e)},l={control:e=>o(o({},e),{},{backgroundColor:"white",borderRadius:"10px",height:"30px",minWidth:"150px"}),placeholder:e=>o(o({},e),{},{color:"000",fontWeight:"bold",fontSize:"12px",letterSpacing:"1.4px"}),menu:e=>o(o({},e),{},{width:"max-content",maxWidth:"250px"}),option:(e,n)=>{let{data:t,isDisabled:r,isFocused:a,isSelected:i}=n;return o({},e)}}},64651:(e,n,t)=>{t.d(n,{z:()=>r});const r=(0,t(25602).createContext)()},86110:(e,n,t)=>{t.d(n,{A:()=>s});var r=t(25602),o=t(37178);function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n,t){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const s=e=>{const[n,t]=(0,r.useState)(null),[a,l]=(0,r.useState)(""),[s,u]=(0,r.useState)(!0),[c,d]=(0,r.useState)(!1),f=new AbortController;return(0,r.useEffect)((()=>((async e=>{if(u(!0),e.load?d(!0):d(!1),0!==Object.keys(e.params).length)try{if(Array.isArray(e.url)){const n=e.url.map(((n,t)=>{const{url:r,identifier:a}="string"==typeof n?{url:n,identifier:"request_".concat(t)}:n;return o.A.request(i(i({},e),{},{url:r,signal:f.signal})).then((e=>({identifier:a,data:e.data})))})),r=(await Promise.all(n)).reduce(((e,n)=>{let{identifier:t,data:r}=n;return e[t]=r,e}),{});t(r)}else{const n=await o.A.request(e);t(n.data)}u(!1),l(null)}catch(e){l(e),u(!1)}else t(null)})(i(i({},e),{},{signal:f.signal})),()=>f.abort())),[e.params]),{response:n,error:a,isLoading:s,isMore:c}}},18874:(e,n,t)=>{t.d(n,{A:()=>o});var r=t(41665);const o=function(){return new URLSearchParams((0,r.zy)().search)}},97378:(e,n,t)=>{t.d(n,{A:()=>P});var r=t(25602),o=t(28009),a=t(77059),i=t(60055),l=t(69780),s=t(16545),u=t(18874),c=t(97284),d=t.n(c),f=t(62678),g=t(14541),p=t(8174),v=t(75681),m=t.n(v),h=t(72668);const b=["u"];function y(e){let{activeItem:n,arrayOfLatLngs:t}=e;const r=(0,o.ko)();if(n){const e=[];e.push(n.geolocation.latitude),e.push(n.geolocation.longitude),r.setView(e,15)}else{let e=new(d().LatLngBounds)(t);r.fitBounds(e)}return null}const P=function(e){const[n,t]=(0,r.useState)(null),[o,c]=(0,r.useState)([]),[v,P]=(0,r.useState)(null),j=Object.assign({UID:h.A.parse((0,u.A)().toString()).u}),{u:w}=j,O=function(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==n.indexOf(r))continue;t[r]=e[r]}return t}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],-1===n.indexOf(t)&&{}.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}(j,b);(0,r.useEffect)((()=>{const n=e.items.filter((e=>e.geolocation.latitude&&50.4989185!==e.geolocation.latitude&&4.7184485!==e.geolocation.longitude));c(n)}),[e]);const k=e=>new(d().Icon)({iconUrl:e,iconSize:[29,37]}),A=n=>n===e.clickId||n===e.hoverId?999:1;(0,r.useEffect)((()=>{var e=o&&o.filter((e=>e.UID===O.UID));t(e[0])}),[o]),(0,r.useEffect)((()=>{if(o.length>0){let e=[];o.map(((n,t)=>{let r=n.geolocation.latitude,o=n.geolocation.longitude;e.push([r,o])})),P(e)}}),[o]);const D=o.map(((n,t)=>{return r.createElement(a.p,{key:t,icon:(o=n.UID,o===O.UID||o===e.hoverId?k(g.A):k(f.A)),zIndexOffset:A(n.UID),position:[n.geolocation?n.geolocation.latitude:"",n.geolocation?n.geolocation.longitude:""],eventHandlers:{mouseover:e=>{}}},r.createElement(i.z,{closeButton:!1},r.createElement(p.N_,{className:"r-map-popup",style:{textDecoration:"none"},to:{pathname:"/"+m()(n.title).replace(/[^a-zA-Z ]/g,"").replace(/\s/g,"-").toLowerCase(),search:"?u=".concat(n.UID),state:{idItem:n.UID}}},r.createElement("span",{className:"r-map-popup-title"},n.title),r.createElement("p",{className:"r-map-popup-category"},n.category&&n.category.title))));var o}));return r.createElement("div",null,r.createElement(l.W,{style:{height:"calc(100vh - ".concat(e.headerHeight,"px)"),minHeight:"600px"},center:[50.85034,4.35171],zoom:15},r.createElement(s.e,{attribution:'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),null!=v?r.createElement(y,{activeItem:n,activeItemUID:O.UID,arrayOfLatLngs:v&&v}):"",o&&D))}},48743:(e,n,t)=>{t.d(n,{A:()=>r});const r={Publié:{en:"Published",fr:"Publié",de:"Veröffentlicht",nl:"Gepubliceerd"},Actualisé:{en:"Updated",fr:"Actualisé",de:"Aktualisiert",nl:"Bijgewerkt"},Événements:{en:"Events",fr:"Événements",de:"Veranstaltungen",nl:"Evenementen"},Actualités:{en:"News",fr:"Actualités",de:"Nachrichten",nl:"Nieuws"},Contacts:{en:"Contacts",fr:"Contacts",de:"Kontakte",nl:"Contacten"},"Infos pratiques":{en:"Practical information",fr:"Infos pratiques",de:"Praktische Informationen",nl:"Praktische informatie"},"Chargement...":{en:"Loading",fr:"Chargement...",de:"Laden",nl:"Laden..."},Recherche:{en:"Search",fr:"Recherche",de:"Suche",nl:"Zoeken"},Thématiques:{en:"Themes",fr:"Thématiques",de:"Themen",nl:"Thema's"},"Je suis":{en:"I am",fr:"Je suis",de:"Ich bin",nl:"Ik ben"},Catégories:{en:"Categories",fr:"Catégories",de:"Kategorien",nl:"Categorieën"},"Catégories locale":{en:"Local categories",fr:"Catégories locale",de:"Lokale Kategorien",nl:"Lokale categorieën"},"Catégories spécifiques":{en:"Specific categories",fr:"Catégories spécifiques",de:"Spezifische Kategorien",nl:"Specifieke categorieën"},Quoi:{en:"What",fr:"Quoi",de:"Was",nl:"Wat"},Facilités:{en:"Facilities",fr:"Facilités",de:"Einrichtungen",nl:"Faciliteiten"},"Plus de résultats":{en:"More results",fr:"Plus de résultats",de:"Mehr Ergebnisse",nl:"Meer resultaten"},"Aucun résultat":{en:"No result",fr:"Aucun résultat",de:"Kein Ergebnis",nl:"Geen resultaat"},Résultats:{en:"Results",fr:"Résultats",de:"Ergebnisse",nl:"Resultaten"},Retour:{en:"Return",fr:"Retour",de:"Zurück",nl:"Terug"},Téléchargements:{en:"Downloads",fr:"Téléchargements",de:"Downloads",nl:"Downloads"},Billetterie:{en:"Ticketing",fr:"Billetterie",de:"Tickets",nl:"Ticketverkoop"},"Lien vers la vidéo":{en:"Link to video",fr:"Lien vers la vidéo",de:"Link zum Video",nl:"Link naar video"},"Participation en ligne":{en:"Join online",fr:"Participation en ligne",de:"Online teilnehmen",nl:"Doe online mee"},"Actualités trouvées":{en:" News found",fr:" Actualités trouvées",de:" Nachrichten gefunden",nl:" Nieuws gevonden"},"Actualité trouvée":{en:" News found",fr:" Actualité trouvée",de:" Nachricht gefunden",nl:" Nieuws gevonden"},"Aucune actualité n'a été trouvée":{en:"No news was found",fr:"Aucune actualité n'a été trouvée",de:"Keine Nachrichten gefunden",nl:"Geen nieuws gevonden"},"Proposer une actualité":{en:"Suggest a news",fr:"Proposer une actualité",de:"Nachricht vorschlagen",nl:"Nieuws voorstellen"},"événements trouvés":{en:" Events found",fr:" Événements trouvés",de:" Veranstaltungen gefunden",nl:" Evenementen gevonden"},"projets trouvés":{en:" Projects found",fr:" Projets trouvés",de:" Projekte gefunden",nl:" Projecten gevonden"},"projet trouvé":{en:" Project found",fr:" Projet trouvé",de:" Projekt gefunden",nl:" Project gevonden"},"événement trouvé":{en:" Event found",fr:" Événement trouvé",de:" Veranstaltung gefunden",nl:" Evenement gevonden"},Gratuit:{en:"Free",fr:"Gratuit",de:"Kostenlos",nl:"Gratis"},"Aucun événement n'a été trouvé":{en:"No event was found",fr:"Aucun événement n'a été trouvé",de:"Keine Veranstaltungen gefunden",nl:"Geen evenement gevonden"},"Proposer un événement":{en:"Suggest a event",fr:"Proposer un événement",de:"Veranstaltung vorschlagen",nl:"Evenement voorstellen"},"Infos pratiques":{en:"Practical information",fr:"Infos pratiques",de:"Praktische Informationen",nl:"Praktische informatie"},"Accessible aux PMR":{en:"Accessibility for PRM",fr:"Accessible aux PMR",de:"Barrierefreiheit für PMR",nl:"Toegankelijk voor PRM"},"Lien de l'événement":{en:"Event link",fr:"Lien de l'événement",de:"Veranstaltungslink",nl:"Evenement link"},"contacts trouvés":{en:" Contact found",fr:" Contacts trouvés",de:" Kontakt gefunden",nl:" Contact gevonden"},"contact trouvé":{en:" Contact found",fr:" Contact trouvé",de:" Kontakt gefunden",nl:" Contact gevonden"},"Aucun contact n'a été trouvé":{en:"No contact was found",fr:"Aucun contact n'a été trouvé",de:"Kein Kontakt gefunden",nl:"Geen contact gevonden"},"Proposer un contact":{en:"Suggest a contact",fr:"Proposer un contact",de:"Kontakt vorschlagen",nl:"Contact voorstellen"},"projets trouvés":{en:" Projects found",fr:" Projets trouvés",de:" Projekte gefunden",nl:" Projecten gevonden"},"projet trouvé":{en:" Project found",fr:" Projet trouvé",de:" Projekt gefunden",nl:" Project gevonden"},"Aucun projet n'a été trouvé":{en:"No project was found",fr:"Aucun projet n'a été trouvé",de:"Kein Projekt gefunden",nl:"Geen project gevonden"},"Proposer un projet":{en:"Suggest a project",fr:"Proposer un projet",de:"Projekt vorschlagen",nl:"Project voorstellen"},Quand:{en:"When",fr:"Quand",de:"Wann",nl:"Wanneer"},"Toutes les dates":{en:"All dates",fr:"Toutes les dates",de:"Alle Daten",nl:"Alle data"},"Aujourd'hui":{en:"Today",fr:"Aujourd'hui",de:"Heute",nl:"Vandaag"},Demain:{en:"Tomorrow",fr:"Demain",de:"Morgen",nl:"Morgen"},"Ce week-end":{en:"This weekend",fr:"Ce week-end",de:"Dieses Wochenende",nl:"Dit weekend"},"Cette semaine":{en:"This week",fr:"Cette semaine",de:"Diese Woche",nl:"Deze week"},"Ce mois-ci":{en:"This month",fr:"Ce mois-ci",de:"Diesen Monat",nl:"Deze maand"},"Personnalisé (Du ... au ...)":{en:"Custom (From ... to ...)",fr:"Personnalisé (Du ... au ...)",de:"Benutzerdefiniert (Von ... bis ...)",nl:"Aangepast (Van ... tot ...)"},Le:{en:"On",fr:"Le",de:"Am",nl:"Op"},de:{en:"of",fr:"de",de:"von",nl:"van"},à:{en:"at",fr:"à",de:"um",nl:"om"},Du:{en:"From",fr:"Du",de:"Von",nl:"Van"},au:{en:"to",fr:"au",de:"bis",nl:"tot"},Personnalisé:{en:"Custom",fr:"Personnalisé",de:"Benutzerdefiniert",nl:"Aangepast"},Monday:{en:"Monday",fr:"Lundi",de:"Montag",nl:"Maandag"},Tuesday:{en:"Tuesday",fr:"Mardi",de:"Dienstag",nl:"Dinsdag"},Wednesday:{en:"Wednesday",fr:"Mercredi",de:"Mittwoch",nl:"Woensdag"},Thursday:{en:"Thursday",fr:"Jeudi",de:"Donnerstag",nl:"Donderdag"},Friday:{en:"Friday",fr:"Vendredi",de:"Freitag",nl:"Vrijdag"},Saturday:{en:"Saturday",fr:"Samedi",de:"Samstag",nl:"Zaterdag"},Sunday:{en:"Sunday",fr:"Dimanche",de:"Sonntag",nl:"Zondag"},Fermé:{en:"Closed",fr:"Fermé",de:"Geschlossen",nl:"Gesloten"},Ouvert:{en:"Open",fr:"Ouvert",de:"Geöffnet",nl:"Open"},Itinéraire:{en:"Itinerary",fr:"Itinéraire",de:"Route",nl:"Route"},"Filtrer par profil":{en:"Filter by profile",fr:"Filtrer par profil",de:"Nach Profile filtern",nl:"Filteren op profiel"},"Filtrer par thématique":{en:"Filter by theme",fr:"Filtrer par thématique",de:"Nach Thema filtern",nl:"Filteren op thema"}}}}]);
1
+ "use strict";(self.webpackChunkimio_smartweb_core_webcomponents=self.webpackChunkimio_smartweb_core_webcomponents||[]).push([[922],{14541:(e,n,t)=>{t.d(n,{A:()=>r});t(25602);const r=t.p+"assets/pin-react-active.07d154037a15be5525b823fdc626cf29.svg"},62678:(e,n,t)=>{t.d(n,{A:()=>r});t(25602);const r=t.p+"assets/pin-react.fda934b5daf26dd4da2a71a7e7e44431.svg"},94274:(e,n,t)=>{t.d(n,{c:()=>r});const r=[{label:"Commerçant",value:"merchant"},{label:"Demandeur d'emploi",value:"job_seeker"},{label:"En situation de handicap",value:"disabled_person"},{label:"Jeune",value:"young"},{label:"Journaliste",value:"journalist"},{label:"Nouvel arrivant",value:"newcomer"},{label:"Organisateur d'événement",value:"event_planner"},{label:"Parent",value:"parent"},{label:"Senior",value:"elder"},{label:"Touriste",value:"tourist"}]},68473:(e,n,t)=>{function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function a(e,n,t){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}t.d(n,{E:()=>i,o:()=>l});const i={control:e=>o(o({},e),{},{backgroundColor:"white",borderColor:"transparent",borderRadius:"10px",minWidth:"150px",height:"40px"}),menu:e=>o(o({},e),{},{width:"max-content",maxWidth:"250px"}),placeholder:e=>o(o({},e),{},{color:"000",fontWeight:"bold",fontSize:"14px",letterSpacing:"1.4px"}),indicators:e=>o(o({},e),{},{color:"blue"}),option:e=>o({},e)},l={control:e=>o(o({},e),{},{backgroundColor:"white",borderRadius:"10px",height:"30px",minWidth:"150px"}),placeholder:e=>o(o({},e),{},{color:"000",fontWeight:"bold",fontSize:"12px",letterSpacing:"1.4px"}),menu:e=>o(o({},e),{},{width:"max-content",maxWidth:"250px"}),option:(e,n)=>{let{data:t,isDisabled:r,isFocused:a,isSelected:i}=n;return o({},e)}}},64651:(e,n,t)=>{t.d(n,{z:()=>r});const r=(0,t(25602).createContext)()},86110:(e,n,t)=>{t.d(n,{A:()=>s});var r=t(25602),o=t(37178);function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){l(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n,t){return(n=function(e){var n=function(e,n){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const s=e=>{const[n,t]=(0,r.useState)(null),[a,l]=(0,r.useState)(""),[s,u]=(0,r.useState)(!0),[c,d]=(0,r.useState)(!1),f=new AbortController;return(0,r.useEffect)((()=>((async e=>{if(u(!0),e.load?d(!0):d(!1),0===Object.keys(e.params).length)return t(null),void u(!1);try{if(Array.isArray(e.url)){const n=e.url.map(((n,t)=>{const{url:r,identifier:a}="string"==typeof n?{url:n,identifier:"request_".concat(t)}:n;return o.A.request(i(i({},e),{},{url:r,signal:f.signal})).then((e=>({identifier:a,data:e.data})))})),r=(await Promise.all(n)).reduce(((e,n)=>{let{identifier:t,data:r}=n;return e[t]=r,e}),{});t(r)}else{const n=await o.A.request(e);t(n.data)}l(null)}catch(e){l(e),t(null)}finally{u(!1)}})(i(i({},e),{},{signal:f.signal})),()=>f.abort())),[e.params]),{response:n,error:a,isLoading:s,isMore:c}}},18874:(e,n,t)=>{t.d(n,{A:()=>o});var r=t(41665);const o=function(){return new URLSearchParams((0,r.zy)().search)}},97378:(e,n,t)=>{t.d(n,{A:()=>P});var r=t(25602),o=t(28009),a=t(77059),i=t(60055),l=t(69780),s=t(16545),u=t(18874),c=t(97284),d=t.n(c),f=t(62678),g=t(14541),p=t(8174),v=t(75681),m=t.n(v),h=t(72668);const b=["u"];function y(e){let{activeItem:n,arrayOfLatLngs:t}=e;const r=(0,o.ko)();if(n){const e=[];e.push(n.geolocation.latitude),e.push(n.geolocation.longitude),r.setView(e,15)}else{let e=new(d().LatLngBounds)(t);r.fitBounds(e)}return null}const P=function(e){const[n,t]=(0,r.useState)(null),[o,c]=(0,r.useState)([]),[v,P]=(0,r.useState)(null),j=Object.assign({UID:h.A.parse((0,u.A)().toString()).u}),{u:w}=j,O=function(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==n.indexOf(r))continue;t[r]=e[r]}return t}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],-1===n.indexOf(t)&&{}.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}(j,b);(0,r.useEffect)((()=>{const n=e.items.filter((e=>e.geolocation.latitude&&50.4989185!==e.geolocation.latitude&&4.7184485!==e.geolocation.longitude));c(n)}),[e]);const k=e=>new(d().Icon)({iconUrl:e,iconSize:[29,37]}),A=n=>n===e.clickId||n===e.hoverId?999:1;(0,r.useEffect)((()=>{var e=o&&o.filter((e=>e.UID===O.UID));t(e[0])}),[o]),(0,r.useEffect)((()=>{if(o.length>0){let e=[];o.map(((n,t)=>{let r=n.geolocation.latitude,o=n.geolocation.longitude;e.push([r,o])})),P(e)}}),[o]);const D=o.map(((n,t)=>{return r.createElement(a.p,{key:t,icon:(o=n.UID,o===O.UID||o===e.hoverId?k(g.A):k(f.A)),zIndexOffset:A(n.UID),position:[n.geolocation?n.geolocation.latitude:"",n.geolocation?n.geolocation.longitude:""],eventHandlers:{mouseover:e=>{}}},r.createElement(i.z,{closeButton:!1},r.createElement(p.N_,{className:"r-map-popup",style:{textDecoration:"none"},to:{pathname:"/"+m()(n.title).replace(/[^a-zA-Z ]/g,"").replace(/\s/g,"-").toLowerCase(),search:"?u=".concat(n.UID),state:{idItem:n.UID}}},r.createElement("span",{className:"r-map-popup-title"},n.title),r.createElement("p",{className:"r-map-popup-category"},n.category&&n.category.title))));var o}));return r.createElement("div",null,r.createElement(l.W,{style:{height:"calc(100vh - ".concat(e.headerHeight,"px)"),minHeight:"600px"},center:[50.85034,4.35171],zoom:15},r.createElement(s.e,{attribution:'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',url:"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"}),null!=v?r.createElement(y,{activeItem:n,activeItemUID:O.UID,arrayOfLatLngs:v&&v}):"",o&&D))}},48743:(e,n,t)=>{t.d(n,{A:()=>r});const r={Publié:{en:"Published",fr:"Publié",de:"Veröffentlicht",nl:"Gepubliceerd"},Actualisé:{en:"Updated",fr:"Actualisé",de:"Aktualisiert",nl:"Bijgewerkt"},Événements:{en:"Events",fr:"Événements",de:"Veranstaltungen",nl:"Evenementen"},Actualités:{en:"News",fr:"Actualités",de:"Nachrichten",nl:"Nieuws"},Contacts:{en:"Contacts",fr:"Contacts",de:"Kontakte",nl:"Contacten"},"Infos pratiques":{en:"Practical information",fr:"Infos pratiques",de:"Praktische Informationen",nl:"Praktische informatie"},"Chargement...":{en:"Loading",fr:"Chargement...",de:"Laden",nl:"Laden..."},Recherche:{en:"Search",fr:"Recherche",de:"Suche",nl:"Zoeken"},Thématiques:{en:"Themes",fr:"Thématiques",de:"Themen",nl:"Thema's"},"Je suis":{en:"I am",fr:"Je suis",de:"Ich bin",nl:"Ik ben"},Catégories:{en:"Categories",fr:"Catégories",de:"Kategorien",nl:"Categorieën"},"Catégories locale":{en:"Local categories",fr:"Catégories locale",de:"Lokale Kategorien",nl:"Lokale categorieën"},"Catégories spécifiques":{en:"Specific categories",fr:"Catégories spécifiques",de:"Spezifische Kategorien",nl:"Specifieke categorieën"},Quoi:{en:"What",fr:"Quoi",de:"Was",nl:"Wat"},Facilités:{en:"Facilities",fr:"Facilités",de:"Einrichtungen",nl:"Faciliteiten"},"Plus de résultats":{en:"More results",fr:"Plus de résultats",de:"Mehr Ergebnisse",nl:"Meer resultaten"},"Aucun résultat":{en:"No result",fr:"Aucun résultat",de:"Kein Ergebnis",nl:"Geen resultaat"},Résultats:{en:"Results",fr:"Résultats",de:"Ergebnisse",nl:"Resultaten"},Retour:{en:"Return",fr:"Retour",de:"Zurück",nl:"Terug"},Téléchargements:{en:"Downloads",fr:"Téléchargements",de:"Downloads",nl:"Downloads"},Billetterie:{en:"Ticketing",fr:"Billetterie",de:"Tickets",nl:"Ticketverkoop"},"Lien vers la vidéo":{en:"Link to video",fr:"Lien vers la vidéo",de:"Link zum Video",nl:"Link naar video"},"Participation en ligne":{en:"Join online",fr:"Participation en ligne",de:"Online teilnehmen",nl:"Doe online mee"},"Actualités trouvées":{en:" News found",fr:" Actualités trouvées",de:" Nachrichten gefunden",nl:" Nieuws gevonden"},"Actualité trouvée":{en:" News found",fr:" Actualité trouvée",de:" Nachricht gefunden",nl:" Nieuws gevonden"},"Aucune actualité n'a été trouvée":{en:"No news was found",fr:"Aucune actualité n'a été trouvée",de:"Keine Nachrichten gefunden",nl:"Geen nieuws gevonden"},"Proposer une actualité":{en:"Suggest a news",fr:"Proposer une actualité",de:"Nachricht vorschlagen",nl:"Nieuws voorstellen"},"événements trouvés":{en:" Events found",fr:" Événements trouvés",de:" Veranstaltungen gefunden",nl:" Evenementen gevonden"},"projets trouvés":{en:" Projects found",fr:" Projets trouvés",de:" Projekte gefunden",nl:" Projecten gevonden"},"projet trouvé":{en:" Project found",fr:" Projet trouvé",de:" Projekt gefunden",nl:" Project gevonden"},"événement trouvé":{en:" Event found",fr:" Événement trouvé",de:" Veranstaltung gefunden",nl:" Evenement gevonden"},Gratuit:{en:"Free",fr:"Gratuit",de:"Kostenlos",nl:"Gratis"},"Aucun événement n'a été trouvé":{en:"No event was found",fr:"Aucun événement n'a été trouvé",de:"Keine Veranstaltungen gefunden",nl:"Geen evenement gevonden"},"Proposer un événement":{en:"Suggest a event",fr:"Proposer un événement",de:"Veranstaltung vorschlagen",nl:"Evenement voorstellen"},"Infos pratiques":{en:"Practical information",fr:"Infos pratiques",de:"Praktische Informationen",nl:"Praktische informatie"},"Accessible aux PMR":{en:"Accessibility for PRM",fr:"Accessible aux PMR",de:"Barrierefreiheit für PMR",nl:"Toegankelijk voor PRM"},"Lien de l'événement":{en:"Event link",fr:"Lien de l'événement",de:"Veranstaltungslink",nl:"Evenement link"},"contacts trouvés":{en:" Contact found",fr:" Contacts trouvés",de:" Kontakt gefunden",nl:" Contact gevonden"},"contact trouvé":{en:" Contact found",fr:" Contact trouvé",de:" Kontakt gefunden",nl:" Contact gevonden"},"Aucun contact n'a été trouvé":{en:"No contact was found",fr:"Aucun contact n'a été trouvé",de:"Kein Kontakt gefunden",nl:"Geen contact gevonden"},"Proposer un contact":{en:"Suggest a contact",fr:"Proposer un contact",de:"Kontakt vorschlagen",nl:"Contact voorstellen"},"projets trouvés":{en:" Projects found",fr:" Projets trouvés",de:" Projekte gefunden",nl:" Projecten gevonden"},"projet trouvé":{en:" Project found",fr:" Projet trouvé",de:" Projekt gefunden",nl:" Project gevonden"},"Aucun projet n'a été trouvé":{en:"No project was found",fr:"Aucun projet n'a été trouvé",de:"Kein Projekt gefunden",nl:"Geen project gevonden"},"Proposer un projet":{en:"Suggest a project",fr:"Proposer un projet",de:"Projekt vorschlagen",nl:"Project voorstellen"},Quand:{en:"When",fr:"Quand",de:"Wann",nl:"Wanneer"},"Toutes les dates":{en:"All dates",fr:"Toutes les dates",de:"Alle Daten",nl:"Alle data"},"Aujourd'hui":{en:"Today",fr:"Aujourd'hui",de:"Heute",nl:"Vandaag"},Demain:{en:"Tomorrow",fr:"Demain",de:"Morgen",nl:"Morgen"},"Ce week-end":{en:"This weekend",fr:"Ce week-end",de:"Dieses Wochenende",nl:"Dit weekend"},"Cette semaine":{en:"This week",fr:"Cette semaine",de:"Diese Woche",nl:"Deze week"},"Ce mois-ci":{en:"This month",fr:"Ce mois-ci",de:"Diesen Monat",nl:"Deze maand"},"Personnalisé (Du ... au ...)":{en:"Custom (From ... to ...)",fr:"Personnalisé (Du ... au ...)",de:"Benutzerdefiniert (Von ... bis ...)",nl:"Aangepast (Van ... tot ...)"},Le:{en:"On",fr:"Le",de:"Am",nl:"Op"},de:{en:"of",fr:"de",de:"von",nl:"van"},à:{en:"at",fr:"à",de:"um",nl:"om"},Du:{en:"From",fr:"Du",de:"Von",nl:"Van"},au:{en:"to",fr:"au",de:"bis",nl:"tot"},Personnalisé:{en:"Custom",fr:"Personnalisé",de:"Benutzerdefiniert",nl:"Aangepast"},Monday:{en:"Monday",fr:"Lundi",de:"Montag",nl:"Maandag"},Tuesday:{en:"Tuesday",fr:"Mardi",de:"Dienstag",nl:"Dinsdag"},Wednesday:{en:"Wednesday",fr:"Mercredi",de:"Mittwoch",nl:"Woensdag"},Thursday:{en:"Thursday",fr:"Jeudi",de:"Donnerstag",nl:"Donderdag"},Friday:{en:"Friday",fr:"Vendredi",de:"Freitag",nl:"Vrijdag"},Saturday:{en:"Saturday",fr:"Samedi",de:"Samstag",nl:"Zaterdag"},Sunday:{en:"Sunday",fr:"Dimanche",de:"Sonntag",nl:"Zondag"},Fermé:{en:"Closed",fr:"Fermé",de:"Geschlossen",nl:"Gesloten"},Ouvert:{en:"Open",fr:"Ouvert",de:"Geöffnet",nl:"Open"},Itinéraire:{en:"Itinerary",fr:"Itinéraire",de:"Route",nl:"Route"},"Filtrer par profil":{en:"Filter by profile",fr:"Filtrer par profil",de:"Nach Profile filtern",nl:"Filteren op profiel"},"Filtrer par thématique":{en:"Filter by theme",fr:"Filtrer par thématique",de:"Nach Thema filtern",nl:"Filteren op thema"}}}}]);
@@ -43,7 +43,7 @@ function AnnuaireView(props) {
43
43
  queryString.parse(useFilterQuery().toString())
44
44
  );
45
45
  const { scrollPos, updateScrollPos } = useContext(ScrollContext);
46
- const [contactArray, setcontactArray] = useState([]);
46
+ const [contactArray, setcontactArray] = useState(null);
47
47
  const [contactNumber, setcontactNumber] = useState([]);
48
48
  const [clickId, setClickId] = useState(null);
49
49
  const [hoverId, setHoverId] = useState(null);
@@ -155,6 +155,7 @@ function AnnuaireView(props) {
155
155
 
156
156
  const divLoader = (
157
157
  <div className="lds-roller-container">
158
+ <Translate text="Chargement..." />
158
159
  <div className="lds-roller">
159
160
  <div></div>
160
161
  <div></div>
@@ -224,7 +225,7 @@ function AnnuaireView(props) {
224
225
  element={
225
226
  <div className="r-wrapper container r-annuaire-wrapper">
226
227
  <div className="r-result r-annuaire-result">
227
- <div>{listRender}</div>
228
+ <div>{contactArray !== null ? listRender : divLoader}</div>
228
229
  <div className="r-load-more">
229
230
  {contactNumber - props.batchSize > batchStart ? (
230
231
  <div>
@@ -22,7 +22,7 @@ const ContactContent = ({ queryUrl, onChange, contextAuthenticatedUser }) => {
22
22
  const [image, setImage] = useState();
23
23
  const [isSchedulVisible, setSchedulVisibility] = useState(true);
24
24
 
25
- const { response } = useAxios(
25
+ const { response, isLoading, error } = useAxios(
26
26
  {
27
27
  method: "get",
28
28
  url: "",
@@ -98,7 +98,21 @@ const ContactContent = ({ queryUrl, onChange, contextAuthenticatedUser }) => {
98
98
  const toggleSchedul = () => {
99
99
  setSchedulVisibility(!isSchedulVisible);
100
100
  };
101
- return (
101
+ return isLoading ? (
102
+ <div className="lds-roller-container">
103
+ <Translate text="Chargement..." />
104
+ <div className="lds-roller">
105
+ <div></div>
106
+ <div></div>
107
+ <div></div>
108
+ <div></div>
109
+ <div></div>
110
+ <div></div>
111
+ <div></div>
112
+ <div></div>
113
+ </div>
114
+ </div>
115
+ ) : (
102
116
  <div className="annuaire-content r-content">
103
117
  <button type="button" onClick={handleClick}>
104
118
  <Translate text="Retour" />
@@ -154,6 +154,7 @@ function CampaignView(props) {
154
154
  }
155
155
  const divLoader = (
156
156
  <div className="lds-roller-container">
157
+ <Translate text="Chargement..." />
157
158
  <div className="lds-roller">
158
159
  <div></div>
159
160
  <div></div>
@@ -171,7 +172,7 @@ function CampaignView(props) {
171
172
  <div
172
173
  className="r-result-filter-container"
173
174
  ref={filterRef}
174
- style={{ top: headerHeight }}
175
+ style={displayMap ? { top: headerHeight } : {}}
175
176
  >
176
177
  <div
177
178
  id="r-result-filter"
@@ -224,20 +225,6 @@ function CampaignView(props) {
224
225
  element={
225
226
  <div className="r-wrapper container r-campaign-wrapper">
226
227
  <div className="r-result r-campaign-result">
227
- {itemsNumber > 0 ? (
228
- <p className="r-results-numbers">
229
- <span>{itemsNumber}</span>
230
- {itemsNumber > 1 ? (
231
- <Translate text="projets trouvés" />
232
- ) : (
233
- <Translate text="projet trouvé" />
234
- )}
235
- </p>
236
- ) : (
237
- <p className="r-results-numbers">
238
- <Translate text="Aucun résultat" />
239
- </p>
240
- )}
241
228
  <div>{listRender}</div>
242
229
  <div className="r-load-more">
243
230
  {itemsNumber - props.batchSize > batchStart ? (
@@ -670,3 +670,120 @@ smartweb-campaign {
670
670
  margin: 0 auto;
671
671
  }
672
672
  }
673
+
674
+ .no-map .r-result-filter-container {
675
+ position: relative;
676
+ top: inherit;
677
+ }
678
+
679
+ .no-map {
680
+ .r-item-title {
681
+ margin-bottom: 1rem !important;
682
+ }
683
+ .r-item-text {
684
+ padding-bottom: 2rem;
685
+ }
686
+ }
687
+
688
+ // // No Map
689
+ // // Main
690
+ .no-map {
691
+ @media screen and (min-width: 600px) {
692
+ .r-campaign-wrapper {
693
+ display: block;
694
+ }
695
+
696
+ .r-result-list {
697
+ max-width: 1296px;
698
+ display: grid;
699
+ grid-template-columns: 1fr 1fr 1fr;
700
+ gap: 20px;
701
+ }
702
+
703
+ .r-list-item-group {
704
+ transition: all 0.2s ease;
705
+
706
+ &:hover,
707
+ &:focus {
708
+ transform: translateY(-10px) !important;
709
+ }
710
+
711
+ .r-list-item {
712
+ flex-direction: column !important;
713
+ box-shadow: 0 8px 26px rgba(0, 0, 0, 0.08);
714
+
715
+ .r-item-img {
716
+ border-radius: 0 !important;
717
+ width: 100% !important;
718
+ height: 0 !important;
719
+ padding-bottom: 60% !important;
720
+ margin-bottom: 0.5rem;
721
+ }
722
+
723
+ .r-item-text {
724
+ display: grid;
725
+ grid-template-columns: 1fr 1fr;
726
+ margin-right: 1.5rem;
727
+
728
+ &:after {
729
+ display: none;
730
+ }
731
+
732
+ .r-item-categorie {
733
+ grid-row-start: 1;
734
+ }
735
+
736
+ .r-item-title {
737
+ font-weight: 500 !important;
738
+ grid-row-start: 2;
739
+ grid-column-start: 1;
740
+ grid-column-end: 3;
741
+ margin-bottom: 2rem;
742
+ margin-top: 1rem;
743
+ }
744
+
745
+ .r-item-date {
746
+ grid-row-start: 1;
747
+ grid-column-start: 2;
748
+ justify-self: end;
749
+ }
750
+ }
751
+ }
752
+ }
753
+ }
754
+ }
755
+
756
+ // content
757
+
758
+ .no-map {
759
+ .r-result.r-campaign-result {
760
+ max-width: 1296px;
761
+ }
762
+
763
+ .campaign-content {
764
+ max-width: 700px;
765
+ margin: 0 auto;
766
+ }
767
+ }
768
+
769
+ // vote workflow
770
+
771
+ .r-list-item,
772
+ figure {
773
+ &.Publié sans vote {
774
+ .campaign-vote {
775
+ display: none;
776
+ }
777
+ }
778
+ }
779
+
780
+ .vote_nodisplay {
781
+ display: none;
782
+ }
783
+
784
+ .vote_noactif {
785
+ opacity: 0.6;
786
+ pointer-events: none;
787
+ filter: grayscale(30%);
788
+ color: #c7c7c7;
789
+ }
@@ -4,6 +4,13 @@ import { Translate } from "react-translated";
4
4
  const CampaignCard = (props) => {
5
5
  const [image, setImage] = useState(new Image());
6
6
  const [imageClassName, setImageClassName] = useState("");
7
+ const status = props.voteContext;
8
+ const voteContext =
9
+ status === "Publié sans vote" || status === "Publié"
10
+ ? "vote_nodisplay"
11
+ : ["Clôture", "Retenu", "Rejeté"].includes(status)
12
+ ? "vote_noactif"
13
+ : "vote_display";
7
14
 
8
15
  // Set image and image className
9
16
  useEffect(() => {
@@ -28,7 +35,6 @@ const CampaignCard = (props) => {
28
35
  loadImage();
29
36
  }
30
37
  }, [props.item]);
31
-
32
38
  return (
33
39
  <>
34
40
  <div className="r-list-item">
@@ -53,7 +59,7 @@ const CampaignCard = (props) => {
53
59
  )}
54
60
  <div className="r-item-text">
55
61
  <span className="r-item-title">{props.item.nom}</span>
56
- <div className="campaign-vote">
62
+ <div className={"campaign-vote " + voteContext}>
57
63
  <div className="campaign-vote-pour">
58
64
  <i className="bi bi-hand-thumbs-up-fill"></i>
59
65
  <span className="campaign-vote-pour-count">
@@ -15,6 +15,7 @@ export default function CampaignContent({ queryUrl, onChange }) {
15
15
  });
16
16
  const [params, setParams] = useState(parsed);
17
17
  const [item, setitem] = useState(null);
18
+ const [voteContext, setVoteContext] = useState("");
18
19
  const [urlVotePour, setUrlVotePour] = useState(null);
19
20
  const [urlVoteContre, setUrlVoteContre] = useState(null);
20
21
 
@@ -35,6 +36,14 @@ export default function CampaignContent({ queryUrl, onChange }) {
35
36
  // set all contacts state
36
37
  useEffect(() => {
37
38
  if (response !== null) {
39
+ const status = response.workflow.fields.statut;
40
+ if (status === "Publié sans vote" || status === "Publié") {
41
+ setVoteContext("vote_nodisplay");
42
+ } else if (["Clôture", "Retenu", "Rejeté"].includes(status)) {
43
+ setVoteContext("vote_noactif");
44
+ } else {
45
+ setVoteContext("vote_display");
46
+ }
38
47
  setitem(response.fields);
39
48
  const parsedUrl = new URL(response.url);
40
49
  const baseUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
@@ -61,10 +70,16 @@ export default function CampaignContent({ queryUrl, onChange }) {
61
70
  <button type="button" onClick={handleClick}>
62
71
  <Translate text="Retour" />
63
72
  </button>
64
- <ContentText item={item} urlVotePour={urlVotePour} urlVoteContre={urlVoteContre} />
73
+ <ContentText
74
+ item={item}
75
+ urlVotePour={urlVotePour}
76
+ urlVoteContre={urlVoteContre}
77
+ voteContext={voteContext}
78
+ />
65
79
  </div>
66
80
  ) : (
67
81
  <div className="lds-roller-container">
82
+ <Translate text="Chargement..." />
68
83
  <div className="lds-roller">
69
84
  <div></div>
70
85
  <div></div>
@@ -79,7 +94,7 @@ export default function CampaignContent({ queryUrl, onChange }) {
79
94
  );
80
95
  }
81
96
 
82
- function ContentText({ item, urlVotePour, urlVoteContre }) {
97
+ function ContentText({ item, urlVotePour, urlVoteContre, voteContext }) {
83
98
  const [image, setImage] = useState(new Image());
84
99
  const [imageClassName, setImageClassName] = useState("");
85
100
 
@@ -109,7 +124,7 @@ function ContentText({ item, urlVotePour, urlVoteContre }) {
109
124
  <h2 className="r-content-title">{item.nom}</h2>
110
125
  </header>
111
126
  <figure>
112
- <div className="campaign-vote" style={{ marginTop: "1.5rem" }}>
127
+ <div className={`campaign-vote ${voteContext}`} style={{ marginTop: "1.5rem" }}>
113
128
  <a href={urlVotePour} target="_blank" className="campaign-vote-pour">
114
129
  <i className="bi bi-hand-thumbs-up-fill"></i>
115
130
  <span className="campaign-vote-pour-count">({item.votes_pour})</span>
@@ -54,6 +54,7 @@ const CampaignList = ({
54
54
  ></Link>
55
55
  <CampaignCard
56
56
  item={item.fields}
57
+ voteContext={item.workflow.fields.statut}
57
58
  showCategoriesOrTopics={showCategoriesOrTopics}
58
59
  key={item.created}
59
60
  contextAuthenticatedUser={contextAuthenticatedUser}
@@ -13,8 +13,8 @@ import { menuStyles, moreFilterStyles } from "./../../Filters/SelectStyles";
13
13
  function Filters(props) {
14
14
  let navigate = useNavigate();
15
15
  const [inputValues, setInputValues] = useState(props.activeFilter);
16
- const [topicsFilter, setTopicsFilter] = useState(null);
17
- const [zonesFilter, setZonesFilter] = useState(null);
16
+ const [topicsFilter, setTopicsFilter] = useState([]);
17
+ const [zonesFilter, setZonesFilter] = useState([]);
18
18
  // const [localsCategoryFilter, setLocalsCategoryFilter] = useState([]);
19
19
  const [dates, setDates] = useState(null);
20
20
  // Get data
@@ -178,8 +178,7 @@ function Filters(props) {
178
178
  <React.Fragment>
179
179
  <div className="react-filters-menu">
180
180
  <div className="react-filters-container">
181
- <form className="r-filter r-filter-search" onSubmit={handleSubmit}>
182
- {/* <label>Recherche</label> */}
181
+ {/* <form className="r-filter r-filter-search" onSubmit={handleSubmit}>
183
182
  <div className="relative">
184
183
  <Translator>
185
184
  {({ translate }) => (
@@ -209,8 +208,9 @@ function Filters(props) {
209
208
  <path d="M13 24a11 11 0 1 0 0-22 11 11 0 0 0 0 22zm8-3 9 9" />
210
209
  </svg>
211
210
  </div>
212
- </form>
213
- <div className="react-sep-menu"></div>
211
+ </form> */}
212
+
213
+ {/* <div className="react-sep-menu"></div> */}
214
214
  {/* Filtre Thématique */}
215
215
  {/* Filtre Thématique */}
216
216
  <div className="r-filter top-filter topics-Filter">
@@ -121,7 +121,21 @@ const ContactContent = ({ queryUrl, onChange, onlyPastEvents, contextAuthenticat
121
121
  const closeSchedul = () => {
122
122
  setSchedulVisibility(false);
123
123
  };
124
- return (
124
+ return isLoading ? (
125
+ <div className="lds-roller-container">
126
+ <Translate text="Chargement..." />
127
+ <div className="lds-roller">
128
+ <div></div>
129
+ <div></div>
130
+ <div></div>
131
+ <div></div>
132
+ <div></div>
133
+ <div></div>
134
+ <div></div>
135
+ <div></div>
136
+ </div>
137
+ </div>
138
+ ) : (
125
139
  <div className="envent-content r-content">
126
140
  <button type="button" onClick={handleClick}>
127
141
  <Translate text="Retour" />
@@ -52,7 +52,7 @@ function EventsView(props) {
52
52
  queryString.parse(useFilterQuery().toString())
53
53
  );
54
54
  const { scrollPos, updateScrollPos } = useContext(ScrollContext);
55
- const [itemsArray, setItemsArray] = useState([]);
55
+ const [itemsArray, setItemsArray] = useState(null);
56
56
  const [itemsNumber, setItemsNumber] = useState([]);
57
57
  const [clickId, setClickId] = useState(null);
58
58
  const [hoverId, setHoverId] = useState(null);
@@ -164,6 +164,7 @@ function EventsView(props) {
164
164
  }
165
165
  const divLoader = (
166
166
  <div className="lds-roller-container">
167
+ <Translate text="Chargement..." />
167
168
  <div className="lds-roller">
168
169
  <div></div>
169
170
  <div></div>
@@ -231,11 +232,9 @@ function EventsView(props) {
231
232
  )}
232
233
  </p>
233
234
  ) : (
234
- <p className="r-results-numbers">
235
- <Translate text="Aucun résultat" />
236
- </p>
235
+ ""
237
236
  )}
238
- <div>{listRender}</div>
237
+ <div>{itemsArray !== null ? listRender : divLoader}</div>
239
238
  <div className="r-load-more">
240
239
  {itemsNumber - props.batchSize > batchStart ? (
241
240
  <div>
@@ -45,7 +45,7 @@ const NewsView = (props) => {
45
45
  queryString.parse(useFilterQuery().toString())
46
46
  );
47
47
  const { scrollPos, updateScrollPos } = useContext(ScrollContext);
48
- const [itemsArray, setItemsArray] = useState([]);
48
+ const [itemsArray, setItemsArray] = useState(null);
49
49
  const [itemsNumber, setItemsNumber] = useState([]);
50
50
  const [clickId, setClickId] = useState(null);
51
51
  const [filters, setFilters] = useState(parsed);
@@ -125,6 +125,7 @@ const NewsView = (props) => {
125
125
 
126
126
  const divLoader = (
127
127
  <div className="lds-roller-container">
128
+ <Translate text="Chargement..." />
128
129
  <div className="lds-roller">
129
130
  <div></div>
130
131
  <div></div>
@@ -182,11 +183,9 @@ const NewsView = (props) => {
182
183
  )}
183
184
  </p>
184
185
  ) : (
185
- <p className="r-results-numbers">
186
- <Translate text="Aucun résultat" />
187
- </p>
186
+ ""
188
187
  )}
189
- <div>{listRender}</div>
188
+ <div>{itemsArray !== null ? listRender : divLoader}</div>
190
189
  <div className="r-load-more">
191
190
  {itemsNumber - props.batchSize > batchStart ? (
192
191
  <div>
@@ -70,7 +70,22 @@ const ContactContent = ({ queryUrl, onChange, contextAuthenticatedUser }) => {
70
70
  moment.locale("fr");
71
71
  const created = moment(item.created).startOf("minute").fromNow();
72
72
  const lastModified = moment(item.modified).startOf("minute").fromNow();
73
- return (
73
+
74
+ return isLoading ? (
75
+ <div className="lds-roller-container">
76
+ <Translate text="Chargement..." />
77
+ <div className="lds-roller">
78
+ <div></div>
79
+ <div></div>
80
+ <div></div>
81
+ <div></div>
82
+ <div></div>
83
+ <div></div>
84
+ <div></div>
85
+ <div></div>
86
+ </div>
87
+ </div>
88
+ ) : (
74
89
  <div className="new-content r-content">
75
90
  <button type="button" onClick={handleClick}>
76
91
  <Translate text="Retour" />
@@ -19,6 +19,7 @@ const useAxios = (params) => {
19
19
 
20
20
  if (Object.keys(params.params).length === 0) {
21
21
  setResponse(null);
22
+ setIsLoading(false);
22
23
  return;
23
24
  }
24
25
 
@@ -57,10 +58,11 @@ const useAxios = (params) => {
57
58
  const res = await axios.request(params);
58
59
  setResponse(res.data);
59
60
  }
60
- setIsLoading(false);
61
61
  setError(null);
62
62
  } catch (err) {
63
63
  setError(err);
64
+ setResponse(null);
65
+ } finally {
64
66
  setIsLoading(false);
65
67
  }
66
68
  };
@@ -1,3 +1,10 @@
1
+ smartweb-events,
2
+ smartweb-news,
3
+ smartweb-annuaire,
4
+ smartweb-campaign {
5
+ min-height: 80vh;
6
+ display: block;
7
+ }
1
8
  .portaltype-imio-smartweb-directoryview {
2
9
  #portal-header {
3
10
  margin-bottom: 0 !important;
@@ -157,16 +164,19 @@
157
164
  left: 0;
158
165
  right: 0;
159
166
  background: hsla(0, 0%, 100%, 0.82);
167
+ padding-top: 2rem;
168
+ display: flex;
169
+ flex-direction: column;
170
+ justify-content: flex-start;
171
+ align-items: center;
172
+ gap: 20px;
160
173
  }
161
174
 
162
175
  .lds-roller {
163
176
  display: inline-block;
164
- position: absolute;
165
177
  width: 80px;
166
178
  height: 80px;
167
179
  top: 5rem;
168
- left: 50%;
169
- transform: translate(-50%, -50%);
170
180
  z-index: 0;
171
181
  }
172
182
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: imio.smartweb.core
3
- Version: 1.3.1
3
+ Version: 1.3.3
4
4
  Summary: Core product for iMio websites
5
5
  Home-page: https://github.com/imio/imio.smartweb.core
6
6
  Author: Christophe Boulanger
@@ -203,6 +203,33 @@ Changelog
203
203
  =========
204
204
 
205
205
 
206
+ 1.3.3 (2025-03-31)
207
+ ------------------
208
+
209
+ - WEB-4236 : Ensure that, in the control panel, the already filled passwords are better "informed"
210
+ [boulch]
211
+
212
+ - Ideabox : Use the correct workflow statuses to display projects
213
+ [boulch]
214
+
215
+ - Prevent unauthorized access: return 403 if request does not originate from the current context
216
+ Prevent some basic stupid and wicked attack
217
+ [boulch]
218
+
219
+ - Ideabox : Add status for vote
220
+ [thomlamb]
221
+
222
+
223
+ 1.3.2 (2025-03-19)
224
+ ------------------
225
+
226
+ - WEB-4134: Set default_view as table_view for section "Timestamped publications"
227
+ [boulch]
228
+
229
+ - WEB-4165: Refactor some code for sitemap (Title, normalized_portal_type, ...)
230
+ [boulch]
231
+
232
+
206
233
  1.3.1 (2025-03-13)
207
234
  ------------------
208
235