VCalendarDay.mjs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
  2. // Styles
  3. import "./VCalendarDay.css";
  4. // Components
  5. import { makeVCalendarIntervalProps, VCalendarInterval } from "./VCalendarInterval.mjs";
  6. import { VBtn } from "../../components/VBtn/index.mjs"; // Composables
  7. import { useDate } from "../../composables/date/index.mjs"; // Utilities
  8. import { computed } from 'vue';
  9. import { genericComponent, propsFactory, useRender } from "../../util/index.mjs";
  10. export const makeVCalendarDayProps = propsFactory({
  11. hideDayHeader: Boolean,
  12. intervals: {
  13. type: Number,
  14. default: 24
  15. },
  16. ...makeVCalendarIntervalProps()
  17. }, 'VCalendarDay');
  18. export const VCalendarDay = genericComponent()({
  19. name: 'VCalendarDay',
  20. props: makeVCalendarDayProps(),
  21. setup(props) {
  22. const adapter = useDate();
  23. const intervals = computed(() => [...Array.from({
  24. length: props.intervals
  25. }, (v, i) => i).filter((int, index) => props.intervalDuration * (index + props.intervalStart) < 1440)]);
  26. useRender(() => {
  27. const calendarIntervalProps = VCalendarInterval.filterProps(props);
  28. return _createVNode("div", {
  29. "class": "v-calendar-day__container"
  30. }, [!props.hideDayHeader && _createVNode("div", {
  31. "key": "calender-week-name",
  32. "class": "v-calendar-weekly__head-weekday"
  33. }, [adapter.format(props.day.date, 'weekdayShort'), _createVNode("div", null, [_createVNode(VBtn, {
  34. "icon": true,
  35. "text": adapter.format(props.day.date, 'dayOfMonth'),
  36. "variant": "text"
  37. }, null)])]), intervals.value.map((_, index) => _createVNode(VCalendarInterval, _mergeProps({
  38. "index": index
  39. }, calendarIntervalProps), null))]);
  40. });
  41. return {
  42. intervals
  43. };
  44. }
  45. });
  46. //# sourceMappingURL=VCalendarDay.mjs.map