Skip to content

починить ступень xlg у select-button - #148

Merged
AxyIX merged 2 commits into
mainfrom
selectbutton.xlg
Sep 8, 2026
Merged

починить ступень xlg у select-button#148
AxyIX merged 2 commits into
mainfrom
selectbutton.xlg

Conversation

@khaliulin

Copy link
Copy Markdown
Contributor

size="xlg" у extra-select-button не менял рендер: кнопки выглядели ровно как в base.

Причина

Ступень уходила в PrimeNG через [styleClass]="primeStyleClass". У p-selectbutton в PrimeNG 20 корневой класс — host-биндинг class: cx('root'), а styleClass на корне не остаётся: он раздаётся вниз каждому p-togglebutton.

<p-selectbutton class="p-component p-selectbutton ...">      ← класса ступени нет
  <p-togglebutton class="... p-selectbutton-xlarge ...">     ← он на каждой кнопке

Все правила ступени в tokens/components/selectbutton.ts написаны как .p-selectbutton.p-selectbutton-xlarge.p-component .p-togglebutton — потомок у корня. Класс сидел на самом потомке, поэтому не совпадало ни одно правило. sm и lg работали, потому что идут другим путём — через [size]="primeSize", и класс p-togglebutton-sm/lg вешает сам PrimeNG.

Что изменено

select-button.component.ts[styleClass] заменён на [class.p-selectbutton-xlarge]="size === 'xlg'" на самом <p-selectbutton>: класс попадает на корень, стили находят его. Геттер primeStyleClass удалён, вместе с ним ушёл мёртвый импорт NgClass (в шаблоне не использовался).

tokens/components/selectbutton.ts — задан padding ступени. Паддинги кнопки приходят от её собственного класса размера, а у PrimeNG ступени xlg нет: primeSize для неё возвращает undefined, дочерний p-togglebutton остаётся без класса размера и берёт базовые токены. Блок .p-selectbutton-xlarge задавал только font-size, line-height и height, поэтому по вертикали кнопка тянулась жёсткой высотой, а по горизонтали оставалась уже, чем lg. Применён togglebutton.extend.extXlg.padding — тот же токен, что у отдельного togglebutton в ступени xlarge (togglebutton.ts:74).

Лесенка размеров

size класс на p-togglebutton padding высота ширина шрифт
sm p-togglebutton-sm 4px 14px 32 84.5 14
base 8px 14px 40 92.3 16
lg p-togglebutton-lg 14px 24px 56 127.9 20
xlg до 8px 14px 40 92.3 16
xlg после 20px 24px 64 143.5 24

Значения сняты в браузере со story Components/Form/SelectButton → Default. Иконочный вариант отдельно: высота 64, шрифт 24, иконка 28 (selectbutton.extend.iconSize.xlg).

Гейты: check-component.mjs selectbutton — 0 FAIL, 6 WARN (все G6 «чужой компонент» — ссылки на togglebutton.*, структурные: дочерний элемент селект-баттона и есть togglebutton); check-dt-refs мёртвых ссылок не добавил; ngc и prettier чисто.

Вопросы

  1. Шрифт xlg. У отдельного togglebutton в этой ступени — fonts.fontSize.500 (20px), у select-button — fontSize.600 (24px). Если по макету должно совпадать, правка на одну строку.
  2. Высота против паддингов. Высота xlg задана отдельным height (extXlg.iconOnlyWidth, 64px), и строка текста 30px на 6px выше внутреннего просвета от паддингов. У отдельного togglebutton та же картина (26px в 24px). Если высоту должны задавать паддинги, height нужно убрать — кнопка станет 72px.

Вне этого PR

  • Story with-icons не биндит size, контрол размера на ней не действует.
  • У confirm-dialog мертвы все четыре токена ширины (confirmdialog.extend.dimension_overlayWidth_{sm,base,lg,xlg}, видно в check-dt-refs) — там не работает ни один размер, не только xlg.

@AxyIX
AxyIX merged commit bfe87b1 into main Sep 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants