UNPKG

@kiwicom/smart-faq

Version:
225 lines (184 loc) 8.73 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _style = _interopRequireDefault(require("styled-jsx/style")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var React = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); require("url-search-params-polyfill"); var _reactEventListener = _interopRequireWildcard(require("react-event-listener")); var _reactFocusTrap = _interopRequireDefault(require("react-focus-trap")); var intlContext = _interopRequireWildcard(require("@kiwicom/nitro/lib/services/intl/context")); var _Routes = _interopRequireDefault(require("./Routes")); var _Close = require("./context/Close"); var _Language = require("./context/Language"); var _User = require("./context/User"); var _BookingState = _interopRequireDefault(require("./context/BookingState")); var _SearchState = _interopRequireDefault(require("./context/SearchState")); var _SelectedBooking = _interopRequireDefault(require("./context/SelectedBooking")); var _ExtraInfoState = _interopRequireDefault(require("./context/ExtraInfoState")); var _Emergencies = _interopRequireDefault(require("./context/Emergencies")); var _ErrorBoundary = _interopRequireDefault(require("./common/ErrorBoundary")); var _trackers = require("./helpers/analytics/trackers"); var _MobileSafariScroll = _interopRequireDefault(require("./helpers/MobileSafariScroll")); var _GuaranteeChatInfo = _interopRequireDefault(require("./context/GuaranteeChatInfo")); var _langInfos = require("./translations/langInfos"); var _translationUtils = require("./helpers/translationUtils"); // @flow /* eslint-disable jsx-a11y/no-static-element-interactions */ var style = new String(".smartFAQ{display:none;position:fixed;min-width:480px;top:0;bottom:0;right:0;background-color:#fff;font-family:'Roboto',sans-serif;}.smartFAQ.open{display:block;}.smartFAQ *{box-sizing:border-box;font-family:'Roboto',sans-serif;}@media only screen and (max-width:901px){.smartFAQ{min-width:100%;}}"); style.__hash = "3449904117"; style.__scoped = ".smartFAQ.jsx-2556846004{display:none;position:fixed;min-width:480px;top:0;bottom:0;right:0;background-color:#fff;font-family:'Roboto',sans-serif;}.smartFAQ.open.jsx-2556846004{display:block;}.smartFAQ.jsx-2556846004 *.jsx-2556846004{box-sizing:border-box;font-family:'Roboto',sans-serif;}@media only screen and (max-width:901px){.smartFAQ.jsx-2556846004{min-width:100%;}}"; style.__scopedHash = "2556846004"; /*:: type State = {| userContext: UserContextType, |};*/ var App = /*#__PURE__*/ function (_React$PureComponent) { (0, _inherits2.default)(App, _React$PureComponent); (0, _createClass2.default)(App, null, [{ key: "getDerivedStateFromProps", value: function getDerivedStateFromProps(nextProps /*: AppProps*/ ) { return { userContext: { user: nextProps.user, onLogin: nextProps.onLogin, onLogout: nextProps.onLogout, onSocialLogin: nextProps.onSocialLogin, loginToken: nextProps.loginToken, simpleToken: nextProps.simpleToken } }; } }]); function App(props /*: AppProps*/ ) { var _this; (0, _classCallCheck2.default)(this, App); _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(App).call(this, props)); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onKeyDown", function (e /*: KeyboardEvent*/ ) { // $FlowExpectedError: I know "noInputFocus" property doesn't exist... e.noInputFocus = true; }); _this.state = { userContext: { user: props.user, onLogin: props.onLogin, onLogout: props.onLogout, onSocialLogin: props.onSocialLogin, loginToken: props.loginToken, simpleToken: props.simpleToken } }; return _this; } (0, _createClass2.default)(App, [{ key: "renderApp", value: function renderApp() { var _this$props = this.props, route = _this$props.route, emergencies = _this$props.emergencies, language = _this$props.language; var isOpen = Boolean(route); var langInfo = _langInfos.langInfos[language]; var translations = (0, _translationUtils.loadStaticTranslations)(language); return React.createElement(_reactFocusTrap.default, { active: isOpen }, React.createElement("div", { "data-test": "SmartFAQHelp", className: _style.default.dynamic([["1903295685", [isOpen ? 'hidden' : 'auto']]]) + " " + ((0, _classnames.default)('smartFAQ', { open: isOpen }) || "") }, React.createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1 shrink-to-fit=no", className: _style.default.dynamic([["1903295685", [isOpen ? 'hidden' : 'auto']]]) }), React.createElement("meta", { httpEquiv: "X-UA-Compatible", content: "IE=edge", className: _style.default.dynamic([["1903295685", [isOpen ? 'hidden' : 'auto']]]) }), React.createElement("link", { href: "https://fonts.googleapis.com/css?family=Roboto", rel: "stylesheet", className: _style.default.dynamic([["1903295685", [isOpen ? 'hidden' : 'auto']]]) }), React.createElement(_ErrorBoundary.default, null, React.createElement(intlContext.Provider, { language: langInfo, translations: translations }, React.createElement(_Language.LanguageContext.Provider, { value: language }, React.createElement(_Close.CloseContext.Provider, { value: this.props.onClose }, React.createElement(_User.UserContext.Provider, { value: this.state.userContext }, React.createElement(_SearchState.default, null, React.createElement(_Emergencies.default.Provider, { value: emergencies }, React.createElement(_SelectedBooking.default, { isOpen: isOpen }, React.createElement(_BookingState.default, { onLogout: this.props.onLogout }, React.createElement(_ExtraInfoState.default, null, React.createElement(_GuaranteeChatInfo.default, { enableChat: this.props.enableChat, chatConfig: this.props.chatConfig, onAppWithOpenChatClose: this.props.onAppWithOpenChatClose }, isOpen && route && React.createElement(_reactEventListener.default, { target: "window", onKeydown: (0, _reactEventListener.withOptions)(this.onKeyDown, { capture: true }) }, React.createElement(_Routes.default, { route: route }))))))))))))), React.createElement(_style.default, { styleId: style.__hash, css: style }), React.createElement(_style.default, { styleId: "1903295685", css: "body{overflow-y:".concat(isOpen ? 'hidden' : 'auto', ";}"), dynamic: [isOpen ? 'hidden' : 'auto'] }), React.createElement(_MobileSafariScroll.default, { isOpen: isOpen }))); } }, { key: "render", value: function render() { var _this2 = this; if (typeof window !== 'undefined' && window.Raven) { return window.Raven.context(function () { return _this2.renderApp(); }); } return this.renderApp(); } }]); return App; }(React.PureComponent); var EnterTrackedApp = (0, _trackers.EnterTracker)(App, 'smartFAQ', function (props) { return { action: 'clickOnHelp', loggedIn: props ? !!props.user || !!props.simpleToken : false }; }); var TimeTrackedApp = (0, _trackers.TimeTracker)(EnterTrackedApp, 'smartFAQ', function (props) { return { action: 'close', loggedIn: props ? !!props.user || !!props.simpleToken : false }; }); var _default = TimeTrackedApp; exports.default = _default;