🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis
Socket
Book a DemoInstallSign in
Socket

zent-datetimepicker

Package Overview
Dependencies
Maintainers
2
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zent-datetimepicker

Zent DateTimePicker 组件

latest
Source
npmnpm
Version
1.1.0
Version published
Weekly downloads
3
-57.14%
Maintainers
2
Weekly downloads
 
Created
Source

DatePicker 时间选择

时间选择组件, 提供基础的时间、日期筛选功能.

使用指南

  • 包含三个组件:DatePickerMonthPickerRangePicker
  • DatePickerRangePicker 可以通过 showTime 属性来支持时间的选择。
  • 通过 format 属性自定义日期字符串的格式,format 的详细说明见页面最后的表格。

代码演示

:::demo 基础的日期、月份、时间段选择

import { DatePicker, MonthPicker, DateRangePicker } from 'zent'

class Demo extends Component{
  state = {

  }

  onChangeDate = (val) => {
    this.setState({
      dateValue: val
    })
  }

  onChangeMonth = (val) => {
    this.setState({
      monthValue: val
    })
  }

  onChangeRange = (val) => {
    this.setState({
      rangeValue: val
    })
  }

  render(){
    const { dateValue, monthValue, rangeValue, max } = this.state;
    return (
      <div>
        <DatePicker
          className="zent-picker-demo"
          value={dateValue}
          min="1990-01-01"
          onChange={this.onChangeDate}
        />
        <br />
        <MonthPicker
          className="zent-picker-demo"
          value={monthValue}
          onChange={this.onChangeMonth}
        />
        <br />
        <DateRangePicker
          className="zent-picker-demo"
          value={rangeValue}
          onChange={this.onChangeRange}
          />
      </div>
    )
  }
}

ReactDOM.render(
  <Demo />,
  mountNode
)

:::

:::demo 使用 format 属性来设置日期的显示格式

import { DatePicker, MonthPicker, DateRangePicker } from 'zent'

class Demo extends Component{
  state = {

  }
  
  onChangeDate = (val) => {
    this.setState({
      dateValue: val
    })
  }

  onChangeMonth = (val) => {
    this.setState({
      monthValue: val
    })
  }

  onChangeRange = (val) => {
    this.setState({
      rangeValue: val
    })
  }

  render() {
    const { dateValue, monthValue, rangeValue } = this.state;
    return (
      <div>
        <DatePicker
          className="zent-picker-demo"
          format="YYYY/MM/DD"
          value={dateValue}
          onChange={this.onChangeDate}
        />
        <br />
        <MonthPicker
          className="zent-picker-demo"
          format="YYYY年MM月"
          value={monthValue}
          onChange={this.onChange}
        />
        <br />
        <DateRangePicker
          className="zent-picker-demo"
          format="YYYY-MM-DD"
          value={rangeValue}
          onChange={this.onChange}
          />
        </div>
    )
  }
}

ReactDOM.render(
  <Demo />,
  mountNode
)

:::

:::demo 传入 showTime 同时选择时间和日期

import { DatePicker, MonthPicker, DateRangePicker } from 'zent'

class Demo extends Component{
  state = {

  }

  onChangeDate = (val) => {
    this.setState({
      dateValue: val
    })
  }

  onChangeRange = (val) => {
    this.setState({
      rangeValue: val
    })
  }

  render(){
    const { dateValue, rangeValue } = this.state;
    return (
      <div>
        <DatePicker
          className="zent-picker-demo"
          showTime
          format="YYYY-MM-DD HH:mm:ss"
          value={dateValue}
          onChange={this.onChangeDate}
        />
        <br />
        <DateRangePicker
          className="zent-picker-demo"
          showTime
          format="YYYY-MM-DD HH:mm:ss"
          value={rangeValue}
          onChange={this.onChangeRange}
          />
      </div>
    )
  }
}
ReactDOM.render(
  <Demo />,
  mountNode
)

:::

:::demo 通过设置 valueType 来指定返回值的类型,默认为 string,支持 string/date/number,默认和传入的 value 类型一致。

