src/command-menu-items/open-dashboard.command-menu-item.ts
حقول التكوين
| الحقل | مطلوب | الوصف |
|---|---|---|
universalIdentifier | نعم | معرّف فريد ثابت للأمر |
label | نعم | التسمية الكاملة المعروضة في قائمة الأوامر (Cmd+K) |
frontComponentUniversalIdentifier | نعم | قيمة universalIdentifier للمكوّن الأمامي الذي يفتحه هذا الأمر |
shortLabel | لا | تسمية أقصر تُعرَض على زر الإجراء السريع المثبّت |
icon | لا | اسم الأيقونة المعروض بجانب التسمية (مثل 'IconBolt' و'IconSend') |
isPinned | لا | عند كونها true، يعرض الأمر كزر إجراء سريع في الزاوية العلوية اليمنى من الصفحة |
availabilityType | لا | تتحكّم في مكان ظهور الأمر: 'GLOBAL' (متاح دائمًا)، و'RECORD_SELECTION' (فقط عند تحديد سجلات)، أو 'FALLBACK' (يُعرَض عند عدم تطابق أي أوامر أخرى) |
availabilityObjectUniversalIdentifier | لا | تقييد الأمر بصفحات نوع كائن معيّن (مثل سجلات Company فقط) |
conditionalAvailabilityExpression | لا | تعبير منطقي يتحكّم ديناميكيًا في الظهور (انظر أدناه) |
أوامر بدون واجهة
يُعَدّ عنصر قائمة الأوامر المقترن بـمكوّن واجهة أمامية بدون واجهة الطريقة القياسية لتوفير إجراء بنقرة واحدة — لتشغيل الشفرة أو التنقّل أو التأكيد ثم التنفيذ. تغطي صفحة مكوّنات الواجهة الأمامية مكوّنات الأوامر في SDK (Command, CommandLink, CommandModal, CommandOpenSidePanelPage) التي تتعامل مع نمط الإجراء-ثم-إلغاء التركيب.
تدفق نموذجي:
src/front-components/run-action.tsx
src/command-menu-items/run-action.command-menu-item.ts
تعابير الإتاحة الشرطية
يتيح لك الحقلconditionalAvailabilityExpression التحكّم في وقت ظهور الأمر بناءً على سياق الصفحة الحالي. استورد متغيّرات ومشغّلات مضبوطة الأنواع من twenty-sdk لبناء التعابير:
src/command-menu-items/bulk-update.command-menu-item.ts
RECORD_SELECTION تعني بالفعل وجود تحديد غير فارغ — استخدم numberOfSelectedRecords فقط لعرض الأعداد المحددة (على سبيل المثال >= 2).متغيّرات السياق
تُمثّل هذه المتغيّرات الحالة الحالية للصفحة:| المتغيّر | النوع | الوصف |
|---|---|---|
pageType | string | نوع الصفحة الحالي (مثل 'RecordIndexPage' و'RecordShowPage') |
isInSidePanel | boolean | ما إذا كان المكوّن معروضًا في لوحة جانبية |
numberOfSelectedRecords | number | عدد السجلات المحدّدة حاليًا |
isSelectAll | boolean | ما إذا كان “تحديد الكل” مفعّلًا |
selectedRecords | array | كائنات السجلات المحدّدة |
favoriteRecordIds | array | معرّفات السجلات المفضّلة |
objectPermissions | object | الأذونات الخاصة بنوع الكائن الحالي |
targetObjectReadPermissions | object | أذونات القراءة للكائن الهدف |
targetObjectWritePermissions | object | أذونات الكتابة للكائن الهدف |
featureFlags | object | أعلام الميزات المفعَّلة |
objectMetadataItem | object | بيانات التعريف لنوع الكائن الحالي |
hasAnySoftDeleteFilterOnView | boolean | ما إذا كان العرض الحالي يحتوي على مرشّح حذف منطقي |
المُشغِّلات
جمّع المتغيّرات في تعابير منطقية:| المُشغِّل | الوصف |
|---|---|
isDefined(value) | true إذا لم تكن القيمة null/undefined |
isNonEmptyString(value) | true إذا كانت القيمة سلسلة غير فارغة |
includes(array, value) | true إذا كانت المصفوفة تحتوي على القيمة |
includesEvery(array, prop, value) | true إذا كانت خاصية كل عنصر تتضمن القيمة |
every(array, prop) | true إذا كانت الخاصية تُقيَّم كقيمة صادقة في كل عنصر |
everyDefined(array, prop) | true إذا كانت الخاصية معرّفة في كل عنصر |
everyEquals(array, prop, value) | true إذا كانت الخاصية تساوي القيمة في كل عنصر |
some(array, prop) | true إذا كانت الخاصية تُقيَّم كقيمة صادقة في عنصر واحد على الأقل |
someDefined(array, prop) | true إذا كانت الخاصية معرّفة في عنصر واحد على الأقل |
someEquals(array, prop, value) | true إذا كانت الخاصية تساوي القيمة في عنصر واحد على الأقل |
someNonEmptyString(array, prop) | true إذا كانت الخاصية سلسلة غير فارغة في عنصر واحد على الأقل |
none(array, prop) | true إذا كانت الخاصية تُقيَّم كقيمة زائفة في كل عنصر |
noneDefined(array, prop) | true إذا كانت الخاصية غير معرّفة في كل عنصر |
noneEquals(array, prop, value) | true إذا لم تكن الخاصية تساوي القيمة في أي عنصر |