From c4e33156426aafe255d80c37ba4cb60e80351e7b Mon Sep 17 00:00:00 2001 From: Huang Xin Date: Sat, 28 Mar 2026 13:57:20 +0800 Subject: [PATCH] feat(scroll): add single section scroll option, closes #3663 (#3668) --- .../public/locales/ar/translation.json | 3 ++- .../public/locales/bn/translation.json | 3 ++- .../public/locales/bo/translation.json | 3 ++- .../public/locales/de/translation.json | 3 ++- .../public/locales/el/translation.json | 3 ++- .../public/locales/es/translation.json | 3 ++- .../public/locales/fa/translation.json | 3 ++- .../public/locales/fr/translation.json | 3 ++- .../public/locales/he/translation.json | 3 ++- .../public/locales/hi/translation.json | 3 ++- .../public/locales/id/translation.json | 3 ++- .../public/locales/it/translation.json | 3 ++- .../public/locales/ja/translation.json | 3 ++- .../public/locales/ko/translation.json | 3 ++- .../public/locales/ms/translation.json | 3 ++- .../public/locales/nl/translation.json | 3 ++- .../public/locales/pl/translation.json | 3 ++- .../public/locales/pt/translation.json | 3 ++- .../public/locales/ru/translation.json | 3 ++- .../public/locales/si/translation.json | 3 ++- .../public/locales/sl/translation.json | 3 ++- .../public/locales/sv/translation.json | 3 ++- .../public/locales/ta/translation.json | 3 ++- .../public/locales/th/translation.json | 3 ++- .../public/locales/tr/translation.json | 3 ++- .../public/locales/uk/translation.json | 3 ++- .../public/locales/vi/translation.json | 3 ++- .../public/locales/zh-CN/translation.json | 3 ++- .../public/locales/zh-TW/translation.json | 3 ++- .../app/reader/components/FoliateViewer.tsx | 6 +++++ .../src/components/settings/ControlPanel.tsx | 26 +++++++++++++++++++ .../src/services/commandRegistry.ts | 6 +++++ apps/readest-app/src/services/constants.ts | 1 + apps/readest-app/src/types/book.ts | 1 + packages/foliate-js | 2 +- 35 files changed, 99 insertions(+), 30 deletions(-) diff --git a/apps/readest-app/public/locales/ar/translation.json b/apps/readest-app/public/locales/ar/translation.json index 3bdaac13..1a98b2a4 100644 --- a/apps/readest-app/public/locales/ar/translation.json +++ b/apps/readest-app/public/locales/ar/translation.json @@ -1190,5 +1190,6 @@ "Next Chapter": "الفصل التالي", "Scroll Half Page Down": "تمرير نصف صفحة لأسفل", "Scroll Half Page Up": "تمرير نصف صفحة لأعلى", - "Save Note": "حفظ الملاحظة" + "Save Note": "حفظ الملاحظة", + "Single Section Scroll": "التمرير بقسم واحد" } diff --git a/apps/readest-app/public/locales/bn/translation.json b/apps/readest-app/public/locales/bn/translation.json index 808705c9..b11eed13 100644 --- a/apps/readest-app/public/locales/bn/translation.json +++ b/apps/readest-app/public/locales/bn/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "পরের অধ্যায়", "Scroll Half Page Down": "অর্ধেক পৃষ্ঠা নিচে স্ক্রল করুন", "Scroll Half Page Up": "অর্ধেক পৃষ্ঠা উপরে স্ক্রল করুন", - "Save Note": "নোট সংরক্ষণ করুন" + "Save Note": "নোট সংরক্ষণ করুন", + "Single Section Scroll": "একক অধ্যায় স্ক্রল" } diff --git a/apps/readest-app/public/locales/bo/translation.json b/apps/readest-app/public/locales/bo/translation.json index 35b3a3e2..e4c8ad4c 100644 --- a/apps/readest-app/public/locales/bo/translation.json +++ b/apps/readest-app/public/locales/bo/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "རྗེས་མའི་ལེའུ།", "Scroll Half Page Down": "ཤོག་ངོས་ཕྱེད་ཀ་འོག་ཏུ།", "Scroll Half Page Up": "ཤོག་ངོས་ཕྱེད་ཀ་གོང་དུ།", - "Save Note": "ཟིན་བྲིས་ཉར་བ།" + "Save Note": "ཟིན་བྲིས་ཉར་བ།", + "Single Section Scroll": "དོན་ཚན་གཅིག་འགུལ་བ།" } diff --git a/apps/readest-app/public/locales/de/translation.json b/apps/readest-app/public/locales/de/translation.json index 5a4ce170..6ddb8459 100644 --- a/apps/readest-app/public/locales/de/translation.json +++ b/apps/readest-app/public/locales/de/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "Nächstes Kapitel", "Scroll Half Page Down": "Halbe Seite nach unten scrollen", "Scroll Half Page Up": "Halbe Seite nach oben scrollen", - "Save Note": "Notiz speichern" + "Save Note": "Notiz speichern", + "Single Section Scroll": "Einzelabschnitt-Scrollen" } diff --git a/apps/readest-app/public/locales/el/translation.json b/apps/readest-app/public/locales/el/translation.json index f425f5da..3e627597 100644 --- a/apps/readest-app/public/locales/el/translation.json +++ b/apps/readest-app/public/locales/el/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "Επόμενο κεφάλαιο", "Scroll Half Page Down": "Κύλιση μισής σελίδας κάτω", "Scroll Half Page Up": "Κύλιση μισής σελίδας πάνω", - "Save Note": "Αποθήκευση σημείωσης" + "Save Note": "Αποθήκευση σημείωσης", + "Single Section Scroll": "Κύλιση μεμονωμένης ενότητας" } diff --git a/apps/readest-app/public/locales/es/translation.json b/apps/readest-app/public/locales/es/translation.json index 4a6aef8e..e2369eb0 100644 --- a/apps/readest-app/public/locales/es/translation.json +++ b/apps/readest-app/public/locales/es/translation.json @@ -1151,5 +1151,6 @@ "Next Chapter": "Capítulo siguiente", "Scroll Half Page Down": "Desplazar media página abajo", "Scroll Half Page Up": "Desplazar media página arriba", - "Save Note": "Guardar nota" + "Save Note": "Guardar nota", + "Single Section Scroll": "Desplazamiento por sección" } diff --git a/apps/readest-app/public/locales/fa/translation.json b/apps/readest-app/public/locales/fa/translation.json index 02d55d71..1e2bfd74 100644 --- a/apps/readest-app/public/locales/fa/translation.json +++ b/apps/readest-app/public/locales/fa/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "فصل بعدی", "Scroll Half Page Down": "پیمایش نیم صفحه پایین", "Scroll Half Page Up": "پیمایش نیم صفحه بالا", - "Save Note": "ذخیره یادداشت" + "Save Note": "ذخیره یادداشت", + "Single Section Scroll": "پیمایش تک‌بخشی" } diff --git a/apps/readest-app/public/locales/fr/translation.json b/apps/readest-app/public/locales/fr/translation.json index b58d22ab..b4e63b43 100644 --- a/apps/readest-app/public/locales/fr/translation.json +++ b/apps/readest-app/public/locales/fr/translation.json @@ -1151,5 +1151,6 @@ "Next Chapter": "Chapitre suivant", "Scroll Half Page Down": "Défiler d'une demi-page vers le bas", "Scroll Half Page Up": "Défiler d'une demi-page vers le haut", - "Save Note": "Enregistrer la note" + "Save Note": "Enregistrer la note", + "Single Section Scroll": "Défilement par section" } diff --git a/apps/readest-app/public/locales/he/translation.json b/apps/readest-app/public/locales/he/translation.json index e1b2ebc0..bd452a02 100644 --- a/apps/readest-app/public/locales/he/translation.json +++ b/apps/readest-app/public/locales/he/translation.json @@ -1151,5 +1151,6 @@ "Next Chapter": "פרק הבא", "Scroll Half Page Down": "גלול חצי עמוד למטה", "Scroll Half Page Up": "גלול חצי עמוד למעלה", - "Save Note": "שמור הערה" + "Save Note": "שמור הערה", + "Single Section Scroll": "גלילת קטע בודד" } diff --git a/apps/readest-app/public/locales/hi/translation.json b/apps/readest-app/public/locales/hi/translation.json index fc477e2c..68603bd0 100644 --- a/apps/readest-app/public/locales/hi/translation.json +++ b/apps/readest-app/public/locales/hi/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "अगला अध्याय", "Scroll Half Page Down": "आधा पृष्ठ नीचे स्क्रॉल करें", "Scroll Half Page Up": "आधा पृष्ठ ऊपर स्क्रॉल करें", - "Save Note": "नोट सहेजें" + "Save Note": "नोट सहेजें", + "Single Section Scroll": "एकल अनुभाग स्क्रॉल" } diff --git a/apps/readest-app/public/locales/id/translation.json b/apps/readest-app/public/locales/id/translation.json index 085c6cec..bbb7e8f7 100644 --- a/apps/readest-app/public/locales/id/translation.json +++ b/apps/readest-app/public/locales/id/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "Bab berikutnya", "Scroll Half Page Down": "Gulir setengah halaman ke bawah", "Scroll Half Page Up": "Gulir setengah halaman ke atas", - "Save Note": "Simpan catatan" + "Save Note": "Simpan catatan", + "Single Section Scroll": "Gulir Satu Bagian" } diff --git a/apps/readest-app/public/locales/it/translation.json b/apps/readest-app/public/locales/it/translation.json index 04e8e217..747c87db 100644 --- a/apps/readest-app/public/locales/it/translation.json +++ b/apps/readest-app/public/locales/it/translation.json @@ -1151,5 +1151,6 @@ "Next Chapter": "Capitolo successivo", "Scroll Half Page Down": "Scorri mezza pagina in basso", "Scroll Half Page Up": "Scorri mezza pagina in alto", - "Save Note": "Salva nota" + "Save Note": "Salva nota", + "Single Section Scroll": "Scorrimento a sezione singola" } diff --git a/apps/readest-app/public/locales/ja/translation.json b/apps/readest-app/public/locales/ja/translation.json index 628333de..c8c3f792 100644 --- a/apps/readest-app/public/locales/ja/translation.json +++ b/apps/readest-app/public/locales/ja/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "次の章", "Scroll Half Page Down": "半ページ下にスクロール", "Scroll Half Page Up": "半ページ上にスクロール", - "Save Note": "メモを保存" + "Save Note": "メモを保存", + "Single Section Scroll": "単一セクションスクロール" } diff --git a/apps/readest-app/public/locales/ko/translation.json b/apps/readest-app/public/locales/ko/translation.json index 9e8a45cb..f339656a 100644 --- a/apps/readest-app/public/locales/ko/translation.json +++ b/apps/readest-app/public/locales/ko/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "다음 장", "Scroll Half Page Down": "반 페이지 아래로 스크롤", "Scroll Half Page Up": "반 페이지 위로 스크롤", - "Save Note": "메모 저장" + "Save Note": "메모 저장", + "Single Section Scroll": "단일 섹션 스크롤" } diff --git a/apps/readest-app/public/locales/ms/translation.json b/apps/readest-app/public/locales/ms/translation.json index b1389bcf..62e6a298 100644 --- a/apps/readest-app/public/locales/ms/translation.json +++ b/apps/readest-app/public/locales/ms/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "Bab seterusnya", "Scroll Half Page Down": "Tatal separuh halaman ke bawah", "Scroll Half Page Up": "Tatal separuh halaman ke atas", - "Save Note": "Simpan nota" + "Save Note": "Simpan nota", + "Single Section Scroll": "Tatal Satu Bahagian" } diff --git a/apps/readest-app/public/locales/nl/translation.json b/apps/readest-app/public/locales/nl/translation.json index f055cf7a..afec4818 100644 --- a/apps/readest-app/public/locales/nl/translation.json +++ b/apps/readest-app/public/locales/nl/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "Volgend hoofdstuk", "Scroll Half Page Down": "Halve pagina naar beneden scrollen", "Scroll Half Page Up": "Halve pagina naar boven scrollen", - "Save Note": "Notitie opslaan" + "Save Note": "Notitie opslaan", + "Single Section Scroll": "Scrollen per sectie" } diff --git a/apps/readest-app/public/locales/pl/translation.json b/apps/readest-app/public/locales/pl/translation.json index 6a42b3a5..935c041f 100644 --- a/apps/readest-app/public/locales/pl/translation.json +++ b/apps/readest-app/public/locales/pl/translation.json @@ -1164,5 +1164,6 @@ "Next Chapter": "Następny rozdział", "Scroll Half Page Down": "Przewiń o pół strony w dół", "Scroll Half Page Up": "Przewiń o pół strony w górę", - "Save Note": "Zapisz notatkę" + "Save Note": "Zapisz notatkę", + "Single Section Scroll": "Przewijanie pojedynczej sekcji" } diff --git a/apps/readest-app/public/locales/pt/translation.json b/apps/readest-app/public/locales/pt/translation.json index 6d774b9b..f55c3a84 100644 --- a/apps/readest-app/public/locales/pt/translation.json +++ b/apps/readest-app/public/locales/pt/translation.json @@ -1151,5 +1151,6 @@ "Next Chapter": "Próximo capítulo", "Scroll Half Page Down": "Rolar meia página para baixo", "Scroll Half Page Up": "Rolar meia página para cima", - "Save Note": "Salvar nota" + "Save Note": "Salvar nota", + "Single Section Scroll": "Rolagem por seção" } diff --git a/apps/readest-app/public/locales/ru/translation.json b/apps/readest-app/public/locales/ru/translation.json index bfd28648..7c6db245 100644 --- a/apps/readest-app/public/locales/ru/translation.json +++ b/apps/readest-app/public/locales/ru/translation.json @@ -1164,5 +1164,6 @@ "Next Chapter": "Следующая глава", "Scroll Half Page Down": "Прокрутить на полстраницы вниз", "Scroll Half Page Up": "Прокрутить на полстраницы вверх", - "Save Note": "Сохранить заметку" + "Save Note": "Сохранить заметку", + "Single Section Scroll": "Прокрутка одного раздела" } diff --git a/apps/readest-app/public/locales/si/translation.json b/apps/readest-app/public/locales/si/translation.json index 29145849..72d1eacf 100644 --- a/apps/readest-app/public/locales/si/translation.json +++ b/apps/readest-app/public/locales/si/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "ඊළඟ පරිච්ඡේදය", "Scroll Half Page Down": "අඩ පිටුවක් පහළට අනුචලනය", "Scroll Half Page Up": "අඩ පිටුවක් ඉහළට අනුචලනය", - "Save Note": "සටහන සුරකින්න" + "Save Note": "සටහන සුරකින්න", + "Single Section Scroll": "තනි කොටස අනුචලනය" } diff --git a/apps/readest-app/public/locales/sl/translation.json b/apps/readest-app/public/locales/sl/translation.json index f4774a4e..8a3e4978 100644 --- a/apps/readest-app/public/locales/sl/translation.json +++ b/apps/readest-app/public/locales/sl/translation.json @@ -1164,5 +1164,6 @@ "Next Chapter": "Naslednje poglavje", "Scroll Half Page Down": "Drsi pol strani navzdol", "Scroll Half Page Up": "Drsi pol strani navzgor", - "Save Note": "Shrani opombo" + "Save Note": "Shrani opombo", + "Single Section Scroll": "Drsenje posameznega razdelka" } diff --git a/apps/readest-app/public/locales/sv/translation.json b/apps/readest-app/public/locales/sv/translation.json index a4724d32..246ca76c 100644 --- a/apps/readest-app/public/locales/sv/translation.json +++ b/apps/readest-app/public/locales/sv/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "Nästa kapitel", "Scroll Half Page Down": "Rulla en halv sida nedåt", "Scroll Half Page Up": "Rulla en halv sida uppåt", - "Save Note": "Spara anteckning" + "Save Note": "Spara anteckning", + "Single Section Scroll": "Rullning per avsnitt" } diff --git a/apps/readest-app/public/locales/ta/translation.json b/apps/readest-app/public/locales/ta/translation.json index e4b0f92f..66d3cfb1 100644 --- a/apps/readest-app/public/locales/ta/translation.json +++ b/apps/readest-app/public/locales/ta/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "அடுத்த அத்தியாயம்", "Scroll Half Page Down": "அரை பக்கம் கீழே உருட்டுக", "Scroll Half Page Up": "அரை பக்கம் மேலே உருட்டுக", - "Save Note": "குறிப்பைச் சேமிக்கவும்" + "Save Note": "குறிப்பைச் சேமிக்கவும்", + "Single Section Scroll": "ஒற்றைப் பகுதி உருட்டல்" } diff --git a/apps/readest-app/public/locales/th/translation.json b/apps/readest-app/public/locales/th/translation.json index 646013f4..27325513 100644 --- a/apps/readest-app/public/locales/th/translation.json +++ b/apps/readest-app/public/locales/th/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "บทถัดไป", "Scroll Half Page Down": "เลื่อนลงครึ่งหน้า", "Scroll Half Page Up": "เลื่อนขึ้นครึ่งหน้า", - "Save Note": "บันทึกโน้ต" + "Save Note": "บันทึกโน้ต", + "Single Section Scroll": "เลื่อนทีละส่วน" } diff --git a/apps/readest-app/public/locales/tr/translation.json b/apps/readest-app/public/locales/tr/translation.json index 2ceaba15..e0baa566 100644 --- a/apps/readest-app/public/locales/tr/translation.json +++ b/apps/readest-app/public/locales/tr/translation.json @@ -1138,5 +1138,6 @@ "Next Chapter": "Sonraki bölüm", "Scroll Half Page Down": "Yarım sayfa aşağı kaydır", "Scroll Half Page Up": "Yarım sayfa yukarı kaydır", - "Save Note": "Notu kaydet" + "Save Note": "Notu kaydet", + "Single Section Scroll": "Tek Bölüm Kaydırma" } diff --git a/apps/readest-app/public/locales/uk/translation.json b/apps/readest-app/public/locales/uk/translation.json index 3792a1f7..5ade1d9c 100644 --- a/apps/readest-app/public/locales/uk/translation.json +++ b/apps/readest-app/public/locales/uk/translation.json @@ -1164,5 +1164,6 @@ "Next Chapter": "Наступний розділ", "Scroll Half Page Down": "Прокрутити на півсторінки вниз", "Scroll Half Page Up": "Прокрутити на півсторінки вгору", - "Save Note": "Зберегти нотатку" + "Save Note": "Зберегти нотатку", + "Single Section Scroll": "Прокрутка одного розділу" } diff --git a/apps/readest-app/public/locales/vi/translation.json b/apps/readest-app/public/locales/vi/translation.json index 88d325b9..79ec8d18 100644 --- a/apps/readest-app/public/locales/vi/translation.json +++ b/apps/readest-app/public/locales/vi/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "Chương tiếp", "Scroll Half Page Down": "Cuộn xuống nửa trang", "Scroll Half Page Up": "Cuộn lên nửa trang", - "Save Note": "Lưu ghi chú" + "Save Note": "Lưu ghi chú", + "Single Section Scroll": "Cuộn từng phần" } diff --git a/apps/readest-app/public/locales/zh-CN/translation.json b/apps/readest-app/public/locales/zh-CN/translation.json index b03bb340..b5a7d31b 100644 --- a/apps/readest-app/public/locales/zh-CN/translation.json +++ b/apps/readest-app/public/locales/zh-CN/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "下一章", "Scroll Half Page Down": "向下滚动半页", "Scroll Half Page Up": "向上滚动半页", - "Save Note": "保存笔记" + "Save Note": "保存笔记", + "Single Section Scroll": "单章节滚动" } diff --git a/apps/readest-app/public/locales/zh-TW/translation.json b/apps/readest-app/public/locales/zh-TW/translation.json index 70d3547a..2df29747 100644 --- a/apps/readest-app/public/locales/zh-TW/translation.json +++ b/apps/readest-app/public/locales/zh-TW/translation.json @@ -1125,5 +1125,6 @@ "Next Chapter": "下一章", "Scroll Half Page Down": "向下捲動半頁", "Scroll Half Page Up": "向上捲動半頁", - "Save Note": "儲存筆記" + "Save Note": "儲存筆記", + "Single Section Scroll": "單章節捲動" } diff --git a/apps/readest-app/src/app/reader/components/FoliateViewer.tsx b/apps/readest-app/src/app/reader/components/FoliateViewer.tsx index b9fcc104..2cad7c08 100644 --- a/apps/readest-app/src/app/reader/components/FoliateViewer.tsx +++ b/apps/readest-app/src/app/reader/components/FoliateViewer.tsx @@ -609,6 +609,11 @@ const FoliateViewer: React.FC<{ viewRef.current?.renderer.setAttribute('gap', `${viewSettings.gapPercent}%`); if (viewSettings.scrolled) { viewRef.current?.renderer.setAttribute('flow', 'scrolled'); + if (viewSettings.noContinuousScroll) { + viewRef.current?.renderer.setAttribute('no-continuous-scroll', ''); + } else { + viewRef.current?.renderer.removeAttribute('no-continuous-scroll'); + } } }; @@ -694,6 +699,7 @@ const FoliateViewer: React.FC<{ viewSettings?.showBarsOnScroll, viewSettings?.showMarginsOnScroll, viewSettings?.scrolled, + viewSettings?.noContinuousScroll, viewState?.ttsEnabled, ]); diff --git a/apps/readest-app/src/components/settings/ControlPanel.tsx b/apps/readest-app/src/components/settings/ControlPanel.tsx index 07211463..0ab1179c 100644 --- a/apps/readest-app/src/components/settings/ControlPanel.tsx +++ b/apps/readest-app/src/components/settings/ControlPanel.tsx @@ -27,6 +27,7 @@ const ControlPanel: React.FC = ({ bookKey, onRegisterRes const viewSettings = getViewSettings(bookKey) || settings.globalViewSettings; const [isScrolledMode, setScrolledMode] = useState(viewSettings.scrolled); + const [noContinuousScroll, setNoContinuousScroll] = useState(viewSettings.noContinuousScroll); const [scrollingOverlap, setScrollingOverlap] = useState(viewSettings.scrollingOverlap); const [hideScrollbar, setHideScrollbar] = useState(viewSettings.hideScrollbar || false); const [volumeKeysToFlip, setVolumeKeysToFlip] = useState(viewSettings.volumeKeysToFlip); @@ -55,6 +56,7 @@ const ControlPanel: React.FC = ({ bookKey, onRegisterRes const handleReset = () => { resetToDefaults({ scrolled: setScrolledMode, + noContinuousScroll: setNoContinuousScroll, scrollingOverlap: setScrollingOverlap, hideScrollbar: setHideScrollbar, volumeKeysToFlip: setVolumeKeysToFlip, @@ -88,6 +90,17 @@ const ControlPanel: React.FC = ({ bookKey, onRegisterRes // eslint-disable-next-line react-hooks/exhaustive-deps }, [isScrolledMode]); + useEffect(() => { + if (noContinuousScroll === viewSettings.noContinuousScroll) return; + saveViewSettings(envConfig, bookKey, 'noContinuousScroll', noContinuousScroll); + if (noContinuousScroll) { + getView(bookKey)?.renderer.setAttribute('no-continuous-scroll', ''); + } else { + getView(bookKey)?.renderer.removeAttribute('no-continuous-scroll'); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [noContinuousScroll]); + useEffect(() => { saveViewSettings(envConfig, bookKey, 'hideScrollbar', hideScrollbar, false, false); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -235,6 +248,19 @@ const ControlPanel: React.FC = ({ bookKey, onRegisterRes onChange={() => setScrolledMode(!isScrolledMode)} /> +
+ {_('Single Section Scroll')} + setNoContinuousScroll(!noContinuousScroll)} + /> +