@devgateway/dvz-ui-react
Version:
A modular, embeddable React component library for data visualization and UI, built with TypeScript. Provides reusable components for charts, maps, dashboards, and more, with built-in support for internationalization and Redux integration.
4 lines (3 loc) • 6.36 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),c=require("semantic-ui-react"),a=require("react"),x=require("@devgateway/wp-react-lib"),L=require("react-intl"),C=require("react-router"),D=require("./SearchControl.js"),k=require("./LangSwitcher.js"),R=(n,t)=>{const o=[];return n.items.forEach(i=>{i.child_items?i.child_items.forEach(l=>{l.slug==t.slug&&(o.push(i),o.push(l))}):i.slug==t.slug&&i.url!="/"&&o.push(i)}),o},S=(n,t)=>n?n.substr(n.indexOf("/wp")+3).startsWith("/"+t)?n.substr(n.indexOf("/wp")+3):"/"+t+n.substr(n.indexOf("/wp")+3):"",O=L.injectIntl(({menu:n,intl:t})=>{const o=C.useParams(),i=R(n,o);return e.jsx(a.Fragment,{children:i.filter(l=>l.url!="#wpm-languages").map((l,u)=>l.child_items?e.jsxs("span",{children:[l.post_title," "]},u):e.jsxs("a",{className:l.slug==o.slug?"active":"",href:x.utils.replaceLink(l.url,t.locale),children:[" ",l.post_title]},u))})}),N=L.injectIntl(({settings:n,withIcons:t,active:o,menu:i,onSetSelected:l,selected:u,intl:{locale:h},isSmallScreen:b})=>{const M=C.useParams();a.useEffect(s=>{if(!u){const r=R(i,M).filter(p=>p.menu_item_parent==0);r&&l(r[0])}},[i,l,u]);const[j,_]=a.useState(null);a.useEffect(()=>{_(i)},[i]),a.useEffect(()=>{if(n&&n.menu_settings&&j){const s=[],f=i.items.map(r=>(n.menu_settings&&n.menu_settings["nav_menu_item["+r.ID+"]"]===!1&&s.push(r.ID),n.menu_settings&&n.menu_settings["nav_menu_item["+r.ID+"]"]?(n.menu_settings["nav_menu_item["+r.ID+"]"],{...r,...n.menu_settings["nav_menu_item["+r.ID+"]"]}):r));Object.keys(n.menu_settings).map(r=>{const p=n.menu_settings[r];if(p.type=="nav_menu_item"){const w=/(-)?[0-9]+/g.exec(r),E=parseInt(w[0]);f.find(g=>g.ID==E)||f.push(p.value)}}),_({...i,items:f.filter(r=>s.indexOf(r.ID)===-1)})}},[n]);const[v,I]=a.useState(!1);return a.useEffect(()=>{const s=()=>{I(window.innerWidth<=1200)};return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]),j&&e.jsx(a.Fragment,{children:j.items.filter(s=>s.url!=="#wpm-languages").map((s,f)=>e.jsxs(a.Fragment,{children:[e.jsxs(c.Menu.Item,{className:`divided ${s.child_items?"has-child-items":""}
${u&&u.ID===s.ID?"selected":""}
${o===s.slug?"active":""}`,children:[t&&e.jsx("a",{href:S(s.url,h),children:e.jsx("div",{className:"mark",children:e.jsx("span",{className:"sr-only",children:s.title})})}),b?s.child_items?e.jsx("span",{onClick:()=>l(u===s?null:s),children:s.title}):e.jsx("a",{href:S(s.url,h),children:s.title}):s.child_items?e.jsx("span",{onMouseOver:r=>l(s),children:s.title}):e.jsx("a",{onMouseOut:r=>l(null),onMouseOver:r=>l(s),href:S(s.url,h),children:s.title})]}),v&&u&&u.ID===s.ID&&u.child_items&&e.jsx(a.Fragment,{children:u.child_items.map(r=>e.jsxs(c.Menu.Item,{className:`divided child-item ${o===r.slug?"active":""}`,children:[e.jsx("div",{className:"mark"}),e.jsx("a",{href:S(r.url,h),children:r.title})]},r.ID))})]},s.ID))})}),$=({intl:n,settings:t={}})=>{const[o,i]=a.useState(),[l,u]=a.useState(!1),[h,b]=a.useState(!1),[M,j]=a.useState(!1),{slug:_}=C.useParams(),v=a.useRef(null),I=a.useRef(null),s=()=>{j(!M),u(!l)};a.useEffect(()=>{const d=m=>{(v.current&&!v.current.contains(m.target)&&!I.current.contains(m.target)||m.target.closest(".desktop")||m.target.closest(".breadcrumbs"))&&(u(!1),j(!1))},g=m=>{m.key==="Escape"&&(u(!1),j(!1))};return document.addEventListener("mousedown",d),document.addEventListener("keydown",g),()=>{document.removeEventListener("mousedown",d),document.removeEventListener("keydown",g)}},[]);const f=window.innerWidth<=1200;a.useEffect(()=>{let d;const g=()=>{f&&!h&&l&&u(!1),b(f)},m=()=>{clearTimeout(d),d=setTimeout(g,200)};return g(),window.addEventListener("resize",m),()=>{clearTimeout(d),window.removeEventListener("resize",m)}},[]);const[r,p]=a.useState(!1);a.useEffect(()=>{const d=()=>{p(window.innerWidth<=1365)};return d(),window.addEventListener("resize",d),()=>window.removeEventListener("resize",d)},[]);const z=({media:d})=>d?e.jsx(c.Image,{src:d.guid.rendered}):e.jsx("img",{className:"brand logo",size:"large",src:"/logo_full.png"}),w=(t==null?void 0:t.landing_page_url)&&t.landing_page_url!==!1&&t.landing_page_url!==void 0&&t.landing_page_url!=="",E=w?t.landing_page_url:`/${n.locale}`;return console.log("isMenuVisible",l),e.jsx(a.Fragment,{children:e.jsxs(x.MenuProvider,{slug:"main",locale:n.locale,children:[e.jsxs(c.Container,{fluid:!0,className:"header",children:[e.jsxs("div",{ref:I,className:`hamburger-menu ${M?"animate":""} ${l?"open":"close"}`,onClick:s,children:[e.jsx("div",{}),e.jsx("div",{className:"middle-line"}),e.jsx("div",{})]}),e.jsx(c.Container,{fluid:!0,className:"background",ref:v,children:e.jsxs(c.Menu,{className:"branding",text:!0,children:[e.jsx(c.Menu.Item,{children:e.jsxs("a",{href:`${E}`,target:w?"_blank":"_self",rel:"noopener noreferrer",children:[t.site_logo!==0&&!r&&e.jsx(x.MediaProvider,{id:t.site_logo,children:e.jsx(x.MediaConsumer,{children:e.jsx(z,{},"logo")})}),t.site_logo===0&&!r&&e.jsx("img",{className:"brand logo",size:"large",src:"/logo_full.png"}),r&&e.jsx("img",{className:"brand logo small",size:"small",src:"/TCDI-Icon-small_02.png"})]})}),e.jsx(c.Menu.Item,{className:"divider",children:e.jsx("div",{})}),e.jsxs(c.Menu.Item,{fitted:!0,href:"/",children:[e.jsx(c.Flag,{name:"za"}),e.jsx("div",{className:"site name",children:t.name})]}),h?e.jsx(c.Menu,{className:`pages ${l?"show":""}`,children:e.jsx(c.Container,{fluid:!0,children:e.jsx(x.MenuConsumer,{children:e.jsx(N,{settings:t,active:_,selected:o,onSetSelected:i,isSmallScreen:h},"items")})})}):e.jsx(c.Menu.Menu,{className:"pages",children:e.jsx(x.MenuConsumer,{children:e.jsx(N,{settings:t,active:_,selected:o,onSetSelected:i},"items")})}),e.jsx(c.Menu.Item,{children:e.jsx(x.MenuConsumer,{children:e.jsx(k.default,{locale:n.locale},"lang")})}),e.jsx(c.Menu.Item,{fitted:!0,children:e.jsx(D.default,{onSetSelected:i,settings:t})})]})}),e.jsx(c.Container,{fluid:!0,className:"child",children:o&&o.child_items&&e.jsx(c.Menu,{fluid:!0,text:!0,children:e.jsx(N,{active:_,locale:n.locale,withIcons:!0,onSetSelected:d=>null,menu:{items:o.child_items}})})})]},"header-container"),e.jsx(c.Container,{className:"url breadcrumbs",children:e.jsx(x.MenuConsumer,{children:e.jsx(O,{})})})]})})},q=L.injectIntl($);exports.default=q;