Skip to content

Instantly share code, notes, and snippets.

@awinogradov
Last active August 11, 2016 00:11
Show Gist options
  • Save awinogradov/cfe91a62587a73d7a31f4c67242debec to your computer and use it in GitHub Desktop.
Save awinogradov/cfe91a62587a73d7a31f4c67242debec to your computer and use it in GitHub Desktop.
Component config
---
stability: locked
# базовые поля блока
bemjson:
text: "Кнопка"
id: "the-id"
name: "the-name"
# состояния компонента
states: ["hovered", "focused", "pressed", "disabled", "checked"]
# модификаторы
mods:
theme: ["normal", "islands"]
size: ["s", "m", "l", "xl"]
type:
submit: # добавляет поле со значением для отправки на сервер
val: "shit"
link: # добавляет поля для атрибутов ссылки
url: "ya.ru",
target: "_blank"
# недоступные комбинации
disallow:
states: ["focused+disabled", "pressed+disabled"]
mods:
-
theme: "islands"
type: "link"
@qfox
Copy link

qfox commented Aug 10, 2016

base → props?

что за демо?

Напиши схему7

mods:
  {modName}: [{modVal1}, {modVal2}]

@awinogradov
Copy link
Author

@zxqfox base это базовый bemjson

@qfox
Copy link

qfox commented Aug 10, 2016

я не знаю что такое «базовый bemjson» и не понимаю

@awinogradov
Copy link
Author

таки поля по умочанию, дядь. У ссылки есть поле url в bemjson, например. Оно доступно по умолчанию. А у кнопки это поле достпуно только в модификаторе type_link.

@mishaberezin
Copy link

Насколько бы круче это было делать (BEM)JSON-схемой, с типами и всяким таким. По ней можно было бы проверять  bemjson перед шаблонизацией, кидать ворнинги...

@qfox
Copy link

qfox commented Aug 10, 2016

Соглашусь с предыдущим оратором ;-)

@qfox
Copy link

qfox commented Aug 11, 2016

На 28-ой строке можно не сбрасывать вниз.

На 11, вероятно, можно без кавычек писать строки

На 6, 7, 8 кавычки тоже не нужны, но эта схема лучше в виде чего-то близкого к http://json-schema.org/ — мы бы тогда смогли проверять bemjson-API прямо в шаблонизаторе.

кусок про disallow лучше засунуть в секцию showcase, равно как и значения из 6-8, 19-22.

В mods лучше оставлять только варианты значений, а расширения их полями описать, возможно, через расширение bemjson-схемы в файлах .yml модификаторов? (надо подумать)

p.s. Надо, пока не зашли далеко, сделать линтер для yml, чтобы проверялись разрешенные поля и их значения (yml-scheme?) и ничего не ломалось.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment