|
5 | 5 | Logs |
6 | 6 | </div> |
7 | 7 | <nav class="tw-mt-1"> |
8 | | - <!-- Email Category --> |
9 | | - <div class="tw-mt-3"> |
| 8 | + <!-- Email Category - Only show if email package is installed --> |
| 9 | + <div |
| 10 | + v-if="hasEmailPackage" |
| 11 | + class="tw-mt-3" |
| 12 | + > |
10 | 13 | <button |
11 | 14 | v-b-toggle.collapse-email |
12 | 15 | class=" |
|
54 | 57 | tw-text-base |
55 | 58 | tw-cursor-pointer |
56 | 59 | " |
57 | | - :class="isEmailActive ? 'tw-bg-blue-50 tw-font-semibold tw-text-blue-500' : 'tw-font-medium tw-text-zinc-700 hover:tw-bg-zinc-50'" |
| 60 | + :class="emailLinkClasses" |
58 | 61 | > |
59 | 62 | <span class="tw-inline-flex tw-items-center tw-gap-2">Email Start Event</span> |
60 | 63 | </RouterLink> |
61 | 64 | </b-collapse> |
62 | 65 | </div> |
63 | 66 |
|
64 | | - <!-- Agents Category --> |
65 | | - <div class="tw-mt-3"> |
| 67 | + <!-- Agents Category - Only show if AI package is installed --> |
| 68 | + <div |
| 69 | + v-if="hasAiPackage" |
| 70 | + class="tw-mt-3" |
| 71 | + > |
66 | 72 | <button |
67 | 73 | v-b-toggle.collapse-agents |
68 | 74 | class=" |
|
110 | 116 | tw-text-base |
111 | 117 | tw-cursor-pointer |
112 | 118 | " |
113 | | - :class="isAgentsActive ? 'tw-bg-blue-50 tw-font-semibold tw-text-blue-500' : 'tw-font-medium tw-text-zinc-700 hover:tw-bg-zinc-50'" |
| 119 | + :class="agentsLinkClasses" |
114 | 120 | > |
115 | 121 | <span class="tw-inline-flex tw-items-center tw-gap-2">FlowGenie Agents logs</span> |
116 | 122 | </RouterLink> |
|
122 | 128 | </template> |
123 | 129 |
|
124 | 130 | <script> |
| 131 | +import { hasEmailPackage, hasAiPackage } from "../routes"; |
| 132 | +
|
125 | 133 | export default { |
126 | | - name: 'LogsSidebar', |
| 134 | + name: "LogsSidebar", |
127 | 135 | data() { |
128 | 136 | return { |
129 | 137 | collapseStates: { |
130 | | - email: this.$route.path.startsWith('/email'), |
131 | | - agents: this.$route.path.startsWith('/agents'), |
| 138 | + email: this.$route.path.startsWith("/email"), |
| 139 | + agents: this.$route.path.startsWith("/agents"), |
132 | 140 | }, |
133 | 141 | }; |
134 | 142 | }, |
135 | 143 | computed: { |
| 144 | + hasEmailPackage() { |
| 145 | + return hasEmailPackage(); |
| 146 | + }, |
| 147 | + hasAiPackage() { |
| 148 | + return hasAiPackage(); |
| 149 | + }, |
136 | 150 | isEmailActive() { |
137 | | - return this.$route.path.startsWith('/email'); |
| 151 | + return this.$route.path.startsWith("/email"); |
138 | 152 | }, |
139 | 153 | isAgentsActive() { |
140 | | - return this.$route.path.startsWith('/agents'); |
| 154 | + return this.$route.path.startsWith("/agents"); |
| 155 | + }, |
| 156 | + emailLinkClasses() { |
| 157 | + return this.isEmailActive |
| 158 | + ? "tw-bg-blue-50 tw-font-semibold tw-text-blue-500" |
| 159 | + : "tw-font-medium tw-text-zinc-700 hover:tw-bg-zinc-50"; |
| 160 | + }, |
| 161 | + agentsLinkClasses() { |
| 162 | + return this.isAgentsActive |
| 163 | + ? "tw-bg-blue-50 tw-font-semibold tw-text-blue-500" |
| 164 | + : "tw-font-medium tw-text-zinc-700 hover:tw-bg-zinc-50"; |
141 | 165 | }, |
142 | 166 | }, |
143 | 167 | watch: { |
144 | 168 | // Auto-expand the category when navigating to it |
145 | | - '$route.path': { |
| 169 | + "$route.path": { |
146 | 170 | handler(path) { |
147 | | - if (path.startsWith('/agents') && !this.collapseStates.agents) { |
148 | | - this.$root.$emit('bv::toggle::collapse', 'collapse-agents'); |
| 171 | + if (path.startsWith("/agents") && !this.collapseStates.agents) { |
| 172 | + this.$root.$emit("bv::toggle::collapse", "collapse-agents"); |
149 | 173 | } |
150 | | - if (path.startsWith('/email') && !this.collapseStates.email) { |
151 | | - this.$root.$emit('bv::toggle::collapse', 'collapse-email'); |
| 174 | + if (path.startsWith("/email") && !this.collapseStates.email) { |
| 175 | + this.$root.$emit("bv::toggle::collapse", "collapse-email"); |
152 | 176 | } |
153 | 177 | }, |
154 | 178 | immediate: true, |
155 | 179 | }, |
156 | 180 | }, |
157 | 181 | mounted() { |
158 | 182 | // Listen for collapse events to update icon rotation |
159 | | - this.$root.$on('bv::collapse::state', (id, state) => { |
160 | | - if (id === 'collapse-email') { |
| 183 | + this.$root.$on("bv::collapse::state", (id, state) => { |
| 184 | + if (id === "collapse-email") { |
161 | 185 | this.collapseStates.email = state; |
162 | | - } else if (id === 'collapse-agents') { |
| 186 | + } else if (id === "collapse-agents") { |
163 | 187 | this.collapseStates.agents = state; |
164 | 188 | } |
165 | 189 | }); |
166 | 190 | }, |
167 | 191 | beforeDestroy() { |
168 | 192 | // Clean up event listener |
169 | | - this.$root.$off('bv::collapse::state'); |
| 193 | + this.$root.$off("bv::collapse::state"); |
170 | 194 | }, |
171 | 195 | }; |
172 | 196 | </script> |
173 | | - |
|
0 commit comments