کلاس FocusManager
تکتنهای در هر صفحه که فوکوس Blockly را در یک یا چند درخت IFocusable مدیریت میکند و این فوکوس را به صورت دوطرفه با DOM همگامسازی میکند.
تماسگیرندگانی که میخواهند بهصراحت فوکوس ورودی را برای اجزای انتخابی Blockly در صفحه تغییر دهند، باید از عملکردهای فوکوس در این مدیر استفاده کنند.
مدیر مسئول رسیدگی به رویدادهای فوکوس از DOM است (که ممکن است از کلیک کاربران بر روی عناصر صفحه ایجاد شود) و اطمینان حاصل شود که IFocusableNodeهای مربوطه به طور واضح به صورت فعال/غیرفعال برجسته شده اند، به همان شکلی که با فراخوانی به focusNode() نشان داده می شود.
امضا:
export declare class FocusManager
سازندگان
سازنده | اصلاح کننده ها | توضیحات |
---|---|---|
(سازنده) (addGlobalEventListener) | یک نمونه جدید از کلاس FocusManager می سازد |
خواص
اموال | اصلاح کننده ها | تایپ کنید | توضیحات |
---|---|---|---|
ACTIVE_FOCUS_NODE_CSS_CLASS_NAME | | (اعلام نشده) | کلاس CSS به عناصر IFocusableNode که در حال حاضر دارای فوکوس DOM و Blockly فعال هستند اختصاص داده شده است. این هرگز نباید به طور مستقیم استفاده شود. در عوض، برای اطمینان از اینکه گرهها فوکوس فعال دارند (به طور خودکار از طریق فوکوس DOM یا به صورت دستی از طریق روشهای مختلف تمرکز* ارائه شده توسط این کلاس) به FocusManager تکیه کنید. توصیه می شود با استفاده از نام این کلاس نیز پرس و جو نکنید. در عوض، از متدهای FocusableTreeTraverser یا IFocusableTree برای یافتن یک گره خاص استفاده کنید. |
PASSIVE_FOCUS_NODE_CSS_CLASS_NAME | | (اعلام نشده) | کلاس CSS اختصاص داده شده به عناصر IFocusableNode که در حال حاضر دارای فوکوس غیرفعال هستند (یعنی، آنها جدیدترین گره در درخت نسبی خود بودند که دارای تمرکز فعال بودند - به ACTIVE_FOCUS_NODE_CSS_CLASS_NAME مراجعه کنید - و اگر درخت اطراف آنها برای متمرکز شدن درخواست شود، یعنی با استفاده از focusTree در زیر، دوباره فوکوس فعال را دریافت خواهند کرد). ACTIVE_FOCUS_NODE_CSS_CLASS_NAME را برای هشدارها و محدودیتهای مربوط به استفاده مستقیم از این ثابت ببینید (معمولاً هرگز نباید از آن استفاده شود). |
روش ها
روش | اصلاح کننده ها | توضیحات |
---|---|---|
ephemeralFocusTaken() | ||
focusNode (focusableNode) | ورودی DOM را روی گره مشخص شده متمرکز می کند و آن را به عنوان متمرکز فعال علامت گذاری می کند. هر گره ای که قبلاً فوکوس شده بود به روز می شود تا به صورت غیرفعال برجسته شود (اگر در یک درخت قابل فوکوس متفاوت باشد) یا تار شود (اگر در همان گره باشد). **مهم**: اگر گره ارائه شده قادر به تمرکز نباشد (مثلاً متد canBeFocused() false را برمی گرداند)، نادیده گرفته می شود و هر حالت فوکوس موجود بدون تغییر باقی می ماند. توجه داشته باشید که این ممکن است فهرست برگه عنصر گره مشخص شده را بهروزرسانی کند تا اطمینان حاصل شود که میتوان آن را در حین تمرکز توسط صفحهخوانها به درستی خواند. | |
focusTree(focusableTree) | IFocusableTree خاص را متمرکز می کند. این یا به معنای بازگرداندن تمرکز فعال به گره متمرکز درخت است، یا تمرکز بر گره ریشه درخت. توجه داشته باشید که اگر درخت مشخص شده قبلاً یک گره متمرکز داشته باشد، این هیچ تمرکز موجود را تغییر نخواهد داد (مگر اینکه آن گره فوکوس غیرفعال داشته باشد، سپس به فوکوس فعال بازگردانده می شود). به getFocusedNode مراجعه کنید تا جزئیاتی در مورد چگونگی تأثیرپذیری سایر گرهها مشاهده کنید. | |
getFocusedNode() | IFocusableNode فعلی را با فوکوس (که همیشه به یک IFocusableTree متمرکز است) برمیگرداند، یا اگر وجود نداشته باشد، تهی است. توجه داشته باشید که این تابع برابری با IFocusableTree.getFocusedNode (). یعنی اگر درختی خودش فوکوس داشته باشد اما هیچکدام از فرزندان غیر ریشهای آن فوکوس نداشته باشند، این حالت تهی خواهد شد اما getFocusedTree() ندارد. همچنین توجه داشته باشید که اگر فوکوس زودگذر در حال حاضر گرفته شده باشد (مثلاً با استفاده از takeEphemeralFocus)، گره برگشتی در اینجا ممکن است در حال حاضر فوکوس DOM نداشته باشد. | |
getFocusedTree() | IFocusableTree فعلی را برمیگرداند که فوکوس دارد، یا اگر در حال حاضر هیچ کدام فوکوس ندارند، null میشوند. همچنین توجه داشته باشید که اگر فوکوس زودگذر در حال حاضر گرفته شده باشد (مثلاً با استفاده از takeEphemeralFocus)، درخت برگشتی در اینجا ممکن است در حال حاضر فوکوس DOM را نداشته باشد. | |
getFocusManager() | static | صفحه جهانی FocusManager را برمی گرداند. نمونه برگشتی تضمین شده است که در فراخوانی عملکرد تغییر نمی کند، اما ممکن است در بارگذاری صفحه تغییر کند. |
ثبت شده است (درخت) | نشان می دهد که آیا درخت مشخص شده قبلاً در این مدیر با استفاده از registerTree ثبت شده است یا خیر و هنوز با استفاده از unregisterTree لغو ثبت نشده است. | |
registerTree (درخت، rootShouldBeAutoTabbable) | یک IFocusableTree جدید برای مدیریت فوکوس خودکار ثبت می کند. اگر درخت در حال حاضر عنصری با فوکوس DOM داشته باشد، تا زمانی که فوکوس به یک عنصر/گره جدید، اکنون نظارت شده تغییر نکند، بر وضعیت داخلی این مدیر تأثیری نخواهد گذاشت. اگر درخت ارائه شده در حال حاضر در این مدیر ثبت شده باشد، این تابع پرتاب می شود. از isRegistered برای بررسی مواردی که نمی توان مطمئن بود که درخت ثبت شده است استفاده کنید. ثبت درخت را می توان برای پیکربندی توقف های خودکار تب سفارشی کرد. این به طور خاص این قابلیت را برای کاربر فراهم میکند که بتواند با برگه به ریشه درخت پیمایش کند، اما فقط زمانی که درخت فوکوس فعال را حفظ نمیکند. اگر این عملکرد غیرفعال باشد، ریشه درخت زمانی که برای اولین بار به همان روشی که هر گره قابل فوکوسپذیر دیگری فوکوس میشود، بهطور خودکار قابل تمرکز (اما نه جدولبندی) میشود. | |
takeEphemeralFocus(focusableElement) | فوکوس را برای یک عنصر خاص تا زمانی که لامبدای برگشتی فراخوانی شود، فوکوس می کند. انتظار می رود این به ویژه برای جریان های رابط کاربری زودگذر مانند دیالوگ ها مفید باشد. مهم: لامبدای برگشتی *باید* فراخوانی شود، در غیر این صورت فوکوس خودکار دیگر در هیچ کجای صفحه کار نخواهد کرد. بسیار توصیه می شود که تماس لامبدا را به بسته شدن رابط کاربری مربوطه گره بزنید، به طوری که اگر ورودی به صورت دستی به عنصری خارج از رابط کاربری زودگذر تغییر کرد، رابط کاربری بسته شود و ورودی خودکار بازیابی شود. توجه داشته باشید که این لامبدا باید دقیقا یک بار فراخوانی شود و تماس های بعدی با خطا مواجه می شوند. توجه داشته باشید که مدیر به ردیابی سیگنال های ورودی DOM حتی زمانی که فوکوس زودگذر فعال است ادامه می دهد، اما تا زمانی که لامبدای برگشتی فراخوانی نشود، در واقع وضعیت گره را تغییر نخواهد داد. علاوه بر این، تنها 1 زمینه فوکوس زودگذر می تواند در هر زمان مشخص فعال باشد (تلاش برای فعال کردن بیش از یک به طور همزمان منجر به ایجاد خطا می شود). | |
لغو ثبت درخت (درخت) | یک IFocusableTree را از مدیریت فوکوس خودکار لغو ثبت می کند. اگر درخت یک گره متمرکز قبلی داشته باشد، برجسته آن حذف خواهد شد. این عملکرد فوکوس DOM را تغییر نمی دهد. اگر درخت ارائه شده در حال حاضر در این مدیر ثبت نشده باشد، این تابع پرتاب می شود. اگر درخت با مدیریت برگه خودکار ثبت شده باشد، این تابع tabindex عنصر ریشه درخت را بازنشانی می کند. |