Skip to content

Commit 505a2e7

Browse files
francoischalifoursamouss
authored andcommitted
feat(ratingMenu): merge labels and templates (#3317)
* feat(ratingMenu): merge labels and templates * test(ratingMenu): update tests * refactor(tests): remove unused import * feat(ratingMenu): remove andUp template * docs(migration): mark labels.andUp removed * fix(stories): remove andUp templates
1 parent d98ecaf commit 505a2e7

File tree

8 files changed

+16
-70
lines changed

8 files changed

+16
-70
lines changed

docgen/src/guides/v3-migration.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -915,9 +915,12 @@ Widget removed.
915915

916916
### Options
917917

918-
| Before | After |
919-
| --------------- | ----------- |
920-
| `attributeName` | `attribute` |
918+
| Before | After |
919+
| --------------- | ----------------- |
920+
| `attributeName` | `attribute` |
921+
| `labels.andUp` | Removed |
922+
923+
The value for the label `andUp` is now inlined inside `templates.item`.
921924

922925
### CSS classes
923926

src/widgets/rating-menu/__tests__/__snapshots__/rating-menu-test.js.snap

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
2525
Object {
2626
"count": 0,
2727
"isRefined": false,
28-
"labels": Object {
29-
"andUp": "& Up",
30-
},
3128
"name": "4",
3229
"stars": Array [
3330
true,
@@ -41,9 +38,6 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
4138
Object {
4239
"count": 0,
4340
"isRefined": false,
44-
"labels": Object {
45-
"andUp": "& Up",
46-
},
4741
"name": "3",
4842
"stars": Array [
4943
true,
@@ -57,9 +51,6 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
5751
Object {
5852
"count": 0,
5953
"isRefined": false,
60-
"labels": Object {
61-
"andUp": "& Up",
62-
},
6354
"name": "2",
6455
"stars": Array [
6556
true,
@@ -73,9 +64,6 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
7364
Object {
7465
"count": 0,
7566
"isRefined": false,
76-
"labels": Object {
77-
"andUp": "& Up",
78-
},
7967
"name": "1",
8068
"stars": Array [
8169
true,
@@ -95,7 +83,7 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
9583
{{#stars}}<svg class=\\"{{cssClasses.starIcon}} {{#.}}{{cssClasses.fullStarIcon}}{{/.}}{{^.}}{{cssClasses.emptyStarIcon}}{{/.}}\\" aria-hidden=\\"true\\" width=\\"24\\" height=\\"24\\">
9684
{{#.}}<use xlink:href=\\"#ais-RatingMenu-starSymbol\\"></use>{{/.}}{{^.}}<use xlink:href=\\"#ais-RatingMenu-starEmptySymbol\\"></use>{{/.}}
9785
</svg>{{/stars}}
98-
<span class=\\"{{cssClasses.label}}\\">{{labels.andUp}}</span>
86+
<span class=\\"{{cssClasses.label}}\\">& Up</span>
9987
{{#count}}<span class=\\"{{cssClasses.count}}\\">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>{{/count}}
10088
{{#count}}</a>{{/count}}{{^count}}</div>{{/count}}",
10189
},
@@ -156,9 +144,6 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
156144
Object {
157145
"count": 0,
158146
"isRefined": false,
159-
"labels": Object {
160-
"andUp": "& Up",
161-
},
162147
"name": "4",
163148
"stars": Array [
164149
true,
@@ -172,9 +157,6 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
172157
Object {
173158
"count": 0,
174159
"isRefined": false,
175-
"labels": Object {
176-
"andUp": "& Up",
177-
},
178160
"name": "3",
179161
"stars": Array [
180162
true,
@@ -188,9 +170,6 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
188170
Object {
189171
"count": 0,
190172
"isRefined": false,
191-
"labels": Object {
192-
"andUp": "& Up",
193-
},
194173
"name": "2",
195174
"stars": Array [
196175
true,
@@ -204,9 +183,6 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
204183
Object {
205184
"count": 0,
206185
"isRefined": false,
207-
"labels": Object {
208-
"andUp": "& Up",
209-
},
210186
"name": "1",
211187
"stars": Array [
212188
true,
@@ -226,7 +202,7 @@ exports[`ratingMenu() calls twice ReactDOM.render(<RefinementList props />, cont
226202
{{#stars}}<svg class=\\"{{cssClasses.starIcon}} {{#.}}{{cssClasses.fullStarIcon}}{{/.}}{{^.}}{{cssClasses.emptyStarIcon}}{{/.}}\\" aria-hidden=\\"true\\" width=\\"24\\" height=\\"24\\">
227203
{{#.}}<use xlink:href=\\"#ais-RatingMenu-starSymbol\\"></use>{{/.}}{{^.}}<use xlink:href=\\"#ais-RatingMenu-starEmptySymbol\\"></use>{{/.}}
228204
</svg>{{/stars}}
229-
<span class=\\"{{cssClasses.label}}\\">{{labels.andUp}}</span>
205+
<span class=\\"{{cssClasses.label}}\\">& Up</span>
230206
{{#count}}<span class=\\"{{cssClasses.count}}\\">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>{{/count}}
231207
{{#count}}</a>{{/count}}{{^count}}</div>{{/count}}",
232208
},

src/widgets/rating-menu/__tests__/rating-menu-test.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import jsHelper, { SearchResults } from 'algoliasearch-helper';
22
import ratingMenu from '../rating-menu.js';
3-
import defaultLabels from '../../../widgets/rating-menu/defaultLabels.js';
43

54
describe('ratingMenu()', () => {
65
const attribute = 'anAttrName';
@@ -79,7 +78,6 @@ describe('ratingMenu()', () => {
7978
name: '1',
8079
value: '1',
8180
stars: [true, false, false, false, false],
82-
labels: defaultLabels,
8381
},
8482
]);
8583
});
@@ -160,31 +158,31 @@ describe('ratingMenu()', () => {
160158
{
161159
count: 1000,
162160
isRefined: false,
163-
labels: { andUp: '& Up' },
161+
164162
name: '4',
165163
value: '4',
166164
stars: [true, true, true, true, false],
167165
},
168166
{
169167
count: 1050,
170168
isRefined: false,
171-
labels: { andUp: '& Up' },
169+
172170
name: '3',
173171
value: '3',
174172
stars: [true, true, true, false, false],
175173
},
176174
{
177175
count: 1070,
178176
isRefined: false,
179-
labels: { andUp: '& Up' },
177+
180178
name: '2',
181179
value: '2',
182180
stars: [true, true, false, false, false],
183181
},
184182
{
185183
count: 1080,
186184
isRefined: false,
187-
labels: { andUp: '& Up' },
185+
188186
name: '1',
189187
value: '1',
190188
stars: [true, false, false, false, false],

src/widgets/rating-menu/defaultLabels.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/widgets/rating-menu/defaultTemplates.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default {
33
{{#stars}}<svg class="{{cssClasses.starIcon}} {{#.}}{{cssClasses.fullStarIcon}}{{/.}}{{^.}}{{cssClasses.emptyStarIcon}}{{/.}}" aria-hidden="true" width="24" height="24">
44
{{#.}}<use xlink:href="#ais-RatingMenu-starSymbol"></use>{{/.}}{{^.}}<use xlink:href="#ais-RatingMenu-starEmptySymbol"></use>{{/.}}
55
</svg>{{/stars}}
6-
<span class="{{cssClasses.label}}">{{labels.andUp}}</span>
6+
<span class="{{cssClasses.label}}">& Up</span>
77
{{#count}}<span class="{{cssClasses.count}}">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>{{/count}}
88
{{#count}}</a>{{/count}}{{^count}}</div>{{/count}}`,
99
};

src/widgets/rating-menu/rating-menu.js

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,12 @@ import cx from 'classnames';
33
import RefinementList from '../../components/RefinementList/RefinementList.js';
44
import connectRatingMenu from '../../connectors/rating-menu/connectRatingMenu.js';
55
import defaultTemplates from './defaultTemplates.js';
6-
import defaultLabels from './defaultLabels.js';
76
import { prepareTemplateProps, getContainerNode } from '../../lib/utils.js';
87
import { component } from '../../lib/suit.js';
98

109
const suit = component('RatingMenu');
1110

12-
const renderer = ({
13-
containerNode,
14-
cssClasses,
15-
templates,
16-
renderState,
17-
labels,
18-
}) => (
11+
const renderer = ({ containerNode, cssClasses, templates, renderState }) => (
1912
{ refine, items, createURL, instantSearchInstance },
2013
isFirstRendering
2114
) => {
@@ -33,7 +26,7 @@ const renderer = ({
3326
<RefinementList
3427
createURL={createURL}
3528
cssClasses={cssClasses}
36-
facetValues={items.map(item => ({ ...item, labels }))}
29+
facetValues={items}
3730
templateProps={renderState.templateProps}
3831
toggleRefinement={refine}
3932
>
@@ -60,14 +53,8 @@ ratingMenu({
6053
[ max = 5 ],
6154
[ cssClasses.{root, list, item, selectedItem, disabledItem, link, starIcon, fullStarIcon, emptyStarIcon, label, count} ],
6255
[ templates.{item} ],
63-
[ labels.{andUp} ],
6456
})`;
6557

66-
/**
67-
* @typedef {Object} RatingMenuWidgetLabels
68-
* @property {string} [andUp] Label used to suffix the ratings.
69-
*/
70-
7158
/**
7259
* @typedef {Object} RatingMenuWidgetTemplates
7360
* @property {string|function} [item] Item template, provided with `name`, `count`, `isRefined`, `url` data properties.
@@ -93,8 +80,7 @@ ratingMenu({
9380
* @typedef {Object} RatingMenuWidgetOptions
9481
* @property {string|HTMLElement} container Place where to insert the widget in your webpage.
9582
* @property {string} attribute Name of the attribute in your records that contains the ratings.
96-
* @property {number} [max=5] The maximum rating value.
97-
* @property {RatingMenuWidgetLabels} [labels] Labels used by the default template.
83+
* @property {number} [max = 5] The maximum rating value.
9884
* @property {RatingMenuWidgetTemplates} [templates] Templates to use for the widget.
9985
* @property {RatingMenuWidgetCssClasses} [cssClasses] CSS classes to add.
10086
*/
@@ -122,9 +108,6 @@ ratingMenu({
122108
* container: '#stars',
123109
* attribute: 'rating',
124110
* max: 5,
125-
* labels: {
126-
* andUp: '& Up'
127-
* }
128111
* })
129112
* );
130113
*/
@@ -133,7 +116,6 @@ export default function ratingMenu({
133116
attribute,
134117
max = 5,
135118
cssClasses: userCssClasses = {},
136-
labels = defaultLabels,
137119
templates = defaultTemplates,
138120
} = {}) {
139121
if (!container) {
@@ -177,7 +159,6 @@ export default function ratingMenu({
177159
cssClasses,
178160
renderState: {},
179161
templates,
180-
labels,
181162
});
182163

183164
try {

storybook/app/builtin/stories/rating-menu.stories.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ export default () => {
1616
container,
1717
attribute: 'rating',
1818
max: 5,
19-
labels: {
20-
andUp: '& Up',
21-
},
2219
})
2320
);
2421
})
@@ -31,9 +28,6 @@ export default () => {
3128
container,
3229
attribute: 'rating',
3330
max: 7,
34-
labels: {
35-
andUp: '& Up',
36-
},
3731
})
3832
);
3933
})

storybook/app/init-unmount-widgets.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,6 @@ export default () => {
262262
container,
263263
attribute: 'rating',
264264
max: 5,
265-
labels: {
266-
andUp: '& Up',
267-
},
268265
})
269266
)
270267
);

0 commit comments

Comments
 (0)