Как добавить границу ко всем VerticalLayout и HorizontalLayout в Vaadin Flow (Vaadin 14)?
Я в основном пытаюсь добавить красную рамку ко всем макетам, чтобы попытаться выяснить, какой макет настроен не так, как я ожидал. Я вижу, что это возможно, как показано в начале этого видео: но когда я пытаюсь, это не работает. Я также имел в виду это видео, которое, кажется, делает это немного иначе: https://www.youtube.com/watch?v=Swki9XXs9SA Я также просматривал эту документацию, но не было ясно, что это не так. Кажется, не работает, когда я рассматривал макеты как компоненты: https://vaadin.com/docs/latest/ds/customization/styling-components
Я в основном хочу избежать добавления класса к каждому макету в коде и сделать его глобальным. Таким образом, я могу легко включать и выключать его для устранения проблем с макетом.
Можно ли в ответ включить пример. Я попытался создать компонентный файл css, а также файл макета / представления css, но ни один из них, похоже, не работал. CSS так же прост, как
border: 1px solid red;
вопрос только в том, где это находится. Также я создал свою собственную папку customTheme под
frontend/themes/customTheme
.
ОБНОВЛЕНИЕ По просьбе комментариев я добавляю то, что пытался. По крайней мере, что я могу вспомнить. Я забыл все, что пробовал, так что это всего лишь образец того, что я пробовал.
Добавлен
frontend/themes/myCustomTheme/components/vaadin-horizontal-layout.css
который содержал (на основе документации и того, что я сделал для текстовых полей):
[part="horizontal-layout"] {
border: 1px solid red;
}
Добавлен
frontend/themes/myCustomTheme/layouts/views/layouts-view.css
с содержанием (на основе видео YouTube https://www.youtube.com/watch?v=Efv_cPHEqdQ,https://www.youtube.com/watch?v=Efv_cPHEqdQ):
vaadin-vertical-layout, vaadin-horizontal-layout {
border: 1px solid red;
}
Затем я попробовал несколько вариантов вышеупомянутого, а также множество других вещей, которые я больше не могу вспомнить. Различное расположение файлов, соглашения об именах и т. Д. Ссылки и видео, кажется, также указывают на разные способы работы. Я не смог найти в Интернете инструкций или примеров того, как это сделать для макетов, поскольку они кажутся и / или могут обрабатываться иначе, чем компоненты. Например, я смог заставить его работать для других компонентов, используя
frontend/themes/myCustomTheme/vaadin-text-field.css
с содержанием:
[part="input-field"] {
background-color: white;
border: 1px solid #c5c5c5;
}
1 ответ
Для этого решения требуется «тема приложения», которая, похоже, уже есть у OP. (Это означает 14.6 в текущей строке LTS или соответствующей версии, отличной от LTS).
Настройте тему:
-
@Theme(themeFolder = "app-theme")
- Папка в
frontend
(в вашем dev-root) илиMETA-INF/resources
в вашем пути к классам:themes/app-theme
- Добавьте тему для своего
HorizontalLayout
относительно пути выше:components/vaadin-horizontal-layout.css
со следующим содержанием::host { border: 1px solid red; }