diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_app.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_app.js index 2d6bcbc3..c78ec536 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_app.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_app.js @@ -54,6 +54,7 @@ document.addEventListener('DOMContentLoaded', () => { +/// LEGACY CODE FROM HERE /// // Import dependencies import Vue from 'vue' @@ -81,7 +82,6 @@ import OsmMap from './components/OsmMap.vue' import Calendar from './components/Calendar.vue' import EventPricetable from './components/EventPriceTable.vue' import ContactForm from './components/ContactForm.vue' -import WatchlistToggle from './components/WatchlistToggle.vue' import Watchlist from './components/Watchlist.vue' import HotelList from './components/HotelList.vue' @@ -113,7 +113,6 @@ new Vue({ Calendar, EventPricetable, ContactForm, - WatchlistToggle, Watchlist, HotelList, MyEp: () => import('./myep/App.vue'), diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_styles.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_styles.js index af6a0214..ed308efd 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_styles.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/_styles.js @@ -3,6 +3,5 @@ require('font-awesome/css/font-awesome.min.css'); require('cookieconsent/build/cookieconsent.min.css'); require('@fancyapps/fancybox/dist/jquery.fancybox.min.css'); -require('slick-carousel/slick/slick.css'); require('leaflet/dist/leaflet.css'); require('flatpickr/dist/flatpickr.css'); diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/HotelList.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/HotelList.vue index b8b0223f..9bbca33c 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/HotelList.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/HotelList.vue @@ -1,12 +1,7 @@ diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/contactbar_controller.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/contactbar_controller.js new file mode 100644 index 00000000..029b07d8 --- /dev/null +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/contactbar_controller.js @@ -0,0 +1,10 @@ +import { Controller } from 'stimulus' + +export default class extends Controller { + + static targets = [ 'watchlist' ] + + updateWatchlist(e) { + this.watchlistTarget.style.display = e.detail.length ? 'block' : 'none' + } +} diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/watchlist_toggle_controller.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/watchlist_toggle_controller.js new file mode 100644 index 00000000..6b0c82fe --- /dev/null +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/controllers/watchlist_toggle_controller.js @@ -0,0 +1,48 @@ +import { Controller } from 'stimulus' + +export default class extends Controller { + + static targets = [ 'tooltip', 'label', 'icon' ] + static values = { uid: String, onList: Boolean } + + connect() { + const list = this.getCurrentList() + this.onListValue = -1 !== list.indexOf(this.uidValue) + } + + toggle(e) { + e.preventDefault() + const list = this.getCurrentList() + const listIndex = list.indexOf(this.uidValue) + if (-1 === listIndex) { + list.push(this.uidValue) + this.onListValue = true + } else { + list.splice(listIndex, 1) + this.onListValue = false + } + sessionStorage.setItem('myep-watchlist', JSON.stringify(list)) + window.dispatchEvent(new CustomEvent('watchlist-update', { + detail: list + })) + } + + onListValueChanged() { + const label = this.onListValue ? 'von der Merkliste entfernen' : 'auf die Merkliste setzen' + if (this.hasTooltipTarget) { + this.tooltipTarget.setAttribute('aria-label', label) + } + if (this.hasLabelTarget) { + this.labelTarget.textContent = label + } + if (this.hasIconTarget) { + this.iconTarget.classList.toggle('fa-minus-circle', this.onListValue) + this.iconTarget.classList.toggle('fa-plus-circle', !this.onListValue) + } + } + + getCurrentList() { + const initialList = JSON.parse(sessionStorage.getItem('myep-watchlist')) + return initialList ? initialList : [] + } +} diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/index.js b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/index.js index 3ac330e2..6ebb41fa 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/index.js +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/store/index.js @@ -19,7 +19,6 @@ const defaultUserData = { phoneMobile: '', phonePrivate: '', newsletter: false, - watchList: [] }; export default new Vuex.Store({ @@ -47,16 +46,6 @@ export default new Vuex.Store({ state.config = JSON.parse(configElement.innerHTML); axios.defaults.baseURL = state.config.myEpApiBaseUrl; }, - initWatchlist(state) { - if (!sessionStorage.getItem('myep-watchlist')) { - sessionStorage.setItem('myep-watchlist', JSON.stringify([])); - } - state.userData.watchList = JSON.parse(sessionStorage.getItem('myep-watchlist')); - }, - setWatchlist(state, list) { - state.userData.watchList = list; - sessionStorage.setItem('myep-watchlist', JSON.stringify(list)); - }, setUserData(state, data) { data.watchList = [...state.userData.watchList, ...data.watchList]; state.userData = data; @@ -73,7 +62,6 @@ export default new Vuex.Store({ state.refreshToken = null; sessionStorage.removeItem('myep-auth-token'); sessionStorage.removeItem('myep-refresh-token'); - sessionStorage.removeItem('myep-watchlist'); }, alert(state, payload) { state.alert = payload; @@ -94,7 +82,6 @@ export default new Vuex.Store({ actions: { init({commit}) { commit('initConfig'); - commit('initWatchlist'); commit('initSession'); }, login({commit, dispatch}, credentials) { @@ -155,19 +142,6 @@ export default new Vuex.Store({ commit('endLoading'); }); }, - watchlistToggle({commit, state}, uid) { - let list = state.userData.watchList; - let watchlistIndex = list.indexOf(uid); - if (watchlistIndex === -1) { - list.push(uid) - } else { - list.splice(watchlistIndex, 1) - } - commit('setWatchlist', list); - if (!!state.authToken) { - axios.put('/api/watchlist', list) - } - }, loadAddress({commit, state}) { commit('beginLoading'); @@ -211,7 +185,6 @@ export default new Vuex.Store({ } }, getters: { - watchlistCount: state => state.userData.watchList.length, onWatchlist: state => uid => state.userData.watchList.indexOf(uid) !== -1, isLoggedIn: state => !!state.authToken, isTeamer: state => !!state.userData.isTeamer, diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Partials/ContactBar.html b/public/typo3conf/ext/ep_theme/Resources/Private/Partials/ContactBar.html index 695c025f..6ab25b88 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Partials/ContactBar.html +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Partials/ContactBar.html @@ -1,7 +1,7 @@ {namespace v=FluidTYPO3\Vhs\ViewHelpers} -