{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","ref","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","onClick","value","index","findIndex","selection","isSameDay","splice","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","i","slotProps","isAdjacent","isHidden","isSelected","isWeekEnd","isWeekStart","isDisabled","isoDate","undefined","showAdjacentMonths","isToday","disabled","icon","ripple","text","localized","variant","default","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { ref } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\nexport type VDatePickerMonthSlots = {\n  day: {\n    props: {\n      onClick: () => void\n    }\n    item: any\n    i: number\n  }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n  color: String,\n  hideWeekdays: Boolean,\n  multiple: Boolean,\n  showWeek: Boolean,\n\n  ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n  name: 'VDatePickerMonth',\n\n  props: makeVDatePickerMonthProps(),\n\n  emits: {\n    'update:modelValue': (date: any) => true,\n    'update:month': (date: any) => true,\n    'update:year': (date: any) => true,\n  },\n\n  setup (props, { emit, slots }) {\n    const daysRef = ref()\n\n    const {\n      daysInMonth,\n      model,\n      weekNumbers,\n    } = useCalendar(props as any) // TODO: fix typing\n    const adapter = useDate()\n\n    function onClick (value: unknown) {\n      if (props.multiple) {\n        const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n        if (index === -1) {\n          model.value = [...model.value, value]\n        } else {\n          const value = [...model.value]\n          value.splice(index, 1)\n          model.value = value\n        }\n      } else {\n        model.value = [value]\n      }\n    }\n\n    return () => (\n      <div class=\"v-date-picker-month\">\n        { props.showWeek && (\n          <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n            { !props.hideWeekdays && (\n              <div key=\"hide-week-days\" class=\"v-date-picker-month__day\">&nbsp;</div>\n            )}\n            { weekNumbers.value.map(week => (\n              <div\n                class={[\n                  'v-date-picker-month__day',\n                  'v-date-picker-month__day--adjacent',\n                ]}\n              >{ week }</div>\n            ))}\n          </div>\n        )}\n\n        <div\n          ref={ daysRef }\n          class=\"v-date-picker-month__days\"\n        >\n          { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n            <div\n              class={[\n                'v-date-picker-month__day',\n                'v-date-picker-month__weekday',\n              ]}\n            >{ weekDay }</div>\n          ))}\n\n          { daysInMonth.value.map((item, i) => {\n            const slotProps = {\n              props: {\n                onClick: () => onClick(item.date),\n              },\n              item,\n              i,\n            } as const\n\n            return (\n              <div\n                class={[\n                  'v-date-picker-month__day',\n                  {\n                    'v-date-picker-month__day--adjacent': item.isAdjacent,\n                    'v-date-picker-month__day--hide-adjacent': item.isHidden,\n                    'v-date-picker-month__day--selected': item.isSelected,\n                    'v-date-picker-month__day--week-end': item.isWeekEnd,\n                    'v-date-picker-month__day--week-start': item.isWeekStart,\n                  },\n                ]}\n                data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n              >\n\n                { (props.showAdjacentMonths || !item.isAdjacent) && (\n                  <VDefaultsProvider\n                    defaults={{\n                      VBtn: {\n                        color: (item.isSelected || item.isToday) && !item.isDisabled\n                          ? props.color\n                          : undefined,\n                        disabled: item.isDisabled,\n                        icon: true,\n                        ripple: false,\n                        text: item.localized,\n                        variant: item.isDisabled\n                          ? 'text'\n                          : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n                        onClick: () => onClick(item.date),\n                      },\n                    }}\n                  >\n                    { slots.day?.(slotProps) ?? (\n                      <VBtn { ...slotProps.props } />\n                    )}\n                  </VDefaultsProvider>\n                )}\n              </div>\n            )\n          })}\n        </div>\n      </div>\n    )\n  },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}