JSFiddle - React, Tailwind, and code Playground

buttons

by DugSohn

HTML

<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.8.0/bootstrap-table.min.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.8.0/bootstrap-table.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<br><br>
<div class="container">
  <div class="row">
    <div class="col-xs-12">

      <h2>
        Button With Success
      </h2>
      <p>
      If button remains visible it highlghts, or if object in succe
      </p>
      <br>
    </div>
    <div class="col-xs-4">

      <button class="btn btn-block btn-primary success-loadey" data-toggle="tooltip">
    <i class="fa fa-fw"></i> <span class="btn-label">Button Label</span>
    </button>
    </div>

  </div>
</div>
<br><br>
<div class="container">
  <div class="row">
    <div class="col-xs-12">

      <h2>
        Button With Slow Load
      </h2>
      <br>
    </div>
    <div class="col-xs-4">

      <button class="btn btn-block btn-primary slow-loadey" data-toggle="tooltip">
    <i class="fa fa-fw"></i> <span class="btn-label">Button Label</span>
    </button>
    </div>

  </div>
</div>
<br><br>
<div class="container" style="display:none">
  <div class="row">
    <div class="col-xs-12">

      <h2>
        Button With Error
      </h2>
      <br>
    </div>
    <div class="col-xs-4">

      <button class="btn btn-block btn-primary no-loadey" data-toggle="tooltip">
    <i class="fa fa-fw"></i> <span class="btn-label">Button Label</span>
    </button>
      <small style="display:none">Please Check Errors and <a href="#stay" class="btn-error">Try Again</a></small>
    </div>

  </div>
</div>
<br><br>

SCSS

@import url('https://fonts.googleapis.com/css?family=Open+Sans');


* {
font-family:  "Open Sans", "Segoe UI", Tahoma, sans-serif
}
.btn {
   border-radius: 2px;
   text-transform: uppercase;
 
}
.fa {
  margin-left:-20px;
}

.btn-default {
    color: #fff;
    background-color: rgba(46,177,52,1.0);
    border-color: rgba(46,177,52,1.0);
 }
  
.btn-default:hover, .btn-default:focus {
    color: #fff;
    background-color: #47a447;
    border-color: #398439;
 }

 
 .btn-warning {
    color: #fff;
    background-color:  rgba(254,162,32,1.0)!important ;
    border-color:  rgba(254,162,32,1.0)important;
 }
  
.btn-success:hover, .btn-success:focus {
    color:  rgba(46,177,52,1.0);
    background-color: #fff;
    border-color:  rgba(46,177,52,1.0);
 }
 
 
 .btn-success {
    color:  rgba(46,177,52,1.0);
    background-color: #fff;
    border-color: rgba(46,177,52,1.0);
 }
  
.btn-success:hover, .btn-success:focus {
    color:  rgba(46,177,52,1.0);
    background-color: #fff;
    border-color:  rgba(46,177,52,1.0);
 }
 
 .btn-danger {
    color:  #fff;
    background-color: red;
    border-color: red;
 }
  
.btn-danger:hover, .btn-danger:focus {
    color: #fff;
    background-color: red;
    border-color:  red;
 }

JavaScript

$('[data-toggle="tooltip"]').tooltip();

    $('.success-loadey').click(function() {
      $(this).removeClass('btn-success').find('.fa-fw').addClass('fa-spin fa-circle-o-notch');


      var $el = $(this);
      setTimeout(function() {

        $el.find('.fa-fw').removeClass('fa-spin fa-circle-o-notch').addClass('fa-check');
        $el.addClass('btn-success');
        $el.find('.btn-label').html('Successfully Changed');

}, 4000);


});



    $('.slow-loadey').click(function() {
      $(this).removeClass('btn-success btn-warning').find('.fa-fw').addClass('fa-spin fa-circle-o-notch');

      var $el = $(this);
      setTimeout(function() {

        $(this).find('.btn-label').html("Please Wait");

        $el.prop('title', 'This is taking a bit long');
        $el.addClass('btn-warning');
      }, 5000);

      setTimeout(function() {
        $el.prop('title', '');

        $el.find('.fa-fw').removeClass('fa-spin fa-circle-o-notch').addClass('fa-check');
        $el.addClass('btn-success').removeClass('btn-warning');
      }, 10000);

    });


    $('.no-loadey').click(function() {
      $(this).removeClass('btn-danger').find('.fa-fw').addClass('fa-spin fa-circle-o-notch');

      var $el = $(this);
      setTimeout(function() {

        $el.find('.fa-fw').removeClass('fa-spin fa-circle-o-notch').addClass('fa-warning');
        $el.addClass('btn-danger');
        $el.parent().find('small').show();
      }, 4000);

    });



    $('.btn-error').click(function() {
      $('.no-loadey').removeClass('btn-danger').find('.fa-fw').removeClass('fa-warning').addClass('fa-spin fa-circle-o-notch');
      $('.no-loadey').next().hide();

      var $el = $(this);
      setTimeout(function() {

        $('.no-loadey').find('.fa-fw').removeClass('fa-spin fa-circle-o-notch').addClass('fa-check');
        $('.no-loadey').addClass('btn-success');
      }, 4000);

    });