تصحيح مشكلة display none في تضمينات Discourse

مرحباً،
شكراً على هذه الميزة الجديدة، تبدو رائعة!

لقد كنت أحاول إعداد تضمين التطبيق الكامل (Full App Embed)، وكل شيء يبدو يعمل بشكل جيد، بما في ذلك تسجيل الدخول.

المشكلة الوحيدة هي أنه عند النقر على “رد” (Reply)، لا يحدث شيء — لا يظهر حقل الكتابة/المحرر.

لا أرى أي أخطاء مرتبطة بذلك في وحدة التحكم بالمتصفح (browser console) أيضاً.

هل فاتني شيء ما في الإعدادات؟

شكراً!

بعد أن كدتُ أُتلف حاسوبي تقريبًا، وجدتُ حلًا بديلًا — ربما ليس الحل الأمثل :sweat_smile:

يبدو أنه عند النقر على زر الرد داخل تضمين التطبيق الكامل (Full App Embed)، يفتح المُحرِّر (composer) بشكل صحيح في DOM (#reply-control.open)، لكن لسبب ما يبقى display: none.

تأكدتُ من ذلك في وحدة التحكم بالمتصفح: كان المُحرِّر موجودًا، لكن قيمته المحسوبة لخاصية display كانت “none”. عند تنفيذ الأمر يدويًا:

document.querySelector('#reply-control').style.setProperty('display', 'block', 'important');

ظهر المُحرِّر فورًا وعمل كل شيء بشكل طبيعي.

كحل بديل، إضافة كود JavaScript التالي إلى سمة Discourse تُصلح المشكلة بالنسبة لي:

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
if (!document.body.classList.contains("embed-mode")) {
return;
}
const fixComposer = () => {
const composer = document.querySelector("#reply-control.open");
if (composer) {
composer.style.setProperty("display", "block", "important");
}
};
const observer = new MutationObserver(fixComposer);
observer.observe(document.body, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ["class"],
});
fixComposer();
});

يبدو أن هذا يُصلح الأمر تمامًا، وقد حدّدتُ نطاق الحل البديل لوضع التضمين (embed-mode) فقط حتى لا يؤثر على واجهة Discourse العادية.

من الواضح أن هذا على الأرجح ليس الحل المثالي على المدى الطويل، لكن آمل أن يساعد في تحديد ما الذي يتسبب في بقاء المُحرِّر المفتوح بخاصية display: none في تضمين التطبيق الكامل.

نظرًا لأن هذه المشكلة لا تحدث على AMD: Building One Developer Community ، فقد تكون المشكلة من طرفك.