LeftPanelTabs.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <template>
  2. <Button
  3. :className="activePanelTab === 'THUMBS' ? 'active' : ''"
  4. img="icon-thumbnail"
  5. :title="$t('leftPanel.thumbnails')"
  6. dataElement="THUMBS"
  7. :isActive="activePanelTab === 'THUMBS'"
  8. @click="setActiveLeftPanelTab('THUMBS', 'thumbs')"
  9. >
  10. <Thumbnail />
  11. </Button>
  12. <Button
  13. :className="activePanelTab === 'OUTLINE' ? 'active' : ''"
  14. img="icon-outline"
  15. :title="$t('leftPanel.outlines')"
  16. dataElement="OUTLINE"
  17. :isActive="activePanelTab === 'OUTLINE'"
  18. @click="setActiveLeftPanelTab('OUTLINE', 'outline')"
  19. >
  20. <Outline />
  21. </Button>
  22. <Button
  23. :className="activePanelTab === 'ANNOTATION' ? 'active' : ''"
  24. img="icon-annotation"
  25. :title="$t('leftPanel.annotations')"
  26. dataElement="ANNOTATION"
  27. :isActive="activePanelTab === 'ANNOTATION'"
  28. @click="setActiveLeftPanelTab('ANNOTATION', 'none')"
  29. >
  30. <Annotation />
  31. </Button>
  32. <Button
  33. :className="activePanelTab === 'LAYER' ? 'active' : ''"
  34. v-if="activeLeftPanel && activePanelTab === 'LAYER'"
  35. img="icon-view-layers"
  36. :title="$t('leftPanel.layers')"
  37. dataElement="Layers"
  38. :isActive="activePanelTab === 'LAYER'"
  39. @click="setActiveLeftPanelTab('LAYER', 'layers')"
  40. >
  41. <Layers />
  42. </Button>
  43. <Button
  44. :className="activePanelTab === 'COMPARISON' ? 'active' : ''"
  45. v-if="activeLeftPanel && activePanelTab === 'COMPARISON'"
  46. img="icon-compare"
  47. title="Compare"
  48. dataElement="COMPARISON"
  49. :isActive="activePanelTab === 'COMPARISON'"
  50. @click="setActiveLeftPanelTab('COMPARISON')"
  51. />
  52. <Button
  53. :className="activePanelTab === 'SIGNATURE' ? 'active' : ''"
  54. img="icon-signature"
  55. :title="$t('leftPanel.signature')"
  56. dataElement="Signature"
  57. :isActive="activePanelTab === 'SIGNATURE'"
  58. @click="setActiveLeftPanelTab('SIGNATURE', 'none')"
  59. >
  60. <Signature />
  61. </Button>
  62. <Button
  63. :className="activePanelTab === 'SEARCH' ? 'active' : ''"
  64. img="icon-search"
  65. :title="$t('leftPanel.search')"
  66. dataElement="Search"
  67. :isActive="activePanelTab === 'SEARCH'"
  68. @click="setActiveLeftPanelTab('SEARCH', 'none')"
  69. >
  70. <SearchLeft />
  71. </Button>
  72. </template>
  73. <script setup>
  74. import { computed } from 'vue'
  75. import core from '@/core'
  76. import { useViewerStore } from '@/stores/modules/viewer'
  77. defineProps(['activePanelTab'])
  78. const activeLeftPanel = computed(() => useViewer.isElementOpen('leftPanel'))
  79. const activePanelTab = computed(() => useViewer.getActiveElementTab('leftPanelTab'))
  80. const useViewer = useViewerStore()
  81. const setActiveLeftPanelTab = (tab, mode) => {
  82. if (tab === activePanelTab.value) return
  83. useViewer.setActiveElementTab('leftPanelTab', tab)
  84. if (tab === 'SEARCH') {
  85. core.webViewerNamedAction('FindOpen')
  86. useViewer.setSearchStatus(true)
  87. } else {
  88. core.clearSearchResults()
  89. useViewer.setSearchStatus(false)
  90. }
  91. setTimeout(() => {
  92. core.webViewerPageMode(mode)
  93. }, 0)
  94. }
  95. </script>