From c9da165208d5f74929a7a95164f07ac37042114a Mon Sep 17 00:00:00 2001 From: Matthieu DUMONT Date: Tue, 22 Sep 2015 14:25:12 +0200 Subject: [PATCH] feat(searchBox): add poweredBy option, disabled by default --- README.md | 1 + components/PoweredBy/algolia_logo.png | Bin 0 -> 2258 bytes components/PoweredBy/index.css | 10 +++++ components/PoweredBy/index.js | 32 +++++++++++++ components/SearchBox.js | 23 ++++++---- example/app.js | 3 +- npm-shrinkwrap.json | 62 ++++++++++++++++++-------- package.json | 1 + widgets/search-box.js | 1 + 9 files changed, 105 insertions(+), 28 deletions(-) create mode 100755 components/PoweredBy/algolia_logo.png create mode 100644 components/PoweredBy/index.css create mode 100644 components/PoweredBy/index.js 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 0000000000000000000000000000000000000000..ecb19aa2b3742060a301513fe5220289257e53b4 GIT binary patch literal 2258 zcmV;@2rc)CP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00009 za7bBm000id000id0mpBsWB>pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%heMHD!e| zWdHyOBuPX;RA@u(S!--mMHKFWqE!$OC4_*1L{SiV7wC4&Du^~(OUv%v+ZR?)8^sri z!B@bdqJOX&gxxJjf~Wzlk3>VFiHSfckw@vh1qz}90hFfl5Jf1I()yj*GsE3>_wM## zp-I2wWbc0G%*>hZo}HO{H=zq%=t6s;sHmu$*XvE>uU94V^Yd@y%g&9=%*=jXO)JxU zzSAB}dyDC-3Mhs*kmDiPai$`{!Jk(@va+%ULGVVht5$SP`yVha-Zm}y&dcG2-G@XGuVSF34ScXo9QkkqR(0b!cvVpmjj zwCE#>_VjR;n7T7i`GhNA6gmT@M=LG070OO@kH<3>d_DWCKy}a_n?fI zM!zW7Z}6=}%ovI%L9t%f!m8ZMH}o98qP#aMdoe1#I(&ICE;$3n=HwFNVKGny*oiKl zFMPhk7`FzWL8cYJyU_NiHD76n{}uDf<y4nfk_VFj%d(grsc+Zk~`i5D&kKmmgsa7 zk*r+0DDh25G6T!X5ZGW$YBavTF8xyURR8Y5&XS!ITr16CxB;g~RD2$Q*gmVUss8PQ zA@+ODpm{MQzOgPLp)oAiwup{=dV`;hT!)h;6fcg}C`7b5&+X1o95;y#G?2%{226eg z(*p1pfjxO6#h?`4ns`Q zd09dGbF>*T9foM4yGqP77W|BRW#u5I6;evfM}$9M9-HFdIUJ%d1K!~I;wb8NJKN@ z2?`?n$q#D~OU$Z$z3_?kp19qkIjr48hp>sXEY8fyxr4OG$;r7z=8d*R9A*zpa2+?e zkU48s#G@B{^JK@7Zj7Di5ObvTp`WEpH$ybhv0?5A320<7WkI6@H{~Fzx*W^PR3_<0 z{Kz-rQKs4?dSPMVwczI>uN{cFsPYUI(=quSF|kF*UAtKhh7OOS(Sj(Z)^%7pH&=)u z`e@Zw)81ve8Eiz~M*_N5>~b@ukhE-Xzmz~_E>!ErlmKqfmqPS_p$eq6qElsq->7n< zn9%XI7O~>hf#Ty5UDuzsHj2||v%QDA5U>-SPA94@epO62L-ggvEF%G%Zj5%I4Og@& zF?FWeBD(cdwE=mi&G4*mrD zYveOPQ`l5`u@Eq5lrm+DiP&th4{OG)uQu$2ELlAo@oX8FG1#w7<N{EL_lLp0GRFWWJW1VqKx<0LbQ>8OC< zYs5{$6Dm^ztrp$q`(5ywR>o8qS|mCq_Kpn3gdbws7U=W~HGtQv9=UOStKxmWkC;}V z-5&fIj-ll#fH6nXs|8#Sg*^^`mF&YRIsu}u6KizP{KMtnHHztQKsdxL3JGr3rz|(a zUP;T`Azoe6R~mMrBNy5{sog31vx8}cxJBndj&N{|wQB7Ep*)rWK4)6=NBywxJbW+B zoH_F@b_?LaY6kf@#@?EU?p|&5fuOs&f@^VIob0bias_tv#Sw8}a-WhY|^lIrGuLPpL z?59U*RFHVbj;cA{T0y#C0V+2UqE^9{;(8XAmMK)tSe_n0wa{L0`40ko=Vo1K3m~%k z6Tr@JQ&x9|pKPZ9s(L5{EymLE6U6-s*YwV!0pIIzeHga3$)?AI5W>T9Brl8~^|S07*qoM6N<$f+_(!LjV8( literal 0 HcmV?d00001 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 );