Конфликтующие объявления для двух компонентов: макет на всю ширину и поиск в заголовке

Если я правильно помню, дополнительный обертка упрощает выравнивание заголовка с содержимым темы, поскольку я могу установить ширину .header-contents__toggle-and-logo равной var(--d-sidebar-width), и она всегда совпадает с шириной боковой панели, независимо от содержимого.

Без дополнительной обертки макет работоспособен… но при использовании двух колонок сетки я не могу полагаться на единую ширину для обеих.

Мне нужно исходить из того, что переключатель боковой панели всегда имеет фиксированную ширину, а затем вычислять максимальную ширину логотипа на её основе. Это работает, но, насколько я помню, такой подход менее надёжен… Я давно не рассматривал эту задачу, но, возможно, стоит попробовать ещё раз :thinking:

Возвращаюсь к этому вопросу… Теперь я понимаю, почему было использовано переопределение. Без него приходится декорировать виджеты заголовка или иконок, что приводит к добавлению содержимого внутрь .title или .panel. Это усложняет центрирование строки поиска… и требует CSS-правки, которые делают макет менее надёжным и усложняют совместимость с другими компонентами заголовка. В идеале содержимое строки поиска должно находиться вне этих div-элементов, но нет точек подключения для этого.

Теперь мы можем добавлять точки подключения плагинов в виджеты, что может помочь…

Это позволит добавлять содержимое перед div-элементом .panel, а не внутрь него через decorateWidget. В этом случае переопределение шаблона можно будет убрать из компонента header-search и добавить новый коннектор к:

javascripts/discourse/connectors/before-header-panel

который будет содержать

<MountWidget @widget="search-banner" />

Однако добавление точки подключения плагина в виджет, чтобы затем добавить виджет в эту точку подключения, кажется немного запутанным… @david/@cvx, знаете ли вы, может ли это негативно сказаться на производительности или вызвать какие-либо другие проблемы?