0.10.45 • Published 1 year ago

uxcore-calendar v0.10.45

Weekly downloads
31
License
MIT
Repository
github
Last release
1 year ago

uxcore-calendar


NPM version build status Test Coverage Dependency Status devDependency Status NPM downloads

Sauce Test Status

TL;DR

transfer ui component for react

setup develop environment

$ git clone https://github.com/uxcore/uxcore-calendar
$ cd uxcore-calendar
$ npm install
$ npm start

Usage

var Calendar = require('uxcore-calendar');
const {
  MonthCalendar, YearCalendar, RangeCalendar, CalendarFull, MiniWeek
} = Calendar;
React.render(
  (<Calendar />),
  document.getElementById('target')
);

demo

http://uxco.re/components/calendar/

API

  • onSelect(date, formatDateString)
    • date date
    • formatDateString string

Attention

0.8.0 之后,我们使用 moment 替代了 gregorianCalendar,在一些格式上和用法上有了一些变化。

共通 Props

参数说明类型默认值
placeholder占位符string请选择日期
localeen-us,zh-cnpl-plstringzh-cn
disabledDate不可选择的日期(currentDate) => boolean
onSelect当日期被选中时触发function(date)
disabled禁用booleanfalse
getPopupContainer弹出的菜单渲染在哪个容器中function(trigger:Node):Node() => document.body
size尺寸,支持 large/middle/smallstringlarge
allowClear是否支持清空booleantrue
onOpenChange在下拉面板展开、收起时调用function(open)noop
defaultOpenValue在值为空的情况下,日历面板默认展示的值boolean

props

参数说明类型默认值
value日期string/number
defaultValue日期string/number
format展示的日期格式string'YYYY-MM-DD'
disabledTime不可选择的时间,返回格式见下文function(date)
showTime是否显示时间选择面板booleanfalse
showHour时间选择面板是否显示小时booleantrue
showSecond时间选择面板是否显示秒booleantrue
timePicker自己传入定制的 timePickerReact Element-
yearSelectOffset年选择器中第一个年份与当前选中值之间的距离,例如当前为 1997 年,距离为 50,则最早可选择年份为 1947 年number50
yearSelectTotal年选择器中年份的总数,如最早可选为 1947 年,总数为 100,则可选年份范围为 1947 - 2047number100
renderSidebarsidebarReact Element() => React.Node
renderFooterextra footReact Element() => React.Node

disabledTime 例子

function range(start, end) {
  const result = [];
  for (let i = start; i < end; i++) {
    result.push(i);
  }
  return result;
}

function disabledTime() {
  return {
    disabledHours: () => range(0, 24).splice(4, 20),
    disabledMinutes: () => range(30, 60),
    disabledSeconds: () => [55, 56],
  };
}

MonthCalendar Props

参数说明类型默认值
value日期string/number
defaultValue日期string/number
format展示的日期格式string'yyyy-MM'
allowedMonthRange允许的月份范围,与disableDate互斥object

YearCalendar Props

参数说明类型默认值
value日期string/number
defaultValue日期string/number
format展示的日期格式string'yyyy'

RangeCalendar Props

参数基本与 Calendar 相同

参数说明类型默认值
value日期array
defaultValue日期array
quickSelectRanges快捷日期选择array

RangeCalendar 例子

<RangeCalendar
    size="large"
    value={rangeValue}
    quickSelectRanges={[
        {
            text: '19年1、2月份',
            value: {
                start: '2019-01',
                end: '2019-02'
            }
        },
        {
            text: '18年S2',
            value: {
                start: '2018-09',
                end: '2019-03'
            }
        }
    ]}
    onSelect={(v, formatted) => {
      this.onRangeSelect(v, formatted);
    }}
/>

CalendarFull props

参数说明类型可选值默认值
value日期string/number
defaultValue默认日期string/number
type类型stringtime/week/month'time'
startHour面板开始时间(小时)number9
endHour面板结束时间(小时)number23
step面板间隔时间(分钟)number60
format展示的日期格式string'YYYY-MM-DD'
disabledTime不可选择的时间段,返回格式见下文function(date)
disabledDate不可选择的时间日期function(date)
showHeader是否显示头部booleantrue
onSelect当面板日期被选中时触发function(date)
onTypeChange当切换面板类型时触发function()
weekRender周视图面板中每个格子的渲染函数function(current,formatDate)
dateRender月视图面板中每个格子的渲染函数function(current,formatDate)
timeRender日视图面板中每个格子的渲染函数function(current,formatDate)
headerComponent头部自定义组件React Element
headerRender头部自定义渲染函数function(current,type)
scheduleRender渲染面板中的函数,可以跨日程显示详情Calendar.util.generateScheduleContent(events)
getPopupContainer指定渲染日程的容器function

MiniWeek props

参数说明类型可选值默认值
locale中英文stringzh-cn/enzh-cn
events渲染的日程事件array[]
scheduleRender用来渲染具体日程下的事件function(dateInfo)

CalendarFull 例子

