imio.smartweb.core 1.3.2__py3-none-any.whl → 1.3.4__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 (36) hide show
  1. imio/smartweb/core/browser/controlpanel.py +25 -1
  2. imio/smartweb/core/contents/rest/base.py +4 -0
  3. imio/smartweb/core/contents/rest/campaign/endpoint.py +18 -1
  4. imio/smartweb/core/tests/test_ideabox.py +5 -3
  5. imio/smartweb/core/tests/test_rest.py +21 -3
  6. imio/smartweb/core/webcomponents/build/css/666.smartweb-webcomponents-compiled.css +1 -1
  7. imio/smartweb/core/webcomponents/build/css/smartweb-webcomponents-compiled.css +1 -1
  8. imio/smartweb/core/webcomponents/build/js/373.smartweb-webcomponents-compiled.js +1 -1
  9. imio/smartweb/core/webcomponents/build/js/486.smartweb-webcomponents-compiled.js +1 -1
  10. imio/smartweb/core/webcomponents/build/js/666.smartweb-webcomponents-compiled.js +1 -1
  11. imio/smartweb/core/webcomponents/build/js/884.smartweb-webcomponents-compiled.js +1 -1
  12. imio/smartweb/core/webcomponents/build/js/919.smartweb-webcomponents-compiled.js +1 -1
  13. imio/smartweb/core/webcomponents/build/js/922.smartweb-webcomponents-compiled.js +1 -1
  14. imio/smartweb/core/webcomponents/src/components/Annuaire/Annuaire.jsx +3 -2
  15. imio/smartweb/core/webcomponents/src/components/Annuaire/ContactContent/ContactContent.jsx +16 -2
  16. imio/smartweb/core/webcomponents/src/components/Campaign/Campaign.jsx +26 -19
  17. imio/smartweb/core/webcomponents/src/components/Campaign/Campaign.scss +161 -0
  18. imio/smartweb/core/webcomponents/src/components/Campaign/CampaignCard/CampaignCard.jsx +9 -3
  19. imio/smartweb/core/webcomponents/src/components/Campaign/CampaignContent/CampaignContent.jsx +48 -8
  20. imio/smartweb/core/webcomponents/src/components/Campaign/CampaignList/CampaignList.jsx +1 -0
  21. imio/smartweb/core/webcomponents/src/components/Campaign/Filters/Filter.jsx +12 -80
  22. imio/smartweb/core/webcomponents/src/components/Events/EventContent/EventContent.jsx +15 -1
  23. imio/smartweb/core/webcomponents/src/components/Events/Events.jsx +4 -5
  24. imio/smartweb/core/webcomponents/src/components/News/News.jsx +4 -5
  25. imio/smartweb/core/webcomponents/src/components/News/NewsContent/NewsContent.jsx +16 -1
  26. imio/smartweb/core/webcomponents/src/hooks/useAxios.js +3 -1
  27. imio/smartweb/core/webcomponents/src/index.scss +13 -3
  28. imio/smartweb/core/webcomponents/src/utils/translation.js +12 -0
  29. {imio.smartweb.core-1.3.2.dist-info → imio.smartweb.core-1.3.4.dist-info}/METADATA +29 -14
  30. {imio.smartweb.core-1.3.2.dist-info → imio.smartweb.core-1.3.4.dist-info}/RECORD +36 -36
  31. {imio.smartweb.core-1.3.2.dist-info → imio.smartweb.core-1.3.4.dist-info}/WHEEL +1 -1
  32. /imio.smartweb.core-1.3.2-py3.12-nspkg.pth → /imio.smartweb.core-1.3.4-py3.8-nspkg.pth +0 -0
  33. {imio.smartweb.core-1.3.2.dist-info → imio.smartweb.core-1.3.4.dist-info}/LICENSE.GPL +0 -0
  34. {imio.smartweb.core-1.3.2.dist-info → imio.smartweb.core-1.3.4.dist-info}/LICENSE.rst +0 -0
  35. {imio.smartweb.core-1.3.2.dist-info → imio.smartweb.core-1.3.4.dist-info}/namespace_packages.txt +0 -0
  36. {imio.smartweb.core-1.3.2.dist-info → imio.smartweb.core-1.3.4.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),m=t(75681),v=t.n(m),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)([]),[m,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:"/"+v()(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!=m?r.createElement(y,{activeItem:n,activeItemUID:O.UID,arrayOfLatLngs:m&&m}):"",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"},Commentaires:{en:"Comments",fr:"Commentaires",de:"Kommentare",nl:"Reacties"},"Ajouter un commentaire":{en:"Add a comment",fr:"Ajouter un commentaire",de:"Kommentar hinzufügen",nl:"Reactie toevoegen"}}}}]);
@@ -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" />
@@ -55,6 +55,7 @@ function CampaignView(props) {
55
55
  const [clickId, setClickId] = useState(null);
56
56
  const [hoverId, setHoverId] = useState(null);
57
57
  const [filters, setFilters] = useState({ b_start: 0 });
58
+ const [searchValue, setSearchValue] = useState(null);
58
59
  const [batchStart, setBatchStart] = useState(0);
59
60
  const [loadMoreLaunch, setLoadMoreLaunch] = useState(false);
60
61
  const displayMap = props.displayMap === "True" ? true : false;
@@ -76,14 +77,25 @@ function CampaignView(props) {
76
77
  // set all campaigns state
77
78
  useEffect(() => {
78
79
  if (response !== null) {
80
+ let filteredItems = response.items;
81
+
82
+ // Filter items if searchValue exists
83
+ if (searchValue && searchValue.trim() !== "") {
84
+ const searchLower = searchValue.toLowerCase();
85
+ filteredItems = response.items.filter((item) => {
86
+ const title = item.fields.nom?.toLowerCase() || "";
87
+ return title.includes(searchLower);
88
+ });
89
+ }
90
+
79
91
  if (isMore) {
80
- setItemsArray((itemsArray) => [...itemsArray, ...response.items]);
92
+ setItemsArray((itemsArray) => [...itemsArray, ...filteredItems]);
81
93
  } else {
82
- setItemsArray(response.items);
94
+ setItemsArray(filteredItems);
83
95
  }
84
- setItemsNumber(response.items_total);
96
+ setItemsNumber(filteredItems.length);
85
97
  }
86
- }, [response]);
98
+ }, [response, searchValue]);
87
99
 
88
100
  // set state id when clicked on list element
89
101
  const clickID = (id) => {
@@ -103,6 +115,13 @@ function CampaignView(props) {
103
115
  window.scrollTo(0, 0);
104
116
  };
105
117
 
118
+ //set search SearchableText
119
+ const filtersChangeSearch = (value) => {
120
+ setLoadMoreLaunch(false);
121
+ setBatchStart(() => 0);
122
+ setSearchValue(value);
123
+ };
124
+
106
125
  // set batch
107
126
  const loadMore = () => {
108
127
  updateScrollPos(window.scrollY);
@@ -154,6 +173,7 @@ function CampaignView(props) {
154
173
  }
155
174
  const divLoader = (
156
175
  <div className="lds-roller-container">
176
+ <Translate text="Chargement..." />
157
177
  <div className="lds-roller">
158
178
  <div></div>
159
179
  <div></div>
@@ -171,7 +191,7 @@ function CampaignView(props) {
171
191
  <div
172
192
  className="r-result-filter-container"
173
193
  ref={filterRef}
174
- style={{ top: headerHeight }}
194
+ style={displayMap ? { top: headerHeight } : {}}
175
195
  >
176
196
  <div
177
197
  id="r-result-filter"
@@ -182,6 +202,7 @@ function CampaignView(props) {
182
202
  queryTopicsUrl={props.queryTopicsUrl}
183
203
  activeFilter={filters}
184
204
  onChange={filtersChange}
205
+ onChangeSearch={filtersChangeSearch}
185
206
  />
186
207
  {props.proposeUrl && (
187
208
  <div className="r-add-contact">
@@ -224,20 +245,6 @@ function CampaignView(props) {
224
245
  element={
225
246
  <div className="r-wrapper container r-campaign-wrapper">
226
247
  <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
248
  <div>{listRender}</div>
242
249
  <div className="r-load-more">
243
250
  {itemsNumber - props.batchSize > batchStart ? (
@@ -590,6 +590,50 @@ smartweb-campaign {
590
590
  min-height: 80vh;
591
591
  display: block;
592
592
  }
593
+
594
+ .campaign-comment-container {
595
+ margin-top: 2rem;
596
+ padding: 24px;
597
+ border: solid 1px #cbcbcb;
598
+ border-radius: 5px;
599
+ font-size: 14px;
600
+ color: #6c6c6c;
601
+ }
602
+ .campaign-comment-title {
603
+ font-size: 18px;
604
+ font-weight: 400;
605
+ margin-bottom: 2rem;
606
+ color: #0f0f0f;
607
+ border-bottom: solid 1px #cbcbcb;
608
+ }
609
+ .campaign-comment {
610
+ p {
611
+ margin-bottom: 0;
612
+ margin-top: 5px;
613
+ font-size: 1rem;
614
+ color: #171717;
615
+ }
616
+ }
617
+
618
+ .campaign-comment-actions {
619
+ text-align: center;
620
+ }
621
+ .campaign-comment-action-button {
622
+ margin: 1rem 0;
623
+ background: #f5f5f5;
624
+ display: inline-block;
625
+ padding: 9px;
626
+ border-radius: 5px;
627
+ text-transform: uppercase;
628
+ font-size: 14px;
629
+ font-weight: 500;
630
+ text-align: center;
631
+ border: solid 1px transparent;
632
+ &:hover,
633
+ &:focus {
634
+ border: solid 1px #bbbbbb;
635
+ }
636
+ }
593
637
  // // No Map
594
638
  // // Main
595
639
  .no-map {
@@ -670,3 +714,120 @@ smartweb-campaign {
670
714
  margin: 0 auto;
671
715
  }
672
716
  }
717
+
718
+ .no-map .r-result-filter-container {
719
+ position: relative;
720
+ top: inherit;
721
+ }
722
+
723
+ .no-map {
724
+ .r-item-title {
725
+ margin-bottom: 1rem !important;
726
+ }
727
+ .r-item-text {
728
+ padding-bottom: 2rem;
729
+ }
730
+ }
731
+
732
+ // // No Map
733
+ // // Main
734
+ .no-map {
735
+ @media screen and (min-width: 600px) {
736
+ .r-campaign-wrapper {
737
+ display: block;
738
+ }
739
+
740
+ .r-result-list {
741
+ max-width: 1296px;
742
+ display: grid;
743
+ grid-template-columns: 1fr 1fr 1fr;
744
+ gap: 20px;
745
+ }
746
+
747
+ .r-list-item-group {
748
+ transition: all 0.2s ease;
749
+
750
+ &:hover,
751
+ &:focus {
752
+ transform: translateY(-10px) !important;
753
+ }
754
+
755
+ .r-list-item {
756
+ flex-direction: column !important;
757
+ box-shadow: 0 8px 26px rgba(0, 0, 0, 0.08);
758
+
759
+ .r-item-img {
760
+ border-radius: 0 !important;
761
+ width: 100% !important;
762
+ height: 0 !important;
763
+ padding-bottom: 60% !important;
764
+ margin-bottom: 0.5rem;
765
+ }
766
+
767
+ .r-item-text {
768
+ display: grid;
769
+ grid-template-columns: 1fr 1fr;
770
+ margin-right: 1.5rem;
771
+
772
+ &:after {
773
+ display: none;
774
+ }
775
+
776
+ .r-item-categorie {
777
+ grid-row-start: 1;
778
+ }
779
+
780
+ .r-item-title {
781
+ font-weight: 500 !important;
782
+ grid-row-start: 2;
783
+ grid-column-start: 1;
784
+ grid-column-end: 3;
785
+ margin-bottom: 2rem;
786
+ margin-top: 1rem;
787
+ }
788
+
789
+ .r-item-date {
790
+ grid-row-start: 1;
791
+ grid-column-start: 2;
792
+ justify-self: end;
793
+ }
794
+ }
795
+ }
796
+ }
797
+ }
798
+ }
799
+
800
+ // content
801
+
802
+ .no-map {
803
+ .r-result.r-campaign-result {
804
+ max-width: 1296px;
805
+ }
806
+
807
+ .campaign-content {
808
+ max-width: 700px;
809
+ margin: 0 auto;
810
+ }
811
+ }
812
+
813
+ // vote workflow
814
+
815
+ .r-list-item,
816
+ figure {
817
+ &.Publié sans vote {
818
+ .campaign-vote {
819
+ display: none;
820
+ }
821
+ }
822
+ }
823
+
824
+ .vote_nodisplay {
825
+ display: none;
826
+ }
827
+
828
+ .vote_noactif {
829
+ opacity: 0.6;
830
+ pointer-events: none;
831
+ filter: grayscale(30%);
832
+ color: #c7c7c7;
833
+ }
@@ -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">
@@ -69,7 +75,7 @@ const CampaignCard = (props) => {
69
75
  </div>
70
76
  </div>
71
77
  <div className="r-item-arrow">
72
- <i class="bi bi-chevron-right"></i>
78
+ <i className="bi bi-chevron-right"></i>
73
79
  </div>
74
80
  </div>
75
81
  </>
@@ -15,9 +15,10 @@ 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
+ const [urlComment, setUrlComment] = useState(null);
21
22
  const [files, setFiles] = useState();
22
23
  const { response, error, isLoading } = useAxios(
23
24
  {
@@ -35,12 +36,23 @@ export default function CampaignContent({ queryUrl, onChange }) {
35
36
  // set all contacts state
36
37
  useEffect(() => {
37
38
  if (response !== null) {
39
+ console.log(response && response);
40
+
41
+ const status = response.workflow.fields.statut;
42
+ if (status === "Publié sans vote" || status === "Publié") {
43
+ setVoteContext("vote_nodisplay");
44
+ } else if (["Clôture", "Retenu", "Rejeté"].includes(status)) {
45
+ setVoteContext("vote_noactif");
46
+ } else {
47
+ setVoteContext("vote_display");
48
+ }
38
49
  setitem(response.fields);
39
50
  const parsedUrl = new URL(response.url);
40
51
  const baseUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
41
52
  const fullUrlPour = `${baseUrl}/ideabox-voter-pour-un-projet/?projet=${response.id}`;
42
53
  const fullUrlContre = `${baseUrl}/ideabox-voter-contre-un-projet/?projet=${response.id}`;
43
-
54
+ const urlComment = `${baseUrl}/ideabox-commenter-un-projet/`;
55
+ setUrlComment(urlComment);
44
56
  setUrlVotePour(fullUrlPour);
45
57
  setUrlVoteContre(fullUrlContre);
46
58
  }
@@ -61,10 +73,17 @@ export default function CampaignContent({ queryUrl, onChange }) {
61
73
  <button type="button" onClick={handleClick}>
62
74
  <Translate text="Retour" />
63
75
  </button>
64
- <ContentText item={item} urlVotePour={urlVotePour} urlVoteContre={urlVoteContre} />
76
+ <ContentText
77
+ item={item}
78
+ urlVotePour={urlVotePour}
79
+ urlVoteContre={urlVoteContre}
80
+ voteContext={voteContext}
81
+ urlComment={urlComment}
82
+ />
65
83
  </div>
66
84
  ) : (
67
85
  <div className="lds-roller-container">
86
+ <Translate text="Chargement..." />
68
87
  <div className="lds-roller">
69
88
  <div></div>
70
89
  <div></div>
@@ -79,7 +98,7 @@ export default function CampaignContent({ queryUrl, onChange }) {
79
98
  );
80
99
  }
81
100
 
82
- function ContentText({ item, urlVotePour, urlVoteContre }) {
101
+ function ContentText({ item, urlVotePour, urlVoteContre, urlComment, voteContext }) {
83
102
  const [image, setImage] = useState(new Image());
84
103
  const [imageClassName, setImageClassName] = useState("");
85
104
 
@@ -102,6 +121,7 @@ function ContentText({ item, urlVotePour, urlVoteContre }) {
102
121
  };
103
122
  }
104
123
  }, [item]);
124
+
105
125
  return (
106
126
  <>
107
127
  <article>
@@ -109,7 +129,7 @@ function ContentText({ item, urlVotePour, urlVoteContre }) {
109
129
  <h2 className="r-content-title">{item.nom}</h2>
110
130
  </header>
111
131
  <figure>
112
- <div className="campaign-vote" style={{ marginTop: "1.5rem" }}>
132
+ <div className={`campaign-vote ${voteContext}`} style={{ marginTop: "1.5rem" }}>
113
133
  <a href={urlVotePour} target="_blank" className="campaign-vote-pour">
114
134
  <i className="bi bi-hand-thumbs-up-fill"></i>
115
135
  <span className="campaign-vote-pour-count">({item.votes_pour})</span>
@@ -144,7 +164,7 @@ function ContentText({ item, urlVotePour, urlVoteContre }) {
144
164
  </article>
145
165
  <div className="contactCard">
146
166
  <div className="contactText">
147
- <div className="r-content-description">
167
+ <div className="r-content-text">
148
168
  {item.description && (
149
169
  <div
150
170
  className="campaign-description"
@@ -154,8 +174,28 @@ function ContentText({ item, urlVotePour, urlVoteContre }) {
154
174
  />
155
175
  )}
156
176
  </div>
157
-
158
- <div className="contactTextAll"></div>
177
+ {item.commentaires && (
178
+ <div className="campaign-comment-container">
179
+ <p className="campaign-comment-title">
180
+ <Translate text="Commentaires" />:
181
+ </p>
182
+ <div
183
+ className="campaign-comment"
184
+ dangerouslySetInnerHTML={{
185
+ __html: item.commentaires,
186
+ }}
187
+ />
188
+ <div className="campaign-comment-actions">
189
+ <a
190
+ href={urlComment}
191
+ target="_blank"
192
+ className="campaign-comment-action-button"
193
+ >
194
+ <Translate text="Ajouter un commentaire" />
195
+ </a>
196
+ </div>
197
+ </div>
198
+ )}
159
199
  </div>
160
200
  {/* add files to download */}
161
201
  {/* {files && (
@@ -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}