fix: force default values

This commit is contained in:
Daniel
2025-11-25 21:51:00 +01:00
committed by Nicolás Hatcher
parent 3fd55bb5c9
commit a345d7c9ac
2 changed files with 50 additions and 39 deletions

View File

@@ -23,6 +23,8 @@ export interface SheetTabBarProps {
onSheetDeleted: () => void;
onHideSheet: () => void;
onOpenWorkbookSettings: () => void;
initialLocale: string;
initialTimezone: string;
}
function SheetTabBar(props: SheetTabBarProps) {
@@ -124,6 +126,8 @@ function SheetTabBar(props: SheetTabBarProps) {
<WorkbookSettingsDialog
open={workbookSettingsOpen}
onClose={() => setWorkbookSettingsOpen(false)}
initialLocale={props.initialLocale}
initialTimezone={props.initialTimezone}
/>
</Container>
);

View File

@@ -16,18 +16,30 @@ import { theme } from "../../theme";
type WorkbookSettingsDialogProps = {
open: boolean;
onClose: () => void;
initialLocale?: string;
initialTimezone?: string;
initialLocale: string;
initialTimezone: string;
onSave?: (locale: string, timezone: string) => void;
};
const WorkbookSettingsDialog = (properties: WorkbookSettingsDialogProps) => {
const { t } = useTranslation();
const locales = ["en-US", "en-GB", "de-DE", "fr-FR", "es-ES"];
const timezones = [
"Berlin, Germany (GMT+1)",
"New York, USA (GMT-5)",
"Tokyo, Japan (GMT+9)",
"London, UK (GMT+0)",
"Sydney, Australia (GMT+10)",
];
const [selectedLocale, setSelectedLocale] = useState<string>(
properties.initialLocale || "",
properties.initialLocale && locales.includes(properties.initialLocale)
? properties.initialLocale
: locales[0],
);
const [selectedTimezone, setSelectedTimezone] = useState<string>(
properties.initialTimezone || "",
properties.initialTimezone && timezones.includes(properties.initialTimezone)
? properties.initialTimezone
: timezones[0],
);
const handleSave = () => {
@@ -37,15 +49,17 @@ const WorkbookSettingsDialog = (properties: WorkbookSettingsDialogProps) => {
properties.onClose();
};
const timezones = [
"Berlin, Germany (GMT+1)",
"New York, USA (GMT-5)",
"Tokyo, Japan (GMT+9)",
"London, UK (GMT+0)",
"Sydney, Australia (GMT+10)",
];
// Ensure selectedLocale is always a valid locale
const validSelectedLocale =
selectedLocale && locales.includes(selectedLocale)
? selectedLocale
: locales[0];
const locales = ["en-US", "en-GB", "de-DE", "fr-FR", "es-ES"];
// Ensure selectedTimezone is always a valid timezone
const validSelectedTimezone =
selectedTimezone && timezones.includes(selectedTimezone)
? selectedTimezone
: timezones[0];
return (
<StyledDialog
@@ -85,11 +99,10 @@ const WorkbookSettingsDialog = (properties: WorkbookSettingsDialogProps) => {
<FormControl fullWidth>
<StyledSelect
id="locale"
value={selectedLocale}
value={validSelectedLocale}
onChange={(event) => {
setSelectedLocale(event.target.value as string);
}}
displayEmpty
MenuProps={{
PaperProps: {
sx: menuPaperStyles,
@@ -99,18 +112,15 @@ const WorkbookSettingsDialog = (properties: WorkbookSettingsDialogProps) => {
},
}}
>
{locales.map((locale) => {
const isSelected = locale === selectedLocale;
return (
<StyledMenuItem
key={locale}
value={locale}
$isSelected={isSelected}
>
{locale}
</StyledMenuItem>
);
})}
{locales.map((locale) => (
<StyledMenuItem
key={locale}
value={locale}
$isSelected={locale === selectedLocale}
>
{locale}
</StyledMenuItem>
))}
</StyledSelect>
<HelperBox>
<Row>
@@ -139,24 +149,21 @@ const WorkbookSettingsDialog = (properties: WorkbookSettingsDialogProps) => {
<FormControl fullWidth>
<StyledAutocomplete
id="timezone"
value={selectedTimezone}
value={validSelectedTimezone}
onChange={(_event, newValue) => {
setSelectedTimezone((newValue as string) || "");
}}
options={timezones}
renderInput={(params) => <TextField {...params} />}
renderOption={(props, option) => {
const isSelected = option === selectedTimezone;
return (
<StyledMenuItem
{...props}
key={option as string}
$isSelected={isSelected}
>
{option as string}
</StyledMenuItem>
);
}}
renderOption={(props, option) => (
<StyledMenuItem
{...props}
key={option as string}
$isSelected={option === validSelectedTimezone}
>
{option as string}
</StyledMenuItem>
)}
disableClearable
slotProps={{
paper: {