import { DatePicker, MonthPicker, DateRangePicker } from 'zent'

class Demo extends Component{
  state = {

  }
  
  onChangeDate = (val) => {
    console.log(val)
    this.setState({
      dateValue: val
    })
  }

  onChangeRange = (val) => {
    console.log(val)
    this.setState({
      rangeValue: val
    })
  }

  render() {
    const { dateValue, rangeValue } = this.state;
    return (
       <div>
        <p className="demo-subtitle">返回时间戳</p>
        <DatePicker
          className="zent-picker-demo"
          valueType="number"
          value={dateValue}
          onChange={this.onChangeDate}
        />
        <br />
        <p className="demo-subtitle">返回 date 对象 </p>
        <DateRangePicker
          className="zent-picker-demo"
          valueType="date"
          value={rangeValue}
          onChange={this.onChangeRange}
          />
      </div>
    )
  }
}

ReactDOM.render(
  <Demo />,
  mountNode
)

:::

:::demo 传入 disabled 使输入框处于 disabled 状态

import { DatePicker, MonthPicker, DateRangePicker } from 'zent'

ReactDOM.render(
  <div>
    <DatePicker
      className="zent-picker-demo"
      value="2017-01-01"
      disabled
    />
    <br />
    <MonthPicker
      className="zent-picker-demo"
      disabled
    />
    <br />
    <DateRangePicker
      className="zent-picker-demo"
      disabled
      />
   </div>
   , mountNode
)

:::

:::demo 禁用部分日期,可以通过传入 disabledDate 函数来实现,返回 ture 表示禁用。另外,DatePicker 支持传入 min/max 属性来实现简单禁用逻辑。

import { DatePicker, MonthPicker, DateRangePicker } from 'zent'

class Demo extends Component{
  state = {

  }

  onChangeDate = (val) => {
    this.setState({
      dateValue: val
    })
  }

  onChangeRange = (val) => {
    this.setState({
      rangeValue: val
    })
  }

  disabledDate(val) {
    return val.getDate()%2 === 0
  }

  disabledRangeDate(val, type){
    return (val.getMonth()%2 ===0)
  }

  disabledRangeTime(type) {
    const disabledHour = (val) => {
      return type === 'start' ? val < 12 : val > 12;
    };
    const disabledMinute = (val) => {
      return type === 'start' ? val > 30 : val > 30;
    };
    const disabledSecond = (val) => {
      return type === 'start' ? val < 20 : val > 40;
    };
    return {
      disabledHour,
      disabledMinute,
      disabledSecond
    };
  }

  render(){
    const { dateValue, rangeValue } = this.state;
    return (
      <div>
        <DatePicker
          className="zent-picker-demo"
          disabledDate={this.disabledDate}
          value={dateValue}
          onChange={this.onChangeDate}
        />
        <br />
        <DateRangePicker
          className="zent-picker-demo"
          disabledDate={this.disabledRangeDate}
          value={rangeValue}
          onChange={this.onChangeRange}
          />
        <br />
        <DateRangePicker
          className="zent-picker-demo"
          showTime
          disabledDate={this.disabledRangeDate}
          disabledTime={this.disabledRangeTime}
          value={rangeValue}
          onChange={this.onChangeRange}
          />
      </div>
    )
  }
}

ReactDOM.render(
    <Demo />
   , mountNode
)

:::

:::demo 通过 defaultValue 来控制面板弹出是默认显示的日期。

import { DatePicker, MonthPicker, DateRangePicker } from 'zent'

class Demo extends Component{
  state = {

  }

  onChangeDate = (val) => {
    this.setState({
      dateValue: val
    })
  }

  onChangeMonth = (val) => {
    this.setState({
      monthValue: val
    })
  }

  onChangeRange = (val) => {
    this.setState({
      rangeValue: val
    })
  }

