WIP Migrate bs collapse
This commit is contained in:
@@ -120,7 +120,6 @@ new Vue({
|
||||
return {
|
||||
maxWindowWidth: 991,
|
||||
searchBoxVisible: false,
|
||||
navbarLocked: false,
|
||||
searchbarFixed: false,
|
||||
mobileMode: false,
|
||||
backgroundImageMode: 'mobile'
|
||||
@@ -138,7 +137,6 @@ new Vue({
|
||||
this.scroll(top);
|
||||
},
|
||||
scroll (top) {
|
||||
this.navbarLocked = true;
|
||||
window.scrollTo({ top: top, behavior: 'smooth' })
|
||||
},
|
||||
toggleSearchbox () {
|
||||
@@ -167,14 +165,6 @@ new Vue({
|
||||
});
|
||||
}
|
||||
},
|
||||
initFilterpanel () {
|
||||
const $filterPanel = $('#filterpanel');
|
||||
if (this.mobileMode) {
|
||||
$filterPanel.removeClass('in');
|
||||
} else {
|
||||
$filterPanel.addClass('in');
|
||||
}
|
||||
},
|
||||
initListeners () {
|
||||
$window.on('resize', () => {
|
||||
this.setMobileMode();
|
||||
@@ -191,11 +181,6 @@ new Vue({
|
||||
},
|
||||
created () {
|
||||
this.$store.dispatch('init');
|
||||
EventBus.$on('ajaxContentLoaded', () => {
|
||||
Vue.nextTick(() => {
|
||||
this.initFilterpanel();
|
||||
});
|
||||
});
|
||||
EventBus.$on('scrollTo', (anchorId, offset) => {
|
||||
document.getElementById(anchorId).scrollIntoView({ behavior: 'smooth' })
|
||||
});
|
||||
@@ -204,7 +189,6 @@ new Vue({
|
||||
Vue.nextTick(() => {
|
||||
this.setMobileMode();
|
||||
this.initListeners();
|
||||
this.initFilterpanel();
|
||||
this.initDropdownMenuBehavior();
|
||||
});
|
||||
}
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
import { Controller } from 'stimulus'
|
||||
|
||||
export default class extends Controller {
|
||||
|
||||
static classes = [ 'collapsed' ]
|
||||
static targets = [ 'container' ]
|
||||
static values = { collapsed: Boolean, until: Number, from: Number }
|
||||
|
||||
connect() {
|
||||
if (this.hasUntilValue && window.innerWidth < this.untilValue) {
|
||||
this.collapsedValue = true
|
||||
}
|
||||
if (this.hasFromValue && window.innerWidth > this.fromValue) {
|
||||
this.collapsedValue = true
|
||||
}
|
||||
}
|
||||
|
||||
toggle(e) {
|
||||
e.preventDefault()
|
||||
this.collapsedValue = !this.collapsedValue
|
||||
}
|
||||
|
||||
collapsedValueChanged() {
|
||||
const collapsedClass = this.hasCollapsedClass ? this.collapsedClass : 'hidden'
|
||||
this.containerTarget.classList.toggle(collapsedClass, this.collapsedValue)
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -4,7 +4,20 @@ export default class extends Controller {
|
||||
|
||||
static targets = [ 'entry' ]
|
||||
|
||||
apply(e) {
|
||||
toggle(e) {
|
||||
e.preventDefault()
|
||||
const selectedEntry = e.target.parentNode
|
||||
selectedEntry.dataset.expanded = "1"
|
||||
selectedEntry.children[1].classList.remove('hidden')
|
||||
this.entryTargets.forEach(entry => {
|
||||
if (entry !== selectedEntry) {
|
||||
entry.dataset.expanded = "0"
|
||||
entry.children[1].classList.toggle('hidden', true)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
filter(e) {
|
||||
const query = e.target.value
|
||||
if (query.length < 3) {
|
||||
this.entryTargets.forEach(entry => {
|
||||
@@ -87,6 +87,9 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
&[data-expanded="1"] a.headline:before {
|
||||
content: "\f107";
|
||||
}
|
||||
div{
|
||||
background-color:$color-bg-second;
|
||||
padding:0px 20px 20px 20px;
|
||||
|
||||
@@ -167,6 +167,9 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
&[data-collapse-collapsed-value="true"] a:before {
|
||||
content: "\f107";
|
||||
}
|
||||
&:last-child{
|
||||
a.collapsed{
|
||||
box-shadow:none;
|
||||
|
||||
@@ -3,20 +3,20 @@
|
||||
<div class="container-fluid ep-disturber faq">
|
||||
<div>
|
||||
<div>
|
||||
<div class="container" data-controller="faq-filter">
|
||||
<div class="container" data-controller="faq">
|
||||
<span class="headline headline--3 headline--disturber">Häufig gestellte Fragen</span>
|
||||
<f:if condition="{filter}">
|
||||
<div class="faq-filter">
|
||||
<input type="text" data-action="faq-filter#apply" class="form-control faq-filter__field" placeholder="Suchbegriff">
|
||||
<input type="text" data-action="faq#filter" class="form-control faq-filter__field" placeholder="Suchbegriff">
|
||||
</div>
|
||||
</f:if>
|
||||
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
||||
<div class="panel-group">
|
||||
<f:for each="{faqs}" as="faq" iteration="iteration">
|
||||
<div class="panel panel-default" data-faq-filter-target="entry">
|
||||
<a class="headline headline--4{f:if(condition: iteration.isFirst, else: ' collapsed')}"
|
||||
role="button" data-toggle="collapse" data-parent="#accordion"
|
||||
href="#faq-{faq.uid}" {f:if(condition: iteration.isFirst, then: 'aria-expanded="true" ')}aria-controls="faq-{faq.uid}">{faq.question}</a>
|
||||
<div id="faq-{faq.uid}" class="panel-collapse collapse{f:if(condition: iteration.isFirst, then: ' in')}" role="tabpanel" data-faq-answer>
|
||||
<div class="panel panel-default" data-faq-target="entry" data-expanded="{f:if(condition: iteration.isFirst, then: '1', else: '0')}">
|
||||
<a class="headline headline--4" role="button" data-action="faq#toggle" href="#">
|
||||
{faq.question}
|
||||
</a>
|
||||
<div{f:if(condition: iteration.isFirst, else: ' class="hidden"')} role="tabpanel" data-collapse-target="container">
|
||||
{faq.answer -> f:format.html()}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,14 +6,13 @@
|
||||
<div class="row accordion panel-group" id="ep-travel-accordion" role="tablist" aria-multiselectable="true">
|
||||
<v:menu pageUid="{settings.footerNavPid}" levels="2" expandAll="true">
|
||||
<f:for each="{menu}" as="menuheader" iteration="iteration">
|
||||
<div class="col-sm-3">
|
||||
<div class="col-sm-3" data-controller="collapse" data-collapse-until-value="991" data-collapse-collapsed-class="hidden">
|
||||
<span class="headline headline--4 headline--footer hidden-xs">{menuheader.title}</span>
|
||||
<a class="headline headline--4 headline--footer visible-xs collapsed" role="button"
|
||||
data-toggle="collapse" data-parent="#ep-travel-accordion"
|
||||
href="#ep-travel-footer-{iteration.cycle}" aria-expanded="true"
|
||||
aria-controls="ep-travel-footer-{iteration.cycle}">{menuheader.title}</a>
|
||||
<a class="headline headline--4 headline--footer visible-xs" role="button" data-action="collapse#toggle" href="#">
|
||||
{menuheader.title}
|
||||
</a>
|
||||
<v:menu pageUid="{menuheader.uid}" useShortcutUid="true" as="submenu">
|
||||
<ul class="collapse list-disc" id="ep-travel-footer-{iteration.cycle}">
|
||||
<ul class="list-disc lg:block" data-collapse-target="container">
|
||||
<f:for each="{submenu}" as="submenuitem">
|
||||
<f:if condition="{submenuitem.doktype} == 3">
|
||||
<f:then>
|
||||
|
||||
@@ -43,14 +43,15 @@
|
||||
</f:section>
|
||||
|
||||
<f:section name="CollapsibleSimple">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel panel-default" data-controller="collapse" data-collapse-collapsed-value="true">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse{id}"
|
||||
aria-expanded="true" aria-controls="collapseOne">{label}</a>
|
||||
<a role="button" href="#" data-action="collapse#toggle">
|
||||
{label}
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapse{id}" class="panel-collapse collapse">
|
||||
<div class="hidden" data-collapse-target="container">
|
||||
<div class="panel-body">
|
||||
<f:if condition="{name}">
|
||||
<div class="form-group">
|
||||
@@ -76,14 +77,15 @@
|
||||
</f:section>
|
||||
|
||||
<f:section name="CollapsibleHotel">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel panel-default" data-controller="collapse" data-collapse-collapsed-value="true">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse{id}"
|
||||
aria-expanded="true" aria-controls="collapseOne">{label}</a>
|
||||
<a role="button" href="#" data-action="collapse#toggle">
|
||||
{label}
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapse{id}" class="panel-collapse collapse">
|
||||
<div class="hidden" data-collapse-target="container">
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<label class="control-label">Name</label>
|
||||
@@ -235,14 +237,15 @@
|
||||
</f:section>
|
||||
|
||||
<f:section name="CollapsibleCity">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel panel-default" data-controller="collapse" data-collapse-collapsed-value="true">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse{id}"
|
||||
aria-expanded="true" aria-controls="collapseOne">{label}</a>
|
||||
<a role="button" href="#" data-action="collapse#toggle">
|
||||
{label}
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapse{id}" class="panel-collapse collapse">
|
||||
<div class="hidden" data-collapse-target="container">
|
||||
<div class="panel-body">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
@@ -268,14 +271,15 @@
|
||||
</f:section>
|
||||
|
||||
<f:section name="CollapsibleRegion">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel panel-default" data-controller="collapse" data-collapse-collapsed-value="true">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse{id}"
|
||||
aria-expanded="true" aria-controls="collapseOne">{label}</a>
|
||||
<a role="button" href="#" data-action="collapse#toggle">
|
||||
{label}
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapse{id}" class="panel-collapse collapse">
|
||||
<div class="hidden" data-collapse-target="container">
|
||||
<div class="panel-body">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
@@ -329,14 +333,15 @@
|
||||
</f:section>
|
||||
|
||||
<f:section name="CollapsibleImages">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel panel-default" data-controller="collapse" data-collapse-collapsed-value="true">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse{id}"
|
||||
aria-expanded="true" aria-controls="collapseOne">{label}</a>
|
||||
<a role="button" href="#" data-action="collapse#toggle">
|
||||
{label}
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapse{id}" class="panel-collapse collapse">
|
||||
<div class="hidden" data-collapse-target="containet">
|
||||
<div class="panel-body">
|
||||
<f:for each="{images}" as="image">
|
||||
<a href="{image}" target="_blank">{image}</a><br>
|
||||
|
||||
@@ -21,12 +21,13 @@
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<p class="hidden-md hidden-lg">
|
||||
<button class="button button--full button--small" role="button" data-toggle="collapse"
|
||||
href="#filterpanel"><i class="fa fa-toggle-on"></i> Filter ein-/ausblenden</button>
|
||||
<div class="col-md-3" data-controller="collapse" data-collapse-collapsed-class="hidden" data-collapse-until-value="991">
|
||||
<p class="lg:hidden">
|
||||
<button class="button button--full button--small" role="button" data-action="collapse#toggle">
|
||||
<i class="fa fa-toggle-on"></i> Filter ein-/ausblenden
|
||||
</button>
|
||||
</p>
|
||||
<div id="filterpanel" class="ajaxtarget collapse in" v-cloak>
|
||||
<div id="filterpanel" class="hidden lg:block" v-cloak data-collapse-target="container">
|
||||
<concept-buttons :concepts="filterOptions.concepts"></concept-buttons>
|
||||
<h3>Filter</h3>
|
||||
<a v-if="filterCount > 0"
|
||||
|
||||
Reference in New Issue
Block a user