UNPKG

mealcomes

Version:

MealComes 用于学习前端的组件库

1 lines 20.3 kB
{"version":3,"file":"calendar-BkP1MBrq.mjs","sources":["../../../../packages/components/calendar/src/calendar.ts","../../../../packages/components/calendar/src/date-table.ts","../../../../packages/constants/size.ts","../../../../packages/constants/date.ts","../../../../packages/components/calendar/src/date-table.vue","../../../../packages/components/calendar/src/calendar.vue","../../../../packages/components/calendar/index.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue';\n\n/**\n * calendar 组件日期类型\n */\nexport type CalendarDateType =\n | 'prev-month'\n | 'next-month'\n | 'prev-year'\n | 'next-year'\n | 'today';\n\n/**\n * calendar 组件 props\n */\nexport const calendarProps = {\n modelValue: {\n type: Date\n },\n /**\n * 是否为缩小版\n */\n mini: {\n type: Boolean,\n default: false\n }\n} as const;\n\n/**\n * calendar 组件 props 类型\n */\nexport type CalendarProps = ExtractPropTypes<typeof calendarProps>;\n\n/**\n * calendar 组件 emits\n */\nexport const calendarEmits = {\n 'update:modelValue': (val: Date) => val instanceof Date\n};\n\n/**\n * calendar 组件 emits 类型\n */\nexport type CalendarEmits = typeof calendarEmits;\n","import type { ExtractPropTypes, PropType } from 'vue';\n\nimport { Dayjs } from 'dayjs';\nimport { isObject } from '@mealcomes/utils';\n\nexport type CalendarDateCellType = 'next' | 'prev' | 'current';\nexport type CalendarDateCell = {\n text: number;\n type: CalendarDateCellType;\n};\n\n/**\n * 获取当前日期所在页面上一个月的天数\n */\nexport const getPrevMonthLastDays = (date: Dayjs, count: number) => {\n const lastDay = date.subtract(1, 'month').endOf('month').date();\n return Array.from({ length: count }).map(\n (_, index) => lastDay - (count - index - 1)\n );\n};\n\n/**\n * 获取当前月的天数\n */\nexport const getMonthDays = (date: Dayjs) => {\n const days = date.daysInMonth();\n return Array.from({ length: days }).map((_, index) => index + 1);\n};\n\n/**\n * 一维日历数组转为二维日历数组\n */\nexport const toNestedArr = (days: CalendarDateCell[]) =>\n Array.from({ length: days.length / 7 }).map((_, index) => {\n const start = index * 7;\n return days.slice(start, start + 7);\n });\n\n/**\n * date-table 组件 props\n */\nexport const dateTableProps = {\n /**\n * 当前选中的天\n */\n selectedDay: {\n type: Object as PropType<Dayjs>\n },\n /**\n * 当前的日期\n */\n date: {\n type: Object as PropType<Dayjs>,\n required: true\n }\n} as const;\n\n/**\n * date-table 组件 props 类型\n */\nexport type DateTableProps = ExtractPropTypes<typeof dateTableProps>;\n\n/**\n * date-table 组件 emits\n */\nexport const dateTableEmits = {\n /**\n * 当选中了某个日期的时候触发\n */\n pick: (value: Dayjs) => isObject(value)\n};\n\n/**\n * date-table 组件 emits 类型\n */\nexport type DateTableEmits = typeof dateTableEmits;\n","export const componentSizes = ['', 'default', 'small', 'large'] as const;\n\nexport type ComponentSize = (typeof componentSizes)[number];\n\nexport const componentSizeMap = {\n large: 40,\n default: 32,\n small: 24\n} as const;\n","export const WEEK_DAYS = [\n '星期日',\n '星期一',\n '星期二',\n '星期三',\n '星期四',\n '星期五',\n '星期六'\n] as const;\n","<template>\n <table :class=\"[bemTable.b()]\" cellspacing=\"0\" cellpadding=\"0\">\n <thead>\n <tr>\n <th v-for=\"day in weekDays\" :key=\"day\" scope=\"col\">\n {{ day }}\n </th>\n </tr>\n </thead>\n\n <tbody>\n <tr\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :class=\"{\n [bemTable.e('row')]: true\n }\"\n >\n <td\n v-for=\"(cell, key) in row\"\n :key=\"key\"\n :class=\"getCellClass(cell)\"\n @click=\"handlePickDay(cell)\"\n >\n <div :class=\"bemDay.b()\">\n <slot name=\"date-cell\" :data=\"getSlotData(cell)\">\n <span>{{ cell.text }}</span>\n </slot>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script setup lang=\"ts\">\nimport { createNamespace } from '@mealcomes/utils';\nimport {\n dateTableEmits,\n dateTableProps,\n getMonthDays,\n getPrevMonthLastDays,\n toNestedArr\n} from './date-table';\nimport type { CalendarDateCell, CalendarDateCellType } from './date-table';\nimport { computed } from 'vue';\nimport dayjs, { Dayjs } from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData.js';\nimport { WEEK_DAYS } from '@mealcomes/constants';\n\ndefineOptions({\n name: 'date-table'\n});\n\nconst bemTable = createNamespace('calendar-table');\nconst bemDay = createNamespace('calendar-day');\nconst props = defineProps(dateTableProps);\nconst emits = defineEmits(dateTableEmits);\n\nconst now = dayjs();\ndayjs.extend(localeData);\nconst firstDayOfWeek: number = dayjs.localeData().firstDayOfWeek();\n\n/**\n * 表头 星期\n */\nconst weekDays = computed(() => {\n const start = firstDayOfWeek;\n if (start === 0) {\n return WEEK_DAYS.map(val => val.slice(2));\n } else {\n return WEEK_DAYS.slice(start)\n .concat(WEEK_DAYS.slice(0, start))\n .map(val => val.slice(2));\n }\n});\n\n/**\n * 面板 日期(6行 * 7列)\n */\nconst rows = computed(() => {\n let days: CalendarDateCell[] = [];\n\n const firstDay = props.date.startOf('month').day();\n // 前一月的天数\n const prevMonthDays: CalendarDateCell[] = getPrevMonthLastDays(\n props.date,\n (firstDay - firstDayOfWeek + 7) % 7\n ).map(day => ({\n text: day,\n type: 'prev'\n }));\n // 当前月的天数\n const currentMonthDays: CalendarDateCell[] = getMonthDays(props.date).map(\n day => ({\n text: day,\n type: 'current'\n })\n );\n days = [...prevMonthDays, ...currentMonthDays];\n\n // 7 * 6\n const remaining = 42 - days.length;\n // 下一个月的天数\n const nextMonthDays: CalendarDateCell[] = Array.from({\n length: remaining\n }).map((_, index) => ({\n text: index + 1,\n type: 'next'\n }));\n days = days.concat(nextMonthDays);\n\n return toNestedArr(days);\n});\n\nconst getFormattedDate = (day: number, type: CalendarDateCellType): Dayjs => {\n switch (type) {\n case 'prev':\n return props.date.startOf('month').subtract(1, 'month').date(day);\n case 'next':\n return props.date.startOf('month').add(1, 'month').date(day);\n case 'current':\n return props.date.date(day);\n }\n};\n\n/**\n * 获取当前插槽的数据\n */\nconst getSlotData = ({ text, type }: CalendarDateCell) => {\n const day = getFormattedDate(text, type);\n return {\n isSelected: day.isSame(props.selectedDay),\n type: `${type}-month`,\n day: day.format('YYYY-MM-DD'),\n date: day.toDate()\n };\n};\n\nconst getCellClass = ({ text, type }: CalendarDateCell) => {\n const classes: string[] = [type];\n if (type === 'current') {\n const date = getFormattedDate(text, type);\n if (date.isSame(props.selectedDay, 'day')) {\n classes.push(bemDay.is('selected', true));\n }\n if (date.isSame(now, 'day')) {\n classes.push(bemDay.is('today', true));\n }\n }\n return classes;\n};\n\nconst handlePickDay = ({ text, type }: CalendarDateCell) => {\n const date = getFormattedDate(text, type);\n emits('pick', date);\n};\n</script>\n","<template>\n <div :class=\"[bem.b(), bem.is('mini', mini)]\">\n <div :class=\"bem.e('header')\">\n <slot name=\"header\" :date=\"selectedMonth\">\n <div :class=\"bem.e('title')\">\n {{ selectedMonth }}\n </div>\n <div :class=\"bem.e('button-group')\">\n <mc-button size=\"small\" @click=\"selectDate('prev-year')\"\n >前一年</mc-button\n >\n <mc-button size=\"small\" @click=\"selectDate('prev-month')\"\n >上个月</mc-button\n >\n <mc-button size=\"small\" @click=\"selectDate('today')\"\n >今天</mc-button\n >\n <mc-button size=\"small\" @click=\"selectDate('next-month')\"\n >下个月</mc-button\n >\n <mc-button size=\"small\" @click=\"selectDate('next-year')\"\n >后一年</mc-button\n >\n </div>\n </slot>\n </div>\n <div :class=\"bem.e('body')\">\n <date-table\n :class=\"[bem.is('mini', mini)]\"\n :date=\"date\"\n :selected-day=\"realSelectedDay\"\n @pick=\"pickDay\"\n >\n <template v-if=\"$slots['date-cell']\" #date-cell=\"data\">\n <slot name=\"date-cell\" v-bind=\"data\" />\n </template>\n </date-table>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { createNamespace } from '@mealcomes/utils';\nimport McButton from '@mealcomes/components/button';\nimport { calendarEmits, calendarProps } from './calendar';\nimport type { CalendarDateType } from './calendar';\nimport { computed, ref } from 'vue';\nimport DateTable from './date-table.vue';\nimport dayjs, { Dayjs } from 'dayjs';\n\ndefineOptions({\n name: 'mc-calendar'\n});\n\nconst bem = createNamespace('calendar');\nconst props = defineProps(calendarProps);\nconst emits = defineEmits(calendarEmits);\n\nconst now = dayjs();\nconst selectedDay = ref<Dayjs>();\nconst date = computed((): Dayjs => {\n if (!props.modelValue) {\n return realSelectedDay.value || now;\n } else {\n return dayjs(props.modelValue);\n }\n});\nconst selectedMonth = computed(\n () => `${date.value.year()} - ${date.value.format('M')}`\n);\n\nconst realSelectedDay = computed<Dayjs | undefined>({\n get() {\n if (!props.modelValue) return selectedDay.value;\n return date.value;\n },\n set(val) {\n if (!val) return;\n selectedDay.value = val;\n const result = val.toDate();\n\n emits('update:modelValue', result);\n }\n});\n\nconst pickDay = (day: Dayjs) => {\n realSelectedDay.value = day;\n};\n\nconst prevMonthDayjs = computed(() => date.value.subtract(1, 'month').date(1));\nconst nextMonthDayjs = computed(() => date.value.add(1, 'month').date(1));\nconst prevYearDayjs = computed(() => date.value.subtract(1, 'year').date(1));\nconst nextYearDayjs = computed(() => date.value.add(1, 'year').date(1));\nconst selectDate = (type: CalendarDateType) => {\n const dateMap: Record<CalendarDateType, Dayjs> = {\n 'prev-month': prevMonthDayjs.value,\n 'next-month': nextMonthDayjs.value,\n 'prev-year': prevYearDayjs.value,\n 'next-year': nextYearDayjs.value,\n today: now\n };\n\n const day = dateMap[type];\n\n if (!day.isSame(date.value, 'day')) {\n pickDay(day);\n }\n};\n\ndefineExpose({\n /** 当前选中的日期 */\n selectedDay: realSelectedDay,\n /** 选择指定的某一天 */\n pickDay,\n /** 选择日期 */\n selectDate\n});\n</script>\n","import { withInstall } from '@mealcomes/utils';\nimport _Calendar from './src/calendar.vue';\n\nexport const McCalendar = withInstall(_Calendar);\n\nexport default McCalendar;\n\nexport type * from './src/calendar';\nexport * from './src/calendar';\n\nexport type CalendarInstance = InstanceType<typeof McCalendar>;\n\ndeclare module 'vue' {\n export interface GlobalComponents {\n McCalendar: typeof McCalendar;\n }\n}\n"],"names":["calendarProps","calendarEmits","val","getPrevMonthLastDays","date","count","lastDay","_","index","getMonthDays","days","toNestedArr","start","dateTableProps","dateTableEmits","value","isObject","componentSizes","componentSizeMap","WEEK_DAYS","bemTable","createNamespace","bemDay","props","__props","emits","__emit","now","dayjs","localeData","firstDayOfWeek","weekDays","computed","rows","firstDay","prevMonthDays","day","currentMonthDays","remaining","nextMonthDays","getFormattedDate","type","getSlotData","text","getCellClass","classes","handlePickDay","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_Fragment","_renderList","_openBlock","row","cell","key","$event","_renderSlot","_ctx","_toDisplayString","bem","selectedDay","ref","realSelectedDay","selectedMonth","result","pickDay","prevMonthDayjs","nextMonthDayjs","prevYearDayjs","nextYearDayjs","selectDate","__expose","mini","_createVNode","McButton","_cache","DateTable","$slots","_withCtx","data","McCalendar","withInstall","_Calendar"],"mappings":"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"}