Skip to main content
Glama
WorkspaceCustomizeModules.vue2.49 kB
<!-- eslint-disable vue/no-multiple-template-root --> <template> <component :is="ResizablePanel" ref="leftResizablePanelRef" rememberSizeKey="func-picker" side="left" :minSize="320" > <div class="flex flex-col h-full"> <div class="relative flex-grow"> <CustomizeTabs tabContentSlug="packages"> <template #packages> <ModuleListPanel /> </template> </CustomizeTabs> </div> </div> </component> <div class="grow overflow-hidden bg-shade-0 dark:bg-neutral-800 dark:text-shade-0 font-semi-bold flex flex-col relative" > <ModuleDisplay :key="moduleSlug" /> </div> <component :is="ResizablePanel" ref="rightResizablePanelRef" rememberSizeKey="func-details" side="right" :minSize="200" > <SidebarSubpanelTitle label="Module Details" /> <ModuleDetailsPanel :key="moduleSlug" /> </component> </template> <script lang="ts" setup> import * as _ from "lodash-es"; import { computed, onBeforeUnmount, onMounted, ref } from "vue"; import { ResizablePanel } from "@si/vue-lib/design-system"; import ModuleListPanel from "@/components/modules/ModuleListPanel.vue"; import ModuleDisplay from "@/components/modules/ModuleDisplay.vue"; import ModuleDetailsPanel from "@/components/modules/ModuleDetailsPanel.vue"; import { useModuleStore } from "@/store/module.store"; import SidebarSubpanelTitle from "@/components/SidebarSubpanelTitle.vue"; import CustomizeTabs from "../CustomizeTabs.vue"; const moduleStore = useModuleStore(); const moduleSlug = computed(() => moduleStore.urlSelectedModuleSlug); const leftResizablePanelRef = ref(); const rightResizablePanelRef = ref(); const onKeyDown = async (e: KeyboardEvent) => { if ( e.altKey && e.shiftKey && leftResizablePanelRef.value && rightResizablePanelRef.value ) { if ( leftResizablePanelRef.value.collapsed && rightResizablePanelRef.value.collapsed ) { // Open all panels leftResizablePanelRef.value.collapseSet(false); rightResizablePanelRef.value.collapseSet(false); leftResizablePanelRef.value.subpanelCollapseSet(false); } else { // Close all panels leftResizablePanelRef.value.collapseSet(true); rightResizablePanelRef.value.collapseSet(true); } } }; onMounted(() => { window.addEventListener("keydown", onKeyDown); }); onBeforeUnmount(() => { window.removeEventListener("keydown", onKeyDown); }); </script>

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server