Ah… isso é realmente 
Deixe-me ilustrar.
Aqui está um seletor na versão mais recente do Chatbot, note que está no estado “desligado”:
Agora, vamos alterar essa seleção:
e ele revela, como por
, configurações que só precisam ser consideradas quando esse valor está selecionado.
Esta é uma maneira fantástica de reduzir a desordem desnecessária nas configurações do plugin e tornar as coisas mais simples de configurar, com menos carga cognitiva 

12 curtidas
queixo cai Eu estava esperando por algo assim há um tempo muiiiito longo. corre para verificar o repositório Existe alguma documentação sobre isso?
1 curtida
Sinta-se à vontade para usar o Chatbot como um exemplo útil de como utilizá-lo:
e tenho certeza de que já há vários usos no núcleo por aí…
2 curtidas
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.
4 curtidas