vue-global-events
Version:
Register global events using vue template shortcuts
63 lines (59 loc) • 2.11 kB
TypeScript
import * as vue from 'vue';
import { PropType, VNodeProps } from 'vue';
interface GlobalEventsProps {
target?: Extract<keyof Window, string>;
filter?: EventFilter;
}
interface EventFilter<E extends Event = Event> {
(event: E, listener: EventListener, name: string): unknown;
}
declare const GlobalEventsImpl: vue.DefineComponent<{
target: {
type: StringConstructor;
default: string;
};
filter: {
type: PropType<EventFilter<Event> | EventFilter<Event>[]>;
default: () => () => true;
};
stop: BooleanConstructor;
prevent: BooleanConstructor;
}, () => null, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
target: {
type: StringConstructor;
default: string;
};
filter: {
type: PropType<EventFilter<Event> | EventFilter<Event>[]>;
default: () => () => true;
};
stop: BooleanConstructor;
prevent: BooleanConstructor;
}>>, {
stop: boolean;
filter: EventFilter<Event> | EventFilter<Event>[];
target: string;
prevent: boolean;
}, {}>;
/**
* Component of vue-lib.
*/
declare const GlobalEvents: new () => {
$props: VNodeProps & GlobalEventsProps;
};
/**
* Creates a filter than can be passed to `<GlobalEvents />` to exclude events from elements with the given tag names.
*
* @param tagNames - array of tag names to exclude
*/
declare function excludeElements(tagNames: Array<Uppercase<_HTMLElementNames>>): (event: Event) => boolean;
/**
* Creates a filter than can be passed to `<GlobalEvents />` to include events from elements with the given tag names.
*
* @see excludeElements
*
* @param tagNames - array of tag names to include
*/
declare function includeElements(tagNames: Array<Uppercase<_HTMLElementNames>>): (event: Event) => boolean;
type _HTMLElementNames = keyof HTMLElementTagNameMap;
export { EventFilter, GlobalEvents, GlobalEventsImpl, GlobalEventsProps, _HTMLElementNames, excludeElements, includeElements };