Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/custom theme #134

Merged
merged 25 commits into from
Nov 29, 2023
Merged

Feature/custom theme #134

merged 25 commits into from
Nov 29, 2023

Conversation

absolemDev
Copy link
Contributor

No description provided.

Copy link
Member

@Nelfimov Nelfimov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В направлении одного из вариантов идешь. Главное - тестируй параллельно, а еще лучше пиши в пакете тесты - так точно убедимся в работоспособности

@absolemDev
Copy link
Contributor Author

@Nelfimov, пока что без тестов. Посмотри логику.

@Nelfimov
Copy link
Member

Не прикрепил задачу и не поставил себя в ответственные.

@absolemDev absolemDev self-assigned this Nov 20, 2023
Copy link
Member

@TorinAsakura TorinAsakura left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

понятие кастомных элементов не может работать нормально, при таком раскладе мы теряем контроль, так как кастомные элементы неизвестны и надо лезть вовнутрь

@absolemDev
Copy link
Contributor Author

@Nelfimov, сейчас пробую такой подход:

  1. Из проекта беру функцию стилизации элемента и отдаю виджету:

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 }}
 />
...
  1. В виджете по условию рендерю инпут:

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.

@Nelfimov
Copy link
Member

Тогда попробуй подход из соседнего пакета next-identity-integration - там предоставляется на компонент а функции обработчики. А их ты уже можешь вешать на свои компоненты с темой.

Copy link
Member

@Nelfimov Nelfimov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И покажи пример как ты будешь использовать враппер

packages/payment-widget/src/ui/form.component.tsx Outdated Show resolved Hide resolved
Copy link
Member

@TorinAsakura TorinAsakura left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

почистить any

@absolemDev
Copy link
Contributor Author

И покажи пример как ты будешь использовать враппер

Создал ПР torin-asakura/drum-in#124

Copy link
Member

@TorinAsakura TorinAsakura left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

почти

packages/payment-widget/src/interfaces/index.ts Outdated Show resolved Hide resolved
@absolemDev absolemDev linked an issue Nov 28, 2023 that may be closed by this pull request
4 tasks
packages/payment-widget/README.md Outdated Show resolved Hide resolved
packages/payment-widget/README.md Outdated Show resolved Hide resolved
@TorinAsakura TorinAsakura merged commit cc2bd60 into master Nov 29, 2023
6 checks passed
@TorinAsakura TorinAsakura deleted the feature/custom-theme branch November 29, 2023 21:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants