Search code examples
bootstrap-4bootbox

Bootstrap 4 and Bootbox body horizontal scroll?


I have row of columns that have long names. I have to display this data in bootbox dialog. Here is example of my code:

$(function() {
  $('[data-toggle="tooltip"]').tooltip()
})

$('.open-dialog').on('click', function() {
  var dialog_msg = $('.container').html();
  bootbox.alert({
    size: "xl",
    title: "Dialog Title",
    message: dialog_msg,
    callback: function(){ /* your callback code */ }
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"></script>

<button type="button" class="btn btn-secondary open-dialog">Show Dialog</button>

<div class="container" style="display: none">
  <div class="row border rounded">
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 1"></i> Column 1</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 2"></i> Column 2</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 3"></i> Column 3</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 4"></i> Column 4</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 5"></i> Column 5</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 6"></i> Column 6</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 7"></i> Column 7</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 8"></i> Column 8</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 9"></i> Column 9</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 10"></i> Column 10</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 11"></i> Column 11</div>
    <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 12"></i> Column 12</div>
  </div>
</div>

As you can see in example above the columns can not fit in dialog box. I would like to have horizontal scroll inside of the bootbox dialog. Is there a way to fix this with bootbox dialog or bootstrap 4?

Thank you.


Solution

  • Your snippet has some issues (duplicate jQuery), and you're using a version (4.4.0) of Bootbox that doesn't support the xl size. Ignoring those...

    Use the className option to add a custom CSS class to the dialog, and then add your rules to get horizontal scrolling:

    bootbox.alert({
        /* ... your existing options ... */
    
        className: 'scroll-modal-body-horizontal'
    });
    

    Then

    .scroll-modal-body-horizontal .modal-body
    {
        max-width: 100%;
        overflow-x: auto;
    }
    

    Your snippet, updated and some references fixed:

    $(function() {
      $('[data-toggle="tooltip"]').tooltip()
    })
    
    $('.open-dialog').on('click', function() {
      var dialog_msg = $('.container').html();
      bootbox.alert({
        size: "xl",
        title: "Dialog Title",
        message: dialog_msg,
        className: 'scroll-modal-body-horizontal',
        callback: function(){ /* your callback code */ }
      })
    });
        .scroll-modal-body-horizontal .modal-body
        {
            max-width: 100%;
            overflow-x: auto;
        }
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/5.4.0/bootbox.min.js" integrity="sha256-sfG8c9ILUB8EXQ5muswfjZsKICbRIJUG/kBogvvV5sY=" crossorigin="anonymous"></script>
    
    <button type="button" class="btn btn-secondary open-dialog">Show Dialog</button>
    
    <div class="container" style="display: none">
      <div class="row border rounded">
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 1"></i> Column 1</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 2"></i> Column 2</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 3"></i> Column 3</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 4"></i> Column 4</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 5"></i> Column 5</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 6"></i> Column 6</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 7"></i> Column 7</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 8"></i> Column 8</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 9"></i> Column 9</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 10"></i> Column 10</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 11"></i> Column 11</div>
        <div class="col-1 font-weight-bold text-nowrap"><i class="fa fa-info-circle" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="Tooltip for Column 12"></i> Column 12</div>
      </div>
    </div>