correction && add form && add slide && add masonry && css

This commit is contained in:
2020-06-07 17:47:49 +02:00
153 changed files with 16750 additions and 162 deletions

12
node_modules/flickity/test/.jshintrc generated vendored Normal file
View File

@@ -0,0 +1,12 @@
{
"browser": true,
"devel": true,
"strict": true,
"undef": true,
"unused": true,
"predef": {
"Flickity": false,
"matchesSelector": false,
"QUnit": false
}
}

85
node_modules/flickity/test/drag.html generated vendored Normal file
View File

@@ -0,0 +1,85 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Drag tests</title>
<link rel="stylesheet" href="../bower_components/qunit/qunit/qunit.css" media="screen" />
<link rel="stylesheet" href="test.css" media="screen" />
<link rel="stylesheet" href="../css/flickity.css" media="screen" />
<style>
body {
padding-right: 440px;
}
#demos {
position: absolute;
right: 0;
top: 0;
width: 420px;
}
</style>
<script src="../bower_components/qunit/qunit/qunit.js"></script>
<!-- dependencies -->
<script src="../bower_components/get-size/get-size.js"></script>
<script src="../bower_components/desandro-matches-selector/matches-selector.js"></script>
<script src="../bower_components/ev-emitter/ev-emitter.js"></script>
<script src="../bower_components/unipointer/unipointer.js"></script>
<script src="../bower_components/unidragger/unidragger.js"></script>
<script src="../bower_components/fizzy-ui-utils/utils.js"></script>
<!-- <script src="../bower_components/imagesloaded/imagesloaded.js"></script> -->
<!-- Flickity source -->
<script src="../js/cell.js"></script>
<script src="../js/slide.js"></script>
<script src="../js/animate.js"></script>
<script src="../js/flickity.js"></script>
<script src="../js/drag.js"></script>
<script src="../js/prev-next-button.js"></script>
<script src="../js/page-dots.js"></script>
<script src="../js/player.js"></script>
<script src="../js/add-remove-cell.js"></script>
<script src="../js/lazyload.js"></script>
<!-- turn off accessibility for these tests
was causing bugs with dragging tests -->
<script>
Flickity.defaults.accessibility = false;
</script>
<!-- unit tests -->
<script src="unit/drag.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="demos">
<p><b>drag</b> and <b>drag with wrapAround</b> tests can be buggy. Try running them again.</p>
<h2>drag</h2>
<div id="drag" class="gallery variable-width drag">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>drag wrapAround</h2>
<div id="drag-wrap-around" class="gallery variable-width drag">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
</div>
</body>
</html>

316
node_modules/flickity/test/index.html generated vendored Normal file
View File

