UNPKG

@kitconcept/volto-light-theme

Version:
190 lines (177 loc) 5.15 kB
import React from 'react'; import { flushSync } from 'react-dom'; import { Grid } from 'semantic-ui-react'; import { DateRangePicker } from '../components/DateRangePicker'; import { Facets } from '@plone/volto/components/manage/Blocks/Search/components'; import { SearchInput } from '../components'; // import SearchDetails from '../../../Search/components/SearchDetails'; function getDateRangeIOV(startDate, endDate) { if (startDate && endDate && startDate !== endDate) { return [ { i: 'start', o: 'plone.app.querystring.operation.date.largerThan', v: startDate, }, { i: 'end', o: 'plone.app.querystring.operation.date.lessThan', v: endDate, }, ]; } if (startDate) { return [ { i: 'start', o: 'plone.app.querystring.operation.date.largerThan', v: startDate, }, ]; } if (endDate) { return [ { i: 'end', o: 'plone.app.querystring.operation.date.lessThan', v: endDate, }, ]; } return []; } const toJSDate = (calendarDate, hour = 0, minute = 0, second = 0) => { if (!calendarDate) return ''; const date = new Date( calendarDate.year, calendarDate.month - 1, calendarDate.day, hour, minute, second, ); return date.toISOString().slice(0, 19); }; const TopSideFacets = (props) => { const { children, data, // totalItems, facets, setFacets, // setSortOn, // setSortOrder, // sortOn, // sortOrder, onTriggerSearch, searchedText, // search text for previous search // searchText, // search text currently being entered (controlled input) // isEditMode, querystring = {}, handleDateRangeChange, // searchData, // mode = 'view', // variation, } = props; const { showSearchButton } = data; const isLive = !showSearchButton; const [dateRange, setDateRange] = React.useState({ start: null, end: null }); const onhandleDateRangeChange = (value) => { setDateRange(value); const start = toJSDate(value?.start); const end = toJSDate(value?.end); const dateRangeQuery = getDateRangeIOV(start, end); handleDateRangeChange(dateRangeQuery); }; const onResetDateRange = () => { setDateRange({ start: null, end: null }); handleDateRangeChange([]); }; const FacetWrapper = ({ children }) => { const colWidth = data.facets.length < 5 ? 12 / data.facets.length : 4; return ( <Grid.Column mobile={12} tablet={colWidth} computer={colWidth}> {children} </Grid.Column> ); }; return ( <div className="search-block-event searchBlock-facets"> {data.headline && <h2 className="headline">{data.headline}</h2>} <div className="first-row"> <DateRangePicker value={dateRange} onChange={onhandleDateRangeChange} onResetDateRange={onResetDateRange} dateRange={dateRange} /> {/* <SearchDetails text={searchedText} total={totalItems} as="h5" data={data} /> */} {/* {showSortOnEvent && ( <div className="search-filters-sort"> <div className="sort-on-wrapper"> <SortOn data={data} querystring={querystring} isEditMode={isEditMode} sortOn={sortOn} sortOrder={sortOrder} setSortOn={(sortOn) => { flushSync(() => { setSortOn(sortOn); onTriggerSearch(searchedText || '', facets, sortOn); }); }} setSortOrder={(sortOrder) => { flushSync(() => { setSortOrder(sortOrder); onTriggerSearch( searchedText || '', facets, sortOn, sortOrder, ); }); }} /> </div> </div> )} */} <div className="search-wrapper"> <SearchInput {...props} isLive={isLive} /> </div> </div> <Grid.Row> <Grid.Column> {data.facets?.length > 0 && ( <div className="facets"> {data.facetsTitle && <h3>{data.facetsTitle}</h3>} <Grid verticalAlign="bottom" columns={12}> <Facets data={data} querystring={querystring} facets={facets} setFacets={(f) => { flushSync(() => { setFacets(f); onTriggerSearch(searchedText || '', f); }); }} facetWrapper={FacetWrapper} /> </Grid> </div> )} </Grid.Column> </Grid.Row> <Grid.Row className="template-container"> <Grid.Column>{children}</Grid.Column> </Grid.Row> </div> ); }; export default TopSideFacets;