From 1c34abb529451da17667b16cfb43722d69f23eff Mon Sep 17 00:00:00 2001
From: Bang <15622356989@163.com>
Date: Thu, 12 Jan 2023 11:57:07 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9Edivider?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/docs/divider.md | 9 +++
.../src/components/divider/ODivider.vue | 42 ++++++++++++
.../divider/__demo__/DividerBasic.vue | 13 ++++
.../divider/__demo__/DividerContent.vue | 16 +++++
.../divider/__demo__/DividerDirection.vue | 21 ++++++
.../divider/__demo__/DividerType.vue | 15 +++++
.../divider/__demo__/IndexDivider.vue | 17 +++++
.../src/components/divider/index.ts | 13 ++++
.../src/components/divider/style/index.scss | 66 +++++++++++++++++++
.../src/components/divider/style/index.ts | 1 +
.../src/components/divider/style/var.scss | 10 +++
.../src/components/divider/types.ts | 3 +
packages/portal/src/router.ts | 6 ++
13 files changed, 232 insertions(+)
create mode 100644 packages/docs/divider.md
create mode 100644 packages/opendesign/src/components/divider/__demo__/DividerBasic.vue
create mode 100644 packages/opendesign/src/components/divider/__demo__/DividerContent.vue
create mode 100644 packages/opendesign/src/components/divider/__demo__/DividerDirection.vue
create mode 100644 packages/opendesign/src/components/divider/__demo__/DividerType.vue
create mode 100644 packages/opendesign/src/components/divider/__demo__/IndexDivider.vue
create mode 100644 packages/opendesign/src/components/divider/index.ts
create mode 100644 packages/opendesign/src/components/divider/style/index.scss
create mode 100644 packages/opendesign/src/components/divider/style/index.ts
create mode 100644 packages/opendesign/src/components/divider/style/var.scss
create mode 100644 packages/opendesign/src/components/divider/types.ts
diff --git a/packages/docs/divider.md b/packages/docs/divider.md
new file mode 100644
index 00000000..10873aa4
--- /dev/null
+++ b/packages/docs/divider.md
@@ -0,0 +1,9 @@
+# Divider 分割线
+
+## props
+
+| name | type | 默认值 | 说明 |
+| :-------------- | :---------------------- | :----------- | -------------------- |
+| type | DividerTypeT | 'solid' | 可选,分割线类型 |
+| direction | DividerDirectionT | 'horizontal' | 可选,分割线方向 |
+| contentPosition | DividerContentPositionT | 'center' | 可选,自定义内容位置 |
diff --git a/packages/opendesign/src/components/divider/ODivider.vue b/packages/opendesign/src/components/divider/ODivider.vue
index e69de29b..1f83051a 100644
--- a/packages/opendesign/src/components/divider/ODivider.vue
+++ b/packages/opendesign/src/components/divider/ODivider.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
diff --git a/packages/opendesign/src/components/divider/__demo__/DividerBasic.vue b/packages/opendesign/src/components/divider/__demo__/DividerBasic.vue
new file mode 100644
index 00000000..23c838c1
--- /dev/null
+++ b/packages/opendesign/src/components/divider/__demo__/DividerBasic.vue
@@ -0,0 +1,13 @@
+
+
+
+ 基础用法
+
+ OpenDesign SIG,打造服务开源社区的开源体验系统
+
+ Community Goes Better with OpenDesign
+
+
+
diff --git a/packages/opendesign/src/components/divider/__demo__/DividerContent.vue b/packages/opendesign/src/components/divider/__demo__/DividerContent.vue
new file mode 100644
index 00000000..33e68e55
--- /dev/null
+++ b/packages/opendesign/src/components/divider/__demo__/DividerContent.vue
@@ -0,0 +1,16 @@
+
+
+
+ 设置内容
+
+ OpenDesign SIG,打造服务开源社区的开源体验系统
+ 分割线
+ OpenDesign SIG,打造服务开源社区的开源体验系统
+
+ OpenDesign SIG,打造服务开源社区的开源体验系统
+ 分割线
+
+
diff --git a/packages/opendesign/src/components/divider/__demo__/DividerDirection.vue b/packages/opendesign/src/components/divider/__demo__/DividerDirection.vue
new file mode 100644
index 00000000..46a18f07
--- /dev/null
+++ b/packages/opendesign/src/components/divider/__demo__/DividerDirection.vue
@@ -0,0 +1,21 @@
+
+
+
+ 垂直方向
+
+ OpenDesign
+
+ openEuler
+
+ 开源社区
+
+
+
+
+
diff --git a/packages/opendesign/src/components/divider/__demo__/DividerType.vue b/packages/opendesign/src/components/divider/__demo__/DividerType.vue
new file mode 100644
index 00000000..c0f85a69
--- /dev/null
+++ b/packages/opendesign/src/components/divider/__demo__/DividerType.vue
@@ -0,0 +1,15 @@
+
+
+
+ 不同类型
+
+ OpenDesign SIG,打造服务开源社区的开源体验系统
+
+ Community Goes Better with OpenDesign
+
+ 使用 OpenDesign 组件库开始更高效的开发
+
+
+
diff --git a/packages/opendesign/src/components/divider/__demo__/IndexDivider.vue b/packages/opendesign/src/components/divider/__demo__/IndexDivider.vue
new file mode 100644
index 00000000..f1991bce
--- /dev/null
+++ b/packages/opendesign/src/components/divider/__demo__/IndexDivider.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/packages/opendesign/src/components/divider/index.ts b/packages/opendesign/src/components/divider/index.ts
new file mode 100644
index 00000000..a1df5305
--- /dev/null
+++ b/packages/opendesign/src/components/divider/index.ts
@@ -0,0 +1,13 @@
+import type { App } from 'vue';
+
+import _ODivider from './ODivider.vue';
+
+export * from './types';
+
+const ODivider = Object.assign(_ODivider, {
+ install(app: App) {
+ app.component(_ODivider.name, _ODivider);
+ },
+});
+
+export { ODivider };
diff --git a/packages/opendesign/src/components/divider/style/index.scss b/packages/opendesign/src/components/divider/style/index.scss
new file mode 100644
index 00000000..b353041c
--- /dev/null
+++ b/packages/opendesign/src/components/divider/style/index.scss
@@ -0,0 +1,66 @@
+@import './var.scss';
+
+.o-divider-direction-horizontal {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ margin: var(--o-divider-gap-horizontal) 0;
+}
+
+.o-divider-line {
+ width: 100%;
+ height: 1px;
+ border-width: 1px 0 0 0;
+ border-style: solid;
+ border-color: var(--o-divider-color);
+}
+
+.o-divider-content {
+ color: var(--o-divider-text-color);
+ font-size: var(--o-divider-text-size);
+ line-height: var(--o-divider-text-height);
+ font-weight: 500;
+ margin: 0 16px;
+ white-space: nowrap;
+}
+
+.o-divider-content-left {
+ .o-divider-line {
+ &:nth-child(1) {
+ width: 28px;
+ }
+ }
+}
+
+.o-divider-content-right {
+ .o-divider-line {
+ &:nth-child(3) {
+ width: 28px;
+ }
+ }
+}
+
+.o-divider-direction-vertical {
+ display: inline-block;
+ width: 1px;
+ height: 1em;
+ margin: 0 var(--o-divider-gap-vertical);
+ vertical-align: middle;
+ border-width: 0 0 0 1px;
+ border-style: solid;
+ border-color: var(--o-divider-color);
+}
+
+.o-divider-dashed {
+ &.o-divider-direction-vertical,
+ .o-divider-line {
+ border-style: dashed;
+ }
+}
+
+.o-divider-dotted {
+ &.o-divider-direction-vertical,
+ .o-divider-line {
+ border-style: dotted;
+ }
+}
diff --git a/packages/opendesign/src/components/divider/style/index.ts b/packages/opendesign/src/components/divider/style/index.ts
new file mode 100644
index 00000000..bf3c23ac
--- /dev/null
+++ b/packages/opendesign/src/components/divider/style/index.ts
@@ -0,0 +1 @@
+import './index.scss';
\ No newline at end of file
diff --git a/packages/opendesign/src/components/divider/style/var.scss b/packages/opendesign/src/components/divider/style/var.scss
new file mode 100644
index 00000000..f258e800
--- /dev/null
+++ b/packages/opendesign/src/components/divider/style/var.scss
@@ -0,0 +1,10 @@
+.o-divider {
+ --o-divider-color: var(--o-color-division1);
+
+ --o-divider-gap-horizontal: var(--o-gap-4);
+ --o-divider-gap-vertical: var(--o-gap-2);
+
+ --o-divider-text-color: var(--o-color-text1);
+ --o-divider-text-size: var(--o-font_size-text);
+ --o-divider-text-height: var(--o-line_height-text);
+}
diff --git a/packages/opendesign/src/components/divider/types.ts b/packages/opendesign/src/components/divider/types.ts
new file mode 100644
index 00000000..62afdc93
--- /dev/null
+++ b/packages/opendesign/src/components/divider/types.ts
@@ -0,0 +1,3 @@
+export type DividerTypeT = 'solid' | 'dashed' | 'dotted';
+export type DividerDirectionT = 'horizontal' | 'vertical';
+export type DividerContentPositionT = 'left' | 'center' | 'right';
diff --git a/packages/portal/src/router.ts b/packages/portal/src/router.ts
index d7fea009..c6babedd 100644
--- a/packages/portal/src/router.ts
+++ b/packages/portal/src/router.ts
@@ -75,6 +75,12 @@ export const routes = [
label: '标签页',
component: () => import('@demo/tabs/__demo__/IndexTabs.vue'),
},
+ {
+ path: '/divider',
+ name: 'Divider',
+ label: '分割线',
+ component: () => import('@demo/divider/__demo__/IndexDivider.vue'),
+ },
];
export const router = createRouter({
--
Gitee