WIP Migrate filterpanel

This commit is contained in:
Björn Fromme
2021-10-20 18:46:55 +02:00
parent f75503a52e
commit 71b429eb61
2 changed files with 114 additions and 70 deletions
@@ -10,34 +10,53 @@
<div class="mb-4 p-4 bg-ep-primary text-white" <div class="mb-4 p-4 bg-ep-primary text-white"
data-controller="collapse" data-controller="collapse"
data-collapse-collapsed-value="true"> data-collapse-collapsed-value="{f:if(condition: '{filterSettings.dateFrom} || {filterSettings.dateTo}', then: 'false', else: 'true')}">
<button data-action="click->collapse#toggle" <button data-action="click->collapse#toggle"
class="flex items-center justify-between w-full"> class="flex items-center justify-between w-full">
<span class="uppercase font-bold"> <span class="uppercase font-bold">
Reisezeitraum {ep:dateRange(dateFrom: filterSettings.dateFrom, dateTo: filterSettings.dateTo, includeLabel: 0)} Reisezeitraum
</span> </span>
<svg class="w-6 h-6 text-white transform" <svg class="w-6 h-6 text-white transform"
data-collapse-target="icon"> data-collapse-target="icon">
<use href="#icon-arrow-right"></use> <use href="#icon-arrow-right"></use>
</svg> </svg>
</button> </button>
<div data-collapse-target="container" <div data-collapse-target="container">
class="pt-2">
<f:form.hidden property="dateFrom" <f:form.hidden property="dateFrom"
data="{'search-target': 'dateFrom'}"/> data="{'search-target': 'dateFrom'}"/>
<f:form.hidden property="dateTo" <f:form.hidden property="dateTo"
data="{'search-target': 'dateTo'}"/> data="{'search-target': 'dateTo'}"/>
<div data-controller="datepicker"
<f:if condition="{filterSettings.dateFrom} && {filterSettings.dateTo}"> <div data-controller="collapse datepicker"
data-datepicker-date-from-value="{filterSettings.dateFrom}" data-datepicker-date-from-value="{filterSettings.dateFrom}"
data-datepicker-date-to-value="{filterSettings.dateTo}" data-datepicker-date-to-value="{filterSettings.dateTo}"
</f:if> data-datepicker-min-date-value="{f:format.date(date: 'now', format: 'Y-m-d')}"
data-datepicker-min-date-value="{f:format.date(date: 'now', format: 'Y-m-d')}"> data-action="collapse:click:outside->collapse#close searchbar:input@window->collapse#close"
data-collapse-collapsed-value="true">
<div class="relative">
<input type="text"
data-action="click->collapse#toggle"
class="w-full px-0 bg-transparent border-0 ring-0 focus:ring-0 text-white uppercase cursor-pointer placeholder-white"
placeholder="Zeitraum"
value="{ep:dateRange(dateFrom: filterSettings.dateFrom, dateTo: filterSettings.dateTo, includeLabel: 0)}"
data-searchbar-target="dateRangeLabel"/>
<svg class="w-6 h-6 text-white absolute right-0 top-0 mt-2 cursor-pointer"
data-action="click->collapse#toggle">
<use href="#icon-calendar"></use>
</svg>
<div class="hidden absolute z-20 top-100 mt-2 left-0 min-w-full bg-white p-4 shadow-md rounded"
data-collapse-target="container">
<div class="flex justify-between divide-x divide-gray-200">
<div class="pr-2">
<input type="hidden"
data-datepicker-target="field">
</div>
<div class="flex-1 flex flex-col justify-between pl-2">
<f:if condition="{settings.datePickerPresets}"> <f:if condition="{settings.datePickerPresets}">
<div class="flex items-center justify-between pb-2"> <div class="flex flex-col space-y-4">
<f:for each="{settings.datePickerPresets}" as="preset"> <f:for each="{settings.datePickerPresets}" as="preset">
<button class="daterange__preset" <button class="button button--small button--light w-full"
data-preset='{preset -> f:format.json()}' data-preset='{preset -> f:format.json() -> f:format.raw()}'
data-action="datepicker#selectPreset"> data-action="datepicker#selectPreset">
<span> <span>
{preset.label} {preset.label}
@@ -46,13 +65,12 @@
</f:for> </f:for>
</div> </div>
</f:if> </f:if>
<input type="hidden" <div class="flex flex-col space-y-4">
data-datepicker-target="field"> <button class="button button--small button--light w-full"
<div class="flex items-center justify-between pt-2"> data-action="collapse#close">
<button class="daterange__button focus:outline-none">
schließen schließen
</button> </button>
<button class="daterange__button focus:outline-none" <button class="button button--small button--light w-full"
data-action="datepicker#reset"> data-action="datepicker#reset">
zurücksetzen zurücksetzen
</button> </button>
@@ -60,6 +78,12 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div>
</div>
</div>
<div class="mb-4 p-4 bg-ep-primary text-white" <div class="mb-4 p-4 bg-ep-primary text-white"
data-controller="collapse" data-controller="collapse"
@@ -108,23 +132,34 @@
</svg> </svg>
</button> </button>
<div data-collapse-target="container"> <div data-collapse-target="container">
<ul class="mb-0 p-0"> <ul class="mb-0 p-0 pt-2 space-y-1">
<f:for each="{filterOptions.destinations}" as="destination"> <f:for each="{filterOptions.destinations}" as="destination">
<li> <li>
<f:form.checkbox class="mr-2" <label class="flex items-start">
<f:form.checkbox class="w-5 h-5 border-ep-primary ring-0 bg-transparent focus:ring-0 focus:border-none text-ep-primary"
property="countryUids" property="countryUids"
data="{action: 'search#filter'}" data="{action: 'search#filter'}"
value="{destination.country.uid}"/> value="{destination.country.uid}"/>
<svg class="ml-2 w-6 h-4">
<use href="#icon-flag-{destination.country.code -> f:format.case(mode: 'lower')}"/>
</svg>
<span class="pl-2 leading-none">
{destination.country.label} {destination.country.label}
</span>
</label>
<f:if condition="{destination.regions}"> <f:if condition="{destination.regions}">
<ul class="pl-4 pt-1"> <ul class="py-2 space-y-1">
<f:for each="{destination.regions}" as="region"> <f:for each="{destination.regions}" as="region">
<li> <li>
<f:form.checkbox class="mr-2" <label class="flex items-start">
<f:form.checkbox class="w-5 h-5 border-ep-primary ring-0 bg-transparent focus:ring-0 focus:border-none text-ep-primary"
property="regionUids" property="regionUids"
data="{action: 'search#filter'}" data="{action: 'search#filter'}"
value="{region.uid}"/> value="{region.uid}"/>
<span class="leading-none pl-4">
{region.label} {region.label}
</span>
</label>
</li> </li>
</f:for> </f:for>
</ul> </ul>
@@ -149,15 +184,17 @@
</svg> </svg>
</button> </button>
<div data-collapse-target="container"> <div data-collapse-target="container">
<ul class="mb-0 p-0"> <ul class="mb-0 p-0 pt-2 space-y-1">
<f:for each="{filterOptions.priceRanges}" as="range"> <f:for each="{filterOptions.priceRanges}" as="range">
<li> <li>
<label> <label class="flex items-start">
<f:form.checkbox class="mr-2" <f:form.checkbox class="w-5 h-5 border-ep-primary ring-0 bg-transparent focus:ring-0 focus:border-none text-ep-primary"
property="priceRanges" property="priceRanges"
data="{action: 'search#filter'}" data="{action: 'search#filter'}"
value="{range.uid}"/> value="{range.uid}"/>
<span class="leading-none pl-2">
{ep:priceRange(min: range.min, max: range.max)} {ep:priceRange(min: range.min, max: range.max)}
</span>
</label> </label>
</li> </li>
</f:for> </f:for>
@@ -179,13 +216,12 @@
</svg> </svg>
</button> </button>
<div data-collapse-target="container"> <div data-collapse-target="container">
<div class="border rounded"> <f:form.select class="w-full border-0 focus:ring-0 bg-right mt-2 p-0"
<f:form.select property="pax" property="pax"
options="{filterOptions.pax}" options="{filterOptions.pax}"
data="{action: 'search#filter'}"/> data="{action: 'search#filter'}"/>
</div> </div>
</div> </div>
</div>
<f:variable name="hotelTypes" value="{ <f:variable name="hotelTypes" value="{
1: 'Ferienwohnung', 1: 'Ferienwohnung',
@@ -208,15 +244,17 @@
</svg> </svg>
</button> </button>
<div data-collapse-target="container"> <div data-collapse-target="container">
<ul class="mb-0 p-0"> <ul class="mb-0 p-0 pt-2 space-y-1">
<f:for each="{filterOptions.hotelTypes}" as="type"> <f:for each="{filterOptions.hotelTypes}" as="type">
<li> <li>
<label> <label class="flex items-start">
<f:form.checkbox class="mr-2" <f:form.checkbox class="w-5 h-5 border-ep-primary ring-0 bg-transparent focus:ring-0 focus:border-none text-ep-primary"
property="hotelTypes" property="hotelTypes"
data="{action: 'search#filter'}" data="{action: 'search#filter'}"
value="{type}"/> value="{type}"/>
<span class="leading-none pl-2">
{hotelTypes.{type}} {hotelTypes.{type}}
</span>
</label> </label>
</li> </li>
</f:for> </f:for>
@@ -238,16 +276,18 @@
</svg> </svg>
</button> </button>
<div data-collapse-target="container"> <div data-collapse-target="container">
<ul class="mb-0 p-0"> <ul class="mb-0 p-0 pt-2 space-y-1">
<f:for each="{filterOptions.boardTypes}" as="type"> <f:for each="{filterOptions.boardTypes}" as="type">
<f:if condition="{type.label}"> <f:if condition="{type.label}">
<li> <li>
<label> <label class="flex items-start">
<f:form.checkbox class="mr-2" <f:form.checkbox class="w-5 h-5 border-ep-primary ring-0 bg-transparent focus:ring-0 focus:border-none text-ep-primary"
property="boardTypes" property="boardTypes"
data="{action: 'search#filter'}" data="{action: 'search#filter'}"
value="{type.uid}"/> value="{type.uid}"/>
<span class="pl-2 leading-none">
{type.label} {type.label}
</span>
</label> </label>
</li> </li>
</f:if> </f:if>
@@ -278,15 +318,17 @@
</svg> </svg>
</button> </button>
<div data-collapse-target="container"> <div data-collapse-target="container">
<ul class="mb-0 p-0 p-0"> <ul class="mb-0 p-0 p-0 pt-2 space-y-1">
<f:for each="{filterOptions.roomTypes}" as="type"> <f:for each="{filterOptions.roomTypes}" as="type">
<li> <li>
<label> <label class="flex items-start">
<f:form.checkbox class="mr-2" <f:form.checkbox class="w-5 h-5 border-ep-primary ring-0 bg-transparent focus:ring-0 focus:border-none text-ep-primary"
property="roomTypes" property="roomTypes"
data="{action: 'search#filter'}" data="{action: 'search#filter'}"
value="{type}"/> value="{type}"/>
<span class="leading-none pl-2">
{roomTypes.{type}} {roomTypes.{type}}
</span>
</label> </label>
</li> </li>
</f:for> </f:for>
@@ -309,14 +351,16 @@
</svg> </svg>
</button> </button>
<div data-collapse-target="container"> <div data-collapse-target="container">
<ul class="mb-0 p-0"> <ul class="mb-0 p-0 pt-2 space-y-1">
<li> <li>
<label> <label class="flex items-start">
<f:form.checkbox class="mr-2" <f:form.checkbox class="w-5 h-5 border-ep-primary ring-0 bg-transparent focus:ring-0 focus:border-none text-ep-primary"
property="bus" property="bus"
data="{action: 'search#filter'}" data="{action: 'search#filter'}"
value="1"/> value="1"/>
<span class="leading-none pl-2">
Busanreise Busanreise
</span>
</label> </label>
</li> </li>
</ul> </ul>
@@ -5,7 +5,7 @@
<div class="grid grid-cols-3 gap-8"> <div class="grid grid-cols-3 gap-8">
<div class="col-span-3 lg:col-span-1 relative" <div class="col-span-3 lg:col-span-1 relative"
data-controller="collapse" data-controller="collapse"
data-collapse-until-value="991"> data-collapse-until-value="1024">
<div class="lg:block bg-white p-4" <div class="lg:block bg-white p-4"
data-collapse-target="container"> data-collapse-target="container">
<h3 class="headline headline--underlined mb-4"> <h3 class="headline headline--underlined mb-4">