@@ -0,0 +1,316 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Flickity tests</title>
<link rel="stylesheet" href="../bower_components/qunit/qunit/qunit.css" media="screen" />
<link rel="stylesheet" href="test.css" media="screen" />
<link rel="stylesheet" href="../css/flickity.css" media="screen" />
<script src="../bower_components/qunit/qunit/qunit.js"></script>
<!-- dependencies -->
<script src="../bower_components/get-size/get-size.js"></script>
<!-- <script src="../bower_components/imagesloaded/imagesloaded.js"></script> -->
<script src="../bower_components/desandro-matches-selector/matches-selector.js"></script>
<script src="../bower_components/ev-emitter/ev-emitter.js"></script>
<script src="../bower_components/fizzy-ui-utils/utils.js"></script>
<script src="../bower_components/unipointer/unipointer.js"></script>
<script src="../bower_components/unidragger/unidragger.js"></script>
<!-- Flickity source -->
<script src="../js/cell.js"></script>
<script src="../js/slide.js"></script>
<script src="../js/animate.js"></script>
<script src="../js/flickity.js"></script>
<script src="../js/drag.js"></script>
<script src="../js/prev-next-button.js"></script>
<script src="../js/page-dots.js"></script>
<script src="../js/player.js"></script>
<script src="../js/add-remove-cell.js"></script>
<script src="../js/lazyload.js"></script>
<!-- turn off accessibility for these tests
was causing bugs with dragging tests -->
<script>
Flickity.defaults.accessibility = false;
</script>
<!-- unit tests -->
<script src="unit/init.js"></script>
<script src="unit/cell-selector.js"></script>
<script src="unit/empty.js"></script>
<script src="unit/get-parent-cell.js"></script>
<script src="unit/position-cells.js"></script>
<script src="unit/contain.js"></script>
<!-- drag tests are buggy. moved to drag.html -->
<!-- <script src="unit/drag.js"></script> -->
<script src="unit/auto-play.js"></script>
<script src="unit/prev-next-buttons.js"></script>
<script src="unit/page-dots.js"></script>
<script src="unit/get-wrap-cells.js"></script>
<script src="unit/watch.js"></script>
<script src="unit/resize.js"></script>
<script src="unit/add-remove-cells.js"></script>
<script src="unit/destroy.js"></script>
<script src="unit/lazyload.js"></script>
<script src="unit/lazyload-srcset.js"></script>
<script src="unit/group-cells.js"></script>
<script src="unit/adaptive-height.js"></script>
<script src="unit/select-cell.js"></script>
<script src="unit/change.js"></script>
<script src="unit/initial-index.js"></script>
</head>
<body>
<div id="qunit"></div>
<h2>Init</h2>
<div id="init" class="gallery">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>cellSelector</h2>
<div id="cell-selector" class="gallery">
<p class="not-cell not-cell1">not cell 1</p>
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<p class="not-cell not-cell2">not cell 2</p>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>empty</h2>
<div id="empty" class="gallery"></div>
<h2>getParentCell</h2>
<div id="get-parent-cell" class="gallery">
<div class="cell cell1"><span class="child1">1</span></div>
<div class="cell"><div><span class="child2">2</span></div></div>
<div class="cell cell3">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<div class="outside"></div>
<h2>position cells</h2>
<div id="position-cells" class="gallery variable-width">
<div class="cell width2">1</div>
<div class="cell">2</div>
<div class="cell width3">3</div>
<div class="cell width2">4</div>
<div class="cell width3">5</div>
<div class="cell">6</div>
</div>
<h2>contain</h2>
<div id="contain" class="gallery variable-width">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell width3">3</div>
<div class="cell width2">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>auto-play</h2>
<div id="auto-play" class="gallery">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
</div>
<h2>prev/next buttons</h2>
<div id="prev-next-buttons" class="gallery">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>page dots</h2>
<div id="page-dots" class="gallery">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>getWrapCells</h2>
<div id="get-wrap-cells" class="gallery variable-width">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>watch</h2>
<div id="watch" class="gallery">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>resize</h2>
<div id="resize" class="gallery">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>add/remove-cells</h2>
<div id="add-remove-cells" class="gallery variable-width">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>destroy</h2>
<div id="destroy" class="gallery">
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
</div>
<h2>lazyload</h2>
<div id="lazyload" class="gallery">
<div class="cell"><img data-flickity-lazyload="http://i.imgur.com/r8p3Xgq.jpg" /></div>
<img class="img-cell" data-flickity-lazyload="http://i.imgur.com/q9zO6tw.jpg" />
<div class="cell"><img data-flickity-lazyload="http://i.imgur.com/bwy74ok.jpg" /></div>
<div class="cell"><img data-flickity-lazyload="http://i.imgur.com/hODreXI.jpg" /></div>
<div class="cell"><img data-flickity-lazyload="http://i.imgur.com/UORFJ3w.jpg" /></div>
<div class="cell"><img data-flickity-lazyload="http://i.imgur.com/bAZWoqx.jpg" /></div>
<div class="cell"><img data-flickity-lazyload="http://i.imgur.com/PgmEBSB.jpg" /></div>
<img class="img-cell" data-flickity-lazyload="http://i.imgur.com/aboaFoB.jpg" />
<div class="cell"><img data-flickity-lazyload="http://i.imgur.com/LkmcILl.jpg" /></div>
</div>
<h2>lazyload srcset</h2>
<div id="lazyload-srcset" class="gallery">
<div class="cell">
<img data-flickity-lazyload-src="https://picsum.photos/360/270/?image=718"
data-flickity-lazyload-srcset="
https://picsum.photos/720/540/?image=718 720w,
https://picsum.photos/360/270/?image=718 360w"
sizes="(min-width: 1024px) 720px, 360px" />
</div>
<img class="img-cell"
data-flickity-lazyload-srcset="
https://picsum.photos/720/540/?image=517 720w,
https://picsum.photos/360/270/?image=517 360w"
sizes="(min-width: 1024px) 720px, 360px"
/>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<h2>groupCells</h2>
<div id="group-cells" class="gallery">
<div class="cell"></div>
<div class="cell cell--width2"></div>
<div class="cell"></div>
<div class="cell cell--width3"></div>
<div class="cell"></div>
<div class="cell cell--width2"></div>
<div class="cell cell--width2"></div>
<div class="cell cell--width2"></div>
<div class="cell cell--width4"></div>
<div class="cell"></div>
<div class="cell"></div>
<div class="cell cell--width2"></div>
<div class="cell"></div>
<div class="cell"></div>
</div>
<h2>adaptiveHeight</h2>
<div id="adaptive-height" class="gallery">
<div class="cell cell--height2"></div>
<div class="cell"></div>
<div class="cell cell--height3"></div>
<div class="cell"></div>
<div class="cell cell--height4"></div>
<div class="cell cell--height2"></div>
<div class="cell"></div>
<div class="cell cell--height2"></div>
</div>
<h2>selectCell</h2>
<div id="select-cell" class="gallery">
<div class="cell select-cell__0">0</div>
<div class="cell select-cell__1">1</div>
<div class="cell select-cell__2">2</div>
<div class="cell select-cell__3">3</div>
<div class="cell select-cell__4">4</div>
<div class="cell select-cell__5">5</div>
<div class="cell select-cell__6">6</div>
<div class="cell select-cell__7">7</div>
</div>
<h2>change</h2>
<div id="change" class="gallery">
<div class="cell">0</div>
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell">4</div>
</div>
<h2>initialIndex</h2>
<div id="initial-index" class="gallery variable-width">
<div class="cell">0</div>
<div class="cell">1</div>
<div class="cell">2</div>
<div class="cell">3</div>
<div class="cell cell--initial">4</div>
<div class="cell">5</div>
<div class="cell">6</div>
<div class="cell">7</div>
<div class="cell">8</div>
<div class="cell">9</div>
</div>
</body>
</html>

70
node_modules/flickity/test/test.css generated vendored Normal file
View File

@@ -0,0 +1,70 @@
/** { box-sizing: border-box; }*/
body {
font-family: sans-serif;
color: #333;
}
.gallery {
border: 1px solid;
width: 400px;
margin-bottom: 40px;
}
.gallery .cell {
width: 100%;
height: 100px;
background: #F09;
font-size: 40px;
color: white;
}
.variable-width .cell { width: 25%; } /* 100px */
.variable-width .cell.width2 { width: 40%; background: #F90; } /* 160px */
.variable-width .cell.width3 { width: 60%; background: #09F; } /* 240px */
#position-cells.percent-margin .cell { margin: 0 2%; }
#position-cells.pixel-margin .cell { margin: 0 10px; }
/*#drag-wrap-around { position: fixed; top: 0;}*/
.drag .cell { margin-right: 5%; }
#watch.has-after:after {
content: 'flickity';
display: none;
}
#lazyload img {
display: block;
max-height: 100px;
}
/* ---- group-cells ---- */
#group-cells .cell {
width: 100px;
/* border: 1px solid;*/
}
#group-cells .cell--width2 { width: 200px; }
#group-cells .cell--width3 { width: 300px; }
#group-cells .cell--width4 { width: 400px; }
#group-cells.is-expanded { width: 600px; }
#group-cells .cell:nth-child(2n) { background: #09F; }
/* ---- adaptive-height ---- */
#adaptive-height .cell { width: 33.33%; }
#adaptive-height .cell--height2 { height: 200px; }
#adaptive-height .cell--height3 { height: 300px; }
#adaptive-height .cell--height4 { height: 400px; }
#adaptive-height .cell:nth-child(2n) { background: #09F; }
/* ---- select-cell ---- */
#select-cell .cell { width: 33.33%; }

