Scorciatoie da tastiera 'argomento precedente/successivo' come componente del tema

Vorrei trasformare questi tasti di scelta rapida per l’argomento precedente-successivo in un componente del tema che fornisca pulsanti << Argomento Prec >> e << Argomento Succ >> nell’intestazione.

Qualcuno può suggerire un componente del tema esistente con uno snippet di codice che fornisca un pulsante che attivi semplicemente una scorciatoia da tastiera esistente?

Sto iniziando con

1 Mi Piace

Questo tipo di funzionalità esiste già (ma si concentra su Next).

Questo utilizza la Core API, quindi dovrebbe continuare a funzionare…

PR accettato se si desidera aggiungere un’opzione per il pulsante “indietro” con un’impostazione.

4 Mi Piace

Grazie, @merefield! Sono bloccato (almeno credo che sia dove :nerd_face: ) allo snippet javascript per il pulsante indietro…

discourse-tc-topic-next-button/javascripts/discourse/components/topic-previous-button.js at master · denvergeeks/discourse-tc-topic-next-button · GitHub dove al momento ho questo…

import Component from '@glimmer/component';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
import {
  nextTopicUrl,
  previousTopicUrl,
} from "discourse/lib/topic-list-tracker";
import DiscourseURL from "discourse/lib/url";
import { inject as service } from "@ember/service";

export default class TopicPreviousButton extends Component {
  @service site;
  @tracked label = "";
  @tracked showButton = false;
  @tracked lastURL = "";

  constructor(owner, args) {
    super(owner, args);
    previousTopicUrl().then((url) => {
      if (url) {
        this.showButton = true;
        this.lastURL = url;
      } else {
        this.showButton = false;
        this.lastURL = "";
      }
    })
  };

  get goFirst() {
    return settings.topic_next_always_go_to_first_post
  }

  @action
  goToPreviousTopic() {
    let url;
    if (this.lastURL) {
      url = this.goFirst
        ? this.lastURL.substring(0, this.lastURL.nextIndexOf("/"))
        : this.lastURL;
      DiscourseURL.routeTo(url);
    }
  };
}

Penso che il problema sia verso il fondo a

? this.lastURL.substring(0, this.lastURL.nextIndexOf("/"))

Qualche idea?

Ho provato

? this.lastURL.substring(0, this.lastURL.indexOf("/"))

Probabilmente non vorrai creare un componente separato per il pulsante indietro e gestire tutta la logica nello stesso componente. Estendi semplicemente il template e il file js esistenti secondo necessità. Altrimenti, finirai probabilmente con tre template invece di uno, il che sembrerebbe eccessivo per un “componente” così piccolo?

Non sono sicuro di cosa tu stia vedendo nel mio codice, ma sto solo aggiungendo codice al tuo componente esistente :grinning:

Sì, stiamo usando una definizione diversa di Component qui in Dev :slight_smile:

Questo è un Glimmer Component diverso.

Quindi un Theme Component che contiene un Glimmer Component. Stavi per crearne uno extra?

Suggerisco di modificare lo stesso file, il che richiederà due azioni e non una. E forse l’etichetta può apparire solo se il pulsante indietro non è attivato nella nuova impostazione?

Grazie Robert – penso di aver capito. Ci proverò.

1 Mi Piace