জাভাস্ক্রিপ্ট
আমাদের ঐচ্ছিক জাভাস্ক্রিপ্ট প্লাগইনগুলির সাথে বুটস্ট্র্যাপকে প্রাণবন্ত করে তুলুন৷ প্রতিটি প্লাগইন, আমাদের ডেটা এবং প্রোগ্রাম্যাটিক API বিকল্প এবং আরও অনেক কিছু সম্পর্কে জানুন।
স্বতন্ত্র বা সংকলিত
প্লাগইনগুলি পৃথকভাবে অন্তর্ভুক্ত করা যেতে পারে (বুটস্ট্র্যাপের ব্যক্তিগত ব্যবহার করে js/dist/*.js
), বা সবগুলি একবারে ব্যবহার করে bootstrap.js
বা ছোট করা bootstrap.min.js
(উভয়টি অন্তর্ভুক্ত করবেন না)।
আপনি যদি একটি বান্ডলার ব্যবহার করেন (ওয়েবপ্যাক, রোলআপ…), আপনি /js/dist/*.js
ফাইলগুলি ব্যবহার করতে পারেন যা ইউএমডি প্রস্তুত।
একটি মডিউল হিসাবে বুটস্ট্র্যাপ ব্যবহার করে
ESM
আমরা ( bootstrap.esm.js
এবং ) হিসাবে নির্মিত বুটস্ট্র্যাপের একটি সংস্করণ সরবরাহ করি bootstrap.esm.min.js
যা আপনাকে আপনার ব্রাউজারে একটি মডিউল হিসাবে বুটস্ট্র্যাপ ব্যবহার করতে দেয়, যদি আপনার লক্ষ্যযুক্ত ব্রাউজারগুলি এটি সমর্থন করে ।
<script type="module">
import { Toast } from 'bootstrap.esm.min.js'
Array.from(document.querySelectorAll('.toast'))
.forEach(toastNode => new Toast(toastNode))
</script>
বেমানান প্লাগইন
ব্রাউজারের সীমাবদ্ধতার কারণে, আমাদের কিছু প্লাগইন, যেমন ড্রপডাউন, টুলটিপ এবং পপওভার প্লাগইন, টাইপ <script>
সহ ট্যাগে ব্যবহার করা যাবে না module
কারণ তারা পপারের উপর নির্ভর করে। সমস্যা সম্পর্কে আরও তথ্যের জন্য এখানে দেখুন .
নির্ভরতা
কিছু প্লাগইন এবং CSS উপাদান অন্যান্য প্লাগইনের উপর নির্ভর করে। আপনি যদি পৃথকভাবে প্লাগইনগুলি অন্তর্ভুক্ত করেন, তাহলে ডক্সে এই নির্ভরতাগুলি পরীক্ষা করা নিশ্চিত করুন৷
আমাদের ড্রপডাউন, পপোভার এবং টুলটিপগুলিও পপারের উপর নির্ভর করে ।
এখনও jQuery ব্যবহার করতে চান? এটা সম্ভব!
বুটস্ট্র্যাপ 5 jQuery ছাড়া ব্যবহার করার জন্য ডিজাইন করা হয়েছে, তবে jQuery এর সাথে আমাদের উপাদানগুলি ব্যবহার করা এখনও সম্ভব। যদি বুটস্ট্র্যাপ বস্তুর jQuery
মধ্যেwindow
সনাক্ত করে তবে এটি jQuery এর প্লাগইন সিস্টেমে আমাদের সমস্ত উপাদান যুক্ত করবে; $('[data-bs-toggle="tooltip"]').tooltip()
এর মানে আপনি টুলটিপ সক্রিয় করতে পারবেন । একই আমাদের অন্যান্য উপাদান জন্য যায়.
ডেটা বৈশিষ্ট্য
প্রায় সব বুটস্ট্র্যাপ প্লাগইন শুধুমাত্র এইচটিএমএল-এর মাধ্যমে ডেটা অ্যাট্রিবিউট (জাভাস্ক্রিপ্ট কার্যকারিতা ব্যবহার করার আমাদের পছন্দের উপায়) দিয়ে সক্ষম এবং কনফিগার করা যেতে পারে। একটি একক উপাদানে শুধুমাত্র এক সেট ডেটা অ্যাট্রিবিউট ব্যবহার করতে ভুলবেন না (যেমন, আপনি একই বোতাম থেকে টুলটিপ এবং মডেল ট্রিগার করতে পারবেন না।)
নির্বাচক
বর্তমানে DOM উপাদানগুলি জিজ্ঞাসা করার জন্য আমরা নেটিভ পদ্ধতি querySelector
এবং querySelectorAll
কার্যকারিতার কারণে ব্যবহার করি, তাই আপনাকে বৈধ নির্বাচক ব্যবহার করতে হবে । আপনি যদি বিশেষ নির্বাচক ব্যবহার করেন, উদাহরণস্বরূপ: collapse:Example
তাদের এড়িয়ে যেতে ভুলবেন না।
ঘটনা
বুটস্ট্র্যাপ বেশিরভাগ প্লাগইনের অনন্য কর্মের জন্য কাস্টম ইভেন্ট প্রদান করে। সাধারনত, এগুলি একটি অসীম এবং অতীত পার্টিসিপল ফর্মে আসে - যেখানে show
একটি ইভেন্টের শুরুতে ইনফিনিটিভ (উদাহরণস্বরূপ ) shown
ট্রিগার হয় এবং একটি ক্রিয়া শেষ হওয়ার পরে এর অতীত পার্টিসিপল ফর্ম (প্রাক্তন) ট্রিগার হয়।
সমস্ত অসীম ইভেন্ট preventDefault()
কার্যকারিতা প্রদান করে। এটি শুরু হওয়ার আগে একটি ক্রিয়া সম্পাদন বন্ধ করার ক্ষমতা প্রদান করে। একটি ইভেন্ট হ্যান্ডলার থেকে মিথ্যা রিটার্ন করা স্বয়ংক্রিয়ভাবে কল করবে preventDefault()
।
var myModal = document.getElementById('myModal')
myModal.addEventListener('show.bs.modal', function (event) {
if (!data) {
return event.preventDefault() // stops modal from being shown
}
})
jQuery ইভেন্ট
বুটস্ট্র্যাপ jQuery সনাক্ত করবে যদি অবজেক্টে jQuery
উপস্থিত থাকে window
এবং কোন data-bs-no-jquery
অ্যাট্রিবিউট সেট না থাকে <body>
। jQuery পাওয়া গেলে, বুটস্ট্র্যাপ ইভেন্ট নির্গত করবে jQuery এর ইভেন্ট সিস্টেমের জন্য ধন্যবাদ। সুতরাং আপনি যদি বুটস্ট্র্যাপের ইভেন্টগুলি শুনতে চান তবে আপনাকে jQuery পদ্ধতিগুলি ( .on
, .one
) এর পরিবর্তে ব্যবহার করতে হবে addEventListener
।
$('#myTab a').on('shown.bs.tab', function () {
// do something...
})
প্রোগ্রাম্যাটিক API
সমস্ত কনস্ট্রাক্টর একটি ঐচ্ছিক বিকল্প বস্তু বা কিছুই গ্রহণ করে (যা তার ডিফল্ট আচরণ সহ একটি প্লাগইন শুরু করে):
var myModalEl = document.getElementById('myModal')
var modal = new bootstrap.Modal(myModalEl) // initialized with defaults
var modal = new bootstrap.Modal(myModalEl, { keyboard: false }) // initialized with no keyboard
আপনি যদি একটি নির্দিষ্ট প্লাগইন উদাহরণ পেতে চান, প্রতিটি প্লাগইন একটি getInstance
পদ্ধতি প্রকাশ করে। একটি উপাদান থেকে সরাসরি এটি পুনরুদ্ধার করার জন্য, এটি করুন: bootstrap.Popover.getInstance(myPopoverEl)
.
কনস্ট্রাক্টরদের মধ্যে CSS নির্বাচক
প্লাগইন শুরু করার জন্য আপনি একটি DOM উপাদানের পরিবর্তে প্রথম যুক্তি হিসাবে একটি CSS নির্বাচক ব্যবহার করতে পারেন। বর্তমানে প্লাগইনটির জন্য উপাদানটি querySelector
পদ্ধতি দ্বারা পাওয়া যায় যেহেতু আমাদের প্লাগইনগুলি শুধুমাত্র একটি উপাদানকে সমর্থন করে।
var modal = new bootstrap.Modal('#myModal')
var dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')
অ্যাসিঙ্ক্রোনাস ফাংশন এবং ট্রানজিশন
সমস্ত প্রোগ্রামেটিক API পদ্ধতিগুলি অ্যাসিঙ্ক্রোনাস এবং একবার রূপান্তর শুরু হয়ে গেলেও এটি শেষ হওয়ার আগেই কলারের কাছে ফিরে আসে ।
একবার ট্রানজিশন সম্পূর্ণ হলে একটি অ্যাকশন চালানোর জন্য, আপনি সংশ্লিষ্ট ইভেন্টটি শুনতে পারেন।
var myCollapseEl = document.getElementById('myCollapse')
myCollapseEl.addEventListener('shown.bs.collapse', function (event) {
// Action to execute once the collapsible area is expanded
})
উপরন্তু একটি রূপান্তরকারী উপাদানের উপর একটি পদ্ধতি কল উপেক্ষা করা হবে ।
var myCarouselEl = document.getElementById('myCarousel')
var carousel = bootstrap.Carousel.getInstance(myCarouselEl) // Retrieve a Carousel instance
myCarouselEl.addEventListener('slid.bs.carousel', function (event) {
carousel.to('2') // Will slide to the slide 2 as soon as the transition to slide 1 is finished
})
carousel.to('1') // Will start sliding to the slide 1 and returns to the caller
carousel.to('2') // !! Will be ignored, as the transition to the slide 1 is not finished !!
ডিফল্ট সেটিংস
Constructor.Default
আপনি প্লাগইনের অবজেক্ট পরিবর্তন করে একটি প্লাগইনের জন্য ডিফল্ট সেটিংস পরিবর্তন করতে পারেন :
// changes default for the modal plugin's `keyboard` option to false
bootstrap.Modal.Default.keyboard = false
কোন বিরোধ নেই (শুধুমাত্র যদি আপনি jQuery ব্যবহার করেন)
কখনও কখনও অন্যান্য UI ফ্রেমওয়ার্কের সাথে বুটস্ট্র্যাপ প্লাগইনগুলি ব্যবহার করা প্রয়োজন। এই পরিস্থিতিতে, নামস্থানের সংঘর্ষ মাঝে মাঝে ঘটতে পারে। যদি এটি ঘটে, আপনি .noConflict
যে প্লাগইনটির মান ফিরিয়ে আনতে চান সেটিকে কল করতে পারেন।
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
সংস্করণ সংখ্যা
বুটস্ট্র্যাপের প্রতিটি প্লাগইনের সংস্করণ VERSION
প্লাগইন কনস্ট্রাক্টরের সম্পত্তির মাধ্যমে অ্যাক্সেস করা যেতে পারে। উদাহরণস্বরূপ, টুলটিপ প্লাগইনের জন্য:
bootstrap.Tooltip.VERSION // => "5.1.3"
জাভাস্ক্রিপ্ট নিষ্ক্রিয় থাকলে কোন বিশেষ ফলব্যাক নেই
বুটস্ট্র্যাপের প্লাগইনগুলি জাভাস্ক্রিপ্ট অক্ষম করা হলে বিশেষভাবে সুন্দরভাবে ফিরে আসে না। আপনি যদি এই ক্ষেত্রে ব্যবহারকারীর অভিজ্ঞতার বিষয়ে যত্নশীল হন, তাহলে আপনার ব্যবহারকারীদের <noscript>
পরিস্থিতি ব্যাখ্যা করতে (এবং কীভাবে জাভাস্ক্রিপ্ট পুনরায় সক্ষম করবেন) ব্যবহার করুন এবং/অথবা আপনার নিজস্ব কাস্টম ফলব্যাক যোগ করুন।
তৃতীয় পক্ষের লাইব্রেরি
বুটস্ট্র্যাপ আনুষ্ঠানিকভাবে প্রোটোটাইপ বা jQuery UI এর মতো তৃতীয় পক্ষের জাভাস্ক্রিপ্ট লাইব্রেরি সমর্থন করে না । ইভেন্ট এবং নেমস্পেস থাকা সত্ত্বেও .noConflict
, সামঞ্জস্যপূর্ণ সমস্যা থাকতে পারে যা আপনাকে নিজেরাই ঠিক করতে হবে।
স্যানিটাইজার
টুলটিপস এবং পপোভারস আমাদের অন্তর্নির্মিত স্যানিটাইজার ব্যবহার করে বিকল্পগুলিকে স্যানিটাইজ করতে যা HTML গ্রহণ করে।
ডিফল্ট allowList
মান নিম্নরূপ:
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultAllowlist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
}
আপনি যদি এই ডিফল্টে নতুন মান যোগ করতে চান তবে আপনি allowList
নিম্নলিখিতগুলি করতে পারেন:
var myDefaultAllowList = bootstrap.Tooltip.Default.allowList
// To allow table elements
myDefaultAllowList.table = []
// To allow td elements and data-bs-option attributes on td elements
myDefaultAllowList.td = ['data-bs-option']
// You can push your custom regex to validate your attributes.
// Be careful about your regular expressions being too lax
var myCustomRegex = /^data-my-app-[\w-]+/
myDefaultAllowList['*'].push(myCustomRegex)
আপনি যদি আমাদের স্যানিটাইজার বাইপাস করতে চান কারণ আপনি একটি ডেডিকেটেড লাইব্রেরি ব্যবহার করতে পছন্দ করেন, উদাহরণস্বরূপ DOMPurify , তাহলে আপনাকে নিম্নলিখিতগুলি করতে হবে:
var yourTooltipEl = document.getElementById('yourTooltip')
var tooltip = new bootstrap.Tooltip(yourTooltipEl, {
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
})