ConfirmContainer.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <!--suppress JSUnresolvedReference -->
  2. <template>
  3. <ConfirmDialog class="flex flex-col gap-8 p-4">
  4. <template #container="{ message, acceptCallback, rejectCallback }">
  5. <div class="flex shrink-0 items-center justify-between">
  6. <span
  7. v-if="message.header"
  8. class="text-xl font-semibold text-primary"
  9. >
  10. {{ message.header }}
  11. </span>
  12. <Button
  13. variant="text"
  14. rounded
  15. class="absolute -top-4 -right-4"
  16. @click="rejectCallback"
  17. >
  18. <Icon
  19. name="ph:x-bold"
  20. size="0.875em"
  21. />
  22. </Button>
  23. </div>
  24. <div class="flex items-center gap-3 overflow-y-auto">
  25. <Icon
  26. v-if="message.icon"
  27. :name="message.icon"
  28. size="1.5em"
  29. />
  30. {{ message.message }}
  31. </div>
  32. <div class="flex justify-end gap-3">
  33. <Button
  34. v-bind="message.rejectProps"
  35. size="small"
  36. @click="rejectCallback"
  37. >
  38. <Icon
  39. v-if="message.rejectProps.icon"
  40. :name="message.rejectProps.icon"
  41. />
  42. <template v-if="message.rejectProps.label">
  43. {{ message.rejectProps.label }}
  44. </template>
  45. </Button>
  46. <Button
  47. v-bind="message.acceptProps"
  48. size="small"
  49. @click="acceptCallback"
  50. >
  51. <Icon
  52. v-if="message.acceptProps.icon"
  53. :name="message.acceptProps.icon"
  54. />
  55. <template v-if="message.acceptProps.label">
  56. {{ message.acceptProps.label }}
  57. </template>
  58. </Button>
  59. </div>
  60. </template>
  61. </ConfirmDialog>
  62. </template>
  63. <script setup></script>
  64. <style scoped></style>