日历/日期选择器
日历是一个经过触摸优化的组件,提供了处理日期的简单方法。
日历可以用作内联组件或作为覆盖层。平板电脑(iPad)上的覆盖层日历将自动转换为弹出窗口。
日历应用程序方法
让我们来看看与日历相关的 App 方法。
app.calendar.create(parameters)- 创建日历实例。
- parameters - object。包含日历参数的对象。
该方法返回已创建的日历的实例。
app.calendar.destroy(el)- 销毁日历实例。
- el - HTMLElement 或 string(带 CSS 选择器)或 object。要销毁的日历元素或日历实例。
app.calendar.get(el)- 根据 HTML 元素获取日历实例
- el - HTMLElement 或 string(带 CSS 选择器)。日历元素。
该方法返回日历的实例。
app.calendar.close(el)- 关闭日历。
- el - HTMLElement 或 string(带 CSS 选择器)。要关闭的日历元素。
该方法返回日历的实例。
例如
var calendar = app.calendar.create({
inputEl: '#calendar-input'
});
日历参数
让我们来看看所有可用日历参数的列表。
参数 | 类型 | 默认 | 描述 |
---|---|---|---|
locale | string | 日历区域设置。应为 例如 | |
value | array | 包含最初选定的日期的数组。每个数组项表示所选日期。 | |
disabled | 日期范围 | 其他已禁用的日期。参数接受所谓的日期范围(见以下详细信息)。 | |
events | 日期范围 | 带活动日期。将在日历的那一天用另一个“圆点”标记。参数接受所谓的日期范围(见以下详细信息)。 如果你想表示某天有几个不同的活动,可以使用多种不同颜色的圆点来表示。在这种情况下,你需要将日期范围作为数组传递,其中每个对象都将具有
| |
rangesClasses | array | 你想为附加样式添加自定义 CSS 类的日期范围。见以下接受的格式。 | |
formatValue | function (values) | 用于设置输入值的函数,应返回新的格式化的字符串值。values 是一个数组,其中每个项表示所选日期。可用于代替 dateFormat 参数来指定自定义格式 | |
monthNames | array | auto | 包含完整月份名称的数组。如果是 auto ,则将根据指定的 locale (或浏览器区域设置)显示月份名称。 |
monthNamesShort | array | auto | 包含缩写月份名称的数组。如果是 auto ,则将根据指定的 locale (或浏览器区域设置)显示月份名称。 |
dayNames | array | auto | 包含星期名称的数组。如果是 auto ,则将根据指定的 locale (或浏览器区域设置)显示星期名称。 |
dayNamesShort | array | auto | 每周短名称数组。如果auto ,则它将基于指定的locale (或浏览器 locale)显示日期名称 |
firstDay | 数字 | 1 | 每周的第一天。默认为 1 - 星期一 |
weekendDays | array | [0, 6] | 包含周末天数的索引编号数组,默认为星期六和星期日 |
dateFormat | string 对象 | 未定义 | 如果未定义,它将基于 它可以接受 例如 或者您可以使用特殊标记传递字符串,这些可用表达式为
当
|
multiple | 布尔值 | false | 启用后允许选择多个日期/值 |
rangePicker | 布尔值 | false | 启用后启用范围选择器。与multiple 不兼容 |
rangePickerMinDays | 数字 | 1 | 当rangePicker 启用时需要选择的最小天数 |
rangePickerMaxDays | 数字 | 0 | 当rangePicker 启用时可以选择的最大天数。0 表示没有最大值 |
direction | string | 'horizontal' | 月份布局方向,可以是“水平”或“垂直” |
minDate | 日期 | null | 允许的最小日期 |
maxDate | 日期 | null | 允许的最大日期 |
touchMove | 布尔值 | true | 如果启用,则日历月份会在触摸移动期间跟随手指 |
animate | 布尔值 | true | 启用月份之间的过渡 |
closeOnSelect | 布尔值 | false | 启用后,用户选择日期时日历将关闭 |
weekHeader | 布尔值 | true | 启用带有星期短名称的星期标题 |
monthSelector | 布尔值 | true | 在工具栏中启用月份选择器 |
monthPicker | 布尔值 | true | 在工具栏中单击月份选择器时启用月份选择器以选择月份 |
年选择器 | 布尔值 | true | 在工具栏中启用年份选取器 |
年份选择器 | 布尔值 | true | 允许在单击工具栏中的年份选取器时选取年份 |
年份选择器的最小年份 | 数字 | 年份选择器的最小可用年份,默认是今天的减去 100 年 | |
年份选择器的最大年份 | 数字 | 年份选择器的最大可用年份,默认是今天的加上 100 年 | |
时间选取器 | 布尔值 | false | 启用时间选取器。 |
时间选取器格式 | 对象 | {hour: 'numeric', minute: 'numeric'} | 时间选取器中显示的时间格式。它接受
|
时间选取器占位符 | string | 选择时间 | 用于显示在时间选取器占位符中的文本。 |
容器/打开器具体参数 | |||
容器元素 | string HTMLElement | 用于存放生成的日历 HTML 的 CSS 选择器或 HTMLElement 字符串。仅用于内嵌日历 | |
打开在 | string | auto | 可以是 auto 、popover (在弹出框中打开日历)、sheet (在工作表模式中打开)或 customModal (在自定义日历模式覆盖中打开)。auto 会在小屏幕上以工作表模式打开,在大屏幕上以弹出框打开。 |
工作表推进 | 布尔值 | false | 启用日历工作表在打开时将视图推送至后面 |
工作表滑动以关闭 | 布尔值 | 未定义 | 启用通过滑动关闭日历工作表的能力。未指定时,它将继承应用程序的工作表 swipeToClose 参数 |
输入元素 | 字符串或 HTMLElement | 与相关输入元素的 CSS 选择器或 HTMLElement 字符串 | |
滚动到输入 | 布尔值 | true | 日历打开时将视口(页面内容)滚动到输入 |
输入只读 | 布尔值 | true | 对指定的输入设置“只读”属性 |
CSS 类 | string | 要设置在日历元素上的额外 CSS 类名 | |
通过外部点击关闭 | 布尔值 | true | 如果启用,则单击选取器或相关的输入元素外部将关闭选取器 |
工具栏 | 布尔值 | true | 启用日历工具栏 |
工具栏关闭文本 | string | 完成 | 完成/关闭工具栏按钮的文本 |
页眉 | 布尔值 | false | 启用日历页眉 |
页眉占位符 | string | 选择日期 | 默认日历页眉占位符文本 |
可路由模态框 | 布尔值 | false | 将打开的日历添加到路由器历史记录中,这可以让您通过返回路由器历史记录来关闭日历,并将当前路由设置为日历模态框 |
网址 | string | date/ | 将设置为当前路由的日历模态框网址 |
视图 | 对象 | 在启用 可路由模态框 时设置路由的视图。默认为 inputEl 的父视图,如果没有找到父视图,则默认为主视图 | |
背景 | 布尔值 | 启用日历背景(后方的半透明暗层)。默认情况下,只有在弹出框中打开日历时才会启用它。 | |
通过背景点击关闭 | 布尔值 | true | 启用后,将关闭日历背景单击 |
渲染函数 | |||
renderWeekHeader | 函数 | 渲染星期标题的函数。 必须返回星期标题 HTML 字符串 | |
renderMonths | 函数 (date) | 渲染月份包装器的函数。 必须返回月份容器的完整 HTML 字符串 | |
renderMonth | 函数 (date, offset) | 渲染单个月份的函数。 必须返回单个月份的 HTML 字符串 | |
renderMonthSelector | 函数 | 渲染月份选择器的函数。 必须返回月份选择器的 HTML 字符串 | |
renderYearSelector | 函数 | 渲染年份选择器的函数。 必须返回年份选择器的 HTML 字符串 | |
renderHeader | 函数 | 渲染日历标题的函数。 必须返回日历标题的 HTML 字符串 | |
renderToolbar | 函数 | 渲染工具栏的函数。 必须返回工具栏的 HTML 字符串 | |
render | 函数 | 渲染整个日历的函数。 必须返回日历的完整 HTML 字符串 | |
事件 | |||
on | 对象 | 带事件处理程序的对象。例如
|
请注意,所有以下参数都可以在calendar
属性下的全局 app 参数中使用,以设置所有日历的默认值。 例如
var app = new Framework7({
calendar: {
url: 'calendar/',
dateFormat: 'dd.mm.yyyy',
}
});
日期范围
日历参数(disabled、events和rangesClasses)中的一些接受所谓的日期范围。 这是指定和覆盖所有可能日期组合的简单方法。
它可以是带有日期的数组,例如
var calendar = app.calendar.create({
...
// Disabled 10th November 2015 and 11th November 2015:
disabled: [new Date(2015, 10, 10), new Date(2015, 10, 11)],
...
});
它可以是自定义函数,您需要在其中返回true或false
var calendar = app.calendar.create({
...
//Disabled all dates in November 2015
disabled: function (date) {
if (date.getFullYear() === 2015 && date.getMonth() === 10) {
return true;
}
else {
return false;
}
},
...
});
或者带有from和to属性的对象
var calendar = app.calendar.create({
...
//Disable all dates between 1st October 2015 and 31 December 2015
disabled: {
from: new Date(2015, 9, 1),
to: new Date(2015, 11, 31)
},
...
});
或者带有仅from或to属性的对象
var calendar = app.calendar.create({
...
//Disable everyting since December 2015
disabled: {
from: new Date(2015, 11, 1)
},
...
});
或者带有date
属性的对象
var calendar = app.calendar.create({
...
// Disabled 1th December 2015
disabled: {
date: new Date(2015, 11, 1)
},
...
});
或者带有混合日期和对象的数组
var calendar = app.calendar.create({
...
events: [
new Date(2015, 9, 1),
new Date(2015, 9, 5),
{
from: new Date(2015, 9, 10),
to: new Date(2015, 9, 15)
},
{
from: new Date(2015, 9, 20),
to: new Date(2015, 9, 31)
},
{
date: new Date(2015, 11, 1),
color: '#ff0000'
},
// same date but one more color dot will be added
{
date: new Date(2015, 11, 1),
color: '#00ff00'
},
],
...
});
rangesClasses
rangesClasses参数接受具有适合此日期范围的类名的对象数组
var calendar = app.calendar.create({
...
//Add classes for november and october
rangesClasses: [
//Add "day-october' class for all october dates
{
// string CSS class name for this range in "cssClass" property
cssClass: 'day-october', //string CSS class
// Date Range in "range" property
range: function (date) {
return date.getMonth() === 9
}
},
//Add "day-holiday" class for 1-10th January 2016
{
cssClass: 'day-holiday',
range: {
from: new Date(2016, 0, 1),
to: new Date(2016, 0, 10)
}
}
],
...
});
日历方法和属性
我们初始化日历后,就会在变量中获得其初始化的实例(例如上面示例中的calendar
变量),其中包含有帮助的方法和属性
属性 | |
---|---|
calendar.app | 指向全局应用程序实例的链接 |
calendar.containerEl | 日历包装容器 HTML 元素(当内联日历正在使用时) |
calendar.$containerEl | 包含日历包装容器的 HTML 元素的 Dom7 实例(当内联日历正在使用时) |
calendar.el | 日历 HTML 元素 |
calendar.$el | 包含日历 HTML 元素的 Dom7 实例 |
calendar.inputEl | 日历输入 HTML 元素(在inputEl 参数中传递) |
calendar.$inputEl | 包含日历输入 HTML 元素的 Dom7 实例(在inputEl 参数中传递) |
calendar.value | 数组,其中每个项目都代表选定的日期 |
calendar.currentMonth | 日历视图当前月份。 数字,从0 到11 |
calendar.currentYear | 日历视图当前年份。 数字,例如2020 |
calendar.opened | 如果日历当前打开,则为true |
calendar.inline | 内部日历正在使用时为true |
calendar.cols | 数组,其中指定了日历列。 每个列也有自己的方法和属性(见下文) |
calendar.url | 日历 URL(在 url 参数中传递) |
calendar.view | 日历视图(在 view 参数中传递)或找到父视图 |
calendar.params | 带有初始化参数的对象 |
calendar.allowTouchMove | 将此标志设置为 false 以防止在初始化后进行触碰移动交互 |
方法 | |
calendar.setValue(值) | 设置新的选定日期。值 是数组,其中每个项都表示选定的日期 |
calendar.getValue() | 返回当前日历值 |
calendar.addValue() | 将值添加到值数组中。如果启用了多选(带有 multiple: true 参数),则很有用 |
calendar.update() | 重新渲染日历。如果您以动态方式添加/更改了值并且需要更新日历布局,则很有用 |
calendar.nextMonth(持续时间) | 日历过渡到下一个月,其中 持续时间 以毫秒为单位 |
calendar.prevMonth(持续时间) | 日历过渡到前一个月,其中 持续时间 以毫秒为单位 |
calendar.nextYear() | 日历过渡到下一年 |
calendar.prevYear() | 日历过渡到前一年 |
calendar.setYearMonth(年, 月, 持续时间) | 日历过渡到指定的 年 、月 ,其中 持续时间 以毫秒为单位 |
calendar.open() | 打开日历 |
calendar.close() | 关闭日历 |
calendar.destroy() | 销毁日历实例并删除所有事件 |
calendar.on(事件, 处理程序) | 添加事件处理程序 |
calendar.once(事件, 处理程序) | 添加事件处理程序,该事件处理程序在触发后将被删除 |
calendar.off(事件, 处理程序) | 删除事件处理器 |
calendar.off(事件) | 删除指定事件的所有处理程序 |
calendar.emit(事件, ...参数) | 触发实例上的事件 |
日历事件
日历将在日历元素上触发以下 DOM 事件以及在应用程序和日历实例上触发事件
DOM 事件
事件 | 目标 | 描述 |
---|---|---|
calendar:open | 日历元素<div class="calendar"> | 当日历开始其打开动画时,将触发事件 |
calendar:opened | 日历元素<div class="calendar"> | 当日历完成其打开动画后,将触发事件 |
calendar:close | 日历元素<div class="calendar"> | 当日历开始其关闭动画时,将触发事件 |
calendar:closed | 日历元素<div class="calendar"> | 当日历完成其关闭动画后,将触发事件 |
应用程序和日历实例事件
日历实例在自身实例和应用程序实例上都发出事件。应用程序实例事件具有相同名称,前缀为 calendar
。
事件 | 目标 | 参数 | 描述 |
---|---|---|---|
dayClick | 日历 | (日历、dayEl、年、月、日) | 单击日历日期元素后将触发事件 |
calendarDayClick | 应用 | ||
change | 日历 | (日历、值) | 当日历值发生改变时,将触发事件 |
calendarChange | 应用 | ||
monthAdd | 日历 | (日历、monthEl) | 当添加了新的月份 HTML 布局时,将触发事件。如果您需要对添加的 html 元素进行后处理,则很有用 |
calendarMonthAdd | 应用 | ||
monthYearChangeStart | 日历 | (日历、年、月) | 事件将在过渡到下一个月开始时触发 |
calendarMonthYearChangeStart | 应用 | ||
monthYearChangeEnd | 日历 | (日历、年、月) | 过渡到下一个月后触发事件 |
calendarMonthYearChangeEnd | 应用 | ||
init | 日历 | (日历) | 当日历初始化时触发事件 |
calendarInit | 应用 | ||
open | 日历 | (日历) | 当日历开始其打开动画时触发事件。作为参数,事件处理程序接收日历实例 |
calendarOpen | 应用 | ||
opened | 日历 | (日历) | 当日历完成其打开动画后触发事件。作为参数,事件处理程序接收日历实例 |
calendarOpened | 应用 | ||
close | 日历 | (日历) | 当日历开始其关闭动画时触发事件。作为参数,事件处理程序接收日历实例 |
calendarClose | 应用 | ||
closed | 日历 | (日历) | 当日历完成其关闭动画后触发事件。作为参数,事件处理程序接收日历实例 |
calendarClosed | 应用 | ||
beforeDestroy | 日历 | (日历) | 当要销毁日历实例之前立即触发事件。作为参数,事件处理程序接收日历实例 |
calendarBeforeDestroy | 应用 |
CSS变量
以下是相关 CSS 变量 (CSS 自定义属性) 的列表。
请注意,带注释的变量默认情况下没有指定,在这种情况下,它们的默认值是多少。
:root {
--f7-calendar-height: 340px;
--f7-calendar-sheet-landscape-height: 220px;
--f7-calendar-popover-width: 320px;
--f7-calendar-popover-height: 320px;
--f7-calendar-modal-height: 420px;
--f7-calendar-modal-max-width: 380px;
/*
--f7-calendar-header-bg-color: var(--f7-bars-bg-color);
--f7-calendar-header-link-color: var(--f7-bars-link-color);
--f7-calendar-header-text-color: var(--f7-bars-text-color);
--f7-calendar-footer-bg-color: var(--f7-bars-bg-color);
--f7-calendar-footer-border-color: var(--f7-bars-border-color);
--f7-calendar-footer-link-color: var(--f7-bars-link-color);
--f7-calendar-footer-text-color: var(--f7-bars-text-color);
*/
--f7-calendar-week-header-bg-color: transparent;
--f7-calendar-footer-padding: 0 8px;
--f7-calendar-week-header-font-size: 11px;
/*
--f7-calendar-selected-bg-color: var(--f7-theme-color);
*/
--f7-calendar-disabled-text-color: #d4d4d4;
--f7-calendar-event-dot-size: 4px;
/*
--f7-calendar-event-bg-color: var(--f7-theme-color);
*/
/*
--f7-calendar-picker-selected-text-color: var(--f7-theme-color);
*/
--f7-calendar-time-selector-height: 28px;
--f7-calendar-picker-pressed-bg-color: rgba(0, 0, 0, 0.1);
--f7-calendar-picker-hover-bg-color: rgba(0, 0, 0, 0.03);
--f7-calendar-time-selector-bg-color: rgba(0, 0, 0, 0.05);
}
:root .dark,
:root.dark {
--f7-calendar-picker-pressed-bg-color: rgba(255, 255, 255, 0.08);
--f7-calendar-picker-hover-bg-color: rgba(255, 255, 255, 0.03);
--f7-calendar-time-selector-bg-color: rgba(255, 255, 255, 0.1);
}
.ios {
--f7-calendar-selected-text-color: #fff;
--f7-calendar-header-height: 44px;
--f7-calendar-header-font-size: 17px;
--f7-calendar-header-font-weight: 600;
--f7-calendar-header-padding: 0 8px;
--f7-calendar-footer-height: 44px;
--f7-calendar-footer-font-size: 17px;
--f7-calendar-week-header-height: 18px;
--f7-calendar-day-font-size: 15px;
--f7-calendar-day-size: 30px;
--f7-calendar-picker-font-size: 17px;
--f7-calendar-time-selector-font-size: 17px;
--f7-calendar-modal-border-radius: 4px;
--f7-calendar-modal-box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2),
0px 24px 38px 3px rgba(0, 0, 0, 0.14),
0px 9px 46px 8px rgba(0, 0, 0, 0.12);
--f7-calendar-prev-next-text-color: #c8c8c8;
--f7-calendar-sheet-border-color: #929499;
--f7-calendar-sheet-bg-color: #fff;
--f7-calendar-week-header-text-color: #5e5e5e;
--f7-calendar-modal-bg-color: #fff;
--f7-calendar-day-text-color: #000;
--f7-calendar-today-text-color: #000;
--f7-calendar-today-bg-color: #e3e3e3;
}
.ios .dark,
.ios.dark {
--f7-calendar-prev-next-text-color: #5e5e5e;
--f7-calendar-sheet-border-color: var(--f7-bars-border-color);
--f7-calendar-sheet-bg-color: #121212;
--f7-calendar-week-header-text-color: #aaa;
--f7-calendar-modal-bg-color: #121212;
--f7-calendar-day-text-color: #fff;
--f7-calendar-today-text-color: #fff;
--f7-calendar-today-bg-color: #333;
}
.md {
--f7-calendar-sheet-border-color: transparent;
--f7-calendar-header-height: 64px;
--f7-calendar-header-font-size: 24px;
--f7-calendar-header-font-weight: 400;
--f7-calendar-header-padding: 0 24px;
--f7-calendar-footer-height: 56px;
--f7-calendar-footer-font-size: 14px;
--f7-calendar-week-header-height: 24px;
--f7-calendar-day-font-size: 14px;
--f7-calendar-today-bg-color: none;
--f7-calendar-day-size: 32px;
--f7-calendar-picker-font-size: 14px;
--f7-calendar-time-selector-font-size: 14px;
--f7-calendar-modal-border-radius: 28px;
--f7-calendar-modal-box-shadow: none;
}
.md,
.md .dark,
.md [class*='color-'] {
--f7-calendar-sheet-bg-color: var(--f7-md-surface-1);
--f7-calendar-selected-text-color: var(--f7-md-on-primary);
--f7-calendar-week-header-text-color: var(--f7-md-on-surface-variant);
--f7-calendar-day-text-color: var(--f7-md-on-surface);
--f7-calendar-prev-next-text-color: rgba(var(--f7-md-on-surface-variant-rgb), 0.55);
--f7-calendar-today-text-color: var(--f7-theme-color);
--f7-calendar-modal-bg-color: var(--f7-md-surface-1);
}
示例
<template>
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Calendar</div>
</div>
</div>
<div class="page-content">
<div class="block">
<p>Calendar is a touch optimized component that provides an easy way to handle dates.</p>
<p>Calendar could be used as inline component or as overlay. Overlay Calendar will be automatically converted to
Popover on tablets (iPad).</p>
</div>
<div class="block-title">Default setup</div>
<div class="list list-strong-ios list-outline-ios">
<ul>
<li>
<div class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Your birth date" readonly="readonly" id="demo-calendar-default" />
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Custom date format</div>
<div class="list list-strong-ios list-outline-ios">
<ul>
<li>
<div class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Select date" readonly="readonly" id="demo-calendar-date-format" />
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Date + Time</div>
<div class="list list-strong-ios list-outline-ios">
<ul>
<li>
<div class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Select date and time" readonly="readonly"
id="demo-calendar-date-time" />
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Multiple Values</div>
<div class="list list-strong-ios list-outline-ios">
<ul>
<li>
<div class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Select multiple dates" readonly="readonly"
id="demo-calendar-multiple" />
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Range Picker</div>
<div class="list list-strong-ios list-outline-ios">
<ul>
<li>
<div class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Select date range" readonly="readonly" id="demo-calendar-range" />
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Open in Modal</div>
<div class="list list-strong-ios list-outline-ios">
<ul>
<li>
<div class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Select date" readonly="readonly" id="demo-calendar-modal" />
</div>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Calendar Page</div>
<div class="list list-strong list-outline-ios">
<ul>
<li>
<a href="/calendar-page/" class="item-content item-link">
<div class="item-inner">
<div class="item-title">Open Calendar Page</div>
</div>
</a>
</li>
</ul>
</div>
<div class="block-title">Inline with custom toolbar</div>
<div class="block block-strong no-padding">
<div id="demo-calendar-inline-container"></div>
</div>
</div>
</div>
</template>
<script>
export default (props, { $f7, $, $on }) => {
let calendarDefault
let calendarDateFormat;
let calendarDateTime;
let calendarMultiple;
let calendarRange;
let calendarModal;
let calendarInline;
$on('pageInit', () => {
// Default
calendarDefault = $f7.calendar.create({
inputEl: '#demo-calendar-default',
});
// With custom date format
calendarDateFormat = $f7.calendar.create({
inputEl: '#demo-calendar-date-format',
dateFormat: { weekday: 'long', month: 'long', day: '2-digit', year: 'numeric' },
});
// Date + Time
calendarDateTime = $f7.calendar.create({
inputEl: '#demo-calendar-date-time',
timePicker: true,
dateFormat: { month: 'numeric', day: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric' },
});
// With multiple values
calendarMultiple = $f7.calendar.create({
inputEl: '#demo-calendar-multiple',
dateFormat: { month: 'short', day: 'numeric' },
multiple: true
});
// Range Picker
calendarRange = $f7.calendar.create({
inputEl: '#demo-calendar-range',
rangePicker: true
});
// Custom modal
calendarModal = $f7.calendar.create({
inputEl: '#demo-calendar-modal',
openIn: 'customModal',
header: true,
footer: true,
});
// Inline with custom toolbar
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
calendarInline = $f7.calendar.create({
containerEl: '#demo-calendar-inline-container',
value: [new Date()],
renderToolbar: function () {
return '<div class="toolbar calendar-custom-toolbar no-shadow">' +
'<div class="toolbar-inner">' +
'<div class="left">' +
'<a class="link icon-only"><i class="icon icon-back"></i></a>' +
'</div>' +
'<div class="center"></div>' +
'<div class="right">' +
'<a class="link icon-only"><i class="icon icon-forward"></i></a>' +
'</div>' +
'</div>' +
'</div>';
},
on: {
init: function (c) {
$('.calendar-custom-toolbar .center').text(monthNames[c.currentMonth] + ', ' + c.currentYear);
$('.calendar-custom-toolbar .left .link').on('click', function () {
calendarInline.prevMonth();
});
$('.calendar-custom-toolbar .right .link').on('click', function () {
calendarInline.nextMonth();
});
},
monthYearChangeStart: function (c) {
$('.calendar-custom-toolbar .center').text(monthNames[c.currentMonth] + ', ' + c.currentYear);
}
}
});
});
$on('pageBeforeRemove', () => {
calendarDefault.destroy();
calendarDateFormat.destroy();
calendarDateTime.destroy();
calendarMultiple.destroy();
calendarRange.destroy();
calendarModal.destroy();
calendarInline.destroy();
});
return $render;
};
</script>