vue-ant-patterns
Version:
vue-ant-patterns
68 lines (62 loc) • 1.87 kB
JavaScript
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;