
Lupsick
21.08.2016
18:33:06
https://github.com/jshjohnson/Choices
58 кб правда

from
21.08.2016
18:36:37
https://github.com/jshjohnson/Choices
неплохо
но вот это че-то жесть :)
classNames: {
containerOuter: 'choices',
containerInner: 'choices__inner',
input: 'choices__input',
inputCloned: 'choices__input--cloned',
list: 'choices__list',
listItems: 'choices__list--multiple',
listSingle: 'choices__list--single',
listDropdown: 'choices__list--dropdown',
item: 'choices__item',
itemSelectable: 'choices__item--selectable',
itemDisabled: 'choices__item--disabled',
itemChoice: 'choices__item--choice',
group: 'choices__group',
groupHeading : 'choices__heading',
button: 'choices__button',
activeState: 'is-active',
focusState: 'is-focused',
openState: 'is-open',
disabledState: 'is-disabled',
highlightedState: 'is-highlighted',
hiddenState: 'is-hidden',
flippedState: 'is-flipped',
loadingState: 'is-loading',
},


Lupsick
21.08.2016
18:37:01
неплохо
но вот это че-то жесть :)
classNames: {
containerOuter: 'choices',
containerInner: 'choices__inner',
input: 'choices__input',
inputCloned: 'choices__input--cloned',
list: 'choices__list',
listItems: 'choices__list--multiple',
listSingle: 'choices__list--single',
listDropdown: 'choices__list--dropdown',
item: 'choices__item',
itemSelectable: 'choices__item--selectable',
itemDisabled: 'choices__item--disabled',
itemChoice: 'choices__item--choice',
group: 'choices__group',
groupHeading : 'choices__heading',
button: 'choices__button',
activeState: 'is-active',
focusState: 'is-focused',
openState: 'is-open',
disabledState: 'is-disabled',
highlightedState: 'is-highlighted',
hiddenState: 'is-hidden',
flippedState: 'is-flipped',
loadingState: 'is-loading',
},
кастомизация

Google

from
21.08.2016
18:37:05
да ну)

Lupsick
21.08.2016
18:37:10
выносится в скрипт другой, похуй

from
21.08.2016
18:37:12
лучше б кастомный render выдал

Lupsick
21.08.2016
18:37:16
https://jets.js.org
вот идея интересная

from
21.08.2016
18:37:54
так и что мешает?
короче одного глобального класса в качестве параметра думаю достаточно

Lupsick
21.08.2016
18:38:33
не представляю как ты хочешь

from
21.08.2016
18:39:09
Что за кастомизация такая, которая требует передать свои названия классов для внутренних элементов

Lupsick
21.08.2016
18:41:37

from
21.08.2016
18:42:14
да говорю же, достаточно параметра containerClassName и всё
И через это можно стилизовать внутри всё что угодно.
А вот если более серьёзная кастомизация требуется, а именно свой маркап, то лучше предоставить рендер хуки типа choiceRender, resultRender или вообще на все внутренности разом )

Google

Lupsick
21.08.2016
18:48:57

Denis
21.08.2016
18:54:12

Lupsick
21.08.2016
18:54:31

Denis
21.08.2016
18:58:27
определенно

Andrey
21.08.2016
21:09:13
внимание /!\ нубский вопрос /!\
как правильно прокидывать хендлер onChange из формы к глубоко вложенным полям ?

Такси в подарок!)
21.08.2016
21:13:43
/!\ Нубский ответ /!\
Вроде, это)
https://facebook.github.io/react/docs/context.html

Dmitry
21.08.2016
21:14:42
А стоит ли использовать context?

Такси в подарок!)
21.08.2016
21:15:15
Ну если и правда придется через 4 уровня прокидывать, то почему нет
Вряд ли таких мест много

Andrey
21.08.2016
21:52:51
о спс. но ваще прокидывание сквозь 2 уровня это трешак?
какие существуют бест практики?

Denis
21.08.2016
22:27:14
Гайз, подскажите чат по опыту взаимодействия (UX) и тому подобному

Vladimir
21.08.2016
22:52:08

Vitaliy
22.08.2016
00:03:27

Vladimir
22.08.2016
07:36:05

Andrey
22.08.2016
07:37:18
А если через редаксы то чо-то я не понимаю откуда брать функцию диспатч
Метод диспатч через пропсы прокидывать или в модуль засйвить и оттуда брать?

from
22.08.2016
07:41:28
А я что-то не понимаю, как такая ситуация может возникнуть )
Из-за чего поля формы оказались "очень глубоко"? Внутри каких компонентов они находятся? Наверняка эти компоненты по сути тоже имеют к форме прямое отношение, а потому логично что они принимают onChange параметр, и надо прокидывать именно через пропсы

Dmitry
22.08.2016
07:42:39

Vasiliy
22.08.2016
07:46:27

Andrey
22.08.2016
07:47:06
Я просто прощупывают разные варианты построения приложения.
Правильно ли я понял, что в сложном редакс- приложении мы должны многократно через 4 уровня писать : ‘‘‘ onChange={yhis.props.onChange} onClickToButtonA={this.props. onClickToButtonA} ... ‘‘‘
"

