JSFiddle - React, Tailwind, and code Playground
Data Show UI
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.7.0/css/font-awesome.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.10/handlebars.min.js"></script>
<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
<h2>Purus Cursus Amet</h2>
<p>Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Donec sed odio dui.</p>
<!-- Component Markup -->
<div class="fl-holder-show">
<div class="fl-empty-data">
<p class="help-block">No data found, please download store details</p>
</div>
<div class="fl-show-data">
<div class="fl-filter-data row">
<div class="col-sm-4">
<label for="country" class="select-proxy-display">
<span class="icon fa fa-chevron-down"></span>
<span class="select-value-proxy">Select a country</span>
<select id="country" name="country" data-label="select" class="hidden-select form-control">
<option value="">Select a country</option>
<option value="1">Canada</option>
<option value="2">United Kingdom</option>
</select>
</label>
</div>
<div class="filter-part-2">
<div class="col-sm-4">
<label for="state" class="select-proxy-display">
<select id="state" name="state" data-label="select" class="hidden-select form-control" disabled>
<option value="">Select a state</option>
<option value="1">Wisconsin</option>
<option value="2">Greater London</option>
</select>
<span class="icon fa...
CSS
/* DO NOT USE - ALREADY IN STUDIO */
.btn-primary {
display: block;
clear: both;
width: 100%;
padding: 10px 16px;
font-size: 18px;
line-height: 24px;
border: none;
text-align: center;
cursor: pointer;
border-radius: 6px;
white-space: initial;
}
.select-proxy-display {
width: 100%;
height: 44px;
margin: 0 auto;
padding: 0 44px 0 0;
background: #fff;
border: 1px solid #e4e9eb;
border-radius: 6px;
cursor: pointer;
outline: 0;
font-weight: 400;
line-height: 44px;
position: relative;
color: #333;
}
.select-proxy-display > .hidden-select {
position: absolute;
top: -1px;
bottom: -1px;
left: 0;
right: 0;
cursor: pointer;
opacity: 0;
z-index: 1;
}
.select-proxy-display > .select-value-proxy {
position: absolute;
left: 0;
top: 0;
right: 42px;
bottom: 0;
padding-left: 15px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.select-proxy-display > .icon {
position: absolute;
width: 44px;
top: -1px;
right: -1px;
bottom: -1px;
background-color: #337ab7;
text-align: center;
line-height: 44px;
font-size: 18px;
color: #FFF;
border-top-right-radius: 6px;
border-bottom-right-radius: 6px;
border-left: 1px solid #e4e9eb;
}
.select-proxy-display > .hidden-select[disabled] ~ .icon {
background-color: #aaa;
}
.select-proxy-display > .hidden-select[disabled] ~ .select-value-proxy {
background: #e4e9eb;
}
@media screen and (min-width: 640px) {
.btn-primary {
clear: none;
display: inline-block;
width: auto;
max-width: 100%;
}
.container-fluid {
padding: 0 12.5%;
}
}
/* END OF DO NOT USE */
.fl-holder-show {
margin-top: 30px;
margin-bottom: 30px;
}
.fl-empty-data p.help-block,
.fl-show-data p.help-block {
text-align: center;
}
.fl-empty-data,
.fl-show-data,
.filter-part-2 {
display: none;
}
@media screen and (min-width: 768px) {
.filter-part-2 {
display: block;
}
}
.fl-filter-data {
margin-bottom:...
JavaScript
// Playground VARs
var data = true;
var isOffline = false;
var errorRequest = true;
var storesData = {
stores: [{
id: 13,
title: "Sears Optical",
city: "London",
state: "Greater London",
country: "United Kingdom"
},
{
id: 14,
title: "Sears Optical",
city: "Birmingham",
state: "",
country: "United Kingdom"
},
{
id: 23,
title: "Sears Optical",
city: "Birmingham",
state: "Wisconsin",
country: "Canada"
}]
};
// Handlebars
var source = $("#entries-template").html();
var template = Handlebars.compile(source);
var html = template(storesData);
// INIT
function init() {
if (data) {
$('.fl-show-data').fadeIn(250);
} else {
$('.fl-empty-data').fadeIn(250);
}
}
// Cahnging a select box updates the label text
// DO NOT USE THIS, PART OF STUDIO ALREADY
$(document).on('change', '.hidden-select', function() {
var selectedText = $(this).find('option:selected').text();
$(this).parents('.select-proxy-display').find('.select-value-proxy').html(selectedText);
});
// Selecting a Country
$(document).on('change', '[name="country"]', function() {
if ($(this).val() !== "") {
$('.filter-part-2').addClass('show');
$('[name="state"], [name="city"]').prop('disabled', false);
} else {
$('.filter-part-2').removeClass('show');
$('.fl-data-results').html('');
$('.fl-filters-tip').removeClass('hidden');
$('[name="state"], [name="city"]').prop('disabled', true);
}
});
// Selecting a State or City
$(document).on('change', '[name="state"], [name="city"]', function() {
// Shows result on selecting a state or city
$('.fl-filters-tip').addClass('hidden');
$('.fl-data-results').html(html).hide().fadeIn(250);
});
// Request Report
$(document).on('click', '[data-request-report]', function() {
var $this = $(this);
if (isOffline) {
alert("Device offline.\nYour device is offline. Connect to the internet and try again.");
return;
}
var allowReport = confirm("Requesting...