Commit 5e87a54 authored and committed Dec 15, 2022 Verified
1 parent 83b7f5f commit 5e87a54 Copy full SHA for 5e87a54
File tree 5 files changed +43
-0
lines changed
addon-test-support/@ember/test-helpers
5 files changed +43
-0
lines changed Original file line number Diff line number Diff line change 1
1
import getRootElement from './get-root-element' ;
2
2
import Target , { isDocument , isElement } from './-target' ;
3
3
4
+ function getElement <
5
+ K extends keyof ( HTMLElementTagNameMap | SVGElementTagNameMap )
6
+ > ( target : K ) : ( HTMLElementTagNameMap | SVGElementTagNameMap ) [ K ] | null ;
7
+ function getElement < K extends keyof HTMLElementTagNameMap > (
8
+ target : K
9
+ ) : HTMLElementTagNameMap [ K ] | null ;
10
+ function getElement < K extends keyof SVGElementTagNameMap > (
11
+ target : K
12
+ ) : SVGElementTagNameMap [ K ] | null ;
4
13
function getElement ( target : string ) : Element | null ;
5
14
function getElement ( target : Element ) : Element ;
6
15
function getElement ( target : Document ) : Document ;
Original file line number Diff line number Diff line change 1
1
import getElements from './-get-elements' ;
2
2
import { toArray } from '../ie-11-polyfills' ;
3
3
4
+ // Derived, with modification, from the types for `querySelectorAll`. These
5
+ // would simply be defined as a tweaked re-export as `querySelector` is, but it
6
+ // is non-trivial (to say the least!) to preserve overloads like this while also
7
+ // changing the return type (from `NodeListOf` to `Array`).
4
8
/**
5
9
Find all elements matched by the given selector. Similar to calling
6
10
`querySelectorAll()` on the test root element, but returns an array instead
@@ -16,6 +20,16 @@ import { toArray } from '../ie-11-polyfills';
16
20
</caption>
17
21
find('#foo');
18
22
*/
23
+ export default function findAll <
24
+ K extends keyof ( HTMLElementTagNameMap | SVGElementTagNameMap )
25
+ > ( selector : K ) : Array < ( HTMLElementTagNameMap | SVGElementTagNameMap ) [ K ] > ;
26
+ export default function findAll < K extends keyof HTMLElementTagNameMap > (
27
+ selector : K
28
+ ) : Array < HTMLElementTagNameMap [ K ] > ;
29
+ export default function findAll < K extends keyof SVGElementTagNameMap > (
30
+ selector : K
31
+ ) : Array < SVGElementTagNameMap [ K ] > ;
32
+ export default function findAll ( selector : string ) : Element [ ] ;
19
33
export default function findAll ( selector : string ) : Element [ ] {
20
34
if ( ! selector ) {
21
35
throw new Error ( 'Must pass a selector to `findAll`.' ) ;
Original file line number Diff line number Diff line change 1
1
import getElement from './-get-element' ;
2
2
3
+ // Derived from `querySelector` types.
3
4
/**
4
5
Find the first element matched by the given selector. Equivalent to calling
5
6
`querySelector()` on the test root element.
@@ -15,6 +16,16 @@ import getElement from './-get-element';
15
16
findAll('.my-selector');
16
17
17
18
*/
19
+ export default function find <
20
+ K extends keyof ( HTMLElementTagNameMap | SVGElementTagNameMap )
21
+ > ( selector : K ) : ( HTMLElementTagNameMap | SVGElementTagNameMap ) [ K ] | null ;
22
+ export default function find < K extends keyof HTMLElementTagNameMap > (
23
+ selector : K
24
+ ) : HTMLElementTagNameMap [ K ] | null ;
25
+ export default function find < K extends keyof SVGElementTagNameMap > (
26
+ selector : K
27
+ ) : SVGElementTagNameMap [ K ] | null ;
28
+ export default function find ( selector : string ) : Element | null ;
18
29
export default function find ( selector : string ) : Element | null {
19
30
if ( ! selector ) {
20
31
throw new Error ( 'Must pass a selector to `find`.' ) ;
Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ export {
29
29
default as setupRenderingContext ,
30
30
render ,
31
31
clearRender ,
32
+ RenderingTestContext ,
32
33
} from './setup-rendering-context' ;
33
34
export type { RenderingTestContext } from './setup-rendering-context' ;
34
35
export { default as rerender } from './rerender' ;
Original file line number Diff line number Diff line change @@ -136,7 +136,15 @@ expectTypeOf(typeIn).toEqualTypeOf<
136
136
137
137
// DOM Query Helpers
138
138
expectTypeOf ( find ) . toEqualTypeOf < ( selector : string ) => Element | null > ( ) ;
139
+ expectTypeOf ( find ( 'a' ) ) . toEqualTypeOf < HTMLAnchorElement | SVGAElement | null > ( ) ;
140
+ expectTypeOf ( find ( 'div' ) ) . toEqualTypeOf < HTMLDivElement | null > ( ) ;
141
+ expectTypeOf ( find ( 'circle' ) ) . toEqualTypeOf < SVGCircleElement | null > ( ) ;
142
+ expectTypeOf ( find ( '.corkscrew' ) ) . toEqualTypeOf < Element | null > ( ) ;
139
143
expectTypeOf ( findAll ) . toEqualTypeOf < ( selector : string ) => Array < Element > > ( ) ;
144
+ expectTypeOf ( findAll ( 'a' ) ) . toEqualTypeOf < ( HTMLAnchorElement | SVGAElement ) [ ] > ( ) ;
145
+ expectTypeOf ( findAll ( 'div' ) ) . toEqualTypeOf < HTMLDivElement [ ] > ( ) ;
146
+ expectTypeOf ( findAll ( 'circle' ) ) . toEqualTypeOf < SVGCircleElement [ ] > ( ) ;
147
+ expectTypeOf ( findAll ( '.corkscrew' ) ) . toEqualTypeOf < Element [ ] > ( ) ;
140
148
expectTypeOf ( getRootElement ) . toEqualTypeOf < ( ) => Element | Document > ( ) ;
141
149
142
150
// Routing Helpers
You can’t perform that action at this time.
0 commit comments