//events.js
const events =  [
  {
    start: '2018-10-24 13:00', // 事件开始时间
    end: '2018-10-31 23:00', // 事件结束时间
    // 事件的回调函数
    render: ({current,startHour,endHour,step,type}) => {}
  },
];
<CalendarFull
  value={this.state.value}
  onSelect={this.onSelect}
  type="month"
  locale="zh-cn"
  format="yyyy/MM/dd"
  scheduleRender={Calendar.util.generateScheduleContent(events)}
  startHour={12}
  endHour={18}
  step={40}
  />

MiniWeek 例子

miniWeekRender(dateInfo){
  /**
   * 返回的dateInfo结构如下
   * {
   *   events: [],当前时间下的日程事件
   *   label: 当前时间是星期几
   *   value: 当前日期
   * }
  */
}

<MiniWeek
  locale="zh-cn"
  events={events}
  scheduleRender={this.miniWeekRender}
  >
  <div className="schedule-container">
    <h3>这是日程渲染事件</h3>
  </div
</MiniWeek>
 <MiniWeek
  value="2018-12-24"
  locale="en-us"
  events={events}
  scheduleRender={this.miniWeekRender}
  getPopupContainer={() => this.miniRender}
/>
<div className="miniweek-container" ref={(c) => { this.miniRender = c; }} />

util

一些辅助函数,用于某些套餐化定制

  • Calendar.util.generateContentRender(code, locale): 用于在日历上标注非常规的休假、上班以及日程。

  • Calendar.util.generateScheduleContent(events):用于在日历中展示跨日程详情

    Tips:当不确定日程详情中是否有跨日程事件时,推荐使用scheduleRender events 为对象数组,格式如下:

[{
    start: '2018-10-16 13:00',//事件开始时间
    end: '2018-10-16 14:00',//事件结束时间
    //事件的回调函数
    render: () => <div>10-10 </div>
}]
0.10.42

1 year ago

0.10.43

1 year ago

0.10.44

1 year ago

0.10.45

1 year ago

0.10.41

4 years ago

0.10.40

4 years ago

0.10.39

4 years ago

0.10.38

4 years ago

0.10.37

4 years ago

0.10.36

4 years ago

0.10.35

4 years ago

0.10.34

5 years ago

0.10.33

5 years ago

0.10.32

5 years ago

0.10.31

5 years ago

0.10.30

5 years ago

0.10.29

5 years ago

0.10.28

5 years ago

0.10.27

5 years ago

0.10.26

5 years ago

0.10.25

5 years ago

0.10.24

5 years ago

0.10.23

5 years ago

0.10.22

5 years ago

0.10.21

5 years ago

0.10.20

5 years ago

0.10.19

5 years ago

0.10.18

5 years ago

0.10.17

5 years ago

0.10.16

5 years ago

0.10.15

5 years ago

0.10.13

5 years ago

0.10.12

5 years ago

0.10.11

5 years ago

0.10.10

5 years ago

0.10.9

5 years ago

0.4.9

5 years ago

0.4.8

5 years ago

0.4.7

5 years ago

0.4.6

5 years ago

0.4.5

5 years ago

0.4.4

5 years ago

0.10.8

6 years ago

0.10.7

6 years ago

0.10.6

6 years ago

0.10.5

6 years ago

0.10.4

6 years ago

0.10.3

6 years ago

0.10.2

6 years ago

0.10.1

6 years ago

0.9.24

6 years ago

0.10.0

6 years ago

0.9.23

6 years ago

0.9.22

6 years ago

0.9.21

6 years ago

0.9.20

6 years ago

0.9.19

6 years ago

0.9.18

6 years ago

0.9.17

6 years ago

0.9.16

6 years ago

0.9.15

6 years ago

0.9.14

6 years ago

0.9.13

6 years ago

0.9.12

7 years ago

0.9.11

7 years ago

0.9.10

7 years ago

0.9.9

7 years ago

0.9.8

7 years ago

0.9.7

7 years ago

0.9.6

7 years ago

0.8.6

7 years ago

0.9.5

7 years ago

0.9.4

7 years ago

0.9.3

7 years ago

0.9.2

7 years ago

0.9.1

7 years ago

0.9.0

7 years ago

0.8.5

7 years ago

0.8.4

7 years ago

0.8.3

7 years ago

0.8.2

7 years ago

0.8.1

7 years ago

0.8.0

7 years ago

0.7.2

7 years ago

0.7.1

7 years ago

0.7.0

7 years ago

0.6.6

7 years ago

0.6.5

7 years ago

0.6.4

8 years ago

0.6.3

8 years ago

0.6.2

8 years ago

0.6.1

8 years ago

0.6.0

8 years ago

0.5.2

8 years ago

0.5.1

8 years ago

0.5.0

8 years ago

0.4.3

8 years ago

0.4.2

8 years ago

0.4.1

8 years ago

0.4.0

8 years ago

0.3.9

8 years ago

0.3.8

8 years ago

0.3.7

8 years ago

0.3.6

8 years ago

0.3.5

8 years ago

0.3.4

8 years ago

0.3.3

8 years ago

0.3.2

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.6

8 years ago

0.2.5

8 years ago

0.2.4

8 years ago

0.2.3

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.16

8 years ago

0.1.15

9 years ago

0.1.14

9 years ago

0.1.13

9 years ago

0.1.12

9 years ago

0.1.11

9 years ago

0.1.10

9 years ago

0.1.9

9 years ago

0.1.8

9 years ago

0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

9 years ago

0.1.4

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago