Bootstrap 4 Collapse with Masonry

Attempting to get the collapse to readjust the masonry layout in the height direction.

by joshmoto

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
<script src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<div class="container-fluid">
  <div class="row">
    <div class="col-xs-12 col-sm-10">
      <div class="grid">
        <div class="card grid-item">
          <img class="card-img-top img-fluid" src="..." alt="Card image cap">
          <div class="card-block">
            <h4 class="card-title">Card title that wraps to a new line</h4>
            <p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
          </div>
        </div>
        <div class="card grid-item p-3">
          <blockquote class="card-block card-blockquote">
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
            <footer>
              <small class="text-muted">
          Someone famous in <cite title="Source Title">Source Title</cite>
        </small>
            </footer>
          </blockquote>
        </div>
        <div class="card grid-item">
          <img class="card-img-top img-fluid" src="..." alt="Card image cap">
          <div class="card-block">
            <h4 class="card-title">Card title</h4>
            <p class="card-text">This card has supporting text below as a natural lead-in to additional content.</p>
            <p class="card-text"><small class="text-muted">Last updated 3 mins ago</small></p>
          </div>
          <div class="card-footer">
            <p>
              <a...

CSS

.container-fluid {
    padding-right: 15px;
    padding-left: 15px;
}
.row {
    margin-right: -15px;
    margin-left: -15px;
}
.col-sm-10 {
    -webkit-box-flex: 0;
    -webkit-flex: 0 0 83.333333%;
    -ms-flex: 0 0 83.333333%;
    flex: 0 0 83.333333%;
    max-width: 83.333333%;
}
.grid {
  width: 100%;
  margin: 0 auto;
}

* {
  box-sizing: border-box;
}

/* force scrollbar */

html {
  overflow-y: scroll;
}

/* clear fix */

.grid:after {
  content: '';
  display: block;
  clear: both;
}


/* ---- .grid-item ---- */

.grid-item {
    width: 300px;
  float: left;
}

.grid-item img {
  display: block;
  max-width: 100%;
}

JavaScript

(function ($) {

	var $masonry = $('.grid');
	$masonry.masonry({
		itemSelector: '.grid-item'
	}).on('shown.bs.collapse hidden.bs.collapse', function() {
		$masonry.masonry();
	});
	
})(jQuery);