diff --git a/src/app/services/pause.service.ts b/src/app/services/pause.service.ts
index 84cac0e1..0032cf95 100644
--- a/src/app/services/pause.service.ts
+++ b/src/app/services/pause.service.ts
@@ -33,6 +33,7 @@ class PauseService {
{ name: 'navigationButtons', instanceService: navigationButtonsServiceInstance.setNavigationButtons.bind(this), value: '' },
{ name: 'readAloud', instanceService: readAloudServiceInstance.setReadAloud.bind(this), value: '' },
{ name: 'readingGuide', instanceService: readingGuideServiceInstance.setReadingMaskGuide.bind(this), value: '' },
+ { name: 'restartTopLeft', instanceService: restartTopLeftServiceInstance.setRestartTopLeft.bind(this), value: '' },
{ name: 'scroll', instanceService: scrollServiceInstance.setScroll.bind(this), value: '' },
{ name: 'skipToContent', instanceService: skipToContentServiceInstance.setSkipToContent.bind(this), value: '' },
{ name: 'stopAnimations', instanceService: stopAnimationsServiceInstance.setStopAnimations.bind(this), value: '' },
diff --git a/src/app/services/settings/read-aloud.service.ts b/src/app/services/settings/read-aloud.service.ts
index 251893ec..bd341ef1 100644
--- a/src/app/services/settings/read-aloud.service.ts
+++ b/src/app/services/settings/read-aloud.service.ts
@@ -19,7 +19,7 @@ class ReadAloudService extends BodySelectorService {
padding: 1rem;
pointer-events: none;
transform: translate(0%, 75%);
- z-index: 2147483645;
+ z-index: calc(infinity)
}`;
constructor() {
diff --git a/src/app/services/settings/restart-top-left.service.ts b/src/app/services/settings/restart-top-left.service.ts
new file mode 100644
index 00000000..a5de80b0
--- /dev/null
+++ b/src/app/services/settings/restart-top-left.service.ts
@@ -0,0 +1,26 @@
+let restartTopLeftServiceIsInstantiated: boolean;
+
+class RestartTopLeftService {
+ firstElement: HTMLAnchorElement;
+
+ constructor() {
+ if (restartTopLeftServiceIsInstantiated) {
+ throw new Error('RestartTopLeftService is already instantiated.');
+ }
+
+ restartTopLeftServiceIsInstantiated = true;
+ }
+
+ setRestartTopLeft = (value: string): void => {
+ this.firstElement?.remove();
+ if (value !== DEFAULT_VALUE) {
+ this.addAndFocusFirstElement();
+ }
+ }
+
+ addAndFocusFirstElement = (): void => {
+ this.firstElement = document.createElement('a');
+ document.body.insertBefore(this.firstElement, document.querySelector(APP_NAME));
+ this.firstElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
+ }
+}
diff --git a/src/app/shared/btn-setting.component.ts b/src/app/shared/btn-setting.component.ts
index d1c0e7ef..940e24a4 100644
--- a/src/app/shared/btn-setting.component.ts
+++ b/src/app/shared/btn-setting.component.ts
@@ -1,6 +1,6 @@
const btnSettingLayout: HTMLTemplateElement = document.createElement('template');
btnSettingLayout.innerHTML = `
-