- @do_dates_easypick = [] - @accommodation.accommodationprices.each do |avalability| - if avalability.not_available == true and avalability.datefrom != "" and avalability.datefrom != nil - do_dates = avalability.datefrom.to_s, avalability.dateto.to_s - @do_dates_easypick.append(do_dates) %script{src: "https://cdn.jsdelivr.net/npm/@easepick/bundle@1.2.1/dist/index.umd.min.js"} %input#datepicker :javascript var bookeddates = []; bookeddates = #{raw(@do_dates_easypick.to_json)}; const DateTime = easepick.DateTime; var bookedDates = bookeddates.map(d => { if (d instanceof Array) { const start = new DateTime(d[0], 'YYYY-MM-DD'); const end = new DateTime(d[1], 'YYYY-MM-DD'); return [start, end]; } return new DateTime(d, 'YYYY-MM-DD'); }); const picker = new easepick.create({ element: document.getElementById('datepicker'), css: [ 'https://cdn.jsdelivr.net/npm/@easepick/bundle@1.2.1/dist/index.css', 'https://easepick.com/css/demo_hotelcal.css', ], zIndex: 10, format: "DD/MM/YYYY", yearRange: "-0:+1", grid: 2, calendars: 2, inline: false, plugins: ['RangePlugin', 'LockPlugin'], RangePlugin: { tooltipNumber(num) { return num - 1; }, locale: { one: 'night', other: 'nights', }, }, LockPlugin: { minDate: '2024-04-01', minDays: 2, inseparable: true, filter(date, picked) { if (picked.length === 1) { const incl = date.isBefore(picked[0]) ? '[)' : '(]'; return !picked[0].isSame(date, 'day') && date.inArray(bookedDates, incl); } return date.inArray(bookedDates, '[)'); } } });