Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Компонент ScrollSaver #3750

Open
SevereCloud opened this issue Dec 8, 2022 · 0 comments · May be fixed by #6011
Open

[Feature] Компонент ScrollSaver #3750

SevereCloud opened this issue Dec 8, 2022 · 0 comments · May be fixed by #6011
Assignees

Comments

@SevereCloud
Copy link
Contributor

SevereCloud commented Dec 8, 2022

В VKUI есть такая интересная тема, как запоминание позиции скролла панели, когда идешь вперед по истории и его восстановление, когда возвращаешься назад.

Но это работает именно со скроллом панели, но на панели могут быть и собственные сколящиеся боксы (css overflow scroll), которые так не умеют, а хотелось бы

Необходимо сделать компонет-обертку, который бы запоминал позицию скролла элемента и мог восстановить, при возвращении по истории назад.

Почему не хук

  • гораздо легче получить контекст панели внутри панели.
  • можно сразу добавлять несколько компонентов в панель и не заботиться о создании ref'a под каждый случай, так как ref ScrollSaver будет получить из children.
  • можно использовать только под условие
  • кол-во ScrollSaver может быть динамическим.

Требования

  • Интерфейc:
interface ScrollSaverProps {
/* Уникальный идентификатор элемента скролл которго надо запомнить 
Важно иметь id, так как возможно что на одной панели нужно запомнить позицию нескольких элементов. Два HorizontalScroll */
id: string;
/* Если передан реакт-компонент, то он должен поддерживать getRootRef. */
children: React.ReactElement;
/* Режим сохранения скролла: по умолчанию `forward` - позиция скролла сохраняется только при переходе вперёд. */
saveMode: 'forward' | 'always';
}
  • важно добавлять уникальности в пределах панели/view.

  • иметь возможность управлять политикой сохранения позиции скролла - saveMode.

@SevereCloud SevereCloud self-assigned this Dec 11, 2022
@SevereCloud SevereCloud removed their assignment Mar 23, 2023
@inomdzhon inomdzhon added this to the v6 milestone Sep 5, 2023
@mendrew mendrew self-assigned this Sep 18, 2023
@mendrew mendrew changed the title [Feature] Хук useScrollSaver [Feature] Компонент ScrollSaver Sep 18, 2023
@inomdzhon inomdzhon modified the milestones: v6, v6.1.0 Jan 16, 2024
@inomdzhon inomdzhon removed this from the v6.1.0 milestone May 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 🔜 To do
Development

Successfully merging a pull request may close this issue.

3 participants