Summary.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <div>
  3. <div class="layout-col z-10">
  4. <DangerCard v-if="this.appEnv !== 'local' && this.appDebug === true">
  5. <p>
  6. <code>APP_DEBUG</code> is set to <code>true</code> while <code>APP_ENV</code> is
  7. not <code>local</code>
  8. </p>
  9. <p class="text-base">
  10. This could make your application vulnerable to remote execution.
  11. <a
  12. class="underline"
  13. target="_blank"
  14. rel="noopener"
  15. href="https://flareapp.io/docs/ignition-for-laravel/security"
  16. >Read more about Ignition security.</a
  17. >
  18. </p>
  19. </DangerCard>
  20. <ErrorCard />
  21. </div>
  22. <div class="layout-col z-1" v-if="solutions.length > 0">
  23. <SolutionCard v-bind="{ solution }" />
  24. <div
  25. class="absolute left-0 bottom-0 w-full h-8 mb-2 px-4 text-sm z-10"
  26. v-if="solutions.length > 1"
  27. >
  28. <ul class="grid cols-auto place-center gap-1">
  29. <li
  30. v-for="(solution, key) in solutions"
  31. @click="activeSolutionKey = key"
  32. :key="solution.class"
  33. >
  34. <a
  35. class="grid place-center h-8 min-w-8 px-2 rounded-full"
  36. :class="{
  37. 'bg-tint-200 font-semibold': activeSolutionKey === key,
  38. 'hover:bg-tint-100 cursor-pointer': activeSolutionKey !== key,
  39. }"
  40. >
  41. {{ key + 1 }}
  42. </a>
  43. </li>
  44. </ul>
  45. </div>
  46. </div>
  47. </div>
  48. </template>
  49. <script>
  50. import FilePath from './Shared/FilePath.vue';
  51. import DangerCard from './Shared/DangerCard';
  52. import ErrorCard from './Shared/ErrorCard';
  53. import SolutionCard from './Solutions/SolutionCard';
  54. export default {
  55. components: {
  56. DangerCard,
  57. SolutionCard,
  58. ErrorCard,
  59. FilePath,
  60. },
  61. inject: ['report', 'solutions', 'appEnv', 'appDebug'],
  62. data() {
  63. return {
  64. activeSolutionKey: 0,
  65. };
  66. },
  67. computed: {
  68. firstFrame() {
  69. return this.report.stacktrace[0];
  70. },
  71. solution() {
  72. return this.solutions[this.activeSolutionKey];
  73. },
  74. },
  75. };
  76. </script>