0.0.4 • Published 22 days ago

@linkchain/vue-lcdatepicker v0.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
22 days ago

vue-datepicker-next

English Version

一个基于 Vue3.x 的日期时间选择组件

tests

线上 Demo

https://mengxiong10.github.io/vue-datepicker-next/index.html

image

安装

$ npm install vue-datepicker-next --save

主题

如果你的项目使用了 SCSS, 你可以改变默认的变量.

创建一个新的文件. e.g. datepicker.scss:

$namespace: 'xmx'; // 更改默认前缀为'xmx'. 然后设置 <date-picker prefix-class="xmx" />

$default-color: #555;
$primary-color: #1284e7;

@import '~vue-datepicker-next/scss/index.scss';

用法

<script>
  import DatePicker from 'vue-datepicker-next';
  import 'vue-datepicker-next/index.css';

  export default {
    components: { DatePicker },
    data() {
      return {
        time1: null,
        time2: null,
        time3: null,
      };
    },
  };
</script>

<template>
  <div>
    <date-picker v-model="time1" valueType="format"></date-picker>
    <date-picker v-model="time2" type="datetime"></date-picker>
    <date-picker v-model="time3" range></date-picker>
  </div>
</template>

国际化

默认语言是英文. 可以引入语言包切换到中文.

import DatePicker from 'vue-datepicker-next';
import 'vue-datepicker-next/index.css';

import 'vue-datepicker-next/locale/zh-cn';

还可以通过lang去覆盖一些默认语言选项. 完整配置

<script>
  export default {
    data() {
      return {
        langObject: {
          formatLocale: {
            firstDayOfWeek: 1,
          },
          monthBeforeYear: false,
        },
        langString: 'zh-cn',
      };
    },
  };
</script>

<template>
  <date-picker :lang="langObject"></date-picker>
  <date-picker :lang="langString"></date-picker>
</template>

Props

属性描述类型默认值
type日期选择的类型date |datetime|year|month|time|week'date'
range如果是 true, 变成日期范围选择booleanfalse
format设置格式化的 token, 类似 moment.jstoken'YYYY-MM-DD'
formatter使用自己的格式化程序, 比如 moment.jsobject-
value-type设置绑定值的类型value-type'date'
default-value设置日历默认的时间Datenew Date()
lang覆盖默认的语音设置object
placeholder输入框的 placeholderstring''
editable输入框是否可以输入booleantrue
clearable是否显示清除按钮booleantrue
confirm是否需要确认booleanfalse
confirm-text确认按钮的文字string'OK'
multiple如果是 true, 可以选择多个日期booleanfalse
disabled禁用组件booleanfalse
disabled-date禁止选择的日期(date: Date, currentValue: Date[]) => boolean-
disabled-time禁止选择的时间(date: Date) => boolean-
append-to-body弹出层插入到 body 元素下booleantrue
input-class输入框的类string'mx-input'
input-attr输入框的其他属性(eg: { name: 'date', id: 'foo'})object
open控制弹出层的显示boolean-
default-panel控制打开的面板year|month-
popup-style弹出层的样式object
popup-class弹出层的类
shortcuts设置快捷选择Array<{text, onClick}>-
title-format日历单元格的 tooltiptoken'YYYY-MM-DD'
partial-update是否更新日期当选择年或月的时候booleanfalse
separator范围分隔符string' ~ '
show-week-number是否显示星期数字booleanfalse
hour-step小时列的间隔1 - 601
minute-step分钟列的间隔1 - 601
second-step秒列的间隔1 - 601
hour-options自定义小时列Array<number>-
minute-options自定义分钟列Array<number>-
second-options自定义秒列Array<number>-
show-hour是否显示小时列booleanbase on format
show-minute是否显示分钟列booleanbase on format
show-second是否显示秒列booleanbase on format
use12h是否显示 ampm 列booleanbase on format
show-time-header是否显示时间选择面板的头部booleanfalse
time-title-format时间面板头部的格式化token'YYYY-MM-DD'
time-picker-options设置固定时间去选择time-picker-optionsnull
prefix-class设置 class 的前缀string'mx'
scroll-duration设置滚动时候当选中小时的时候number100

