main.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. /* global mixitup */
  2. var sandbox = document.querySelector('.sandbox');
  3. var mixer = mixitup('#sandbox-1', {
  4. animation: {
  5. effects: 'fade',
  6. easing: 'cubic-bezier(1, 0, 0, 1)',
  7. duration: 400
  8. },
  9. controls: {
  10. scope: 'global',
  11. live: false
  12. // toggleLogic: 'and'
  13. },
  14. pagination: {
  15. limit: 4,
  16. maxPagers: 6
  17. },
  18. load: {
  19. // filter: 'none',
  20. sort: 'random'
  21. },
  22. // dragndrop: {
  23. // enable: true,
  24. // hidePlaceholder: false,
  25. // debounceDelay: 20,
  26. // detection: 'collision',
  27. // // liveSort: false
  28. // // swap: true
  29. // },
  30. callbacks: {
  31. // onMixLift: function() {
  32. // console.log('lift', this);
  33. // }
  34. }
  35. }, null);
  36. console.log(mixer.getState());
  37. sandbox.addEventListener('mixStart', function(e) {
  38. console.log('mixStart', e.detail);
  39. });
  40. sandbox.addEventListener('mixEnd', function(e) {
  41. console.log('mixEnd', e.detail);
  42. });
  43. sandbox.addEventListener('mixClick', function(e) {
  44. console.log('mixClick', e.detail);
  45. });
  46. sandbox.addEventListener('mixBusy', function(e) {
  47. console.log('mixBusy', e.detail);
  48. });
  49. sandbox.addEventListener('mixFail', function(e) {
  50. console.log('mixFail', e.detail);
  51. });
  52. sandbox.classList.add('sandbox__mixitup');
  53. document.querySelector('.js-append').addEventListener('click', function() {
  54. mixer.append('<div class="mix cat-3" data-order="3">C 3</div>');
  55. });
  56. document.querySelector('.js-prepend').addEventListener('click', function() {
  57. mixer.prepend('<div class="mix cat-1" data-order="2">A 2</div>');
  58. });
  59. document.querySelector('.js-insert-at-index').addEventListener('click', function() {
  60. mixer.insert(4, '<div class="mix cat-4" data-order="5">D 5</div>');
  61. });
  62. document.querySelector('.js-remove-via-element').addEventListener('click', function() {
  63. var state = mixer.getState();
  64. if (state.targets[0]) {
  65. mixer.remove(state.targets[0]);
  66. }
  67. });
  68. document.querySelector('.js-remove-via-index').addEventListener('click', function() {
  69. mixer.remove(3);
  70. });
  71. document.querySelector('.js-insert-multiple-via-markup').addEventListener('click', function() {
  72. mixer.prepend(
  73. '<div class="mix cat-4" data-order="1">D 1</div>' +
  74. '<div class="mix cat-4" data-order="2">D 2</div>' +
  75. '<div class="mix cat-4" data-order="3">D 3</div>'
  76. );
  77. });
  78. document.querySelector('.js-insert-multiple-via-elements').addEventListener('click', function() {
  79. var h = mixitup.h,
  80. el1 = h.createElement('<div class="mix cat-4" data-order="1">D 1</div>').children[0],
  81. el2 = h.createElement('<div class="mix cat-4" data-order="2">D 2</div>').children[0],
  82. el3 = h.createElement('<div class="mix cat-4" data-order="3">D 3</div>').children[0],
  83. elements = [el1, el2, el3];
  84. // Going into the mixer backwards?
  85. mixer.multiMix({
  86. insert: elements
  87. });
  88. });
  89. document.querySelector('.js-api-filter').addEventListener('click', function() {
  90. mixer.filter('.cat-2');
  91. });
  92. document.querySelector('.js-api-filter-compound').addEventListener('click', function() {
  93. mixer.filter('.cat-2, .cat-3');
  94. });
  95. document.querySelector('.js-api-sort').addEventListener('click', function() {
  96. mixer.sort('order:asc');
  97. });
  98. document.querySelector('.js-api-limit-3').addEventListener('click', function() {
  99. mixer.paginate({limit: 3});
  100. });
  101. document.querySelector('.js-api-limit-inf').addEventListener('click', function() {
  102. mixer.paginate({limit: Infinity});
  103. });
  104. document.querySelector('.js-api-limit-10').addEventListener('click', function() {
  105. mixer.paginate({limit: 10});
  106. });
  107. var dataset = [{
  108. id: '12',
  109. category: '1'
  110. }];
  111. var dataMixer = mixitup('#sandbox-2', {
  112. load: {
  113. dataset: dataset
  114. },
  115. data: {
  116. uidKey: 'id',
  117. dirtyCheck: true
  118. },
  119. render: {
  120. target: function(data) {
  121. return `<div class="mix cat-${data.category}" id="${data.id}"></div>`;
  122. }
  123. }
  124. });
  125. dataset.push({
  126. id: '14',
  127. category: '2'
  128. }, {
  129. id: '2',
  130. category: '3'
  131. });
  132. var first;
  133. dataMixer.dataset(dataset)
  134. .then(function() {
  135. dataset.reverse();
  136. return dataMixer.dataset(dataset);
  137. })
  138. .then(function() {
  139. first = dataset.shift();
  140. return dataMixer.dataset(dataset);
  141. })
  142. .then(function() {
  143. dataset.push(first);
  144. return dataMixer.dataset(dataset);
  145. })
  146. .then(function() {
  147. dataset = [dataset[2], dataset[0]];
  148. return dataMixer.dataset(dataset);
  149. })
  150. .then(function() {
  151. dataset[1] = {
  152. id: '14',
  153. category: '4'
  154. };
  155. return dataMixer.dataset(dataset);
  156. });