29
node_modules/flickity/test/unit/adaptive-height.js generated vendored Normal file
View File

@@ -0,0 +1,29 @@
QUnit.test( 'adaptiveHeight', function( assert ) {
'use strict';
var flkty = new Flickity( '#adaptive-height', {
adaptiveHeight: true
});
// 2,1,3, 1,4,2, 1,2,1
function checkSelectHeight( index, height ) {
flkty.select( index, false, true );
assert.equal( flkty.viewport.style.height, height + 'px', 'slide ' + index );
}
checkSelectHeight( 0, 200 );
checkSelectHeight( 1, 100 );
checkSelectHeight( 2, 300 );
checkSelectHeight( 3, 100 );
checkSelectHeight( 4, 400 );
checkSelectHeight( 5, 200 );
flkty.options.groupCells = true;
flkty.resize();
checkSelectHeight( 0, 300 );
checkSelectHeight( 1, 400 );
checkSelectHeight( 2, 200 );
});

88
node_modules/flickity/test/unit/add-remove-cells.js generated vendored Normal file
View File

@@ -0,0 +1,88 @@
QUnit.test( 'add/remove cells', function( assert ) {
'use strict';
function makeCellElem() {
var cellElem = document.createElement('div');
cellElem.className = 'cell';
return cellElem;
}
// position values can be off by 0.1% or 1px
function isPositionApprox( value, expected ) {
var isPercent = value.indexOf('%') != -1;
value = parseFloat( value );
var diff = Math.abs( expected - value );
return isPercent ? diff < 0.1 : diff <= 1;
}
var elem = document.querySelector('#add-remove-cells');
var flkty = new Flickity( elem );
var sliderElem = elem.querySelector('.flickity-slider');
function checkCellElem( cellElem, index, message ) {
assert.equal( sliderElem.children[ index ], cellElem, message + ' cell element in DOM correct' );
assert.equal( flkty.cells[ index ].element, cellElem, message + ' element added as cell' );
assert.ok( isPositionApprox( cellElem.style.left, index * 25 ), ' element positioned' );
}
// prepend cell element
var cellElem = makeCellElem();
flkty.prepend( cellElem );
checkCellElem( cellElem, 0, 'prepended' );
assert.equal( flkty.selectedIndex, 1, 'selectedIndex +1 after prepend' );
// append cell element
cellElem = makeCellElem();
flkty.append( cellElem );
var lastIndex = flkty.cells.length - 1;
checkCellElem( cellElem, lastIndex, 'appended' );
assert.equal( flkty.selectedIndex, 1, 'selectedIndex same after prepend' );
// insert single cell element
cellElem = makeCellElem(); // this one gets removed first
flkty.select( 2 );
flkty.insert( cellElem, 2 );
checkCellElem( cellElem, 2, 'single inserted' );
assert.equal( flkty.selectedIndex, 3, 'selectedIndex +1 after insert before' );
flkty.insert( makeCellElem(), 4 );
assert.equal( flkty.selectedIndex, 3, 'selectedIndex same after insert before' );
// insert multiple cell elements
var cellElems = [ makeCellElem(), makeCellElem(), makeCellElem() ];
flkty.insert( cellElems, 3 );
checkCellElem( cellElems[0], 3, 'first multiple inserted' );
checkCellElem( cellElems[1], 4, 'second multiple inserted' );
checkCellElem( cellElems[2], 5, 'third multiple inserted' );
assert.equal( flkty.selectedIndex, 6, 'selectedIndex +6 after 3 insert before' );
function checkCellPositions() {
var isGap = false;
for ( var i=0, len = flkty.cells.length; i < len; i++ ) {
var cell = flkty.cells[i];
if ( !isPositionApprox( cell.element.style.left, i * 25 ) ) {
assert.ok( false, 'gap in cell position ' + i + ' after removal' );
isGap = true;
}
}
assert.ok( !isGap, 'no gaps in cell positions' );
}
// remove single cell element that was inserted
var len = flkty.cells.length;
flkty.remove( cellElem );
assert.equal( len - sliderElem.children.length, 1, 'element removed from DOM' );
assert.equal( len - flkty.cells.length, 1, 'cell removed' );
assert.equal( flkty.selectedIndex, 5, 'selectedIndex -1 after remove before' );
checkCellPositions();
// remove multiple
len = flkty.cells.length;
flkty.select( 4 );
flkty.remove([ cellElems[2], cellElems[0], cellElems[1] ]);
assert.equal( len - sliderElem.children.length, 3, 'elements removed from DOM' );
assert.equal( len - flkty.cells.length, 3, 'cells removed' );
checkCellPositions();
// remove all cells
flkty.remove( flkty.getCellElements() );
assert.equal( flkty.cells.length, 0, 'all cells removed' );
flkty.resize();
assert.ok( true, 'resize with zero items didnt freak out' );
});

91
node_modules/flickity/test/unit/auto-play.js generated vendored Normal file
View File

