ant-design-vue/components/vc-calendar/src/util/index.js

92 lines
2.2 KiB
JavaScript

import moment from 'moment'
const defaultDisabledTime = {
disabledHours () {
return []
},
disabledMinutes () {
return []
},
disabledSeconds () {
return []
},
}
export function getTodayTime (value) {
const today = moment()
today.locale(value.locale()).utcOffset(value.utcOffset())
return today
}
export function getTitleString (value) {
return value.format('LL')
}
export function getTodayTimeStr (value) {
const today = getTodayTime(value)
return getTitleString(today)
}
export function getMonthName (month) {
const locale = month.locale()
const localeData = month.localeData()
return localeData[locale === 'zh-cn' ? 'months' : 'monthsShort'](month)
}
export function syncTime (from, to) {
if (!moment.isMoment(from) || !moment.isMoment(to)) return
to.hour(from.hour())
to.minute(from.minute())
to.second(from.second())
}
export function getTimeConfig (value, disabledTime) {
let disabledTimeConfig = disabledTime ? disabledTime(value) : {}
disabledTimeConfig = {
...defaultDisabledTime,
...disabledTimeConfig,
}
return disabledTimeConfig
}
export function isTimeValidByConfig (value, disabledTimeConfig) {
let invalidTime = false
if (value) {
const hour = value.hour()
const minutes = value.minute()
const seconds = value.second()
const disabledHours = disabledTimeConfig.disabledHours()
if (disabledHours.indexOf(hour) === -1) {
const disabledMinutes = disabledTimeConfig.disabledMinutes(hour)
if (disabledMinutes.indexOf(minutes) === -1) {
const disabledSeconds = disabledTimeConfig.disabledSeconds(hour, minutes)
invalidTime = disabledSeconds.indexOf(seconds) !== -1
} else {
invalidTime = true
}
} else {
invalidTime = true
}
}
return !invalidTime
}
export function isTimeValid (value, disabledTime) {
const disabledTimeConfig = getTimeConfig(value, disabledTime)
return isTimeValidByConfig(value, disabledTimeConfig)
}
export function isAllowedDate (value, disabledDate, disabledTime) {
if (disabledDate) {
if (disabledDate(value)) {
return false
}
}
if (disabledTime) {
if (!isTimeValid(value, disabledTime)) {
return false
}
}
return true
}