1.4.30 • Published 2 years ago

vue-hash-calendar v1.4.30

Weekly downloads
114
License
MIT
Repository
github
Last release
2 years ago

Build Status version download visitors license author

简体中文 | English

按照惯例,先上效果图

calendar.gif dot.gif week.gif yearmonth.gif

Demo

demo_qrcode.png

或者请用浏览器的手机模式查看:https://www.hxkj.vip/demo/calendar/

  • 🎉 觉得好用可以给一个 star 哦~~ 🎉

仓库地址

其他版本

vue-hash-calendar

  • 基于 vue 2.X 开发的日历组件
  • 支持手势滑动操作
  • 原生 js 开发,没引入第三方库
  • 支持快速切换年份和月份
  • 上下滑动 切换 周/月 模式

    【周模式中】 左右滑动可切换 上一周/下一周 【月模式中】 左右滑动可切换 上一月/下一月

安装使用说明

vue-hash-calendar

npm i -S vue-hash-calendar

// 在入口文件中(main.js),导入组件库
import vueHashCalendar from 'vue-hash-calendar'
// 引入组件CSS样式
import 'vue-hash-calendar/lib/vue-hash-calendar.css'
// 注册组件库
Vue.use(vueHashCalendar)
// 在VUE文件中引入组件
<vue-hash-calendar />

CDN 方式引入

//在 index.html 加入以下两个 CDN 链接:
js CDN:https://cdn.jsdelivr.net/npm/vue-hash-calendar@{version}/lib/vue-hash-calendar.umd.min.js
css CDN: https://cdn.jsdelivr.net/npm/vue-hash-calendar@{version}/lib/vue-hash-calendar.css

//然后在 webpack 配置中,加入以下配置。
externals: {
'vue-hash-calendar': 'VueHashCalendar'
},

API

属性说明类型默认是否必传
visible控制日历组件的显示或隐藏,需使用 .sync 修饰符Booleanfalse
scrollChangeDate控制滑动的时候是否修改选中的日期Booleantrue
model日历组件以哪种形式展示。inline:内联的方式。dialog:弹窗的方式Stringinline
defaultDatetime指定默认时间。Date当前时间
minDate指定日历最小日期范围,设置之后只能在该范围内滑动日历。Date--
maxDate指定日历最大日期范围,设置之后只能在该范围内滑动日历。Date--
format确认日期时,回调事件返回的日期格式。如“YY/MM/DD hh:mm” 、“YY 年 MM 月第 DD 天,当前时间 hh 时 mm 分”、“MM DD,YY at hh:mm F”StringYY/MM/DD hh:mm
weekStart以星期几作为日历每一周的起始星期。可选'sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'Stringsunday
pickerType选择器类型 datetime:日期+时间 date:日期 time:时间Stringdatetime
showTodayButton是否显示返回今日按钮Booleantrue
isShowWeekView是否以周视图展示组件Booleanfalse
isShowArrow是否显示周月切换时的指示箭头(日历下方的小箭头),当 model 等于 inline 时生效Booleanfalse
isShowAction是否显示日历组件操作栏(标题栏)Booleantrue
isShowNotCurrentMonthDay是否展示日历中的非本月日期(灰色部分日期)Booleantrue
isAutoChangeMonth点击非本月日期是否自动切换月份Booleantrue
disabledWeekView禁用周视图(设置为 true 后,无法上下滑动进行周/月切换)Booleanfalse
disabledDate设置日期的禁用状态,参数为当前日期,要求返回 Boolean (禁用该日期需返回 true)Function---
disabledTime设置时间的禁用状态,参数为当前日期,要求返回 Boolean (禁用该时间需返回 true)Function---
disabledScroll设置日历的禁止滑动方向。可选'left', 'right', 'up', 'down', 'horizontal', 'vertical', true, false 。可取其一控制单个方向,其中 truefalse 控制所有方向。Boolean, Stringfalse
markDate需要被标记的日期,可按不同颜色不同标记类型分组标记(不分组默认蓝色)。如:[{color: 'red',date: '2019/02/25'},{color: 'blue',type: 'dot',date: '2019/01/20'},'2019/03/20']Array[]
markType标记图案类型 dot:小圆点(日期下方小圆点标记) circle:小圆圈(日期被小圆圈包围) dot+circle:同时使用小圆点与圆圈标记Stringdot
minuteStep间隔时间。(分钟的步长)Number1
lang选择的语言版本。可选值:'CN', 'EN'StringCN
changeYearFast是否支持点击操作栏(标题栏)的日期区域快速切换年份Booleanfalse
themeColor用于修改日历主题色{ 'main-color': string; 'bg-color': string; 'main-font-color': string; 'vice-font-color': string; 'disabled-bg-color': string; 'disabled-font-color': string;}---
disabledClassName日期被禁用时的 className。用于修改日期被禁用时的默认样式String---
notCurrentMonthDayClassName非当前展示月份日期的 className(例如日历前面几天与后面几天灰色部分)。用于修改非当前展示月份日期的默认样式String---
checkedDayClassName日期被选中时的 className。用于修改日期被选中时的默认样式String---
todayClassName当天日期的 className。用于修改当天日期的默认样式String---
firstDayOfMonthClassName每月第一天的 className。用于修改每月第一天的默认样式String---

