Skip to content

Commit 81dec08

Browse files
author
akaidc2
committed
display index updates to most currently modified date within range array
1 parent 0cb09ce commit 81dec08

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
/node_modules
66
/umd
77
npm-debug.log*
8+
.idea

src/Calendar/withMultipleRanges.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export const withMultipleRanges = compose(
6868
passThrough: {
6969
...passThrough,
7070
Day: {
71-
onClick: (date) => handleSelect(date, {selected, ...props}),
71+
onClick: (date) => handleSelect(date, {selected, setDisplayIndex, ...props}),
7272
handlers: {
7373
onMouseOver: !isTouchDevice && props.selectionStart
7474
? (e) => handleMouseOver(e, {selected, ...props})
@@ -101,34 +101,36 @@ function getSortedSelection({start, end}) {
101101
: {start: end, end: start};
102102
}
103103

104-
function handleSelect(date, {onSelect, selected, selectionStart, setSelectionStart, selectionStartIdx, setSelectionStartIdx}) {
104+
function handleSelect(date, {onSelect, selected, selectionStart, setSelectionStart, selectionStartIdx, setSelectionStartIdx, setDisplayIndex}) {
105105
const positionOfDate = determineIfDateAlreadySelected(date, selected);
106-
const funcs = {onSelect, setSelectionStart, setSelectionStartIdx};
106+
const funcs = {onSelect, setSelectionStart, setSelectionStartIdx, setDisplayIndex};
107107

108108
if(positionOfDate.value && !selectionStart) { //selecting an already defined range
109109
const selectedDate = selected[positionOfDate.index];//not clone so modding this is modding selected
110110
selectedDate.end = date; //not possible to have start/end reversed when clicking on already set range
111111

112-
updateSelectedState(selectedDate.start, positionOfDate.index, selected, funcs);//grab index of selected and set in state
112+
updateSelectedState(positionOfDate.index, selectedDate.start, positionOfDate.index, selected, funcs);//grab index of selected and set in state
113113
} else if (selectionStart) { //ending date range selection
114114
if (positionOfDate.value === PositionTypes.START && !(date < selectionStart)) { //if in process and selecting start, assume they want to cancel
115-
updateSelectedState(null, null, [...selected.slice(0, positionOfDate.index), ...selected.slice(positionOfDate.index+1)], funcs);
115+
const displayIdx = positionOfDate.index > 0 ? positionOfDate.index -1 : 0;
116+
updateSelectedState(displayIdx, null, null, [...selected.slice(0, positionOfDate.index), ...selected.slice(positionOfDate.index+1)], funcs);
116117
} else {
117118
selected[selectionStartIdx] = { //modifying passed in object without clone due to immediate set state
118119
...getSortedSelection({
119120
start: selectionStart,
120121
end: date,
121122
}),
122123
};
123-
updateSelectedState(null, null, selected, funcs);
124+
updateSelectedState(positionOfDate.index, null, null, selected, funcs);
124125
}
125126
} else { //starting new date range
126-
updateSelectedState(date, selected.length, selected.concat({eventType:EVENT_TYPES.START, start: date, end: date}), funcs)//length accounts for increase due to concat
127+
updateSelectedState(selected.length, date, selected.length, selected.concat({eventType:EVENT_TYPES.START, start: date, end: date}), funcs)//length accounts for increase due to concat
127128
}
128129
}
129130

130-
function updateSelectedState(selectStart, selectStartIdx, selected, {onSelect, setSelectionStart, setSelectionStartIdx}) {
131+
function updateSelectedState(displayIdx, selectStart, selectStartIdx, selected, {onSelect, setSelectionStart, setSelectionStartIdx, setDisplayIndex}) {
131132
onSelect(selected);
133+
setDisplayIndex(displayIdx);
132134
setSelectionStart(selectStart);
133135
setSelectionStartIdx(selectStartIdx);
134136
}

0 commit comments

Comments
 (0)