UNPKG

@material-ui/lab

Version:

Material-UI Lab - Incubator for Material-UI React components.

128 lines (108 loc) 3.76 kB
export var getMeridiem = function getMeridiem(date, utils) { if (!date) { return null; } return utils.getHours(date) >= 12 ? 'pm' : 'am'; }; export var convertValueToMeridiem = function convertValueToMeridiem(value, meridiem, ampm) { if (ampm) { var currentMeridiem = value >= 12 ? 'pm' : 'am'; if (currentMeridiem !== meridiem) { return meridiem === 'am' ? value - 12 : value + 12; } } return value; }; export var convertToMeridiem = function convertToMeridiem(time, meridiem, ampm, utils) { var newHoursAmount = convertValueToMeridiem(utils.getHours(time), meridiem, ampm); return utils.setHours(time, newHoursAmount); }; var clockCenter = { x: 260 / 2, y: 260 / 2 }; var baseClockPoint = { x: clockCenter.x, y: 0 }; var cx = baseClockPoint.x - clockCenter.x; var cy = baseClockPoint.y - clockCenter.y; var rad2deg = function rad2deg(rad) { return rad * 57.29577951308232; }; var getAngleValue = function getAngleValue(step, offsetX, offsetY) { var x = offsetX - clockCenter.x; var y = offsetY - clockCenter.y; var atan = Math.atan2(cx, cy) - Math.atan2(x, y); var deg = rad2deg(atan); deg = Math.round(deg / step) * step; deg %= 360; var value = Math.floor(deg / step) || 0; var delta = Math.pow(x, 2) + Math.pow(y, 2); var distance = Math.sqrt(delta); return { value: value, distance: distance }; }; export var getMinutes = function getMinutes(offsetX, offsetY) { var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var angleStep = step * 6; var _getAngleValue = getAngleValue(angleStep, offsetX, offsetY), value = _getAngleValue.value; value = value * step % 60; return value; }; export var getHours = function getHours(offsetX, offsetY, ampm) { var _getAngleValue2 = getAngleValue(30, offsetX, offsetY), value = _getAngleValue2.value, distance = _getAngleValue2.distance; var hour = value || 12; if (!ampm) { if (distance < 90) { hour += 12; hour %= 24; } } else { hour %= 12; } return hour; }; export function getSecondsInDay(date, utils) { return utils.getHours(date) * 3600 + utils.getMinutes(date) * 60 + utils.getSeconds(date); } export var createIsAfterIgnoreDatePart = function createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, utils) { return function (dateLeft, dateRight) { if (disableIgnoringDatePartForTimeValidation) { return utils.isAfter(dateLeft, dateRight); } return getSecondsInDay(dateLeft, utils) > getSecondsInDay(dateRight, utils); }; }; export var validateTime = function validateTime(utils, value, _ref) { var minTime = _ref.minTime, maxTime = _ref.maxTime, shouldDisableTime = _ref.shouldDisableTime, disableIgnoringDatePartForTimeValidation = _ref.disableIgnoringDatePartForTimeValidation; var date = utils.date(value); var isAfterComparingFn = createIsAfterIgnoreDatePart(Boolean(disableIgnoringDatePartForTimeValidation), utils); if (value === null) { return null; } switch (true) { case !utils.isValid(value): return 'invalidDate'; case Boolean(minTime && isAfterComparingFn(minTime, date)): return 'minTime'; case Boolean(maxTime && isAfterComparingFn(date, maxTime)): return 'maxTime'; case Boolean(shouldDisableTime && shouldDisableTime(utils.getHours(date), 'hours')): return 'shouldDisableTime-hours'; case Boolean(shouldDisableTime && shouldDisableTime(utils.getMinutes(date), 'minutes')): return 'shouldDisableTime-minutes'; case Boolean(shouldDisableTime && shouldDisableTime(utils.getSeconds(date), 'seconds')): return 'shouldDisableTime-seconds'; default: return null; } };