Browse Source

fix: vite@2.7.0-beta.8 build incompatible template

xiaoxian521 3 years ago
parent
commit
e33bdb52f3
1 changed files with 58 additions and 7 deletions
  1. 58 7
      src/components/ReIcon/index.ts

+ 58 - 7
src/components/ReIcon/index.ts

@@ -1,4 +1,4 @@
-import { App, defineComponent } from "vue";
+import { h, App, defineComponent } from "vue";
 import icon from "./src/Icon.vue";
 import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
 import iconifyIconOffline from "./src/iconifyIconOffline";
@@ -44,11 +44,22 @@ export function findIcon(icon: String, type = "EL", property?: string) {
   if (type === "FA") {
     return defineComponent({
       name: "FaIcon",
-      setup() {
+      data() {
         return { icon, property };
       },
       components: { FontAwesomeIcon },
-      template: `<font-awesome-icon :icon="icon" v-bind:[property]="true" />`
+      render() {
+        return h(
+          FontAwesomeIcon,
+          {
+            icon: `${this.icon}`,
+            [property]: true
+          },
+          {
+            default: () => []
+          }
+        );
+      }
     });
   } else if (type === "fa") {
     return defineComponent({
@@ -56,7 +67,17 @@ export function findIcon(icon: String, type = "EL", property?: string) {
       data() {
         return { icon: `fa ${icon}` };
       },
-      template: `<i :class="icon" />`
+      render() {
+        return h(
+          "i",
+          {
+            class: `${this.icon}`
+          },
+          {
+            default: () => []
+          }
+        );
+      }
     });
   } else if (type === "IF") {
     return defineComponent({
@@ -64,7 +85,17 @@ export function findIcon(icon: String, type = "EL", property?: string) {
       data() {
         return { icon: `iconfont ${icon}` };
       },
-      template: `<i :class="icon" />`
+      render() {
+        return h(
+          "i",
+          {
+            class: `${this.icon}`
+          },
+          {
+            default: () => []
+          }
+        );
+      }
     });
   } else if (type === "RI") {
     return defineComponent({
@@ -72,7 +103,17 @@ export function findIcon(icon: String, type = "EL", property?: string) {
       data() {
         return { icon: `ri-${icon}` };
       },
-      template: `<i :class="icon" />`
+      render() {
+        return h(
+          "i",
+          {
+            class: `${this.icon}`
+          },
+          {
+            default: () => []
+          }
+        );
+      }
     });
   } else if (type === "EL") {
     return defineComponent({
@@ -80,7 +121,17 @@ export function findIcon(icon: String, type = "EL", property?: string) {
       data() {
         return { icon };
       },
-      template: `<IconifyIconOffline :icon="icon" />`
+      render() {
+        return h(
+          IconifyIconOffline,
+          {
+            icon: `${this.icon}`
+          },
+          {
+            default: () => []
+          }
+        );
+      }
     });
   } else if (type === "SVG") {
     return icon;