import DateTimeFormatOptions = Intl.DateTimeFormatOptions; declare let $: any; /** * Initializes a calendar component with mmui-web compliant settings. * @param selector A valid query selector. Can be an id (#start) of class (.start). * @returns {*|jQuery} * * Example: * var startDatePicker = initializeDatePicker("#start_date"); */ export function initializeDatePicker(selector, config = {}) { const defaultConfig = { nextText: '', prevText: '', }; return $(selector).datepicker(Object.assign(config, defaultConfig)); } export const makeAvailableDateChecker = ( datepickerId, formatOptions: DateTimeFormatOptions = { year: 'numeric', month: '2-digit', day: '2-digit', } ) => { const availableDatesElems = document.getElementById(datepickerId); // @ts-ignore - for each not recognized const availableDates = JSON.parse( availableDatesElems.dataset['availableDates'] ); return (selectedDate) => { const formattedDate = new Intl.DateTimeFormat('en', formatOptions).format( selectedDate ); if (availableDates.indexOf(formattedDate) < 0) { return [false, 'notav', 'Not Available']; } else { return [true, 'av', 'available']; } }; };