1import i18n from '@/i18n';
2import StatusIcon from '../Global/StatusIcon';
3const BVToastMixin = {
4  components: {
5    StatusIcon
6  },
7  methods: {
8    toastTitle(title, status) {
9      // Create title with icon
10      const titleWithIcon = this.$createElement(
11        'strong',
12        { class: 'toast-icon' },
13        [
14          this.$createElement('StatusIcon', { props: { status: status } }),
15          title
16        ]
17      );
18      return titleWithIcon;
19    },
20    successToast(message, title = i18n.t('global.status.success')) {
21      this.$root.$bvToast.toast(message, {
22        title: this.toastTitle(title, 'success'),
23        variant: 'success',
24        autoHideDelay: 10000, //auto hide in milliseconds
25        isStatus: true,
26        solid: true
27      });
28    },
29    errorToast(message, title = i18n.t('global.status.error')) {
30      this.$root.$bvToast.toast(message, {
31        title: this.toastTitle(title, 'danger'),
32        variant: 'danger',
33        noAutoHide: true,
34        isStatus: true,
35        solid: true
36      });
37    },
38    warningToast(message, title = i18n.t('global.status.warning')) {
39      this.$root.$bvToast.toast(message, {
40        title: this.toastTitle(title, 'warning'),
41        variant: 'warning',
42        noAutoHide: true,
43        isStatus: true,
44        solid: true
45      });
46    },
47    infoToast(message, title = i18n.t('global.status.informational')) {
48      this.$root.$bvToast.toast(message, {
49        title: this.toastTitle(title, 'info'),
50        variant: 'info',
51        noAutoHide: true,
52        isStatus: true,
53        solid: true
54      });
55    }
56  }
57};
58
59export default BVToastMixin;
60