275 lines
9.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width" />
<title>add/remove cells</title>
<link rel="stylesheet" href="../css/flickity.css" />
<link rel="stylesheet" href="sandbox.css" />
<style>
.cell {
position: relative;
}
.remove-button {
font-size: 20px;
position: absolute;
right: 10px;
top: 10px;
}
</style>
</head>
<body>
<h1>add/remove cells</h1>
<div id="demo1" class="demo">
<div class="container variable-width js-flickity">
<div class="cell n1 w3"><b>1</b><button class="remove-button">&times;</button></div>
<div class="cell n2"><b>2</b><button class="remove-button">&times;</button></div>
<div class="cell n3 w3"><b>3</b><button class="remove-button">&times;</button></div>
<div class="cell n4"><b>4</b><button class="remove-button">&times;</button></div>
<div class="cell n5 w2"><b>5</b><button class="remove-button">&times;</button></div>
<div class="cell n6 w2"><b>6</b><button class="remove-button">&times;</button></div>
</div>
<p>
<button class="prepend-button">Prepend</button>
<button class="insert-button">Insert</button>
<button class="append-button">Append</button>
</p>
</div>
<h2>freeScroll</h2>
<div id="demo2" class="demo">
<div class="container variable-width js-flickity"
data-flickity-options='{ "freeScroll": true }'>
<div class="cell n6"><b>1</b><button class="remove-button">&times;</button></div>
<div class="cell n5 w2"><b>2</b><button class="remove-button">&times;</button></div>
<div class="cell n4"><b>3</b><button class="remove-button">&times;</button></div>
<div class="cell n3 w3"><b>4</b><button class="remove-button">&times;</button></div>
<div class="cell n2"><b>5</b><button class="remove-button">&times;</button></div>
</div>
<p>
<button class="prepend-button">Prepend</button>
<button class="insert-button">Insert</button>
<button class="append-button">Append</button>
</p>
</div>
<h2>wrapAround</h2>
<div id="demo3" class="demo">
<div class="container variable-width js-flickity"
data-flickity-options='{ "wrapAround": true }'>
<div class="cell n6"><b>1</b><button class="remove-button">&times;</button></div>
<div class="cell n5 w2"><b>2</b><button class="remove-button">&times;</button></div>
<div class="cell n4"><b>3</b><button class="remove-button">&times;</button></div>
<div class="cell n3 w3"><b>4</b><button class="remove-button">&times;</button></div>
<div class="cell n2"><b>5</b><button class="remove-button">&times;</button></div>
<div class="cell n6 w2"><b>6</b><button class="remove-button">&times;</button></div>
</div>
<p>
<button class="prepend-button">Prepend</button>
<button class="insert-button">Insert</button>
<button class="append-button">Append</button>
</p>
</div>
<h2>wrapAround, freeScroll</h2>
<div id="demo4" class="demo">
<div class="container variable-width js-flickity"
data-flickity-options='{ "wrapAround": true, "freeScroll": true }'>
<div class="cell n6"><b>1</b><button class="remove-button">&times;</button></div>
<div class="cell n5 w2"><b>2</b><button class="remove-button">&times;</button></div>
<div class="cell n4"><b>3</b><button class="remove-button">&times;</button></div>
<div class="cell n3 w3"><b>4</b><button class="remove-button">&times;</button></div>
<div class="cell n2"><b>5</b><button class="remove-button">&times;</button></div>
<div class="cell n6 w2"><b>6</b><button class="remove-button">&times;</button></div>
</div>
<p>
<button class="prepend-button">Prepend</button>
<button class="insert-button">Insert</button>
<button class="append-button">Append</button>
</p>
</div>
<h2>contain</h2>
<div id="demo5" class="demo">
<div class="container variable-width js-flickity"
data-flickity-options='{ "contain": true }'>
<div class="cell n1 w3"><b>1</b><button class="remove-button">&times;</button></div>
<div class="cell n2"><b>2</b><button class="remove-button">&times;</button></div>
<div class="cell n3 w3"><b>3</b><button class="remove-button">&times;</button></div>
<div class="cell n4"><b>4</b><button class="remove-button">&times;</button></div>
<div class="cell n5 w2"><b>5</b><button class="remove-button">&times;</button></div>
<div class="cell n6 w2"><b>6</b><button class="remove-button">&times;</button></div>
</div>
<p>
<button class="prepend-button">Prepend</button>
<button class="insert-button">Insert</button>
<button class="append-button">Append</button>
</p>
</div>
<h2>reposition</h2>
<div id="reposition">
<div class="container variable-width">
<div class="cell w2"><b>1</b></div>
<div class="cell"><b>2</b></div>
<div class="cell w3"><b>3</b></div>
<div class="cell"><b>4</b></div>
<div class="cell"><b>5</b></div>
<div class="cell w2"><b>6</b></div>
<div class="cell"><b>7</b></div>
<div class="cell w2"><b>8</b></div>
<div class="cell"><b>9</b></div>
</div>
</div>
<h2>prepend with single #492</h2>
<div id="prepend-single">
<div class="container variable-width">
<div class="cell n1"><b>1</b><button class="remove-button">&times;</button></div>
</div>
<p>
<button class="prepend-button">Prepend</button>
</p>
</div>
<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="../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>
var cellCount = 6;
function randInt( num ) {
return Math.floor( Math.random() * num );
}
function getRandom( ary ) {
var index = Math.floor( Math.random() * ary.length );
return ary[ index ];
}
var widthClasses = [ '', 'w2', 'w3' ];
var nClasses = 'n1 n2 n3 n4 n5 n6'.split(' ');
function makeCell() {
var cell = document.createElement('div');
cell.className = 'cell ' + getRandom( widthClasses ) + ' ' + getRandom( nClasses );
var b = document.createElement('b');
b.textContent = ++cellCount;
cell.appendChild( b );
var removeButton = document.createElement('button');
removeButton.className = 'remove-button';
removeButton.textContent = '×';
cell.appendChild( removeButton );
return cell;
}
function getParent( elem, selector ) {
while ( elem != document.body ) {
elem = elem.parentNode;
if ( matchesSelector( elem, selector ) ) {
return elem;
}
}
}
function onContainerClick( event ) {
if ( event.target.className != 'remove-button' ) {
return;
}
//
var cellElement = getParent( event.target, '.cell' );
var container = getParent( event.target, '.container' );
var flkty = Flickity.data( container );
flkty.remove( cellElement );
}
function getParentFlickity( elem ) {
var demo = getParent( elem, '.demo' );
return Flickity.data( demo.querySelector('.container') );
}
function onPrependClick( event ) {
var flkty = getParentFlickity( event.target );
flkty.prepend([ makeCell(), makeCell(), makeCell() ]);
}
function onInsertClick( event ) {
var flkty = getParentFlickity( event.target );
flkty.insert([ makeCell(), makeCell(), makeCell() ], 3 );
}
function onAppendClick( event ) {
var flkty = getParentFlickity( event.target );
flkty.append([ makeCell(), makeCell(), makeCell() ]);
}
// init
var demos = document.querySelectorAll('.demo');
for ( var i=0; i < demos.length; i++ ) {
var demo = demos[i];
demo.querySelector('.container').addEventListener( 'click', onContainerClick );
demo.querySelector('.prepend-button').addEventListener( 'click', onPrependClick );
demo.querySelector('.insert-button').addEventListener( 'click', onInsertClick );
demo.querySelector('.append-button').addEventListener( 'click', onAppendClick );
}
// ----- reposition ----- //
(function() {
var flkty = new Flickity('#reposition .container');
flkty.on( 'staticClick', function( event, pointer, cellElem ) {
cellElem.classList.toggle('w3');
flkty.reposition();
});
window.mapTargets = function() {
return flkty.slides.map( function( slide ) {
return ~~slide.target;
});
}
})();
// ----- prepend single, #492 ----- //
( function() {
var demo = document.querySelector('#prepend-single');
var flkty = new Flickity( demo.querySelector('.container') );
demo.querySelector('.prepend-button').onclick = function() {
flkty.prepend( makeCell() );
};
})();
</script>
</body>
</html>