Just in case somebody is still wondering about min/max values and simple setpoint-like widget, this code works fine for me:
<style>
table{
width: 100%;
margin: 0;
padding: 0;
}
td{
width: 33.3333333333%;
position: relative;
}
td:after {
content: '';
display: block;
margin-bottom: 100%;
}
button {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 100%;
height: 100%;
border: 0;
color: #def;
outline: none;
background: #234;
font-size: 25px
}
button:active
{
filter: brightness(130%);
-webkit-filter: brightness(130%);
}
</style>
<table>
<tr>
<td>
<button ng-click="sendCmd('BA_RadiatorSetpoint', +itemValue('BA_RadiatorSetpoint') - 0.5 < 16 ? 16 : +itemValue('BA_RadiatorSetpoint') - 0.5)">
<i class="glyphicon glyphicon-menu-left"></i>
</button>
</td>
<td>
<button>
{{itemValue('BA_RadiatorSetpoint') + " °C"}}
</button>
</td>
<td>
<button ng-click="sendCmd('BA_RadiatorSetpoint', +itemValue('BA_RadiatorSetpoint') + 0.5 > 30 ? 30 : +itemValue('BA_RadiatorSetpoint') + 0.5)">
<i class="glyphicon glyphicon-menu-right"></i>
</button>
</td>
</tr>
</table>
which is rendering to: