@zohodesk/components
Version:
Dot UI is a customizable React component library built to deliver a clean, accessible, and developer-friendly UI experience. It offers a growing set of reusable components designed to align with modern design systems and streamline application development
83 lines (74 loc) • 1.93 kB
JavaScript
/** * Methods ** */
import { getIsNewValueType, getDayDetails, getIsNumberTyped, getIsDeleteTyped } from "./index";
import { getKeyValue } from "../../utils/Common";
export function getChangedDay(values, event, focusOrders, keyActions) {
const {
keyCode,
which
} = event;
const {
day = ''
/*month = '', year = ''*/
} = values;
let isChanged = false;
let newDay = Number.parseInt(day) || 0; // const 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
/*getDayEnd(newMonth, newYear);*/
} = getDayDetails();
if (keyCode === 38) {
//up arrow
if (newDay === endPoint || !newDay) {
isChanged = true;
newDay = startPoint;
} else if (newDay) {
isChanged = true;
newDay += 1;
}
} else if (keyCode === 40) {
//down arrow
if (newDay === startPoint || !newDay) {
isChanged = true;
newDay = endPoint;
} else if (newDay) {
isChanged = true;
newDay -= 1;
}
} else if (getIsNumberTyped(event)) {
const keyString = getKeyValue(event);
let newValue = isNewType ? keyString : day.toString() + keyString;
newValue = Number.parseInt(newValue);
if (isNewType) {
isChanged = true;
if (newValue * 10 > endPoint) {
newFocusOrder += 1;
}
newDay = newValue;
} else {
isChanged = true;
newFocusOrder += 1;
if (newValue > endPoint) {
newDay = endPoint;
} else if (!newValue) {
newDay = startPoint;
} else {
newDay = newValue;
}
}
} else if (getIsDeleteTyped(keyCode)) {
isChanged = true;
newDay = '';
}
return {
day: newDay,
isChanged,
focusOrder: newFocusOrder
};
}