Skip to content

Commit 9055f72

Browse files
authored
Merge pull request #852 from buildo/datepicker-fixes
[DateField] Allow shortcuts for null values + fix style defect
2 parents 73c05a9 + 4a46df2 commit 9055f72

File tree

4 files changed

+22
-11
lines changed

4 files changed

+22
-11
lines changed

Diff for: packages/bento-design-system/src/DateField/DateField.tsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ export type ShortcutProps<Value> = {
1818
};
1919
type SingleDateFieldProps = {
2020
type?: "single";
21-
shortcuts?: ShortcutProps<Date>[];
21+
shortcuts?: ShortcutProps<Date | null>[];
2222
} & FieldProps<Date | null>;
2323
type RangeDateFieldProps = {
2424
type: "range";
25-
shortcuts?: ShortcutProps<[Date, Date]>[];
25+
shortcuts?: ShortcutProps<[Date, Date] | null>[];
2626
} & FieldProps<[Date, Date] | null>;
2727
type Props = (SingleDateFieldProps | RangeDateFieldProps) & {
2828
minDate?: Date;
@@ -138,6 +138,7 @@ function RangeDateField({ disabled, readOnly, ...props }: Extract<Props, { type:
138138
props.onChange([range.start.toDate(localTimeZone), range.end.toDate(localTimeZone)]);
139139
}
140140
},
141+
shouldForceLeadingZeros: true,
141142
} as const;
142143
const state = useDateRangePickerState(internalProps);
143144
const ref = useRef(null);

Diff for: packages/bento-design-system/src/DateField/Day.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ function computeStyle(props: {
4747
return "focused";
4848
} else return "default";
4949
} else {
50-
if (props.isStartDate) {
50+
if (props.isInHoverRange) {
51+
return "inHoverRange";
52+
} else if (props.isStartDate) {
5153
if (props.isEndDate) {
5254
return "selected";
5355
}
@@ -56,8 +58,6 @@ function computeStyle(props: {
5658
return "selectedEnd";
5759
} else if (props.isInRange) {
5860
return "selectedRange";
59-
} else if (props.isInHoverRange) {
60-
return "inHoverRange";
6161
} else if (props.isFocused) {
6262
return "focused";
6363
} else {

Diff for: packages/bento-design-system/src/DateField/Input.tsx

+11-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
import { CalendarDate, createCalendar } from "@internationalized/date";
2-
import { AriaDateFieldOptions, useDateField, useDateSegment } from "@react-aria/datepicker";
1+
import { createCalendar } from "@internationalized/date";
2+
import {
3+
AriaDatePickerProps,
4+
DateValue,
5+
useDateField,
6+
useDateSegment,
7+
} from "@react-aria/datepicker";
38
import { useLocale } from "@react-aria/i18n";
49
import {
510
DateFieldState,
@@ -25,12 +30,12 @@ import { ValidationState } from "@react-types/shared";
2530
import { Column, Columns } from "../Layout/Columns";
2631

2732
type Props = (
28-
| { type: "single"; fieldProps: AriaDateFieldOptions<CalendarDate> }
33+
| { type: "single"; fieldProps: AriaDatePickerProps<DateValue> }
2934
| {
3035
type: "range";
3136
fieldProps: {
32-
start: AriaDateFieldOptions<CalendarDate>;
33-
end: AriaDateFieldOptions<CalendarDate>;
37+
start: AriaDatePickerProps<DateValue>;
38+
end: AriaDatePickerProps<DateValue>;
3439
};
3540
}
3641
) & {
@@ -60,7 +65,7 @@ function DateSegment({ segment, state }: { segment: DateSegmentType; state: Date
6065
);
6166
}
6267

63-
function DateField({ fieldProps }: { fieldProps: AriaDateFieldOptions<CalendarDate> }) {
68+
function DateField({ fieldProps }: { fieldProps: AriaDatePickerProps<DateValue> }) {
6469
const { locale } = useLocale();
6570
const ref = useRef(null);
6671
const state = useDateFieldState({

Diff for: packages/bento-design-system/stories/Components/DateField.stories.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ export const SingleWithShortcuts = {
6767
args: {
6868
value: null,
6969
shortcuts: [
70+
{ label: "Clear", value: null },
7071
{
7172
label: "Today",
7273
value: new Date(),
@@ -132,6 +133,10 @@ export const RangeWithShortcuts = {
132133
value: null,
133134
type: "range",
134135
shortcuts: [
136+
{
137+
label: "Clear all",
138+
value: null,
139+
},
135140
{
136141
label: "This Week",
137142
value: [startOfWeek(today), endOfWeek(today)],

0 commit comments

Comments
 (0)