vue-ant-patterns
Version:
vue-ant-patterns
55 lines (49 loc) • 1.67 kB
JavaScript
import _defineProperty from 'babel-runtime/helpers/defineProperty';
import _extends from 'babel-runtime/helpers/extends';
import { Icon } from 'ant-design-vue';
import cx from 'classnames';
import PropTypes from 'ant-design-vue/es/_util/vue-types';
import { filterEmpty, getSlots, getClass } from 'ant-design-vue/es/_util/props-util';
import './style/index.less';
var DIcon = {
functional: true,
name: 'DIcon',
props: {
type: PropTypes.string,
component: PropTypes.any,
viewBox: PropTypes.any,
spin: PropTypes.bool.def(false),
theme: PropTypes.oneOf(['filled', 'outlined', 'twoTone']),
twoToneColor: PropTypes.string
},
render: function render(h, context) {
var props = context.props,
slots = context.slots,
listeners = context.listeners,
data = context.data;
var type = props.type;
var reg = /^\$-/;
if (!type) return null;
var classString = cx(_extends({}, getClass(context)));
var customProps = _extends({}, context, {
'class': classString,
on: _extends({}, listeners)
});
var iconNode = null;
if (/^\$-/.test(type)) {
var _extends2;
var _classString = cx(_extends({}, getClass(context), (_extends2 = {}, _defineProperty(_extends2, 'acme-icon', reg.test(type)), _defineProperty(_extends2, 'acme-icon-' + type.replace(reg, ''), reg.test(type)), _extends2)));
var customIProps = {
'class': _classString
};
iconNode = h('i', customIProps);
} else {
iconNode = h(Icon, customProps);
}
return iconNode;
}
};
DIcon.install = function (Vue) {
Vue.component('DIcon', DIcon);
};
export default DIcon;