Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit e46fae7

Browse files
authoredJul 29, 2021
fix(BaseWidget): allow declared state and index widgets (#825)
1 parent d56cb07 commit e46fae7

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed
 

Diff for: ‎src/base-widget.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import { isPlatformBrowser } from '@angular/common';
33
import { bem, noop } from './utils';
44
import { NgAisInstantSearch } from './instantsearch/instantsearch';
55
import { NgAisIndex } from './index-widget/index-widget';
6-
import { Widget } from 'instantsearch.js/es/types';
7-
export { Widget };
6+
import { Widget as W } from 'instantsearch.js/es/types';
7+
import { IndexWidget } from 'instantsearch.js/es/widgets/index/index';
8+
9+
export type Widget = W | IndexWidget;
810

911
// TODO: use Connector type from InstantSearch. Not yet possible now,
1012
// since non-ts connectors can't have generics like Connector has,
@@ -14,11 +16,12 @@ export type Connector = (
1416
unmountFn: () => void
1517
) => (widgetOptions?: object) => Widget;
1618

17-
export abstract class BaseWidget implements OnInit, OnDestroy {
19+
export abstract class BaseWidget<TState extends Record<string, unknown> = {}>
20+
implements OnInit, OnDestroy {
1821
@Input() public autoHideContainer?: boolean;
1922

2023
public widget?: Widget;
21-
public state?: object = {};
24+
public state?: TState = {} as TState;
2225
public cx: ReturnType<typeof bem>;
2326
public abstract instantSearchInstance: NgAisInstantSearch;
2427
public abstract parentIndex?: NgAisIndex;
@@ -49,7 +52,7 @@ export abstract class BaseWidget implements OnInit, OnDestroy {
4952
}
5053

5154
public updateState = (
52-
state: {},
55+
state: TState,
5356
isFirstRendering: boolean
5457
): Promise<void> | void => {
5558
if (isFirstRendering) {

Diff for: ‎src/voice-search/voice-search.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ type State = {
114114
</ng-template>
115115
`,
116116
})
117-
export class NgAisVoiceSearch extends BaseWidget implements OnInit {
117+
export class NgAisVoiceSearch extends BaseWidget<State> implements OnInit {
118118
@ContentChild('button', { static: false })
119119
button: TemplateRef<ElementRef>;
120120
@ContentChild('status', { static: false })

0 commit comments

Comments
 (0)
This repository has been archived.