@zohodesk/components
Version:
In this Package, we Provide Some Basic Components to Build Web App
90 lines (82 loc) • 2.13 kB
JavaScript
/** * 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
};
}