{"version":3,"file":"VDatePickerMonths.mjs","names":["VBtn","useDate","useProxiedModel","computed","watchEffect","convertToUnit","createRange","genericComponent","propsFactory","useRender","makeVDatePickerMonthsProps","color","String","height","Number","min","max","modelValue","year","VDatePickerMonths","name","props","emits","date","setup","_ref","emit","slots","adapter","model","months","startOfYear","setYear","map","i","text","format","isDisabled","isAfter","startOfMonth","getNextMonth","value","getMonth","_createVNode","month","btnProps","active","undefined","disabled","rounded","variant","onClick","_mergeProps"],"sources":["../../../src/components/VDatePicker/VDatePickerMonths.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonths.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthsSlots = {\n  month: {\n    month: {\n      text: string\n      value: number\n    }\n    i: number\n    props: {\n      onClick: () => void\n    }\n  }\n}\n\nexport const makeVDatePickerMonthsProps = propsFactory({\n  color: String,\n  height: [String, Number],\n  min: null as any as PropType<unknown>,\n  max: null as any as PropType<unknown>,\n  modelValue: Number,\n  year: Number,\n}, 'VDatePickerMonths')\n\nexport const VDatePickerMonths = genericComponent<VDatePickerMonthsSlots>()({\n  name: 'VDatePickerMonths',\n\n  props: makeVDatePickerMonthsProps(),\n\n  emits: {\n    'update:modelValue': (date: any) => true,\n  },\n\n  setup (props, { emit, slots }) {\n    const adapter = useDate()\n    const model = useProxiedModel(props, 'modelValue')\n\n    const months = computed(() => {\n      let date = adapter.startOfYear(adapter.date())\n      if (props.year) {\n        date = adapter.setYear(date, props.year)\n      }\n      return createRange(12).map(i => {\n        const text = adapter.format(date, 'monthShort')\n        const isDisabled =\n          !!(\n            (props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date)) ||\n            (props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))))\n          )\n        date = adapter.getNextMonth(date)\n\n        return {\n          isDisabled,\n          text,\n          value: i,\n        }\n      })\n    })\n\n    watchEffect(() => {\n      model.value = model.value ?? adapter.getMonth(adapter.date())\n    })\n\n    useRender(() => (\n      <div\n        class=\"v-date-picker-months\"\n        style={{\n          height: convertToUnit(props.height),\n        }}\n      >\n        <div class=\"v-date-picker-months__content\">\n          { months.value.map((month, i) => {\n            const btnProps = {\n              active: model.value === i,\n              color: model.value === i ? props.color : undefined,\n              disabled: month.isDisabled,\n              rounded: true,\n              text: month.text,\n              variant: model.value === month.value ? 'flat' : 'text',\n              onClick: () => onClick(i),\n            } as const\n\n            function onClick (i: number) {\n              if (model.value === i) {\n                emit('update:modelValue', model.value)\n                return\n              }\n              model.value = i\n            }\n\n            return slots.month?.({\n              month,\n              i,\n              props: btnProps,\n            }) ?? (\n              <VBtn\n                key=\"month\"\n                { ...btnProps }\n              />\n            )\n          })}\n        </div>\n      </div>\n    ))\n\n    return {}\n  },\n})\n\nexport type VDatePickerMonths = InstanceType<typeof VDatePickerMonths>\n"],"mappings":"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","ignoreList":[]}