cyber-web-ui
Version:
spring-cyber前端ui框架
67 lines • 1.74 kB
JavaScript
import { createVNode as _createVNode } from "vue";
import { defineComponent, computed } from "vue";
var Icon = defineComponent({
name: "CIcon",
props: {
// 图标标识
icon: {
type: String,
default: ""
},
// 图标大小
size: {
type: String,
default: '12px'
},
// 自定义颜色
color: {
type: String,
default: ''
},
// 是否为svg
isSvg: {
type: Boolean,
default: false
}
},
setup: function setup(props, _ref) {
var attrs = _ref.attrs,
slots = _ref.slots,
emit = _ref.emit,
expose = _ref.expose;
var size = computed(function () {
if (typeof props.size == 'number') {
return props.size + 'px';
} else if (typeof props.size == 'string') {
return props.size.replace('px', '') + 'px';
} else {
return;
}
});
return function () {
var _slots$default;
return props.isSvg
// svg图标
? _createVNode("svg", {
"class": "cyber-iconfont icon cyber-svg-icon",
"style": {
fontSize: size.value,
minWidth: size.value
}
}, [_createVNode("use", {
"xlink:href": "#".concat(props.icon)
}, null)]) // 字体图标
: _createVNode("span", {
"class": ['cyber-iconfont', /^cyber\-/.test(props.icon) ? 'cyber-icon' : 'iconfont', props.icon],
"style": {
fontSize: size.value,
color: props.color || undefined
}
}, [(_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]);
};
}
});
Icon.install = function (app) {
app.component(Icon.name, Icon);
};
export default Icon;