تحويل اختصارات لوحة المفاتيح للمواضيع السابقة/التالية إلى مكون سمة

أود تحويل أزرار الاختصار هذه للمواضيع السابقة/التالية إلى مكون سمة يوفر أزرار << الموضوع السابق و الموضوع التالي >> في الرأس.

هل يمكن لأي شخص اقتراح مكون سمة موجود مع مقتطف شفرة يوفر زرًا ينشط ببساطة اختصار لوحة مفاتيح موجود؟

أنا أبدأ بـ

إعجاب واحد (1)

هذا موجود بالفعل (لكنه يركز على Next).

يستخدم هذا واجهة برمجة تطبيقات Core API لذا يجب أن يستمر في العمل …

يتم قبول طلب السحب إذا كنت ترغب في إضافة خيار زر الرجوع مع إعداد.

4 إعجابات

شكراً لك، @merefield! لقد علقت (على الأقل أعتقد أن هذا هو المكان الذي أنا فيه :nerd_face: ) عند مقتطف جافاسكريبت لزر الرجوع…

discourse-tc-topic-next-button/javascripts/discourse/components/topic-previous-button.js at master · denvergeeks/discourse-tc-topic-next-button · GitHub حيث لدي هذا في الوقت الحالي…

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);
    }
  };
}

أعتقد أن المشكلة قريبة من الأسفل عند

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

أي أفكار؟

لقد جربت

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

قد لا ترغب في إنشاء مكون منفصل لزر الرجوع والتعامل مع كل المنطق في نفس المكون. فقط قم بتوسيع القالب وملف js الحالي حسب الحاجة. وإلا فقد ينتهي بك الأمر بثلاثة قوالب بدلاً من واحد مما يبدو مفرطًا لمثل هذا “المكون” الصغير؟

هممم… لست متأكدًا مما تراه في الكود الخاص بي، ولكني أضيف الكود فقط إلى المكون الحالي الخاص بك :grinning:

نعم، نحن نستخدم تعريفًا مختلفًا للمكون هنا في Dev :slight_smile:

هذا مكون Glimmer مختلف.

إذن، مكون Theme واحد يحتوي على مكون Glimmer واحد. هل كنت على وشك إنشاء مكون إضافي؟

أقترح عليك تعديل نفس الملف، والذي سيتطلب إجراءين وليس إجراءً واحدًا. وربما يمكن أن يظهر التسمية فقط إذا لم يتم تنشيط زر الرجوع في الإعداد الجديد؟

شكراً روبرت – أعتقد أنني فهمت. سأجرب هذا.

إعجاب واحد (1)