जावास्क्रिप्ट्
अस्माकं वैकल्पिकजावास्क्रिप्ट् प्लगिन्स् इत्यनेन सह Bootstrap इत्यस्य जीवनं आनयन्तु। प्रत्येकस्य प्लगिन्, अस्माकं आँकडानां तथा प्रोग्रामेटिक एपिआइ विकल्पानां विषये, इत्यादीनां विषये ज्ञातव्यम्।
व्यक्तिगतं वा संकलितं वा
प्लगिन् व्यक्तिगतरूपेण (Bootstrap इत्यस्य व्यक्तिगतस्य उपयोगेन js/dist/*.js
), अथवा सर्वे एकदा एव उपयुज्य bootstrap.js
वा लघुकृतं वा bootstrap.min.js
(उभयम् अपि न समाविष्टं) समाविष्टं कर्तुं शक्यते ।
यदि भवान् बण्डलर (Webpack, Rollup...) इत्यस्य उपयोगं करोति तर्हि भवान् तादृशानि /js/dist/*.js
सञ्चिकानि उपयोक्तुं शक्नोति ये UMD सज्जाः सन्ति ।
Bootstrap इत्यस्य उपयोगः मॉड्यूलरूपेण
वयं Bootstrap इत्यस्य एकं संस्करणं प्रदामः यत् ESM
( bootstrap.esm.js
तथा bootstrap.esm.min.js
) इति निर्मितं यत् भवन्तं भवतः ब्राउजर् मध्ये Bootstrap इत्यस्य उपयोगं मॉड्यूलरूपेण कर्तुं शक्नोति, यदि भवतः लक्षिताः ब्राउजर्-जनाः तत् समर्थयन्ति
<script type="module">
import { Toast } from 'bootstrap.esm.min.js'
Array.from(document.querySelectorAll('.toast'))
.forEach(toastNode => new Toast(toastNode))
</script>
असंगत प्लगइन्स
ब्राउजर् सीमानां कारणात् अस्माकं केचन प्लगिन्स्, यथा Dropdown, Tooltip तथा Popover प्लगिन्, प्रकारयुक्ते <script>
टैग् मध्ये उपयोक्तुं न शक्यन्ते module
यतोहि ते Popper इत्यस्य उपरि निर्भराः सन्ति । मुद्देः विषये अधिकाधिकं ज्ञातुं अत्र पश्यन्तु .
आश्रयाः
केचन प्लगिन्स् तथा CSS घटकाः अन्येषु प्लगिन्स् इत्यस्य उपरि निर्भराः सन्ति । यदि भवान् प्लगिन्स् व्यक्तिगतरूपेण समावेशयति तर्हि docs मध्ये एतानि आश्रयाणि अवश्यं पश्यतु ।
अस्माकं dropdowns, popovers तथा tooltips अपि Popper इत्यस्य उपरि निर्भरं भवति ।
अद्यापि jQuery इत्यस्य उपयोगं कर्तुम् इच्छति वा? सम्भवति !
Bootstrap 5 jQuery विना उपयोगाय डिजाइनं कृतम् अस्ति, परन्तु jQuery इत्यनेन सह अस्माकं घटकानां उपयोगः अद्यापि सम्भवः अस्ति । यदि Bootstrap वस्तुनि पश्यति jQuery
तर्हिwindow
jQuery इत्यस्य प्लगिन् प्रणाल्यां अस्माकं सर्वाणि घटकानि योजयिष्यति; अस्य अर्थः अस्ति यत् भवन्तः $('[data-bs-toggle="tooltip"]').tooltip()
टूल्टिप्स सक्षमीकरणाय कर्तुं शक्नुवन्ति । अस्माकं अन्येषां अवयवानां विषये अपि तथैव भवति ।
दत्तांशगुणाः
प्रायः सर्वाणि Bootstrap प्लगिन्स् केवलं HTML मार्गेण data attributes (JavaScript कार्यक्षमतायाः उपयोगस्य अस्माकं प्राधान्यमार्गः) सह सक्षमीकरणं विन्यस्तं च कर्तुं शक्यते । एकस्मिन् तत्त्वे केवलं एकस्य दत्तांशगुणसमूहस्य उपयोगं अवश्यं कुर्वन्तु (उदा., भवान् एकस्मात् बटन् तः टूल्टिप् तथा मोडल् ट्रिगर कर्तुं न शक्नोति ।)
चयनकर्तारः
सम्प्रति DOM तत्त्वानि पृच्छितुं वयं देशीयविधानानि उपयुञ्ज्महे querySelector
तथा querySelectorAll
च कार्यप्रदर्शनकारणात्, अतः भवद्भिः वैधचयनकर्तृणां उपयोगः कर्तव्यः अस्ति । यदि भवान् विशेषचयनकर्तृणां उपयोगं करोति, यथा: collapse:Example
तेभ्यः अवश्यं पलायनं कुर्वन्तु ।
घटनाः
बूटस्ट्रैप् अधिकांशस्य प्लगिन्स् इत्यस्य विशिष्टक्रियाणां कृते इष्टघटनानि प्रदाति । सामान्यतः ये अव्यय एवं भूतकाल में आते हैं - जहाँ अव्यय (ex. show
) किसी घटना के आरम्भ में प्रेरित होता है, तथा उसका भूतकालरूप (ex. shown
) किसी क्रिया के समाप्त होने पर प्रेरित होता है।
सर्वाणि अव्ययघटनानि preventDefault()
कार्यक्षमतां प्रददति। एतेन क्रियायाः आरम्भात् पूर्वं निष्पादनं निवारयितुं क्षमता प्राप्यते । इवेण्ट् हन्ड्लर इत्यस्मात् false इति प्रत्यागच्छन् स्वयमेव अपि आह्वयति preventDefault()
|
var myModal = document.getElementById('myModal')
myModal.addEventListener('show.bs.modal', function (event) {
if (!data) {
return event.preventDefault() // stops modal from being shown
}
})
jQuery घटनाएँ
Bootstrap jQuery ज्ञास्यति यदि वस्तुनि jQuery
वर्तते window
तथा च इत्यत्र कोऽपि data-bs-no-jquery
विशेषता सेट् नास्ति <body>
। यदि jQuery दृश्यते तर्हि Bootstrap jQuery इत्यस्य घटनाप्रणाल्याः धन्यवादेन घटनाः उत्सर्जयिष्यति । अतः यदि भवान् Bootstrap इत्यस्य इवेण्ट्स् श्रोतुम् इच्छति तर्हि भवद्भिः स्थाने jQuery मेथड् ( .on
, ) इत्यस्य उपयोगः करणीयः भविष्यति ।.one
addEventListener
$('#myTab a').on('shown.bs.tab', function () {
// do something...
})
प्रोग्रामेटिक एपीआई
सर्वे निर्मातारः वैकल्पिकं विकल्पवस्तुं वा किमपि न स्वीकुर्वन्ति (यत् पूर्वनिर्धारितव्यवहारेन सह प्लगिन् आरभते):
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"]')
अतुल्यकालिक कार्य एवं संक्रमण
सर्वे प्रोग्रामेटिक एपिआइ मेथड् एसिंक्रोन्स् भवन्ति तथा च एकवारं संक्रमणस्य आरम्भं कृत्वा परन्तु तस्य समाप्तेः पूर्वं आह्वानकर्त्रे प्रत्यागच्छन्ति |
एकवारं संक्रमणं सम्पन्नं जातं चेत् क्रियायाः निष्पादनार्थं भवन्तः तत्सम्बद्धं घटनां श्रोतुं शक्नुवन्ति ।
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 frameworks इत्यनेन सह Bootstrap plugins इत्यस्य उपयोगः आवश्यकः भवति । एतेषु परिस्थितिषु नामस्थानस्य टकरावः यदा कदा भवितुं शक्नुवन्ति । यदि एतत् भवति तर्हि भवान् .noConflict
यस्य प्लगिन् इत्यस्य मूल्यं पुनः प्रत्यागन्तुं इच्छति तत् आह्वयितुं शक्नोति ।
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
संस्करण संख्याएँ
VERSION
Bootstrap इत्यस्य प्रत्येकस्य प्लगिन् इत्यस्य संस्करणं प्लगिन् इत्यस्य कन्स्ट्रक्टर् इत्यस्य गुणद्वारा अभिगन्तुं शक्यते । यथा, टूल्टिप् प्लगिन् कृते :
bootstrap.Tooltip.VERSION // => "5.1.3"
जावास्क्रिप्ट् अक्षमीकरणे विशेषः फॉलबैक् नास्ति
बूटस्ट्रैप् इत्यस्य प्लगिन्स् विशेषतया ललितरूपेण न पतन्ति यदा जावास्क्रिप्ट् अक्षमम् अस्ति । यदि भवान् अस्मिन् सन्दर्भे उपयोक्तृअनुभवस्य चिन्तां करोति तर्हि <noscript>
स्थितिं व्याख्यातुं (तथा च जावास्क्रिप्ट् कथं पुनः सक्षमीकरणीयम्) स्वप्रयोक्तृभ्यः, तथा/वा स्वकीयानि कस्टम् फॉलबैक् योजयितुं उपयुज्यताम्
तृतीयपक्षीयपुस्तकालयाः
बूटस्ट्रैप् आधिकारिकतया तृतीयपक्षस्य जावास्क्रिप्ट् पुस्तकालयानाम् समर्थनं न करोति यथा Prototype अथवा jQuery UI । अपि .noConflict
च नामान्तरितघटनानां, संगततासमस्याः भवितुम् अर्हन्ति येषां समाधानं भवद्भिः स्वयमेव करणीयम् ।
सेनेटाइजर
Tooltips तथा Popovers अस्माकं अन्तर्निर्मित-सेनेटाइजरस्य उपयोगं कुर्वन्ति विकल्पान् सेनिटाइज् कर्तुं ये 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)
}
})