'use strict'
const icons = {}
export const addIcon = function (name, options) {
icons[name] = options
}
const Icon = {
name: 'Icon',
props: {
name: String,
color: String
},
computed: {
svg () {
return icons[this.name]
}
},
// eslint-disable-next-line
render (h) {
const svg = this.svg
if (!svg) {
// eslint-disable-next-line
console.warn(`The name of '${this.name}' could not be found.`)
return <span class="m-svg-icon"></span>
}
const style = {
color: this.color ? this.color : (svg.fill ? svg.fill : null)
}
return (
<span class={['m-svg-icon', 'm-svg-icon--' + this.name]}>
<svg
version="1.1"
xmlns="http://www.w3.org/2000/svg"
viewBox={svg.viewBox}
style={style}
class={svg.class}>
{ svg.defs && <defs domPropsInnerHTML={svg.defs}></defs> }
{ svg.path && <path fill="currentColor" d={svg.path} /> }
{ svg.html && <g domPropsInnerHTML={svg.html}></g> }
{this.$slots.default}
</svg>
</span>
)
}
}
Icon.add = addIcon
export default Icon