Temas complexos em JavaScript podem ser divididos em vários arquivos, para manter as coisas bem organizadas.
Para usar essa funcionalidade, basta adicionar arquivos à pasta /javascripts no diretório do seu tema. Esses arquivos não podem ser editados na interface do Discourse, portanto, você deve usar o Theme CLI ou fazer o source do tema via git.
Arquivos JavaScript são tratados exatamente da mesma forma que em core/plugins, então você deve seguir a mesma estrutura de arquivo/pasta. Os arquivos de tema são carregados após core/plugins, então, se os nomes dos arquivos coincidirem, a versão do tema terá precedência.
Como exemplo, você pode agora realizar o que é descrito em Using Plugin Outlet Connectors from a Theme or Plugin adicionando um único arquivo ao seu tema:
/javascripts/my-theme/connectors/discovery-list-container-top/add-header-message.gjs
import Component from "@glimmer/component"; import { service } from
"@ember/service"; export default class HeaderMessage extends Component {
@service currentUser;
<template>
Welcome
{{this.currentUser.username}}
</template>
}
Para usar a API JS, crie um inicializador:
/javascripts/discourse/api-initializers/init-theme.gjs
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
// Seu código aqui
});
Se você precisar de um ativo .js totalmente diferente (por exemplo, para um web worker), consulte este tópico.
Este documento tem controle de versão - sugira alterações no github.