Skip to content

freakingeek/vue-share-modal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9bc3770 Β· Mar 20, 2024

History

27 Commits
Mar 23, 2022
Mar 23, 2022
Mar 23, 2022
Mar 23, 2022
Mar 23, 2022
Mar 23, 2022
Mar 18, 2024
Mar 23, 2022
Mar 27, 2022
Mar 23, 2022
Mar 23, 2022
Mar 23, 2022
Mar 23, 2022

Repository files navigation

vue-share-modal

A pure, lightweight, and beautiful share modal for Vue 3
β€Œ

screenshot

β€Œ

πŸͺ Live version

You can see the live version here:
https://freakingeek.github.io/vue-share-modal/

β€Œ

πŸ’Ύ Install

$ yarn add vue-share-modal
# npm install vue-share-modal

Or you can use any package manager you want

β€Œ

πŸš€ Usage

You should import share-modal and share-module components from the vue-share-modal package and use them like this.
β€Œ

<template>
  <share-modal
    :show="showModal"
    @update:show="showModal = false"
    link="https://www.figma.com/community/file/999287868143091993"
  >
    <template v-for="(m, key) in modules" :key="key">
      <share-module tag="a" href="#" :name="m.name">
        <component :is="m.component" />
      </share-module>
    </template>
  </share-modal>
</template>

<script>
import ShareModal from "vue-share-modal";
import ShareModule from "vue-share-modal/src/components/share-module.vue";
import { ChatCircle, Instagram, Twitch, At, Share, Twitter } from "@salmon-ui/icons";

export default {
  name: "MyComponent",

  components: {
    At,
    Share,
    Twitch,
    Twitter,
    Instagram,
    ChatCircle,
    ShareModal,
    ShareModule,
  },

  data() {
    return {
      showModal: true,
    };
  },

  computed: {
    modules() {
      return [
        { name: "Chat", component: ChatCircle },
        { name: "Instagram", component: Instagram },
        { name: "Twitter", component: Twitter },
        { name: "Twitch", component: Twitch },
        { name: "E-mail", component: At },
        { name: "More", component: Share },
      ];
    },
  },
};
</script>

β€Œ

NOTE: vue-share-modal does not contain any icons by default. So we use @salmon-ui/icons package for example here

β€Œ

Options Or Props ( share-modal )

show prop is used for showing modal with animation
@update:show event is used to update show value

<share-modal
  :show="showModal"
  @update:show="showModal = false"
/>

β€Œ

link prop is used for showing link in the footer

<share-modal
  link="https://www.figma.com/community/file/999287868143091993"
/>

β€Œ

mode prop is used for changing modal style ( normal / outline )

<share-modal
  mode="outline"
/>

β€Œ

direction prop is used for changing modal direction ( ltr / rtl )

<share-modal
  direction="rtl"
/>

β€Œ

title prop is used for changing modal title

<share-modal
  title="Share with"
/>

β€Œ

footerHint prop is used for changing the footer text

<share-modal
  footerHint="Or share with link"
/>

β€Œ

variables prop is used for changing the modal CSS variables ( like font-family and colors )

<share-modal
  :variables="{
    fontFamily: 'Inter, sans-serif',
    red: '#ee4d4d',
    white: '#fefefe',
    primary: '#ee6c4d',
    primaryLight: '#ee6c4d08',
    secondary: '#3d5a80',
    secondaryLight: '#3d5a8096',
  }"
/>

β€Œ

Options Or Props ( share-module )

tag generated tag for share-module component ( default: span )

<share-module
  tag="a"
/>

β€Œ

name name of the module

<share-module
  tag="a"
  name="Pinterest"
/>

β€Œ

iconClassName you can pass this prop to use font icons

<share-module
  tag="a"
  name="Twitter"
  iconClassName="bi bi-twitter"
/>

β€Œ

mode you can pass this prop to overwrite share-modal mode prop

<share-modal mode="outline">
  <share-module
    tag="a"
    mode="normal"
  />
</share-modal>

β€Œ

✏ Todo

  • Support for different themes

    β€Œ

πŸ“ License

This project is under ISC license