(low) Drawer.tsx/Drawer: prop width молча игнорируется для side='bottom' #1482

Closed
opened 2026-06-15 05:57:46 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: frontend · Файл: frontend/src/components/ui/Drawer.tsx:105-142

Drawer.tsx:105-142. resolvedWidth = width ?? defaultWidth вычисляется для обоих side (стр.105-106), и в ветке panelStyle для side='right' корректно применяется (width: resolvedWidth, стр.115). Но в ветке side='bottom' ширина захардкожена литералом width: '100%' (стр.131) — resolvedWidth не используется. При вызове значение width будет проигнорировано без ошибки/предупреждения. Это рассинхрон с объявленным публичным API: DrawerProps.width (стр.16-17) документирован как настраиваемый («default 360px for right, 100% for bottom»). Текущие потребители (PilotRequestModal) width для bottom не передают, поэтому реального инцидента нет → low. Чинить: в bottom-ветке заменить width: '100%' на width: resolvedWidth (для bottom resolvedWidth уже даёт '100%' по умолчанию, поведение по умолчанию не изменится).

Почему баг: Публичный prop width документирован в DrawerProps (строка 16-17: 'default 360px for right, 100% for bottom') как настраиваемый, но для bottom он не пробрасывается в стиль. Это не выдуманное соглашение — это рассинхрон между объявленным API и реализацией. Текущие потребители (PilotRequestModal не передаёт width для bottom) не страдают, поэтому low, но любой будущий вызов с width для bottom молча сломается.

Как чинить: В ветке bottom использовать width: resolvedWidth (или maxWidth: resolvedWidth) вместо хардкода '100%', либо убрать вычисление defaultWidth='100%' для bottom и явно задокументировать, что width применяется только к right.


deep-audit «армия ботов 2» · verify+harden, confidence 0.92 · unit U104

**Severity:** low · **Категория:** frontend · **Файл:** `frontend/src/components/ui/Drawer.tsx:105-142` Drawer.tsx:105-142. resolvedWidth = width ?? defaultWidth вычисляется для обоих side (стр.105-106), и в ветке panelStyle для side='right' корректно применяется (width: resolvedWidth, стр.115). Но в ветке side='bottom' ширина захардкожена литералом width: '100%' (стр.131) — resolvedWidth не используется. При вызове <Drawer side='bottom' width='600px'> значение width будет проигнорировано без ошибки/предупреждения. Это рассинхрон с объявленным публичным API: DrawerProps.width (стр.16-17) документирован как настраиваемый («default 360px for right, 100% for bottom»). Текущие потребители (PilotRequestModal) width для bottom не передают, поэтому реального инцидента нет → low. Чинить: в bottom-ветке заменить width: '100%' на width: resolvedWidth (для bottom resolvedWidth уже даёт '100%' по умолчанию, поведение по умолчанию не изменится). **Почему баг:** Публичный prop width документирован в DrawerProps (строка 16-17: 'default 360px for right, 100% for bottom') как настраиваемый, но для bottom он не пробрасывается в стиль. Это не выдуманное соглашение — это рассинхрон между объявленным API и реализацией. Текущие потребители (PilotRequestModal не передаёт width для bottom) не страдают, поэтому low, но любой будущий вызов с width для bottom молча сломается. **Как чинить:** В ветке bottom использовать width: resolvedWidth (или maxWidth: resolvedWidth) вместо хардкода '100%', либо убрать вычисление defaultWidth='100%' для bottom и явно задокументировать, что width применяется только к right. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.92 · unit U104</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:57:46 +00:00
bot-backend added the
scope/frontend
label 2026-06-15 11:02:11 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1482
No description provided.