0.1.4-1 • Published 5 years ago

vue-event-card v0.1.4-1

Weekly downloads
5
License
MIT
Repository
github
Last release
5 years ago

A Vue.js interactive card design component to show essentials and description for an event.


The Vue Event Card is a fluid and modern design to showcase your events in a clean and interactive way, and handling user actions. Completely responsive and easy to use, making sure both desgin and setup are minimal. Created for Vue.js by Dhruv Misra

Live Demo

A live demo can be found here.

Installation

npm i --save vue-event-card

This package in also dependent on the vue-router

npm i --save vue-router or vue add router

Global Usage

Register the component globally using the Vue.use() method.

// main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
//Import the plugin
import CardGrid from 'vue-event-card'

//Use the plugin
Vue.use(CardGrid);

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

Local Usage

Import the component and register it locally in the components option

<script>
  import CardGrid from 'vue-event-card'

  export default {
    components: {
      CardGrid
    }
  }
</script>

Once registered, you can use the component by passing an array of events:

<CardGrid :events="events" buttonText="Know More" hideTitle />

Props

PropTypeDefaultDescription
eventsArray (Required)-The array of event objects
buttonTextString"Register"The text which appears inside the button
hideTitleBooleanfalseHide the title on collapsed card (Will show in the expanded state)
hideButtonBooleanfalseHide button in the expanded state

Emits

Emitted ActionDescription
buttonClickedFired when the user clicks the button. Used to handle the click event.

Events Array

The events array should be an array of objects. Individual objects should contain the following fields:

events: [
  {
    name: "Event name",
    date: "October 11, 2019",
    description: "Blah blah blah blah",
    html: '<p>This is some valid <br> HTML</p>',
    outerImage: "assets/images/event.jpg",
    innerImage: "https://i.imgflip.com/3cjfgr.jpg",
    details: {
      'Team Size': '2',
      'Time': '10AM - 1PM'
    }
  },
  ...
]

Event Object

NameTypeDescription
nameString (Required)Name of the event (Should be unique)
dateStringDate of the event
descriptionString...you know.
htmlStringValid HTML code to render inside the card.
outerImageString (Image path)The image appearing in the card in it's collapsed state. Also the image in the background in expanded state.
innerImageString (Image path)The image appearing inside the card in expanded state.
detailsObjectKey-value pairs to show essential details on hovering the card.

Things to keep in mind

Image paths

Image paths can be defined for images in the project relative to src folder

outerImage: 'assets/images/marvel.jpg'  //converts to: /src/assets/images/marvel.jpg

How these paths works?

The given image path is prefixed with @/ and then the image is imported using require() to get the webpack relative path.

Image paths can also be a URL

outerImage: 'https://i.imgflip.com/3cjfgr.jpg'  //should start with https:// or http://

Details Object

This object should contain key-value pairs for the information to be shown on hover

details: {
  'Field A': 'Value A',
  'Field B': 'Value B',
  'Field C': 'Value C',
  ...
}

This will have this affect:

Hover effect

Date Field

Preferred format for the date string:

[Month] [Date], [Year]

The comma (,) is important as the component takes the first part of the string before comma to display. I am planning to switch to UNIX timestamps or maybe another slight animation for the year.