Для этого нужен генератор календаря. Там генерируешь себе инфу о нужном месяце, в какой день начинается, сколько дней в нем и тд. Так и заполняешь. Пустые клетки заполняешь датами предыдущего и следующего.
Либо по клику обращаешься к api бэкенда, которые сгенерирует разметку, ее просто вставляешь.
Учитывая возможный функционал, придется использовать второй вариант. Нажал кнопку, получил html от бэкенда, заменил.