docs(Icon): support copy icon name (#4409)

This commit is contained in:
neverland 2019-09-10 11:54:37 +08:00 committed by GitHub
parent 3fd40d7929
commit cb92d0a6a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,36 +1,20 @@
<template>
<demo-section>
<van-tabs
v-model="tab"
sticky
:color="BLUE"
>
<van-tabs v-model="tab" sticky :color="BLUE">
<van-tab title="基础图标">
<van-col
v-for="icon in icons.basic"
:key="icon"
span="6"
>
<van-col v-for="icon in icons.basic" :key="icon" span="6" @click="copy(icon)">
<van-icon :name="icon" />
<span>{{ icon }}</span>
</van-col>
</van-tab>
<van-tab title="线框风格">
<van-col
v-for="icon in icons.outline"
:key="icon"
span="6"
>
<van-col v-for="icon in icons.outline" :key="icon" span="6" @click="copy(icon)">
<van-icon :name="icon" />
<span>{{ icon }}</span>
</van-col>
</van-tab>
<van-tab title="实底风格">
<van-col
v-for="icon in icons.filled"
:key="icon"
span="6"
>
<van-col v-for="icon in icons.filled" :key="icon" span="6" @click="copy(icon)">
<van-icon :name="icon" />
<span>{{ icon }}</span>
</van-col>
@ -43,17 +27,43 @@
import icons from '@vant/icons';
import { BLUE } from '../../utils/constant';
// from https://30secondsofcode.org
function copyToClipboard(str) {
const el = document.createElement('textarea');
el.value = str;
el.setAttribute('readonly', '');
el.style.position = 'absolute';
el.style.left = '-9999px';
document.body.appendChild(el);
const selected =
document.getSelection().rangeCount > 0
? document.getSelection().getRangeAt(0)
: false;
el.select();
document.execCommand('copy');
document.body.removeChild(el);
if (selected) {
document.getSelection().removeAllRanges();
document.getSelection().addRange(selected);
}
}
export default {
i18n: {
'zh-CN': {
title: '图标列表',
info: '显示徽标',
basic: '基础图标'
basic: '基础图标',
copied: '复制成功'
},
'en-US': {
title: 'Icon List',
info: 'Show Info',
basic: 'Basic Icon'
basic: 'Basic Icon',
copied: 'Copied'
}
},
@ -63,6 +73,20 @@ export default {
return {
tab: 0
};
},
methods: {
copy(icon) {
const tag = `<van-icon name="${icon}" />`;
copyToClipboard(tag);
this.$notify({
type: 'success',
duration: 1500,
className: 'demo-icon-notify',
message: `${this.$t('copied')}${tag}`
});
}
}
};
</script>
@ -79,6 +103,10 @@ export default {
padding-top: 10px;
}
&-notify {
font-size: 13px;
}
.van-col {
display: inline-block;
float: none;
@ -93,6 +121,10 @@ export default {
font-size: 12px;
line-height: 18px;
}
&:active {
background-color: @active-color;
}
}
.van-icon {