FullCalendar日历组件集成系列3——插件与界面优化

插件

作为一款优秀设计,FullCalendar实现了插件化。
在先前的配置中,我们参照官方示例实现了一个基本的Demo,引入了组件如下:

import FullCalendar from '@fullcalendar/vue3'
import dayGridPlugin from '@fullcalendar/daygrid'
import interactionPlugin from '@fullcalendar/interaction'

其中@fullcalendar/vue3是日历组件的本体,插件@fullcalendar/interaction提供了集成与交互功能,插件@fullcalendar/daygrid提供了日历视图,这三个是必选的。

daygrid插件

daygrid插件提供了月、周、日三种视图,如下:
image.png
image.png
image.png
可以看到,对于月视图还好,对于周视图和日视图,则缺少了时间维度,此时需要引入新的插件timegrid。

timegrid插件

timegrid插件需要安装,如下:

pnpm install @fullcalendar/timegrid

然后引入和配置:

import FullCalendar from '@fullcalendar/vue3'
import dayGridPlugin from '@fullcalendar/daygrid'
import interactionPlugin from '@fullcalendar/interaction'
import timeGridPlugin from '@fullcalendar/timegrid'

export default {
  name: 'ListByCalendar',
  components: { FullCalendar },
  data() {
    return {
      calendarOptions: {
        // 插件列表
        plugins: [dayGridPlugin, interactionPlugin, timeGridPlugin],

同时,需要将头部按钮调整下,使用timeGridWeek替代掉dayGridWeek,使用timeGridDay替代掉dayGridDay,如下:

// 头部显示
headerToolbar: {
  left: 'today',
  center: 'prev title next',
  right: 'dayGridMonth,timeGridWeek,timeGridDay,'
}

此后,再查看周视图和日视图,时间维度显示出来了,如下:
image.pngimage.png

listgrid插件

在尝试过程中发现组件还有一个列表插件不错,进行安装与配置。
安装新的插件list,如下:

pnpm install @fullcalendar/list

引用,配置插件,然后头部工具栏增加list视图,同时按钮文本增加列表,配置如下:
image.png
效果如下:
image.png

界面优化

更改all-day 显示文本

使用timegrid插件替代掉daygrid的周视图和日视图后,在周视图和日视图顶部有个区域,显示为英文 all-day,如下图所示:
image.png
通过以下属性设置:

// 更改all-day 显示文本
allDayText: '全天'

效果如下:
image.png

增加周次显示

周次,即本周是一年中的第几个周,是一个挺有用的信息,默认不显示。
如想显示,则修改下配置weekNumbers,打开日历组件的周次显示,如下:

// 周次
weekNumbers: true,

效果如下:
image.png

优化周次显示

前面我们配置了属性weekNumbers,设置为true后开启了周次显示功能。
默认的“W+周次数字”的模式虽然简明,但看上去像是中文日历中遗留了一个非汉化的元素,可以进一步通过配置解决,如下:

// 开启周次显示
weekNumbers: true,
// 显示周次文本
weekText: '周',

W被替换为了我们设置的“周”,效果如下:
image.png
这样看上去还是有点别扭,不符合中文习惯,颠倒一下顺序,如22周,或第22周更符合国人习惯。
通过使用回调方法来重写展现解决,如下所示:

 // 设置周次显示
weekNumberContent: this.weekNumberContent

methods: {
  // 设置周次显示
  weekNumberContent(arg) {
    return '第' + arg.num + '周'
  }
}

效果如下:
image.png

设置主题风格

当前外观风格与我们系统以蓝色为主色调的风格不太和谐,演示页面有诸多风格可选。
image.png
但是通过设置themeSystem属性,不起作用,认真琢磨了下,其实官方默认就只带了一种样式,就是上面截图显示的那种暗色调,其他包括bootstrap在内的样式,都需要额外配置。
经查看和对比,Bootstrap5的蓝色色调就不错,动手安装吧。

pnpm install @fullcalendar/bootstrap5
pnpm install  bootstrap
pnpm install  bootstrap-icons

经测试,以上3个一个都不能少,然后在配置中引入:

import bootstrap5Plugin from '@fullcalendar/bootstrap5'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-icons/font/bootstrap-icons.css'

然后注意bootstrap5同样是一个插件,需要加到calendarOptions的plugins数组中,如下:
image.png
刷新页面,效果终于出来了:
image.png

开启视图间导航功能

我们在查看月视图时,如果对某一周或某一天的具体日程感兴趣,想进入查看,可以打开官方预置的一个开关,这样周次和日都会启用链接导航功能,点击可进入周视图和日视图。

// 开启视图间导航功能
navLinks: true

image.png
image.png
同理,周视图、日视图和列表视图,都会开启超链接,进行视图间的切换。
image.png
image.png
image.png
官方提供了预置操作,如果想改变默认的行为,跳转到自定义视图,则可以设置navLinkDayClick和navLinkWeekClick这两个事件。
官网文档:https://fullcalendar.io/docs/date-nav-links

开启当前时间线标识

一个小功能,配置nowIndicator为true,默认未开启。

// 显示当前时间线
nowIndicator: true

在周视图和日视图中会用红线标识当前时间,是一个挺实用的功能。
image.png
image.png

应用系统

名称:遇见
地址:https://meet.popsoft.tech
说明:基于一二三应用开发平台和FullCalendar日历组件实现的面向个人的时间管理、任务管理系统,1分钟注册,完整功能,欢迎使用~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学海无涯,行者无疆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值