JSFiddle - React, Tailwind, and code Playground
Widget Icons
by Hugo Carneiro
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-strap/1.0.11/vue-strap.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.10/vue.js"></script>
<section class="app-side-menu">
<div class="side-content">
<section class="side-view page-widgets">
<header>
<p>Drag & Drop components to the device's content area</p>
<a href="#">Need help?</a>
</header>
<main>
<ul class="widgets">
<li>
<tooltip trigger="focus" effect="fadein" placement="top" content="Use drag & drop">
<a style="background-image: url(http://i.imgur.com/jxMsSoP.png);" href="#" class="icon" draggable="true" data-widget-id="185">
<span></span>
</a>
</tooltip>
<div class="icon icon-active hidden">
<span></span>
</div>
<h2>Image</h2>
</li>
<li>
<tooltip trigger="focus" effect="fadein" placement="top" content="Use drag & drop">
<a style="background-image: url(http://i.imgur.com/HdtDs05.png);" href="#" class="icon" draggable="true" data-widget-id="166">
<span></span>
</a>
</tooltip>
<div class="icon icon-active hidden">
<span></span>
</div>
<h2>Primary Button</h2>
</li>
<li>
<tooltip trigger="focus" effect="fadein" placement="top" content="Use drag & drop">
<a style="background-image: url(http://i.imgur.com/fQ4E1pi.png);" href="#" class="icon" draggable="true" data-widget-id="165">
<span></span>
</a>
</tooltip>
<div class="icon icon-active hidden">
...
CSS
html,
body {
height: 100%;
}
.app-side-menu {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
background-color: #f2f6f7;
border-left: 1px solid #d2e0e4;
font-size: 1.1rem;
height: 100%;
}
.app-side-menu .side-content {
position: relative;
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
z-index: 1;
}
.side-view {
width: 38rem;
overflow-y: auto;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
height: 100%;
padding: 1.5rem;
font-size: 1.4rem;
}
.side-view header {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
font-size: 0.8em;
border-bottom: 1px solid #E3E9EB;
margin-bottom: 3rem;
padding-bottom: 1.5em;
}
.side-view header p {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
margin: 0 1.4rem 0 0;
}
.side-view header a {
text-decoration: none;
}
.side-view main {
/*
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
*/
padding: 0 0 2rem;
}
.page-widgets .widgets {
text-align: justify;
margin-bottom: 0;
font-size: 0;
padding-left: 0;
list-style: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-transition: opacity 0.2s linear;
transition: opacity 0.2s linear;
}
.page-widgets .widgets li,
.page-widgets .widgets li.gap {
font-size: 1.2rem;
display: inline-block;
text-align: center;
padding: 0 1rem;
vertical-align: top;
margin-bottom: 20px;
width: 33.3%;
position: relative;
}
.page-widgets .widgets li .icon,
.page-widgets .widgets li.gap .icon {
position: relative;
display: block;
margin: 0 auto 1rem;
width: 100%;
height: 0;
padding-top: 100%;
border-radius: 50%;
border: 1px solid transparent;
background-color: #e4e9eb;
cursor: move;
color: #999;
transition: all 0.15s ease-in;
background-size: 50%;
background-repeat: no-repeat;
...
JavaScript
var tooltip = VueStrap.tooltip;
new Vue({
el: '.page-widgets',
components: {
'tooltip': tooltip
}
});