• Stars
    star
    345
  • Rank 122,750 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ“ฑ Vue component for isotope filter & sort magical layouts

Vue.Isotope

GitHub open issues GitHub closed issues Npm download Npm version Package Quality vue2 MIT License

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.Isotope 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.Isotope 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.

  • Using Webpack or Browersify requires extra configuration, see here

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

More Repositories

1

Vue.D3.tree

Vue component to display tree based on D3.js layout.
Vue
868
star
2

draggable-example

vue.draggable example
Vue
510
star
3

Vue.resize

Vue directive to detect resize events with deboucing and throttling capacity.
JavaScript
327
star
4

RateLimiter

C# rate limiting utility
C#
278
star
5

vue-plotly

๐Ÿ“ˆ vue wrapper for plotly.js
JavaScript
254
star
6

Vue.ImagesLoaded

Vue.js 2.0 directive to detect images loading
JavaScript
144
star
7

vue-cli-plugin-component

๐Ÿ› ๏ธ vue-cli 3 plugin to create component
JavaScript
88
star
8

Vue.D3.sunburst

Vue sunburst component based on D3.js
Vue
62
star
9

ComponentFixture

๐Ÿ› ๏ธInteractive sandox playground for vue components
Vue
51
star
10

Vue-Semantic-Modal

Vue modal component for Semantic-Ui no jquery
JavaScript
45
star
11

DiscogsClient

Discogs API C# Client
C#
41
star
12

CodeDependencyScanner

.Net assembly code depency inspector
JavaScript
37
star
13

ComposableAsync

Create, compose and inject asynchronous behaviors in .Net Framework and .Net Core.
C#
31
star
14

MVVM-for-awesomium

MVVM binding framework between C# ViewModel and awesomium HTLM-javascript view
C#
16
star
15

RestSharpHelper

Small library helper for RestSharp inclusing rate limit, OAuth, helper for async download among others
C#
7
star
16

Music.Cover.Finder

C# application that display music cover art
C#
7
star
17

MusicCollection

Music Library and Player
C#
6
star
18

Retlang

C#
5
star
19

vue-ajax-handler

Ultra minimal generic vue component to deal with ajax loading
JavaScript
2
star
20

datascience_detroit_bligth

Predicting Detroit Blight using Machine Learning
Jupyter Notebook
2
star
21

David-Desmaisons

1
star
22

tape-tests

Minimal repository to show problem with esm modules and windows
JavaScript
1
star
23

ScreenSaver

JavaScript
1
star
24

MovieExplorer

C#
1
star
25

ProxyDebugLogger

Create proxy that logs method call. For debug purpose.
JavaScript
1
star
26

MoreCollection

C# collection framework
C#
1
star