UNPKG

@zohodesk/components

Version:

In this Package, we Provide Some Basic Components to Build Web App

90 lines (82 loc) 2.13 kB
/** * Methods ** */ import { getIsNewValueType, getIsNumberTyped, getIsDeleteTyped, getMonthDetails, getDayEnd } from "./index"; import { getKeyValue } from "../../utils/Common"; export function getChangedMonth(values, event, focusOrders, keyActions) { const { keyCode, which } = event; const { day = '', month = '', year = '' } = values; let isChanged = false; let newDay = Number.parseInt(day) || 0; let newMonth = Number.parseInt(month) || 0; const newYear = Number.parseInt(year) || 0; const { focusOrder } = focusOrders; let newFocusOrder = focusOrder; const isNewType = getIsNewValueType(focusOrders, keyActions); const { startPoint, endPoint } = getMonthDetails(); if (keyCode === 38) { //up arrow if (newMonth === endPoint || !newMonth) { isChanged = true; newMonth = startPoint; } else if (newMonth) { isChanged = true; newMonth += 1; } } else if (keyCode === 40) { //down arrow if (newMonth === startPoint || !newMonth) { isChanged = true; newMonth = endPoint; } else if (newMonth) { isChanged = true; newMonth -= 1; } } else if (getIsNumberTyped(event)) { const keyString = getKeyValue(event); let newValue = isNewType ? keyString : month.toString() + keyString; newValue = Number.parseInt(newValue); if (isNewType) { isChanged = true; if (newValue * 10 > endPoint) { newFocusOrder += 1; } newMonth = newValue; } else { isChanged = true; newFocusOrder += 1; if (newValue > endPoint) { newMonth = endPoint; } else if (!newValue) { newMonth = startPoint; } else { newMonth = newValue; } } } else if (getIsDeleteTyped(keyCode)) { isChanged = true; newMonth = ''; } const dayEnd = getDayEnd(newMonth, newYear); let dayChanged = false; if (newDay && newDay > dayEnd) { dayChanged = true; newDay = dayEnd; } return { day: dayChanged ? newDay : day, month: newMonth, isChanged, focusOrder: newFocusOrder }; }