TnCalendar-日历
此组件用于选择日期,可以选择单个日期、多个日期、日期区间。可以配合TnPopup
组件一起使用实现从底部弹出的日历选择器。
组件位置
typescript
import TnCalendar from '@tuniao/tnui-vue3-uniapp/components/calendar/src/calendar.vue'
import TnCalendar from '@tuniao/tnui-vue3-uniapp/components/calendar/src/calendar.vue'
typescript
import TnCalendar from '@/uni_modules/tuniaoui-vue3/components/calendar/src/calendar.vue'
import TnCalendar from '@/uni_modules/tuniaoui-vue3/components/calendar/src/calendar.vue'
平台差异说明
App(vue) | H5 | 微信小程序 | 支付宝小程序 | ... |
---|---|---|---|---|
√ | √ | √ | √ | 适配中 |
基础使用
- 通过
v-model
绑定日期数据,传递的日期格式式为YYYY-MM-DD
或者YYYY/MM/DD
,如2023-06-12
或2023/06/12
- 将
show-lunar
设置为 true 将显示农历信息
vue
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref('')
</script>
<template>
<TnCalendar v-model="selectDate" />
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref('')
</script>
<template>
<TnCalendar v-model="selectDate" />
</template>
日历模式
单选模式-默认
将mode
设置为date
日历组件将以单选模式显示,此时v-model
绑定的值为YYYY-MM-DD
或者YYYY/MM/DD
格式的字符串
vue
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref('')
</script>
<template>
<TnCalendar v-model="selectDate" mode="date" />
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref('')
</script>
<template>
<TnCalendar v-model="selectDate" mode="date" />
</template>
多选模式
将mode
设置为multi
日历组件将以多选模式显示,此时v-model
绑定的值为YYYY-MM-DD
或者YYYY/MM/DD
格式的字符串数组
vue
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref<string[]>([])
</script>
<template>
<TnCalendar v-model="selectDate" mode="multi" />
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref<string[]>([])
</script>
<template>
<TnCalendar v-model="selectDate" mode="multi" />
</template>
区间模式
将mode
设置为range
日历组件将以区间模式显示,此时v-model
绑定的值为YYYY-MM-DD
或者YYYY/MM/DD
格式的字符串数组,数组长度为 2,第一个元素为开始日期,第二个元素为结束日期
在区间模式下可以通过range-start-desc
和range-end-desc
设置开始时间的文案和结束时间的文案
vue
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref<string[]>([])
</script>
<template>
<TnCalendar v-model="selectDate" mode="range" />
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref<string[]>([])
</script>
<template>
<TnCalendar v-model="selectDate" mode="range" />
</template>
区间模式-自定义文案
vue
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref<string[]>([])
</script>
<template>
<TnCalendar
v-model="selectDate"
mode="range"
range-start-desc="入住"
range-end-desc="离店"
/>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref<string[]>([])
</script>
<template>
<TnCalendar
v-model="selectDate"
mode="range"
range-start-desc="入住"
range-end-desc="离店"
/>
</template>
自定义日历样式
- 通过
active-bg-color
设置日历激活日期的背景颜色,可以使用图鸟内置的背景色、hex、rgb、rgba - 通过
active-text-color
设置日历激活日期的文字颜色,支持图鸟内置的颜色值、hex、rgb、rgba - 通过
range-bg-color
设置在区间范围内的日期的背景颜色,可以使用图鸟内置的背景色、hex、rgb、rgba - 通过
range-text-color
设置在区间范围内的日期的文字颜色,支持图鸟内置的颜色值、hex、rgb、rgba
vue
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref('')
</script>
<template>
<TnCalendar
v-model="selectDate"
active-bg-color="tn-grey"
active-text-color="#01beff"
/>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref('')
</script>
<template>
<TnCalendar
v-model="selectDate"
active-bg-color="tn-grey"
active-text-color="#01beff"
/>
</template>
设置最小日期和最大日期
通过min-date
和max-date
设置最小日期和最大日期,日期格式为YYYY-MM-DD
或者YYYY/MM/DD
如果不设置则默认以当前月的第一天
和当前时间年份最后一天
为最小日期
和最大日期
vue
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref('')
</script>
<template>
<TnCalendar
v-model="selectDate"
min-date="2019-12-27"
max-date="2024-02-01"
/>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const selectDate = ref('')
</script>
<template>
<TnCalendar
v-model="selectDate"
min-date="2019-12-27"
max-date="2024-02-01"
/>
</template>
API
Props
属性名 | 说明 | 类型 | 默认值 | 可选值 |
---|---|---|---|---|
model-value/v-model | 日历绑定的值,支持的格式为 YYYY/MM/DD 2023/01/01 或者 YYYY-MM-DD 2023-01-01 [2023/01/01, 2023/01/02] [2023-01-01, 2023-01-02] | String | Array<String> | - | - |
mode | 日历选择日期模式 | String | date | multi \ range |
min-date | 最小可选日期,支持的格式为 YYYY/MM/DD 或者 YYYY-MM-DD,如果没有设置最小值则以当前日期作为最小值 | String | - | - |
max-date | 最大可选日期,支持的格式为 YYYY/MM/DD 或者 YYYY-MM-DD,如果没有设置最大值则以当前年份最后一天作为最大值 | String | - | - |
active-bg-color | 被选中日期的背景颜色,可以使用图鸟内置的背景色、hex、rgb、rgba | String | - | - |
active-text-color | 被选中日期的文字颜色,支持图鸟内置的颜色值、hex、rgb、rgba | String | - | - |
range-bg-color | 范围内日期的背景颜色,可以使用图鸟内置的背景色、hex、rgb、rgba | String | - | - |
range-text-color | 范围内日期的文字颜色,支持图鸟内置的颜色值、hex、rgb、rgba | String | - | - |
allow-change-year | 允许切换年份 | Boolean | true | false |
allow-change-month | 允许切换月份 | Boolean | true | false |
show-lunar | 是否显示农历 | Boolean | false | true |
range-start-desc | 日期范围开始时间的文案 | String | 开始 | - |
range-end-desc | 日期范围结束时间的文案 | String | 结束 | - |
Emits
事件名 | 说明 | 类型 |
---|---|---|
change | 所选日期发生修改事件 | (value: string | string[]) => void |
change-year | 切换年份触发事件 | (value: number) => void |
change-month | 切换月份触发事件 | (value: number) => void |