1.1.1 • Published 4 years ago

vue-timeline-pro v1.1.1

Weekly downloads
18
License
-
Repository
github
Last release
4 years ago

vue-timeline-pro

Simple, highly customizable, and no dependency timeline.

Install

npm install vue-timeline-pro --save

How to use

Include plugin in your main.js file.

import VTimelinePro from 'vue-timeline-pro';

Vue.use(VTimelinePro);

/*
By default, the plugin will use "VueTimelinePro" name for the component.

If you need to change it, you can do so by providing "componentName" param.
 
Example:
 
Vue.use(VTimelinePro, { componentName: "foo-timeline-pro" })
...
<foo-timeline-pro updates="updates"></foo-timeline-pro>

*/

Create Basic Timeline

<VueTimelinePro updates="updates"/>
data() {
    return {
        updates: [
            {
                icon: '/awesomeimage.png',
                title: 'My awesome title',
                description: 'Lorem ...',
                date: new Date(),
                url: 'https://wakeupyouneedtomakemoney...'   
            }
        ]
    }
}

Create a editable timeline

<VueTimelinePro updates="updates" :readOnly="false"/>
data() {
    return {
        updates: [...],
    }
}

Listen when is added an item

<VueTimelinePro updates="updates" :readOnly="false" @onAddItem="onAddItem"/>
methods: {
    onAddItem(item, index) {
        console.log(item, index);
    }
}

Listen when is removed an item

<VueTimelinePro updates="updates" :readOnly="false" @onRemoveItem="onRemoveItem"/>
methods: {
    onRemoveItem(item, index) {
        console.log(item, index);
    }
}

Listen when is updated an item

<VueTimelinePro updates="updates" :readOnly="false" @onUpdateItem="onUpdateItem"/>
methods: {
    onUpdateItem(item) {
        console.log(item);
    }
}

Format the date displayed

<VueTimelinePro updates="updates" :formatDate="formatDate"/>
// use your favorite library or simply vanilla
import spacetime from 'spacetime';

...
methods: {
    formatDate(date) {
        return spacetime(date).format('nice');
    }
}

Add custom props to link

<VueTimelinePro updates="updates" :linkProps="{'target': '_blank'}"/>

Redefine update model fields

<VueTimelinePro :updates="updates" :modelItem="updateModel" />
data() {
    return {
        ...
        updateModel: {
          title: 'fooTitle',
          description: 'fooDescription',
          date: 'fooDate',
          icon: 'fooIcon',
          url: 'fooUrl'
        }
    }
},
methods: {
    onAddUpdate(item) {
        console.log(item);
        /*  fooDate: (...),
            fooDescription: (...)
            fooIcon: (...)
            fooTitle: (...)
            fooUrl: (...)
        */
    },
}

Props

NameTypeRequiredDefaultDescription
updatesArrayfalse[]List of updates.
readOnlyBooleanfalsetrueIs possible edit the list or not?
suggestiveTextStringfalseAdd a new updateText used by first plus.
linkPropsObjectfalse{}Props assigned to link to each update.
acceptButtonTextStringfalse'Accept'Text for accept button when is edited the update.
cancelButtonTextstringfalse'Cancel'Text for cancel button when is edited the update.
formatDateFuncfalse() => {}...Function used to format a date object. Default format en-US, example: December 05, 2019.
imageListArrayfalse[]List of image urls, used to represent an update.
modelItemObjectfalsetitle:'title', description:'description', date:'date', icon:'icon', url:'url'}Update model, will be used to map values of each update.

Events @

  • onAddItem(updateItem) - Event when is added an new update.
    • updateItem: Object added.
  • onUpdateItem(updateItem, index) - Trigger when is updated an update.
    • updateItem: Object updated.
    • index: Index of object updated.
  • onRemoveItem(removedUpdateItem, index) - Trigger when is removed an update.
    • removedUpdateItem: Object removed.
    • index: Index of object removed.