DiscoTOC - índice automático

Você pode postar um link para o seu site? Suspeito que o problema seja devido ao estilo do seu tema.

2 curtidas

Aqui está o meu link:

https://whois.nhachinhchu.org/t/bang-gia-xem-data-nha-chinh-chu/63389

1 curtida

Desculpe interromper a discussão em andamento. Encontrei algo que não tenho certeza se já foi relatado.

Se a postagem tiver um link em um cabeçalho, o número de cliques também é mostrado na entrada do TOC:

2 curtidas

Desde esta atualização, estou vendo um erro nas páginas do discourse-docs que têm um sumário. Por exemplo, nesta página no Meta (esta página no Meta), o sumário não é exibido e vejo um erro nas ferramentas de desenvolvedor do meu navegador:

No meu site, também vejo um banner na parte superior da página dizendo “As postagens podem não ser exibidas corretamente porque um dos decoradores de conteúdo de postagem no seu site gerou um erro. Verifique as ferramentas de desenvolvedor do navegador para mais informações.”

3 curtidas

Obrigado @simonk, acabei de (há 2 minutos!) mesclar uma correção para esse problema. Por favor, atualize o componente no seu site e me diga se o banner no seu próprio site está persistindo.

3 curtidas

Obrigado pela resposta! O erro desapareceu, mas o índice (ToC) não é exibido na versão discourse-docs da página. Antes da atualização de ontem, o índice era exibido na versão discourse-docs da página, bem como na versão “normal”.

(Isso não é urgente para mim - eu implantei a atualização em um site de staging, não em produção, então não importa que não esteja funcionando corretamente)

Editar: Estou executando a versão 2.8.0.beta11 (42c71789f9), se isso fizer alguma diferença.

2 curtidas

Sim, entendo o que você quer dizer. Infelizmente, minhas alterações no TOC usam um ponto de acesso na visualização do tópico que está faltando na documentação. Vou investigar isso.

3 curtidas

Fiz mais algumas alterações no componente hoje, elas devem resolver os problemas levantados por @mentalstring e @simonk. No seu caso, Simon, você precisa de uma reconstrução completa porque também precisa puxar uma atualização para o plugin de documentação.

@huynhthai824 é muito provável que seu problema seja resolvido assim que você atualizar o componente.

4 curtidas

Muito obrigado, estou muito feliz, meu problema foi resolvido.
Obrigado novamente..

1 curtida

Após uma reconstrução completa, posso confirmar que o índice (ToC) aparece corretamente na página discourse-docs - muito obrigado :+1:

Vejo que você também restringiu o índice a 2 níveis. Dado o espaço horizontal, acho isso razoável, mas significa que os títulos de terceiro nível são exibidos no índice no mesmo nível de aninhamento de seus pais.

ou seja, no momento, este texto:

# Primeiro Título
## Primeiro Subtítulo
### Filho do Primeiro Subtítulo
### Filho do Primeiro Subtítulo
## Segundo Subtítulo
### Filho do Segundo Subtítulo
### Filho do Segundo Subtítulo
# Segundo Título

Produz este índice:

Eu me pergunto se seria melhor que os títulos de terceiro nível e abaixo fossem excluídos do índice completamente?

Além disso, a estrutura DOM não parece bem correta - cada item de segundo nível é um <ul> com um único <li> dentro dele:

4 curtidas

Boa observação. Não tenho certeza com que frequência usamos 3+ níveis, mas é possível reintroduzi-los, não deve ser muito complicado.

Boa observação, novamente. Este foi um pequeno erro, deve ser corrigido assim que esta PR for mesclada.

3 curtidas

Se você estiver com vontade de fazer solicitações de recursos, talvez a profundidade máxima possa ser controlada por meio de uma configuração… :wink:

5 curtidas

Na minha experiência, o recurso de Sumário (ToC) só funciona na primeira postagem, mas não nas postagens subsequentes. Isso está correto? Se sim, minha observação pode ser tratada como uma solicitação de recurso? Aliás, o Sumário (ToC), mesmo na primeira postagem, é uma adição muito boa. R

Olá a todos, tenho um problema desde a última atualização neste ótimo componente de tema, mas apenas no celular. Quando clico no botão do índice, o slider com o índice completo não abre.

Se eu usar uma janela muito pequena no desktop, este botão e slider funcionam muito bem. Então, pode ser um problema apenas no Android.

Aqui está o log no meu fórum atualizado (Discourse e TOC):

Message

Uncaught TypeError: Cannot read properties of null (reading 'classList')
Url: https://iunctis.fr/theme-javascripts/671f772e071bd55050592ff8541b659afe421259.js?__ws=iunctis.fr
Line: 36
Column: 49
Window Location: https://iunctis.fr/t/le-mensuel-01-decembre-2021/9591

Backtrace

