/* * Copyright (c) 2018, salesforce.com, inc. * All rights reserved. * SPDX-License-Identifier: MIT * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT */ /** * Lightning Web Components core module */ declare module 'lwc' { // backwards compatible type used for the old days when TS didn't support `event.composed` interface ComposableEvent extends Event { composed: boolean; } class HTMLElementTheGoodPart { dispatchEvent(evt: Event): boolean; addEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions ): void; removeEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions ): void; setAttributeNS(ns: string, attrName: string, value: any): void; removeAttributeNS(ns: string, attrName: string): void; removeAttribute(attrName: string): void; setAttribute(attrName: string, value: any): void; getAttribute(attrName: string): string | null; getAttributeNS(ns: string, attrName: string): string | null; getBoundingClientRect(): ClientRect; querySelector(selectors: string): E | null; querySelectorAll(selectors: string): NodeListOf; getElementsByTagName(tagNameOrWildCard: string): HTMLCollectionOf; getElementsByClassName(names: string): HTMLCollectionOf; readonly tagName: string; readonly classList: DOMTokenList; // Default HTML Properties dir: string; id: string; accessKey: string; title: string; lang: string; hidden: boolean; draggable: boolean; tabIndex: number; // Aria Properties ariaAutoComplete: string | null; ariaChecked: string | null; ariaCurrent: string | null; ariaDisabled: string | null; ariaExpanded: string | null; ariaHasPopup: string | null; ariaHidden: string | null; ariaInvalid: string | null; ariaLabel: string | null; ariaLevel: string | null; ariaMultiLine: string | null; ariaMultiSelectable: string | null; ariaOrientation: string | null; ariaPressed: string | null; ariaReadOnly: string | null; ariaRequired: string | null; ariaSelected: string | null; ariaSort: string | null; ariaValueMax: string | null; ariaValueMin: string | null; ariaValueNow: string | null; ariaValueText: string | null; ariaLive: string | null; ariaRelevant: string | null; ariaAtomic: string | null; ariaBusy: string | null; ariaActiveDescendant: string | null; ariaControls: string | null; ariaDescribedBy: string | null; ariaFlowTo: string | null; ariaLabelledBy: string | null; ariaOwns: string | null; ariaPosInSet: string | null; ariaSetSize: string | null; ariaColCount: string | null; ariaColIndex: string | null; ariaDetails: string | null; ariaErrorMessage: string | null; ariaKeyShortcuts: string | null; ariaModal: string | null; ariaPlaceholder: string | null; ariaRoleDescription: string | null; ariaRowCount: string | null; ariaRowIndex: string | null; ariaRowSpan: string | null; ariaColSpan: string | null; role: string | null; } // @ts-ignore type-mismatch interface ShadowRootTheGoodPart extends NodeSelector { mode: string; readonly activeElement: Element | null; readonly host: HTMLElement; readonly firstChild: Node | null; readonly lastChild: Node | null; readonly innerHTML: string; readonly textContent: string; readonly childNodes: Node[]; readonly delegatesFocus: boolean; addEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions ): void; removeEventListener( type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions ): void; hasChildNodes(): boolean; compareDocumentPosition(otherNode: Node): number; contains(otherNode: Node): boolean; elementFromPoint(x: number, y: number): Element | null; querySelector( selectors: K ): HTMLElementTagNameMap[K] | null; querySelector( selectors: K ): SVGElementTagNameMap[K] | null; querySelector(selectors: string): E | null; querySelectorAll( selectors: K ): NodeListOf; querySelectorAll( selectors: K ): NodeListOf; querySelectorAll(selectors: string): NodeListOf; } /** * Base class for the Lightning Web Component JavaScript class */ export class LightningElement extends HTMLElementTheGoodPart { /** * This static getter builds a Web Component class from a LWC constructor so it can be registered * as a new element via customElements.define() at any given time. For example: * * ``` * import XComponent from 'namespace/element'; * customElements.define('x-component', XComponent.CustomElementConstructor); * const elm = document.createElement('x-component'); * ``` */ static get CustomElementConstructor(): typeof HTMLElement; /** * Called when the element is inserted in a document */ connectedCallback(): void; /** * Called when the element is removed from a document */ disconnectedCallback(): void; /** * Called after every render of the component */ renderedCallback(): void; /** * Called when a descendant component throws an error in one of its lifecycle hooks */ errorCallback(error: Error, stack: string): void; readonly template: ShadowRootTheGoodPart; readonly shadowRoot: null; } /** * Decorator to mark public reactive properties */ export const api: PropertyDecorator; /** * Decorator to mark private reactive properties */ export const track: PropertyDecorator; /** * Decorator factory to wire a property or method to a wire adapter data source * @param getType imperative accessor for the data source * @param config configuration object for the accessor */ export function wire(getType: (config?: any) => any, config?: any): PropertyDecorator; type WireConfigValue = Record; type ContextValue = Record; interface WireAdapter { update(config: WireConfigValue, context?: ContextValue): void; connect(): void; disconnect(): void; } type WireDataCallback = (value: any) => void; type WireAdapterSchemaValue = 'optional' | 'required'; interface ContextConsumer { provide(newContext: ContextValue): void; } interface ContextProviderOptions { consumerConnectedCallback: (consumer: ContextConsumer) => void; consumerDisconnectedCallback?: (consumer: ContextConsumer) => void; } interface WireAdapterConstructor { new (callback: WireDataCallback): WireAdapter; configSchema?: Record; contextSchema?: Record; } type Contextualizer = (elm: EventTarget, options: ContextProviderOptions) => void; export function createContextProvider(config: WireAdapterConstructor): Contextualizer; }