点击卡片跳转编辑代码新页面

This commit is contained in:
严争鸣 2024-12-09 17:59:14 +08:00
parent 7f68787164
commit f1b701d045
8 changed files with 114 additions and 59 deletions

1
components.d.ts vendored
View File

@ -17,6 +17,7 @@ declare module 'vue' {
IconSupport: typeof import('./src/components/icons/IconSupport.vue')['default'] IconSupport: typeof import('./src/components/icons/IconSupport.vue')['default']
IconTooling: typeof import('./src/components/icons/IconTooling.vue')['default'] IconTooling: typeof import('./src/components/icons/IconTooling.vue')['default']
IconVue: typeof import('./src/components/icons/IconVue.vue')['default'] IconVue: typeof import('./src/components/icons/IconVue.vue')['default']
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
RouterLink: typeof import('vue-router')['RouterLink'] RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView'] RouterView: typeof import('vue-router')['RouterView']
TheWelcome: typeof import('./src/components/TheWelcome.vue')['default'] TheWelcome: typeof import('./src/components/TheWelcome.vue')['default']

View File

@ -1,17 +1,22 @@
<script setup lang="ts"> <script setup lang="ts">
import { RouterView } from 'vue-router' // import { RouterView } from 'vue-router'
import LayoutCom from "./views/Layout"; import LayoutCom from './views/Layout'
import { zhCN, dateZhCN } from 'naive-ui'
</script> </script>
<template> <template>
<n-config-provider
:theme-overrides="themeOverrides"
class="h-full w-full"
:locale="zhCN"
:date-locale="dateZhCN"
>
<div class="p-5 w-h-full"> <div class="p-5 w-h-full">
<LayoutCom> <LayoutCom>
<!-- <RouterView /> --> <!-- <RouterView /> -->
</LayoutCom> </LayoutCom>
</div> </div>
</n-config-provider>
</template> </template>
<style scoped> <style scoped></style>
</style>

View File

@ -66,7 +66,7 @@
body { body {
min-height: 100vh; min-height: 100vh;
color: var(--color-text); color: var(--color-text);
background: var(--color-background); background: var(--color-background-mute);
transition: transition:
color 0.5s, color 0.5s,
background-color 0.5s; background-color 0.5s;

View File

@ -5,6 +5,7 @@ import { BookmarkOutline, CaretDownOutline } from '@vicons/ionicons5'
import IconCesium from '@/components/icons/IconCesium.vue' import IconCesium from '@/components/icons/IconCesium.vue'
import IconVue from '@/components/icons/IconVue.vue' import IconVue from '@/components/icons/IconVue.vue'
import IconHtml from '@/components/icons/IconHtml.vue' import IconHtml from '@/components/icons/IconHtml.vue'
const menuOptions: MenuOption[] = [ const menuOptions: MenuOption[] = [
{ {
label: 'Cesium', label: 'Cesium',
@ -47,11 +48,7 @@ const renderMenuLabel = (option: MenuOption) => {
} }
const renderMenuIcon = (option: MenuOption) => { const renderMenuIcon = (option: MenuOption) => {
if ('icon' in option) { return h(NIcon, null, { default: () => h(option.icon ?? BookmarkOutline) })
return h(NIcon, null, option.icon)
} else {
return h(NIcon, null, { default: () => h(option.icon ? option.icon : BookmarkOutline) })
}
} }
const expandIcon = () => { const expandIcon = () => {

View File

@ -8,8 +8,10 @@ import {
NScrollbar, NScrollbar,
} from 'naive-ui' } from 'naive-ui'
import MenuCom from './components/Menu' import MenuCom from './components/Menu'
//
const border = 'border border-[var(--border-color)] rounded-lg '
const bgColor = 'bg-[var(--color-background-mute)] '
const border = 'border border-[var(--border-color)] rounded-lg shadow-sm'
export default defineComponent({ export default defineComponent({
setup() { setup() {
const route = useRoute() const route = useRoute()
@ -19,14 +21,17 @@ export default defineComponent({
<RouterView></RouterView> <RouterView></RouterView>
) : ( ) : (
<div class="w-h-full"> <div class="w-h-full">
<NLayout class="w-h-full" content-class="flex flex-col w-h-full"> <NLayout class={`w-h-full ${bgColor}`} content-class="flex flex-col w-h-full">
<NLayoutHeader class="h-12"> <div class={`${bgColor}`}>
<div class={`h-full ${border}`}>title</div> <NLayoutHeader class={`h-[64px] ${border}`}>
<div class="h-full">title</div>
</NLayoutHeader> </NLayoutHeader>
<div class="h-5"></div> </div>
<div class={`h-5 ${bgColor}`}></div>
<NLayout has-sider class="flex-1" content-class="w-h-full"> <NLayout has-sider class="flex-1" content-class="w-h-full">
<div class={`${bgColor} h-full`}>
<NLayoutSider <NLayoutSider
class={`${border}`} class={`${border} h-full`}
show-trigger show-trigger
collapse-mode="width" collapse-mode="width"
collapsed-width={64} collapsed-width={64}
@ -36,12 +41,16 @@ export default defineComponent({
> >
<MenuCom /> <MenuCom />
</NLayoutSider> </NLayoutSider>
<div class="p-3"></div> </div>
<div class={`p-3 ${bgColor}`}></div>
<div class={`${bgColor} h-full`}>
<NLayoutContent class={`h-full ${border}`} content-style="padding: 24px"> <NLayoutContent class={`h-full ${border}`} content-style="padding: 24px">
<NScrollbar> <NScrollbar>
<RouterView class="w-h-full" /> <RouterView class="w-h-full" />
</NScrollbar> </NScrollbar>
</NLayoutContent> </NLayoutContent>
</div>
</NLayout> </NLayout>
{/* <NLayoutFooter class="bg-slate-400 h-[40px]">成府路</NLayoutFooter> */} {/* <NLayoutFooter class="bg-slate-400 h-[40px]">成府路</NLayoutFooter> */}
</NLayout> </NLayout>

View File

@ -0,0 +1,33 @@
import { NButton, NSelect } from 'naive-ui'
const options = [
{
label: 'static',
value: 'static',
},
{
label: 'vue3',
value: 'vue3',
},
{
label: 'react',
value: 'react',
},
]
export default defineComponent({
setup() {
const type = ref('static')
return () => (
<div class="flex gap-2 h-[64px] justify-center items-center bg-white border border-[var(--border-color)] rounded-lg p-5">
<NSelect class="w-[200px]" options={options} v-model:value={type.value}></NSelect>
<NButton type="primary" class="">
</NButton>
<NButton type="primary" class="ml-auto">
</NButton>
</div>
)
},
})

View File

@ -6,11 +6,14 @@ import {
} from 'sandpack-vue3' } from 'sandpack-vue3'
import { atomDark } from '@codesandbox/sandpack-themes' import { atomDark } from '@codesandbox/sandpack-themes'
import CodeEditor from './components/CodeEditor' import CodeEditor from './components/CodeEditor'
import HeaderOperate from './components/HeaderOperate'
export default defineComponent({ export default defineComponent({
setup() { setup() {
return () => ( return () => (
<> <div class="w-h-full flex-col flex gap-5">
<HeaderOperate />
<div class="flex-1">
<SandpackProvider <SandpackProvider
class="!w-h-full" class="!w-h-full"
theme={atomDark} theme={atomDark}
@ -35,7 +38,8 @@ export default defineComponent({
<SandpackConsole /> <SandpackConsole />
</SandpackLayout> */} </SandpackLayout> */}
</SandpackProvider> </SandpackProvider>
</> </div>
</div>
) )
}, },
}) })

View File

@ -12,7 +12,13 @@ import { NaiveUiResolver } from 'unplugin-vue-components/resolvers'
// https://vite.dev/config/ // https://vite.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
vue(), vue({
template: {
compilerOptions: {
isCustomElement: (tag) => tag.startsWith('Icon'),
},
},
}),
vueJsx(), vueJsx(),
vueDevTools(), vueDevTools(),
AutoImport({ AutoImport({