xref: /openbmc/webui-vue/src/components/Mixins/BVToastMixin.js (revision de23ea23d88451a2fa2774ec72053772603c23ae)
1c2862dccSSurenNewareimport StatusIcon from '../Global/StatusIcon';
2*de23ea23SSurya Vimport i18n from '@/i18n';
3f92e2969SYoshie Muranaka
40fc91e79SYoshie Muranakaconst BVToastMixin = {
5c2862dccSSurenNeware  components: {
6602e98aaSDerick Montague    StatusIcon,
7c2862dccSSurenNeware  },
80fc91e79SYoshie Muranaka  methods: {
9f92e2969SYoshie Muranaka    $_BVToastMixin_createTitle(title, status) {
10f92e2969SYoshie Muranaka      const statusIcon = this.$createElement('StatusIcon', {
11f92e2969SYoshie Muranaka        props: { status },
12f92e2969SYoshie Muranaka      });
13c2862dccSSurenNeware      const titleWithIcon = this.$createElement(
14c2862dccSSurenNeware        'strong',
15c2862dccSSurenNeware        { class: 'toast-icon' },
168132399cSEd Tanous        [statusIcon, title],
17c2862dccSSurenNeware      );
18c2862dccSSurenNeware      return titleWithIcon;
19c2862dccSSurenNeware    },
20f92e2969SYoshie Muranaka    $_BVToastMixin_createBody(messageBody) {
21f92e2969SYoshie Muranaka      if (Array.isArray(messageBody)) {
22f92e2969SYoshie Muranaka        return messageBody.map((message) =>
238132399cSEd Tanous          this.$createElement('p', { class: 'mb-0' }, message),
24f92e2969SYoshie Muranaka        );
25f92e2969SYoshie Muranaka      } else {
26f92e2969SYoshie Muranaka        return [this.$createElement('p', { class: 'mb-0' }, messageBody)];
27f92e2969SYoshie Muranaka      }
28f92e2969SYoshie Muranaka    },
29f92e2969SYoshie Muranaka    $_BVToastMixin_createTimestamp() {
30*de23ea23SSurya V      const timestamp = this.$filters.formatTime(new Date());
31f92e2969SYoshie Muranaka      return this.$createElement('p', { class: 'mt-3 mb-0' }, timestamp);
32f92e2969SYoshie Muranaka    },
33f92e2969SYoshie Muranaka    $_BVToastMixin_createRefreshAction() {
34f92e2969SYoshie Muranaka      return this.$createElement(
35f92e2969SYoshie Muranaka        'BLink',
36f92e2969SYoshie Muranaka        {
37f92e2969SYoshie Muranaka          class: 'd-inline-block mt-3',
38f92e2969SYoshie Muranaka          on: {
39f92e2969SYoshie Muranaka            click: () => {
40f92e2969SYoshie Muranaka              this.$root.$emit('refresh-application');
41f92e2969SYoshie Muranaka            },
42f92e2969SYoshie Muranaka          },
43f92e2969SYoshie Muranaka        },
44*de23ea23SSurya V        i18n.global.t('global.action.refresh'),
45f92e2969SYoshie Muranaka      );
46f92e2969SYoshie Muranaka    },
47f92e2969SYoshie Muranaka    $_BVToastMixin_initToast(body, title, variant) {
48f92e2969SYoshie Muranaka      this.$root.$bvToast.toast(body, {
49f92e2969SYoshie Muranaka        title,
50f92e2969SYoshie Muranaka        variant,
510fc91e79SYoshie Muranaka        autoHideDelay: 10000, //auto hide in milliseconds
52f92e2969SYoshie Muranaka        noAutoHide: variant !== 'success',
530fc91e79SYoshie Muranaka        isStatus: true,
54602e98aaSDerick Montague        solid: true,
550fc91e79SYoshie Muranaka      });
560fc91e79SYoshie Muranaka    },
57f92e2969SYoshie Muranaka    successToast(
58f92e2969SYoshie Muranaka      message,
59f92e2969SYoshie Muranaka      {
60*de23ea23SSurya V        title: t = i18n.global.t('global.status.success'),
61f92e2969SYoshie Muranaka        timestamp,
62f92e2969SYoshie Muranaka        refreshAction,
638132399cSEd Tanous      } = {},
64f92e2969SYoshie Muranaka    ) {
65f92e2969SYoshie Muranaka      const body = this.$_BVToastMixin_createBody(message);
66f92e2969SYoshie Muranaka      const title = this.$_BVToastMixin_createTitle(t, 'success');
67f92e2969SYoshie Muranaka      if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction());
68f92e2969SYoshie Muranaka      if (timestamp) body.push(this.$_BVToastMixin_createTimestamp());
69f92e2969SYoshie Muranaka      this.$_BVToastMixin_initToast(body, title, 'success');
70183c2754SYoshie Muranaka    },
71f92e2969SYoshie Muranaka    errorToast(
72f92e2969SYoshie Muranaka      message,
73f92e2969SYoshie Muranaka      {
74*de23ea23SSurya V        title: t = i18n.global.t('global.status.error'),
75f92e2969SYoshie Muranaka        timestamp,
76f92e2969SYoshie Muranaka        refreshAction,
778132399cSEd Tanous      } = {},
78f92e2969SYoshie Muranaka    ) {
79f92e2969SYoshie Muranaka      const body = this.$_BVToastMixin_createBody(message);
80f92e2969SYoshie Muranaka      const title = this.$_BVToastMixin_createTitle(t, 'danger');
81f92e2969SYoshie Muranaka      if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction());
82f92e2969SYoshie Muranaka      if (timestamp) body.push(this.$_BVToastMixin_createTimestamp());
83f92e2969SYoshie Muranaka      this.$_BVToastMixin_initToast(body, title, 'danger');
844e90eed0SDerick Montague    },
85f92e2969SYoshie Muranaka    warningToast(
86f92e2969SYoshie Muranaka      message,
87f92e2969SYoshie Muranaka      {
88*de23ea23SSurya V        title: t = i18n.global.t('global.status.warning'),
89f92e2969SYoshie Muranaka        timestamp,
90f92e2969SYoshie Muranaka        refreshAction,
918132399cSEd Tanous      } = {},
92f92e2969SYoshie Muranaka    ) {
93f92e2969SYoshie Muranaka      const body = this.$_BVToastMixin_createBody(message);
94f92e2969SYoshie Muranaka      const title = this.$_BVToastMixin_createTitle(t, 'warning');
95f92e2969SYoshie Muranaka      if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction());
96f92e2969SYoshie Muranaka      if (timestamp) body.push(this.$_BVToastMixin_createTimestamp());
97f92e2969SYoshie Muranaka      this.$_BVToastMixin_initToast(body, title, 'warning');
98f92e2969SYoshie Muranaka    },
99f92e2969SYoshie Muranaka    infoToast(
100f92e2969SYoshie Muranaka      message,
101f92e2969SYoshie Muranaka      {
102*de23ea23SSurya V        title: t = i18n.global.t('global.status.informational'),
103f92e2969SYoshie Muranaka        timestamp,
104f92e2969SYoshie Muranaka        refreshAction,
1058132399cSEd Tanous      } = {},
106f92e2969SYoshie Muranaka    ) {
107f92e2969SYoshie Muranaka      const body = this.$_BVToastMixin_createBody(message);
108f92e2969SYoshie Muranaka      const title = this.$_BVToastMixin_createTitle(t, 'info');
109f92e2969SYoshie Muranaka      if (refreshAction) body.push(this.$_BVToastMixin_createRefreshAction());
110f92e2969SYoshie Muranaka      if (timestamp) body.push(this.$_BVToastMixin_createTimestamp());
111f92e2969SYoshie Muranaka      this.$_BVToastMixin_initToast(body, title, 'info');
112602e98aaSDerick Montague    },
113602e98aaSDerick Montague  },
1140fc91e79SYoshie Muranaka};
1150fc91e79SYoshie Muranaka
1160fc91e79SYoshie Muranakaexport default BVToastMixin;
117