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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
import StatusIcon from '../Global/StatusIcon';
const BVToastMixin = {
components: {
StatusIcon,
},
methods: {
$_BVToastMixin_createTitle(title, status) {
const statusIcon = this.$createElement('StatusIcon', {
props: { status },
});
const titleWithIcon = this.$createElement(
'strong',
{ class: 'toast-icon' },
[statusIcon, title],
);
return titleWithIcon;
},
$_BVToastMixin_createBody(messageBody) {
if (Array.isArray(messageBody)) {
return messageBody.map((message) =>
this.$createElement('p', { class: 'mb-0' }, message),
);
} else {
return [this.$createElement('p', { class: 'mb-0' }, messageBody)];
}
},
$_BVToastMixin_createTimestamp() {
const timestamp = this.$options.filters.formatTime(new Date());
return this.$createElement('p', { class: 'mt-3 mb-0' }, timestamp);
},
$_BVToastMixin_createRefreshAction() {
return this.$createElement(
'BLink',
{
class: 'd-inline-block mt-3',
on: {
click: () => {
this.$root.$emit('refresh-application');
},
},
},
this.$t('global.action.refresh'),
);
},
$_BVToastMixin_initToast(body, title, variant) {
this.$root.$bvToast.toast(body, {
title,
variant,
autoHideDelay: 10000, //auto hide in milliseconds
noAutoHide: variant !== 'success',
isStatus: true,
solid: true,
});
},
successToast(
message,
{
title: t = this.$t('global.status.success'),
timestamp,
refreshAction,
} = {},
) {
const body = this.$_BVToastMixin_createBody(message);
const title = this.$_BVToastMixin_createTitle(t, 'success');
if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction());
if (timestamp) body.push(this.$_BVToastMixin_createTimestamp());
this.$_BVToastMixin_initToast(body, title, 'success');
},
errorToast(
message,
{
title: t = this.$t('global.status.error'),
timestamp,
refreshAction,
} = {},
) {
const body = this.$_BVToastMixin_createBody(message);
const title = this.$_BVToastMixin_createTitle(t, 'danger');
if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction());
if (timestamp) body.push(this.$_BVToastMixin_createTimestamp());
this.$_BVToastMixin_initToast(body, title, 'danger');
},
warningToast(
message,
{
title: t = this.$t('global.status.warning'),
timestamp,
refreshAction,
} = {},
) {
const body = this.$_BVToastMixin_createBody(message);
const title = this.$_BVToastMixin_createTitle(t, 'warning');
if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction());
if (timestamp) body.push(this.$_BVToastMixin_createTimestamp());
this.$_BVToastMixin_initToast(body, title, 'warning');
},
infoToast(
message,
{
title: t = this.$t('global.status.informational'),
timestamp,
refreshAction,
} = {},
) {
const body = this.$_BVToastMixin_createBody(message);
const title = this.$_BVToastMixin_createTitle(t, 'info');
if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction());
if (timestamp) body.push(this.$_BVToastMixin_createTimestamp());
this.$_BVToastMixin_initToast(body, title, 'info');
},
},
};
export default BVToastMixin;
|