States
Секция "Состояния" позволяет добавить состояния к виджету. Вот так выглядит данная секция:

- Отключено / Disabled - виджет выключен
- Выбрано / Selected - виждет выбран
- Посещено / Visited - виджет посещен
- Корректно / Correct - виджет корректен
- Некорректно / Incorrect - виджет некорректен
Состояния работают на основе States.js
Включение состояния не означает, что оно сразу применится к виджету, но это добавляет возможность включить состояние у этого виджета с помощью js кода или триггера изменить состояние.
При включении состояния открывается поле ввода для групп. Если нужно задать несколько групп, то они вводятся через пробел. Виджет всегда принадлежит к группе с именем соответствующем id виджета. Группы нужны, чтобы одной командой изменять состояние у множества виджетов. Например, если у трех виджетов включено disabled состояние и у всех трех указана groupName группа, то при вызове window.states.disabled.add('groupName') всем трем виджетам будет добавлено состояние disabled.
Если для html элемента включена поддержка состояния, то ему добавляется data атрибут data-state-<stateName>. Внутри этого атрибута перечислены все группы, к которым он принадлежит. Если состояние активируется, то добавляется класс .state-<stateName>
Состояния Disabled, Visited, Correct, Incorrect сохраняются в оболочку и восстанавливаются при перезагрузке страницы. Только состояние Selected не сохраняется в оболочку
Disabled
Данное состоян ие делает элемент неактивным. Добавляется стиль cursor: not-allowed!important; и отключается возможность нажать на элемент.
[data-state-disabled] {} // Стилизация всех включенных элементов
[data-state-selected].state-disabled {} // Стилизация всех задизебленных элементов
[data-state-disabled~="<group_name>"] {} // Стилизация включенного элемента из определенной группы
[data-state-disabled~="<group_name>"].state-disabled {} // Стилизация задизебленного элемента из определенной группы
Selected
Виджет переходит в это состояние при клике на него и остается в нем, пока не будет сделан клик по другому виджету, для которого указан такая же группа. Если кликнуть по д анному виджету еще раз, он не должен выходить из состояния Selected.
У таких виджетов, пока они в обычном состоянии (еще не перешли в Selected), при наведении срабатывает свойство cursor pointer, после перехода в Selected курсор при наведении должен быть стандартным. Данный момент реализован с помощью следующего css правила: [data-state-selected]:not(.state-selected){cursor: pointer!important;}
[data-state-selected] {} // Стилизация всех доступных для выбора элементов
[data-state-selected].state-selected{} // Стилизация всех выбранных элементов
[data-state-selected~="<group_name>"] {} // Стилизация доступного для выбора элемента из определенной группы
[data-state-selected~="<group_name>"].state-selected{} // Стилизация выбранного элемента из определенной группы
Visited
Это состояние включается для виджета после клика по нему, если при клике он не был в состоянии Disabled
[data-state-visited] {} // Стилизация всех доступных для посещения элементов
[data-state-visited].state-visited{} // Стилизация всех посещенных элементов
[data-state-visited~="<group_name>"] {} // Стилизация доступного для посещения элемента из определенной группы
[data-state-visited~="<group_name>"].state-visited{} // Стилизация посещенного элемента из определенной группы
Correct и Incorrect
Данные состояния добавлены только для стилизации. Состояния акти вируется с помощью триггеров или js кода
[data-state-correct] {} // Стилизация всех виджетов поодерживающих состояние "Корректно"
[data-state-correct].state-correct{} // Стилизация всех корректных элементов
[data-state-correct~="<group_name>"] {} // Стилизация элементов определенной группы, поодерживающих состояние "Корректно"
[data-state-correct~="<group_name>"].state-correct{} // Стилизация корректных элементов определенной группы
[data-state-incorrect] {} // Стилизация всех виджетов поодерживающих состояние "Некорректно"
[data-state-incorrect].state-incorrect{} // Стилизация всех некорректных элементов
[data-state-incorrect~="<group_name>"] {} // Стилизация элементов определенной группы, поодерживающих состояние "Некорректно"
[data-state-incorrect~="<group_name>"].state-incorrect{} // Стилизация некорректных элементов определенной группы
Больше технической информации на странице States.js