summaryrefslogtreecommitdiff
path: root/spec/frontend/helpers/keep_alive_component_helper.js
blob: 54f40bf9093a7ce11b3d47a570da1b3ff3ce245f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import Vue from 'vue';

export function keepAlive(KeptAliveComponent) {
  return Vue.extend({
    components: {
      KeptAliveComponent,
    },
    data() {
      return {
        view: 'KeptAliveComponent',
      };
    },
    methods: {
      async activate() {
        this.view = 'KeptAliveComponent';
        await this.$nextTick();
      },
      async deactivate() {
        this.view = 'div';
        await this.$nextTick();
      },
      async reactivate() {
        await this.deactivate();
        await this.activate();
      },
    },
    template: `<keep-alive><component :is="view"></component></keep-alive>`,
  });
}