@snapdragonsnursery/react-components 1.19.5 → 1.19.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -92,48 +92,47 @@ export function DateRangePicker({
|
|
|
92
92
|
const hasCompleteCurrentRange = Boolean(
|
|
93
93
|
internalRange?.from && internalRange?.to
|
|
94
94
|
);
|
|
95
|
+
const isInProgressRange = Boolean(
|
|
96
|
+
internalRange?.from && !internalRange?.to
|
|
97
|
+
);
|
|
95
98
|
|
|
96
|
-
let newRange
|
|
97
|
-
|
|
98
|
-
if (normalizedRange.from && normalizedRange.to) {
|
|
99
|
-
if (hasCompleteCurrentRange && !isSelectingRange.current) {
|
|
100
|
-
const sameStart = datesEqual(normalizedRange.from, internalRange.from);
|
|
99
|
+
let newRange;
|
|
101
100
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
to: normalizedRange.to,
|
|
107
|
-
};
|
|
108
|
-
} else {
|
|
109
|
-
// Starting a new range selection cycle
|
|
110
|
-
newRange = {
|
|
111
|
-
from: normalizedSelectedDay ?? normalizedRange.from,
|
|
112
|
-
to: null,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
} else if (internalRange?.from && !internalRange?.to) {
|
|
116
|
-
// Completing an in-progress range
|
|
101
|
+
// If we're in the middle of selecting a range (start date set, end date not set)
|
|
102
|
+
if (isInProgressRange) {
|
|
103
|
+
// Completing an in-progress range - set the clicked date as the end date
|
|
104
|
+
if (normalizedRange.to) {
|
|
117
105
|
newRange = {
|
|
118
106
|
from: internalRange.from,
|
|
119
107
|
to: normalizedRange.to,
|
|
120
108
|
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (hasCompleteCurrentRange && !isSelectingRange.current) {
|
|
124
|
-
// New cycle starting from the selected day
|
|
109
|
+
} else if (normalizedRange.from) {
|
|
110
|
+
// Use the clicked date as end date
|
|
125
111
|
newRange = {
|
|
126
|
-
from:
|
|
127
|
-
to:
|
|
112
|
+
from: internalRange.from,
|
|
113
|
+
to: normalizedSelectedDay ?? normalizedRange.from,
|
|
128
114
|
};
|
|
129
115
|
} else {
|
|
116
|
+
newRange = internalRange; // Keep current state
|
|
117
|
+
}
|
|
118
|
+
} else if (hasCompleteCurrentRange) {
|
|
119
|
+
// We have a complete range - clicking ANY date should start a new range
|
|
120
|
+
// Use the clicked date as the new start date
|
|
121
|
+
newRange = {
|
|
122
|
+
from:
|
|
123
|
+
normalizedSelectedDay ?? normalizedRange.from ?? normalizedRange.to,
|
|
124
|
+
to: null,
|
|
125
|
+
};
|
|
126
|
+
} else {
|
|
127
|
+
// No range selected or only partial - start a new range
|
|
128
|
+
if (normalizedRange.from) {
|
|
130
129
|
newRange = {
|
|
131
130
|
from: normalizedRange.from,
|
|
132
|
-
to: null,
|
|
131
|
+
to: normalizedRange.to || null,
|
|
133
132
|
};
|
|
133
|
+
} else {
|
|
134
|
+
newRange = null;
|
|
134
135
|
}
|
|
135
|
-
} else {
|
|
136
|
-
newRange = null;
|
|
137
136
|
}
|
|
138
137
|
|
|
139
138
|
setInternalRange(newRange);
|