feat: Adds multiple path support for fluent icons (#3665)

* feat: Adds multiple path support for icons

* Changes dashboard icon
This commit is contained in:
Nithin David Thomas 2021-12-29 18:01:49 +05:30 committed by GitHub
parent a1c77c8c4c
commit 666028a443
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 61 additions and 20 deletions

View file

@ -1,19 +1,15 @@
<template> <template>
<svg <base-icon :size="size" :icon="icon" :type="type" :icons="icons" />
:width="size"
:height="size"
fill="none"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path :d="icons[`${icon}-${type}`]" fill="currentColor" />
</svg>
</template> </template>
<script> <script>
import BaseIcon from './Icon';
import icons from './dashboard-icons.json'; import icons from './dashboard-icons.json';
export default { export default {
name: 'FluentIcon', name: 'FluentIcon',
components: {
BaseIcon,
},
props: { props: {
icon: { icon: {
type: String, type: String,

View file

@ -0,0 +1,49 @@
<template>
<svg
:width="size"
:height="size"
fill="none"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path
v-for="source in pathSource"
:key="source"
:d="source"
fill="currentColor"
/>
</svg>
</template>
<script>
export default {
props: {
icon: {
type: String,
required: true,
},
icons: {
type: Object,
required: true,
},
size: {
type: [String, Number],
default: '20',
},
type: {
type: String,
default: 'outline',
},
},
computed: {
pathSource() {
// To support icons with multiple paths
const path = this.icons[`${this.icon}-${this.type}`];
if (path.constructor === Array) {
return path;
}
return [path];
},
},
};
</script>

View file

@ -1,27 +1,23 @@
<template> <template>
<svg <base-icon :size="size" :icon="icon" :type="type" :icons="icons" />
:width="size"
:height="size"
fill="none"
viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"
>
<path :d="icons[`${icon}-${type}`]" fill="currentColor" />
</svg>
</template> </template>
<script> <script>
import BaseIcon from './Icon';
import icons from './icons.json'; import icons from './icons.json';
export default { export default {
name: 'FluentIcon', name: 'FluentIcon',
components: {
BaseIcon,
},
props: { props: {
icon: { icon: {
type: String, type: String,
required: true, required: true,
}, },
size: { size: {
type: String, type: [String, Number],
default: '20px', default: '20',
}, },
type: { type: {
type: String, type: String,