Notify.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <div class="hidden"></div>
  3. </template>
  4. <script>
  5. //-----------------------------------------------------------------------------
  6. import Vue from 'vue';
  7. import Component from 'vue-class-component';
  8. export default @Component({
  9. })
  10. class Notify extends Vue {
  11. notify(opts) {
  12. let {
  13. caption = null,
  14. captionColor = 'black',
  15. color = 'positive',
  16. icon = '',
  17. iconColor = 'white',
  18. message = '',
  19. messageColor = 'black',
  20. } = opts;
  21. caption = (caption ? `<div style="font-size: 120%; color: ${captionColor}"><b>${caption}</b></div><br>` : '');
  22. return this.$q.notify({
  23. position: 'top-right',
  24. color,
  25. textColor: iconColor,
  26. icon,
  27. actions: [{icon: 'la la-times notify-button-icon', color: 'black'}],
  28. html: true,
  29. message:
  30. `<div style="max-width: 350px;">
  31. ${caption}
  32. <div style="color: ${messageColor}; overflow-wrap: break-word; word-wrap: break-word;">${message}</div>
  33. </div>`
  34. });
  35. }
  36. success(message, caption) {
  37. this.notify({color: 'positive', icon: 'la la-check-circle', message, caption});
  38. }
  39. warning(message, caption) {
  40. this.notify({color: 'warning', icon: 'la la-exclamation-circle', message, caption});
  41. }
  42. error(message, caption) {
  43. this.notify({color: 'negative', icon: 'la la-exclamation-circle', messageColor: 'yellow', captionColor: 'white', message, caption});
  44. }
  45. info(message, caption) {
  46. this.notify({color: 'info', icon: 'la la-bell', message, caption});
  47. }
  48. }
  49. //-----------------------------------------------------------------------------
  50. </script>