  render(){
    const { dateValue, monthValue, rangeValue, max } = this.state;
    return (
      <div>
        <DatePicker
          className="zent-picker-demo"
          value={dateValue}
          defaultValue="1990-01-01"
          onChange={this.onChangeDate}
        />
        <br />
        <MonthPicker
          className="zent-picker-demo"
          value={monthValue}
          defaultValue="2010-07"
          onChange={this.onChangeMonth}
        />
        <br />
        <DateRangePicker
          className="zent-picker-demo"
          value={rangeValue}
          defaultValue={["2016-01-01", "2017-01-01"]}
          onChange={this.onChangeRange}
          />
      </div>
    )
  }
}

ReactDOM.render(
  <Demo />,
  mountNode
)

:::

API

共同的 API

参数说明类型默认值是否必须
value默认选择日期string/Date
defaultValue默认面板显示日期string/Date
onChange确认日期回调函数,受控组件,value 和 onChange 必须同时提供funcnoop
onClick用户点击选择日期的回调func
onOpen面板弹出的回调func
onClose面板关闭的回调func
disabled是否处于 disabled 状态boolfalse
format返回日期字符串格式string不同的picker默认值不同,下详
placeholder提示文案string不同的picker默认值不同,下详
className额外的 css 类string
prefix自定义前缀string'zent'
confirmText确认按钮文字string'确认'

DateTimePicker

参数说明类型默认值是否必须
showTime是否显示时间筛选boolfalse
disabledTime时间禁用函数funcnoop
disabledDate判断日期是否可选函数funcnoop
format返回日期字符串格式stringYYYY-MM-DD
min可选日期的最小值string/Date
max可选日期的最大值string/Date
valueType设置 onChange 的返回值,可选值为 string/number/datestring''
placeholder提示文案string请选择日期

注意:

  • disabledDate 函数调用时会传入一个 date 对象作为参数,用户可以自定义这个 date 是否处于禁用区间,返回 true/false,需要特殊的禁用规则时可以通过这个函数来实现,一般情况下使用 maxmin 就可以满足需求。
  • max/mindisabledDate 会存在冲突,同时存在的时候以 disabledDate 的返回值为准。
  • disabledTime 函数应该返回一个对象,对象中包含 disabledHour,disabledMinute,disabledSecond 三个函数。
  • format 只需要传日期部分,时间部分当 showTimetrue 时会自动拼接, 同 RangePicker

更详细用法请看示例。

MonthPicker

参数说明类型默认值是否必须
value选中的月份string/Datenew Date()
format返回月份字符串格式string'YYYY-MM'
disabled是否处于disabled 状态boolfalse
placeholder提示文案string请选择月份

RangePicker

参数说明类型默认值是否必须
showTime是否显示时间筛选boolfalse
value默认选择日期array[]
format返回日期字符串格式string'YYYY-MM-DD'
disabledDate判断日期是否可选函数funcnoop
disabledTime时间禁用函数funcnoop
min可选日期的最小值string/instanceOf(Date)``
max可选日期的最大值string/instanceOf(Date)``
valueType设置 onChange 的返回值,可选值为 string/number/datestring''
placeholder提示文案string['开始日期','结束日期']

注意:

  • showTime 的时候,传入的 minmax 如果为字符串,必须有 time 部分,即 2017-01-01 11:11:11 种格式。
  • disabledTimeDatePicker 的类似,区别在于被调用时会传入一个 type 参数,值为 start/end,参照上面的 disabledTime 函数。
  • onClick 调用时会传入被点击的日期值和点击的类型(start/end) 作为参数,即 onClick(val, type)

格式化字符表

字符输出
YearYY70 71 ... 29 30
YYYY1970 1971 ... 2029 2030
MonthM1 2 ... 11 1
MM01 02 ... 11 12
MMM1月, 2月 ... 11月, 12月
MMMM一月, 二月 ... 十一月, 十二月
DateD1 2 ... 30 31
DD01 02 ... 30 31
d0 1 ... 5 6
ddd周日, 周一 ... 周五, 周六
dddd星期日, 星期一 ... 星期五, 星期六
.zent-picker-demo{ margin-bottom: 10px; margin-right: 10px; } .demo-subtitle{ margin-bottom: 5px; font-size: 12px; color: #666; }

FAQs

Package last updated on 24 Apr 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts