मुख्य सामग्री पर जाएँ docs नेविगेशनं प्रति गच्छतु
in English

जावास्क्रिप्ट्

अस्माकं वैकल्पिकजावास्क्रिप्ट् प्लगिन्स् इत्यनेन सह 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, ) इत्यस्य उपयोगः करणीयः भविष्यति ।.oneaddEventListener

$('#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

संस्करण संख्याएँ

VERSIONBootstrap इत्यस्य प्रत्येकस्य प्लगिन् इत्यस्य संस्करणं प्लगिन् इत्यस्य कन्स्ट्रक्टर् इत्यस्य गुणद्वारा अभिगन्तुं शक्यते । यथा, टूल्टिप् प्लगिन् कृते :

bootstrap.Tooltip.VERSION // => "5.0.2"

जावास्क्रिप्ट् अक्षमीकरणे विशेषः फॉलबैक् नास्ति

जावास्क्रिप्ट् अक्षमीकरणसमये बूटस्ट्रैप् इत्यस्य प्लगिन्स् विशेषतया ललितरूपेण न पतन्ति । यदि भवान् अस्मिन् सन्दर्भे उपयोक्तृ-अनुभवस्य चिन्तां करोति तर्हि स्वप्रयोक्तृभ्यः <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)
  }
})