@@ -0,0 +1,91 @@
QUnit.test( 'auto play', function( assert ) {
'use strict';
var done = assert.async();
var flkty = new Flickity( '#auto-play', {
autoPlay: 200
});
var selectCount = 0;
var testDelay = flkty.options.autoPlay + 100;
var tests;
function nextTest() {
if ( tests.length ) {
var next = tests.shift();
next();
} else {
flkty.stopPlayer();
done();
}
}
tests = [
// check that player runs
function() {
var onSelect = function() {
selectCount++;
if ( selectCount < 5 ) {
assert.equal( flkty.selectedIndex, selectCount % flkty.cells.length,
'auto-played to ' + flkty.selectedIndex );
} else if ( selectCount == 5 ) {
// HACK do async, should be able to stop after a tick
flkty.off( 'select', onSelect );
nextTest();
}
};
flkty.on( 'select', onSelect );
},
// pause & unpause
function() {
function onPauseSelect() {
assert.ok( false, 'player ticked during pause' );
}
flkty.on( 'select', onPauseSelect );
flkty.pausePlayer();
setTimeout( function() {
assert.ok( true, 'player did not tick during pause' );
flkty.off( 'select', onPauseSelect );
flkty.once( 'select', function() {
assert.ok( true, 'player resumed after unpausing' );
nextTest();
});
flkty.unpausePlayer();
}, testDelay );
},
// stopPlayer
function() {
var ticks = 0;
function onSelect() {
ticks++;
}
flkty.stopPlayer();
setTimeout( function() {
flkty.off( 'select', onSelect );
assert.equal( ticks, 0, 'no ticks after stopped' );
nextTest();
}, testDelay * 2 );
},
// double playPlayer()
function() {
var ticks = 0;
function onSelect() {
ticks++;
}
flkty.stopPlayer();
flkty.on( 'select', onSelect );
flkty.playPlayer();
flkty.playPlayer();
setTimeout( function() {
flkty.off( 'select', onSelect );
assert.equal( ticks, 1, 'only one tick after double playPlayer' );
nextTest();
}, testDelay );
},
];
nextTest();
});

32
node_modules/flickity/test/unit/cell-selector.js generated vendored Normal file
View File

@@ -0,0 +1,32 @@
QUnit.test( 'cellSelector', function( assert ) {
'use strict';
var elem = document.querySelector('#cell-selector');
var notCell1 = elem.querySelector('.not-cell1');
var notCell2 = elem.querySelector('.not-cell2');
var flkty = new Flickity( elem, {
cellSelector: '.cell'
});
var cellsMatchSelector = true;
for ( var i=0, len = flkty.cells.length; i < len; i++ ) {
var cell = flkty.cells[i];
var isMatch = matchesSelector( cell.element, flkty.options.cellSelector );
cellsMatchSelector = cellsMatchSelector && isMatch;
}
// getCellElements()
var cellElems = flkty.getCellElements();
var queriedCellElems = elem.querySelectorAll( flkty.options.cellSelector );
assert.equal( cellElems.length, flkty.cells.length, 'getCellElements returns corrent number of elements' );
for( i=0, len = cellElems.length; i < len; i++ ) {
assert.equal( cellElems[i], queriedCellElems[i], 'cell element same as queried cell element' );
}
assert.ok( cellsMatchSelector, 'all cell elements match cellSelector' );
assert.equal( notCell1.parentNode, elem, 'notCell1 parent node is still gallery' );
assert.equal( notCell2.parentNode, elem, 'notCell2 parent node is still gallery' );
});

47
node_modules/flickity/test/unit/change.js generated vendored Normal file
View File

@@ -0,0 +1,47 @@
QUnit.test( 'change', function( assert ) {
'use strict';
var done = assert.async();
function onInitChange() {
assert.ok( false, 'change should not trigger on init' );
}
new Flickity( '#change', {
on: {
change: onInitChange,
ready: function() {
// define events last to first for strict
var onChangeC = function( index ) {
assert.equal( index, 0, 'change triggered on select back to 0' );
done();
};
var onChangeB = function() {
assert.ok( false, 'change should not trigger on same select' );
};
var onSelectB = function( index ) {
assert.equal( index, 1, 'select triggered on same select 1' );
this.off( 'change', onChangeB );
this.once( 'change', onChangeC );
this.select( 0, false, true );
};
var onChangeA = function( index ) {
assert.equal( index, 1, 'change triggered, selected 1');
this.once( 'change', onChangeB );
this.once( 'select', onSelectB );
// select 1 again
this.select( 1, false, true );
};
// kick off
this.off( 'change', onInitChange );
this.once( 'change', onChangeA );
this.select( 1, false, true );
}
},
});
});

21
node_modules/flickity/test/unit/contain.js generated vendored Normal file
View File

@@ -0,0 +1,21 @@
QUnit.test( 'contain', function( assert ) {
'use strict';
var flkty = new Flickity( '#contain', {
contain: true
});
assert.equal( Math.round( flkty.x + flkty.cursorPosition ), 0, 'selected at 0, position left edge' );
flkty.select( 1 );
flkty.positionSliderAtSelected();
assert.equal( Math.round( flkty.x + flkty.cursorPosition ), 0, 'selected at 1, position left edge' );
flkty.select( 4 );
flkty.positionSliderAtSelected();
var endLimit = flkty.slideableWidth - flkty.size.innerWidth * ( 1 - flkty.cellAlign );
assert.equal( Math.round( -endLimit ), Math.round( flkty.x ), 'selected at 4, position right edge' );
flkty.select( 5 );
flkty.positionSliderAtSelected();
assert.equal( Math.round( -endLimit ), Math.round( flkty.x ), 'selected at 5, position right edge' );
});

