ajax-button.component.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /**
  2. * <ajax-button>
  3. * -----------------------------------------------------------------------------
  4. * A button with a built-in loading spinner.
  5. *
  6. * @type {Component}
  7. * -----------------------------------------------------------------------------
  8. */
  9. parasails.registerComponent('ajaxButton', {
  10. // ╔═╗╦═╗╔═╗╔═╗╔═╗
  11. // ╠═╝╠╦╝║ ║╠═╝╚═╗
  12. // ╩ ╩╚═╚═╝╩ ╚═╝
  13. props: [
  14. 'syncing'
  15. ],
  16. // ╦╔╗╔╦╔╦╗╦╔═╗╦ ╔═╗╔╦╗╔═╗╔╦╗╔═╗
  17. // ║║║║║ ║ ║╠═╣║ ╚═╗ ║ ╠═╣ ║ ║╣
  18. // ╩╝╚╝╩ ╩ ╩╩ ╩╩═╝ ╚═╝ ╩ ╩ ╩ ╩ ╚═╝
  19. data: function (){
  20. return {
  21. };
  22. },
  23. // ╦ ╦╔╦╗╔╦╗╦
  24. // ╠═╣ ║ ║║║║
  25. // ╩ ╩ ╩ ╩ ╩╩═╝
  26. template: `
  27. <button type="submit" class="btn ajax-button" :class="[syncing ? 'syncing' : '']">
  28. <span class="button-text" v-if="!syncing"><slot name="default">Submit</slot></span>
  29. <span class="button-loader clearfix" v-if="syncing">
  30. <slot name="syncing-state">
  31. <div class="loading-dot dot1"></div>
  32. <div class="loading-dot dot2"></div>
  33. <div class="loading-dot dot3"></div>
  34. <div class="loading-dot dot4"></div>
  35. </slot>
  36. </span>
  37. </button>
  38. `,
  39. // ╦ ╦╔═╗╔═╗╔═╗╦ ╦╔═╗╦ ╔═╗
  40. // ║ ║╠╣ ║╣ ║ ╚╦╝║ ║ ║╣
  41. // ╩═╝╩╚ ╚═╝╚═╝ ╩ ╚═╝╩═╝╚═╝
  42. beforeMount: function() {
  43. },
  44. mounted: function (){
  45. },
  46. beforeDestroy: function() {
  47. },
  48. // ╦╔╗╔╔╦╗╔═╗╦═╗╔═╗╔═╗╔╦╗╦╔═╗╔╗╔╔═╗
  49. // ║║║║ ║ ║╣ ╠╦╝╠═╣║ ║ ║║ ║║║║╚═╗
  50. // ╩╝╚╝ ╩ ╚═╝╩╚═╩ ╩╚═╝ ╩ ╩╚═╝╝╚╝╚═╝
  51. methods: {
  52. }
  53. });