Giter VIP home page Giter VIP logo

vue.isotope2's Introduction

Vue.Isotope2

Fork of Vue.Isotope by David Desmaisons.

This repository is a modernized build, it removes the lodash dependency and has some bug fixes. All credit about everything else to the original author.

Vue component (Vue.js 2.0) or directive (Vue.js 1.0) allowing isotope layout including filtering and sorting.

Motivation

Integrate Vue with isotope filter & sort magical layouts.

Demo

demo gif

Basic
Complete

Isotope elements: demo gif

fiddle

Features

  • Full support of Isotope options via options parameters
  • Reactivity: component react in case in case of property impacting sorting or filtering
  • Provides filter and sort based on ViewModel information

Usage

For Vue.js 2.0

Use isotope component:

<isotope :options='getOptions()' :list="list" @filter="filterOption=arguments[0]" @sort="sortOption=arguments[0]">
  <div v-for="element in list" :key="element.id">
    {{element.name}}
  </div>
</isotope>

Important: elements inside the v-for loop should have a key prop set.

Props

itemSelector

Type: String
Required: false
Default: "item"

Class to be applied to the isotope elements. Similar as isotope itemSelector but without the starting "." This class will be applied automatically by the isotope component on the children elements.

list

Type: Array
Required: true

Array to be synchronized with drag-and-drop. Typically same array as referenced by inner element v-for directive.

options

Type: Object
Required: true

  • All value are similar as isotope options expect for:
  • Filter definition: Implement filter by passing an option with a getFilterData object that exposes filter option. Vue.Isotope2 will call these functions with the element to filter as parameter and this set as the underlying vm.
  getFilterData:{
    isEven: function(itemElem){
      return itemElem.id % 2 === 0;
    },
    isOdd: function(itemElem){
      return itemElem.id % 2 !== 0;
    },
    filterByText: function(itemElem){
      return itemElem.name.toLowerCase().includes(this.filterText.toLowerCase());
    }
  }
  • Sort definition: Implement sort by passing as option a getSortData object that exposes filter option. Vue.Isotope2 will call these functions with the element to filter as parameter and this set as the underlying vm. If a string is passed instead of a function, sorting will use the corresponding property.
  getSortData: {
    id: "id",
    name: function(itemElem){
      return itemElem.name.toLowerCase();     
    }
  }

Events

filter, sort, layout
Send when filter, sort and layout respectively are called on the isotope element with the corresponding String parameter.

shuffle
Send when shuffle is called on the isotope element.

arrange
Send when arrange is called on the isotope element with the corresponding Object parameter.

Methods

sort (name)
Sort the isotope component with the corresponding String parameter.

filter (name)
Sort the isotope component with the corresponding String parameter.

layout (option)
Change the layout of the isotope component using the option as layout name if option is String or with option object if option is Object.

arrange (option)
Call arrange on the isotope component with the corresponding Object parameter.

unfilter ()
Reset filter on the isotope component.

shuffle ()
Shuffle the isotope component.

Working with images

Unloaded images can throw off Isotope layouts and cause item elements to overlap. Use vue.imagesLoaded to solve this problem.

Gotchas

  • Elements inside the v-for loop should have a key prop set otherwise they will not be rendered.

For Vue.js 1.0

See here

Installation

  • Available through:
 npm install vueisotope
 Bower install vueisotope
  • For Modules

    // ES6
    import isotope from 'vueisotope'
    ...
    export default {
          components: {
            isotope,
          }
          ...
    
    // ES5
    var isotope = require('vueisotope')
  • For <script> Include

    Just include vue.isotope.js after Vue and lodash(>=4).

  • Webpack and Browserify usage:

    Be aware of isotope recommendation for usage with Webpack and Browserify

License

MIT

vue.isotope2's People

Contributors

david-desmaisons avatar hctpbl avatar mintyorb avatar johnmans avatar edwardkenfox avatar genichiro avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.