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

feat(CustomScrollView): refactor CustomScrollView to the native approach #7703

Merged

Conversation

EldarMuhamethanov
Copy link
Contributor

@EldarMuhamethanov EldarMuhamethanov commented Oct 3, 2024


  • e2e-тесты
  • Дизайн-ревью
  • Документация фичи
  • Release notes
  • Codemod

Описание

Необходимо сделать рефакторинг компонента CustomScrollView, а именно избавиться от отображения используя JS и сделать кастомизацию нативно с помощью css. Все нюансы расписаны в #7699

Изменения

  • Реализовал кастомизацию скроллбара в компоненте CustomScrollView с помощью css свойств scrollbar-width, scrollbar-color, а также с помощью свойств с префиксом webkit для скролла.
  • Выпилил лишний код и компоненты
  • Выпил свойства CustomScrollView: windowResize(так как теперь оно бессмысленно), boxRef(так как теперь можно использовать getRootRef), autoHideScrollbar и autoHideScrollbarDelay(так как с текущей реализацией реализовать их невозможно)

Release notes

BREAKING CHANGE

  • CustomScrollView:
    • так как дизайн не документирует поведение ползунка и полосы прокрутки, было решено перейти на использование системного поведения и тем самым облегчить компонент за счёт стилизации прокрутки полностью через CSS (Firefox < 64 стилизация останется браузерной). Если по какой-то причине вам всё же нужна JS-реализация, то советуем присмотреться к готовой библиотеке react-custom-scrollbars или к другим альтернативам.
    • удалены свойства windowResize, autoHideScrollbar, autoHideScrollbar.
      <CustomScrollView
        className={"className"}
      - windowResize
      - autoHideScrollbar
      - autoHideScrollbarDelay={1000}
        enableHorizontalScroll
      >
      ...
      </CustomScrollView>
    • удалено свойство boxRef, вместо него можно использовать свойство getRootRef
      <CustomScrollView
        className={"className"}
      - boxRef={ref}
      + getRootRef={ref}
        enableHorizontalScroll
      >
      ...
      </CustomScrollView>
    • добавлено свойство scrollbarHidden для скрытия скроллбара.
  • CustomSelect: удалены свойства autoHideScrollbar, autoHideScrollbar.
    <CustomSelect
      id="select-type-select-id"
      value={selectType}
      placeholder="Не задан"
      options={selectTypes}
    - autoHideScrollbar
    - autoHideScrollbarDelay={1500}
      onChange={(e) => setSelectType(e.target.value)}
    />
  • ChipsSelect: удалены свойства autoHideScrollbar, autoHideScrollbar.
    <ChipsSelect
      id="colors"
      value={selectedColors}
      onChange={setSelectedColors}
      options={colors}
    - autoHideScrollbar
    - autoHideScrollbarDelay={1500}
      placeholder="Не выбраны"
      creatable="Добавить цвет"
      allowClearButton={true}
    />
  • Select: удалены свойства autoHideScrollbar, autoHideScrollbar.
    <Select
      id="select-type-select-id"
      value={selectType}
      placeholder="Не задан"
      options={selectTypes}
    - autoHideScrollbar
    - autoHideScrollbarDelay={1500}
      onChange={(e) => setSelectType(e.target.value)}
    />

…tive-approach

# Conflicts:
#	packages/vkui/src/components/CustomScrollView/ScrollX.tsx
#	packages/vkui/src/components/CustomScrollView/ScrollY.tsx
@EldarMuhamethanov EldarMuhamethanov requested a review from a team as a code owner October 3, 2024 14:06
@EldarMuhamethanov EldarMuhamethanov marked this pull request as draft October 3, 2024 14:06
Copy link

codesandbox-ci bot commented Oct 3, 2024

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Copy link
Contributor

github-actions bot commented Oct 3, 2024

size-limit report 📦

Path Size
JS 380.14 KB (-1.59% 🔽)
JS (gzip) 115.33 KB (-1.32% 🔽)
JS (brotli) 94.94 KB (-1.08% 🔽)
JS import Div (tree shaking) 1.46 KB (0%)
CSS 331.84 KB (-0.43% 🔽)
CSS (gzip) 41.59 KB (-0.45% 🔽)
CSS (brotli) 32.95 KB (-0.48% 🔽)

Copy link
Contributor

github-actions bot commented Oct 3, 2024

e2e tests

Playwright Report

Copy link
Contributor

github-actions bot commented Oct 3, 2024

👀 Docs deployed

Commit f76618e

Copy link

codecov bot commented Oct 3, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.08%. Comparing base (975878d) to head (f76618e).
Report is 27 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #7703      +/-   ##
==========================================
- Coverage   95.14%   95.08%   -0.07%     
==========================================
  Files         384      376       -8     
  Lines       11354    11071     -283     
  Branches     3724     3674      -50     
==========================================
- Hits        10803    10527     -276     
+ Misses        551      544       -7     
Flag Coverage Δ
unittests 95.08% <100.00%> (-0.07%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@inomdzhon
Copy link
Contributor

inomdzhon commented Oct 3, 2024


Замени плиз в демкках, в частности в Storybook, стили на контейнер на вот эти:

- width: 600px;
- height: 300px;
+ width:'100%';
+ height:'100%';
+ maxWidth: 600px;
+ maxHeight: 300px;

А то на мобиле норм не глянуть из-за width: 600px

@egorprnn
Copy link
Contributor

egorprnn commented Oct 4, 2024

сейчас в хроме, когда убираем ховер с ползунка он не возвращается в первоначальный размер, восстановление происходит только после того как он полностью пропадает через время, так и задумано?

@EldarMuhamethanov
Copy link
Contributor Author

сейчас в хроме, когда убираем ховер с ползунка он не возвращается в первоначальный размер, восстановление происходит только после того как он полностью пропадает через время, так и задумано?

Странно, у меня в хроме нет такого поведения. Можешь скинуть видео воспроизведения?

@egorprnn
Copy link
Contributor

egorprnn commented Oct 7, 2024

хм, но кажется на макет это норм поведение, штатная полоска в хроме также себя ведет

2024-10-08.00.17.30.mov

@EldarMuhamethanov EldarMuhamethanov marked this pull request as ready for review October 15, 2024 08:50
Copy link
Contributor

@andrey-medvedev-vk andrey-medvedev-vk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👏

Copy link
Contributor

@inomdzhon inomdzhon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

обновил Realese Note – добавил инфу про альтернативное решение

Copy link
Contributor

@qurle qurle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, мне было страшно
Но я это сделал

@EldarMuhamethanov EldarMuhamethanov merged commit aa403db into master Oct 22, 2024
33 of 52 checks passed
@EldarMuhamethanov EldarMuhamethanov deleted the e.muhamethanov/7699/-custom-scroll-view-native-approach branch October 22, 2024 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
6 participants