import { flattenChildren } from '../_util/props-util'; import type { ExtractPropTypes, PropType } from 'vue'; import { computed, defineComponent } from 'vue'; import { withInstall } from '../_util/type'; import useConfigInject from '../_util/hooks/useConfigInject'; export const dividerProps = { prefixCls: String, type: { type: String as PropType<'horizontal' | 'vertical' | ''>, default: 'horizontal', }, dashed: { type: Boolean, default: false, }, orientation: { type: String as PropType<'left' | 'right' | 'center'>, default: 'center', }, plain: { type: Boolean, default: false, }, }; export type DividerProps = Partial>; const Divider = defineComponent({ name: 'ADivider', props: dividerProps, setup(props, { slots }) { const { prefixCls: prefixClsRef, direction } = useConfigInject('divider', props); const classString = computed(() => { const { type, dashed, plain } = props; const prefixCls = prefixClsRef.value; return { [prefixCls]: true, [`${prefixCls}-${type}`]: true, [`${prefixCls}-dashed`]: !!dashed, [`${prefixCls}-plain`]: !!plain, [`${prefixCls}-rtl`]: direction.value === 'rtl', }; }); const orientationPrefix = computed(() => props.orientation.length > 0 ? '-' + props.orientation : props.orientation, ); return () => { const children = flattenChildren(slots.default?.()); return ( ); }; }, }); export default withInstall(Divider);