Если я правильно помню, дополнительный обертка упрощает выравнивание заголовка с содержимым темы, поскольку я могу установить ширину .header-contents__toggle-and-logo равной var(--d-sidebar-width), и она всегда совпадает с шириной боковой панели, независимо от содержимого.
Без дополнительной обертки макет работоспособен… но при использовании двух колонок сетки я не могу полагаться на единую ширину для обеих.
Мне нужно исходить из того, что переключатель боковой панели всегда имеет фиксированную ширину, а затем вычислять максимальную ширину логотипа на её основе. Это работает, но, насколько я помню, такой подход менее надёжен… Я давно не рассматривал эту задачу, но, возможно, стоит попробовать ещё раз ![]()
Возвращаюсь к этому вопросу… Теперь я понимаю, почему было использовано переопределение. Без него приходится декорировать виджеты заголовка или иконок, что приводит к добавлению содержимого внутрь .title или .panel. Это усложняет центрирование строки поиска… и требует CSS-правки, которые делают макет менее надёжным и усложняют совместимость с другими компонентами заголовка. В идеале содержимое строки поиска должно находиться вне этих div-элементов, но нет точек подключения для этого.
Теперь мы можем добавлять точки подключения плагинов в виджеты, что может помочь…
Это позволит добавлять содержимое перед div-элементом .panel, а не внутрь него через decorateWidget. В этом случае переопределение шаблона можно будет убрать из компонента header-search и добавить новый коннектор к:
javascripts/discourse/connectors/before-header-panel
который будет содержать
<MountWidget @widget="search-banner" />
Однако добавление точки подключения плагина в виджет, чтобы затем добавить виджет в эту точку подключения, кажется немного запутанным… @david/@cvx, знаете ли вы, может ли это негативно сказаться на производительности или вызвать какие-либо другие проблемы?

