AdmiralDS / react-ui

Сторибук компонентов React на основе дизайн системы Адмирал 2.1
https://AdmiralDS.github.io/react-ui/
MIT License
40 stars 13 forks source link

Добавление в Multibutton возможности запретить MainButton не запрещая меню #1456

Closed alexf2 closed 1 month ago

alexf2 commented 1 month ago

Сейчас Multibutton имеет пропс disabled, который запрещает всё разом, но в некоторых сценариях нужно запретить только MainButton. И это легко сделать, добавив пропс disabledMainButton.

disabledMainButton?: boolean;

И применив его вот так:

         <MainButton
                ref={ref}
                skeleton={skeleton}
                dimension={dimension}
                appearance={appearance}
                disabled={(disabled ?? false) || disabledMainButton}
                onClick={onMainButtonClick}
              >
                {React.Children.toArray(children).map((child, index) =>
                  typeof child === 'string' ? <span key={`${child}-${index}`}>{child}</span> : child
                )}
         </MainButton>

Например, в моём сценарии я использую выпадающее меню для переключения всей моей формы между разными видами стриминга, а MainButton запускает стриминг выделенных в таблице строк. При этом, если нет выделения, то кнопку надо запретить, а меню разрешить. А если стриминг запущен, то запретить и кнопку и меню.

Eldar-Gyzyev commented 1 month ago

Добрый день! Мы не разрабатываем нестандартные функции компонентов привязанные к узким сценариям. Иначе обрастем и утонем в таких «полезных» функциях, учитывая количество компонентов, сценариев и пользователей.

alexf2 commented 1 month ago

Ну, так тут и разрабатывать ничего не надо: влить мой Pull request. Кроме того, это не нестандартный функционал, а фикс дефекта архитектуры компонента. Там на все внутренние компоненты пробрасывается один пропс disabled, поэтому, нет возможности управлять ими по-отдельности. Логично иметь дополнительный пропс.

alexf2 commented 1 month ago

Создал PR: https://github.com/AdmiralDS/react-ui/pull/1465/commits