{"version":3,"sources":["actions/actionTypes.ts","store.ts","types.ts","reducers/Reducers.ts","Constants.ts","Api.ts","actions/Actions.ts","Notifier.tsx","history.ts","WithStoreConfig.tsx","TitleSection.tsx","AboutUs.tsx","Contact.tsx","Footer.tsx","Anchor.tsx","Header.tsx","Reservation.tsx","Events.tsx","Menu.tsx","Gallery.tsx","App.tsx","index.tsx"],"names":["ActionType","LunchMenuType","STORE","app","notifications","categories","products","allergens","galleryImages","storeConfiguration","closures","reducer","state","action","type","REMOVE_NOTIFICATION","filter","key","payload","ENQUEUE_NOTIFICATION","concat","SET_CATEGORIES","SET_PRODUCTS","SET_ALLERGENS","SET_GALLERY_IMAGES","SET_STORE_CONFIGURATION","SET_CLOSURES","MENUS","ABOUT_US","hash","title","order","CONTACT","DRINKS","EVENTS","ignore","FOOD","GALLERY","IMPRESSUM","RESERVATION","HEADER_ID","AMAZON_BASE_URL","SAO_BASE_URL","required","value","undefined","getUpdatedClosure","closure","effectiveByDate","moment","endDate","startDate","getWithToken","url","token","fetch","headers","Authorization","then","res","status","json","text","err","Error","login","method","body","JSON","stringify","username","password","storeID","reserveTable","values","getCategories","getProducts","getAllergens","getGalleryImages","getStoreConfiguration","getClosures","map","getErrorNotification","Date","getTime","message","options","variant","enqueueNotification","notification","setCategories","setProducts","setAllergens","setClosures","displayed","Notifier","dispatch","useDispatch","useSelector","store","useSnackbar","enqueueSnackbar","closeSnackbar","React","forEach","id","includes","onExited","_e","myKey","removeNotification","history","createBrowserHistory","withStoreConfig","Component","props","className","src","shortUniqueID","alt","style","backgroundImage","handleContact","useCallback","form","Api","reset","resetFieldState","catch","renderContactForm","handleSubmit","submitting","validating","onSubmit","name","validate","input","meta","placeholder","touched","error","disabled","width","height","border","allowFullScreen","loading","referrerPolicy","render","subscribeToNewsletter","storeSecretID","renderForm","href","target","rel","year","Anchor","children","onClick","handleAnchorClick","elementTop","document","getElementById","offsetTop","_","isNil","window","scrollTo","top","offsetHeight","behavior","getHeaderClassName","scrollY","Header","headerRef","useRef","useState","selectedMenu","setSelectedMenu","setClassName","anchorEl","setAnchorEl","open","Boolean","scrollHandler","headerHeight","current","fromTop","pageYOffset","Object","reduce","acc","handleClose","useEffect","addEventListener","removeEventListener","handleClick","event","currentTarget","handleScrollToTop","menus","sort","a","b","classnames","active","DAILY","FIXED","lunchMenuType","lunchMenuFileName","unshift","ref","onClose","MenuListProps","WORKING_DAYS","shouldDisableDate","d","day","some","isBetween","FormDateTimePicker","handleDate","DateTimePicker","inputFormat","disablePast","showTodayButton","disableMaskedInput","renderInput","params","TextField","renderReservationForm","min","max","component","handleReservation","numberOfPersons","Number","date","format","fontSize","fontWeight","LocalizationProvider","dateAdapter","AdapterMoment","initialValues","add","Menu","selectedCategory","setSelectedCategory","filteredProducts","setFilteredProducts","handleCategoryClick","productCategoryID","categoryId","classNames","backgroundRepeat","backgroundPosition","backgroundSize","selected","chunk","Math","ceil","length","i","description","productAllergens","price","isVegan","isVegetarian","productVarieties","allergenCodes","allergenID","find","code","c","productPrice","v","join","hasSinglePrice","productCategoryMiscInfo","isWine","full","p","setOpen","selectedImage","setSelectedImage","handleImageClick","image","handleLightboxClose","caption","TwitterShareButton","TwitterIcon","size","round","FacebookShareButton","FacebookIcon","mainSrc","onCloseRequest","imageCaption","App","showModal","setShowModal","currentClosures","useMemo","Promise","all","images","configuration","handleModalClose","Modal","classes","root","closureNotification","Fragment","isFood","isDrinks","middlewares","thunk","routerMiddleware","createRootReducer","h","combineReducers","router","connectRouter","Reducers","ReactDOM","initialState","createStore","applyMiddleware","configureStore","maxSnack","anchorOrigin","vertical","horizontal","hideIconVariant"],"mappings":"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","file":"static/js/main.a82b66af.chunk.js","sourcesContent":["import { ThunkAction as ThunkActionCreator } from 'redux-thunk';\r\nimport { AnyAction } from 'redux';\r\nimport { SnackbarKey } from 'notistack';\r\nimport { AppStore, Store } from '../types';\r\n\r\nexport enum ActionType {\r\n REMOVE_NOTIFICATION = 'REMOVE_NOTIFICATION',\r\n ENQUEUE_NOTIFICATION = 'ENQUEUE_NOTIFICATION',\r\n SET_CATEGORIES = 'SET_CATEGORIES',\r\n SET_PRODUCTS = 'SET_PRODUCTS',\r\n SET_ALLERGENS = 'SET_ALLERGENS',\r\n SET_GALLERY_IMAGES = 'SET_GALLERY_IMAGES',\r\n SET_STORE_CONFIGURATION = 'SET_STORE_CONFIGURATION',\r\n SET_CLOSURES = 'SET_CLOSURES'\r\n}\r\n\r\ninterface CloseNotification {\r\n type: ActionType.REMOVE_NOTIFICATION;\r\n payload: SnackbarKey;\r\n}\r\n\r\ninterface EnqueueNotification {\r\n type: ActionType.ENQUEUE_NOTIFICATION;\r\n payload: AppStore['notifications'][number];\r\n}\r\n\r\ninterface SetCategories {\r\n type: ActionType.SET_CATEGORIES;\r\n payload: AppStore['categories'];\r\n}\r\n\r\ninterface SetProducts {\r\n type: ActionType.SET_PRODUCTS;\r\n payload: AppStore['products'];\r\n}\r\n\r\ninterface SetAllergens {\r\n type: ActionType.SET_ALLERGENS;\r\n payload: AppStore['allergens'];\r\n}\r\n\r\ninterface SetGalleryImages {\r\n type: ActionType.SET_GALLERY_IMAGES;\r\n payload: AppStore['galleryImages'];\r\n}\r\n\r\ninterface SetStoreConfiguration {\r\n type: ActionType.SET_STORE_CONFIGURATION;\r\n payload: AppStore['storeConfiguration'];\r\n}\r\n\r\ninterface SetClosures {\r\n type: ActionType.SET_CLOSURES;\r\n payload: AppStore['closures'];\r\n}\r\n\r\nexport type Action =\r\n | CloseNotification\r\n | EnqueueNotification\r\n | SetCategories\r\n | SetProducts\r\n | SetAllergens\r\n | SetGalleryImages\r\n | SetStoreConfiguration\r\n | SetClosures;\r\n\r\nexport type ThunkAction = ThunkActionCreator;\r\n","import { Store } from './types';\r\n\r\nconst STORE: Store = {\r\n app: {\r\n notifications: [],\r\n categories: [],\r\n products: [],\r\n allergens: [],\r\n galleryImages: [],\r\n storeConfiguration: null,\r\n closures: []\r\n }\r\n};\r\n\r\nexport default STORE;\r\n","import { RouterState } from 'connected-react-router';\r\nimport { OptionsObject, SnackbarKey, SnackbarMessage } from 'notistack';\r\n\r\nexport interface Category {\r\n id: number;\r\n name: string;\r\n productCategoryMiscInfo: {\r\n id: number;\r\n isDailyMenu: boolean;\r\n isDrinks: boolean;\r\n isFood: boolean;\r\n isWine: boolean;\r\n };\r\n}\r\n\r\nexport interface Product {\r\n id: number;\r\n description: string;\r\n isVegan: boolean;\r\n isVegetarian: boolean;\r\n name: string;\r\n price: number;\r\n productAllergens: { allergenID: number }[];\r\n productCategoryID: number;\r\n productVarieties: {\r\n id: number;\r\n name: string;\r\n price: number;\r\n isDefault: boolean;\r\n }[];\r\n}\r\n\r\nexport interface Allergen {\r\n id: number;\r\n code: string;\r\n}\r\n\r\nexport enum LunchMenuType {\r\n NO_MENU = 1,\r\n DAILY = 2,\r\n FIXED = 3\r\n}\r\n\r\ninterface StoreConfiguration {\r\n licenceID: number;\r\n defaultAllowedPeoplePerTable: number;\r\n canUserPayWithCard: boolean;\r\n isCardReaderMobile: boolean;\r\n cardReaderAmount: number;\r\n providesFreeWifi: boolean;\r\n hasOrderGeolocationActivated: boolean;\r\n hasOrder2FaAuthenticationEnabled: boolean;\r\n hasConfiguredLogo: boolean;\r\n shortUniqueID: string;\r\n paysMonthly: boolean;\r\n storeName: string;\r\n id: number;\r\n timestamp: string;\r\n selectedLanguages: {\r\n languageID: number;\r\n timestamp: string;\r\n id: number;\r\n }[];\r\n lunchMenuFileName: string;\r\n lunchMenuType: LunchMenuType;\r\n}\r\n\r\nexport interface AppStore {\r\n notifications: INotification[];\r\n categories: Category[];\r\n products: Product[];\r\n allergens: Allergen[];\r\n galleryImages: { name: string; id: number }[];\r\n storeConfiguration: StoreConfiguration;\r\n closures: Closure[];\r\n}\r\n\r\nexport interface Store {\r\n router?: RouterState;\r\n app: AppStore;\r\n}\r\n\r\nexport interface INotification {\r\n message: SnackbarMessage;\r\n options: OptionsObject;\r\n key: SnackbarKey;\r\n}\r\n\r\nexport type Closure = {\r\n closureNotification: string;\r\n effectiveByDate: T;\r\n startDate: T;\r\n endDate: T;\r\n id: number;\r\n storeID: number;\r\n shortDescription: string;\r\n};\r\n","import { Action, ActionType } from '../actions/actionTypes';\r\nimport STORE from '../store';\r\nimport { AppStore } from '../types';\r\n\r\n// eslint-disable-next-line default-param-last\r\nconst reducer = (state = STORE.app, action: Action): AppStore => {\r\n switch (action.type) {\r\n case ActionType.REMOVE_NOTIFICATION:\r\n return {\r\n ...state,\r\n notifications: state.notifications.filter(\r\n ({ key }) => key !== action.payload\r\n )\r\n };\r\n case ActionType.ENQUEUE_NOTIFICATION:\r\n return {\r\n ...state,\r\n notifications: state.notifications.concat(action.payload)\r\n };\r\n case ActionType.SET_CATEGORIES:\r\n return { ...state, categories: action.payload };\r\n case ActionType.SET_PRODUCTS:\r\n return { ...state, products: action.payload };\r\n case ActionType.SET_ALLERGENS:\r\n return { ...state, allergens: action.payload };\r\n case ActionType.SET_GALLERY_IMAGES:\r\n return { ...state, galleryImages: action.payload };\r\n case ActionType.SET_STORE_CONFIGURATION:\r\n return { ...state, storeConfiguration: action.payload };\r\n case ActionType.SET_CLOSURES:\r\n return { ...state, closures: action.payload };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","import moment from 'moment-timezone';\r\nimport { Closure } from './types';\r\n\r\nexport const MENUS: Record<\r\n string,\r\n {\r\n hash: string;\r\n title?: string;\r\n order?: number;\r\n ignore?: boolean;\r\n }\r\n> = {\r\n ABOUT_US: { hash: 'about-us', title: 'ÜBER UNS', order: 1 },\r\n CONTACT: { hash: 'contact', title: 'KONTAKT', order: 6 },\r\n DRINKS: { hash: 'drinks', title: 'GETRÄNKE', order: 3 },\r\n EVENTS: { hash: 'events', ignore: true },\r\n FOOD: { hash: 'food', title: 'SPEISEN', order: 2 },\r\n GALLERY: { hash: 'gallery', title: 'GALERIE', order: 5 },\r\n IMPRESSUM: { hash: 'impressum', title: 'IMPRESSUM', order: 7 },\r\n RESERVATION: { hash: 'reservation', title: 'RESERVIERUNG', order: 4 }\r\n};\r\n\r\nexport const HEADER_ID = 'header';\r\n\r\nexport const AMAZON_BASE_URL = 'https://d1oxmbo269r15r.cloudfront.net/stores';\r\n\r\nexport const BASE_URL =\r\n 'https://personalizedgenericapi.azurewebsites.net/api/Restaurant';\r\n\r\nexport const SAO_BASE_URL = 'https://backbonedev.scanandorder.eu/api';\r\n\r\nexport const required = (value: string) => (value ? undefined : 'Erforderliches Feld');\r\n\r\nexport const getUpdatedClosure = (closure: Closure): Closure => ({\r\n ...closure,\r\n effectiveByDate: moment(closure.effectiveByDate),\r\n endDate: moment(closure.endDate),\r\n startDate: moment(closure.startDate)\r\n});\r\n","import { BASE_URL, getUpdatedClosure, SAO_BASE_URL } from './Constants';\r\nimport { Category, Product, Allergen, AppStore, Closure } from './types';\r\n\r\nconst getWithToken = (url: string, token: string) =>\r\n fetch(`${SAO_BASE_URL}/${url}`, {\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n }).then(res => {\r\n if (res.status === 200) {\r\n return res.json();\r\n }\r\n\r\n return res.text().then(err => {\r\n throw Error(\r\n `Ein Fehler passiert... Code: ${res.status}${\r\n err ? `, Message: ${err}` : ''\r\n }`\r\n );\r\n });\r\n });\r\n\r\nexport const registerToNewsletter = (values: { fullName: string; email: string }) =>\r\n fetch(`${BASE_URL}/RegisterToNewsletter`, {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n ...values,\r\n storeSecretID: 'anything'\r\n }),\r\n headers: { 'Content-Type': 'application/json' }\r\n });\r\n\r\nexport const login = (): Promise<{ token: string }> =>\r\n fetch(`${SAO_BASE_URL}/Account/Login`, {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n username: 'fs',\r\n password: 'Oav4zaif#',\r\n storeID: 27\r\n }),\r\n headers: { 'Content-Type': 'application/json' }\r\n }).then(res => {\r\n if (res.status === 200) {\r\n return res.json();\r\n }\r\n\r\n return res.text().then(err => {\r\n throw Error(\r\n `Ein Fehler passiert... Code: ${res.status}${\r\n err ? `, Message: ${err}` : ''\r\n }`\r\n );\r\n });\r\n });\r\n\r\nexport const reserveTable = (token: string, values: Record) =>\r\n fetch(`${SAO_BASE_URL}/Reservations/AddNew`, {\r\n method: 'POST',\r\n body: JSON.stringify(values),\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n }).then(res =>\r\n res.text().then(err => {\r\n if (res.status === 200) {\r\n return;\r\n }\r\n\r\n throw Error(\r\n `Ein Fehler passiert... Code: ${res.status}${\r\n err ? `, Message: ${err}` : ''\r\n }`\r\n );\r\n })\r\n );\r\n\r\nexport const getCategories = (token: string): Promise =>\r\n getWithToken('ProductCategories', token);\r\n\r\nexport const getProducts = (token: string): Promise =>\r\n getWithToken('Products', token);\r\n\r\nexport const getAllergens = (token: string): Promise =>\r\n getWithToken('Allergens', token);\r\n\r\nexport const getGalleryImages = (token: string): Promise =>\r\n getWithToken('GalleryImages ', token);\r\n\r\nexport const getStoreConfiguration = (\r\n token: string\r\n): Promise => getWithToken('StoreConfiguration', token);\r\n\r\nexport const contact = (values: Record) =>\r\n login().then(({ token }) =>\r\n fetch(`${SAO_BASE_URL}/Misc/ContactStore`, {\r\n method: 'POST',\r\n body: JSON.stringify(values),\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n 'Content-Type': 'application/json'\r\n }\r\n }).then(res =>\r\n res.text().then(err => {\r\n if (res.status === 200) {\r\n return;\r\n }\r\n\r\n throw Error(\r\n `Ein Fehler passiert... Code: ${res.status}${\r\n err ? `, Message: ${err}` : ''\r\n }`\r\n );\r\n })\r\n )\r\n );\r\n\r\nexport const getClosures = (token: string): Promise =>\r\n getWithToken('WorkingHours/GetClosures', token).then(\r\n (closures: Closure[]) => closures.map(getUpdatedClosure)\r\n );\r\n","import { SnackbarKey } from 'notistack';\r\nimport { AppStore, INotification } from '../types';\r\nimport { Action, ActionType, ThunkAction } from './actionTypes';\r\nimport * as Api from '../Api';\r\n\r\nconst getErrorNotification = (err: string): INotification => ({\r\n key: new Date().getTime(),\r\n message: err,\r\n options: {\r\n variant: 'error'\r\n }\r\n});\r\n\r\nexport const removeNotification = (key: SnackbarKey): Action => ({\r\n type: ActionType.REMOVE_NOTIFICATION,\r\n payload: key\r\n});\r\n\r\nexport const enqueueNotification = (\r\n notification: AppStore['notifications'][number]\r\n): Action => ({\r\n type: ActionType.ENQUEUE_NOTIFICATION,\r\n payload: notification\r\n});\r\n\r\nconst setCategories = (categories: AppStore['categories']): Action => ({\r\n type: ActionType.SET_CATEGORIES,\r\n payload: categories\r\n});\r\n\r\nconst setProducts = (products: AppStore['products']): Action => ({\r\n type: ActionType.SET_PRODUCTS,\r\n payload: products\r\n});\r\n\r\nconst setAllergens = (allergens: AppStore['allergens']): Action => ({\r\n type: ActionType.SET_ALLERGENS,\r\n payload: allergens\r\n});\r\n\r\nconst setGalleryImages = (images: AppStore['galleryImages']): Action => ({\r\n type: ActionType.SET_GALLERY_IMAGES,\r\n payload: images\r\n});\r\n\r\nconst setStoreConfiguration = (\r\n configuration: AppStore['storeConfiguration']\r\n): Action => ({\r\n type: ActionType.SET_STORE_CONFIGURATION,\r\n payload: configuration\r\n});\r\n\r\nconst setClosures = (closures: AppStore['closures']): Action => ({\r\n type: ActionType.SET_CLOSURES,\r\n payload: closures\r\n});\r\n\r\nexport const reserveTable =\r\n (values: Record): ThunkAction> =>\r\n async dispatch => {\r\n try {\r\n const { token } = await Api.login();\r\n return Api.reserveTable(token, values).then(\r\n () => {\r\n dispatch(\r\n enqueueNotification({\r\n key: new Date().getTime(),\r\n message:\r\n '✓ Ihre Tischreservierung wird erfolgreih gespeichert.',\r\n options: {\r\n variant: 'success'\r\n }\r\n })\r\n );\r\n },\r\n err => {\r\n dispatch(enqueueNotification(getErrorNotification(err.message)));\r\n return null;\r\n }\r\n );\r\n } catch (err) {\r\n dispatch(enqueueNotification(getErrorNotification(err)));\r\n return null;\r\n }\r\n };\r\n\r\nexport const fetchData = (): ThunkAction => async dispatch => {\r\n try {\r\n const { token } = await Api.login();\r\n Promise.all([\r\n Api.getCategories(token),\r\n Api.getProducts(token),\r\n Api.getAllergens(token),\r\n Api.getGalleryImages(token),\r\n Api.getStoreConfiguration(token),\r\n Api.getClosures(token)\r\n ]).then(\r\n ([\r\n categories,\r\n products,\r\n allergens,\r\n galleryImages,\r\n storeConfiguration,\r\n closures\r\n ]) => {\r\n dispatch(setCategories(categories));\r\n dispatch(setProducts(products));\r\n dispatch(setAllergens(allergens));\r\n dispatch(setGalleryImages(galleryImages));\r\n dispatch(setStoreConfiguration(storeConfiguration));\r\n dispatch(setClosures(closures));\r\n }\r\n );\r\n } catch (err) {\r\n dispatch(enqueueNotification(getErrorNotification(err)));\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useSnackbar, SnackbarKey } from 'notistack';\r\nimport { Store } from './types';\r\nimport { removeNotification } from './actions/Actions';\r\n\r\nlet displayed: SnackbarKey[] = [];\r\n\r\nconst Notifier: React.FC = () => {\r\n const dispatch = useDispatch();\r\n const notifications = useSelector((store: Store) => store.app.notifications);\r\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\r\n\r\n const storeDisplayed = (id: SnackbarKey) => {\r\n displayed = displayed.concat(id);\r\n };\r\n\r\n const removeDisplayed = (id: SnackbarKey) => {\r\n displayed = displayed.filter(key => id !== key);\r\n };\r\n\r\n React.useEffect(() => {\r\n notifications.forEach(({ key, message, options = {} }) => {\r\n // do nothing if snackbar is already displayed\r\n if (displayed.includes(key)) {\r\n return;\r\n }\r\n\r\n // display snackbar using notistack\r\n enqueueSnackbar(message, {\r\n key,\r\n ...options,\r\n onExited: (_e, myKey) => {\r\n // remove this snackbar from redux store\r\n dispatch(removeNotification(myKey));\r\n removeDisplayed(myKey);\r\n }\r\n });\r\n\r\n // keep track of snackbars that we've displayed\r\n storeDisplayed(key);\r\n });\r\n }, [notifications, closeSnackbar, enqueueSnackbar, dispatch]);\r\n\r\n return null;\r\n};\r\n\r\nexport default Notifier;\r\n","import { createBrowserHistory } from 'history';\r\n\r\nconst history = createBrowserHistory();\r\nexport default history;\r\n","import * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Store } from './types';\r\n\r\nconst withStoreConfig =

>(\r\n Component: React.ComponentType

\r\n) => {\r\n const StoreConfig: React.FC

= props => {\r\n const storeConfiguration = useSelector(\r\n ({ app }: Store) => app.storeConfiguration\r\n );\r\n\r\n if (!storeConfiguration) {\r\n return null;\r\n }\r\n\r\n return ;\r\n };\r\n\r\n return StoreConfig;\r\n};\r\n\r\nexport default withStoreConfig;\r\n","import { AMAZON_BASE_URL } from './Constants';\r\nimport { AppStore } from './types';\r\nimport withStoreConfig from './WithStoreConfig';\r\n\r\nconst TitleSection: React.FC<{\r\n title: string;\r\n storeConfiguration?: AppStore['storeConfiguration'];\r\n}> = ({ title, storeConfiguration }) => (\r\n

\r\n

{title}

\r\n \r\n
\r\n);\r\n\r\nexport default withStoreConfig(TitleSection);\r\n","import { AMAZON_BASE_URL, MENUS } from './Constants';\r\nimport TitleSection from './TitleSection';\r\nimport { AppStore } from './types';\r\nimport withStoreConfig from './WithStoreConfig';\r\n\r\nconst AboutUs: React.FC<{ storeConfiguration?: AppStore['storeConfiguration'] }> = ({\r\n storeConfiguration\r\n}) => (\r\n \r\n
\r\n \r\n
\r\n
\r\n

\r\n der perfekte Ort um griechische Küche und Gastlichkeit zu\r\n genießen.\r\n

\r\n

\r\n Erleben und genießen Sie die typisch traditionelle griechische\r\n Küche. Für uns Griechen ist die Geselligkeit beim Essen genauso\r\n wichtig wie die Speisen selbst. Deshalb ist unsere Taverna mehr\r\n als ein Restaurant. Traditionelle Musik, Ouzo, Wein und\r\n mediterrane Spezialitäten versetzen Sie direkt nach\r\n Griechenland.\r\n
\r\n
\r\n Lassen Sie sich als Gast des Hauses verwöhnen und von der\r\n Qualität griechischer Spezialitäten überzeugen. Dabei legen wir\r\n besonderen Wert auf frische Zutaten und eine abwechslungsreiche\r\n und gesunde mediterrane Mittelmeer Küche. Begleitend zu Ihrem\r\n Essen, wollen wir Ihnen gerne die Vielfalt der griechischen\r\n Weinkultur näher bringen. Diese stammen bei uns ausschließlich\r\n von griechischen Weingütern.\r\n
\r\n
\r\n In unserem Restaurant bieten wir Platz für bis zu 40 Personen in\r\n unserer Taverna. Für geschlossene Feiern wie Geburtstage,\r\n Kommunionen, Weihnachtsfeiern, Familienfesten oder jede andere\r\n Veranstaltung kontaktieren Sie uns, wir beraten Sie gern.\r\n

\r\n
\r\n
\r\n
\r\n \r\n);\r\n\r\nexport default withStoreConfig(AboutUs);\r\n","import React from 'react';\r\nimport { Field, Form, FormRenderProps } from 'react-final-form';\r\nimport FontAwesome from 'react-fontawesome';\r\nimport { FormApi } from 'final-form';\r\nimport { useDispatch } from 'react-redux';\r\nimport { AMAZON_BASE_URL, MENUS, required } from './Constants';\r\nimport * as Api from './Api';\r\nimport { AppStore } from './types';\r\nimport { enqueueNotification } from './actions/Actions';\r\nimport withStoreConfig from './WithStoreConfig';\r\n\r\ntype FormValues = {\r\n name: string;\r\n email: string;\r\n message: string;\r\n};\r\n\r\nconst Contact: React.FC<{ storeConfiguration?: AppStore['storeConfiguration'] }> = ({\r\n storeConfiguration\r\n}) => {\r\n const dispatch = useDispatch();\r\n\r\n const handleContact = React.useCallback(\r\n (values: FormValues, form: FormApi) => {\r\n Api.contact(values)\r\n .then(() => {\r\n form.reset();\r\n\r\n ['name', 'email', 'message'].forEach(key => {\r\n form.resetFieldState(key);\r\n });\r\n\r\n dispatch(\r\n enqueueNotification({\r\n key: new Date().getTime(),\r\n message: 'Ihre Nachricht wurde erfolgreich gesendet',\r\n options: { variant: 'success' }\r\n })\r\n );\r\n })\r\n .catch(err => {\r\n dispatch(\r\n enqueueNotification({\r\n key: new Date().getTime(),\r\n message: err.message,\r\n options: { variant: 'error' }\r\n })\r\n );\r\n });\r\n },\r\n [dispatch]\r\n );\r\n\r\n const renderContactForm = React.useCallback(\r\n ({ handleSubmit, submitting, validating }: FormRenderProps) => (\r\n
\r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n {meta.touched && meta.error && (\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n \r\n {meta.touched && meta.error && (\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n \r\n {({ input, meta }) => (\r\n
\r\n