Angular: select list
http://angularjs.org/
HTML
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,700,700italic|Rokkitt:400,700.css">
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js"></script>
<div ng-app="myApp">
<h1><a href='http://www.whatibroke.com/?p=899'>www.whatibroke.com</a></h1>
<div ng-controller="MyCtrl" style="margin-top:40px;">
<b>Hours: </b>{{hours}}
<b>Minutes: </b>{{minutes}}
<ng-time-selector hours="hours" minutes="minutes"></ng-time-selector>
</div>
</div>
CSS
body{
background-color: #F0F0F0;
font-family: "Lato", sans-serif;
font-weight: 300;
color: #363636;
}
.timeSelectorDirective {
background: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
.timeSelectorDirective .increase, .timeSelectorDirective .decrease{
text-align: center;
vertical-align: middle;
color: rgb(112, 112, 112);
text-shadow: 0px 1px #FFF;
cursor: pointer;
-webkit-transition: 500ms ease-out all;
-moz-transition: 500ms ease-out all;
-ms-transition: 500ms ease-out all;
-o-transition: 500ms ease-out all;
transition: 500ms ease-out all;
font-size: 100%;
border: 1px solid #CCC;
padding: 3px;
margin: 3px;
border: 1px solid #EDE;
}
.timeSelectorDirective .increase:hover, .timeSelectorDirective .decrease:hover{
color: rgba(112, 112, 112, 0.5);
border-color: #CCC;
background-color: #FFF;
}
.timeSelectorDirective .increase:active, .timeSelectorDirective .decrease:active{
color: rgb(112, 112, 112);
box-shadow: inset 1px 1px 1px #DDD;
}
.timeSelectorDirective .section{
display: inline-block;
}
.timeSelectorDirective .display{
background-color: rgb(247, 247, 247);
color: #555555;
padding: 5px;
margin: 0px 3px;
min-width: 30px;
text-align: center;
border: 1px solid #DDD;
box-shadow: 1px 1px 1px #FFFFFF;
}
JavaScript
/*
http://www.whatibroke.com/?p=899
*/
var app = angular.module('myApp', []);
app.controller("MyCtrl", function MyCtrl($scope) {
$scope.hours = 11;
$scope.minutes = 45;
});
/*
http://www.whatibroke.com/?p=899
Retrieves time as hours and minutes (24 hour time)
*/
/*
http://www.whatibroke.com/?p=899
Retrieves time as hours and minutes (24 hour time)
*/
app.directive("ngTimeSelector", function () {
return {
restrict: 'EA',
template: '<div class="timeSelectorDirective"> <div class="section hours"> <div class="increase" ng-click="increaseHours()"> <i class="icon fa fa-caret-up"></i> </div> <div class="display"> {{displayHours()}} </div> <div class="decrease" ng-click="decreaseHours()"> <i class="icon fa fa-caret-down"></i> </div> </div> <div class="section minutes"> <div class="increase" ng-click="increaseMinutes()"> <i class="icon fa fa-caret-up"></i> </div> <div class="display"> {{displayMinutes()}} </div> <div class="decrease" ng-click="decreaseMinutes()"> <i class="icon fa fa-caret-down"></i> </div> </div> <div class="section hours"> <div class="increase" ng-click="switchPeriod()"> <i class="icon fa fa-caret-up"></i> </div> <div ng-if="hours >= 12" class="display"> PM </div> <div ng-if="hours < 12" class="display"> AM </div> <div class="decrease" ng-click="switchPeriod()"> <i class="icon fa fa-caret-down"></i> </div> </div> </div>',
scope: {
hours: "=",
minutes: "="
},
replace: true,
link: function (scope, elem, attr) {
//Create vars
scope.period = "AM";
/* Increases hours by one */
scope.increaseHours = function () {
//Check whether hours have reached max
if (scope.hours < 23) {
scope.hours = ++scope.hours;
}
else {
scope.hours = 0;
}
}
/* Decreases hours...