事件

事件名称说明参数
change日期改变时,触发该事件。(返回的日期格式取决于 format 属性)(date: 日期改变时,选中的日期)
confirm点击确认按钮时,触发该事件,dialog 模式中才有该按钮。(返回的日期格式取决于 format 属性)(date: 点击确认按钮时,选中的日期)
click点击日期时,触发该事件。(返回的日期格式取决于 format 属性)(date: 当前点击的日期)
touchstart日历滑动 start 事件,同于原生该事件。(event: touch 事件)
touchmove日历滑动 move 事件,同于原生该事件。(event: touch 事件)
touchend日历滑动 end 事件,同于原生该事件。(event: touch 事件)
slidechange日历滑动的方向。返回值:right、left、up、down 。(direction: 滑动的方向)
calendarTypeChange日历展示类型切换时触发。返回值:time、week、date、month、year、yearRange 。(type: 日历展示面板类型)

插槽 Slot

name说明
day自定义日期内容。例如可用于添加农历之类的。配合自定义 className 使用,效果更佳!参数为 { date, extendAttr },其中 extendAttr 参数包含 isMarked(该日期是否被标记)、isDisabledDate(该日期是否被禁用)、isToday(该日期是否为今天)、isChecked(该日期是否被选中)、isCurrentMonthDay(该日期是否为本月日期)、isFirstDayOfMonth(该日期是否为当月第一天),可用于一些特殊需求
week自定义星期内容。例如可用于自定义星期样式等等。参数为 { week }
arrow自定义周月切换时的指示箭头。参数为 { show },show: 类型为 Boolen,表示当前是否为周视图
today自定义 "今天" 按钮文字内容以及样式
confirm自定义 "确定" 按钮文字内容以及样式
action自定义操作栏(标题栏)内容以及样式

方法 Method

方法名称说明版本
lastMonth切换日历到上一月1.3.20
nextMonth切换日历到下一月1.3.20
lastWeek切换日历到上一周1.3.20
nextWeek切换日历到下一周1.3.20
today返回今日。当今日被禁用时,不生效1.3.20

Other

  • 如何添加农历/节假日?
https://github.com/TangSY/vue-hash-calendar/blob/master/examples/lunar/LunarDemo.vue
  • 在 dialog 模式中,如何显示日历组件?注意使用 .sync 修饰符
<vue-hash-calendar :visible.sync="isShowCalendar"></vue-hash-calendar>

//设置为true
this.isShowCalendar = true;
  • cdn 方式引入的组件,为什么有些属性不起作用?
在非 webpack 开发模式下,属性名称不能使用驼峰命名。例如:isShowAction 需要写成 is-show-action.
  • 想要返回标准的英文格式日期,format 属性应该怎样写? MM DD,YY at hh:mm F
