Skip to content

Commit 354148e

Browse files
author
Adetunji Oyebanji
committed
CURATE-584: Updated angular-instantsearch packages and fixed errors
1 parent 6c06cfe commit 354148e

File tree

16 files changed

+185
-149
lines changed

16 files changed

+185
-149
lines changed

apps/e-commerce/src/app/app.component.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, AfterViewInit } from '@angular/core';
2-
import algoliasearch from 'algoliasearch/lite';
2+
import { liteClient } from 'algoliasearch/lite';
33

44
@Component({
55
selector: 'app-root',
@@ -8,7 +8,7 @@ import algoliasearch from 'algoliasearch/lite';
88
})
99
export class AppComponent implements AfterViewInit {
1010
config = {
11-
searchClient: algoliasearch('latency', '6be0576ff61c053d5f9a3225e2a90f76'),
11+
searchClient: liteClient('latency', '6be0576ff61c053d5f9a3225e2a90f76'),
1212
indexName: 'instant_search',
1313
routing: true,
1414
};

apps/e-commerce/src/app/no-results/no-results.component.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -113,9 +113,7 @@ export type NoResultsState = {
113113
`,
114114
standalone: false
115115
})
116-
export class NoResults extends BaseWidget {
117-
public state: NoResultsState = {};
118-
116+
export class NoResults extends BaseWidget<NoResultsState> {
119117
constructor(
120118
@Inject(forwardRef(() => NgAisIndex))
121119
@Optional()

apps/e-commerce/src/app/rating-menu/rating-menu.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export type RatingMenuState = {
8585
`,
8686
standalone: false
8787
})
88-
export class RatingMenu extends BaseWidget {
88+
export class RatingMenu extends BaseWidget<RatingMenuState> {
8989
// rendering options
9090
@ContentChild('starSvg', { read: true, static: true })
9191
starSvg: TemplateRef<ElementRef>;

apps/e-commerce/src/app/reset-filters-mobile/reset-filters-mobile.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { connectClearRefinements } from 'instantsearch.js/es/connectors';
2121
`,
2222
standalone: false
2323
})
24-
export class ResetFiltersMobile extends BaseWidget {
24+
export class ResetFiltersMobile extends BaseWidget<any> {
2525
public state = {
2626
hasRefinements: false,
2727
refine: () => {},

libs/angular-instantsearch/package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"name": "@carnegie-learning/angular-instantsearch",
3-
"version": "5.0.1",
3+
"version": "6.0.0",
44
"peerDependencies": {
5-
"@angular/common": "^17.0.0",
6-
"@angular/core": "^17.0.0",
7-
"algoliasearch": "^4.22.1",
5+
"@angular/common": ">=17.0.0 <20.0.0",
6+
"@angular/core": ">=17.0.0 <20.0.0",
7+
"algoliasearch": "^5.1.1",
88
"algoliasearch-helper": "^3.16.3",
9-
"instantsearch.js": "^4.48.1",
9+
"instantsearch.js": "^4.75.7",
1010
"nouislider": "^10.0.0",
1111
"querystring-es3": "^0.2.1"
1212
},

libs/angular-instantsearch/src/__mocks__/base-widget.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export type Connector = (
1111
export class BaseWidget implements OnInit, OnDestroy {
1212
public widget?: Widget;
1313
public state?: object;
14-
public cx?: ReturnType<typeof bem>;
14+
public cx: ReturnType<typeof bem>;
1515

1616
constructor(widgetName: string) {
1717
this.cx = bem(widgetName);

libs/angular-instantsearch/src/base-widget.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export type Widget = W | IndexWidget;
1212
// since non-ts connectors can't have generics like Connector has,
1313
// as well as sometimes being not accurate enough / missing keys.
1414
export type Connector = (
15-
renderFn: (state: object, isFirstRendering: boolean) => void,
15+
renderFn: (state: Record<any, any>, isFirstRendering: boolean) => void,
1616
unmountFn: () => void
1717
) => (widgetOptions?: object) => Widget;
1818

@@ -51,12 +51,15 @@ export abstract class BaseWidget<TState extends Record<string, unknown>>
5151
}
5252

5353
public ngOnInit() {
54-
this.parent.addWidgets([this.widget]);
54+
if (!this.widget) {
55+
throw new Error('Widget has not been created');
56+
}
57+
this.parent.addWidgets([this.widget as W]);
5558
}
5659

5760
public ngOnDestroy() {
5861
if (isPlatformBrowser(this.instantSearchInstance.platformId)) {
59-
this.parent.removeWidgets([this.widget]);
62+
this.parent.removeWidgets([this.widget as W]);
6063
}
6164
}
6265

libs/angular-instantsearch/src/create-ssr-search-client.ts

+2-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as algoliasearchProxy from 'algoliasearch/lite';
1+
import { liteClient as algoliasearchProxy, SearchTypeDefault } from 'algoliasearch/lite';
22
import * as encodeProxy from 'querystring-es3/encode';
33
import {
44
VERSION as AngularVersion,
@@ -30,14 +30,7 @@ type RequestOptions = {
3030
// compatibility with different typescript settings:
3131
// - esModuleInterop
3232
// - allowSyntheticDefaultImports
33-
const algoliasearch = (
34-
typeof algoliasearchProxy.default === 'function'
35-
? algoliasearchProxy.default
36-
: algoliasearchProxy
37-
// eslint-disable-next-line @typescript-eslint/ban-types
38-
) as typeof algoliasearchProxy.default extends Function
39-
? typeof algoliasearchProxy.default
40-
: typeof algoliasearchProxy;
33+
const algoliasearch = algoliasearchProxy;
4134

4235
const encode = encodeProxy.default || encodeProxy;
4336

libs/angular-instantsearch/src/hits-per-page/hits-per-page.ts

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export class NgAisHitsPerPage extends TypedBaseWidget<
4444
refine: noop,
4545
hasNoResults: true, // TODO: disable <select> when true
4646
canRefine: false,
47+
createURL: () => '#',
4748
};
4849

4950
get isHidden(): boolean {

libs/angular-instantsearch/src/hits/hits.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,9 @@ export class NgAisHits extends TypedBaseWidget<
4949
public state: HitsRenderState = {
5050
hits: [],
5151
results: undefined,
52-
bindEvent: undefined,
53-
sendEvent: undefined,
52+
items: [],
53+
sendEvent: () => {},
54+
bindEvent: () => '',
5455
};
5556

5657
constructor(

libs/angular-instantsearch/src/index-widget/index-widget.ts

+6
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,16 @@ export class NgAisIndex implements OnInit, OnDestroy {
5555
}
5656

5757
public addWidgets(widgets: Widget[]) {
58+
if (!this.widget) {
59+
throw new Error('Widget has not been created');
60+
}
5861
this.widget.addWidgets(widgets);
5962
}
6063

6164
public removeWidgets(widgets: Widget[]) {
65+
if (!this.widget) {
66+
throw new Error('Widget has not been created');
67+
}
6268
this.widget.removeWidgets(widgets);
6369
}
6470

libs/angular-instantsearch/src/infinite-hits/infinite-hits.ts

+1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ export class NgAisInfiniteHits extends TypedBaseWidget<
8282
currentPageHits: [],
8383
isFirstPage: false,
8484
isLastPage: false,
85+
items: [],
8586
showMore: noop,
8687
showPrevious: noop,
8788
sendEvent: noop,

libs/angular-instantsearch/src/instantsearch/instantsearch.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
VERSION as AngularVersion,
1313
} from '@angular/core';
1414

15-
import * as algoliasearchProxy from 'algoliasearch/lite';
15+
import { liteClient } from 'algoliasearch/lite';
1616
import instantsearch from 'instantsearch.js/es';
1717

1818
import { Widget } from '../typed-base-widget';
@@ -22,7 +22,7 @@ export { SearchClient, Hit } from 'instantsearch.js/es/types';
2222
export { PlainSearchParameters as SearchParameters } from 'algoliasearch-helper';
2323

2424
// this is needed for different webpack/typescript configurations
25-
const _algoliasearch = algoliasearchProxy.default || algoliasearchProxy;
25+
const _algoliasearch = liteClient;
2626

2727
export type FacetSortByStringOptions =
2828
| 'count'

libs/angular-instantsearch/src/sort-by/sort-by.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export class NgAisSortBy extends TypedBaseWidget<
5151
public transformItems?: <U extends SortByItem>(items: SortByItem[]) => U[];
5252

5353
public state: SortByRenderState = {
54-
currentRefinement: null,
54+
currentRefinement: '',
5555
options: [],
5656
refine: noop,
5757
hasNoResults: false,

0 commit comments

Comments
 (0)