Vulture/VApp/node_modules/vuetify/lib/components/VDatePicker/VDatePickerMonths.mjs

74 lines
2.2 KiB
JavaScript
Raw Normal View History

import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
// Styles
import "./VDatePickerMonths.css";
// Components
import { VBtn } from "../VBtn/index.mjs"; // Composables
import { useDate } from "../../composables/date/index.mjs";
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
import { computed, watchEffect } from 'vue';
import { convertToUnit, createRange, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVDatePickerMonthsProps = propsFactory({
color: String,
height: [String, Number],
modelValue: Number
}, 'VDatePickerMonths');
export const VDatePickerMonths = genericComponent()({
name: 'VDatePickerMonths',
props: makeVDatePickerMonthsProps(),
emits: {
'update:modelValue': date => true
},
setup(props, _ref) {
let {
slots
} = _ref;
const adapter = useDate();
const model = useProxiedModel(props, 'modelValue');
const months = computed(() => {
let date = adapter.startOfYear(adapter.date());
return createRange(12).map(i => {
const text = adapter.format(date, 'monthShort');
date = adapter.getNextMonth(date);
return {
text,
value: i
};
});
});
watchEffect(() => {
model.value = model.value ?? adapter.getMonth(adapter.date());
});
useRender(() => _createVNode("div", {
"class": "v-date-picker-months",
"style": {
height: convertToUnit(props.height)
}
}, [_createVNode("div", {
"class": "v-date-picker-months__content"
}, [months.value.map((month, i) => {
const btnProps = {
active: model.value === i,
color: model.value === i ? props.color : undefined,
rounded: true,
text: month.text,
variant: model.value === month.value ? 'flat' : 'text',
onClick: () => onClick(i)
};
function onClick(i) {
model.value = i;
}
return slots.month?.({
month,
i,
props: btnProps
}) ?? _createVNode(VBtn, _mergeProps({
"key": "month"
}, btnProps, {
"onClick": () => onClick(i)
}), null);
})])]));
return {};
}
});
//# sourceMappingURL=VDatePickerMonths.mjs.map