diff --git a/common/app/Nav/LargeNav.jsx b/common/app/Nav/LargeNav.jsx index e9d4052a6c..ef305f9cfe 100644 --- a/common/app/Nav/LargeNav.jsx +++ b/common/app/Nav/LargeNav.jsx @@ -16,11 +16,7 @@ function LargeNav({ clickOnLogo, clickOnMap, shouldShowMapButton, panes }) { - + diff --git a/common/app/Nav/MediumNav.jsx b/common/app/Nav/MediumNav.jsx index bb5004121c..559bf623f1 100644 --- a/common/app/Nav/MediumNav.jsx +++ b/common/app/Nav/MediumNav.jsx @@ -19,11 +19,7 @@ function MediumNav({ clickOnLogo, clickOnMap, shouldShowMapButton, panes }) {
- +
diff --git a/common/app/Nav/SmallNav.jsx b/common/app/Nav/SmallNav.jsx index f4ff42afce..50b456e1c3 100644 --- a/common/app/Nav/SmallNav.jsx +++ b/common/app/Nav/SmallNav.jsx @@ -31,11 +31,7 @@ function SmallNav({ clickOnLogo, clickOnMap, shouldShowMapButton, panes }) { clickOnMap={ clickOnMap } shouldShowMapButton={ shouldShowMapButton } > - + diff --git a/common/app/Nav/nav.less b/common/app/Nav/nav.less index c9a2ea8a12..4933b99e39 100644 --- a/common/app/Nav/nav.less +++ b/common/app/Nav/nav.less @@ -266,6 +266,11 @@ li.nav-avatar { ::placeholder { color: @input-color-placeholder; } + + .ais-Hits { + background-color: white; + z-index: 5; + } } .navbar-header { display: flex; diff --git a/package-lock.json b/package-lock.json index 13c9ff0c6a..90eb49be67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -208,6 +208,11 @@ "resolved": "https://registry.npmjs.org/after-all-results/-/after-all-results-2.0.0.tgz", "integrity": "sha1-asL8ICtQD4jaj09VMM+hAPTGotA=" }, + "agentkeepalive": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.2.0.tgz", + "integrity": "sha1-xdG9SxKQCPEWPyNvhuX66iAm4u8=" + }, "ajv": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", @@ -219,6 +224,60 @@ "json-schema-traverse": "0.3.1" } }, + "algoliasearch": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.26.0.tgz", + "integrity": "sha512-FdUjBMl1csMvw5TeJ8wtVrf/KFOfCboztIwu/ivNs2rqBgEku1q2DqOXVUa9a/qAQdKSVYH2SLlwi5DPPFzmig==", + "requires": { + "agentkeepalive": "2.2.0", + "debug": "2.6.9", + "envify": "4.1.0", + "es6-promise": "4.2.4", + "events": "1.1.1", + "foreach": "2.0.5", + "global": "4.3.2", + "inherits": "2.0.3", + "isarray": "2.0.4", + "load-script": "1.0.0", + "object-keys": "1.0.11", + "querystring-es3": "0.2.1", + "reduce": "1.0.1", + "semver": "5.4.1", + "tunnel-agent": "0.6.0" + }, + "dependencies": { + "envify": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-4.1.0.tgz", + "integrity": "sha512-IKRVVoAYr4pIx4yIWNsz9mOsboxlNXiu7TNBnem/K/uTHdkyzXWDzHCK7UTolqBbgaBz0tQHsD3YNls0uIIjiw==", + "requires": { + "esprima": "4.0.0", + "through": "2.3.8" + } + }, + "es6-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" + }, + "isarray": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", + "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==" + } + } + }, + "algoliasearch-helper": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-2.24.0.tgz", + "integrity": "sha512-aW3lp9JLqPpghfsRMbmqTh6WNSTdFqldKYHaMq2KKATCO2GwFxV3e8EDI0GUUXBimiZXJ0FzsOTt7V7FyQ1WjQ==", + "requires": { + "events": "1.1.1", + "lodash": "4.17.4", + "qs": "6.5.1", + "util": "0.10.3" + } + }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", @@ -4069,8 +4128,7 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "dedent": { "version": "0.7.0", @@ -13825,8 +13883,7 @@ "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "querystringify": { "version": "1.0.0", @@ -14058,14 +14115,30 @@ } }, "react-freecodecamp-search": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/react-freecodecamp-search/-/react-freecodecamp-search-1.4.1.tgz", - "integrity": "sha512-ftzu4mx4UEVK/lPlkcq4gMsbAcohkkVSYzK0yRVI386MFreuO0b8iZ5aCpHJY+wXZp+U/VBtQiR5pBCNOwzfNA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/react-freecodecamp-search/-/react-freecodecamp-search-2.0.1.tgz", + "integrity": "sha1-8RoY15DzYj++PnTBK0AQZDP/FS0=", "requires": { - "rxjs": "5.5.5", + "query-string": "6.0.0", + "react-instantsearch": "5.0.1", + "rxjs": "5.5.7", "xhr": "2.4.1" }, "dependencies": { + "query-string": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.0.0.tgz", + "integrity": "sha1-i485RHtz6CkNb141gXeSGOkXEUI=", + "requires": { + "decode-uri-component": "0.2.0", + "strict-uri-encode": "2.0.0" + } + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + }, "xhr": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.1.tgz", @@ -14128,6 +14201,18 @@ "react-transition-group": "1.2.1" } }, + "react-instantsearch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/react-instantsearch/-/react-instantsearch-5.0.1.tgz", + "integrity": "sha512-CL6LcrHSnWD0pF6sIzhPWkO10cmpwofwv2IYXrFkYNnBE14ayZm6QIfhmT/2lQlBmCtk/6NHAFfzn9dPPjg1Rg==", + "requires": { + "algoliasearch": "3.26.0", + "algoliasearch-helper": "2.24.0", + "classnames": "2.2.5", + "lodash": "4.17.4", + "prop-types": "15.6.0" + } + }, "react-lazy-cache": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/react-lazy-cache/-/react-lazy-cache-3.0.1.tgz", @@ -14365,6 +14450,14 @@ } } }, + "reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/reduce/-/reduce-1.0.1.tgz", + "integrity": "sha1-FPouX/H8VgcDoCDLtfuqtpFWWAQ=", + "requires": { + "object-keys": "1.0.11" + } + }, "reduce-reducers": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/reduce-reducers/-/reduce-reducers-0.1.2.tgz", @@ -15012,9 +15105,9 @@ } }, "rxjs": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.5.tgz", - "integrity": "sha512-D/MfQnPMBk8P8gfwGxvCkuaWBcG58W7dUMT//URPoYzIbDEKT0GezdirkK5whMgKFBATfCoTpxO8bJQGJ04W5A==", + "version": "5.5.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.7.tgz", + "integrity": "sha512-Hxo2ac8gRQjwjtKgukMIwBRbq5+KAeEV5hXM4obYBOAghev41bDQWgFH4svYiU9UnQ5kNww2LgfyBdevCd2HXA==", "requires": { "symbol-observable": "1.0.1" }, @@ -17964,7 +18057,6 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, "requires": { "inherits": "2.0.1" }, @@ -17972,8 +18064,7 @@ "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" } } }, diff --git a/package.json b/package.json index 8a1a2dcf60..b428c4a831 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "react-d3": "^0.4.0", "react-dom": "^15.6.2", "react-fontawesome": "^1.2.0", - "react-freecodecamp-search": "^1.4.1", + "react-freecodecamp-search": "^2.0.1", "react-helmet": "^5.2.0", "react-images": "^0.5.1", "react-media": "^1.8.0", diff --git a/server/middlewares/csp.js b/server/middlewares/csp.js index 868a0c6bc3..228d84c934 100644 --- a/server/middlewares/csp.js +++ b/server/middlewares/csp.js @@ -3,7 +3,8 @@ import helmet from 'helmet'; let trusted = [ "'self'", 'https://search.freecodecamp.org', - 'https://*.opbeat.com' + 'https://*.opbeat.com', + 'https://*.algolianet.com' ]; const host = process.env.HOST || 'localhost';