@@ -24,11 +24,16 @@ export const ACCESSIBILITY_COOKIE = 'dsAccessibilityCookie';
2424export const ACCESSIBILITY_SETTINGS_METADATA_KEY = 'dspace.accessibility.settings' ;
2525
2626/**
27- * Type containing all possible accessibility settings.
27+ * Array containing all possible accessibility settings.
2828 * When adding new settings, make sure to add the new setting to the accessibility-settings component form.
2929 * The converter methods to convert from stored format to form format (and vice-versa) need to be updated as well.
3030 */
31- export type AccessibilitySetting = 'notificationTimeOut' | 'liveRegionTimeOut' ;
31+ export const accessibilitySettingKeys = [ 'notificationTimeOut' , 'liveRegionTimeOut' ] as const ;
32+
33+ /**
34+ * Type representing the possible accessibility settings
35+ */
36+ export type AccessibilitySetting = typeof accessibilitySettingKeys [ number ] ;
3237
3338/**
3439 * Type representing an object that contains accessibility settings values for all accessibility settings.
@@ -294,24 +299,26 @@ export class AccessibilitySettingsService {
294299 }
295300
296301 /**
297- * Returns true if the provided value is a valid value for the provided AccessibilitySetting .
302+ * Returns true if the provided AccessibilitySetting is valid in regard to the provided formValues .
298303 */
299- isValid ( setting : AccessibilitySetting | string , value : string ) : boolean {
304+ isValid ( setting : AccessibilitySetting , formValues : AccessibilitySettingsFormValues ) : boolean {
300305 switch ( setting ) {
301306 case 'notificationTimeOut' :
302- return hasNoValue ( value ) || parseFloat ( value ) > 0 ;
307+ return formValues . notificationTimeOutEnabled ?
308+ hasNoValue ( formValues . notificationTimeOut ) || parseFloat ( formValues . notificationTimeOut ) > 0 :
309+ true ;
303310 case 'liveRegionTimeOut' :
304- return hasNoValue ( value ) || parseFloat ( value ) > 0 ;
311+ return hasNoValue ( formValues . liveRegionTimeOut ) || parseFloat ( formValues . liveRegionTimeOut ) > 0 ;
305312 default :
306313 throw new Error ( `Unhandled accessibility setting during validity check: ${ setting } ` ) ;
307314 }
308315 }
309316
310317 /**
311- * Returns true if all settings in the provided AccessibilitySettings object are valid
318+ * Returns true if all settings in the provided AccessibilitySettingsFormValues object are valid
312319 */
313- allValid ( settings : AccessibilitySettings ) {
314- return Object . entries ( settings ) . every ( ( [ setting , value ] , _ ) => this . isValid ( setting , value ) ) ;
320+ formValuesValid ( formValues : AccessibilitySettingsFormValues ) {
321+ return accessibilitySettingKeys . every ( setting => this . isValid ( setting , formValues ) ) ;
315322 }
316323}
317324
0 commit comments