25
node_modules/flickity/test/unit/destroy.js generated vendored Normal file
View File

@@ -0,0 +1,25 @@
QUnit.test( 'destroy', function( assert ) {
'use strict';
var elem = document.querySelector('#destroy');
var flkty = new Flickity( elem );
var done = assert.async();
// do it async
setTimeout( function() {
flkty.destroy();
assert.strictEqual( elem.flickityGUID, undefined, 'flickityGUID removed' );
assert.ok( !flkty.isActive, 'not active' );
assert.ok( !Flickity.data( elem ), '.data() returns falsey' );
assert.ok( elem.children[0], '.cell', 'cell is back as first child' );
assert.ok( !matchesSelector( elem, '.flickity-enabled'), 'flickity-enabled class removed' );
assert.ok( !elem.querySelector('.flickity-prev-next-button'), 'no buttons' );
assert.ok( !elem.querySelector('.flickity-page-dots'), 'no page dots' );
assert.ok( !elem.style.height, 'no height set' );
assert.ok( !elem.children[0].style.left, 'first cell has no left position' );
done();
}, 20 );
});

188
node_modules/flickity/test/unit/drag.js generated vendored Normal file
View File

@@ -0,0 +1,188 @@
( function() {
'use strict';
var utils = window.fizzyUIUtils;
function noop() {}
var fakeDrag = window.fakeDrag = function( flkty, positions ) {
function fakeEvent( type, pageX ) {
return {
type: type,
pageX: pageX,
pageY: 0,
preventDefault: noop,
target: flkty.viewport
};
}
var hasBeenDown = false;
function triggerEvent() {
var position = positions.shift();
// down or move event
if ( !hasBeenDown ) {
var downEvent = fakeEvent( 'mousedown', position );
flkty._pointerDown( downEvent, downEvent );
hasBeenDown = true;
} else {
var moveEvent = fakeEvent( 'mousemove', position );
flkty._pointerMove( moveEvent, moveEvent );
}
if ( positions.length ) {
// loop next
setTimeout( triggerEvent, 40 );
} else {
// up event
var upEvent = fakeEvent( 'mouseup', position );
flkty._pointerUp( upEvent, upEvent );
}
}
triggerEvent();
};
var dragTests;
// do each drag test one after another
function getDoNextDragTest( done ) {
return function doNextDragTest() {
if ( dragTests.length ) {
var dragTest = dragTests.shift();
dragTest();
} else {
done();
}
};
}
// flickity, dragPositions, index, callback, message
function getFakeDragTest( args ) {
var assert = args.assert;
var flkty = args.flickity;
var msgCell = 'slide[' + args.index + ']';
return function fakeDragTest() {
var selectMsg = ( args.message ? args.message + '. ' : '' ) + 'selected ' + msgCell;
flkty.once( 'select', function() {
assert.equal( flkty.selectedIndex, args.index, selectMsg );
});
var settleMsg = ( args.message ? args.message + '. ' : '' ) + 'settled ' + msgCell;
var target = flkty.slides[ args.index ].target;
flkty.once( 'settle', function() {
assert.equal( Math.round( -flkty.x ), Math.round( target ), settleMsg );
setTimeout( args.callback );
});
fakeDrag( args.flickity, args.dragPositions );
};
}
QUnit.test( 'drag', function( assert ) {
// async test
var done = assert.async();
var flkty = new Flickity('#drag');
var doNextDragTest = getDoNextDragTest( done );
function getDragTest( args ) {
args = utils.extend( args, {
assert: assert,
flickity: flkty,
callback: doNextDragTest
});
return getFakeDragTest( args );
}
dragTests = [
getDragTest({
message: 'drag to 2nd cell',
index: 1,
dragPositions: [ 0, -10, -20 ]
}),
getDragTest({
message: 'drag back to 1st cell',
index: 0,
dragPositions: [ 0, 10, 20 ]
}),
getDragTest({
message: 'big flick to 3rd cell',
index: 2,
dragPositions: [ 0, -10, -80 ]
}),
// minimal movement to trigger static click
function() {
flkty.once( 'staticClick', function() {
assert.ok( true, 'staticClick fired on non-drag');
assert.equal( flkty.selectedIndex, 2, 'selected index still at 2 after click' );
setTimeout( doNextDragTest );
});
fakeDrag( flkty, [ 0, 1, 0, -2, -1 ] );
},
// move out then back to where it started
function() {
flkty.once( 'settle', function() {
assert.equal( flkty.selectedIndex, 2, 'move out then back. same cell' );
setTimeout( doNextDragTest );
});
fakeDrag( flkty, [ 0, 10, 20, 30, 20 ] );
},
getDragTest({
message: 'drag and try to flick past 6th cell',
index: 5,
dragPositions: [ 0, -10, -50, -77, -100, -125, -150, -175, -250, -350 ]
})
];
doNextDragTest();
});
QUnit.test( 'drag with wrapAround', function( assert ) {
// async test
var done = assert.async();
var flkty = new Flickity('#drag-wrap-around', {
wrapAround: true
});
var doNextDragTest = getDoNextDragTest( done );
function getDragTest( args ) {
args = utils.extend( args, {
assert: assert,
flickity: flkty,
callback: doNextDragTest
});
return getFakeDragTest( args );
}
dragTests = [
getDragTest({
message: 'drag to last cell via wrap-around',
index: 5,
dragPositions: [ 0, 10, 20 ]
}),
getDragTest({
message: 'drag to first cell via wrap-around',
index: 0,
dragPositions: [ 0, -10, -20 ]
}),
getDragTest({
message: 'big flick to 5th cell via wrap-around',
index: 4,
dragPositions: [ 0, 10, 80 ]
})
];
doNextDragTest();
});
})();

39
node_modules/flickity/test/unit/empty.js generated vendored Normal file
View File

