كيفية إضافة أيقونة رأس جديدة

مرحبًا،

أحاول إضافة أيقونة جديدة إلى الرأس (للمبدّل بين الوضع الفاتح والداكن)، وقد استلهمت الفكرة من تعليق آخر هنا، لكنها لا تعمل كما هو متوقع. تختفي الأيقونة عند التمرير لأسفل في صفحة المنشور، هل يمكن لأحد مساعدتي في إبقائها ظاهرة طوال الوقت؟

شكرًا جزيلاً :grin:

(لقد حاولت إضافة فئة keep لكنها لا تزال تختفي)

<script type="text/discourse-plugin" version="0.8">
  var h = require('virtual-dom').h;
  var ajax = require('discourse/lib/ajax').ajax;
  var themeSelector = require('discourse/lib/theme-selector');
  var light = 94;
  var dark = 98;
  
  const { iconNode } = require("discourse-common/lib/icon-library");
  let icon = iconNode('adjust');

  api.createWidget("header-theme-selector", {
      tagName: "span.header-theme-selector",
      buildKey: attrs => `header-theme-selector`,
      click(event){
          let $target = $(event.target);
          let id = light;
          let user = api.getCurrentUser();
          if(user){
              console.log(themeSelector.currentThemeId());
            if (themeSelector.currentThemeId() == light) {
              id = dark;
            }
            user.findDetails().then(user => {
                  seq = user.get("user_option.theme_key_seq");
                  this.setTheme(id, seq);
              });
          }else{
              this.setTheme(id);
          };
          return true;
      },
      setTheme(themeId, seq = 0){
          themeSelector.setLocalTheme([themeId], seq);
          window.location.reload();
          this.scheduleRerender();
      },
      html(attrs, state){
            return [h('div', {attributes: {"class": "switcher keep"}}, icon)];
      }
  });
  
  api.decorateWidget('header-buttons:after', (helper)=>{
    const showExtraInfo = helper.attrs.topic;
    if(!showExtraInfo) {
        return [helper.widget.attach('header-theme-selector')];
      }
  });
</script>

يختفي لأن الكود يطلب ذلك باستخدام !showExtraInfo (حيث showExtraInfo هي حالة التمرير للرأس):

  if(!showExtraInfo) {
        return [helper.widget.attach('header-theme-selector')];
      }

إذا قمت بتغيير كتلة api.decorateWidget بالكامل إلى:

api.decorateWidget('header-buttons:after', (helper)=>{
  return [helper.widget.attach('header-theme-selector')];  
});

فسيستمر في الظهور حتى عند التمرير.

إعجابَين (2)

يا إلهي، أشعر بالغباء الآن، لقد قضيت وقتًا طويلاً جدًا في التحديق في ذلك. هذا ما يحدث عندما أحاول تعديل بعض كودك! شكرًا جزيلاً، أتمنى لك يومًا سعيدًا :grin:

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