All Projects → David-Desmaisons → Vue.isotope

David-Desmaisons / Vue.isotope

Licence: mit
📱 Vue component for isotope filter & sort magical layouts

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Vue.isotope

Croppr.js
A vanilla JavaScript image cropper that's lightweight, awesome, and has absolutely zero dependencies.
Stars: ✭ 294 (-9.82%)
Mutual labels:  component
Yaml
The Yaml component loads and dumps YAML files.
Stars: ✭ 3,359 (+930.37%)
Mutual labels:  component
Vue Picture Swipe
🖼 Vue Picture Swipe Gallery (a gallery of image with thumbnails, lazy-load and swipe) backed by photoswipe
Stars: ✭ 322 (-1.23%)
Mutual labels:  component
Paper Onboarding
PaperOnboarding is a material design UI slider. Swift UI library by @Ramotion
Stars: ✭ 3,147 (+865.34%)
Mutual labels:  component
React Search Input
🔍 Simple react.js component for a search input, providing a filter function.
Stars: ✭ 300 (-7.98%)
Mutual labels:  component
React Querybuilder
A QueryBuilder component for React
Stars: ✭ 315 (-3.37%)
Mutual labels:  component
Dotenv
Symfony Dotenv parses .env files to make environment variables stored in them accessible via getenv(), $_ENV, or $_SERVER.
Stars: ✭ 3,268 (+902.45%)
Mutual labels:  component
Dom Crawler
The DomCrawler component eases DOM navigation for HTML and XML documents.
Stars: ✭ 3,499 (+973.31%)
Mutual labels:  component
Fakescroll
vanilla-js lightweight custom HTML scrollbar
Stars: ✭ 309 (-5.21%)
Mutual labels:  component
React Component Library
A project skeleton to get your very own React Component Library up and running using Rollup, Typescript, SASS + Storybook
Stars: ✭ 313 (-3.99%)
Mutual labels:  component
Lock
Creates and manages locks, a mechanism to provide exclusive access to a shared resource.
Stars: ✭ 299 (-8.28%)
Mutual labels:  component
Aframe Environment Component
🌄 Infinite background environments for A-Frame in a line of HTML.
Stars: ✭ 300 (-7.98%)
Mutual labels:  component
Circle Menu
⭕️ CircleMenu is a simple, elegant UI menu with a circular layout and material design animations. Swift UI library made by @Ramotion
Stars: ✭ 3,306 (+914.11%)
Mutual labels:  component
React Tabulator
React Tabulator is based on tabulator - a JS table library with many advanced features.
Stars: ✭ 295 (-9.51%)
Mutual labels:  component
Ngx Materialize
Angular wrap around Materialize library
Stars: ✭ 322 (-1.23%)
Mutual labels:  component
Fmxcomponents
Firemonkey Opensource Components
Stars: ✭ 288 (-11.66%)
Mutual labels:  component
Ngx Treeview
An Angular treeview component with checkbox
Stars: ✭ 312 (-4.29%)
Mutual labels:  component
Synedit
SynEdit main project
Stars: ✭ 324 (-0.61%)
Mutual labels:  component
Polyfill Php70
This component provides features unavailable in releases prior to PHP 7.0.
Stars: ✭ 3,270 (+903.07%)
Mutual labels:  component
Security Acl
Symfony Security ACL Component
Stars: ✭ 321 (-1.53%)
Mutual labels:  component

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].