diff --git a/example/docs/zh-CN/components/animation.md b/example/docs/zh-CN/components/animation.md
index 6483a4c9..996bce7f 100644
--- a/example/docs/zh-CN/components/animation.md
+++ b/example/docs/zh-CN/components/animation.md
@@ -71,6 +71,113 @@ export default {
}
}
+
:::
diff --git a/example/docs/zh-CN/components/backtop.md b/example/docs/zh-CN/components/backtop.md
index f74b53d3..fe34cbe1 100644
--- a/example/docs/zh-CN/components/backtop.md
+++ b/example/docs/zh-CN/components/backtop.md
@@ -11,6 +11,9 @@
+
+
:::
:::title 自定义
@@ -35,7 +38,7 @@
+
:::
@@ -136,6 +149,19 @@ export default {
}
}
+
:::
diff --git a/example/docs/zh-CN/components/layout.md b/example/docs/zh-CN/components/layout.md
index 5544d6fa..6618c897 100644
--- a/example/docs/zh-CN/components/layout.md
+++ b/example/docs/zh-CN/components/layout.md
@@ -7,7 +7,7 @@
::: demo
-
+
header
content
footer
@@ -27,21 +27,21 @@ export default {
:::
@@ -85,7 +108,7 @@ export default {
::: demo
-
+
header
side
@@ -105,6 +128,29 @@ export default {
}
}
+
:::
@@ -114,7 +160,7 @@ export default {
::: demo
-
+
side
header
@@ -123,7 +169,7 @@ export default {
-
+
header
body
@@ -132,7 +178,7 @@ export default {
side
-
+
Header
@@ -143,7 +189,7 @@ export default {
Footer
-
+
Header
@@ -166,6 +212,29 @@ export default {
}
}
+
:::
diff --git a/example/docs/zh-CN/components/load.md b/example/docs/zh-CN/components/load.md
index d2ec6a65..5f935de3 100644
--- a/example/docs/zh-CN/components/load.md
+++ b/example/docs/zh-CN/components/load.md
@@ -16,7 +16,7 @@
@@ -61,7 +61,7 @@ export default {
return {
visible2
};
- },
+ }
};
@@ -94,7 +94,7 @@ export default {
return {
visible3
};
- },
+ }
};
@@ -127,7 +127,7 @@ export default {
return {
visible4
};
- },
+ }
};
@@ -160,7 +160,7 @@ export default {
return {
visible8
};
- },
+ }
};
@@ -193,7 +193,7 @@ export default {
type5,
visible5
};
- },
+ }
};
@@ -231,7 +231,7 @@ export default {
btn6,
visible6
};
- },
+ }
};
@@ -264,7 +264,7 @@ export default {
return {
visible7
};
- },
+ }
};
@@ -283,7 +283,7 @@ export default {
diff --git a/example/docs/zh-CN/components/msg.md b/example/docs/zh-CN/components/msg.md
index 5702b368..2f97d877 100644
--- a/example/docs/zh-CN/components/msg.md
+++ b/example/docs/zh-CN/components/msg.md
@@ -11,7 +11,7 @@
:::
@@ -44,11 +39,6 @@ export default {
:::
@@ -70,11 +60,6 @@ export default {
:::
@@ -100,11 +85,6 @@ export default {
:::
diff --git a/example/src/components/LayCode.vue b/example/src/components/LayCode.vue
index a1819b7b..e3ce7c16 100644
--- a/example/src/components/LayCode.vue
+++ b/example/src/components/LayCode.vue
@@ -12,8 +12,9 @@
-
-
+
+
+
@@ -22,6 +23,8 @@
import { layer } from '@layui/layer-vue'
import { onMounted, onUnmounted, ref, watch } from 'vue'
+import { usePlayGround } from '../plugin/usePlayground'
+
const meta = ref({} as HTMLElement)
const isFixContorl = ref(false)
const codeAreaHeight = ref(0)
@@ -32,6 +35,15 @@ const toggle = function () {
show.value = !show.value
}
+const onPlayground = function(){
+ const foundCodes = meta.value.getElementsByClassName('language-html')
+ const foundCode = foundCodes[0];
+ const text = foundCode.textContent || "";
+
+ const { link } = usePlayGround(text)
+ window.open(link)
+}
+
const copy = function () {
const foundCodes = meta.value.getElementsByClassName('language-html')
const foundCode = foundCodes[0];
@@ -186,4 +198,7 @@ function handleScroll() {
padding-left: 10px;
padding-right: 10px;
}
+.btn:hover::before {
+ color: #5FB878;
+}
\ No newline at end of file
diff --git a/example/src/plugin/usePlayground.ts b/example/src/plugin/usePlayground.ts
new file mode 100644
index 00000000..c69669db
--- /dev/null
+++ b/example/src/plugin/usePlayground.ts
@@ -0,0 +1,85 @@
+const scriptRe = /`
+ )
+ } else {
+ code = `${decodeCode}
+
+`
+ }
+
+ // 去除 export default,保留其中的内容
+ const exportDefaultResult = code.match(exportDefaultRe)
+ if(exportDefaultResult){
+ code = code.replace(exportDefaultRe,trim(trimBr(exportDefaultResult[1]+``)))
+ // console.log("export",code);
+ }
+ // 去除 setup 函数,保留其中的内容
+ const setupResult = code.match(setupRe)
+ if(setupResult){
+ code = code.replace(setupRe,trimBr(setupResult[1]))
+ // console.log("setup",code);
+ }
+ // TODO 这是临时方案,需要在 playground 中支持 @layui/layer-vue
+ // 替换 layer 引入语句
+ if(code.match(layerRe)){
+ code = code.replace(layerRe,`import { layer } from "@layui/layui-vue"`)
+ // console.log("layer",code);
+ }
+ const originCode = {
+ [MAIN_FILE_NAME]: code,
+ }
+
+ const encoded = utoa(JSON.stringify(originCode))
+ const link = `https://layui-vue.gitee.io/layui-vue-playground/#${encoded}`
+ return {
+ encoded,
+ link,
+ }
+}
+
+//编码
+function utoa(data: string): string {
+ return btoa(unescape(encodeURIComponent(data)));
+}
+
+// 去除字符串两端的空白行
+function trimBr(str: string): string{
+ return str.replace(/(^[\r\n]*)|([\r\n]*$)/,"")
+}
+
+// 去除字符串两端的空格
+function trim(str: string): string {
+return str.replace(/(^\s*)|(\s*$)/g, "");
+}
\ No newline at end of file
diff --git a/src/component/button/index.vue b/src/component/button/index.vue
index eda5175f..f2ae0bee 100644
--- a/src/component/button/index.vue
+++ b/src/component/button/index.vue
@@ -17,6 +17,7 @@ export interface LayButtonProps {
disabled?: boolean | string;
loading?: boolean | string;
nativeType?: "button" | "submit" | "reset";
+ icon?: string;
}
const props = withDefaults(defineProps(), {
@@ -25,6 +26,7 @@ const props = withDefaults(defineProps(), {
loading: false,
disabled: false,
nativeType: "button",
+ icon: "",
});
const emit = defineEmits(["click"]);
@@ -58,6 +60,7 @@ const classes = computed(() => {
:type="nativeType"
@click="onClick"
>
+