Google

Dmitry
22.08.2016
07:50:51
Ну у меня так сделано - форма имеет onChange, который при необходимости вызывает экшены. Каждое поле - отдельный компонент. Форма передает ему onChange. А как уж поле внутри себя там устроено - это не волнует форму. Главное сохранить единый интерфейс общения формы с полями. Если придется, то и через 4 вложенности надо прокидывать. Но как выше верно заметили, откуда у тебя взялась такая глубокая вложенность? )
Максимум, что я смог придумать - это Form -> FieldSet -> Field, но это всего 2 уровня )

Andrey
22.08.2016
07:57:41
Ок про иногда возникающую необходимость прокидывать через 2 уровня понял. Спасибо.
Уровни у меня такие:
1. Группа форм
2. Форма
3. Обертка для группы полей.
4. Поле
5. Непосредственно инпут
Вероятно это путь вникуда).
Но вот группа полей может заменяться на многократно вложенные группы полей

Meg
22.08.2016
08:00:29
http://redux-form.com/5.3.1/#/?_k=yuc6ws

Andrey
22.08.2016
08:07:27
Хм... Слишком долго искать
Как там решается проблема?

from
22.08.2016
08:08:04


Dmitry
22.08.2016
08:11:35
Я бы на твоем месте разбил одну задачу на несколько:
- компонент поля
4. Поле
5. Непосредственно инпут
- компонент(ы) формы
2. Форма
3. Обертка для группы полей.
4. компонент поля
- компонент(ы) группы форм
1. Группа форм
2. компонент(ы) формы
И уже у каждой группы компонентов свои особенности реализации. Например, форме пофиг, как там поле устроено, она просто передала ему onChange. А полю в свою очередь пофиг, кто там передал ему этот хендлер. В теории это поле даже без формы можно использовать, просто соблюдая интерфейс общения. И тогда проблема передачи через вложенность станет менее проблемной, так как будет размазана на разные компоненты

Andrey
22.08.2016
08:30:20
ОО! Спасибо за солюшин

Stanislav
22.08.2016
08:55:43
Ребят, привет! Кто знает лучший способ разделить компоненты на мобильные/десктоп для страницы? Может даже на уровне рутера? (о_О)

ENAMETOOLONG
22.08.2016
09:06:40

Stanislav
22.08.2016
09:07:04
это другой вопрос
например сильно разный UX

ENAMETOOLONG
22.08.2016
09:08:24
например сильно разный UX
npm i platform , пробрасываешь пропс в корневой компонент, и рендеришь разные компоненты где тебе надо в зависимости от пропса от platform

Stanislav
22.08.2016
09:08:51
ок, спасибо, смотрю что там

ENAMETOOLONG
22.08.2016
09:08:54
но бандл все-равно будет содержать все компоненты. Иначе чанки делать надо

Stanislav
22.08.2016
09:09:31
это понятно

ENAMETOOLONG
22.08.2016
09:09:33
@superlaziness , я не уверен что это оптимальный вариант, но я бы так начал делать

Vladimir
22.08.2016
09:10:58
Если прям по жести разделять, то делаешь два рута корневых и через requre.ensure грузишь либо один либо второй

Google

from
22.08.2016
09:11:10
определять платформу звучит как плохая идея
лучше смотреть на ширину экрана и всё

Stanislav
22.08.2016
09:11:44

Admin
ERROR: S client not available

from
22.08.2016
09:11:51

Stanislav
22.08.2016
09:11:57
он не знает ширины
и не знает экрана

from
22.08.2016
09:12:11
грустно)

Vladimir
22.08.2016
09:12:14
Можно угадать по юзерагенту

from
22.08.2016
09:13:00
надо по фичам смотреть
не просто так модернайзеры изобрели

Владимир
22.08.2016
09:13:55
на сервере по фичам ?

from
22.08.2016
09:14:08
к сожалению )

Stanislav
22.08.2016
09:14:21
дак причем здесь сожаление то?
и грусть )

Владимир
22.08.2016
09:14:30
вот я то же не понимаю

Stanislav
22.08.2016
09:14:36
есть задача, надо решить

Vitaly
22.08.2016
09:14:38
Ребят, кто-нибудь из вас юзает draft.js? Сам редактор у меня работает нормально, но вот как эту дичь экспортировать в стрингу?)

Google

from
22.08.2016
09:14:51

Stanislav
22.08.2016
09:15:18
получается легко
но задача другая
нужно рендерить разные компоненты для мобильного и десктопа.

Владимир
22.08.2016
09:16:28
ну ты уже понял что на сервере ты это сделать не можешь
поэтому придется отказаться либо от одного либо от другого

Stanislav
22.08.2016
09:16:54
по юзерагенту можно

from
22.08.2016
09:17:07
хехе https://css-tricks.com/make-client-side-data-available-server-side/ )
спорно конечно

Stanislav
22.08.2016
09:17:40
через куки? хм
ну кстати вариант

from
22.08.2016
09:18:05
ну в первый раз у тебя всё равно информации не будет
потому нужны хаки типа релоада
что конечно таксе