<vue-hash-calendar format="MM DD,YY at hh:mm F" />
  • 想要返回 12 小时制的日期,format 属性应该怎样写? 在格式化字符串后面加上大写 F
<vue-hash-calendar format="YY/MM/DD hh:mm F" />
  • 设置了 disabledScroll="vertical" 之后,滑动日历区域导致页面也无法滚动?使用 disabledWeekView 属性代替
<vue-hash-calendar :disabled-week-view="true" />
  • day slot 的基本用法
https://github.com/TangSY/vue-hash-calendar/blob/dev/examples/FirstDayDemo.vue
  • 能否通过外部的某个按钮来触发日历的展开和收起
可以在外部通过修改 isShowWeekView 的值来控制日历的收起与展开
  • 如何设置禁用日期? 可参考源码中 App.vue 文件
// 例如禁用今日之前的所有日期

/** vue模板文件 **/
<vue-hash-calendar :disabled-date="disabledDate"></vue-hash-calendar>

/** vue methods 中的方法 **/
disabledDate(date) {
    let timestamp = date.getTime();
    if (timestamp > new Date().getTime()) {
        return true
    }

    return false
}
  • 如何设置禁用日期? 可参考源码中 App.vue 文件
// 例如禁用现在之前的时间

/** vue模板文件 **/
<vue-hash-calendar :disabled-time="disabledTime"></vue-hash-calendar>

/** vue methods 中的方法 **/
disabledTime(date) { // 禁用的时间
  let hours = date.getHours()
  let minute = date.getMinutes()
  let hoursNow = new Date().getHours()
  let minuteNow = new Date().getMinutes()

  if (hours < hoursNow || (hours === hoursNow && minute < minuteNow)) {
    return true
  }
  return false
}
  • 如果有其他问题, 或者功能上不兼容的。可以邮件沟通 t@tsy6.com,或者 github 提交 issue。

赞助

pay.jpg

1.4.29

2 years ago

1.4.30

2 years ago

1.4.26

2 years ago

1.4.28

2 years ago

1.4.27

2 years ago

1.4.20

2 years ago

1.4.22

2 years ago

1.4.24

2 years ago

1.4.25

2 years ago

1.4.17

2 years ago

1.4.16

2 years ago

1.4.13

2 years ago

1.4.12

2 years ago

1.4.15

2 years ago

1.4.11

2 years ago

1.4.6

2 years ago

1.4.4

2 years ago

1.4.3

2 years ago

1.4.2

2 years ago

1.4.1

3 years ago

1.3.20

3 years ago

1.3.17

3 years ago

1.3.16

3 years ago

1.3.15

3 years ago

1.3.14

3 years ago

1.3.12

3 years ago

1.3.6

3 years ago

1.3.5

3 years ago

1.3.2

3 years ago

1.3.1

3 years ago

1.3.0

3 years ago

1.2.31

3 years ago

1.2.30

3 years ago

1.2.29

3 years ago

1.2.28

3 years ago

1.2.27

3 years ago

1.2.25

3 years ago

1.2.24

3 years ago

1.2.23

3 years ago

1.2.22

3 years ago

1.2.21

4 years ago

1.2.20

4 years ago

1.2.19

4 years ago

1.2.17

4 years ago

1.2.16

4 years ago

1.2.12

4 years ago

1.2.11

4 years ago

1.2.10

4 years ago

1.2.9

4 years ago

1.2.7

4 years ago

1.2.6

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.2.1

4 years ago

1.1.25

4 years ago

1.1.24

4 years ago

1.1.23

4 years ago

1.1.22

4 years ago

1.1.21

4 years ago

1.1.18

4 years ago

1.1.17

4 years ago

1.1.16

4 years ago

1.1.15

4 years ago

1.1.14

4 years ago

1.1.13

4 years ago

1.1.12

4 years ago

1.1.10

4 years ago

1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.0.24

5 years ago

1.0.23

5 years ago

1.0.22

5 years ago

1.0.21

5 years ago

1.0.19

5 years ago

1.0.18

5 years ago

1.0.17

5 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.4

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago