A highly customizable Vue.js component for sharing links on social networks
vue-share-it
A Vue.js component for sharing links to social networks.
Features
- Easy install
- Highly customizable
- Extensive documentation & examples
- Developer support
- SEO friendly
Installation
# Yarn
yarn add vue-share-it
# NPM
npm install vue-share-it --save
Usage
Browserify / Webpack
import shareIt from 'vue-share-it';
Vue.use(shareIt);
HTML
<script src="https://unpkg.com/vue-share-it@x.x.x/dist/vue-share-it.js"></script>
Supported social-media platforms
Platform | Value |
---|---|
API
Props
Prop | Data type | Default | Description |
---|---|---|---|
text | String | '' | Caption |
url | String | '' | URL to share |
width | Number | 600 | Width of the share window |
height | Number | 600 | Height of the share window |
dense | Boolean | false | Dense button styling |
dark | Boolean | false | Dark button styling |
targets | Array | [] | Specify social media targets, defaults to all available targets |
icons | Boolean | false | Use icons as buttons |
outline | Boolean | false | Outline button styling |
round | Boolean | false | Round button styling for icons |
iconSize | String | lg | Specify icon size. See size chart below |
shareConfig | Object | { linkedin: {}, twitter: {}, facebook: {}, whatsapp: {}, reddit: {}, } |
Advanced configuration for target specific styling |
Events
Name | Description | Value |
---|---|---|
clicked | Event that is emitted when a share button is clicked | Returns social media platform which was clicked. E.g. ["twitter"] |
Slots
Name | Description |
---|---|
${platform}-icon |
Custom icon for platform |
${platform}-label |
Custom label for platform |
Examples
Using vue-share-it component
Default
<share-it />
Global configs
<share-it text="This is sample text" url="https://www.google.com" :height="600" :width="600" />
Targets
<share-it :targets="['twitter', 'facebook']" />
Dark
<share-it dark />
Dense
<share-it dense />
Outlined
<share-it outline />
Button configs
const share = {
twitter: {
size: "2x",
label: "Custom label!",
round: true,
},
linkedin: {
size: "2x",
color: "#333",
backgroundColor: "yellow",
},
facebook: {
size: "3x",
dark: true
},
whatsapp: {
size: "2x",
dense: true,
outline: true,
color: 'green',
},
}
<share-it :shareConfig="share" />
Icons
<share-it icons />
Outlined icons
<share-it icons outline />
Rounded icons
<share-it icons outline round />
Icon configs
const iconConfig ={
twitter: {
icon: true,
size: "sm",
color: "#333",
round: true,
backgroundColor: 'yellow'
},
linkedin: {
icon: true,
size: "lg",
outline: true,
round: true,
},
facebook: {
icon: true,
size: "2x",
outline: true,
round: true
},
whatsapp: {
icon: true,
size: "3x",
outline: true,
round: true
},
reddit: {
icon: true,
size: "4x",
outline: true,
round: true
},
}
<share-it :shareConfig="iconConfig" />
Using slots
<share-it>
<template v-slot:twitter-icon>
<v-icon>mdi-twitter</v-icon>
</template>
<template v-slot:twitter-label>
<em>Tweet it!</em>
</template>
<template v-slot:whatsapp-icon>
<v-icon>mdi-whatsapp</v-icon>
</template>
<template v-slot:whatsapp-label>
<em>Share on Whatsapp</em>
</template>
</share-it>
Size chart
Code | Size |
---|---|
xs | .75em |
sm | .875em |
lg | 1.33em |
2x | 2em |
3x | 3em |
4x | 4em |
5x | 5em |
6x | 6em |
7x | 7em |
8x | 8em |
9x | 9em |
10x | 10em |