Dashboards: WeekStart is now of type WeekStart | undefined instead of string (#101123)

* change weektype from string to WeekStart | undefined

* Change to WeekStart in more places, fix lint

* change in more places

* More weekstart changes

* fix snapshot, update betterer

* keep weekstart as '' in test dashboards to make sure it doesn't break old dashboards
This commit is contained in:
Oscar Kilhed
2025-02-24 11:35:55 +01:00
committed by GitHub
parent 5d57236a0c
commit 01b57f412f
15 changed files with 42 additions and 36 deletions
@@ -7,8 +7,8 @@ import { Combobox } from '../Combobox/Combobox';
import { ComboboxOption } from '../Combobox/types';
export interface Props {
onChange: (weekStart: WeekStart) => void;
value: string;
onChange: (weekStart?: WeekStart) => void;
value?: WeekStart;
width?: number;
autoFocus?: boolean;
onBlur?: () => void;
@@ -24,9 +24,9 @@ const weekStarts: ComboboxOption[] = [
{ value: 'monday', label: 'Monday' },
];
const isWeekStart = (value: string): value is WeekStart => {
export function isWeekStart(value: string): value is WeekStart {
return ['saturday', 'sunday', 'monday'].includes(value);
};
}
declare global {
interface Window {
@@ -57,13 +57,13 @@ export const WeekStartPicker = (props: Props) => {
const onChangeWeekStart = useCallback(
(selectable: ComboboxOption | null) => {
if (selectable && selectable.value !== undefined) {
onChange(selectable.value as WeekStart);
onChange(isWeekStart(selectable.value) ? selectable.value : undefined);
}
},
[onChange]
);
const selected = useMemo(() => weekStarts.find((item) => item.value === value)?.value ?? null, [value]);
const selected = useMemo(() => weekStarts.find((item) => item.value === value)?.value ?? '', [value]);
return (
<Combobox
+1 -1
View File
@@ -40,7 +40,7 @@ export { TimePickerTooltip } from './DateTimePickers/TimeRangePicker';
export { TimeRangeLabel } from './DateTimePickers/TimeRangePicker/TimeRangeLabel';
export { TimeOfDayPicker } from './DateTimePickers/TimeOfDayPicker';
export { TimeZonePicker } from './DateTimePickers/TimeZonePicker';
export { WeekStartPicker, getWeekStart, type WeekStart } from './DateTimePickers/WeekStartPicker';
export { WeekStartPicker, getWeekStart, type WeekStart, isWeekStart } from './DateTimePickers/WeekStartPicker';
export { DatePicker, type DatePickerProps } from './DateTimePickers/DatePicker/DatePicker';
export {
DatePickerWithInput,