Allow only future
I needed the exact opposite requirement that is slightly more complicated, to allow only future date you need to consider the argument $view
Javascript:
$scope.futureOnlyBeforeRender = function($view, $dates) {
// $view values: year, month, day, hour, minute
var currentDate = new Date();
// set the current date according to the view
switch($view){
case 'year': currentDate.setYear(currentDate.getYear() - 1); break;
case 'month': currentDate.setMonth(currentDate.getMonth() - 1); break;
case 'day': currentDate.setDate(currentDate.getDate() - 1); break;
case 'hour': currentDate.setHours(currentDate.getHours() - 1); break;
case 'minute': currentDate.setMinutes(currentDate.getMinutes() - 1); break;
}
// apply ot the dates
$dates.filter(function (date) {
return date.utcDateValue < currentDate.getTime();
}).forEach(function (date) {
date.selectable = false;
})
};
HTML:
data-before-render="futureOnlyBeforeRender($view, $dates)"