Closed absolemDev closed 1 year ago
Не прикрепил задачу и не поставил себя в ответственные.
@Nelfimov, сейчас пробую такой подход:
input.component.tsx:
...
export const InputElement = styled.div<any>(
baseStyles,
shapeStyles,
appearanceStyles,
transitionStyles,
layout
);
export const styledInput = InputElement.withComponent;
...
form-content.component.tsx:
...
<Widget
amount={5000}
settings={{ storeId: "id" }}
additionalFields={additionalFieldsWidget}
styles={{ styledInput }}
/>
...
input.component.tsx:
...
const CustomInput = styledInput ? styledInput("div") : null;
return (
...
{styledInput ? (
<CustomInput {...props} error={errorText !== ""}>
<RawInput
ref={ref}
type={type}
required={required}
disabled={disabled}
value={value}
onChange={changeValue}
placeholder={required ? `${placeholder}*` : placeholder}
{...props}
/>
</CustomInput>
) : (
<InputElement {...props} error={errorText !== ""}>
<RawInput
ref={ref}
type={type}
required={required}
disabled={disabled}
value={value}
onChange={changeValue}
placeholder={required ? `${placeholder}*` : placeholder}
{...props}
/>
</InputElement>
)}
...
Но сталкиваюсь с такой же проблемой как если предавать массив "стилей" [baseStyles, shapeStyles, appearanceStyles, transitionStyles, layout]
. Инпут начинает вести себя некорректно: ловит фокус только с третьего клика, теряет фокус после ввода одного символа в поле, теряет фокус если не :hover
.
Тогда попробуй подход из соседнего пакета next-identity-integration
- там предоставляется на компонент а функции обработчики. А их ты уже можешь вешать на свои компоненты с темой.
И покажи пример как ты будешь использовать враппер
Преобразовал аргументы обертки инпута в объект
Добавил disabled
в контекст формы. Для чилдрена врапера кнопки добавил аргумент: объект с ключами type
и disabled
ну и главный вопрос - проводишь ли тесты по этим доработкам в проекте?
Да, конечно
@Nelfimov, залил в драмин https://github.com/torin-asakura/drum-in/pull/124
@Nelfimov, пока что без тестов. Посмотри логику.