UNPKG

@expofp/floorplan

Version:

Interactive floor plan library for expos and events

2 lines (1 loc) 4.25 kB
import{jsx as n,jsxs as o}from"react/jsx-runtime";import"./SessionsFiltersModal.scss";import d from"classnames";import{observer as C}from"mobx-react-lite";import{useMemo as m}from"react";import{t as i}from"../utils/i18n";import{Modal as y,MultiSelectGroups as g,ToggleSwitch as p}from"./";const O=C(({store:s,visibleSections:v,open:u,onClose:a})=>{const t=s.state.filters,w=t.date.pending!=="all"||t.sortOrder.pending!=="desc"||t.use24hFormat.pending!==!1||t.showBookmarksOnly.pending!==!1||t.selectedTracks.pending.length>0||t.selectedVenues.pending.length>0,_=m(()=>s.rootStore.eventStore.futureEvents.length,[s.rootStore.eventStore.futureEvents]),h=m(()=>{const e=s.rootStore.eventStore.tracks;return e.length?[{groupName:"Tracks",items:e.map(l=>({id:l.id,name:l.name,color:l.color,countProvider:()=>s.rootStore.eventStore.getEventsByTrack(l.id).length})),showGroupActions:!0,fullWidth:!0}]:[]},[s.rootStore.eventStore.tracks]),f=m(()=>{const e=s.rootStore.eventStore.venues;return e.length?[{groupName:"Venues",items:e.map(l=>({id:l.id,name:l.name,countProvider:()=>s.rootStore.eventStore.getEventsByVenue(l.id).length})),showGroupActions:!0,fullWidth:!0}]:[]},[s.rootStore.eventStore.venues]),k=e=>{const l=e.map(c=>Number(c));s.setPending("selectedTracks",l)},S=e=>{const l=e.map(c=>Number(c));s.setPending("selectedVenues",l)},b=u!==void 0?u:s.state.isOpen,N=a||(()=>s.closeFilter()),r=v||s.state.visibleSections;return n(y,{open:b,title:i("Sessions Filters"),badge:s.activeFiltersCount>0?s.activeFiltersCount:void 0,maxWidth:800,footerLeft:[{label:i("Clear all"),variant:"gray",disabled:t.selectedTracks.pending.length===0&&t.selectedVenues.pending.length===0,onClick:()=>{s.resetFilters(),a&&a()}}],footerRight:[{label:i("Apply"),variant:"primary",onClick:()=>{s.applyFilters(),a&&a()}}],onClickClose:N,children:o("div",{className:"efp-sessions-filters-modal",children:[r.includes("tracks")&&h.length>0&&n("div",{className:"efp-sessions-filters-modal__section",children:n(g,{groups:h,selectedIds:t.selectedTracks.pending,onChange:k,showItemCounts:!0})}),r.includes("venues")&&f.length>0&&n("div",{className:"efp-sessions-filters-modal__section",children:n(g,{groups:f,selectedIds:t.selectedVenues.pending,onChange:S,showItemCounts:!0})}),r.includes("date")&&o("div",{className:"efp-sessions-filters-modal__section",children:[n("h3",{children:i("Date")}),n("div",{className:"efp-sessions-filters-modal__buttons",children:["all","today","tomorrow"].map(e=>n("button",{className:d("efp-sessions-filters-modal__btn",{"is-active":t.date.pending===e}),onClick:()=>s.setPending("date",e),children:i(e==="all"?"All dates":e.charAt(0).toUpperCase()+e.slice(1))},e))})]}),r.includes("time")&&_>=30&&o("div",{className:"efp-sessions-filters-modal__section",children:[n("h3",{children:i("Session time")}),n("div",{className:"efp-sessions-filters-modal__buttons",children:["all","morning","midday","afternoon"].map(e=>n("button",{className:d("efp-sessions-filters-modal__btn",{"is-active":t.timeOfDay.pending===e}),onClick:()=>s.setPending("timeOfDay",e),children:i(e==="all"?"All times":e.charAt(0).toUpperCase()+e.slice(1))},e))})]}),r.includes("sort")&&o("div",{className:"efp-sessions-filters-modal__section",children:[n("h3",{children:i("Sort order")}),o("div",{className:"efp-sessions-filters-modal__buttons",children:[n("button",{className:d("efp-sessions-filters-modal__btn",{"is-active":t.sortOrder.pending==="desc"}),onClick:()=>s.setPending("sortOrder","desc"),children:i("Earliest first")}),n("button",{className:d("efp-sessions-filters-modal__btn",{"is-active":t.sortOrder.pending==="asc"}),onClick:()=>s.setPending("sortOrder","asc"),children:i("Latest first")})]})]}),r.includes("settings")&&o("div",{className:"efp-sessions-filters-modal__section",children:[n("h3",{children:i("Additional settings")}),n("div",{className:"efp-sessions-filters-modal__toggle",children:n(p,{name:"showBookmarksOnly",label:i("Show bookmarks only"),value:t.showBookmarksOnly.pending,onChange:e=>s.setPending("showBookmarksOnly",e)})}),n("div",{className:"efp-sessions-filters-modal__toggle",children:n(p,{name:"use24hFormat",label:i("Show time in 24h format"),value:t.use24hFormat.pending,onChange:e=>s.setPending("use24hFormat",e)})})]})]})})});export default O;