@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1.8 kB
JavaScript
import{jsx as t,jsxs as o}from"react/jsx-runtime";import"./SidebarActions.scss";import d from"classnames";import{useEffect as S,useRef as _,useState as E}from"react";import g from"../CheckboxButton";const q=({className:m,inBookmark:e=!1,visited:c=!1,showVisited:p=!1,showBookmark:b=!0,showDirections:h=!0,showRoutePlanner:N=!1,showShare:C=!0,directionsLabel:i,visitedLabel:s,notVisitedLabel:x,saveBookmarkLabel:r,removeBookmarkLabel:u,routePlannerLabel:n,shareLabel:l,onClickBookmark:j,onClickVisited:k,onClickDirections:y,onClickRoutePlanner:T,onClickShare:A})=>{const[I,f]=E(!1),a=_(void 0);S(()=>()=>{a.current!==void 0&&clearTimeout(a.current)},[]);const R=()=>{clearTimeout(a.current),f(!0),j?.(),a.current=setTimeout(()=>{f(!1)},320)};return o("div",{className:d("efp-sidebar-actions",m),children:[h&&o("button",{type:"button",className:"efp-action-button efp-action-button--directions",onClick:y,title:i,"aria-label":i,children:[t("i",{className:"icon-directions","aria-hidden":"true"}),i]}),p&&t(g,{className:"efp-visited-btn",ariaLabel:c?s:x,checked:c,label:s,onClick:k??(()=>{})}),b&&t("button",{type:"button",className:d("efp-action-button","efp-action-button--bookmark",{"efp-action-button--active":e,"efp-action-button--animate":I}),title:e?u:r,"aria-label":e?u:r,"aria-pressed":e,onClick:R,children:t("i",{className:e?"icon-bookmark-solid":"icon-bookmark","aria-hidden":"true"})}),N&&o("button",{type:"button",className:"efp-action-button efp-action-button--route-planner",title:n,"aria-label":n,onClick:T,children:[t("i",{className:"icon-route-solid","aria-hidden":"true"}),n]}),C&&t("button",{type:"button",className:"efp-action-button efp-action-button--share",title:l,"aria-label":l,onClick:A,children:t("i",{className:"icon-share","aria-hidden":"true"})})]})};export default q;