From 493335000b2e58119f3386ec4c47228faafaca9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E6=96=87=E5=AD=A6?= <1355729285@qq.com> Date: Sun, 10 Oct 2021 16:17:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0layout=E7=BB=84?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devui/layout/index.ts | 41 ++++ devui/layout/src/aside.tsx | 8 + devui/layout/src/content.scss | 4 + devui/layout/src/content.tsx | 10 + devui/layout/src/footer.scss | 4 + devui/layout/src/footer.tsx | 10 + devui/layout/src/header.scss | 4 + devui/layout/src/header.tsx | 10 + devui/layout/src/layout.scss | 9 + devui/layout/src/layout.tsx | 16 ++ docs/components/layout/index.md | 382 ++++++++++++++++++++++++++++++++ 11 files changed, 498 insertions(+) create mode 100644 devui/layout/index.ts create mode 100644 devui/layout/src/aside.tsx create mode 100644 devui/layout/src/content.scss create mode 100644 devui/layout/src/content.tsx create mode 100644 devui/layout/src/footer.scss create mode 100644 devui/layout/src/footer.tsx create mode 100644 devui/layout/src/header.scss create mode 100644 devui/layout/src/header.tsx create mode 100644 devui/layout/src/layout.scss create mode 100644 devui/layout/src/layout.tsx create mode 100644 docs/components/layout/index.md diff --git a/devui/layout/index.ts b/devui/layout/index.ts new file mode 100644 index 00000000..c05aba47 --- /dev/null +++ b/devui/layout/index.ts @@ -0,0 +1,41 @@ +import type { App } from 'vue' +import Layout from './src/layout' +import Content from './src/content' +import Header from './src/header' +import Footer from './src/footer' +import Aside from './src/aside' + +Layout.install = function(app: App): void { + app.component(Layout.name, Layout) +} + +Content.install = function(app: App): void { + app.component(Content.name, Content) +} + +Header.install = function(app: App): void { + app.component(Header.name, Header) +} + +Footer.install = function(app: App): void { + app.component(Footer.name, Footer) +} + +Aside.install = function(app: App): void { + app.component(Aside.name, Aside) +} + +export { Layout, Content, Header, Footer, Aside } + +export default { + title: 'Layout 布局', + category: '布局', + status: '已完成', // TODO: 组件若开发完成则填入"已完成",并删除该注释 + install(app: App): void { + app.use(Layout as any) + app.use(Content as any) + app.use(Header as any) + app.use(Footer as any) + app.use(Aside as any) + } +} diff --git a/devui/layout/src/aside.tsx b/devui/layout/src/aside.tsx new file mode 100644 index 00000000..4be86a0d --- /dev/null +++ b/devui/layout/src/aside.tsx @@ -0,0 +1,8 @@ +import { defineComponent } from 'vue' + +export default defineComponent({ + name: 'DAside', + setup (props, { slots }) { + return () =>
{ slots.default?.() }
+ } +}) \ No newline at end of file diff --git a/devui/layout/src/content.scss b/devui/layout/src/content.scss new file mode 100644 index 00000000..3069db2f --- /dev/null +++ b/devui/layout/src/content.scss @@ -0,0 +1,4 @@ +.d-content { + flex: auto; + min-height: 0; +} diff --git a/devui/layout/src/content.tsx b/devui/layout/src/content.tsx new file mode 100644 index 00000000..d3198153 --- /dev/null +++ b/devui/layout/src/content.tsx @@ -0,0 +1,10 @@ +import './content.scss' + +import { defineComponent } from 'vue' + +export default defineComponent({ + name: 'DContent', + setup (props, { slots }) { + return () =>
{slots.default?.()}
+ } +}) \ No newline at end of file diff --git a/devui/layout/src/footer.scss b/devui/layout/src/footer.scss new file mode 100644 index 00000000..dcd0b694 --- /dev/null +++ b/devui/layout/src/footer.scss @@ -0,0 +1,4 @@ +.d-footer { + text-align: center; + line-height: 1.5; +} diff --git a/devui/layout/src/footer.tsx b/devui/layout/src/footer.tsx new file mode 100644 index 00000000..7931501f --- /dev/null +++ b/devui/layout/src/footer.tsx @@ -0,0 +1,10 @@ +import './footer.scss' + +import { defineComponent } from 'vue' + +export default defineComponent({ + name: 'DFooter', + setup (props, { slots }) { + return () => + } +}) \ No newline at end of file diff --git a/devui/layout/src/header.scss b/devui/layout/src/header.scss new file mode 100644 index 00000000..e42abf58 --- /dev/null +++ b/devui/layout/src/header.scss @@ -0,0 +1,4 @@ +.d-header { + min-height: 40px; + flex: auto; +} diff --git a/devui/layout/src/header.tsx b/devui/layout/src/header.tsx new file mode 100644 index 00000000..881cd89b --- /dev/null +++ b/devui/layout/src/header.tsx @@ -0,0 +1,10 @@ +import './header.scss' + +import { defineComponent } from 'vue' + +export default defineComponent({ + name: 'DHeader', + setup (props, { slots }) { + return () =>
{ slots.default?.() }
+ } +}) \ No newline at end of file diff --git a/devui/layout/src/layout.scss b/devui/layout/src/layout.scss new file mode 100644 index 00000000..a3176ee0 --- /dev/null +++ b/devui/layout/src/layout.scss @@ -0,0 +1,9 @@ +.d-layout { + display: flex; + flex-direction: column; + flex: auto; + + &-aside { + flex-direction: row; + } +} diff --git a/devui/layout/src/layout.tsx b/devui/layout/src/layout.tsx new file mode 100644 index 00000000..2509f56e --- /dev/null +++ b/devui/layout/src/layout.tsx @@ -0,0 +1,16 @@ +import './layout.scss' + +import { defineComponent } from 'vue' + +export default defineComponent({ + name: 'DLayout', + emits: [], + setup(props, { slots }) { + return () => { + const slotDefault = slots.default?.() + const isAside = slotDefault.some(item => (item.type as any).name === 'DAside') + const classNames = `${isAside ? 'd-layout-aside ': ''}d-layout` + return
{ slotDefault }
+ } + } +}) diff --git a/docs/components/layout/index.md b/docs/components/layout/index.md new file mode 100644 index 00000000..cccf1a83 --- /dev/null +++ b/docs/components/layout/index.md @@ -0,0 +1,382 @@ +# Layout 布局 + +页面的布局方式。 + +### 何时使用 + +当用户需要直接使用一些既有布局时。 + +### 基本用法 + +::: demo + +```vue + + + +``` + +::: + +:::demo + +```vue + + + +``` + +::: + +:::demo + +```vue + + + +``` + +::: + +:::demo + +```vue + + + +``` + +::: + +### 应用场景1 + +常用上中下布局。 + +:::demo + +```vue + + + + +``` + +::: + +### 应用场景2 + +常用上中下布局及侧边栏布局。 + +:::demo + +```vue + + + + + + +``` + +::: + +### API + +在页面中使用: + +```html + + + + + +``` + +### d-layout + +布局容器,可以与d-header, d-content, d-footer, d-aside组合实现布局; d-layout下可嵌套元素:d-header, d-content, d-aside, d-layout。 + +### d-header + +顶部布局,只能放在d-layout容器中,作为d-layout容器的顶部实现。 默认高度:40px。 + +### d-footer + +底部布局,只能放在d-layout容器中,作为d-layout容器的底部实现。 + +### d-content + +内容容器,只能放在d-layout容器中,作为d-layout容器d-headerd-footer之间的内容。 + +### d-aside + +侧边栏,只能放在d-layout容器中,作为d-layout容器的侧边栏部分。 \ No newline at end of file -- Gitee From 38b7701e319fa4d7ac8739dd352f96097003691d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E6=96=87=E5=AD=A6?= <1355729285@qq.com> Date: Sun, 10 Oct 2021 22:03:07 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E5=88=A0=E9=99=A4TODO=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=EF=BC=8C=E4=BF=AE=E6=94=B9class=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devui/layout/index.ts | 2 +- devui/layout/src/aside.tsx | 2 +- devui/layout/src/content.scss | 2 +- devui/layout/src/content.tsx | 2 +- devui/layout/src/footer.scss | 2 +- devui/layout/src/footer.tsx | 2 +- devui/layout/src/header.scss | 2 +- devui/layout/src/header.tsx | 2 +- devui/layout/src/layout.scss | 2 +- devui/layout/src/layout.tsx | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/devui/layout/index.ts b/devui/layout/index.ts index c05aba47..8f6ec9b6 100644 --- a/devui/layout/index.ts +++ b/devui/layout/index.ts @@ -30,7 +30,7 @@ export { Layout, Content, Header, Footer, Aside } export default { title: 'Layout 布局', category: '布局', - status: '已完成', // TODO: 组件若开发完成则填入"已完成",并删除该注释 + status: '已完成', install(app: App): void { app.use(Layout as any) app.use(Content as any) diff --git a/devui/layout/src/aside.tsx b/devui/layout/src/aside.tsx index 4be86a0d..ca650fdc 100644 --- a/devui/layout/src/aside.tsx +++ b/devui/layout/src/aside.tsx @@ -3,6 +3,6 @@ import { defineComponent } from 'vue' export default defineComponent({ name: 'DAside', setup (props, { slots }) { - return () =>
{ slots.default?.() }
+ return () =>
{ slots.default?.() }
} }) \ No newline at end of file diff --git a/devui/layout/src/content.scss b/devui/layout/src/content.scss index 3069db2f..3314b4c4 100644 --- a/devui/layout/src/content.scss +++ b/devui/layout/src/content.scss @@ -1,4 +1,4 @@ -.d-content { +.devui-content { flex: auto; min-height: 0; } diff --git a/devui/layout/src/content.tsx b/devui/layout/src/content.tsx index d3198153..d2caaecd 100644 --- a/devui/layout/src/content.tsx +++ b/devui/layout/src/content.tsx @@ -5,6 +5,6 @@ import { defineComponent } from 'vue' export default defineComponent({ name: 'DContent', setup (props, { slots }) { - return () =>
{slots.default?.()}
+ return () =>
{slots.default?.()}
} }) \ No newline at end of file diff --git a/devui/layout/src/footer.scss b/devui/layout/src/footer.scss index dcd0b694..eeec0154 100644 --- a/devui/layout/src/footer.scss +++ b/devui/layout/src/footer.scss @@ -1,4 +1,4 @@ -.d-footer { +.devui-footer { text-align: center; line-height: 1.5; } diff --git a/devui/layout/src/footer.tsx b/devui/layout/src/footer.tsx index 7931501f..457ae984 100644 --- a/devui/layout/src/footer.tsx +++ b/devui/layout/src/footer.tsx @@ -5,6 +5,6 @@ import { defineComponent } from 'vue' export default defineComponent({ name: 'DFooter', setup (props, { slots }) { - return () => + return () => } }) \ No newline at end of file diff --git a/devui/layout/src/header.scss b/devui/layout/src/header.scss index e42abf58..ada90cec 100644 --- a/devui/layout/src/header.scss +++ b/devui/layout/src/header.scss @@ -1,4 +1,4 @@ -.d-header { +.devui-header { min-height: 40px; flex: auto; } diff --git a/devui/layout/src/header.tsx b/devui/layout/src/header.tsx index 881cd89b..e723aff3 100644 --- a/devui/layout/src/header.tsx +++ b/devui/layout/src/header.tsx @@ -5,6 +5,6 @@ import { defineComponent } from 'vue' export default defineComponent({ name: 'DHeader', setup (props, { slots }) { - return () =>
{ slots.default?.() }
+ return () =>
{ slots.default?.() }
} }) \ No newline at end of file diff --git a/devui/layout/src/layout.scss b/devui/layout/src/layout.scss index a3176ee0..a513015a 100644 --- a/devui/layout/src/layout.scss +++ b/devui/layout/src/layout.scss @@ -1,4 +1,4 @@ -.d-layout { +.devui-layout { display: flex; flex-direction: column; flex: auto; diff --git a/devui/layout/src/layout.tsx b/devui/layout/src/layout.tsx index 2509f56e..da930645 100644 --- a/devui/layout/src/layout.tsx +++ b/devui/layout/src/layout.tsx @@ -9,7 +9,7 @@ export default defineComponent({ return () => { const slotDefault = slots.default?.() const isAside = slotDefault.some(item => (item.type as any).name === 'DAside') - const classNames = `${isAside ? 'd-layout-aside ': ''}d-layout` + const classNames = `${isAside ? 'devui-layout-aside ': ''}devui-layout` return
{ slotDefault }
} } -- Gitee