From d2a75e19710e484935ac71f4dd5cd745f5b52e36 Mon Sep 17 00:00:00 2001 From: "huang.jian" Date: Fri, 29 May 2020 14:58:20 +0800 Subject: [PATCH] feat: :sparkles: implement divider --- packages/Divider/Divider.css | 57 ++++++++++++++++++++++++++++++++ packages/Divider/Divider.tsx | 60 ++++++++++++++++++++++++++++++++++ packages/Divider/index.ts | 4 +++ public/app.config.ts | 1 + public/pages/divider/index.tsx | 40 +++++++++++++++++++++++ 5 files changed, 162 insertions(+) create mode 100644 packages/Divider/Divider.css create mode 100644 packages/Divider/Divider.tsx create mode 100644 packages/Divider/index.ts create mode 100644 public/pages/divider/index.tsx diff --git a/packages/Divider/Divider.css b/packages/Divider/Divider.css new file mode 100644 index 0000000..3f5a4db --- /dev/null +++ b/packages/Divider/Divider.css @@ -0,0 +1,57 @@ +.van-divider { + display: flex; + align-items: center; + border-style: solid; + border-width: 0; + margin: 16px 0; + margin: var(--divider-margin, 16px 0); + color: #969799; + color: var(--divider-text-color, #969799); + font-size: 14px; + font-size: var(--divider-font-size, 14px); + line-height: 24px; + line-height: var(--divider-line-height, 24px); + border-color: #ebedf0; + border-color: var(--divider-border-color, #ebedf0); +} +.van-divider::before, +.van-divider::after { + display: block; + flex: 1; + box-sizing: border-box; + height: 1px; + border-color: inherit; + border-style: inherit; + border-width: 1px 0 0; +} +.van-divider::before { + content: ''; +} +.van-divider--hairline::before, +.van-divider--hairline::after { + transform: scaleY(0.5); +} +.van-divider--dashed { + border-style: dashed; +} +.van-divider--center::before, +.van-divider--left::before, +.van-divider--right::before { + margin-right: 16px; + margin-right: var(--divider-content-padding, 16px); +} +.van-divider--center::after, +.van-divider--left::after, +.van-divider--right::after { + content: ''; + margin-left: 16px; + margin-left: var(--divider-content-padding, 16px); +} +.van-divider--left::before { + max-width: 10%; + max-width: var(--divider-content-left-width, 10%); +} +.van-divider--right::after { + max-width: 10%; + max-width: var(--divider-content-right-width, 10%); +} diff --git a/packages/Divider/Divider.tsx b/packages/Divider/Divider.tsx new file mode 100644 index 0000000..92f36a1 --- /dev/null +++ b/packages/Divider/Divider.tsx @@ -0,0 +1,60 @@ +// packages +import React, { FunctionComponent, CSSProperties } from 'react'; +import clsx from 'clsx'; +import { View } from 'remax/wechat'; +// internal +import withDefaultProps from '../tools/with-default-props-advance'; +import './Divider.css'; + +// 默认值填充属性 +interface NeutralDividerProps { + dashed: boolean; + hairline: boolean; +} + +interface ExogenousDividerProps { + contentPostion?: 'left' | 'center' | 'right'; + // 自定义样式 + style?: CSSProperties; + // 容器类名,用以覆盖内部 + className?: string; +} + +type DividerProps = NeutralDividerProps & ExogenousDividerProps; + +const DefaultDividerProps: NeutralDividerProps = { + dashed: false, + hairline: false, +}; + +const Divider: FunctionComponent = (props) => { + const { + style, + className, + dashed, + hairline, + contentPostion, + children, + } = props; + const classnames = { + container: clsx( + className, + 'van-divider', + contentPostion && `van-divider--${contentPostion}`, + { + 'van-divider--dashed': dashed, + 'van-divider--hairline': hairline, + } + ), + }; + + return ( + + {children} + + ); +}; + +export default withDefaultProps( + DefaultDividerProps +)(Divider); diff --git a/packages/Divider/index.ts b/packages/Divider/index.ts new file mode 100644 index 0000000..ad56cba --- /dev/null +++ b/packages/Divider/index.ts @@ -0,0 +1,4 @@ +/** + * @description - nothing but export component + */ +export { default } from './Divider'; diff --git a/public/app.config.ts b/public/app.config.ts index 3b0f5aa..79e19d5 100644 --- a/public/app.config.ts +++ b/public/app.config.ts @@ -2,6 +2,7 @@ import { AppConfig } from 'remax/wechat'; const config: AppConfig = { pages: [ + 'pages/divider/index', 'pages/grid/index', 'pages/image/index', 'pages/cell/index', diff --git a/public/pages/divider/index.tsx b/public/pages/divider/index.tsx new file mode 100644 index 0000000..3f15375 --- /dev/null +++ b/public/pages/divider/index.tsx @@ -0,0 +1,40 @@ +// packages +import * as React from 'react'; +import { View, Text } from 'remax/wechat'; + +// internal +import Divider from '../../../packages/Divider'; + +export default () => { + return ( + + 基础用法 + + + + 使用 hairline + + + + 虚线 + + + + 文本位置 + + (づ ̄3 ̄) + (づ ̄3 ̄) + (づ ̄3 ̄) + + 自定义样式 + + + (づ ̄3 ̄) + + + + ); +};