11import Autocomplete from './autocomplete.js'
2- import AutocompleteEvent from './auto-complete-event.js'
2+ const HTMLElement = globalThis . HTMLElement || ( null as unknown as ( typeof window ) [ 'HTMLElement' ] )
3+
4+ type AutoCompleteEventInit = EventInit & {
5+ relatedTarget : HTMLInputElement
6+ }
7+
8+ export class AutoCompleteEvent extends Event {
9+ relatedTarget : HTMLInputElement
10+
11+ constructor ( type : 'auto-complete-change' , { relatedTarget, ...init } : AutoCompleteEventInit ) {
12+ super ( type , init )
13+ this . relatedTarget = relatedTarget
14+ }
15+ }
316
417const state = new WeakMap ( )
518
@@ -16,8 +29,12 @@ interface CSPTrustedHTMLToStringable {
1629
1730let cspTrustedTypesPolicyPromise : Promise < CSPTrustedTypesPolicy > | null = null
1831
19- // eslint-disable-next-line custom-elements/file-name-matches-element
20- export default class AutocompleteElement extends HTMLElement {
32+ export class AutoCompleteElement extends HTMLElement {
33+ static define ( tag = 'auto-complete' , registry = customElements ) {
34+ registry . define ( tag , this )
35+ return this
36+ }
37+
2138 static setCSPTrustedTypesPolicy ( policy : CSPTrustedTypesPolicy | Promise < CSPTrustedTypesPolicy > | null ) : void {
2239 cspTrustedTypesPolicyPromise = policy === null ? policy : Promise . resolve ( policy )
2340 }
@@ -155,7 +172,7 @@ export default class AutocompleteElement extends HTMLElement {
155172 autocomplete . input . value = newValue
156173 }
157174 this . dispatchEvent (
158- new AutocompleteEvent ( 'auto-complete-change' , {
175+ new AutoCompleteEvent ( 'auto-complete-change' , {
159176 bubbles : true ,
160177 relatedTarget : autocomplete . input ,
161178 } ) ,
@@ -165,17 +182,4 @@ export default class AutocompleteElement extends HTMLElement {
165182 }
166183}
167184
168- declare global {
169- interface Window {
170- AutocompleteElement : typeof AutocompleteElement
171- }
172- interface HTMLElementTagNameMap {
173- 'auto-complete' : AutocompleteElement
174- }
175- }
176-
177- if ( ! window . customElements . get ( 'auto-complete' ) ) {
178- window . AutocompleteElement = AutocompleteElement
179- // eslint-disable-next-line custom-elements/tag-name-matches-class
180- window . customElements . define ( 'auto-complete' , AutocompleteElement )
181- }
185+ export default AutoCompleteElement
0 commit comments