JSFiddle - React, Tailwind, and code Playground

by skirtle

HTML

<script src="https://unpkg.com/[email protected]/dist/vue.global.js"></script>
<div id="app"></div>

JavaScript

customElements.define('fires-events', class extends HTMLElement {
  constructor() {
    super();
    setInterval(() => {
      this.dispatchEvent(new CustomEvent('lower'));
      this.dispatchEvent(new CustomEvent('Upper'));
    }, 1000);
  }
});

const App = {
  template: `
		<div>
	    event 'lower' fired {{lower}} times
  	</div>
  	<div>
    	event 'Upper' fired {{upper}} times
  	</div>
  	<fires-events v-on:lower='incrementlower' v-on:Upper='incrementupper'></fires-events>  
  `,

  methods: {
    incrementlower() {
      this.lower++;
    },
    incrementupper() {
      this.upper++;
    }
  },

  data() {
    return {
      lower: 0,
      upper: 0
    }
  },
}
  
const app = Vue.createApp(App)

app.config.compilerOptions.isCustomElement = (name) => {
  return name === 'fires-events'
}

app.mount('#app')