@@ -0,0 +1,39 @@
QUnit.test( 'empty', function( assert ) {
'use strict';
var gallery = document.querySelector('#empty');
var flkty = new Flickity( gallery );
assert.ok( true, 'empty gallery ok' );
assert.ok( flkty.prevButton.element.disabled, 'previous button disabled' );
assert.ok( flkty.nextButton.element.disabled, 'next button disabled' );
assert.equal( flkty.pageDots.dots.length, 0, '0 page dots');
flkty.resize();
assert.ok( true, 'resize with empty gallery ok');
function makeCellElem() {
var cellElem = document.createElement('div');
cellElem.className = 'cell';
return cellElem;
}
flkty.append( makeCellElem() );
assert.equal( flkty.cells.length, 1, 'added cell to empty gallery' );
assert.ok( flkty.prevButton.element.disabled, 'previous button disabled' );
assert.ok( flkty.nextButton.element.disabled, 'next button disabled' );
assert.equal( flkty.pageDots.dots.length, 1, '1 page dots');
// destroy and re-init with higher initialIndex
flkty.destroy();
flkty = new Flickity( gallery, {
initialIndex: 2
});
// #291
assert.ok( true, 'initializing with initialIndex > cells doesnt throw error' );
});

37
node_modules/flickity/test/unit/get-parent-cell.js generated vendored Normal file
View File

@@ -0,0 +1,37 @@
QUnit.test( 'getParentCell', function( assert ) {
'use strict';
var gallery = document.querySelector('#get-parent-cell');
var flkty = new Flickity( gallery );
// cell1
var cell = flkty.getParentCell( gallery.querySelector('.cell1') );
assert.ok( cell, 'getParentCell( cell ) ok' );
assert.ok( cell instanceof Flickity.Cell, 'cell is Flickity.Cell' );
var index = flkty.cells.indexOf( cell );
assert.equal( index, 0, 'cell is index 0' );
// cell3
cell = flkty.getParentCell( gallery.querySelector('.cell3') );
assert.ok( cell, 'getParentCell( cell ) ok' );
assert.ok( cell instanceof Flickity.Cell, 'cell is Flickity.Cell' );
index = flkty.cells.indexOf( cell );
assert.equal( index, 2, 'cell is index 2' );
// child1
cell = flkty.getParentCell( gallery.querySelector('.child1') );
assert.ok( cell, 'getParentCell( cell ) ok' );
assert.ok( cell instanceof Flickity.Cell, 'cell is Flickity.Cell' );
index = flkty.cells.indexOf( cell );
assert.equal( index, 0, 'cell is index 0' );
// child2
cell = flkty.getParentCell( gallery.querySelector('.child2') );
assert.ok( cell, 'getParentCell( cell ) ok' );
assert.ok( cell instanceof Flickity.Cell, 'cell is Flickity.Cell' );
index = flkty.cells.indexOf( cell );
assert.equal( index, 1, 'cell is index 1' );
// outside
cell = flkty.getParentCell( document.querySelector('.outside') );
assert.ok( !cell, 'getParentCell( notCell ) not ok' );
index = flkty.cells.indexOf( cell );
assert.equal( index, -1, 'not cell is index -1' );
});

24
node_modules/flickity/test/unit/get-wrap-cells.js generated vendored Normal file
View File

@@ -0,0 +1,24 @@
QUnit.test( 'getWrapCells', function( assert ) {
'use strict';
var flkty = new Flickity( '#get-wrap-cells', {
wrapAround: true
});
// cells are 25% width
// center align, 2 cells on each side
assert.equal( flkty.beforeShiftCells.length, 2, 'center align, 2 before shift cells' );
assert.equal( flkty.afterShiftCells.length, 2, 'center align, 2 after shift cells' );
flkty.options.cellAlign = 'left';
flkty.resize();
// left align, 0, 4
assert.equal( flkty.beforeShiftCells.length, 0, 'left align, 1 before shift cells' );
assert.equal( flkty.afterShiftCells.length, 4, 'left align, 4 after shift cells' );
flkty.options.cellAlign = 'right';
flkty.resize();
// right align, 4, 0
assert.equal( flkty.beforeShiftCells.length, 4, 'right align, 4 before shift cells' );
assert.equal( flkty.afterShiftCells.length, 0, 'right align, 0 after shift cells' );
});

39
node_modules/flickity/test/unit/group-cells.js generated vendored Normal file
View File

@@ -0,0 +1,39 @@
QUnit.test( 'groupCells', function( assert ) {
'use strict';
var flkty = new Flickity( '#group-cells', {
groupCells: true
});
function getSlideCellsCount() {
var counts = flkty.slides.map( function( slide ) {
return slide.cells.length;
});
return counts.join(',');
}
assert.equal( getSlideCellsCount(), '3,2,2,1,1,3,2', 'groupCells: true' );
var targets = flkty.slides.map( function( slide ) {
return slide.target;
});
assert.deepEqual( targets, [200, 600, 1000, 1300, 1600, 2000, 2300], 'targets' );
flkty.selectCell( 6 );
assert.equal( flkty.selectedIndex, 2, 'selectCell(6) selects 3rd slide' );
flkty.selectCell( flkty.cells[2].element );
assert.equal( flkty.selectedIndex, 0, 'selectCell(3rd elem) selects 1st slide' );
flkty.options.groupCells = 2;
flkty.reposition();
assert.equal( getSlideCellsCount(), '2,2,2,2,2,2,2', 'groupCells: 2' );
flkty.options.groupCells = '75%';
flkty.reposition();
assert.equal( getSlideCellsCount(), '2,1,1,2,1,1,1,2,2,1', 'groupCells: 75%' );
flkty.element.classList.add('is-expanded'); // 600px wide
flkty.options.groupCells = true;
flkty.resize();
assert.equal( getSlideCellsCount(), '3,3,2,3,3', 'groupCells: true, container @ 600px' );
});

