UNPKG

bootstrap-vue

Version:

BootstrapVue, with over 40 plugins and more than 80 custom components, custom directives, and over 300 icons, provides one of the most comprehensive implementations of Bootstrap v4 components and grid system for Vue.js. With extensive and automated WAI-AR

64 lines (56 loc) 1.74 kB
import { assign, defineProperty, defineProperties, readonlyDescriptor } from './object' class BvEvent { constructor(type, eventInit = {}) { // Start by emulating native Event constructor if (!type) { /* istanbul ignore next */ throw new TypeError( `Failed to construct '${this.constructor.name}'. 1 argument required, ${ arguments.length } given.` ) } // Merge defaults first, the eventInit, and the type last // so it can't be overwritten assign(this, BvEvent.Defaults, this.constructor.Defaults, eventInit, { type }) // Freeze some props as readonly, but leave them enumerable defineProperties(this, { type: readonlyDescriptor(), cancelable: readonlyDescriptor(), nativeEvent: readonlyDescriptor(), target: readonlyDescriptor(), relatedTarget: readonlyDescriptor(), vueTarget: readonlyDescriptor(), componentId: readonlyDescriptor() }) // Create a private variable using closure scoping let defaultPrevented = false // Recreate preventDefault method. One way setter this.preventDefault = function preventDefault() { if (this.cancelable) { defaultPrevented = true } } // Create `defaultPrevented` publicly accessible prop that // can only be altered by the preventDefault method defineProperty(this, 'defaultPrevented', { enumerable: true, get() { return defaultPrevented } }) } static get Defaults() { return { type: '', cancelable: true, nativeEvent: null, target: null, relatedTarget: null, vueTarget: null, componentId: null } } } // Named Exports export { BvEvent }