mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-05-01 13:46:34 +08:00
53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
// Utils
|
|
import { createNamespace } from '../utils';
|
|
import { inherit } from '../utils/functional';
|
|
|
|
// Types
|
|
import { CreateElement, RenderContext } from 'vue/types';
|
|
import { DefaultSlots } from '../utils/types';
|
|
|
|
export type DividerProps = {
|
|
dashed?: boolean;
|
|
hairline: boolean;
|
|
borderColor?: string;
|
|
contentPosition: 'left' | 'center' | 'right';
|
|
};
|
|
|
|
const [createComponent, bem] = createNamespace('divider');
|
|
|
|
function Divider(
|
|
h: CreateElement,
|
|
props: DividerProps,
|
|
slots: DefaultSlots,
|
|
ctx: RenderContext
|
|
) {
|
|
return (
|
|
<div
|
|
role="separator"
|
|
style={{ borderColor: props.borderColor }}
|
|
class={bem({
|
|
dashed: props.dashed,
|
|
hairline: props.hairline,
|
|
[`content-${props.contentPosition}`]: slots.default,
|
|
})}
|
|
{...inherit(ctx, true)}
|
|
>
|
|
{slots.default && slots.default()}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
Divider.props = {
|
|
dashed: Boolean,
|
|
hairline: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
contentPosition: {
|
|
type: String,
|
|
default: 'center',
|
|
},
|
|
};
|
|
|
|
export default createComponent<DividerProps>(Divider);
|