37
node_modules/flickity/test/unit/init.js generated vendored Normal file
View File

@@ -0,0 +1,37 @@
( function() {
'use strict';
QUnit.module('Flickity');
var utils = window.fizzyUIUtils;
QUnit.test( 'init', function( assert ) {
var elem = document.querySelector('#init');
var flkty = new Flickity( elem );
for ( var prop in Flickity.defaults ) {
assert.equal( flkty.options[ prop ], Flickity.defaults[ prop ], prop + ' option matches default' );
}
assert.equal( flkty.element, elem, '.element is proper element' );
var children = utils.makeArray( flkty.element.children );
assert.notEqual( children.indexOf( flkty.viewport ), -1, 'viewport element is a child element' );
assert.equal( flkty.viewport.children[0], flkty.slider, 'slider is in viewport' );
assert.equal( flkty.viewport.style.height, '100px', 'viewport height set' );
assert.ok( flkty.isActive, 'isActive' );
assert.ok( matchesSelector( elem, '.flickity-enabled' ), 'flickity-enabled class added' );
assert.equal( flkty.cells.length, 6, 'has 6 cells' );
assert.equal( flkty.cells[0].element.style.left, '0%', 'first cell left: 0%' );
assert.equal( flkty.cells[5].element.style.left, '500%', '6th cell left: 500%' );
assert.equal( flkty.selectedIndex, 0, 'selectedIndex = 0' );
assert.equal( flkty.cursorPosition, 200, 'cursorPosition = 200' );
assert.equal( flkty.x + flkty.cursorPosition, 0, 'x + cursorPosition = 0' );
});
})();

26
node_modules/flickity/test/unit/initial-index.js generated vendored Normal file
View File

@@ -0,0 +1,26 @@
QUnit.test( 'initialIndex', function( assert ) {
'use strict';
// initialIndex number
var flkty = new Flickity( '#initial-index', {
initialIndex: 3,
});
assert.equal( flkty.selectedIndex, 3, 'initialIndex number' );
// selectedIndex remains same after reactivation
flkty.deactivate();
flkty.activate();
assert.equal( flkty.selectedIndex, 3, 'reactivated selectedIndex stays the same' );
flkty.destroy();
// initialIndex selector string
flkty = new Flickity( '#initial-index', {
initialIndex: '.cell--initial',
});
assert.equal( flkty.selectedIndex, 4, 'initialIndex selector string' );
flkty.destroy();
// initialIndex selector string with groupCells #881
flkty = new Flickity( '#initial-index', {
groupCells: 3,
initialIndex: '.cell--initial',
});
assert.equal( flkty.selectedIndex, 1, 'initialIndex selector string with groupCells' );
});

29
node_modules/flickity/test/unit/lazyload-srcset.js generated vendored Normal file
View File

@@ -0,0 +1,29 @@
QUnit.test( 'lazyload srcset', function( assert ) {
'use strict';
var done = assert.async();
var gallery = document.querySelector('#lazyload-srcset');
var flkty = new Flickity( gallery, {
lazyLoad: 1
});
var loadCount = 0;
flkty.on( 'lazyLoad', function( event, cellElem ) {
loadCount++;
assert.equal( event.type, 'load', 'event.type == load' );
assert.ok( event.target.complete, 'img ' + loadCount + ' is complete' );
assert.ok( cellElem, 'cellElement argument there' );
var srcset = event.target.getAttribute('srcset');
assert.ok( srcset, 'srcset attribute set');
var lazyAttr = event.target.getAttribute('data-flickity-lazyload-srcset');
assert.ok( !lazyAttr, 'data-flickity-lazyload attribute removed' );
// after first 2 have loaded, select 7th cell
if ( loadCount == 2 ) {
done();
}
});
});

32
node_modules/flickity/test/unit/lazyload.js generated vendored Normal file
View File

@@ -0,0 +1,32 @@
QUnit.test( 'lazyload', function( assert ) {
'use strict';
var done = assert.async();
var gallery = document.querySelector('#lazyload');
var flkty = new Flickity( gallery, {
lazyLoad: 1
});
var loadCount = 0;
flkty.on( 'lazyLoad', function( event, cellElem ) {
loadCount++;
assert.equal( event.type, 'load', 'event.type == load' );
assert.ok( event.target.complete, 'img ' + loadCount + ' is complete' );
assert.ok( cellElem, 'cellElement argument there' );
var lazyAttr = event.target.getAttribute('data-flickity-lazyload');
assert.ok( !lazyAttr, 'data-flickity-lazyload attribute removed' );
// after first 2 have loaded, select 7th cell
if ( loadCount == 2 ) {
flkty.select( 6 );
}
if ( loadCount == 5 ) {
var loadedImgs = gallery.querySelectorAll('.flickity-lazyloaded');
assert.equal( loadedImgs.length, '5', 'only 5 images loaded' );
done();
}
});
});

33
node_modules/flickity/test/unit/page-dots.js generated vendored Normal file
View File

@@ -0,0 +1,33 @@
QUnit.test( 'pageDots', function( assert ) {
'use strict';
var elem = document.querySelector('#page-dots');
var flkty = new Flickity( elem );
var dotsHolder = elem.querySelector('.flickity-page-dots');
var dotsElems = dotsHolder.querySelectorAll('.dot');
assert.ok( dotsHolder, 'dots holder in DOM' );
assert.equal( flkty.pageDots.holder, dotsHolder, 'dots holder element matches flkty.pageDots.holder' );
assert.equal( dotsElems.length, flkty.cells.length, 'number of dots matches number of cells' );
function getSelectedDotIndex() {
var selectedDot = dotsHolder.querySelector('.is-selected');
for ( var i=0, len = dotsElems.length; i < len; i++ ) {
var dotElem = dotsElems[i];
if ( dotElem == selectedDot ) {
return i;
}
}
return -1;
}
assert.equal( getSelectedDotIndex(), 0, 'first dot is selected' );
flkty.select( 2 );
assert.equal( getSelectedDotIndex(), 2, '3rd dot is selected' );
// fake tap
flkty.pageDots.onTap( { target: dotsElems[4] } );
assert.equal( flkty.selectedIndex, 4, 'tap dot selects cell' );
});

