diff --git a/components/divider/index.jsx b/components/divider/index.jsx deleted file mode 100644 index da92314e4..000000000 --- a/components/divider/index.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import { inject } from 'vue'; -import PropTypes from '../_util/vue-types'; -import { defaultConfigProvider } from '../config-provider'; -import { getSlot } from '../_util/props-util'; - -const Divider = { - name: 'ADivider', - props: { - prefixCls: PropTypes.string, - type: PropTypes.oneOf(['horizontal', 'vertical', '']).def('horizontal'), - dashed: PropTypes.bool, - orientation: PropTypes.oneOf(['left', 'right', 'center']), - }, - setup() { - return { - configProvider: inject('configProvider', defaultConfigProvider), - }; - }, - render() { - const { prefixCls: customizePrefixCls, type, dashed, orientation = 'center' } = this; - const getPrefixCls = this.configProvider.getPrefixCls; - const prefixCls = getPrefixCls('divider', customizePrefixCls); - const orientationPrefix = orientation.length > 0 ? '-' + orientation : orientation; - const children = getSlot(this); - const classString = { - [prefixCls]: true, - [`${prefixCls}-${type}`]: true, - [`${prefixCls}-with-text${orientationPrefix}`]: children.length, - [`${prefixCls}-dashed`]: !!dashed, - }; - - return ( - - ); - }, -}; - -/* istanbul ignore next */ -Divider.install = function(app) { - app.component(Divider.name, Divider); -}; - -export default Divider; diff --git a/components/divider/index.tsx b/components/divider/index.tsx new file mode 100644 index 000000000..9ea2f4084 --- /dev/null +++ b/components/divider/index.tsx @@ -0,0 +1,52 @@ +import { App, computed, defineComponent, inject, PropType, unref } from 'vue'; +import { defaultConfigProvider } from '../config-provider'; + +const Divider = defineComponent({ + name: 'ADivider', + props: { + 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', + }, + }, + setup(props, { slots }) { + const { getPrefixCls } = inject('configProvider', defaultConfigProvider); + const prefixCls = computed(() => getPrefixCls('divider', props.prefixCls)); + + const classString = computed(() => { + const { type, dashed, orientation } = props; + const orientationPrefix = orientation.length > 0 ? '-' + orientation : orientation; + const prefixClsRef = unref(prefixCls); + return { + [prefixClsRef]: true, + [`${prefixClsRef}-${type}`]: true, + [`${prefixClsRef}-with-text${orientationPrefix}`]: slots.default, + [`${prefixClsRef}-dashed`]: !!dashed, + }; + }); + + return () => { + return ( + + ); + }; + }, +}); + +/* istanbul ignore next */ +Divider.install = function(app: App) { + app.component(Divider.name, Divider); +}; + +export default Divider; diff --git a/components/divider/style/index.js b/components/divider/style/index.ts similarity index 100% rename from components/divider/style/index.js rename to components/divider/style/index.ts