UNPKG

@kiwicom/smart-faq

Version:

Smart FAQ

365 lines (292 loc) 14.7 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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); 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 _idx = _interopRequireDefault(require("idx")); var React = _interopRequireWildcard(require("react")); var _reactRelay = require("react-relay"); var _reactRouterDom = require("react-router-dom"); var _Translate = _interopRequireDefault(require("@kiwicom/nitro/lib/components/Translate")); var _Heading = _interopRequireDefault(require("@kiwicom/orbit-components/lib/Heading")); var _FAQCategoriesFullpageHeader = _interopRequireDefault(require("./FAQCategoriesFullpageHeader")); var _Responsive = require("../../SmartFAQ/common/Responsive"); var _ExtraInfoState = require("../../SmartFAQ/context/ExtraInfoState"); var _Emergencies = _interopRequireDefault(require("../../SmartFAQ/context/Emergencies")); var _UserStatus = _interopRequireDefault(require("../../SmartFAQ/helpers/UserStatus")); var _Loader = _interopRequireDefault(require("../../SmartFAQ/common/Loader")); var _ScrollableBox = _interopRequireDefault(require("../../SmartFAQ/common/ScrollableBox")); var _QueryRenderer = _interopRequireDefault(require("../../SmartFAQ/relay/QueryRenderer")); var _index = _interopRequireDefault(require("./FAQExtraInfo/BaggageInfo/index")); var _index2 = _interopRequireDefault(require("./FAQExtraInfo/BoardingPassesInfo/index")); var _CustomerSupportNumber = _interopRequireDefault(require("./CustomerSupportNumber")); var _FAQArticle = _interopRequireDefault(require("./FAQArticle")); var _FAQCategory = _interopRequireDefault(require("./FAQCategory")); var _Emergency = _interopRequireDefault(require("./emergencies/Emergency")); var _EmergencyHeader = _interopRequireDefault(require("./emergencies/EmergencyHeader")); var _Breadcrumbs = _interopRequireDefault(require("./breadcrumbs/Breadcrumbs")); var _StaticFAQError = _interopRequireDefault(require("./StaticFAQError")); var _trackers = require("../../shared/helpers/analytics/trackers"); var _ArticleContent = require("./ArticleDetail/ArticleContent"); var _SearchState = require("../../SmartFAQ/context/SearchState"); var _BookingState = require("../../SmartFAQ/context/BookingState"); var _GuaranteeChatInfo = require("../../shared/context/GuaranteeChatInfo"); var _tracker = require("../../shared/cuckoo/tracker"); var _PageVariant = require("../../SmartFAQ/common/PageVariant"); // @flow // TODO - refactor this component - separated component for root categories & subcategories var queryRoot = function queryRoot() { var node = require("./__generated__/FAQCategoryListRootQuery.graphql"); if (node.hash && node.hash !== "a7cfcbe28fb8a53cc0cef48577a553a5") { console.error("The definition of 'FAQCategoryListRootQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."); } return require("./__generated__/FAQCategoryListRootQuery.graphql"); }; var querySubcategory = function querySubcategory() { var node = require("./__generated__/FAQCategoryListSubcategoryQuery.graphql"); if (node.hash && node.hash !== "17bf41665b90109a6baaff0fa5f599bd") { console.error("The definition of 'FAQCategoryListSubcategoryQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."); } return require("./__generated__/FAQCategoryListSubcategoryQuery.graphql"); }; var categoryClicked = function categoryClicked(category /*: CategoryFragment*/ , section /*: ?FAQSectionType*/ ) { (0, _trackers.simpleTracker)('smartFAQCategories', { action: 'clickOnCategory', section: section || '', categoryId: category.id, categoryName: category.title || '' }); (0, _tracker.track)('FAQs', 'clickOnCategory', { section: section || '', categoryId: category.originalId, categoryName: category.title || '' }); }; var RawFAQCategoryList = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(RawFAQCategoryList, _React$Component); function RawFAQCategoryList() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, RawFAQCategoryList); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(RawFAQCategoryList)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "renderFAQArticlePerexes", function (faqs /*: $ReadOnlyArray<?FAQArticlePerexFragment>*/ , categoryId /*: string*/ ) { return React.createElement("div", null, faqs.filter(Boolean).map(function (faq) { return React.createElement(_FAQArticle.default, { key: faq.id, article: faq, categoryId: categoryId }); })); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "renderExtraInfoCategory", function (activeExtraInfoCategory) { switch (activeExtraInfoCategory) { case 'baggage': return React.createElement(_index.default, null); case 'boarding-passes': return React.createElement(_index2.default, null); default: return null; } }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "renderCategories", function (categories /*: $ReadOnlyArray<CategoryFragment>*/ ) { var pathname = _this.props.history.location.pathname; var isBaggageRoute = pathname.includes(_ExtraInfoState.categories.BAGGAGE); var isBoardingPassRoute = pathname.includes(_ExtraInfoState.categories.BOARDING_PASS); return React.createElement(React.Fragment, null, React.createElement(_Responsive.Desktop, null, React.createElement(_UserStatus.default.LoggedIn, null, (isBaggageRoute || isBoardingPassRoute) && React.createElement(_ExtraInfoState.ExtraInfoState.Consumer, null, function (_ref) { var activeExtraInfoCategory = _ref.activeExtraInfoCategory; return _this.renderExtraInfoCategory(activeExtraInfoCategory); }))), React.createElement(_SearchState.SearchState.Consumer, null, function (_ref2) { var changeSearchText = _ref2.changeSearchText, resetQueriesCount = _ref2.resetQueriesCount, searchText = _ref2.searchText; var onSearchCancel = function onSearchCancel() { changeSearchText(''); resetQueriesCount(); }; return React.createElement(_BookingState.BookingState.Consumer, null, function (_ref3) { var FAQSection = _ref3.FAQSection; return React.createElement("div", { "data-cy": "faq-categories" }, categories.map(function (category) { if (category) { return React.createElement(_reactRouterDom.Link, { key: category.id, to: "/faq/".concat(category.id), style: { textDecoration: 'none', display: 'block' }, onClick: function onClick() { if (searchText.length) { onSearchCancel(); } categoryClicked(category, FAQSection); } }, React.createElement(_FAQCategory.default, { category: category })); } return null; })); }); })); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "renderRootCategory", function (rendererProps /*: RootQueryRendererParams*/ ) { if (rendererProps.error) { return React.createElement(_StaticFAQError.default, null); } if (rendererProps.props) { var categories = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQSection.subcategories; }) || []; var faqs = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQSection.FAQs; }) || []; var categoryId = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQSection.id; }) || ''; var guaranteeArticle = rendererProps.props && rendererProps.props.FAQArticle; return React.createElement(_Emergencies.default.Consumer, null, function (emergencies) { var hasEmergencies = emergencies && emergencies.length > 0; return React.createElement(_ScrollableBox.default, null, hasEmergencies && React.createElement(_EmergencyHeader.default, { styles: "margin-top: 8px", title: "smartfaq.faq.emergencies.current" }), emergencies && emergencies.map(function (emergency, i) { return (// eslint-disable-next-line react/no-array-index-key React.createElement(_Emergency.default, { key: i, emergency: emergency }) ); }), hasEmergencies && React.createElement(_EmergencyHeader.default, { styles: "margin-top: 32px", title: "smartfaq.faq.emergencies.solve" }), React.createElement(_PageVariant.FullPageVersion, null, React.createElement(_FAQCategoriesFullpageHeader.default, null), React.createElement(_Heading.default, { type: "title3", element: "h3", spaceAfter: "large" }, React.createElement(_Translate.default, { t: "smartfaq.full_page.categories.header.suggested_topics" }))), guaranteeArticle && React.createElement(_FAQArticle.default, { article: guaranteeArticle, isSearchResult: true }), _this.renderCategories(categories.filter(Boolean)), React.createElement(_PageVariant.SidebarVersion, null, _this.renderFAQArticlePerexes(faqs, categoryId)), React.createElement(_Responsive.Mobile, null, React.createElement(_UserStatus.default.LoggedIn, null, React.createElement(_CustomerSupportNumber.default, { data: rendererProps.props })))); }); } return React.createElement(_Loader.default, { fullHeight: true }); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "renderSubcategory", function (rendererProps /*: SubcategoryQueryRendererParams*/ ) { if (rendererProps.error) { return React.createElement(_StaticFAQError.default, null); } var FAQCategory = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQCategory; }); if (rendererProps.props) { var categories = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQCategory.subcategories; }) || []; var ancestors = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQCategory.ancestors; }) || []; var currentCategory = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQCategory.title; }); var faqs = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQCategory.FAQs; }) || []; var categoryId = (0, _idx.default)(rendererProps.props, function (_) { return _.FAQCategory.id; }) || ''; if (FAQCategory === null) { return React.createElement(_StaticFAQError.default, null); } return React.createElement(React.Fragment, null, React.createElement("div", null, React.createElement(_Breadcrumbs.default, { breadcrumbs: ancestors, currentCategory: currentCategory })), React.createElement(_ScrollableBox.default, null, _this.renderCategories(categories.filter(Boolean)), _this.renderFAQArticlePerexes(faqs, categoryId))); } return React.createElement(_Loader.default, { fullHeight: true }); }); return _this; } (0, _createClass2.default)(RawFAQCategoryList, [{ key: "render", value: function render() { var _this$props = this.props, categoryId = _this$props.categoryId, section = _this$props.section, showGuaranteeArticle = _this$props.showGuaranteeArticle; if (categoryId) { return React.createElement(_QueryRenderer.default, { query: querySubcategory, render: this.renderSubcategory, variables: { id: categoryId } }); } return React.createElement(_QueryRenderer.default, { query: queryRoot, render: this.renderRootCategory, variables: { section: section, showGuaranteeArticle: showGuaranteeArticle, articleId: _ArticleContent.GUARANTEE_ARTICLE_ID } }); } }]); return RawFAQCategoryList; }(React.Component); var FAQCategoryList = function FAQCategoryList(props /*: ComponentProps*/ ) { return React.createElement(_BookingState.BookingState.Consumer, null, function (_ref4) { var FAQSection = _ref4.FAQSection; return React.createElement(_GuaranteeChatInfo.GuaranteeChatContext.Consumer, null, function (_ref5) { var showGuaranteeChat = _ref5.showGuaranteeChat; return React.createElement(RawFAQCategoryList, (0, _extends2.default)({ section: FAQSection, showGuaranteeArticle: showGuaranteeChat && props.categoryId === null }, props)); }); }); }; var _default = (0, _reactRouterDom.withRouter)(FAQCategoryList); exports.default = _default;