diff --git a/src/apps/experimental/routes/user/display/DisplayPreferences.tsx b/src/apps/experimental/routes/user/display/DisplayPreferences.tsx index a862727cf1..0645edbd4f 100644 --- a/src/apps/experimental/routes/user/display/DisplayPreferences.tsx +++ b/src/apps/experimental/routes/user/display/DisplayPreferences.tsx @@ -2,13 +2,16 @@ import Checkbox from '@mui/material/Checkbox'; import FormControl from '@mui/material/FormControl'; import FormControlLabel from '@mui/material/FormControlLabel'; import FormHelperText from '@mui/material/FormHelperText'; +import InputLabel from '@mui/material/InputLabel'; import MenuItem from '@mui/material/MenuItem'; import Select, { SelectChangeEvent } from '@mui/material/Select'; import Stack from '@mui/material/Stack'; import TextField from '@mui/material/TextField'; import Typography from '@mui/material/Typography'; -import React from 'react'; +import React, { Fragment } from 'react'; +import { appHost } from 'components/apphost'; +import { useApi } from 'hooks/useApi'; import globalize from 'scripts/globalize'; import { DisplaySettingsValues } from './types'; import { useScreensavers } from './hooks/useScreensavers'; @@ -20,49 +23,56 @@ interface DisplayPreferencesProps { } export function DisplayPreferences({ onChange, values }: Readonly) { + const { user } = useApi(); const { screensavers } = useScreensavers(); const { themes } = useServerThemes(); return ( - + {globalize.translate('Display')} - - - - {globalize.translate('DisplayModeHelp')} - {globalize.translate('LabelPleaseRestart')} - - + { appHost.supports('displaymode') && ( + + {globalize.translate('LabelDisplayMode')} + + + {globalize.translate('DisplayModeHelp')} + {globalize.translate('LabelPleaseRestart')} + + + ) } - - - + { themes.length > 0 && ( + + {globalize.translate('LabelTheme')} + + + ) } - {/* TODO: There are some admin-only options here */} - {/* Server Dashboard Theme */} + { themes.length > 0 && user?.Policy?.IsAdministrator && ( + + {globalize.translate('LabelDashboardTheme')} + + + ) } - - - + { screensavers.length > 0 && appHost.supports('screensaver') && ( + + + {globalize.translate('LabelScreensaver')} + + - {/* TODO: There are some extra options here related to screensavers */} + + + + {globalize.translate('LabelBackdropScreensaverIntervalHelp')} + + + + ) } ) { return ( - + {globalize.translate('HeaderLibraries')} @@ -32,7 +32,7 @@ export function LibraryPreferences({ onChange, values }: Readonly) { + if (!appHost.supports('displaylanguage') && !datetime.supportsLocalization()) { + return null; + } return ( - + {globalize.translate('Localization')} - - - - {globalize.translate('LabelDisplayLanguageHelp')} - + {globalize.translate('LabelDisplayLanguage')} + + + {globalize.translate('LabelDisplayLanguageHelp')} + { appHost.supports('externallinks') && ( + + {globalize.translate('LearnHowYouCanContribute')} + + ) } + + + ) } - - - + { datetime.supportsLocalization() && ( + + {globalize.translate('LabelDateTimeLocale')} + + + ) } ); } diff --git a/src/apps/experimental/routes/user/display/NextUpPreferences.tsx b/src/apps/experimental/routes/user/display/NextUpPreferences.tsx index fba6b406ef..1c21012a1f 100644 --- a/src/apps/experimental/routes/user/display/NextUpPreferences.tsx +++ b/src/apps/experimental/routes/user/display/NextUpPreferences.tsx @@ -17,13 +17,13 @@ interface NextUpPreferencesProps { export function NextUpPreferences({ onChange, values }: Readonly) { return ( - + {globalize.translate('NextUp')} { const target = e.target as HTMLInputElement; const fieldName = target.name as keyof DisplaySettingsValues; - const fieldValue = target.checked ?? target.value; + const fieldValue = target.type === 'checkbox' ? target.checked : target.value; if (values?.[fieldName] !== fieldValue) { updateField({