-
Notifications
You must be signed in to change notification settings - Fork 522
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RefinementList not updating its underlying item DOM #398
Comments
I guess React is not re-rendering the item because the |
OH that's where the tweet came from :P From what I understand of the context, I would say that it's a combination of using string template with the fact we're not updating the key. From what I understand, what's inside the dangerouslySetInnerHTML is considered a blob thus not interpreted, so it won't count in the diff algo against the generated vdom. When we change the key, we are changing what properties are hold in the vdom. So it is considered different and so the rendering is updated. |
Oh but I may be wrong. It seems that it's a bug in React facebook/react#377 The solution/workaroud you provided seems legit... |
Ok indeed: facebook/react#377 (comment) we should use the fix you proposed @redox |
Strangely if we read facebook/react#1232 it should be fixed hmm |
<a name="0.8.0"></a> # [0.8.0](v0.7.0...v0.8.0) (2015-11-03) ### Bug Fixes * **cssClasses:** Fixed duplication of classNames ([e193f45](e193f45)), closes [#388](#388) * **doc:** add doctype were missing ([86a18aa](86a18aa)) * **doc:** new color scheme ([deccc17](deccc17)) * **doc:** only show a scrollbar when needed ([f2d955b](f2d955b)) * **hierarchical:** setPage 0 when toggling ([a976539](a976539)), closes [#371](#371) * **jsdoc:** use babel-node ([453dc21](453dc21)) * **live-doc:** generates missing ul ([b43e6e2](b43e6e2)) * **live-doc:** move scrollbars, removes useless ones ([548ae5f](548ae5f)) * **live-doc:** moves octocat link to top. Removes stackOverflow ([8ff6a79](8ff6a79)) * **live-doc:** Moves version in the main content ([27731c3](27731c3)) * **live-reload:** integrates the links into the menu flow ([c118051](c118051)) * **numerical widgets:** s/facetName/attributeName ([f209f5d](f209f5d)), closes [#431](#431) * **refinementList:** ensure the key reflects the underlying state ([b048f0b](b048f0b)), closes [#398](#398) ### Features * **examples:** try examples instead of themes ([bedffce](bedffce)) * **headerFooter:** Only add markup if a template is defined ([7a2d22d](7a2d22d)), closes [#370](#370) * **priceRanges:** Add BEM classes and tests ([ad58d7a](ad58d7a)), closes [#387](#387) ### BREAKING CHANGES * numerical widgets: the priceRanges and rangeSlider widgets are now using `attributeName` instead of `facetName`. * priceRanges: `ais-price-ranges--range` are now named `ais-price-ranges--item` and are wrapped in a `ais-price-ranges--list`. I've moved the bottom form into it's own PriceRangesForm component, along with its own tests. I've fixed a minor typo where the component was internally named PriceRange (without the final __s__). I factorize some logic form the render in individual methods and manage to individually test them. This was not an easy task. I had to mock the default `render` (so it does nothing) before instanciating the component. Then, I was able to call each inner method individually. This requires to stub prototype methods in beforeEach, then restore them in afterEach. I've added a few helper methods, this can surely be simplified again but this gives nice granularity in testing. I've renamed the `range` items to `item` and wrapped them in a `list`. I've also added classes to all elements we add (`label`, `separator`, etc). I've removed the empty `span`s. * headerFooter: The `<div class="ais-header">` and `<div class="ais-footer">` markup is only added when a `templates.{header,footer}` is passed.
<a name="0.8.0"></a> # [0.8.0](v0.7.0...v0.8.0) (2015-11-03) ### Bug Fixes * **cssClasses:** Fixed duplication of classNames ([e193f45](e193f45)), closes [#388](#388) * **doc:** add doctype were missing ([86a18aa](86a18aa)) * **doc:** new color scheme ([deccc17](deccc17)) * **doc:** only show a scrollbar when needed ([f2d955b](f2d955b)) * **hierarchical:** setPage 0 when toggling ([a976539](a976539)), closes [#371](#371) * **jsdoc:** use babel-node ([453dc21](453dc21)) * **live-doc:** generates missing ul ([b43e6e2](b43e6e2)) * **live-doc:** move scrollbars, removes useless ones ([548ae5f](548ae5f)) * **live-doc:** moves octocat link to top. Removes stackOverflow ([8ff6a79](8ff6a79)) * **live-doc:** Moves version in the main content ([27731c3](27731c3)) * **live-reload:** integrates the links into the menu flow ([c118051](c118051)) * **numerical widgets:** s/facetName/attributeName ([f209f5d](f209f5d)), closes [#431](#431) * **refinementList:** ensure the key reflects the underlying state ([b048f0b](b048f0b)), closes [#398](#398) ### Features * **examples:** try examples instead of themes ([bedffce](bedffce)) * **headerFooter:** Only add markup if a template is defined ([7a2d22d](7a2d22d)), closes [#370](#370) * **priceRanges:** Add BEM classes and tests ([ad58d7a](ad58d7a)), closes [#387](#387) ### BREAKING CHANGES * numerical widgets: the priceRanges and rangeSlider widgets are now using `attributeName` instead of `facetName`. * priceRanges: `ais-price-ranges--range` are now named `ais-price-ranges--item` and are wrapped in a `ais-price-ranges--list`. I've moved the bottom form into it's own PriceRangesForm component, along with its own tests. I've fixed a minor typo where the component was internally named PriceRange (without the final __s__). I factorize some logic form the render in individual methods and manage to individually test them. This was not an easy task. I had to mock the default `render` (so it does nothing) before instanciating the component. Then, I was able to call each inner method individually. This requires to stub prototype methods in beforeEach, then restore them in afterEach. I've added a few helper methods, this can surely be simplified again but this gives nice granularity in testing. I've renamed the `range` items to `item` and wrapped them in a `list`. I've also added classes to all elements we add (`label`, `separator`, etc). I've removed the empty `span`s. * headerFooter: The `<div class="ais-header">` and `<div class="ais-footer">` markup is only added when a `templates.{header,footer}` is passed.
<a name="0.11.0"></a> # 0.11.0 (2015-11-10) ### Bug Fixes * add missing 'use strict's ([397294e](397294e)) * add title for brands ([2e67c47](2e67c47)) * allow adding css classes to the searchBox wrapper ([6ef0b0b](6ef0b0b)), closes [#22](#22) [#24](#24) * allow html in pagination labels ([4147358](4147358)), closes [#36](#36) * Allow not specifying `cssClass` on index selector ([4e9324f](4e9324f)) * allow passing only one key of transformData as an object ([e0ce89f](e0ce89f)) * Handle plural forms in template ([1bfd109](1bfd109)) * **transformData:** add an explicit error message ([94c53d3](94c53d3)), closes [#212](#212) * cap the number of page displayed ([bc6c2e2](bc6c2e2)) * change no results message ([80acf33](80acf33)) * do not use memoize & co ([32c64e6](32c64e6)) * expose main dist/ instead of index.js ([98bd889](98bd889)) * Fix merge issues ([3b5e8f4](3b5e8f4)) * fixed hits display height, no more scroll jumps ([6b4319d](6b4319d)) * folder requires uses a trailing / to ease recognition of /index.js ([3ef55a3](3ef55a3)) * Handle zero, one and many ([5434ca2](5434ca2)) * hits widget should allow hitsPerPage configuration, pagination should not ([a2221a8](a2221a8)) * instantSearch => instantsearch ([bdcbf18](bdcbf18)), closes [#7](#7) * **api:** rename hideContainerWhenNoResults to autoHideContainer ([3f64bef](3f64bef)), closes [#407](#407) * **autohide:** Rename attribute to `hideContainerWhenNoResults` ([ecb6756](ecb6756)), closes [#325](#325) * **bem:** Make scss mixins actually follow BEM ([fcfb408](fcfb408)) * **core:** recursively merge arrays in searchParameters ([dbadcdb](dbadcdb)), closes [#80](#80) * **cssClasses:** Fixed duplication of classNames ([e193f45](e193f45)), closes [#388](#388) * **doc:** add doctype were missing ([86a18aa](86a18aa)) * **doc:** All wigdets in docs are not anymore linked together #fix #446 ([4361320](4361320)), closes [#446](#446) * **doc:** bolder font for the navigation ([64f6d56](64f6d56)) * **doc:** ensure the documentation content doesn't overflow ([1e28a4e](1e28a4e)), closes [#444](#444) * **doc:** new color scheme ([deccc17](deccc17)) * **doc:** only show a scrollbar when needed ([f2d955b](f2d955b)) * **example:** Example searchbox ([cdad6c7](cdad6c7)), closes [#157](#157) * **generateRanges:** avoid any infinite loop. Fix #351 ([4965222](4965222)), closes [#351](#351) * **hideIfEmpty:** should be hideWhenNoResults ([21877a0](21877a0)) * **hierarchical:** setPage 0 when toggling ([a976539](a976539)), closes [#371](#371) * **hierarchicalFacets:** use a real attribute name for the hierarchicalFacet name ([0d2a455](0d2a455)) * **hierarchicalMenu:** handle cases where no results after a search ([0a1d0ac](0a1d0ac)), closes [#385](#385) * **hits:** Fix warning about unique key in iterator ([0c9468c](0c9468c)) * **Hits:** handle the display when there is no result ([544ff5c](544ff5c)) * **hitsPerPageSelector:** Be more tolerant in options ([e14a344](e14a344)) * **hitsPerPageSelector:** Issue when state did not have a `hitsPerPage` ([dc9371c](dc9371c)) * **index-selector:** Fix tests passing with incorrect parameters ([8fc31b9](8fc31b9)) * **index-selector:** Update usage and error ([a7e4c10](a7e4c10)) * **InstantSearch:** throw error when init and render are not defined. Fixes #499 ([2830cd3](2830cd3)), closes [#499](#499) * **jsdoc:** use babel-node ([453dc21](453dc21)) * **live-doc:** adds a start at a responsive display ([c83967e](c83967e)) * **live-doc:** adds navigation menu for smaller screens ([a6bb71e](a6bb71e)) * **live-doc:** fixes flow for texts ([3855071](3855071)) * **live-doc:** generates missing ul ([b43e6e2](b43e6e2)) * **live-doc:** Momentum scroll for iPhone ([60a36ff](60a36ff)) * **live-doc:** move scrollbars, removes useless ones ([548ae5f](548ae5f)) * Pass nbHits, hitsPerPage, nbPages and page to Stats widget ([deefd23](deefd23)), closes [#106](#106) * **live-doc:** moves octocat link to top. Removes stackOverflow ([8ff6a79](8ff6a79)) * **live-doc:** Moves version in the main content ([27731c3](27731c3)) * **live-doc:** uses only h4 and fixes style of h4 (mobile) ([0fdd2d0](0fdd2d0)) * **live-reload:** integrates the links into the menu flow ([c118051](c118051)) * **menu:** send an empty array values when no values ([12cd7dc](12cd7dc)), closes [#107](#107) * **middle-click:** Allow middle click on links ([a7601c0](a7601c0)) * **multipleChoiceList:** `limit` should be pure JS ([68bdf81](68bdf81)) * **numeric widgets:** synchronizes rounded value between widgets ([b314160](b314160)) * **numeric-refinement:** Replace Array.find with lodash find/includes ([b3e815c](b3e815c)) * **numerical widgets:** s/facetName/attributeName ([f209f5d](f209f5d)), closes [#431](#431) * **onClick:** do not replace the browser's behavior on special clicks ([8562d49](8562d49)), closes [#278](#278) * **package.json:** typo in repository ([33cf196](33cf196)) * **pagination:** do not generate the URL for disabled pages. ([e5d78ab](e5d78ab)), closes [#282](#282) * **pagination:** handle cases where maxPages is low ([d3c9959](d3c9959)), closes [#100](#100) * **pagination:** missing showFirstLast attribute when instanciating ([28fa0ae](28fa0ae)) * **poweredBy:** Extract its hiding capabilities ([f5fa9ee](f5fa9ee)), closes [#189](#189) * **price-ranges:** makes it uses same operator as the slider ([ad6f5c2](ad6f5c2)) * **priceRanges:** fixed 'active' CSS class not using BEM ([ec0d1b1](ec0d1b1)) * **priceRanges:** plug the URL computation. Fix #354 ([fbf4022](fbf4022)), closes [#354](#354) * **range-slider:** fixes bound definition ([e15c9b7](e15c9b7)) * **range-slider:** Use lodash find instead of Array.prototype.find ([056153c](056153c)) * **rangeSlider:** refinements cleanuo ([16c132c](16c132c)), closes [#147](#147) * **rangeSlider:** restore wrongly removed state nesting ([3ed3d39](3ed3d39)) * **React:** require React in order for JSX to work in widgets ([64d6011](64d6011)) * **react-nouislider:** upgrade react-nouislider to avoid mutating props ([1b7cd1d](1b7cd1d)) * **refinementList:** ensure the key reflects the underlying state ([b048f0b](b048f0b)), closes [#398](#398) * **refinementList:** Remove `singleRefine` attribute ([db73e38](db73e38)), closes [#220](#220) * **refinementList:** singleRefine is not dependant from operator ([d29dff6](d29dff6)) * **RefinementList:** click on child should not click on parent ([d476da2](d476da2)), closes [#191](#191) * **search-box:** Fix #137 autofocus must be configurable ([51f01be](51f01be)), closes [#137](#137) * **searchBox:** allow searchBox to reuse an `<input>` ([e820cc3](e820cc3)) * **searchBox:** do not update input's value if focused ([0e85f0d](0e85f0d)), closes [#163](#163) * **searchBox:** handling pasting event with contextual menu. ([a172458](a172458)), closes [#467](#467) * **searchBox:** Use `hasAttribute` instead of `getAttribute` ([a122af9](a122af9)) * **SearchBox:** Missing poweredBy in the not focused SearchBox ([ef695ff](ef695ff)) * **selector:** makes component as uncontrolled component ([1dda12a](1dda12a)) * **slider:** allow handles to reach the real start and end of the slider ([03ed3f5](03ed3f5)) * **slider:** fix tap event throwing ([d906d3e](d906d3e)), closes [#120](#120) * **slider:** fixed `pip` propTypes constraint ([c77b7f4](c77b7f4)) * **slider:** hide slider if when no hits/matches ([31e4a80](31e4a80)), closes [#107](#107) * **Slider:** cssClasses.body handled by headerFooter HOC ([d8d20b2](d8d20b2)) * **stats:** Move CSS classes definition to widget from component ([99073cd](99073cd)) * **template:** throw when no way to deal with the template type ([f5d151a](f5d151a)) * **template:** transformData checks too strict ([609f123](609f123)), closes [#347](#347) * **Template:** add default value for template ([4291014](4291014)) * **templatesConfig:** helpers are now following Mustache spec ([8f3502f](8f3502f)) * **transformData:** this test is not needed, already covered by Template ([36e5b9c](36e5b9c)) * **url-sync:** handle both hash and query parameter fix #165 ([8d84de6](8d84de6)), closes [#165](#165) * **url-sync:** make input not to lose focus ([63488d3](63488d3)) * **validate-commit:** Update the regexp ([96b93ba](96b93ba)) * **website:** defered doc scripts ([0c1324f](0c1324f)) * **website:** doc layout responsive ([a4dc894](a4dc894)) * **website:** fix images path ([a3f62eb](a3f62eb)) * **website:** fixed space overlay color animation ([200b8a7](200b8a7)) * **website:** Fixes & responsive stuff for doc ([7a8f920](7a8f920)) * **website:** footer markup ([95364a1](95364a1)) * **website:** home.js lint ([b70e06e](b70e06e)) * **website:** icon-theme didn't like svgo (to fix) ([38d84af](38d84af)) * **website:** image alt ([30cca29](30cca29)) * **website:** jsdelivr for every scripts ([06591d4](06591d4)) * **website:** Nav Icon + logo ([c1f419c](c1f419c)) * **website:** only load what's needed in bootstrap ([4843474](4843474)) * Use `appId` and `apiKey` keys ([5716552](5716552)) * **website:** removed animation debug ([01ac079](01ac079)) * Keep `en-EN` as demo default ([6c2a043](6c2a043)) * More explicit error message when DOM selector is invalid ([d36a2ad](d36a2ad)), closes [#105](#105) * no more needed to override css class here ([2b314c0](2b314c0)) * no need for a flag in refinementList refine() ([9b8fa3f](9b8fa3f)) * no state needed for Hogan component ([d8a3a4c](d8a3a4c)) * react-nouislider will live in our repo for now ([49520f1](49520f1)) * reduce the dependency between REACT components and helper ([9309a4c](9309a4c)) * Remove `htmlAttribute` in favor of `cssClass` ([59a0bc5](59a0bc5)) * remove data-role from searchBox ([bdfe6d3](bdfe6d3)) * remove linebreak ([e5f1720](e5f1720)) * rename BEM root algolia-magic to as ([5f3329d](5f3329d)), closes [#24](#24) * rename results component to hits ([7b9eb25](7b9eb25)) * Set `cssClass` as optional in documentation ([e7ac953](e7ac953)) * set visibility:hidden by default for uneeded pagination links ([19fddba](19fddba)), closes [#37](#37) * strict container check ([ec23e34](ec23e34)) * switch back to divs, rendering glitch ([b44943a](b44943a)) * toggleRefine was no more working ([e6e35df](e6e35df)) * update algoliasearch and algoliasearch-helper ([e944d12](e944d12)) * upgrade all libs, switch to ^ dependencies ([79d0a64](79d0a64)) * use cssClass instead of inputClass or addClass ([6826bd6](6826bd6)) * use toggleRefinement ([b497b02](b497b02)) * widgets.searchbox => widgets.searchBox ([6c49e18](6c49e18)) * wrap in an li the checkbox ([dfe629d](dfe629d)) * **website:** space bg fadeIn ([5e09844](5e09844)) * **website:** unclosed content block ([d42dc3e](d42dc3e)) ### Features * Add `htmlAttributes` to indexSelector ([ceed8ae](ceed8ae)) * Add stats widget ([8290542](8290542)) * Add support for `className` ([898a2fa](898a2fa)) * Add Toggle example ([d801807](d801807)) * Check that currentIndex is in indices list ([494dbe9](494dbe9)) * example now uses the instant_search index ([63b4b50](63b4b50)) * expose instantsearch.version ([ae5ef94](ae5ef94)) * expose instantsearch() as main init method ([27baf55](27baf55)), closes [#6](#6) * formatNumber in Stats widget ([cf6a83c](cf6a83c)) * hierarchicalWidget ([1facd9d](1facd9d)) * **url-sync:** Add `is_v` version to url ([9f597a0](9f597a0)), closes [#70](#70) * indexSelector widget ([b60ed36](b60ed36)) * multipleChoiceList => refinementList ([423542d](423542d)), closes [#64](#64) * multipleChoiceList first iteration ([bc91bfb](bc91bfb)) * MutlipleChoiceList second pass ([ac74dfb](ac74dfb)) * pagination component ([fad2720](fad2720)) * pimp the npm run dev example using instant search data ([ea666ad](ea666ad)), closes [#20](#20) * **bem:** Add BEM to the index-selector widget ([564da51](564da51)) * **bem:** Add BEM-styling to the Stats widget ([92cebeb](92cebeb)) * **build:** Add minified CSS theme version to build ([77f0640](77f0640)) * **build:** allow building React based custom widgets ([cfbbfe4](cfbbfe4)), closes [#373](#373) * **core/lifecycle-event:** emits `render` when render ([7f03ae9](7f03ae9)) * **es7:** Enable `es7.objectRestSpread` ([fc2fbc4](fc2fbc4)) * **examples:** try examples instead of themes ([bedffce](bedffce)) * **headerFooter:** Add BEM classes to header and footer ([9e9d438](9e9d438)), closes [#259](#259) * **headerFooter:** Only add markup if a template is defined ([7a2d22d](7a2d22d)), closes [#370](#370) * **hierarchical-menu:** Add BEM classes ([58ec191](58ec191)) * **hierarchical-menu:** Add CSS classes dependent on the depth ([1256ea8](1256ea8)) * **hierarchicalMenu:** Adding indentation with default theme ([34885d2](34885d2)) * **hits:** Add BEM styling to the `hits` widget ([6681960](6681960)) * **hits-per-page-selector:** New widget to change hitsPerPage ([a3e0f78](a3e0f78)), closes [#331](#331) * **menu:** Add BEM classes ([467f49e](467f49e)) * **menu:** first widget version ([a888143](a888143)) * **menu,refinementList:** add header/item/footer templating solution ([58275dc](58275dc)), closes [#101](#101) * **numericRefinementList:** create numericRefinementList widget using refinementList component ([a29e9c7](a29e9c7)) * **pagination:** add `scrollTo` option ([e6cd621](e6cd621)), closes [#73](#73) * **pagination:** add hitsPerPage and maxPages options ([7e558ce](7e558ce)) * **priceRanges:** Add BEM classes and tests ([ad58d7a](ad58d7a)), closes [#387](#387) * **priceRanges:** new Amazon-style price ranges widget ([e5fe344](e5fe344)) * **priceRanges:** polish priceRanges widget ([0994e6f](0994e6f)) * **rangeSlider:** add headerFooter decorator ([19090c3](19090c3)) * **refinement-list:** Add BEM naming ([b09b830](b09b830)) * **refinementlist:** Move default templates to its own file ([cb6fa16](cb6fa16)) * **refinementList:** Limits improvement ([ebcc8a9](ebcc8a9)) * **searchbox:** Make the searchBox BEMish ([db8bd60](db8bd60)) * **searchBox:** ability to be non-instant ([b3ef871](b3ef871)), closes [#458](#458) * **searchBox:** Add `wrapInput` option ([b327dbc](b327dbc)) * **searchBox:** add headerFooter decorator to the Component ([5974a88](5974a88)) * **searchBox:** add poweredBy option, disabled by default ([c9da165](c9da165)) * **slider:** allow overriding css classes from a user stylesheet ([a1e87dd](a1e87dd)) * **slider:** first iteration ([229bb02](229bb02)) * **slider:** second iteration ([885aff6](885aff6)) * **stats:** add query variable to the template ([75f457d](75f457d)) * **templatesConfig:** helpers and options transferred to Template ([456d781](456d781)), closes [#99](#99) * **theme:** Add `searchBox` widget to default theme ([def831f](def831f)) * **theme:** Add debug.css file ([ff8f2dc](ff8f2dc)), closes [#249](#249) * **theme:** Move `indexSelector` styling to default.css ([1841ef1](1841ef1)) * **theme:** Move all default css rules to `default.css` ([57c8c65](57c8c65)) * **toggle:** add headerFooter decorator ([8a70c7d](8a70c7d)) * **toggle:** Adding BEM class naming ([8730c97](8730c97)) * **toggle:** Allow custom on/off values ([9b6c2bf](9b6c2bf)), closes [#409](#409) * **transformData:** add to every widget using the Template component ([d080a03](d080a03)), closes [#116](#116) * **transformData:** refinementList + menu implementation ([0a0e36e](0a0e36e)) * Switch/Toggle widget ([3b2a450](3b2a450)) * Use `helpers.formatNumber` syntax instead of `_formatNumber` ([6207514](6207514)) * Warn users if we do not override `helpers` in templates ([a4199a5](a4199a5)) * **urls:** ability to create an URL from a set of params ([9ca8369](9ca8369)), closes [#372](#372) * **urlSync:** add urlSync widget ([50fc4ce](50fc4ce)) * **urlSync:** url generation for widget links. Fix #29 ([23dd505](23dd505)), closes [#29](#29) * **widgets:** auto hide some widgets ([187b4bd](187b4bd)) ### Performance Improvements * **hitsPerPageSelector:** Use the correct lodash function ([be9aea7](be9aea7)) ### BREAKING CHANGES * hierarchicalMenu: Hierarchical menu levels 1 and 2 now have a margin-left added in the default theme. * menu,refinementList: Removed from menu and refinementList: - rootClass => cssClasses.root - itemCLass => cssClasses.item - template => templates.item Added to menu and refinementList: - cssClasses{root,list,item} - templates{header,item,footer} - widget (container) is automatically hidden by default - hideWhenNoResults=true This was done to allow more templating solutions like discussed in #101. * numerical widgets: the priceRanges and rangeSlider widgets are now using `attributeName` instead of `facetName`. * priceRanges: `ais-price-ranges--range` are now named `ais-price-ranges--item` and are wrapped in a `ais-price-ranges--list`. I've moved the bottom form into it's own PriceRangesForm component, along with its own tests. I've fixed a minor typo where the component was internally named PriceRange (without the final __s__). I factorize some logic form the render in individual methods and manage to individually test them. This was not an easy task. I had to mock the default `render` (so it does nothing) before instanciating the component. Then, I was able to call each inner method individually. This requires to stub prototype methods in beforeEach, then restore them in afterEach. I've added a few helper methods, this can surely be simplified again but this gives nice granularity in testing. I've renamed the `range` items to `item` and wrapped them in a `list`. I've also added classes to all elements we add (`label`, `separator`, etc). I've removed the empty `span`s. * headerFooter: The `<div class="ais-header">` and `<div class="ais-footer">` markup is only added when a `templates.{header,footer}` is passed. * urls: the instantsearch.createURL method is now taking a simple JS object and not a SearchParameter instance anymore. * searchBox: The `input` used by the search-box widget is now wrapped in a `<div class="ais-search-box">` by default. This can be turned off with `wrapInput: false`. This PR is a bit long, I had to do some minor refactoring to keep the new code understandable. I simply split the large `init` method into calls to smaller methods. There is some vanilla JS DOM manipulation involved to handle all the possible cases: targeting an `input` or a `div`, adding or not the `poweredBy`, adding or not the wrapping div. Note that there is no `targetNode.insertAfter(newNode)` method, so I had to resort to the old trick of `parentNode.insertBefore(newNode, targetNode.nextSibling)`. * priceRanges: the `input-group` modifier has been renamed to `form` * autohide: Widget attribute is now named `hideContainerWhenNoResults` instead of `hideWhenNoResults` to be more explicit on what it is really doing. Also internally renamed the `autoHide` decorator to `autoHideContainer` * build: You should now include the `default.css` file in your page to get the default styling. - Added `clean-css` as minifier - Updated build script - Updated documentation about loading it from jsdeliver - `npm shrinkwrap` madness * hits: The hit template and transform data key is renamed from `hit` to `item` to stay consistent with the other widgets * api: use autoHideContainer instead of hideContainerWhenNoResults * stats: `cssClasses.root` now applies to the main root element (above header and footer) and no longer to the template wrapper. To style the template wrapper, use `cssClasses.body` * theme: Classes are now named `ais-index-selector` and `ais-index-selector--item` to stay consistent with other widgets. Updated tests as well. Widget is responsible for adding default classes + user-defined ones. Then component simply add them to the markup. * theme: "Powered by" styles are now `ais-search-box--powered-by` and `ais-search-box--powered-by-link`. * urlSync: urlSync is not a widget anymore. It's now an option of instantsearch(appID, apiKey, opts);. See the README.md for more info. * searchbox: The `searchBox` widget now expect a `cssClasses.{input, poweredBy}` * bem: We now use a `span.ais-stats--time` instead of a `small` tag in the stats widget. * bem: We now use `cssClasses.select` and `cssClasses.option` instead of `cssClass` for the index-selector widget. * toggle: S: - toggle: removed template * searchBox: - removed: inputClass * menu: The default template now has the count element inside the link, not outside.
After refining on one of the items of the RefinementList, the CSS rule I put in place to highlight the refined item was not applied. Funny thing is as soon as I move the cursor hover the item, my CSS rules applies.
We're currently rendering the items of a RefinementList using:
Changing the
key
tofacetValue[this.props.facetNameKey] + '/' + facetValue.isRefined + '/' + facetValue.count
fixes the issue.The text was updated successfully, but these errors were encountered: