diff --git a/README.md b/README.md index bd27a16eef..0dc9b7018b 100644 --- a/README.md +++ b/README.md @@ -199,6 +199,7 @@ search.addWidget( container: '#search-box', placeholder: 'Search for products', // cssClass + // poweredBy: boolean }) ); ``` diff --git a/components/PoweredBy/algolia_logo.png b/components/PoweredBy/algolia_logo.png new file mode 100755 index 0000000000..ecb19aa2b3 Binary files /dev/null and b/components/PoweredBy/algolia_logo.png differ diff --git a/components/PoweredBy/index.css b/components/PoweredBy/index.css new file mode 100644 index 0000000000..a0773506df --- /dev/null +++ b/components/PoweredBy/index.css @@ -0,0 +1,10 @@ +.as-powered-by { + text-align: right; + line-height: 18px; + font-size: 12px; +} + +.as-powered-by--image { + height: 16px; + margin-bottom: 2px; +} diff --git a/components/PoweredBy/index.js b/components/PoweredBy/index.js new file mode 100644 index 0000000000..9423ddcf63 --- /dev/null +++ b/components/PoweredBy/index.js @@ -0,0 +1,32 @@ +var React = require('react'); +var bem = require('../BemHelper')('as-powered-by'); +var logo = require('url?limit=10000!./algolia_logo.png'); + +require('style?prepend!raw!./index.css'); + +class PoweredBy extends React.Component { + render() { + var poweredByDisplay = (this.props.display === true) ? 'block' : 'none'; + + return ( +
+ Powered by + + + +
+ ); + } +} + +PoweredBy.propTypes = { + display: React.PropTypes.bool +}; + +module.exports = PoweredBy; diff --git a/components/SearchBox.js b/components/SearchBox.js index 58ea8a17e0..1bb863d370 100644 --- a/components/SearchBox.js +++ b/components/SearchBox.js @@ -1,4 +1,5 @@ var React = require('react'); +var PoweredBy = require('./PoweredBy'); var bem = require('./BemHelper')('as-search-box'); var cx = require('classnames'); @@ -12,15 +13,18 @@ class SearchBox { var classNames = cx(bem('input'), this.props.inputClass); return ( - +
+ + +
); } } @@ -31,6 +35,7 @@ SearchBox.propTypes = { React.PropTypes.string, React.PropTypes.array ]), + poweredBy: React.PropTypes.bool, setQuery: React.PropTypes.func, search: React.PropTypes.func }; diff --git a/example/app.js b/example/app.js index 4468d2db32..66411ed7d8 100644 --- a/example/app.js +++ b/example/app.js @@ -11,7 +11,8 @@ search.addWidget( instantsearch.widgets.searchBox({ container: '#search-box', placeholder: 'Search for products', - cssClass: 'form-control' + cssClass: 'form-control', + poweredBy: true }) ); diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 6a93cecb56..04e5213d5c 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -5,69 +5,70 @@ "algoliasearch": { "version": "3.8.0", "from": "algoliasearch@3.8.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-3.8.0.tgz", "dependencies": { "agentkeepalive": { "version": "2.0.3", - "from": "agentkeepalive@>=2.0.3 <3.0.0", + "from": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.0.3.tgz", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-2.0.3.tgz" }, "debug": { "version": "2.2.0", - "from": "debug@>=2.2.0 <3.0.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "ms@0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" } } }, "debug-ms-fix-yui-compressor": { "version": "2.2.2-future-reserved-word-fix-ms", - "from": "debug-ms-fix-yui-compressor@2.2.2-future-reserved-word-fix-ms", + "from": "https://registry.npmjs.org/debug-ms-fix-yui-compressor/-/debug-ms-fix-yui-compressor-2.2.2-future-reserved-word-fix-ms.tgz", "resolved": "https://registry.npmjs.org/debug-ms-fix-yui-compressor/-/debug-ms-fix-yui-compressor-2.2.2-future-reserved-word-fix-ms.tgz", "dependencies": { "algolia-ms": { "version": "0.7.1-fix-future-reserved-words", - "from": "algolia-ms@0.7.1-fix-future-reserved-words", + "from": "https://registry.npmjs.org/algolia-ms/-/algolia-ms-0.7.1-fix-future-reserved-words.tgz", "resolved": "https://registry.npmjs.org/algolia-ms/-/algolia-ms-0.7.1-fix-future-reserved-words.tgz" } } }, "envify": { "version": "3.4.0", - "from": "envify@>=3.4.0 <4.0.0", + "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", + "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "jstransform": { "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", + "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "base62@0.1.1", + "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "source-map@0.1.31", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -78,27 +79,27 @@ }, "es6-promise": { "version": "3.0.2", - "from": "es6-promise@>=3.0.2 <4.0.0", + "from": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz" }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <3.0.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "load-script": { "version": "1.0.0", - "from": "load-script@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz" }, "lodash-compat": { "version": "3.10.1", - "from": "lodash-compat@>=3.10.1 <4.0.0", + "from": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.1.tgz", "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.1.tgz" }, "tunnel-agent": { "version": "0.4.1", - "from": "tunnel-agent@>=0.4.1 <0.5.0", + "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" } } @@ -106,10 +107,11 @@ "algoliasearch-helper": { "version": "2.3.6", "from": "algoliasearch-helper@2.3.6", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-2.3.6.tgz", "dependencies": { "lodash-compat": { "version": "3.10.1", - "from": "lodash-compat@>=3.10.1 <4.0.0", + "from": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.1.tgz", "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.1.tgz" } } @@ -119,6 +121,30 @@ "from": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz" }, + "file-loader": { + "version": "0.8.4", + "from": "file-loader@*", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.8.4.tgz", + "dependencies": { + "loader-utils": { + "version": "0.2.11", + "from": "loader-utils@>=0.2.5 <0.3.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", + "dependencies": { + "big.js": { + "version": "3.1.3", + "from": "big.js@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" + }, + "json5": { + "version": "0.4.0", + "from": "json5@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" + } + } + } + } + }, "hogan.js": { "version": "3.0.2", "from": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", diff --git a/package.json b/package.json index 03ebec8b58..7f4304876c 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "tap-spec": "4.1.0", "tape": "4.2.0", "uglifyjs": "2.4.10", + "url-loader": "^0.5.6", "webpack": "1.12.2", "webpack-dev-server": "1.11.0" }, diff --git a/widgets/search-box.js b/widgets/search-box.js index e19ab18d75..45e57ba7f4 100644 --- a/widgets/search-box.js +++ b/widgets/search-box.js @@ -15,6 +15,7 @@ function searchbox(params) { search={helper.search.bind(helper)} placeholder={params.placeholder} inputClass={params.cssClass} + poweredBy={params.poweredBy} />, container );