赞
踩
若文档加载不出来 请点这里查看
cjcalendar 是一款日常开发常用的日历组件,内部集成常规、单选、时间范围选择、多选、自定义日期每项显示等.
ohpm install cjcalendar
import { CJCalendar } from 'cjcalendar'
CJCalendar()
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
optMode | OptMode | 否 | 操作模式,常规、单选、一段时间、多选:默认:OptMode.NORMAL |
startDate | Date | 否 | 开始日期:默认:new Date(1970, 0, 1) |
endDate | Date | 否 | 截止日期:默认:当前时间+10年 |
titleHeight | Length | 否 | 标题栏高度:默认:50vp |
weeks | string[] | 否 | 星期标题,默认:[“日”,“一”,“二”,“三”,“四”,“五”,“六”,] |
weekTitleFontSize | number | string | Resource | 否 | 星期标题字体大小,默认:12 |
weekTitleFontColor | ResourceColor | 否 | 星期标题字体颜色,默认:“#9E9E9E” |
weekTitleBackgroundColor | ResourceColor | 否 | 星期标题背景色颜色,默认未设置 |
weekTitleHeight | Length | 否 | 星期标栏高度,默认:40 |
titleFontSize | number | string | Resource | 否 | 标题字体大小,默认:18 |
titleFontColor | ResourceColor | 否 | 标题字体颜色,默认:“#252a34” |
showFastToday | boolean | 否 | 是否显示快捷 今,默认:true |
fastTodayFontSize | number | string | Resource | 否 | 快捷返回今天,字体大小,默认:12 |
fastTodayFontColor | Resource | 否 | 快捷返回今天,字体颜色,默认:“#FFFFFF” |
fastTodayBg | Resource | 否 | 快捷返回今天,背景颜色,默认与todayFontColor一致 |
itemFontSize | number | string | Resource | 否 | 日期每一项字体大小,默认:18 |
itemFontColor | Resource | 否 | 日期每一项字体颜色,默认:“#252a34” |
itemFontWeight | Resource | 否 | 日期每一项字体,默认:FontWeight.Normal |
todayFontColor | ResourceColor | 否 | “今”日字体颜色,默认:“#03A9F4” |
disabledFontColor | ResourceColor | 否 | 不能使用的日期字体颜色,默认:“#9E9E9E” |
selectFontColor | ResourceColor | 否 | 选中日期字体颜色,默认:“#FFFFFF” |
selectItemBgColor | ResourceColor | 否 | 选中日期背景颜色, 默认与todayFontColor一致 |
optMode | OptMode | 否 | 操作类型,默认:NORMAL |
rangeStyle | SelectedStyle | 否 | SelectedStyle.ALONE 独立风格,SelectedStyle.CLOSE 封闭风格,默认:SelectedStyle.ALONE 独立圆形选中风格 |
extremityRadius | number | 否 | optMode == OptMode。RANGE且rangeStyle==SelectedStyle.CLOSE 时生效,两头选项的圆角 |
showTime | boolean | 否 | 是否显示时间选择,默认:false |
timeFontSize | number | string | Resource | 否 | 时间选择器字体大小,默认:18 |
timeFontColor | ResourceColor | 否 | 时间选择器字体颜色,默认:item 字体颜色 |
方法 | 参数 | 返回 | 必填 | 说明 |
---|---|---|---|---|
cellLayout | item: CJDateItem | - | 否 | 自定义每一项布局 |
cusCellMainLayout | item: CJDateItem,params: CellFontStyle | - | 否 | 仅自定义日期文字区 |
selectedBackgroundLayout | item: CJDateItem | - | 否 | 仅自定义选中背景样式区 |
titleCenterLayout | - | - | 否 | 自定义日期标题中心内容 |
titleLeftLayout | - | - | 否 | 自定义日期标题左边内容 |
titleRightLayout | - | - | 否 | 自定义日期标题右边内容 |
todayLayout | item: CJDateItem | - | 否 | 仅自定义 今日 样式,当使用cellLayout时,tadayLayout无效 |
fastTodayLayout | - | - | 否 | 快捷回到今天自定义布局 |
disableCellClick | item: CJDateItem | - | 否 | 点击不可用item时的事件响应 |
reBuildDateItem | item: CJDateItem | CJDateItem | 否 | 计算item时,如需添加更多自定义属性时使用 |
onDateChange | date1: CJDateItem | Array, date2?: CJDateItem | - | 否 | 选择变化监听,OptMode.NORMAL/OptMode.SINGLE,只返:date1;OptMode.RANGE:两个都返,date1为开始时间,date2为结束时间;MULTIPLE:返回Array,已选中的日期 |
onTimeChange | time1: CJTimeItem, time2?: CJTimeItem | - | 否 | 时间选择改变监听 |
onMonthChange | after: Date, befor: Date | - | 否 | 月份改变回调:after 改变后,befor:改变前 |
cusTopLayout | preMonth?: () => void, nextMonth?: () => void, backToday?: () => void | - | 否 | 自定义顶部布局,可结合cusTopStateListener使用 |
cusTopStateListener | title?: string, hasPre?: boolean, hasNext?: boolean, showFastToday?: boolean | - | 否 | 自定义顶部布局时,可直接使用该状态回调用于控制顶部状态 |
属性 | 类型 | 描述 |
---|---|---|
fullYear | number | 年 |
month | number | 月 |
date | number | 日期 |
week | number | 星期 |
time | number | 时间戳 |
属性 | 描述 |
---|---|
NORMAL | 常规 |
SINGLE | 单选 |
RANGE | 一段时间 |
MULTIPLE | 多选 |
属性 | 描述 |
---|---|
ALONE | 独立选中风格:默认圆形独立 |
CLOSE | 封闭选中风格:默认举行封闭 |
import { CJCalendar } from 'cjcalendar'
CJCalendar()
CJCalendar({
// 范围选择
optMode: OptMode.RANGE,
rangeStyle: SelectedStyle.CLOSE,// 默认 SelectedStyle.ALONE
// 日期选择变化监听
onDateChange: (start: CJDateItem, end: CJDateItem) => {
console.log(TAG, "start:", JSON.stringify(start))
console.log(TAG, "end:", JSON.stringify(end))
},
})
CJCalendar({
// 范围选择
optMode: OptMode.MULTIPLE,
// 日期选择变化监听
onDateChange: (dates: CJDateItem[]) => {
console.log(TAG, "dates:", JSON.stringify(dates))
},
})
CJCalendar({
// 范围选择
optMode: OptMode.MULTIPLE,
// 修改主题色
todayFontColor: "#00897B",
// 日期选择变化监听
onDateChange: (dates: CJDateItem[]) => {
console.log(TAG, "dates:", JSON.stringify(dates))
},
})
CJCalendar({
// 范围选择
optMode: OptMode.RANGE,
// 修改主题色
todayFontColor: "#E64A19",
// 开始日期
startDate: new Date(2024, 2, 3),
// 截止日期
endDate: new Date(2024, 2, 20),
// 日期选择变化监听
onDateChange: (date1: CJDateItem, date2: CJDateItem) => {
console.log(TAG, "date1:", JSON.stringify(date1))
console.log(TAG, "date2:", JSON.stringify(date2))
},
})
CJCalendar({ // 范围选择 optMode: OptMode.RANGE, // 修改主题色 todayFontColor: "#E64A19", // 开始日期 startDate: new Date(2024, 2, 3), endDate: new Date(2024, 2, 20), // 自定义每项排版布局 cellLayout: (date: CJDateItem) => { this.cellLayout(date) }, // 日期选择变化监听 onDateChange: (date1: CJDateItem, date2: CJDateItem) => { console.log(TAG, "date1:", JSON.stringify(date1)) console.log(TAG, "date2:", JSON.stringify(date2)) }, })
@Builder cellLayout(item: CJDateItem) {
Column() {
Text(item.date + "")
.fontSize(18)
.fontColor(item.isPre || item.isNext ? "#CCCCCC" : "#323232")
Text("你好")
.fontSize(12)
}
}
CJCalendar({ // 范围选择 optMode: OptMode.RANGE, // 修改主题色 todayFontColor: "#E64A19", // 开始日期 startDate: new Date(2024, 2, 3), endDate: new Date(2024, 2, 20), cusTopLayout: ( preMonth: () => void, nextMonth: () => void, backToday: () => void, ) => { this.cusTopLayout(preMonth, nextMonth, backToday) }, cusTopStateListener: (title?: string, hasPre?: boolean, hasNext?: boolean, showFastToday?: boolean) => { this.title = title } })
@Builder cusTopLayout(preMonth: () => void, nextMonth: () => void, backToday: () => void) { Column() { Row() { Button("上一月") .onClick(() => { preMonth() }) Text(this.title) Button("下一月") .onClick(() => { nextMonth() }) Button("今天") .onClick(() => { backToday() }) } .justifyContent(FlexAlign.Center) .width("100%") Text("广告位啥的你来加") .width("100%") .height(100) .fontSize(20) .backgroundColor("#ffcfdf") .fontColor("#112d4e") .textAlign(TextAlign.Center) } .width("100%") }
CJCalendar({
selectedDates: [
"2024-03-12",
"2024-03-15",
"2024-03-18",
"2024-03-28"
],
optMode: OptMode.MULTIPLE,
onDateChange: (dates: CJDateItem[]) => {
console.log(TAG, "date1:", JSON.stringify(dates))
},
})
CJCalendar({
selectedDates: [
"2024-03-05",
"2024-03-13",
],
optMode: OptMode.RANGE,
onDateChange: (date1: CJDateItem, date2: CJDateItem) => {
console.log(TAG, "date1:", JSON.stringify(date1))
console.log(TAG, "date2:", JSON.stringify(date2))
},
})
CJCalendar({
selectedDates: [
"2024-03-11",
],
optMode: OptMode.SINGLE,
onDateChange: (date1: CJDateItem) => {
console.log(TAG, "date1:", JSON.stringify(date1))
},
})
CJCalendar({
optMode: OptMode.RANGE,
rangeStyle: SelectedStyle.CLOSE,// ALONE:独立风格, CLOSE:封闭风格
selectedBackgroundLayout: (item: CJDateItem, isStart?: boolean, isEnd?: boolean) => {
this.AloneSelectedLayout(item, isStart, isEnd)
},
onDateChange: (date1: CJDateItem, date2: CJDateItem) => {
console.log(TAG, "date1:", JSON.stringify(date1))
console.log(TAG, "date2:", JSON.stringify(date2))
},
})
@Builder
SelectedBackgroundLayout(item: CJDateItem, isStart?: boolean, isEnd?: boolean){
Column()
.width("100%")
.height("100%")
.backgroundColor(Color.Brown)
}
CJCalendar({
optMode: OptMode.RANGE,
rangeStyle: SelectedStyle.CLOSE,// ALONE:独立风格, CLOSE:封闭风格
extremityRadius: 999,
selectedBackgroundLayout: (item: CJDateItem, isStart?: boolean, isEnd?: boolean) => {
this.AloneSelectedLayout(item, isStart, isEnd)
},
onDateChange: (date1: CJDateItem, date2: CJDateItem) => {
console.log(TAG, "date1:", JSON.stringify(date1))
console.log(TAG, "date2:", JSON.stringify(date2))
},
})
@Builder
SelectedBackgroundLayout(item: CJDateItem, isStart?: boolean, isEnd?: boolean){
Column()
.width("100%")
.height("100%")
.backgroundColor(Color.Brown)
}
这只是冰山一脚,
还有很多功能可自行探索
。。。。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。