Мне предложили добавить опцию для настройки порядка отображения групповых почтовых ящиков в боковой панели, которую добавляет мой компонент. Сейчас я ищу элегантное решение, позволяющее администратору настраивать порядок максимально просто.
Я думал о реализации в виде очень простого объекта типа settings. Каждая запись должна содержать один селектор группы (через тип настройки groups), что гораздо удобнее, чем ручной ввод имен или идентификаторов. Элементы можно было бы переставлять с помощью стрелок вверх/вниз.
Вот что я имел в виду:
Но в реальности это выглядит скорее так:
Сам выпадающий список групп работает нормально. Хотя настройка хранит идентификатор группы, администраторы видят имя группы в списке, поэтому выбрать правильную несложно. Однако, когда я использую значение group в качестве идентификатора записи объекта, интерфейс отображает только идентификатор группы, а не её имя. Это затрудняет изменение порядка, так как администраторам придется ориентироваться на идентификаторы вместо имен.
(Кроме того, справа остается много свободного места, но «groups» всё ещё странно переносится.)
setting.yml
group_inbox_order:
type: objects
default: []
schema:
name: entry
identifier: group
properties:
group:
type: groups
required: true
max: 1
В видео выше я добавил дополнительное текстовое поле для каждой записи, где вручную ввел имя группы и использовал его в качестве идентификатора. Но это не кажется хорошим решением, так как отображаемый текст больше не привязан к реальной группе, а имена групп могут измениться.
setting.yml
group_inbox_order:
type: objects
default: []
schema:
name: entry
identifier: text
properties:
group:
type: groups
required: true
max: 1
text:
type: string
Я также мог бы использовать список настроек типа «group», но там очень трудно менять порядок элементов, так как можно только удалять их и добавлять заново.
Есть ли у кого-нибудь идеи, как лучше всего решить эту задачу?

