JSFiddle - React, Tailwind, and code Playground

Chart Settings - UI

by Hugo Carneiro

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
<div class="widget-holder">

  <header>
    <p>Configure your column chart</p>
    <a href="#">Need help?</a>
  </header>

  <ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="active"><a href="#data-sources-options" aria-controls="data-sources-options" role="tab" data-toggle="tab">Data source</a></li>
    <li role="presentation" class="chart-settings disabled"><a href="#chart-settings" aria-controls="chart-settings" role="tab" data-toggle="tab">Chart settings</a></li>
  </ul>

  <div class="tab-content">

    <div role="tabpanel" class="tab-pane active" id="data-sources-options">

      <div class="form-horizontal">
        <div class="form-group">
          <div class="col-sm-4 control-label">
            <label for="select-menu">Select a data source</label>
          </div>
          <div class="col-sm-8">
            <label for="select-menu" class="select-proxy-display">
              <span class="icon fa fa-chevron-down"></span>
              <span class="select-value-proxy">Select a data source</span>
              <select name="select_datasource" id="select-data-source" data-label="select" class="hidden-select form-control">
                <option selected value="none">Select a data source</option>
                <option value="1">Sample data source 1</option>
                <option value="2">Sample data source 2</option>
              </select>
            </label>
          </div>
        </div>
        <div class="form-group select-data-column hidden">
          <div class="col-sm-4 control-label">
            <label for="select-menu">Select a column</label>
          </div>
          <div class="col-sm-8">
            <label...

CSS

/* DO NOT USE THIS */

@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700);
html,
body {
  font-family: "Open Sans", "Helvetica Neue", Arial, Helvetica, sans-serif;
  background-color: #f2f6f7;
}


/* END OF DO NOT USE THIS */

.btn {
  border-radius: 6px;
  line-height: 44px;
  padding: 0 15px;
  border: none;
}

.btn-default {
  color: #333;
  background-color: #e4e9eb;
  border-bottom: 2px solid #cfd3d5;
}

.btn-default:active,
.btn-default:active:focus,
.btn-default:active:hover,
.btn-default:focus,
.btn-default:hover {
  color: #333;
  background-color: #cfd3d5;
  border-color: #cfd3d5;
  outline: none;
}

.btn-primary {
  color: #FFF;
  background-color: #00abd2;
  border-bottom: 2px solid #0087a6;
}

.btn-primary:active,
.btn-primary:active:focus,
.btn-primary:active:hover,
.btn-primary:focus,
.btn-primary:hover {
  color: #FFF;
  background-color: #0087a6;
  border-color: #0087a6;
  outline: none;
}

.btn-danger {
  color: #FFF;
  background-color: #d9534f;
  border-bottom: 2px solid #c9302c;
}

.btn-danger:active,
.btn-danger:active:focus,
.btn-danger:active:hover,
.btn-danger:focus,
.btn-danger:hover {
  color: #FFF;
  background-color: #c9302c;
  border-color: #c9302c;
  outline: none;
}

.btn-link,
a {
  color: #00abd1;
}

.widget-holder {
  padding: 15px;
}

header {
  display: flex;
  font-size: 0.8em;
  border-bottom: 1px solid #E3E9EB;
  margin-bottom: 3rem;
  padding-bottom: 1.5em;
}

.title-header {
  font-size: 1.0em;
  border-bottom: 1px solid #E3E9EB;
  margin-bottom: 1.5em;
  margin-top: 1.5em;
  padding-bottom: 1em;
}

header.titles {
  font-weight: bold;
}

header p {
  flex: 1;
  margin: 0 1.4rem 0 0;
}

.title-header p {
  margin: 0 1.4rem 0 0;
  font-weight: bold;
}

.title-header p + p {
  font-weight: normal;
}

header a {
  text-decoration: none;
}

.controls {
  text-align: center;
}


/* FORMS */

.form-group {
  margin-left: -15px;
  margin-right: -15px;
}

label {
  font-weight: normal;
  color:...

JavaScript

$('#select-data-source, #select-data-column').on('change', function() {
  var selectedValue = $(this).val();
  var selectedText = $(this).find("option:selected").text();
  $(this).parents('.select-proxy-display').find('.select-value-proxy').html(selectedText);
  showColumnSelect();
  checkDataIsConfigured();
});

$('.configure-chart').on('click', function() {
	$('.chart-settings a').trigger('click');
});

function showColumnSelect() {
  if ($('#select-data-source').val() !== 'none') {
    $('.select-data-column').removeClass('hidden');
  } else {
    if (!$('.select-data-column').hasClass('hidden')) {
      $('.select-data-column').addClass('hidden');
    }
  }
}

function checkDataIsConfigured() {
  if ($('#select-data-source').val() !== 'none' && $('#select-data-column').val() !== 'none') {
    $('.nav-tabs .chart-settings.disabled').removeClass('disabled');
    $('.controls').removeClass('hidden');
  } else {
    if ( !$('.nav-tabs .chart-settings').hasClass('disabled') ) {
      $('.nav-tabs .chart-settings').addClass('disabled');
    }
    if ( !$('.controls').hasClass('hidden') ) {
    	$('.controls').addClass('hidden');
    }
  }
}