nazar-pc / PickMeUp

Really simple, powerful, customizable and lightweight standalone datepicker
BSD Zero Clause License
616 stars 189 forks source link

How should max and minimum date changed dynamically? #51

Closed conmute closed 9 years ago

conmute commented 9 years ago

Currently doing by fully re-initializing with previous state except few modifications.

nazar-pc commented 9 years ago

There is no such possibility out of the box if you want it straightforward. However, you can try one of two workarounds: 1) Modify option directly on instance like $('...').data('pickmeup-options').mix = whatever 2) Another way is to handle render event and return {disabled: true} when you need so

Second is preferable.

conmute commented 9 years ago

Ok. Can you suggest how you want me to do that exactly.

$('.date_picker').pickmeup({min: new Date()});

minDate = new Date() minDate.setMonth maxDate.getMonth() + 2

$('.date_picker').data('pickmeup-options').date = whatever Yet we need to launch redraw somehow, so i need to update. And $('.date_picker').pickmeup('update') is just screws all up.

How to work with render events, (this one launches on EACH day that is drawn), there is also no description.

I like this solution. Would be great to improve it.

nazar-pc commented 9 years ago

render event will be called on each single day (and month, year depending on view), so you can handle it like this:

var element = $(...).pickmeup({
    ...
    render : function (current_date) {
        if (current_date < min_date || current_date > max_date) {
            return {disabled: true};
        }
    }
});

In this case current_date, min_date and max_date are assumed to be regular Date JS objects.

Then call element.pickmeup('update') any time you change min/max dates.

Well, there was some bugs with update method when using flat: true instance, now it is fixed in PickMeUp 2.6.3, thanks for this!

Here is simple demo for you to show what I explained above: http://jsfiddle.net/z4fmvuzb/30/

Another way (hacking internal options of PickMeUp) is not recommended, it might be buggy, while this case is simple and documented.

techgeeksquared commented 9 years ago

@nazar-pc Perfect, thank you.