51
node_modules/flickity/test/unit/position-cells.js generated vendored Normal file
View File

@@ -0,0 +1,51 @@
( function() {
'use strict';
// position values can be off by 0.1% or 1px
function isPositionApprox( value, expected ) {
var isPercent = value.indexOf('%') != -1;
value = parseFloat( value );
var diff = Math.abs( expected - value );
return isPercent ? diff < 0.1 : diff <= 1;
}
// loop through cells and check position values against expecteds
function checkCellPositions( flkty, expecteds ) {
var isOK;
for ( var i=0, len = expecteds.length; i < len; i++ ) {
var expected = expecteds[i];
var cell = flkty.cells[i];
var position = cell.element.style.left;
isOK = isPositionApprox( position, expected );
if ( !isOK ) {
console.error( 'wrong cell position, index: ' + i + '. ' +
'expected: ' + expected + '. position: ' + position );
break;
}
}
return isOK;
}
QUnit.test( 'position cells', function( assert ) {
var flkty = new Flickity('#position-cells');
assert.ok( checkCellPositions( flkty, [ 0, 40, 65, 125, 165, 225 ] ), 'percent cell position' );
// .cell { margin: 0 2%; }
flkty.element.classList.add('percent-margin');
flkty.positionCells();
assert.ok( checkCellPositions( flkty, [ 0, 44, 73, 137, 181, 245 ] ), 'percent cell position with margin' );
flkty.element.classList.remove('percent-margin');
// pixel-based position
flkty.options.percentPosition = false;
flkty.positionCells();
assert.ok( checkCellPositions( flkty, [ 0, 160, 260, 500, 660, 900 ] ), 'pixel cell position' );
// pixel margin, { margin: 0 10px; }
flkty.element.classList.add('pixel-margin');
flkty.positionCells();
assert.ok( checkCellPositions( flkty, [ 0, 180, 300, 560, 740, 1000 ] ), 'pixel cell position with margin' );
});
})();

27
node_modules/flickity/test/unit/prev-next-buttons.js generated vendored Normal file
View File

@@ -0,0 +1,27 @@
QUnit.test( 'prev-next-buttons', function( assert ) {
'use strict';
var elem = document.querySelector('#prev-next-buttons');
var flkty = new Flickity( elem );
var prevElem = elem.querySelector('.flickity-prev-next-button.previous');
var nextElem = elem.querySelector('.flickity-prev-next-button.next');
assert.ok( prevElem, 'previous button in DOM' );
assert.ok( nextElem, 'next button in DOM' );
assert.equal( flkty.prevButton.element, prevElem, 'previous button element matches prevButton.element' );
assert.equal( flkty.nextButton.element, nextElem, 'next button element matches nextButton.element' );
assert.ok( prevElem.disabled, 'previous button is disabled at first index' );
prevElem.focus();
prevElem.click();
assert.equal( flkty.selectedIndex, 0, 'selectedIndex still at 0' );
nextElem.focus();
nextElem.click();
assert.equal( flkty.selectedIndex, 1, 'next button clicked, selectedIndex at 1' );
prevElem.focus();
prevElem.click();
assert.equal( flkty.selectedIndex, 0, 'previous button clicked, selectedIndex back at 0' );
flkty.select( 5 );
assert.ok( nextElem.disabled, 'next button disabled when at last cell' );
});

16
node_modules/flickity/test/unit/resize.js generated vendored Normal file
View File

@@ -0,0 +1,16 @@
QUnit.test( 'resize', function( assert ) {
'use strict';
var elem = document.querySelector('#resize');
var flkty = new Flickity( elem, {
initialIndex: 2
});
elem.style.width = '500px';
flkty.resize();
assert.equal( flkty.selectedIndex, 2, 'selectedIndex = 2' );
assert.equal( flkty.cursorPosition, 250, 'cursorPosition = 250' );
assert.equal( flkty.x + flkty.cursorPosition, -1000, 'x + cursorPosition = -1000' );
});

18
node_modules/flickity/test/unit/select-cell.js generated vendored Normal file
View File

@@ -0,0 +1,18 @@
QUnit.test( 'selectCell', function( assert ) {
'use strict';
var gallery = document.querySelector('#select-cell');
var cellElems = gallery.querySelectorAll('.cell');
var flkty = new Flickity( gallery, {
groupCells: true, // groups of 3
});
flkty.selectCell( 3 );
assert.equal( flkty.selectedIndex, 1, 'selectCell number' );
flkty.selectCell( cellElems[1] );
assert.equal( flkty.selectedIndex, 0, 'selectCell element' );
flkty.selectCell('.select-cell__6');
assert.equal( flkty.selectedIndex, 2, 'selectCell selector string' );
flkty.selectCell('none');
assert.equal( flkty.selectedIndex, 2, 'selectCell bad string is okay' );
});

10
node_modules/flickity/test/unit/watch.js generated vendored Normal file
View File

@@ -0,0 +1,10 @@
QUnit.test( 'watch fallback', function( assert ) {
'use strict';
var elem = document.querySelector('#watch');
var flkty = new Flickity( elem, {
watchCSS: true
});
assert.ok( !flkty.isActive, 'fallback not active, watchCSS: true' );
});