Как в календаре vue заблокировать прошлые дни + сегодняшний?

Для блокировки прошлых дней и сегодняшнего дня в календаре Vue можно использовать различные подходы. Один из наиболее распространенных подходов - это использование фильтрации дат.

Первым шагом я бы предложил добавить дополнительное поле в каждый элемент вашего списка дат в календаре, чтобы указать, является ли дата прошедшей, текущей или будущей датой. Например, вы можете добавить поле "status" со значениями "past", "today" и "future".

После этого, вы можете использовать эту информацию для условной фильтрации дат при их отображении в календаре. В Vue это можно сделать с помощью директивы v-for и условного оператора v-if. Например:

<template>
  <div>
    <div v-for="date in filteredDates" :key="date.id">
      <span :class="{ 'past': date.status === 'past', 'today': date.status === 'today' }">
        {{ date }}
      </span>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dates: [
        { id: 1, date: '2022-10-20', status: 'past' },
        { id: 2, date: '2022-10-21', status: 'past' },
        { id: 3, date: '2022-10-22', status: 'today' },
        { id: 4, date: '2022-10-23', status: 'future' },
        // добавить здесь остальные даты
      ]
    };
  },
  computed: {
    filteredDates() {
      const today = new Date().toISOString().split('T')[0];
      return this.dates.filter(date => date.status !== 'past' && date.date !== today);
    }
  }
};
</script>

<style scoped>
.past {
  color: #ccc;
}
.today {
  background-color: yellow;
}
</style>

В приведенном выше коде я добавил классы CSS для прошлых дат и сегодняшнего дня, чтобы выделить их визуально. Класс "past" добавляет серый цвет к прошлым датам, а класс "today" добавляет желтый фон к текущей дате.

В данном примере используется вычислимое свойство "filteredDates", которое фильтрует оригинальный список дат, исключая прошлые даты и текущую дату.

Важно помнить, что технически этот метод фильтрации на клиентской стороне может быть обходом. Если вам нужна полная блокировка дат, включая серверную проверку, вам может потребоваться отправить запрос на сервер и получить обновленный список дат в зависимости от текущего состояния календаря.

Надеюсь, это поможет вам реализовать блокировку прошлых дат и сегодняшнего дня в вашем календаре Vue!