Skip to content

Commit

Permalink
fix accept callable filter interaction
Browse files Browse the repository at this point in the history
  • Loading branch information
wKich committed Oct 20, 2021
1 parent e95ab99 commit 68f7af2
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
4 changes: 3 additions & 1 deletion packages/html/src/match.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Filter } from './filter';
import { Filters, FilterFn, FilterObject } from './specification';
import { escapeHtml } from './escape-html';
import { MaybeMatcher, applyMatcher, matcherDescription } from './matcher';
import { Interaction, isInteraction } from '.';

const check = (value: unknown): string => value ? "✓" : "⨯";

Expand Down Expand Up @@ -125,7 +126,8 @@ export class MatchFilterItem<T, E extends Element, F extends Filters<E>> {
if(this.filter.specification.filters && this.filter.specification.filters[this.key]) {
let definition = this.filter.specification.filters[this.key];
if(typeof(definition) === 'function') {
this.actual = definition(this.element) as T;
let actualOrInteraction = definition(this.element) as T | (Interaction<T> & FilterObject<T, E>);
this.actual = isInteraction(actualOrInteraction) ? actualOrInteraction.apply(this.element) : actualOrInteraction;
} else {
this.actual = definition.apply(this.element) as T;
}
Expand Down
2 changes: 2 additions & 0 deletions packages/html/src/specification.ts
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,8 @@ export type FilterReturn<F> = {

export type FilterParams<E extends Element, F extends Filters<E>> = keyof F extends never ? never : {
[P in keyof F]?:
F[P] extends () => Interaction<infer TArg> & FilterObject<infer TArg, Element> ? MaybeMatcher<TArg> :
F[P] extends Interaction<infer TArg> & FilterObject<infer TArg, Element> ? MaybeMatcher<TArg> :
F[P] extends FilterFn<infer TArg, E> ? MaybeMatcher<TArg> :
F[P] extends FilterObject<infer TArg, E> ? MaybeMatcher<TArg> :
never;
Expand Down
2 changes: 1 addition & 1 deletion packages/html/test/filter-delegate.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const Datepicker = HTML.extend<HTMLDivElement>("datepicker")
.selector("div.datepicker")
.locator(element => element.querySelector("label")?.textContent || "")
.filters({
open: Calendar().exists(),
open: Calendar().exists,
month: Calendar().find(Header()).text(),
})
.actions({
Expand Down

0 comments on commit 68f7af2

Please sign in to comment.