TypeError: Cannot read properties of null (reading 'classList')
    at n.showTOCOverlay (https://iunctis.fr/theme-javascripts/671f772e071bd55050592ff8541b659afe421259.js?__ws=iunctis.fr:36:49)
    at e.n._join (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:412333)
    at e.n.join (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:409358)
    at h (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:273784)
    at https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:65110
    at a (https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:260923)
    at https://iunctis.fr/assets/vendor-96a5eaa8d436066b954c21ae5afb7f504310945c679465a2f1ba46b429a95edf.js:36:65054
    at n._triggerAction (https://iunctis.fr/assets/application-945e3f0cb654a8c23b30e86f5e955be5599a8330d68ce75e97b8228ad45ff6fd.js:1:1254524)
    at n.click (https://iunctis.fr/assets/application-945e3f0cb654a8c23b30e86f5e955be5599a8330d68ce75e97b8228ad45ff6fd.js:1:1254160)

Env

HTTP HOSTS: iunctis.fr

Se eu usar um user agent do Android na minha versão do Firefox para desktop, recebo este erro se clicar no botão neste fórum:

Uncaught TypeError: document.querySelector(...) is null
    showTOCOverlay 4916e6ed2a984e00537fe797b799637f1a801ffe.js:374
    _join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
    join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
    p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
    An _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:1147
    o _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2785
    An _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:1147
    _triggerAction _application-2646ad3bbed41e42bb77806dc41fbea2.js:489
    click _application-2646ad3bbed41e42bb77806dc41fbea2.js:488
    trigger _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2560
    n _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2422
    _run _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4034
    _join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
    join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
    p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
    handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2574
    o _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2785
    handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2574
    handleEvent _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2499
    setupHandler _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2524
    dispatch _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:347
    handle _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:342
    add _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:342
    Oe _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:339
    each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:123
    each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:116
    Oe _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:339
    on _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:358
    initialize _application-2646ad3bbed41e42bb77806dc41fbea2.js:3354
    initialize _application-2646ad3bbed41e42bb77806dc41fbea2.js:62
    runInstanceInitializers _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2730
    each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4074
    walk _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4064
    each _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4056
    topsort _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4056
    _runInitializer _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2733
    runInstanceInitializers _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2730
    _bootSync _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2604
    didBecomeReady _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2623
    invoke _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3963
    flush _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3955
    flush _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3969
    _end _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4032
    end _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3988
    _run _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4034
    _join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:4033
    join _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:3999
    p _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2870
    bind _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:2873
    u _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:272
    c _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:273
    setTimeout handler*a/\u003c _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:274
    l _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:265
    fireWith _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
    fire _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
    l _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:265
    fireWith _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:266
    ready _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
    z _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
    EventListener.handleEvent* _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:283
    \u003canonymous\u003e _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:109
    \u003canonymous\u003e _vendor-64dba8b874ef11bbef3b2bce2fbcf6cc.js:109
4916e6ed2a984e00537fe797b799637f1a801ffe.js:374:18

No meu celular, tenho o Chrome versão 97.0.4692 se isso ajudar.

Sou o único a experimentar isso?

2 curtidas

Esta é uma regressão recente devido a uma alteração no núcleo, tenho uma correção pronta em FIX: Restore outlet in mobile views by pmusaraj · Pull Request #15683 · discourse/discourse · GitHub, assim que for mesclada, você poderá reconstruir seu site e o problema será corrigido. Desculpe por isso.

Na semana passada, também reintroduzi o terceiro nível de recuo para cabeçalhos no componente, como mencionado por Simon acima.

Estou hesitando em adicionar uma configuração aqui, a grande, grande maioria dos casos de uso não precisa dela. E, o componente também tem classes para cada nível, então se você quiser ocultar o 4º e o 5º nível, você pode fazer isso com este css:

li.d-toc-h4, li.d-toc-h5 {
  display:none;
}
7 curtidas

Está mesclado e funcionando bem, obrigado!

5 curtidas

Notei que a <div> no topo de um tópico introduziu uma margem extra. Por exemplo:

Adicionei isso ao meu tema, o que parece corrigir o problema:

// Os elementos do ToC no topo da postagem introduzem espaço indesejado.
// O Discourse define a margem superior do primeiro filho na postagem como zero,
// mas isso não funciona quando o ToC é o primeiro filho. Em vez disso,
// definiremos a margem superior do elemento seguinte ao ToC como zero.
div[data-theme-toc="true"] + * {
    margin-top: 0px;
}

Talvez algo assim precise ser adicionado ao componente?

7 curtidas

Boa observação, adicionei essa regra CSS neste PR: UX: Keep core's top margin for first item in OP by pmusaraj · Pull Request #30 · discourse/DiscoTOC · GitHub

4 curtidas

Já resolvi este problema no passado movendo o código de incorporação para o final da postagem. Parece um pouco improvisado, mas funciona.

1 curtida

Tenho posts que têm DIVs extras em seus corpos. Por exemplo, On Storytelling - Workbench - Podcaster Community

O DIV que aciona a geração do TOC está dentro de um DIV… e o TOC percebe isso. Mas outros cabeçalhos, dentro de DIVs, não parecem ser notados pelo TOC.

…não é a melhor captura de tela. Esse é um H2 em um DIV arbitrário/apenas para estilo que não aparece no TOC.

…o que não é mostrado é o <div> que aciona o TOC, que está dentro do DIV com o par de atributos/valores malucos…


atualizado horas depois para adicionar: Talvez apenas “:scope h1,” etc. em vez de exigir que os cabeçalhos sejam filhos imediatos do escopo?

…também, isso foi mencionado em março de 21, DiscoTOC - automatic table of contents - #255

3 curtidas