Giter Club home page Giter Club logo

react-ui-validations's Introduction

react-ui-validations

Разработка библиотеки переехала в другой репозиторий skbkontur/retail-ui

Travis npm

Набор компонентов, реализующих поведение валидаций по контур-гайдам.

Документация

Использование

npm install --save react-ui-validations
import { ValidationContainer, ValidationWrapperV1 } from 'react-ui-validations';

export default class DataEditor extends React.Component {
    // ...
    render() {
        return (
            <ValidationContainer>
                <ValidationWrapperV1 
                    validationInfo={/\d+/.test(phone) 
                        ? { message: 'Телефон должен состоять только из цифр' } 
                        : null}>
                    <Input
                        value={phone}
                        onChange={value => setState({ phone: value })}
                    />
                </ValidationWrapperV1>
            </ValidationContainer>
        );
    }
}

Запуск примеров

git clone [email protected]:skbkontur/react-ui-validations.git
cd react-ui-validations
npm install
cd docs
npm install
npm start

react-ui-validations's People

Contributors

exactlynosense avatar frumcheg avatar lelchik avatar mshatikhin avatar nanot1m avatar slawwan avatar slogger avatar theivanshastakou avatar tihonove avatar wkich avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-ui-validations's Issues

[react-ui-validations] Одновременный показ двух валидаций по потере фокуса

Начальные условия:

  • ПолеА с валидайией по потере фокуса
  • ПолеБ с валидацией по потере фокуса
  • Кнопка вызывающая валидацию формы
  • !Важно: ПолеБ идет после ПолеА

Сценарий:

  1. Клик по ПолеБ
  2. Ввести одну букву (не убирать фокус)
  3. Нажать на кнопку мыхой с небольшой задержкой

При быстром клике на кнопку (нажал-отпустил) иногда не воспроизводится

Пример с http://tech.skbkontur.ru/react-ui-validations/#/on-blur-validations
image

Ситуация в бизнес сценарии

image

Валидация "lostfocus" пропадает при редактировании формы

Проявляется если сообщением валидации является реакт-компонент. Происходит это из-за того что валидации сравниваются по ссылке

if (!isEqual(this.props.validations, nextProps.validations)) {
после чего перестраивается state компонента но уже со скрытой валидацией

ниже код для стабильного воспроизведения на ts

interface BugState {
    xxx: string;
}

class Bug extends React.Component<{}, BugState> {
    state: BugState = {
        xxx: ""
    };

    x: number = -1;

    render() {
        ++this.x;
        return (
            <div style={{padding: 30}}>
                <ValidationContainer>
                    <Gapped vertical>
                        <ValidationWrapperV1 validationInfo={{message: Math.floor(this.x / 3).toString()}}>
                            <Input value={""}/>
                        </ValidationWrapperV1>
                        <ValidationWrapperV1 validationInfo={null}>
                            <Input value={""} onChange={() => this.forceUpdate()}/>
                        </ValidationWrapperV1>
                    </Gapped>
                </ValidationContainer>
            </div>
        )
    }
}

каждое третье нажатие с клавиатуры во втором поле будет скрывать валидацию первого поля

после того как убрать фокус из второго поля валидация на первом сразу появится

умолчательное положение тултипа "right middle" -> "right top"

сейчас по умолчанию тултип с валидацией отображается с позицией "right middle" а по гайдам должен "right top"

https://github.com/skbkontur/react-ui-validations/blob/master/src/index.js#L59

ссылка на гайд по валидациям https://guides.dev.kontur/principles/validation/
пример из гайда по валидациям
image

Совместимость react-ui-validations и старыми версиями react-ui

У меня в проекте используется react-ui версии 0.24.3, а очень хочется заиспользовать react-ui-validations. При сборке получаю:

Module not found: Error: Can't resolve '@skbkontur/react-ui/components/TokenInput' in 'C:\Users\a\Chemical_labs\myrepo\node_modules\@skbkontur\react-ui-validations'

Как можно обойти зависимость react-ui-validations от react-ui?

children.focus()

Как видно из кода: https://github.com/skbkontur/react-ui-validations/blob/master/src/Behaviour/ValidationWrapper.jsx#L179,
скрол до невалидного элемента произойдет, если у него есть метод focus. Бывает, что нужно показать ошибку на элементе, у которого нет такого метода. Можно ли убрать ту проверку в коде? Тем более, что ниже есть еще одна такая же https://github.com/skbkontur/react-ui-validations/blob/master/src/Behaviour/ValidationWrapper.jsx#L186

DatePicker не валидируется при потере фокуса

Если навесить на DatePicker валидацию при потере фокуса она не срабатывает при выборе значения в виджете и срабатывает только при клике на контрол снова и затем клике снаружи.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.