AngularJS list filter. That's all. :)
A Pen by Ondřej Page Bárta on CodePen.
<div id="notebooks" ng-app ng-controller="NotebookListCtrl"> | |
<input type="text" id="query" ng-model="query"/> | |
<select ng-model="orderList"> | |
<option value="name">By name</option> | |
<option value="-age">Newest</option> | |
<option value="age">Oldest</option> | |
</select> | |
<ul id="notebook_ul"> | |
<li ng-repeat="notebook in notebooks | filter:query | orderBy: orderList"> | |
name: {{notebook.name}}<br/> | |
procesor: {{notebook.procesor}}<br/> | |
<div class="right top">{{notebook.age}}</div> | |
</li> | |
</ul> | |
<span>Number of notebooks: {{notebooks.length}}</span> | |
</div> |
AngularJS list filter. That's all. :)
A Pen by Ondřej Page Bárta on CodePen.
function NotebookListCtrl($scope) { | |
$scope.notebooks = [ | |
{"name": "Lenovo", | |
"procesor": "Intel i5", | |
"age": 2011}, | |
{"name": "Toshiba", | |
"procesor": "Intel i7", | |
"age": 2010}, | |
{"name": "Toshiba", | |
"procesor": "Intel core 2 duo", | |
"age": 2008}, | |
{"name": "HP", | |
"procesor": "Intel core 2 duo", | |
"age": 2012}, | |
{"name": "Acer", | |
"procesor": "AMD", | |
"age": 2006}, | |
{"name": "Lenovo", | |
"procesor": "Intel i5", | |
"age": 2009}, | |
{"name": "Toshiba", | |
"procesor": "Intel i7", | |
"age": 2008}, | |
{"name": "Lenovo", | |
"procesor": "Intel i5", | |
"age": 2011}, | |
{"name": "Toshiba", | |
"procesor": "Intel i7", | |
"age": 2010}, | |
{"name": "Toshiba", | |
"procesor": "Intel core 2 duo", | |
"age": 2008}, | |
{"name": "HP", | |
"procesor": "Intel core 2 duo", | |
"age": 2012}, | |
{"name": "Acer", | |
"procesor": "AMD", | |
"age": 2006}, | |
{"name": "Lenovo", | |
"procesor": "Intel i5", | |
"age": 2009}, | |
{"name": "Toshiba", | |
"procesor": "Intel i7", | |
"age": 2008}, | |
{"name": "Lenovo", | |
"procesor": "Intel i5", | |
"age": 2011}, | |
{"name": "Toshiba", | |
"procesor": "Intel i7", | |
"age": 2010}, | |
{"name": "Toshiba", | |
"procesor": "Intel core 2 duo", | |
"age": 2008}, | |
{"name": "HP", | |
"procesor": "Intel core 2 duo", | |
"age": 2012}, | |
{"name": "Acer", | |
"procesor": "AMD", | |
"age": 2006}, | |
{"name": "Lenovo", | |
"procesor": "Intel i5", | |
"age": 2009}, | |
{"name": "Toshiba", | |
"procesor": "Intel i7", | |
"age": 2008} | |
]; | |
$scope.orderList = "name"; | |
} |
html, body { | |
height: 100%; | |
} | |
body { | |
font-family: calibri light; | |
margin: 0 auto; | |
background: #FFFFBB; | |
} | |
.right { | |
float: right; | |
} | |
.top { | |
margin-top: -30px; | |
} | |
#notebooks { | |
background: whitesmoke; | |
position: absolute; | |
left: 50%; | |
margin-left: -175px; | |
margin-top: 35px; | |
width: 350px; | |
padding: 15px; | |
border: 1px solid rgba(0, 0, 0, 0.2); | |
border-radius: 5px; | |
box-shadow: inset 1px 1px 0 white; | |
max-height: 450px; | |
} | |
ul { | |
margin: 0 auto; | |
padding: 0; | |
max-height: 390px; | |
overflow-y: auto; | |
border: 1px solid rgba(0, 0, 0, 0.1); | |
padding: 5px 5px 0 5px; | |
border-left: none; | |
border-right: none; | |
} | |
li { | |
list-style: none; | |
background-color: rgba(0, 0, 0, 0.05); | |
background-image: | |
linear-gradient( | |
90deg, | |
#FFD32E 10px, | |
#EEE 10px, | |
#EEE 11px, | |
transparent 11px); | |
padding: 10px 15px 10px 25px; | |
border: 1px solid #CCC; | |
box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.5); | |
margin-bottom: 5px; | |
width: 100%; | |
box-sizing: border-box; | |
cursor: pointer; | |
border-radius: 3px; | |
} | |
#query { | |
width: 100%; | |
box-sizing: border-box; | |
font-size: 19px; | |
padding: 5px; | |
font-family: calibri light; | |
margin-bottom: 10px; | |
border: 1px solid rgba(0, 0, 0, 0.2); | |
border-radius: 3px; | |
box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.1); | |
} | |
#notebooks span { | |
display: block; | |
position: absolute; | |
background: #FFD32E; | |
bottom: -35px; | |
left: -1px; | |
width: 360px; | |
border-radius: 0 0 5px 5px; | |
border: 1px solid rgba(0, 0, 0, 0.1); | |
padding: 10px; | |
border-top: 1px solid rgba(0, 0, 0, 0.1); | |
box-shadow: inset 1px 1px rgba(255, 255, 255, 0.5); | |
} | |
#notebooks select { | |
width: 120px; | |
margin-left: 230px; | |
margin-top: -45px; | |
border-radius: 0 3px 3px 0; | |
border: 1px solid rgba(0, 0, 0, 0.2); | |
border-left: 1px solid rgba(0, 0, 0, 0.1); | |
position: absolute; | |
padding: 7.5px; | |
box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); | |
} | |
#notebooks select:focus, #query:focus { | |
border: 1px solid #FFD32E; | |
box-shadow: 0 0 10px rgba(255, 255, 0, 0.1); | |
outline: none; | |
} |