ফোকাস ম্যানেজার ক্লাস
একটি প্রতি-পৃষ্ঠা সিঙ্গলটন যা এক বা একাধিক IFocusableTrees জুড়ে ব্লকলি ফোকাস পরিচালনা করে এবং এই ফোকাসটিকে DOM-এর সাথে দ্বিমুখীভাবে সিঙ্ক্রোনাইজ করে।
যে কলাররা পৃষ্ঠায় নির্বাচিত ব্লকলি উপাদানগুলির জন্য স্পষ্টভাবে ইনপুট ফোকাস পরিবর্তন করতে চান তাদের এই ম্যানেজারে ফোকাস ফাংশন ব্যবহার করা উচিত।
ম্যানেজার DOM থেকে ফোকাস ইভেন্টগুলি পরিচালনা করার জন্য দায়ী (যা ব্যবহারকারীরা পৃষ্ঠা উপাদানগুলিতে ক্লিক করার ফলে উদ্ভূত হতে পারে) এবং সংশ্লিষ্ট IFocusableNodes স্পষ্টভাবে সক্রিয়/প্যাসিভভাবে হাইলাইট হিসাবে চিহ্নিত করা হয়েছে তা নিশ্চিত করার জন্য যেভাবে এটি ফোকাসনোড() এর কলগুলির সাথে উপস্থাপন করা হবে।
স্বাক্ষর:
export declare class FocusManager
কনস্ট্রাক্টর
কনস্ট্রাক্টর | সংশোধক | বর্ণনা |
---|---|---|
(নির্মাতা)(এড গ্লোবাল ইভেন্টলিসনার) | FocusManager ক্লাসের একটি নতুন উদাহরণ তৈরি করে |
বৈশিষ্ট্য
সম্পত্তি | সংশোধক | টাইপ | বর্ণনা |
---|---|---|---|
ACTIVE_FOCUS_NODE_CSS_CLASS_NAME | | (ঘোষিত নয়) | IFocusableNode এলিমেন্টের জন্য নির্ধারিত CSS ক্লাস যা বর্তমানে সক্রিয় DOM এবং Blockly ফোকাস রয়েছে। এটি সরাসরি ব্যবহার করা উচিত নয়। পরিবর্তে, নোডগুলিতে সক্রিয় ফোকাস রয়েছে তা নিশ্চিত করতে FocusManager-এর উপর নির্ভর করুন (হয় স্বয়ংক্রিয়ভাবে DOM ফোকাসের মাধ্যমে বা ম্যানুয়ালি এই শ্রেণীর দ্বারা প্রদত্ত বিভিন্ন ফোকাস* পদ্ধতির মাধ্যমে)। এই শ্রেণীর নাম ব্যবহার করে প্রশ্ন না করার পরামর্শ দেওয়া হয়। পরিবর্তে, একটি নির্দিষ্ট নোড খুঁজে পেতে FocusableTreeTraverser বা IFocusableTree এর পদ্ধতিগুলি ব্যবহার করুন। |
PASSIVE_FOCUS_NODE_CSS_CLASS_NAME | | (ঘোষিত নয়) | IFocusableNode উপাদানগুলির জন্য নির্ধারিত CSS ক্লাস যা বর্তমানে প্যাসিভ ফোকাস রয়েছে (অর্থাৎ, সক্রিয় ফোকাস করার জন্য তারা তাদের আপেক্ষিক ট্রিতে সবচেয়ে সাম্প্রতিক নোড ছিল--- দেখুন ACTIVE_FOCUS_NODE_CSS_CLASS_NAME--এবং যদি তাদের আশেপাশের গাছকে ফোকাস করার জন্য অনুরোধ করা হয়, যেমন নীচে ফোকাসট্রি ব্যবহার করা হয় তবে তারা আবার সক্রিয় ফোকাস পাবে)। এই ধ্রুবকটি সরাসরি ব্যবহার করার বিষয়ে সতর্কতা এবং সীমাবদ্ধতার জন্য ACTIVE_FOCUS_NODE_CSS_CLASS_NAME দেখুন (সাধারণত এটি কখনই ব্যবহার করা উচিত নয়)। |
পদ্ধতি
পদ্ধতি | সংশোধক | বর্ণনা |
---|---|---|
ক্ষণস্থায়ী ফোকাস নেওয়া() | ||
ফোকাস নোড (ফোকাসেবল নোড) | নির্দিষ্ট নোডে DOM ইনপুট ফোকাস করে, এবং এটিকে সক্রিয়ভাবে ফোকাস করা হিসেবে চিহ্নিত করে। যেকোন পূর্বে ফোকাস করা নোডকে প্যাসিভলি হাইলাইট করার জন্য আপডেট করা হবে (যদি এটি একটি ভিন্ন ফোকাসযোগ্য গাছে থাকে) বা ঝাপসা (যদি এটি একই থাকে)। **গুরুত্বপূর্ণ**: যদি প্রদত্ত নোডটি ফোকাস করতে সক্ষম না হয় (যেমন এর canBeFocused() পদ্ধতিটি মিথ্যা ফেরত দেয়), তাহলে এটি উপেক্ষা করা হবে এবং যেকোনো বিদ্যমান ফোকাস অবস্থা অপরিবর্তিত থাকবে। মনে রাখবেন যে এটি নির্দিষ্ট নোডের উপাদানের ট্যাবিনডেক্স আপডেট করতে পারে যাতে ফোকাস করার সময় এটি স্ক্রিনরিডারদের দ্বারা সঠিকভাবে পড়া যায়। | |
ফোকাস ট্রি (ফোকাসেবল ট্রি) | নির্দিষ্ট IFocusableTree ফোকাস করে। এর অর্থ হল গাছের নিষ্ক্রিয়ভাবে ফোকাস করা নোডে সক্রিয় ফোকাস পুনরুদ্ধার করা বা গাছের রুট নোডে ফোকাস করা। উল্লেখ্য যে যদি নির্দিষ্ট গাছের ইতিমধ্যেই একটি ফোকাস করা নোড থাকে তবে এটি বিদ্যমান কোনো ফোকাস পরিবর্তন করবে না (যদি না সেই নোডটি প্যাসিভ ফোকাস থাকে, তাহলে এটি সক্রিয় ফোকাসে পুনরুদ্ধার করা হবে)। অন্যান্য নোডগুলি কীভাবে প্রভাবিত হয় তার বিস্তারিত জানার জন্য getFocusedNode দেখুন। | |
getFocusedNode() | ফোকাস সহ বর্তমান IFocusableNode ফেরত দেয় (যা সর্বদা একটি ফোকাসড IFocusableTree এর সাথে আবদ্ধ থাকে), অথবা যদি একটি না থাকে তাহলে শূন্য। মনে রাখবেন যে এই ফাংশনটি IFocusableTree.getFocusedNode() এর সাথে সমতা বজায় রাখবে। অর্থাৎ, যদি একটি গাছেরই ফোকাস থাকে কিন্তু তার নন-রুট বাচ্চাদের কেউ না করে, তাহলে এটি শূন্য হয়ে যাবে কিন্তু getFocusedTree() হবে না। এছাড়াও মনে রাখবেন যে যদি ক্ষণস্থায়ী ফোকাস বর্তমানে ক্যাপচার করা হয় (যেমন takeEphemeralFocus ব্যবহার করে) তাহলে এখানে প্রত্যাবর্তিত নোডে বর্তমানে DOM ফোকাস নাও থাকতে পারে। | |
getFocusedTree() | বর্তমান IFocusableTree প্রদান করে যেটিতে ফোকাস আছে, অথবা বর্তমানে কোনোটি না থাকলে শূন্য। এছাড়াও মনে রাখবেন যে যদি ক্ষণস্থায়ী ফোকাস বর্তমানে ক্যাপচার করা হয় (যেমন takeEphemeralFocus ব্যবহার করে) তাহলে এখানে প্রত্যাবর্তিত ট্রিতে বর্তমানে DOM ফোকাস নাও থাকতে পারে। | |
getFocusManager() | static | পেজ-গ্লোবাল ফোকাস ম্যানেজার রিটার্ন করে। প্রত্যাবর্তিত দৃষ্টান্তটি ফাংশন কল জুড়ে পরিবর্তন না হওয়ার গ্যারান্টিযুক্ত, তবে পৃষ্ঠা লোড জুড়ে পরিবর্তিত হতে পারে। |
নিবন্ধিত (গাছ) | registerTree ব্যবহার করে নির্দিষ্ট গাছটি ইতিমধ্যেই এই ম্যানেজারে নিবন্ধিত হয়েছে এবং এখনও unregisterTree ব্যবহার করে নিবন্ধনমুক্ত করা হয়নি কিনা তা ফেরত দেয়। | |
registerTree(বৃক্ষ, rootShouldBeAutoTabbable) | স্বয়ংক্রিয় ফোকাস পরিচালনার জন্য একটি নতুন IFocusableTree নিবন্ধন করে। যদি গাছে বর্তমানে DOM ফোকাস সহ একটি উপাদান থাকে, তবে এটি এই ম্যানেজারের অভ্যন্তরীণ অবস্থাকে প্রভাবিত করবে না যতক্ষণ না ফোকাস একটি নতুন, এখন-নিরীক্ষণ করা উপাদান/নোডে পরিবর্তিত হয়। প্রদত্ত ট্রিটি বর্তমানে এই ম্যানেজারে নিবন্ধিত থাকলে এই ফাংশনটি নিক্ষেপ করে। যখন গাছটি নিবন্ধিত হয়েছে কিনা তা নিশ্চিত হতে পারে না এমন ক্ষেত্রে পরীক্ষা করতে isRegistered ব্যবহার করুন৷ স্বয়ংক্রিয় ট্যাব স্টপ কনফিগার করার জন্য গাছের নিবন্ধন কাস্টমাইজ করা যেতে পারে। এটি বিশেষভাবে ব্যবহারকারীকে গাছের মূলে ট্যাব নেভিগেট করতে সক্ষম হওয়ার ক্ষমতা প্রদান করে কিন্তু শুধুমাত্র যখন গাছটি সক্রিয় ফোকাস ধরে না রাখে। যদি এই কার্যকারিতা নিষ্ক্রিয় করা হয় তবে গাছের মূলটি স্বয়ংক্রিয়ভাবে ফোকাসযোগ্য হয়ে যাবে (কিন্তু ট্যাবেবল নয়) যখন এটি প্রথম ফোকাস করা হয় অন্য যেকোনো ফোকাসযোগ্য নোডের মতো। | |
টেক ইফেমেরাল ফোকাস (ফোকাসেবল এলিমেন্ট) | ক্ষণস্থায়ীভাবে একটি নির্দিষ্ট উপাদানের জন্য ফোকাস ক্যাপচার করে যতক্ষণ না ফেরত ল্যাম্বডা বলা হয়। এটি ডায়ালগের মতো ক্ষণস্থায়ী UI প্রবাহের জন্য বিশেষভাবে কার্যকর হবে বলে আশা করা হচ্ছে। গুরুত্বপূর্ণ: ফিরে আসা ল্যাম্বডা *অবশ্যই* কল করতে হবে, অন্যথায় স্বয়ংক্রিয় ফোকাস আর পৃষ্ঠার কোথাও কাজ করবে না। ল্যাম্বডা কলটিকে সংশ্লিষ্ট UI বন্ধ করার সাথে বেঁধে রাখার জন্য অত্যন্ত সুপারিশ করা হয় যাতে ইনপুটটি যদি ক্ষণস্থায়ী UI এর বাইরের কোনো উপাদানে ম্যানুয়ালি পরিবর্তন করা হয়, তাহলে UI বন্ধ হয়ে যায় এবং স্বয়ংক্রিয় ইনপুট পুনরুদ্ধার করা হয়। মনে রাখবেন যে এই ল্যাম্বডাকে অবশ্যই একবার কল করতে হবে এবং পরবর্তী কলগুলি একটি ত্রুটি নিক্ষেপ করবে৷ নোট করুন যে ম্যানেজার ক্ষণস্থায়ী ফোকাস সক্রিয় থাকা সত্ত্বেও DOM ইনপুট সংকেতগুলি ট্র্যাক করা চালিয়ে যাবে, তবে ফিরে আসা ল্যাম্বডাকে কল না করা পর্যন্ত এটি আসলে নোডের অবস্থা পরিবর্তন করবে না। অতিরিক্তভাবে, যে কোনো সময়ে শুধুমাত্র 1টি ক্ষণস্থায়ী ফোকাস প্রসঙ্গ সক্রিয় হতে পারে (একসঙ্গে একাধিক সক্রিয় করার প্রচেষ্টার ফলে একটি ত্রুটি নিক্ষেপ করা হবে)। | |
আনরেজিস্টার ট্রি(গাছ) | স্বয়ংক্রিয় ফোকাস ব্যবস্থাপনা থেকে একটি IFocusableTree নিবন্ধনমুক্ত করে। যদি গাছের একটি পূর্ববর্তী ফোকাসড নোড থাকে তবে এটির হাইলাইট মুছে ফেলা হবে। এই ফাংশনটি DOM ফোকাস পরিবর্তন করে না। প্রদত্ত ট্রিটি বর্তমানে এই ম্যানেজারে নিবন্ধিত না থাকলে এই ফাংশনটি নিক্ষেপ করে। যদি গাছটি স্বয়ংক্রিয় ট্যাব পরিচালনার সাথে নিবন্ধিত হয় তবে এই ফাংশনটি গাছের মূল উপাদান ট্যাবিনডেক্স পুনরায় সেট করবে। |