Skip to content

Instantly share code, notes, and snippets.

@pixelmattersdev
Last active November 4, 2022 10:12
Show Gist options
  • Select an option

  • Save pixelmattersdev/92255daae4161d1022d30c9f3a1b2d6c to your computer and use it in GitHub Desktop.

Select an option

Save pixelmattersdev/92255daae4161d1022d30c9f3a1b2d6c to your computer and use it in GitHub Desktop.

Revisions

  1. pixelmattersdev renamed this gist Nov 4, 2022. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. pixelmattersdev revised this gist Nov 4, 2022. 30 changed files with 0 additions and 0 deletions.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
  3. pixelmattersdev revised this gist Nov 3, 2022. 40 changed files with 0 additions and 0 deletions.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
    File renamed without changes.
  4. pixelmattersdev revised this gist Nov 3, 2022. 2 changed files with 2 additions and 2 deletions.
    2 changes: 1 addition & 1 deletion vue2-vmchildren.vue
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    <template>
    <GreetingComponent>Hello World</GreetingComponent>
    <CustomComponent>Hello World</CustomComponent>
    </template>

    <script lang="ts">
    2 changes: 1 addition & 1 deletion vue3-vmchildren.vue
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    <template>
    <GreetingComponent ref="greeting">Hello World</GreetingComponent>
    <CustomComponent ref="greeting">Hello World</CustomComponent>
    </template>

    <script lang="ts">
  5. pixelmattersdev revised this gist Nov 3, 2022. 10 changed files with 18 additions and 18 deletions.
    4 changes: 2 additions & 2 deletions vue2-augmenting-global-properties.ts
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    declare module 'vue/types/vue' {
    export interface Vue {
    $http: typeof axios
    }
    $http: typeof axios
    }
    }
    2 changes: 1 addition & 1 deletion vue2-filters.vue
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,3 @@
    <template>
    <p>{{ user.lastName | uppercase }}</p>
    <p>{{ user.lastName | uppercase }}</p>
    </template>
    4 changes: 2 additions & 2 deletions vue2-fix-typescript-support.ts
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    declare module '*.vue' {
    import Vue from 'vue'
    export default Vue
    import Vue from 'vue'
    export default Vue
    }
    4 changes: 2 additions & 2 deletions vue2-functional-attributes.vue
    Original file line number Diff line number Diff line change
    @@ -5,10 +5,10 @@
    <script>
    export default {
    props: {
    title: {
    title: {
    type: String,
    required: true,
    },
    }
    }
    }
    </script>
    6 changes: 3 additions & 3 deletions vue3-augmenting-global-properties.ts
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    declare module '@vue/runtime-core' {
    interface ComponentCustomProperties {
    $http: typeof axios
    }
    interface ComponentCustomProperties {
    $http: typeof axios
    }
    }
    2 changes: 1 addition & 1 deletion vue3-filters.vue
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    <template>
    <p>{{ uppercasedLastName }}</p>
    <p>{{ uppercasedLastName }}</p>
    <template>

    <script lang="ts">
    6 changes: 3 additions & 3 deletions vue3-fix-typescript-support.ts
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    declare module '*.vue' {
    import { defineComponent } from 'vue'
    const component: ReturnType<typeof defineComponent>
    export default component
    import { defineComponent } from 'vue'
    const component: ReturnType<typeof defineComponent>
    export default component
    }
    4 changes: 2 additions & 2 deletions vue3-functional-attributes.vue
    Original file line number Diff line number Diff line change
    @@ -5,10 +5,10 @@
    <script>
    export default {
    props: {
    title: {
    title: {
    type: String,
    required: true,
    },
    }
    }
    }
    </script>
    2 changes: 1 addition & 1 deletion vue3-vmchildren.vue
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,7 @@
    <script lang="ts">
    export default {
    mounted() {
    console.log(this.$refs.greeting)
    console.log(this.$refs.greeting)
    },
    }
    </script>
    2 changes: 1 addition & 1 deletion webpack.config.js
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@

    module.exports = {

    // ...
    // ...

    resolve: {
    alias: {
  6. pixelmattersdev revised this gist Nov 3, 2022. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion webpack.config.js
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ module.exports = {
    options: {
    compilerOptions: {
    compatConfig: {
    // Default everything to Vue 2 behavior
    // Default everything to Vue 2 behavior
    MODE: 2
    }
    }
  7. pixelmattersdev revised this gist Nov 3, 2022. No changes.
  8. pixelmattersdev revised this gist Nov 3, 2022. No changes.
  9. pixelmattersdev revised this gist Nov 3, 2022. 2 changed files with 1 addition and 1 deletion.
    File renamed without changes.
    2 changes: 1 addition & 1 deletion vue2-augmenting-global-properties.ts
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    declare module 'vue/types/vue' {
    export interface Vue {
    export interface Vue {
    $http: typeof axios
    }
    }
  10. pixelmattersdev created this gist Nov 3, 2022.
    17 changes: 17 additions & 0 deletions package.json
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    // package.json

    {

    // ...

    "dependencies": {
    "vue": "^3.2.0", // UPDATE
    "@vue/compat": "^3.2.0" // ADD
    // ...
    },
    "devDependencies": {
    "@vue/compiler-sfc": "^3.2.0" // ADD
    "vue-template-compiler": "^2.6.0" // REMOVE
    // ...
    }
    }
    5 changes: 5 additions & 0 deletions vue2-$nextTick-deprecated.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    <script lang="ts">
    this.$nextTick(() => {
    // something DOM-related
    })
    </script>
    1 change: 1 addition & 0 deletions vue2-adding-global-instances.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    Vue.prototype.$title = 'Some title'
    7 changes: 7 additions & 0 deletions vue2-app-initialization.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    import Vue from 'vue';
    import App from 'views/app/app.vue'

    new Vue({
    router,
    render: h => h(App)
    }).$mount('#app');
    4 changes: 4 additions & 0 deletions vue2-async-components.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,4 @@
    const MyComponent = {
    component: () => import('./MyComponent.vue'),
    // ...
    }
    5 changes: 5 additions & 0 deletions vue2-augmenting-global-properties.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    declare module 'vue/types/vue' {
    export interface Vue {
    $http: typeof axios
    }
    }
    3 changes: 3 additions & 0 deletions vue2-custom-directives.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    bind(el, binding, vnode) {
    const vm = vnode.context
    }
    7 changes: 7 additions & 0 deletions vue2-extend-and-util.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    <script lang="ts">
    import Vue from 'vue'
    export default Vue.extend({
    //
    })
    </script>
    3 changes: 3 additions & 0 deletions vue2-filters.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <p>{{ user.lastName | uppercase }}</p>
    </template>
    4 changes: 4 additions & 0 deletions vue2-fix-typescript-support.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,4 @@
    declare module '*.vue' {
    import Vue from 'vue'
    export default Vue
    }
    14 changes: 14 additions & 0 deletions vue2-functional-attributes.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,14 @@
    <template functional>
    <h1>{{ title }}</h1>
    </template>

    <script>
    export default {
    props: {
    title: {
    type: String,
    required: true,
    },
    }
    }
    </script>
    5 changes: 5 additions & 0 deletions vue2-global-api.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    import somePlugin from 'plugins/some-plugin'
    import someDirective from 'directives/some-directive'

    Vue.use(somePlugin);
    Vue.directive('some-directive', someDirective)
    3 changes: 3 additions & 0 deletions vue2-is.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <button is="someComponent" />
    </template>
    3 changes: 3 additions & 0 deletions vue2-lifecycle-events.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <MyComponent @hook:mounted="foo">
    </template>
    11 changes: 11 additions & 0 deletions vue2-lifecycle-hooks.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    <script lang="ts">
    export default {
    beforeDestroy() {
    console.log('Before component unmounts!')
    },
    destroyed() {
    console.log('Component unmounted!')
    },
    }
    </script>
    7 changes: 7 additions & 0 deletions vue2-named-and-scoped-slots.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    <template>
    <CustomDialog>
    <template slot="heading" slot-scope="slotProps">
    <h1>Items ({{ slotProps.items.length }})</h1>
    </template>
    </CustomDialog>
    </template>
    3 changes: 3 additions & 0 deletions vue2-native.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <SpecialButton v-on:click.native="foo" />
    </template>
    7 changes: 7 additions & 0 deletions vue2-reactive-property-setters.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    // set
    Vue.set(state.moduleName, 'keyName', 'value')
    vm.$set(state.moduleName, 'keyName', 'value')

    // delete
    Vue.delete(state.moduleName, 'keyName', 'value')
    vm.$delete(state.moduleName, 'keyName', 'value')
    3 changes: 3 additions & 0 deletions vue2-removing-attributes.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <p :alt="false">Hello</p>
    </template>
    8 changes: 8 additions & 0 deletions vue2-router-link-prop-tag.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    <template>
    <router-link
    :tag="info.id ? 'a' : 'div'"
    :to="info.id ? { name: 'article', params: { id: info.id } } : {}"
    >
    {{ info.title }}
    </router-link>
    <template>
    3 changes: 3 additions & 0 deletions vue2-syncing-a-prop.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <ChildComponent v-model="active" :title.sync="pageTitle" />
    </template>
    11 changes: 11 additions & 0 deletions vue2-transition-classes.scss
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    <style lang="scss">
    .v-enter,
    .v-leave-to {
    opacity: 0;
    }

    .v-leave,
    .v-enter-to {
    opacity: 1;
    }
    </style>
    5 changes: 5 additions & 0 deletions vue2-vfor-keys-in-template.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    <template>
    <template v-for="item in list">
    <div :key="item.id">{{ item.title }}</div>
    </template>
    </template>
    8 changes: 8 additions & 0 deletions vue2-vif-branched-keys.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    <template>
    <ul>
    <li v-for="item in list">
    <p v-if="item.amount < 10" :key="item.id">{{ item.title }}</p>
    <p v-else class="high" :key="item.id">{{ item.title }}</p>
    </li>
    </ul>
    </template>
    9 changes: 9 additions & 0 deletions vue2-vif-combined-with-vfor.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    <template>
    <div
    v-if="list"
    v-for="item in list"
    :key="item.id"
    :title="item.title">
    {{ item.title }}
    </div>
    </template>
    11 changes: 11 additions & 0 deletions vue2-vmchildren.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    <template>
    <GreetingComponent>Hello World</GreetingComponent>
    </template>

    <script lang="ts">
    export default {
    mounted() {
    console.log(this.$children[0])
    },
    }
    </script>
    7 changes: 7 additions & 0 deletions vue2-vmlisteners.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    <script lang="ts">
    export default {
    mounted() {
    console.log(this.$listeners)
    }
    }
    </script>
    9 changes: 9 additions & 0 deletions vue2-vmodel-event.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    <script lang="ts">
    export default {
    methods: {
    updateTitle() {
    this.$emit('input')
    }
    }
    }
    </script>
    3 changes: 3 additions & 0 deletions vue2-vmodel-prop.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <CustomComponent v-model="title" />
    </template>
    1 change: 1 addition & 0 deletions vue2-vmon-vmoff-vmonce.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    this.$on('clickAway', this.hidePopover)
    5 changes: 5 additions & 0 deletions vue2-vuerouter.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    import Router from 'vue-router'

    const router = new Router({
    // ...
    })
    1 change: 1 addition & 0 deletions vue2-vuex.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    export default new Vuex.Store<IRootState>(storeOptions)
    7 changes: 7 additions & 0 deletions vue3-$nextTick-deprecated.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    <script lang="ts">
    import { nextTick } from 'vue'
    nextTick(() => {
    // something DOM-related
    })
    </script>
    1 change: 1 addition & 0 deletions vue3-adding-global-instances.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    app.config.globalProperties.$title = 'Some title'
    5 changes: 5 additions & 0 deletions vue3-app-initialization.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    import { createApp } from 'vue';
    import App from 'views/app/app.vue'

    const app = createApp(App);
    app.mount('#app');
    6 changes: 6 additions & 0 deletions vue3-async-components.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,6 @@
    import { defineAsyncComponent } from 'vue'

    const MyComponent = defineAsyncComponent({
    loader: () => import('./MyComponent.vue'),
    // ...
    })
    5 changes: 5 additions & 0 deletions vue3-augmenting-global-properties.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    declare module '@vue/runtime-core' {
    interface ComponentCustomProperties {
    $http: typeof axios
    }
    }
    3 changes: 3 additions & 0 deletions vue3-custom-directives.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    mounted(el, binding, vnode) {
    const vm = binding.instance
    }
    9 changes: 9 additions & 0 deletions vue3-directives-final-api.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    const MyDirective = {
    created(el, binding, vnode, prevVnode) {},
    beforeMount() {},
    mounted() {},
    beforeUpdate() {},
    updated() {},
    beforeUnmount() {},
    unmounted() {}
    }
    11 changes: 11 additions & 0 deletions vue3-events-must-be-declared.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    <script lang="ts">
    export default {
    emits: ['click'],
    methods: {
    onTitleClick(title) {
    this.$emit('click', title)
    }
    }
    }
    </script>
    7 changes: 7 additions & 0 deletions vue3-extend-and-util.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    <script lang="ts">
    import { defineComponent } from 'vue'

    export default defineComponent({
    //
    })
    </script>
    21 changes: 21 additions & 0 deletions vue3-filters.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,21 @@
    <template>
    <p>{{ uppercasedLastName }}</p>
    <template>

    <script lang="ts">
    export default {
    computed: {
    uppercasedLastName(): string {
    return this.user.lastName.toUpperCase()
    }
    },
    // or alternatively
    // {{ uppercaseText(user.lastName) }}
    methods: {
    uppercaseText(text: string) {
    return text.toUpperCase()
    }
    }
    }
    </script>
    5 changes: 5 additions & 0 deletions vue3-fix-typescript-support.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    declare module '*.vue' {
    import { defineComponent } from 'vue'
    const component: ReturnType<typeof defineComponent>
    export default component
    }
    14 changes: 14 additions & 0 deletions vue3-functional-attributes.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,14 @@
    <template>
    <h1>{{ title }}</h1>
    </template>

    <script>
    export default {
    props: {
    title: {
    type: String,
    required: true,
    },
    }
    }
    </script>
    5 changes: 5 additions & 0 deletions vue3-global-api.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    import somePlugin from 'plugins/some-plugin'
    import someDirective from 'directives/some-directive'

    app.use(somePlugin);
    app.directive('some-directive', someDirective)
    3 changes: 3 additions & 0 deletions vue3-is.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <component is="someComponent" />
    </template>
    3 changes: 3 additions & 0 deletions vue3-lifecycle-events.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <MyComponent @vnode-mounted="foo">
    </template>
    11 changes: 11 additions & 0 deletions vue3-lifecycle-hooks.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    <script lang="ts">
    export default {
    beforeUnmount() {
    console.log('Before component unmounts!')
    },
    unmounted() {
    console.log('Component unmounted!')
    },
    }
    </script>
    7 changes: 7 additions & 0 deletions vue3-named-and-scoped-slots.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    <template>
    <CustomDialog>
    <template #heading="slotProps">
    <h1>Items ({{ slotProps.items.length }})</h1>
    </template>
    </CustomDialog>
    </template>
    3 changes: 3 additions & 0 deletions vue3-native.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <SpecialButton v-on:click="foo" />
    </template>
    7 changes: 7 additions & 0 deletions vue3-new-history-option.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    import { createRouter, createWebHistory } from 'vue-router'
    // there is also createWebHashHistory and createMemoryHistory

    createRouter({
    history: createWebHistory(),
    routes: [],
    })
    5 changes: 5 additions & 0 deletions vue3-reactive-property-setters.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    // set
    Object.assign(state.moduleName, { keyName: 'value' })

    // delete
    delete state.moduleName.keyName
    3 changes: 3 additions & 0 deletions vue3-removing-attributes.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <p :alt="null">Hello</p>
    </template>
    9 changes: 9 additions & 0 deletions vue3-router-link-prop-tag.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    <template>
    <router-link
    v-if="info.id"
    :to="{ name: 'article', params: { id: info.id } }"
    >
    {{ info.title }}
    </router-link>
    <div v-else>{{ info.title }}</div>
    </template>
    3 changes: 3 additions & 0 deletions vue3-syncing-a-prop.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <ChildComponent v-model="active" v-model:title="pageTitle" />
    </template>
    11 changes: 11 additions & 0 deletions vue3-transition-classes.scss
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    <style lang="scss">
    .v-enter-from,
    .v-leave-to {
    opacity: 0;
    }

    .v-leave-from,
    .v-enter-to {
    opacity: 1;
    }
    </style>
    15 changes: 15 additions & 0 deletions vue3-typescript-support.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    // vuex-shim.d.ts

    import { ComponentCustomProperties } from 'vue'
    import { Store } from 'vuex'

    // Your own store state
    interface IMyState {
    count: number
    }

    declare module '@vue/runtime-core' {
    interface ComponentCustomProperties {
    $store: Store<IMyState>
    }
    }
    5 changes: 5 additions & 0 deletions vue3-vfor-keys-in-template.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    <template>
    <template v-for="item in list" :key="item.id">
    <div>{{ item.title }}</div>
    </template>
    </template>
    8 changes: 8 additions & 0 deletions vue3-vif-branched-keys.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    <template>
    <ul>
    <li v-for="item in list">
    <p v-if="item.amount < 10">{{ item.title }}</p>
    <p v-else class="high">{{ item.title }}</p>
    </li>
    </ul>
    </template>
    10 changes: 10 additions & 0 deletions vue3-vif-combined-with-vfor.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,10 @@
    <template>
    <template v-if="list">
    <div
    v-for="item in list"
    :key="item.id"
    :title="item.title">
    {{ item.title }}
    </div>
    </template>
    </template>
    11 changes: 11 additions & 0 deletions vue3-vmchildren.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,11 @@
    <template>
    <GreetingComponent ref="greeting">Hello World</GreetingComponent>
    </template>

    <script lang="ts">
    export default {
    mounted() {
    console.log(this.$refs.greeting)
    },
    }
    </script>
    8 changes: 8 additions & 0 deletions vue3-vmlisteners.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    <script lang="ts">
    export default {
    mounted() {
    console.log(this.$attrs.onClick)
    console.log(this.$attrs.onMouseenter)
    }
    }
    </script>
    13 changes: 13 additions & 0 deletions vue3-vmodel-event.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    <script lang="ts">
    export default {

    // Don't forget to list the event in the 'emits' option
    emits: ['update:modelValue'],

    methods: {
    updateTitle() {
    this.$emit('update:modelValue')
    }
    }
    }
    </script>
    15 changes: 15 additions & 0 deletions vue3-vmodel-prop-alternative.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    <script lang="ts">
    export default {
    props: {
    modelValue: String // previously was `value: String`
    },

    emits: ['update:modelValue'],

    methods: {
    changeTitle(title) {
    this.$emit('update:modelValue', title)
    }
    }
    }
    </script>
    3 changes: 3 additions & 0 deletions vue3-vmodel-prop.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    <template>
    <CustomComponent v-model:value="title" />
    </template>
    5 changes: 5 additions & 0 deletions vue3-vmon-vmoff-vmonce-mitt.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    // e.g. in app.ts
    import mitt from 'mitt'

    const emitter = mitt()
    app.config.globalProperties.$emitter = emitter
    1 change: 1 addition & 0 deletions vue3-vmon-vmoff-vmonce.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    this.$emitter.on('clickAway', this.hidePopover)
    5 changes: 5 additions & 0 deletions vue3-vuerouter.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    import { createRouter } from 'vue-router'

    const router = createRouter({
    // ...
    })
    1 change: 1 addition & 0 deletions vue3-vuex.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    export default createStore(storeOptions)
    12 changes: 12 additions & 0 deletions vue3-watching-arrays.vue
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,12 @@
    <script lang="ts">
    export default {
    watch: {
    someList: {
    deep: true,
    handler(val, oldVal) {
    console.log('list was updated')
    },
    },
    }
    }
    </script>
    28 changes: 28 additions & 0 deletions webpack.config.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    // webpack.config.js

    module.exports = {

    // ...

    resolve: {
    alias: {
    vue: '@vue/compat'
    }
    },
    module: {
    rules: [
    {
    test: /\.vue$/,
    loader: 'vue-loader',
    options: {
    compilerOptions: {
    compatConfig: {
    // Default everything to Vue 2 behavior
    MODE: 2
    }
    }
    }
    }
    ]
    }
    }