Token

单元符号输入
YearYY70 71 ... 10 11
YYYY1970 1971 ... 2010 2011
Y-1000 ...20 ... 1970 ... 9999 +10000
MonthM1 2 ... 11 12
MM01 02 ... 11 12
MMMJan Feb ... Nov Dec
MMMMJanuary February ... November December
Day of MonthD1 2 ... 30 31
DD01 02 ... 30 31
Day of Weekd0 1 ... 5 6
ddSu Mo ... Fr Sa
dddSun Mon ... Fri Sat
ddddSunday Monday ... Friday Saturday
AM/PMAAM PM
aam pm
HourH0 1 ... 22 23
HH00 01 ... 22 23
h1 2 ... 12
hh01 02 ... 12
Minutem0 1 ... 58 59
mm00 01 ... 58 59
Seconds0 1 ... 58 59
ss00 01 ... 58 59
Fractional SecondS0 1 ... 8 9
SS00 01 ... 98 99
SSS000 001 ... 998 999
Time ZoneZ-07:00 -06:00 ... +06:00 +07:00
ZZ-0700 -0600 ... +0600 +0700
Week of Yearw1 2 ... 52 53
ww01 02 ... 52 53
Unix TimestampX1360013296
Unix Millisecond Timestampx1360013296123

formatter

formatter 接受一个对象去自定义格式化

<date-picker :formatter="momentFormat" />
data() {
  return {
    // 使用moment.js 替换默认
    momentFormat: {
      //[可选] Date to String
      stringify: (date) => {
        return date ? moment(date).format('LL') : ''
      },
      //[可选]  String to Date
      parse: (value) => {
        return value ? moment(value, 'LL').toDate() : null
      },
      //[可选] getWeekNumber
      getWeek: (date) => {
        return // a number
      }
    }
  }
}

value-type

设置绑定值的类型

可选值描述
'date'返回一个日期对象
'timestamp'返回一个时间戳
'format'返回一个用 format 字段格式化的字符串
token(MM/DD/YYYY)返回一个用这个字段格式化的字符串

shortcuts

设置快捷选择方式

[
  { text: 'today', onClick: () => new Date() },
  {
    text: 'Yesterday',
    onClick: () => {
      const date = new Date();
      date.setTime(date.getTime() - 3600 * 1000 * 24);
      return date;
    },
  },
];
属性描述
text显示的名称
onClick回调函数, 需要返回一个 Date 对象

time-picker-options

设置固定时间用于选择

{start: '00:00', step:'00:30' , end: '23:30'}
属性描述
start开始时间
step间隔时间
end结束时间

事件

名称描述回调函数的参数
update:value当选择日期的事件触发date
change当选择日期的事件触发date, type('date'|'hour'|'minute'|'second'|'ampm')
open当弹出层打开时候event
close当弹出层关闭时候
confirm当点击确认按钮date
clear当点击清除按钮
input-error当输入一个无效的时间input text
focus当输入框有焦点
blur当输入框失焦
pick当点击日期时 #429date
calendar-change当改变年月时date
panel-change当日历面板改变时type('year'|'month'|'date'), oldType

Slots

名称描述
icon-calendar自定义日历图标
icon-clear自定义清除图标
input替换输入框
header弹出层的头部
footer弹出层的底部
sidebar弹出层的侧边

ChangeLog

CHANGELOG

一次性捐赠

如果这个项目对你很有用,你可以请我喝杯咖啡

Paypal Me

donate

License

MIT

Copyright (c) 2021-present xiemengxiong

0.0.4

22 days ago

0.0.3

23 days ago

0.0.2

23 days ago

0.0.1

23 days ago