ButtonBackCloseCancel.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <script setup>
  2. import { useColorMode } from '@vueuse/core'
  3. const router = useRouter()
  4. const route = useRoute()
  5. const mode = useColorMode()
  6. const props = defineProps({
  7. returnTo: {
  8. type: Object,
  9. default: { name: 'accounts' }
  10. },
  11. action: {
  12. type: String,
  13. default: 'close'
  14. },
  15. useLinkTag: {
  16. type: Boolean,
  17. default: true
  18. },
  19. isText: {
  20. type: Boolean,
  21. default: false
  22. },
  23. isCapture: {
  24. type: Boolean,
  25. default: false
  26. },
  27. isRounded: {
  28. type: Boolean,
  29. default: true
  30. },
  31. })
  32. const classes = 'button'
  33. + (mode.value === 'dark' && ! props.isText && ! props.isCapture ? ' is-dark' : '')
  34. + (props.isText ? ' is-text' : '')
  35. + (props.isCapture ? ' is-large is-warning' : '')
  36. + (props.isRounded ? ' is-rounded' : '')
  37. </script>
  38. <template>
  39. <!-- back / close / cancel button -->
  40. <p v-if="useLinkTag" class="control">
  41. <RouterLink
  42. v-if="action == 'close'"
  43. id="btnClose"
  44. :to="returnTo"
  45. :class="classes"
  46. tabindex="0"
  47. role="button"
  48. :aria-label="$t('commons.close_the_x_page', { pagetitle: $route.meta.title })"
  49. >
  50. {{ $t('commons.close') }}
  51. </RouterLink>
  52. <RouterLink
  53. v-else-if="action == 'back'"
  54. id="lnkBack"
  55. :to="returnTo"
  56. :class="classes"
  57. :aria-label="$t('commons.close_the_x_page', { pagetitle: $route.meta.title })"
  58. >
  59. {{ $t('commons.back') }}
  60. </RouterLink>
  61. <RouterLink
  62. v-else-if="action == 'cancel'"
  63. id="btnCancel"
  64. :to="returnTo"
  65. :class="classes"
  66. >
  67. {{ $t('commons.cancel') }}
  68. </RouterLink>
  69. </p>
  70. <p v-else class="control">
  71. <button
  72. v-if="action == 'close'"
  73. id="btnClose"
  74. :class="classes"
  75. @click="$emit('closed')"
  76. type="button"
  77. >
  78. {{ $t('commons.close') }}
  79. </button>
  80. <button
  81. v-if="action == 'cancel'"
  82. id="btnCancel"
  83. :class="classes"
  84. @click="$emit('canceled')"
  85. type="button"
  86. >
  87. {{ $t('commons.cancel') }}
  88. </button>
  89. </p>
  90. </template>