Skip to content

Commit 579eee8

Browse files
author
Eunjae Lee
authoredMar 3, 2021
fix(relevantSort): rename smartSort to relevantSort (#4668)
1 parent 264da66 commit 579eee8

File tree

14 files changed

+221
-221
lines changed

14 files changed

+221
-221
lines changed
 

‎CHANGELOG.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
### Bug Fixes
55

6-
* **smartSort:** export the widget and the connector ([#4663](https://github.com/algolia/instantsearch.js/issues/4663)) ([e7aaa8c](https://github.com/algolia/instantsearch.js/commit/e7aaa8ceb47b8cafc3a3a323ebe47f45f3841ba4))
6+
* **relevantSort:** export the widget and the connector ([#4663](https://github.com/algolia/instantsearch.js/issues/4663)) ([e7aaa8c](https://github.com/algolia/instantsearch.js/commit/e7aaa8ceb47b8cafc3a3a323ebe47f45f3841ba4))
77

88

99
### Features
@@ -17,7 +17,7 @@
1717

1818
### Features
1919

20-
* **smartSort:** add widget ([#4648](https://github.com/algolia/instantsearch.js/issues/4648)) ([89c6e86](https://github.com/algolia/instantsearch.js/commit/89c6e868f490e9b6e507dd70c215e962f4c69ccb))
20+
* **relevantSort:** add widget ([#4648](https://github.com/algolia/instantsearch.js/issues/4648)) ([89c6e86](https://github.com/algolia/instantsearch.js/commit/89c6e868f490e9b6e507dd70c215e962f4c69ccb))
2121
* **stats:** apply nbSortedHits ([#4649](https://github.com/algolia/instantsearch.js/issues/4649)) ([34478c1](https://github.com/algolia/instantsearch.js/commit/34478c198dcafbd45fd101db0cd2fbe6328272b8))
2222
* **ts:** convert menu ([#4652](https://github.com/algolia/instantsearch.js/issues/4652)) ([2271b43](https://github.com/algolia/instantsearch.js/commit/2271b4379918e865a1b0cea09c139e517df97bc5))
2323

‎src/components/SmartSort/SmartSort.tsx ‎src/components/RelevantSort/RelevantSort.tsx

+14-14
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,25 @@
33
import { h } from 'preact';
44
import Template from '../Template/Template';
55
import {
6-
SmartSortCSSClasses,
7-
SmartSortTemplates,
8-
} from '../../widgets/smart-sort/smart-sort';
6+
RelevantSortCSSClasses,
7+
RelevantSortTemplates,
8+
} from '../../widgets/relevant-sort/relevant-sort';
99

10-
type SmartSortProps = {
11-
cssClasses: SmartSortCSSClasses;
12-
templates: SmartSortTemplates;
13-
isSmartSorted: boolean;
10+
type RelevantSortProps = {
11+
cssClasses: RelevantSortCSSClasses;
12+
templates: RelevantSortTemplates;
13+
isRelevantSorted: boolean;
1414
isVirtualReplica: boolean;
1515
refine(relevancyStrictness: number | undefined): void;
1616
};
1717

18-
const SmartSort = ({
18+
const RelevantSort = ({
1919
cssClasses,
2020
templates,
21-
isSmartSorted,
21+
isRelevantSorted,
2222
isVirtualReplica,
2323
refine,
24-
}: SmartSortProps) =>
24+
}: RelevantSortProps) =>
2525
isVirtualReplica ? (
2626
<div className={cssClasses.root}>
2727
<Template
@@ -30,13 +30,13 @@ const SmartSort = ({
3030
rootProps={{
3131
className: cssClasses.text,
3232
}}
33-
data={{ isSmartSorted }}
33+
data={{ isRelevantSorted }}
3434
/>
3535
<button
3636
type="button"
3737
className={cssClasses.button}
3838
onClick={() => {
39-
if (isSmartSorted) {
39+
if (isRelevantSorted) {
4040
refine(0);
4141
} else {
4242
refine(undefined);
@@ -47,10 +47,10 @@ const SmartSort = ({
4747
rootTagName="span"
4848
templateKey="button"
4949
templates={templates}
50-
data={{ isSmartSorted }}
50+
data={{ isRelevantSorted }}
5151
/>
5252
</button>
5353
</div>
5454
) : null;
5555

56-
export default SmartSort;
56+
export default RelevantSort;

‎src/components/SmartSort/__tests__/SmartSort-test.tsx ‎src/components/RelevantSort/__tests__/RelevantSort-test.tsx

+16-16
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { h } from 'preact';
44
import { render, fireEvent } from '@testing-library/preact';
55

6-
import SmartSort from '../SmartSort';
6+
import RelevantSort from '../RelevantSort';
77

88
const cssClasses = {
99
root: 'root',
@@ -13,18 +13,18 @@ const cssClasses = {
1313

1414
const templates = {
1515
text: '',
16-
button: ({ isSmartSorted }) => {
17-
return isSmartSorted ? 'See all results' : 'See relevant results';
16+
button: ({ isRelevantSorted }) => {
17+
return isRelevantSorted ? 'See all results' : 'See relevant results';
1818
},
1919
};
2020

21-
describe('SmartSort', () => {
21+
describe('RelevantSort', () => {
2222
it('render nothing if not virtual replica', () => {
2323
const { container } = render(
24-
<SmartSort
24+
<RelevantSort
2525
cssClasses={cssClasses}
2626
templates={templates}
27-
isSmartSorted={false}
27+
isRelevantSorted={false}
2828
isVirtualReplica={false}
2929
refine={() => {}}
3030
/>
@@ -34,10 +34,10 @@ describe('SmartSort', () => {
3434

3535
it('render the default status', () => {
3636
const { container } = render(
37-
<SmartSort
37+
<RelevantSort
3838
cssClasses={cssClasses}
3939
templates={templates}
40-
isSmartSorted={false}
40+
isRelevantSorted={false}
4141
isVirtualReplica={true}
4242
refine={() => {}}
4343
/>
@@ -66,10 +66,10 @@ describe('SmartSort', () => {
6666
it('refine on button click', () => {
6767
const refine = jest.fn();
6868
const { getByText } = render(
69-
<SmartSort
69+
<RelevantSort
7070
cssClasses={cssClasses}
7171
templates={templates}
72-
isSmartSorted={false}
72+
isRelevantSorted={false}
7373
isVirtualReplica={true}
7474
refine={refine}
7575
/>
@@ -80,10 +80,10 @@ describe('SmartSort', () => {
8080

8181
it('render sorted status', () => {
8282
const { container } = render(
83-
<SmartSort
83+
<RelevantSort
8484
cssClasses={cssClasses}
8585
templates={templates}
86-
isSmartSorted={true}
86+
isRelevantSorted={true}
8787
isVirtualReplica={true}
8888
refine={() => {}}
8989
/>
@@ -112,10 +112,10 @@ describe('SmartSort', () => {
112112
it('refine with `undefined` on "See relevant results"', () => {
113113
const refine = jest.fn();
114114
const { getByText } = render(
115-
<SmartSort
115+
<RelevantSort
116116
cssClasses={cssClasses}
117117
templates={templates}
118-
isSmartSorted={false}
118+
isRelevantSorted={false}
119119
isVirtualReplica={true}
120120
refine={refine}
121121
/>
@@ -128,10 +128,10 @@ describe('SmartSort', () => {
128128
it('refine with `0` on "Seeing all results"', () => {
129129
const refine = jest.fn();
130130
const { getByText } = render(
131-
<SmartSort
131+
<RelevantSort
132132
cssClasses={cssClasses}
133133
templates={templates}
134-
isSmartSorted={true}
134+
isRelevantSorted={true}
135135
isVirtualReplica={true}
136136
refine={refine}
137137
/>

‎src/connectors/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ export { default as connectAutocomplete } from './autocomplete/connectAutocomple
2525
export { default as connectQueryRules } from './query-rules/connectQueryRules';
2626
export { default as connectVoiceSearch } from './voice-search/connectVoiceSearch';
2727
export { default as EXPERIMENTAL_connectAnswers } from './answers/connectAnswers';
28-
export { default as connectSmartSort } from './smart-sort/connectSmartSort';
28+
export { default as connectRelevantSort } from './relevant-sort/connectRelevantSort';

‎src/connectors/smart-sort/__tests__/connectSmartSort-test.ts ‎src/connectors/relevant-sort/__tests__/connectRelevantSort-test.ts

+35-35
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import algoliasearchHelper, {
22
SearchParameters,
33
SearchResults,
44
} from 'algoliasearch-helper';
5-
import connectSmartSort from '../connectSmartSort';
5+
import connectRelevantSort from '../connectRelevantSort';
66
import {
77
createInitOptions,
88
createRenderOptions,
@@ -16,17 +16,17 @@ const createHelper = () => {
1616
return algoliasearchHelper(createSearchClient(), '', {});
1717
};
1818

19-
describe('connectSmartSort', () => {
19+
describe('connectRelevantSort', () => {
2020
it('is a widget', () => {
2121
const render = jest.fn();
2222
const unmount = jest.fn();
2323

24-
const customSmartSort = connectSmartSort(render, unmount);
25-
const widget = customSmartSort({});
24+
const customRelevantSort = connectRelevantSort(render, unmount);
25+
const widget = customRelevantSort({});
2626

2727
expect(widget).toEqual(
2828
expect.objectContaining({
29-
$$type: 'ais.smartSort',
29+
$$type: 'ais.relevantSort',
3030
init: expect.any(Function),
3131
render: expect.any(Function),
3232
dispose: expect.any(Function),
@@ -36,7 +36,7 @@ describe('connectSmartSort', () => {
3636

3737
it('dispose relevancyStrictness set by the widget', () => {
3838
const helper = createHelper();
39-
const makeWidget = connectSmartSort(noop);
39+
const makeWidget = connectRelevantSort(noop);
4040
const widget = makeWidget({});
4141
widget.init!(createInitOptions({ helper }));
4242
const { refine } = widget.getWidgetRenderState(
@@ -59,7 +59,7 @@ describe('connectSmartSort', () => {
5959

6060
it('apply relevancyStrictness to helper on refine()', () => {
6161
const helper = createHelper();
62-
const makeWidget = connectSmartSort(noop);
62+
const makeWidget = connectRelevantSort(noop);
6363
const widget = makeWidget({});
6464

6565
widget.init!(createInitOptions({ helper }));
@@ -76,9 +76,9 @@ describe('connectSmartSort', () => {
7676
expect(helper.state.relevancyStrictness).toEqual(11);
7777
});
7878

79-
it('decide isSmartSorted based on appliedRelevancyStrictness', () => {
79+
it('decide isRelevantSorted based on appliedRelevancyStrictness', () => {
8080
const helper = createHelper();
81-
const makeWidget = connectSmartSort(noop);
81+
const makeWidget = connectRelevantSort(noop);
8282
const widget = makeWidget({});
8383

8484
widget.init!(createInitOptions({ helper }));
@@ -94,7 +94,7 @@ describe('connectSmartSort', () => {
9494
]),
9595
})
9696
);
97-
expect(renderState.isSmartSorted).toBe(true);
97+
expect(renderState.isRelevantSorted).toBe(true);
9898

9999
renderState = widget.getWidgetRenderState(
100100
createRenderOptions({
@@ -107,12 +107,12 @@ describe('connectSmartSort', () => {
107107
]),
108108
})
109109
);
110-
expect(renderState.isSmartSorted).toBe(false);
110+
expect(renderState.isRelevantSorted).toBe(false);
111111
});
112112

113113
it('decide isVirtualReplica based on appliedRelevancyStrictness', () => {
114114
const helper = createHelper();
115-
const makeWidget = connectSmartSort(noop);
115+
const makeWidget = connectRelevantSort(noop);
116116
const widget = makeWidget({});
117117

118118
widget.init!(createInitOptions({ helper }));
@@ -162,15 +162,15 @@ describe('connectSmartSort', () => {
162162
const helper = createHelper();
163163
const renderFn = jest.fn();
164164
const unmountFn = jest.fn();
165-
const makeWidget = connectSmartSort(renderFn, unmountFn);
165+
const makeWidget = connectRelevantSort(renderFn, unmountFn);
166166
const widget = makeWidget({});
167167

168168
const renderState1 = widget.getRenderState(
169169
{},
170170
createInitOptions({ helper })
171171
);
172-
expect(renderState1.smartSort).toEqual({
173-
isSmartSorted: false,
172+
expect(renderState1.relevantSort).toEqual({
173+
isRelevantSorted: false,
174174
isVirtualReplica: false,
175175
refine: expect.any(Function),
176176
widgetParams: {},
@@ -189,8 +189,8 @@ describe('connectSmartSort', () => {
189189
]),
190190
})
191191
);
192-
expect(renderState2.smartSort).toEqual({
193-
isSmartSorted: true,
192+
expect(renderState2.relevantSort).toEqual({
193+
isRelevantSorted: true,
194194
isVirtualReplica: true,
195195
refine: expect.any(Function),
196196
widgetParams: {},
@@ -201,14 +201,14 @@ describe('connectSmartSort', () => {
201201
describe('getWidgetRenderState', () => {
202202
it('return the widget render state', () => {
203203
const helper = createHelper();
204-
const makeWidget = connectSmartSort(noop);
204+
const makeWidget = connectRelevantSort(noop);
205205
const widget = makeWidget({});
206206

207207
const widgetRenderState1 = widget.getWidgetRenderState(
208208
createInitOptions({ helper })
209209
);
210210
expect(widgetRenderState1).toEqual({
211-
isSmartSorted: false,
211+
isRelevantSorted: false,
212212
isVirtualReplica: false,
213213
refine: expect.any(Function),
214214
widgetParams: {},
@@ -227,7 +227,7 @@ describe('connectSmartSort', () => {
227227
})
228228
);
229229
expect(widgetRenderState2).toEqual({
230-
isSmartSorted: true,
230+
isRelevantSorted: true,
231231
isVirtualReplica: true,
232232
refine: expect.any(Function),
233233
widgetParams: {},
@@ -238,19 +238,19 @@ describe('connectSmartSort', () => {
238238
describe('getWidgetUiState', () => {
239239
it('does not have relevancyStrictness by default', () => {
240240
const helper = createHelper();
241-
const makeWidget = connectSmartSort(noop);
241+
const makeWidget = connectRelevantSort(noop);
242242
const widget = makeWidget({});
243243

244244
const widgetUiState = widget.getWidgetUiState!(
245245
{},
246246
{ helper, searchParameters: helper.state }
247247
);
248-
expect(widgetUiState.smartSort?.relevancyStrictness).toBeUndefined();
248+
expect(widgetUiState.relevantSort?.relevancyStrictness).toBeUndefined();
249249
});
250250

251251
it('add refined parameters', () => {
252252
const helper = createHelper();
253-
const makeWidget = connectSmartSort(noop);
253+
const makeWidget = connectRelevantSort(noop);
254254
const widget = makeWidget({});
255255

256256
widget.init!(createInitOptions({ helper }));
@@ -262,22 +262,22 @@ describe('connectSmartSort', () => {
262262
expect(
263263
widget.getWidgetUiState!({}, { helper, searchParameters: helper.state })
264264
).toEqual({
265-
smartSort: { relevancyStrictness: 25 },
265+
relevantSort: { relevancyStrictness: 25 },
266266
});
267267
});
268268

269269
it('overwrite existing uiState with searchParameters', () => {
270270
const helper = createHelper();
271-
const makeWidget = connectSmartSort(noop);
271+
const makeWidget = connectRelevantSort(noop);
272272
const widget = makeWidget({});
273273

274274
expect(
275275
widget.getWidgetUiState!(
276-
{ smartSort: { relevancyStrictness: 25 } },
276+
{ relevantSort: { relevancyStrictness: 25 } },
277277
{ helper, searchParameters: helper.state }
278278
)
279279
).toEqual({
280-
smartSort: { relevancyStrictness: undefined },
280+
relevantSort: { relevancyStrictness: undefined },
281281
});
282282

283283
const { refine } = widget.getWidgetRenderState(
@@ -288,18 +288,18 @@ describe('connectSmartSort', () => {
288288
// applies 30 from searchParameters
289289
expect(
290290
widget.getWidgetUiState!(
291-
{ smartSort: { relevancyStrictness: 25 } },
291+
{ relevantSort: { relevancyStrictness: 25 } },
292292
{ helper, searchParameters: helper.state }
293293
)
294294
).toEqual({
295-
smartSort: { relevancyStrictness: 30 },
295+
relevantSort: { relevancyStrictness: 30 },
296296
});
297297
});
298298
});
299299

300300
describe('getWidgetSearchParameters', () => {
301301
it('does not include relevancyStrictness by default', () => {
302-
const makeWidget = connectSmartSort(noop);
302+
const makeWidget = connectRelevantSort(noop);
303303
const widget = makeWidget({});
304304

305305
const searchParameters = widget.getWidgetSearchParameters!(
@@ -312,14 +312,14 @@ describe('connectSmartSort', () => {
312312
});
313313

314314
it('return parameters set by uiState', () => {
315-
const makeWidget = connectSmartSort(noop);
315+
const makeWidget = connectRelevantSort(noop);
316316
const widget = makeWidget({});
317317

318318
const searchParameters = widget.getWidgetSearchParameters!(
319319
new SearchParameters(),
320320
{
321321
uiState: {
322-
smartSort: {
322+
relevantSort: {
323323
relevancyStrictness: 15,
324324
},
325325
},
@@ -332,7 +332,7 @@ describe('connectSmartSort', () => {
332332

333333
it('store refined state', () => {
334334
const helper = createHelper();
335-
const makeWidget = connectSmartSort(noop);
335+
const makeWidget = connectRelevantSort(noop);
336336
const widget = makeWidget({});
337337

338338
const { refine } = widget.getWidgetRenderState(
@@ -348,7 +348,7 @@ describe('connectSmartSort', () => {
348348

349349
it('override parameters with the value from uiState', () => {
350350
const helper = createHelper();
351-
const makeWidget = connectSmartSort(noop);
351+
const makeWidget = connectRelevantSort(noop);
352352
const widget = makeWidget({});
353353

354354
const { refine } = widget.getWidgetRenderState(
@@ -360,7 +360,7 @@ describe('connectSmartSort', () => {
360360
new SearchParameters(),
361361
{
362362
uiState: {
363-
smartSort: {
363+
relevantSort: {
364364
relevancyStrictness: 15,
365365
},
366366
},

‎src/connectors/smart-sort/connectSmartSort.ts ‎src/connectors/relevant-sort/connectRelevantSort.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
import { Connector } from '../../types';
22
import { noop } from '../../lib/utils';
33

4-
export type SmartSortConnectorParams = {};
4+
export type RelevantSortConnectorParams = {};
55

66
type Refine = (relevancyStrictness: number) => void;
77

8-
export type SmartSortRendererOptions = {
9-
isSmartSorted: boolean;
8+
export type RelevantSortRendererOptions = {
9+
isRelevantSorted: boolean;
1010
isVirtualReplica: boolean;
1111
refine: Refine;
1212
};
1313

14-
export type SmartSortConnector = Connector<
15-
SmartSortRendererOptions,
16-
SmartSortConnectorParams
14+
export type RelevantSortConnector = Connector<
15+
RelevantSortRendererOptions,
16+
RelevantSortConnectorParams
1717
>;
1818

19-
const connectSmartSort: SmartSortConnector = function connectSmartSort(
19+
const connectRelevantSort: RelevantSortConnector = function connectRelevantSort(
2020
renderFn = noop,
2121
unmountFn = noop
2222
) {
@@ -28,7 +28,7 @@ const connectSmartSort: SmartSortConnector = function connectSmartSort(
2828
const connectorState: ConnectorState = {};
2929

3030
return {
31-
$$type: 'ais.smartSort',
31+
$$type: 'ais.relevantSort',
3232

3333
init(initOptions) {
3434
const { instantSearchInstance } = initOptions;
@@ -62,7 +62,7 @@ const connectSmartSort: SmartSortConnector = function connectSmartSort(
6262
getRenderState(renderState, renderOptions) {
6363
return {
6464
...renderState,
65-
smartSort: this.getWidgetRenderState(renderOptions),
65+
relevantSort: this.getWidgetRenderState(renderOptions),
6666
};
6767
},
6868

@@ -78,7 +78,7 @@ const connectSmartSort: SmartSortConnector = function connectSmartSort(
7878
const { appliedRelevancyStrictness } = results || {};
7979

8080
return {
81-
isSmartSorted:
81+
isRelevantSorted:
8282
typeof appliedRelevancyStrictness !== 'undefined' &&
8383
appliedRelevancyStrictness > 0,
8484
isVirtualReplica: appliedRelevancyStrictness !== undefined,
@@ -90,15 +90,15 @@ const connectSmartSort: SmartSortConnector = function connectSmartSort(
9090
getWidgetSearchParameters(state, { uiState }) {
9191
return state.setQueryParameter(
9292
'relevancyStrictness',
93-
uiState.smartSort?.relevancyStrictness ?? state.relevancyStrictness
93+
uiState.relevantSort?.relevancyStrictness ?? state.relevancyStrictness
9494
);
9595
},
9696

9797
getWidgetUiState(uiState, { searchParameters }) {
9898
return {
9999
...uiState,
100-
smartSort: {
101-
...uiState.smartSort,
100+
relevantSort: {
101+
...uiState.relevantSort,
102102
relevancyStrictness: searchParameters.relevancyStrictness,
103103
},
104104
};
@@ -107,4 +107,4 @@ const connectSmartSort: SmartSortConnector = function connectSmartSort(
107107
};
108108
};
109109

110-
export default connectSmartSort;
110+
export default connectRelevantSort;

‎src/types/widget.ts

+9-9
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ import {
7171
RangeRendererOptions,
7272
} from '../connectors/range/connectRange';
7373
import {
74-
SmartSortConnectorParams,
75-
SmartSortRendererOptions,
76-
} from '../connectors/smart-sort/connectSmartSort';
74+
RelevantSortConnectorParams,
75+
RelevantSortRendererOptions,
76+
} from '../connectors/relevant-sort/connectRelevantSort';
7777
import {
7878
MenuConnectorParams,
7979
MenuRendererOptions,
@@ -172,7 +172,7 @@ export type IndexUiState = {
172172
*/
173173
boundingBox: string;
174174
};
175-
smartSort?: {
175+
relevantSort?: {
176176
relevancyStrictness?: number;
177177
};
178178
sortBy?: string;
@@ -369,9 +369,9 @@ export type IndexRenderState = Partial<{
369369
>;
370370
};
371371
answers: WidgetRenderState<AnswersRendererOptions, AnswersConnectorParams>;
372-
smartSort: WidgetRenderState<
373-
SmartSortRendererOptions,
374-
SmartSortConnectorParams
372+
relevantSort: WidgetRenderState<
373+
RelevantSortRendererOptions,
374+
RelevantSortConnectorParams
375375
>;
376376
}>;
377377

@@ -420,7 +420,7 @@ export type Widget<
420420
| 'ais.ratingMenu'
421421
| 'ais.refinementList'
422422
| 'ais.searchBox'
423-
| 'ais.smartSort'
423+
| 'ais.relevantSort'
424424
| 'ais.sortBy'
425425
| 'ais.stats'
426426
| 'ais.toggleRefinement'
@@ -457,7 +457,7 @@ export type Widget<
457457
| 'ais.ratingMenu'
458458
| 'ais.refinementList'
459459
| 'ais.searchBox'
460-
| 'ais.smartSort'
460+
| 'ais.relevantSort'
461461
| 'ais.sortBy'
462462
| 'ais.stats'
463463
| 'ais.toggleRefinement'

‎src/widgets/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ export { default as queryRuleContext } from './query-rule-context/query-rule-con
2929
export { default as index } from './index/index';
3030
export { default as places } from './places/places';
3131
export { default as EXPERIMENTAL_answers } from './answers/answers';
32-
export { default as smartSort } from './smart-sort/smart-sort';
32+
export { default as relevantSort } from './relevant-sort/relevant-sort';

‎src/widgets/smart-sort/__tests__/smart-sort-test.ts ‎src/widgets/relevant-sort/__tests__/relevant-sort-test.ts

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { render } from 'preact';
2-
import smartSort from '../smart-sort';
2+
import relevantSort from '../relevant-sort';
33
import algoliasearchHelper, { SearchResults } from 'algoliasearch-helper';
44
import { createSearchClient } from '../../../../test/mock/createSearchClient';
55
import {
@@ -18,12 +18,12 @@ jest.mock('preact', () => {
1818

1919
const templates = {
2020
text: '',
21-
button: ({ isSmartSorted }) => {
22-
return isSmartSorted ? 'See all results' : 'See relevant results';
21+
button: ({ isRelevantSorted }) => {
22+
return isRelevantSorted ? 'See all results' : 'See relevant results';
2323
},
2424
};
2525

26-
describe('smartSort', () => {
26+
describe('relevantSort', () => {
2727
beforeEach(() => {
2828
(render as jest.Mock).mockReset();
2929
});
@@ -32,21 +32,21 @@ describe('smartSort', () => {
3232
it('throws without container', () => {
3333
expect(() => {
3434
// @ts-ignore wrong options
35-
smartSort({ container: undefined });
35+
relevantSort({ container: undefined });
3636
}).toThrowErrorMatchingInlineSnapshot(`
3737
"The \`container\` option is required.
3838
39-
See documentation: https://www.algolia.com/doc/api-reference/widgets/smart-sort/js/"
39+
See documentation: https://www.algolia.com/doc/api-reference/widgets/relevant-sort/js/"
4040
`);
4141
});
4242
});
4343

4444
it('render', () => {
4545
const helper = algoliasearchHelper(createSearchClient(), '', {});
46-
const widget = smartSort({
46+
const widget = relevantSort({
4747
container: document.createElement('div'),
4848
cssClasses: {
49-
root: 'my-SmartSort',
49+
root: 'my-RelevantSort',
5050
},
5151
templates,
5252
});
@@ -71,11 +71,11 @@ See documentation: https://www.algolia.com/doc/api-reference/widgets/smart-sort/
7171
expect(secondRender[0].props).toEqual(
7272
expect.objectContaining({
7373
cssClasses: {
74-
root: 'ais-SmartSort my-SmartSort',
75-
text: 'ais-SmartSort-text',
76-
button: 'ais-SmartSort-button',
74+
root: 'ais-RelevantSort my-RelevantSort',
75+
text: 'ais-RelevantSort-text',
76+
button: 'ais-RelevantSort-button',
7777
},
78-
isSmartSorted: true,
78+
isRelevantSorted: true,
7979
isVirtualReplica: true,
8080
refine: expect.any(Function),
8181
templates,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default {
2+
text: '',
3+
button: ({ isRelevantSorted }) =>
4+
isRelevantSorted ? 'See all results' : 'See relevant results',
5+
};
+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
/** @jsx h */
2+
3+
import { h, render } from 'preact';
4+
import cx from 'classnames';
5+
import {
6+
getContainerNode,
7+
createDocumentationMessageGenerator,
8+
} from '../../lib/utils';
9+
import { component } from '../../lib/suit';
10+
import { WidgetFactory, Renderer, Template } from '../../types';
11+
import connectRelevantSort, {
12+
RelevantSortConnectorParams,
13+
RelevantSortRendererOptions,
14+
} from '../../connectors/relevant-sort/connectRelevantSort';
15+
import RelevantSort from '../../components/RelevantSort/RelevantSort';
16+
import defaultTemplates from './defaultTemplates';
17+
18+
export type RelevantSortCSSClasses = Partial<{
19+
root: string;
20+
text: string;
21+
button: string;
22+
}>;
23+
24+
export type RelevantSortTemplates = Partial<{
25+
text: Template<{ isRelevantSorted: boolean }>;
26+
button: Template<{ isRelevantSorted: boolean }>;
27+
}>;
28+
29+
type RelevantSortWidgetParams = {
30+
container: string | HTMLElement;
31+
cssClasses?: RelevantSortCSSClasses;
32+
templates?: RelevantSortTemplates;
33+
};
34+
35+
type RelevantSortRendererWidgetParams = {
36+
container: HTMLElement;
37+
cssClasses: RelevantSortCSSClasses;
38+
templates: RelevantSortTemplates;
39+
} & RelevantSortWidgetParams;
40+
41+
type RelevantSortWidget = WidgetFactory<
42+
RelevantSortRendererOptions,
43+
RelevantSortConnectorParams,
44+
RelevantSortWidgetParams
45+
>;
46+
47+
const withUsage = createDocumentationMessageGenerator({
48+
name: 'relevant-sort',
49+
});
50+
51+
const suit = component('RelevantSort');
52+
53+
const renderer: Renderer<
54+
RelevantSortRendererOptions,
55+
RelevantSortRendererWidgetParams
56+
> = ({ isRelevantSorted, isVirtualReplica, refine, widgetParams }) => {
57+
const { container, cssClasses, templates } = widgetParams;
58+
59+
render(
60+
<RelevantSort
61+
cssClasses={cssClasses}
62+
templates={templates}
63+
isRelevantSorted={isRelevantSorted}
64+
isVirtualReplica={isVirtualReplica}
65+
refine={refine}
66+
/>,
67+
container
68+
);
69+
};
70+
71+
const relevantSort: RelevantSortWidget = widgetParams => {
72+
const {
73+
container,
74+
templates: userTemplates = {} as RelevantSortTemplates,
75+
cssClasses: userCssClasses = {} as RelevantSortCSSClasses,
76+
} = widgetParams;
77+
78+
if (!container) {
79+
throw new Error(withUsage('The `container` option is required.'));
80+
}
81+
82+
const cssClasses: RelevantSortCSSClasses = {
83+
root: cx(suit(), userCssClasses.root),
84+
text: cx(suit({ descendantName: 'text' }), userCssClasses.text),
85+
button: cx(suit({ descendantName: 'button' }), userCssClasses.button),
86+
};
87+
88+
const templates: RelevantSortTemplates = {
89+
...defaultTemplates,
90+
...userTemplates,
91+
};
92+
93+
const containerNode = getContainerNode(container);
94+
const makeWidget = connectRelevantSort(renderer, () => {
95+
render(null, containerNode);
96+
});
97+
98+
return {
99+
...makeWidget({
100+
container: containerNode,
101+
cssClasses,
102+
templates,
103+
}),
104+
$$widgetType: 'ais.relevantSort',
105+
};
106+
};
107+
108+
export default relevantSort;

‎src/widgets/smart-sort/defaultTemplates.ts

-5
This file was deleted.

‎src/widgets/smart-sort/smart-sort.tsx

-108
This file was deleted.

‎stories/smart-sort.stories.ts ‎stories/relevant-sort.stories.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import { storiesOf } from '@storybook/html';
22
import { withHits } from '../.storybook/decorators';
3-
import smartSort from '../src/widgets/smart-sort/smart-sort';
3+
import relevantSort from '../src/widgets/relevant-sort/relevant-sort';
44

55
const searchOptions = {
66
appId: 'C7RIRJRYR9',
77
apiKey: '77af6d5ffb27caa5ff4937099fcb92e8',
88
indexName: 'test_Bestbuy_vr_price_asc',
99
};
1010

11-
storiesOf('Sorting/SmartSort', module).add(
11+
storiesOf('Sorting/RelevantSort', module).add(
1212
'default',
1313
withHits(({ search, container }) => {
1414
search.addWidgets([
15-
smartSort({
15+
relevantSort({
1616
container,
1717
cssClasses: {
18-
root: 'my-SmartSort',
18+
root: 'my-RelevantSort',
1919
},
2020
}),
2121
]);

0 commit comments

Comments
 (0)
Please sign in to comment.