ButtonBackCloseCancel.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. })
  28. const classes = 'button is-rounded'
  29. + (mode.value === 'dark' && ! props.isText && ! props.isCapture ? ' is-dark' : '')
  30. + (props.isText ? ' is-text' : '')
  31. + (props.isCapture ? ' is-large is-warning' : '')
  32. </script>
  33. <template>
  34. <!-- back / close / cancel button -->
  35. <p v-if="useLinkTag" class="control">
  36. <RouterLink
  37. v-if="action == 'close'"
  38. id="btnClose"
  39. :to="returnTo"
  40. :class="classes"
  41. tabindex="0"
  42. role="button"
  43. :aria-label="$t('commons.close_the_x_page', { pagetitle: $route.meta.title })"
  44. >
  45. {{ $t('commons.close') }}
  46. </RouterLink>
  47. <RouterLink
  48. v-else-if="action == 'back'"
  49. id="lnkBack"
  50. :to="returnTo"
  51. :class="classes"
  52. :aria-label="$t('commons.close_the_x_page', { pagetitle: $route.meta.title })"
  53. >
  54. {{ $t('commons.back') }}
  55. </RouterLink>
  56. <RouterLink
  57. v-else-if="action == 'cancel'"
  58. id="btnCancel"
  59. :to="returnTo"
  60. :class="classes"
  61. >
  62. {{ $t('commons.cancel') }}
  63. </RouterLink>
  64. </p>
  65. <p v-else class="control">
  66. <button
  67. v-if="action == 'close'"
  68. id="btnClose"
  69. :class="classes"
  70. @click="$emit('closed')"
  71. type="button"
  72. >
  73. {{ $t('commons.close') }}
  74. </button>
  75. <button
  76. v-if="action == 'cancel'"
  77. id="btnCancel"
  78. :class="classes"
  79. @click="$emit('canceled')"
  80. type="button"
  81. >
  82. {{ $t('commons.cancel') }}
  83. </button>
  84. </p>
  85. </template>