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

[Bug]: CSS Modules порядок импортов влияет на поведение #6287

Open
eolme opened this issue Dec 15, 2023 · 9 comments

Comments

@eolme
Copy link
Contributor

eolme commented Dec 15, 2023

Описание

Например, при импорте Button порядок

Button -> Tappable -> Clickable

Что приводит к тому, что Clickable перезаписывает правила Tappable и Button и тд

К тому же правила внутри очень сильно друг друга переназначают, например, специфичность Clickable > * выше чем Tappable_Tappable__stateLayer и ripple effect рисуется неправильно

Версия

^5 и ^6-beta

В каких браузерах воспроизводится проблема?

No response

Шаги воспроизведения

No response

Ожидаемое поведение

No response

Скриншоты

2023-12-15.17.33.18.mov

Пример с воспроизведением

No response

@eolme eolme added the type:bug label Dec 15, 2023
@eolme eolme changed the title [Bug]: CSS Modules импорты в неправильном порядке [Bug]: CSS Modules порядок импортов влияет на поведение Dec 15, 2023
@BlackySoul
Copy link
Contributor

Привет! Такое мы правили, но ещё не релизили, можно попросить проверить, исправилось ли на свежей версии?

Можно установить версию с этого билда

@eolme
Copy link
Contributor Author

eolme commented Dec 16, 2023

@BlackySoul

Версия
^5 и ^6-beta

@BlackySoul
Copy link
Contributor

@BlackySoul

Версия
^5 и ^6-beta

Это для 6-beta, могу подготовить для v5, если так будет удобнее проверить

@levtsypanov
Copy link

levtsypanov commented Dec 16, 2023

Привет! Такое мы правили, но ещё не релизили, можно попросить проверить, исправилось ли на свежей версии?

Можно установить версию с этого билда

У v5 не воспроизводится, а на 6 бэтке билд указаный вами уже с фиксом

вот пример с фиксом https://codesandbox.io/p/sandbox/silly-lamport-ls4g4j

@eolme
Copy link
Contributor Author

eolme commented Dec 16, 2023

@levtsypanov не вижу CSS Modules

@BlackySoul что изменилось то? Вот строка, все те же стили и в твоей ветке:

@BlackySoul
Copy link
Contributor

@levtsypanov не вижу CSS Modules

@BlackySoul что изменилось то? Вот строка, все те же стили и в твоей ветке:

Конкретно в той ветке - ничего, что касается Tappable, это просто самая свежая на данный момент версия была

По Tappable вливали такое изменение, на тестовых наших средах помогло, если у тебя не так, то поделись, пожалуйста, что используешь (cra/next, какие сборщики и т.п.)

@eolme
Copy link
Contributor Author

eolme commented Dec 20, 2023

Импорты CSS Modules вообще говоря не гарантируют порядок, как бы не хотелось, и какими-либо хаками тут не хотелось бы обойтись, нужно либо поддерживать атомарность, без пересечений и переопределений с одинаковой специфичностью, как вариант можно решать теми же vkuiInternal, либо явным разделением переопределений по флагам из пропов

@inomdzhon
Copy link
Contributor

Импорты CSS Modules вообще говоря не гарантируют порядок, как бы не хотелось, и какими-либо хаками тут не хотелось бы обойтись, нужно либо поддерживать атомарность, без пересечений и переопределений с одинаковой специфичностью, как вариант можно решать теми же vkuiInternal, либо явным разделением переопределений по флагам из пропов

Соглы, это одна из проблем CSS Modules 😞

Такой импорт не панацея, но частично должен решить проблему, по-крайней мере с Tappable.


Этот issue можно отнести к вот этой задаче:

@SevereCloud SevereCloud self-assigned this Dec 20, 2023
SevereCloud added a commit that referenced this issue Dec 20, 2023
Переносим стили Tappable из Clickable
- see #6287
SevereCloud added a commit that referenced this issue Dec 20, 2023
Переносим стили Tappable из Clickable

- see #6287
@SevereCloud SevereCloud removed their assignment Jul 28, 2024
@SevereCloud
Copy link
Contributor

На самом деле эту проблему можно попробовать решить с помощью @layer.

layers.css

@layer vkui.clickable, vkui.tappable;
@layer vkui.tappable, vkui.button;

Clickable.module.css

@layer vkui.clickable {
  ...
}

Tappable.module.css

@layer vkui.tappable {
  ...
}

Button.module.css

@layer vkui.button {
  ...
}

Есть только проблема того, что layers.css должен импортироваться раньше всех

@SevereCloud SevereCloud added this to VKUI Sep 19, 2024
@github-project-automation github-project-automation bot moved this to 🗃 Backlog in VKUI Sep 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: 🗃 Backlog
Development

No branches or pull requests

5 participants