Existe documentação, mas atualmente está, quanto eu sei, fragmentada em vez de ser apresentada como um guia de desenvolvedor independente.
As principais referências autoritativas são:
-
Documentação do esquema em config/site_settings.yml:52, abrangendo depends_on, depends_on_values, depends_behavior e dependent_setting_display.
-
Orientações e exemplos mais detalhados em .skills/discourse-site-settings/SKILL.md:203.
-
Especificações de comportamento do backend em spec/lib/site_setting_extension_spec.rb:706.
-
Resolução de dependências do frontend em frontend/discourse/admin/services/admin-site-setting-store.js:41.
-
Exemplos de interface em frontend/discourse/tests/acceptance/admin-site-settings-test.js:142.
A sintaxe básica é:
child_setting:
default: ""
depends_on:
- parent_setting
depends_behavior: "hidden"
Para pais do tipo enum ou string:
child_setting:
default: ""
depends_on:
- parent_setting
depends_on_values:
parent_setting:
- enabled_mode
- another_mode
depends_behavior: "hidden"
dependent_setting_display: "inline"
Uma limitação importante: as dependências podem conter vários pais diretos, mas a resolução de dependências não é transitiva. Uma cadeia aninhada como A → B → C não faz com que C considere automaticamente se B está oculto por A; C apenas avalia o valor armazenado de B.