I've had zero luck with getting the Metafizzy Isotope plugin working. The Network tab shows that it's not coming through.
I installed isotope-layout
and required it in my main-file.js
, but the code fails to recognize $(container).isotope
.
The part that's blacked out is the actual name of main-file.js
.
I'm also working with webpack and have wondered if it's part of the problem, but I can't say for sure.
index.js:
// css imports here
import "jquery/dist/jquery.min.js";
import "bootstrap/dist/js/bootstrap.bundle.min.js";
import mainfile from "./SiteAssets/scripts/main-file.js";
main-file.js:
import axios from "axios";
import "@babel/polyfill/dist/polyfill.js";
var isotope = require('isotope-layout'); // Seeing "'isotope' is declared but its value is never read
// var isotope = require('imports-loader?$=jquery!isotope-layout/dist/isotope.pkgd');
// import isotope from "isotope-layout";
let myClass,
names,
_token;
export default class {
constructor() {
myClass = this;
myClass.setTokenVar();
// a few irrelevant things here
myClass.loadSpecFilter();
}
loadSpecFilter() {
var $grid = $('.keyContactDiv').isotope({
itemSelector: '.grid-item',
// layoutMode: 'fitRows',
getSortData: {
name: '.spec-name'
}
})
$('#filters').on( 'click', 'button', function() {
var sortByValue = $(this).attr('data-sort-by');
$grid.isotope({ sortBy: sortByValue });
});
$('.button-group').each( function( i, buttonGroup ) {
var $buttonGroup = $( buttonGroup );
$buttonGroup.on( 'click', 'button', function() {
$buttonGroup.find('.is-checked').removeClass('is-checked');
$( this ).addClass('is-checked');
});
});
}
}
my-html.html:
<div class="container">
<div class="filters">
<div class="btn-group button-group">
<button type="button" class="btn btn-info filter-item" data-filter="*">Show All</button>
<button type="button" class="btn btn-info filter-item" data-sort-by="spec-name">A-Z</button>
<!-- some other buttons here -->
</div>
</div>
</div>
Finally, I used JS and jQuery to create the div elements that I want to filter. Here's a screencap:
Link
You can initialize Isotope in HTML, without writing any JavaScript. Add data-isotope attribute to the container element. Options can be set in its value. Options set in HTML must be valid JSON. Keys need to be quoted, for example "itemSelector":.
Include the Isotope .js file in your site. Isotope works on a container element with a group of similar child items. All sizing of items is handled by your CSS. You can use Isotope as a jQuery plugin: $ ( 'selector' ).isotope (). You can use Isotope with vanilla JS: new Isotope ( elem, options ) .
Once purchased, you’ll receive a commercial license PDF and be all set to use Isotope in your commercial applications. If you are creating an open source application under a license compatible with the GNU GPL license v3, you may use Isotope under the terms of the GPLv3.
You can use Isotope with vanilla JS: new Isotope (elem, options). The Isotope () constructor accepts two arguments: the container element and an options object. var elem = document.querySelector ('.grid'); var iso = new Isotope(elem, { itemSelector: '.grid-item', layoutMode: 'fitRows' }); var iso = new Isotope('.grid', { });
Try this:
npm install jquery
npm install jquery-bridget
import $ from 'jquery';
import jQueryBridget from 'jquery-bridget';
import Isotope from 'isotope-layout';
// make Isotope a jQuery plugin
jQueryBridget( 'isotope', Isotope, $ );
// now you can use $().isotope()
$('.grid').isotope({
// options...
});
OR
import $ from "jquery";
import Isotope from "isotope-layout";
var grid = document.querySelector('.grid');
var iso = new Isotope( grid, {
itemSelector: ".all",
percentPosition: true,
masonry: {
columnWidth: ".all"
}
});
$('.filters ul li').click(function() { // To filter your isotope.
var data = $(this).attr('data-filter');
iso.arrange({
filter: data // All grid items
});
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With