@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1.35 kB
JavaScript
import{jsx as e,jsxs as r}from"react/jsx-runtime";import"./Share.scss";import l from"classnames";import b from"copy-to-clipboard";import{useEffect as N,useRef as k,useState as x}from"react";const v={facebook:"icon-facebook",xcom:"icon-twitter-x",linkedin:"icon-linkedin"},y=({title:o,url:s,shareHeading:c,socials:d,copyLinkSectionLabel:m,directLinkAriaLabel:h,copyButtonAriaLabel:p,copyLabel:u,copiedLabel:f})=>{const[t,n]=x(!1),i=k(void 0);N(()=>()=>clearTimeout(i.current),[]);const _=()=>{b(s)&&(n(!0),clearTimeout(i.current),i.current=setTimeout(()=>n(!1),2e3))};return r("div",{className:"share",children:[r("h3",{children:[c," ",o]}),e("div",{className:"share__socials",children:d.map(a=>r("a",{href:a.url,rel:"noopener noreferrer",target:"_blank",className:l("share-social",a.network),"aria-label":a.ariaLabel,children:[e("div",{className:"share-social__icon",children:e("i",{className:v[a.network],"aria-hidden":"true"})}),e("div",{className:"share-social__title",children:a.name})]},a.network))}),r("div",{className:"share__copy",children:[e("span",{children:m}),r("div",{className:"share__copy-input",children:[e("input",{type:"text",defaultValue:s,readOnly:!0,"aria-label":h}),e("button",{type:"button",className:l({isCopied:t}),onClick:_,"aria-label":p,children:t?e("span",{"aria-live":"polite",children:f}):u})]})]})]})};export default y;