→ ‣ : ‣ : WhyDisabledTip
Кнопки-экшены могут выключаться по разным причинам и сложно понять по каким в конкретный момент. Очень важно показывать причины почему какие-то экшены (кнопки и ссылки) недоступны (disabled)
И вообще давно не хватает механизма передачи сообщений о причинах недоступности экшенов (ссылок и кнопок)
Специальные случаи, когда контрол дисейблится (без объяснения причины?): invisibleDisabled
Одновременно может быть несколько причин
Причины имеют приоритеты. Более приоритетная должна сообщена в первую очередь, остальные тоже надо приписать
чтобы не было так:
«Надо заполнить эти 40 полей», ок заполнил
«И вообще-то тебе нельзя это делать», ооок получил доступ,
«Знаешь для этого документа сохранение невозможно потому что...»
[ ] придумать как выражать приоритеты
пока просто причины для конкретных полей показываются до причин _all_
Причина может быть не известна например, когда логика на беке
можно прокидывать disableReasons с бека, давно так хочется делать, ну...
Причина может состоять из нескольких строк, поэтому отдельные причины надо заметно отделять
Причиной может быть отсутствие http-пути с бека для экшена
пропы { disable, disableReasons }
disableReasons
позволяет в стандартном виде пробросить разные причины дисейбла для разных экшенов
disableReasons: {
'_all_': {/*Reasons*/}, // Для всех полей
'%field%': {/*Reasons*/},,,
}
type Reasons: { '%Объяснений%': disableCondition,,, }
Компонент <WhyDisabledTip
Например в отличии от обычного тултипа будет показываться для disabled контролов.
WhyDisabledTip поддерживает формат disableReasons
<WhyDisabledTip {...{field: "%field%", disableReasons }}><Button ... /></...>
Этот же disableReasons полезно передавать и с бека одновременно с выключением урлов