UNPKG

vue-ant-patterns

Version:

vue-ant-patterns

68 lines (62 loc) 1.87 kB
import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties'; import _extends from 'babel-runtime/helpers/extends'; /* * @Description: * @Autor: w.pengfei * @Date: 2019-12-13 12:30:12 * @LastEditors: w.pengfei * @LastEditTime: 2020-10-09 18:41:11 */ import { Button } from 'ant-design-vue'; import ButtonTypes from 'ant-design-vue/es/button/buttonTypes'; import { filterEmpty } from 'ant-design-vue/es/_util/props-util'; import PropTypes from 'ant-design-vue/es/_util/vue-types'; import cx from 'classnames'; import DIcon from '../d-icon'; var buttonProps = ButtonTypes(); var DIconButton = { // functional: true, name: 'DIconButton', props: _extends({}, ButtonTypes(), { active: PropTypes.bool.def(false), size: PropTypes.oneOf(['xs', 'small', 'large', 'default']).def('default'), icon: PropTypes.string }), render: function render() { var h = arguments[0]; var $slots = this.$slots, $listeners = this.$listeners, $attrs = this.$attrs, $props = this.$props, active = this.active; var cls = cx({ 'icon-button': 1, active: active, 'icon-button-xs': $props.size === 'xs' }); var icon = $props.icon, rest = _objectWithoutProperties($props, ['icon']); var cloneProps = _extends({}, rest); var iconNode = icon ? h(DIcon, { attrs: { type: icon } }) : null; if (cloneProps.size === 'xs') { delete cloneProps.size; delete cloneProps.active; } var ButtonProps = _extends({}, $attrs, { props: _extends({}, cloneProps), on: _extends({}, $listeners), 'class': cls }); return h( Button, ButtonProps, [iconNode || $slots['default']] ); } }; DIconButton.install = function (Vue) { Vue.component(DIconButton.name, DIconButton); }; export default DIconButton;