fix: делает "Предложение по улучшению" необязательным для жалобы, убирает дубль заголовка
Каждый вид обращения раньше показывал одинаковый набор обязательных полей. getAppealFieldsConfig теперь описывает и видимость, и обязательность отдельно: жалоба — предложение по-прежнему можно оставить, но требовать его как для самостоятельного вида "Предложение" неверно. validateFeedback читает то же правило, что и форма, — иначе одно поле могло бы требовать то, что другое не показывает. FormCard в FeedbackForm дублировал заголовок и подзаголовок PageShell — убран (пустой title у ui-kit не создаёт строки, гэпа не остаётся). Подсказка у переключателя "Обращение анонимное" разбита на две сноски (* и **), как в исходной форме, а не слитный абзац. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -45,27 +45,42 @@ export const KIND_OPTIONS: ISelectOption[] = [
|
||||
{ value: 'other', label: 'Другое' }
|
||||
];
|
||||
|
||||
/** Какие текстовые поля показываем для выбранного вида обращения. */
|
||||
export interface IVisibleAppealFields {
|
||||
situation: boolean;
|
||||
suggestion: boolean;
|
||||
/** Показывать поле или нет, и если показывать — обязательно ли оно. */
|
||||
export interface IAppealFieldConfig {
|
||||
visible: boolean;
|
||||
required: boolean;
|
||||
}
|
||||
|
||||
/** Настройка текстовых полей для выбранного вида обращения. */
|
||||
export interface IAppealFieldsConfig {
|
||||
situation: IAppealFieldConfig;
|
||||
suggestion: IAppealFieldConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Состав полей зависит от вида обращения:
|
||||
* жалоба — что случилось и что предлагаете изменить;
|
||||
* жалоба — обязательно описание, а предложение — на желание автора;
|
||||
* предложение — только само предложение, «ситуации» ещё нет;
|
||||
* другое — свободное описание, без предложения.
|
||||
* Одно правило на форму и на валидацию, чтобы они не разошлись.
|
||||
*/
|
||||
export function getVisibleAppealFields(kind: AppealKind): IVisibleAppealFields {
|
||||
export function getAppealFieldsConfig(kind: AppealKind): IAppealFieldsConfig {
|
||||
switch (kind) {
|
||||
case 'complaint':
|
||||
return { situation: true, suggestion: true };
|
||||
return {
|
||||
situation: { visible: true, required: true },
|
||||
suggestion: { visible: true, required: false }
|
||||
};
|
||||
case 'suggestion':
|
||||
return { situation: false, suggestion: true };
|
||||
return {
|
||||
situation: { visible: false, required: false },
|
||||
suggestion: { visible: true, required: true }
|
||||
};
|
||||
case 'other':
|
||||
return { situation: true, suggestion: false };
|
||||
return {
|
||||
situation: { visible: true, required: true },
|
||||
suggestion: { visible: false, required: false }
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user