تم إيقاف الاستكمال التلقائي المستند إلى jQuery الآن

مكتبة الإكمال التلقائي المستندة إلى jQuery والتي يتم استدعاؤها عبر الدالة $.autocomplete() مهملة الآن في Discourse core. نحن ننتقل نحو حلول حديثة توفر أداءً أفضل وتجريدات تحديد موضع لوظيفة الإكمال التلقائي.

دليل الترحيل

للإكمال التلقائي في منطقة النص (مثل الإشارات، الهاشتاجات، الرموز التعبيرية)

استخدم مُعدِّل DAutocomplete الذي تم تقديمه في https://github.com/discourse/discourse/pull/33513.

يوفر المُعدِّل نفس الوظيفة مثل مكون jQuery الإضافي ولكن مع تكامل أفضل مع نظام تفاعلية Ember ومكتبة تحديد موضع FloatKit الخاصة بنا.

مُعرفات PR أخرى: DEV: floatkit autocomplete for ai-bot-conversations by tyb-talks · Pull Request #34354 · discourse/discourse · GitHub

قبل:

$(textarea).autocomplete({
  key: "@",
  dataSource: (term) => searchUsers(term),
  template: userTemplate,
  transformComplete: (user) => user.username
});

بعد:

import DAutocompleteModifier from "discourse/modifiers/d-autocomplete";

// برمجياً:
DAutocompleteModifier.setupAutocomplete(
  owner,
  textareaElement,
  autocompleteHandler,
  {
    key: "@",
    dataSource: (term) => searchUsers(term),
    template: userTemplate,
    transformComplete: (user) => user.username
  }
);

للإكمال التلقائي في حقل الإدخال (مثل تحديد المجموعة/المستخدم)

استخدم مكون DMultiSelect كما هو موضح في UX: overhaul of GroupSelector with Floatkit by tyb-talks · Pull Request #34685 · discourse/discourse · GitHub.

يوفر هذا المكون تجربة اختيار متعدد كاملة مع إدارة البحث والاختيار. يتضمن التنفيذ في PR المرجعي وضع الاختيار الفردي أيضًا.

قبل:

$("input.group-selector").autocomplete({
  dataSource: (term) => searchGroups(term),
  template: groupTemplate
});

بعد:

import DMultiSelect from "discourse/components/d-multi-select";

<DMultiSelect
  @selection={{this.selectedGroups}}
  @loadFn={{this.searchGroups}}
  @onChange={{this.handleChange}}
  @label="Select groups"
>
  <:selection as |group|>
    {{group.name}}
  </:selection>
  <:result as |group|>
    {{group.name}}
  </:result>
</DMultiSelect>

إذا كنت تحتفظ بموضوع أو مكون إضافي يستخدم الإكمال التلقائي لـ jQuery، فيرجى الترحيل إلى الحلول الجديدة. سنقوم بإزالة الإهمال في 10 نوفمبر 2025.

رد أدناه إذا كانت لديك أسئلة حول ترحيل الكود الخاص بك.

6 إعجابات