@coreui/coreui 4.1.4 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/README.md +64 -11
- package/dist/css/bootstrap-reboot.css +488 -0
- package/dist/css/bootstrap-reboot.css.map +1 -0
- package/dist/css/bootstrap-reboot.min.css +8 -0
- package/dist/css/bootstrap-reboot.min.css.map +1 -0
- package/dist/css/coreui-grid.css +23 -949
- package/dist/css/coreui-grid.css.map +1 -1
- package/dist/css/coreui-grid.min.css +3 -3
- package/dist/css/coreui-grid.min.css.map +1 -1
- package/dist/css/coreui-grid.rtl.css +25 -951
- package/dist/css/coreui-grid.rtl.css.map +1 -1
- package/dist/css/coreui-grid.rtl.min.css +5 -5
- package/dist/css/coreui-grid.rtl.min.css.map +1 -1
- package/dist/css/coreui-reboot.css +35 -42
- package/dist/css/coreui-reboot.css.map +1 -1
- package/dist/css/coreui-reboot.min.css +3 -3
- package/dist/css/coreui-reboot.min.css.map +1 -1
- package/dist/css/coreui-reboot.rtl.css +36 -44
- package/dist/css/coreui-reboot.rtl.css.map +1 -1
- package/dist/css/coreui-reboot.rtl.min.css +5 -5
- package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
- package/dist/css/coreui-utilities.css +279 -951
- package/dist/css/coreui-utilities.css.map +1 -1
- package/dist/css/coreui-utilities.min.css +3 -3
- package/dist/css/coreui-utilities.min.css.map +1 -1
- package/dist/css/coreui-utilities.rtl.css +275 -953
- package/dist/css/coreui-utilities.rtl.css.map +1 -1
- package/dist/css/coreui-utilities.rtl.min.css +5 -5
- package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
- package/dist/css/coreui.css +2203 -2295
- package/dist/css/coreui.css.map +1 -1
- package/dist/css/coreui.min.css +3 -3
- package/dist/css/coreui.min.css.map +1 -1
- package/dist/css/coreui.rtl.css +2190 -2289
- package/dist/css/coreui.rtl.css.map +1 -1
- package/dist/css/coreui.rtl.min.css +5 -5
- package/dist/css/coreui.rtl.min.css.map +1 -1
- package/dist/js/coreui.bundle.js +2101 -1908
- package/dist/js/coreui.bundle.js.map +1 -1
- package/dist/js/coreui.bundle.min.js +2 -2
- package/dist/js/coreui.bundle.min.js.map +1 -1
- package/dist/js/coreui.esm.js +2098 -1909
- package/dist/js/coreui.esm.js.map +1 -1
- package/dist/js/coreui.esm.min.js +2 -2
- package/dist/js/coreui.esm.min.js.map +1 -1
- package/dist/js/coreui.js +2099 -1910
- package/dist/js/coreui.js.map +1 -1
- package/dist/js/coreui.min.js +2 -2
- package/dist/js/coreui.min.js.map +1 -1
- package/js/dist/alert.js +10 -148
- package/js/dist/alert.js.map +1 -1
- package/js/dist/base-component.js +36 -122
- package/js/dist/base-component.js.map +1 -1
- package/js/dist/button.js +9 -76
- package/js/dist/button.js.map +1 -1
- package/js/dist/carousel.js +212 -507
- package/js/dist/carousel.js.map +1 -1
- package/js/dist/collapse.js +64 -251
- package/js/dist/collapse.js.map +1 -1
- package/js/dist/dom/data.js +2 -4
- package/js/dist/dom/data.js.map +1 -1
- package/js/dist/dom/event-handler.js +82 -133
- package/js/dist/dom/event-handler.js.map +1 -1
- package/js/dist/dom/manipulator.js +22 -26
- package/js/dist/dom/manipulator.js.map +1 -1
- package/js/dist/dom/selector-engine.js +16 -81
- package/js/dist/dom/selector-engine.js.map +1 -1
- package/js/dist/dropdown.js +99 -338
- package/js/dist/dropdown.js.map +1 -1
- package/js/dist/modal.js +106 -774
- package/js/dist/modal.js.map +1 -1
- package/js/dist/navigation.js +309 -0
- package/js/dist/navigation.js.map +1 -0
- package/js/dist/offcanvas.js +88 -680
- package/js/dist/offcanvas.js.map +1 -1
- package/js/dist/popover.js +35 -120
- package/js/dist/popover.js.map +1 -1
- package/js/dist/scrollspy.js +178 -264
- package/js/dist/scrollspy.js.map +1 -1
- package/js/dist/sidebar.js +347 -0
- package/js/dist/sidebar.js.map +1 -0
- package/js/dist/tab.js +226 -216
- package/js/dist/tab.js.map +1 -1
- package/js/dist/toast.js +27 -216
- package/js/dist/toast.js.map +1 -1
- package/js/dist/tooltip.js +271 -618
- package/js/dist/tooltip.js.map +1 -1
- package/js/dist/util/backdrop.js +166 -0
- package/js/dist/util/backdrop.js.map +1 -0
- package/js/dist/util/component-functions.js +47 -0
- package/js/dist/util/component-functions.js.map +1 -0
- package/js/dist/util/config.js +80 -0
- package/js/dist/util/config.js.map +1 -0
- package/js/dist/util/focustrap.js +130 -0
- package/js/dist/util/focustrap.js.map +1 -0
- package/js/dist/util/index.js +354 -0
- package/js/dist/util/index.js.map +1 -0
- package/js/dist/util/sanitizer.js +126 -0
- package/js/dist/util/sanitizer.js.map +1 -0
- package/js/dist/util/scrollbar.js +139 -0
- package/js/dist/util/scrollbar.js.map +1 -0
- package/js/dist/util/swipe.js +156 -0
- package/js/dist/util/swipe.js.map +1 -0
- package/js/dist/util/template-factory.js +178 -0
- package/js/dist/util/template-factory.js.map +1 -0
- package/js/src/alert.js +3 -15
- package/js/src/base-component.js +28 -18
- package/js/src/button.js +3 -15
- package/js/src/carousel.js +203 -320
- package/js/src/collapse.js +61 -94
- package/js/src/dom/data.js +1 -3
- package/js/src/dom/event-handler.js +74 -107
- package/js/src/dom/manipulator.js +22 -31
- package/js/src/dom/selector-engine.js +10 -19
- package/js/src/dropdown.js +84 -138
- package/js/src/modal.js +94 -158
- package/js/src/navigation.js +12 -13
- package/js/src/offcanvas.js +71 -60
- package/js/src/popover.js +31 -62
- package/js/src/scrollspy.js +166 -171
- package/js/src/sidebar.js +5 -8
- package/js/src/tab.js +201 -110
- package/js/src/toast.js +19 -41
- package/js/src/tooltip.js +264 -374
- package/js/src/util/backdrop.js +55 -36
- package/js/src/util/component-functions.js +1 -1
- package/js/src/util/config.js +66 -0
- package/js/src/util/focustrap.js +38 -28
- package/js/src/util/index.js +41 -57
- package/js/src/util/sanitizer.js +9 -17
- package/js/src/util/scrollbar.js +47 -30
- package/js/src/util/swipe.js +146 -0
- package/js/src/util/template-factory.js +160 -0
- package/package.json +40 -40
- package/scss/_accordion.scss +53 -25
- package/scss/_alert.scss +29 -9
- package/scss/_badge.scss +15 -6
- package/scss/_breadcrumb.scss +23 -11
- package/scss/_button-group.scss +3 -0
- package/scss/_buttons.scss +71 -50
- package/scss/_callout.scss +18 -6
- package/scss/_card.scss +55 -37
- package/scss/_carousel.scss +6 -6
- package/scss/_close.scss +4 -4
- package/scss/_containers.scss +1 -1
- package/scss/_dropdown.scss +86 -64
- package/scss/_footer.scss +15 -5
- package/scss/_functions.scss +11 -24
- package/scss/_grid.scss +3 -3
- package/scss/_header.scss +59 -34
- package/scss/_helpers.scss +1 -0
- package/scss/_images.scss +3 -3
- package/scss/_list-group.scss +47 -29
- package/scss/_maps.scss +54 -0
- package/scss/_modal.scss +70 -43
- package/scss/_nav.scss +53 -20
- package/scss/_navbar.scss +84 -94
- package/scss/_offcanvas.scss +120 -60
- package/scss/_pagination.scss +66 -21
- package/scss/_popover.scss +90 -52
- package/scss/_progress.scss +20 -9
- package/scss/_reboot.scss +31 -58
- package/scss/_root.scss +41 -21
- package/scss/_spinners.scss +37 -21
- package/scss/_subheader.scss +9 -9
- package/scss/_tables.scss +34 -36
- package/scss/_toasts.scss +35 -19
- package/scss/_tooltip.scss +61 -56
- package/scss/_utilities.scss +42 -27
- package/scss/_variables.scss +169 -148
- package/scss/bootstrap-reboot.scss +14 -0
- package/scss/coreui-grid.rtl.scss +2 -2
- package/scss/coreui-grid.scss +3 -2
- package/scss/coreui-reboot.rtl.scss +2 -2
- package/scss/coreui-reboot.scss +2 -2
- package/scss/coreui-utilities.rtl.scss +2 -2
- package/scss/coreui-utilities.scss +3 -2
- package/scss/coreui.rtl.scss +2 -2
- package/scss/coreui.scss +3 -2
- package/scss/forms/_floating-labels.scss +14 -3
- package/scss/forms/_form-check.scss +42 -19
- package/scss/forms/_form-control.scss +25 -50
- package/scss/forms/_form-range.scss +8 -8
- package/scss/forms/_form-select.scss +8 -8
- package/scss/forms/_form-text.scss +1 -1
- package/scss/forms/_input-group.scss +3 -3
- package/scss/forms/_labels.scss +2 -2
- package/scss/helpers/_color-bg.scss +10 -0
- package/scss/helpers/_colored-links.scss +2 -2
- package/scss/helpers/_position.scss +7 -1
- package/scss/helpers/_ratio.scss +2 -2
- package/scss/helpers/_vr.scss +1 -0
- package/scss/mixins/_alert.scss +10 -10
- package/scss/mixins/_breakpoints.scss +8 -8
- package/scss/mixins/_buttons.scss +45 -47
- package/scss/mixins/_container.scss +4 -2
- package/scss/mixins/_css-vars.scss +47 -47
- package/scss/mixins/_forms.scss +10 -2
- package/scss/mixins/_gradients.scss +1 -1
- package/scss/mixins/_grid.scss +11 -11
- package/scss/mixins/_list-group.scss +7 -9
- package/scss/mixins/_pagination.scss +4 -25
- package/scss/mixins/_table-variants.scss +20 -12
- package/scss/mixins/_utilities.scss +8 -3
- package/scss/sidebar/_sidebar-narrow.scss +10 -10
- package/scss/sidebar/_sidebar-nav.scss +33 -32
- package/scss/sidebar/_sidebar.scss +110 -56
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitizer.js","sources":["../../src/util/sanitizer.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI (v4.2.0): alert.js\n * Licensed under MIT (https://coreui.io/license)\n *\n * This component is a modified version of the Bootstrap's util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n"],"names":["uriAttributes","Set","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","toLowerCase","includes","has","Boolean","test","nodeValue","filter","attributeRegex","RegExp","some","regex","DefaultAllowlist","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","i","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","length","domParser","window","DOMParser","createdDocument","parseFromString","elements","concat","body","querySelectorAll","element","elementName","Object","keys","remove","attributeList","attributes","allowedAttributes","removeAttribute","innerHTML"],"mappings":";;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,MAAMA,aAAa,GAAG,IAAIC,GAAJ,CAAQ,CAC5B,YAD4B,EAE5B,MAF4B,EAG5B,MAH4B,EAI5B,UAJ4B,EAK5B,UAL4B,EAM5B,QAN4B,EAO5B,KAP4B,EAQ5B,YAR4B,CAAR,CAAtB,CAAA;EAWA,MAAMC,sBAAsB,GAAG,gBAA/B,CAAA;EAEA;EACA;EACA;EACA;EACA;;EACA,MAAMC,gBAAgB,GAAG,gEAAzB,CAAA;EAEA;EACA;EACA;EACA;EACA;;EACA,MAAMC,gBAAgB,GAAG,oIAAzB,CAAA;;EAEA,MAAMC,gBAAgB,GAAG,CAACC,SAAD,EAAYC,oBAAZ,KAAqC;EAC5D,EAAA,MAAMC,aAAa,GAAGF,SAAS,CAACG,QAAV,CAAmBC,WAAnB,EAAtB,CAAA;;EAEA,EAAA,IAAIH,oBAAoB,CAACI,QAArB,CAA8BH,aAA9B,CAAJ,EAAkD;EAChD,IAAA,IAAIR,aAAa,CAACY,GAAd,CAAkBJ,aAAlB,CAAJ,EAAsC;EACpC,MAAA,OAAOK,OAAO,CAACV,gBAAgB,CAACW,IAAjB,CAAsBR,SAAS,CAACS,SAAhC,CAA8CX,IAAAA,gBAAgB,CAACU,IAAjB,CAAsBR,SAAS,CAACS,SAAhC,CAA/C,CAAd,CAAA;EACD,KAAA;;EAED,IAAA,OAAO,IAAP,CAAA;EACD,GAT2D;;;IAY5D,OAAOR,oBAAoB,CAACS,MAArB,CAA4BC,cAAc,IAAIA,cAAc,YAAYC,MAAxE,CAAA,CACJC,IADI,CACCC,KAAK,IAAIA,KAAK,CAACN,IAAN,CAAWN,aAAX,CADV,CAAP,CAAA;EAED,CAdD,CAAA;;AAgBO,QAAMa,gBAAgB,GAAG;EAC9B;EACA,EAAA,GAAA,EAAK,CAAC,OAAD,EAAU,KAAV,EAAiB,IAAjB,EAAuB,MAAvB,EAA+B,MAA/B,EAAuCnB,sBAAvC,CAFyB;IAG9BoB,CAAC,EAAE,CAAC,QAAD,EAAW,MAAX,EAAmB,OAAnB,EAA4B,KAA5B,CAH2B;EAI9BC,EAAAA,IAAI,EAAE,EAJwB;EAK9BC,EAAAA,CAAC,EAAE,EAL2B;EAM9BC,EAAAA,EAAE,EAAE,EAN0B;EAO9BC,EAAAA,GAAG,EAAE,EAPyB;EAQ9BC,EAAAA,IAAI,EAAE,EARwB;EAS9BC,EAAAA,GAAG,EAAE,EATyB;EAU9BC,EAAAA,EAAE,EAAE,EAV0B;EAW9BC,EAAAA,EAAE,EAAE,EAX0B;EAY9BC,EAAAA,EAAE,EAAE,EAZ0B;EAa9BC,EAAAA,EAAE,EAAE,EAb0B;EAc9BC,EAAAA,EAAE,EAAE,EAd0B;EAe9BC,EAAAA,EAAE,EAAE,EAf0B;EAgB9BC,EAAAA,EAAE,EAAE,EAhB0B;EAiB9BC,EAAAA,EAAE,EAAE,EAjB0B;EAkB9BC,EAAAA,CAAC,EAAE,EAlB2B;EAmB9BC,EAAAA,GAAG,EAAE,CAAC,KAAD,EAAQ,QAAR,EAAkB,KAAlB,EAAyB,OAAzB,EAAkC,OAAlC,EAA2C,QAA3C,CAnByB;EAoB9BC,EAAAA,EAAE,EAAE,EApB0B;EAqB9BC,EAAAA,EAAE,EAAE,EArB0B;EAsB9BC,EAAAA,CAAC,EAAE,EAtB2B;EAuB9BC,EAAAA,GAAG,EAAE,EAvByB;EAwB9BC,EAAAA,CAAC,EAAE,EAxB2B;EAyB9BC,EAAAA,KAAK,EAAE,EAzBuB;EA0B9BC,EAAAA,IAAI,EAAE,EA1BwB;EA2B9BC,EAAAA,GAAG,EAAE,EA3ByB;EA4B9BC,EAAAA,GAAG,EAAE,EA5ByB;EA6B9BC,EAAAA,MAAM,EAAE,EA7BsB;EA8B9BC,EAAAA,CAAC,EAAE,EA9B2B;EA+B9BC,EAAAA,EAAE,EAAE,EAAA;EA/B0B,EAAzB;EAkCA,SAASC,YAAT,CAAsBC,UAAtB,EAAkCC,SAAlC,EAA6CC,gBAA7C,EAA+D;EACpE,EAAA,IAAI,CAACF,UAAU,CAACG,MAAhB,EAAwB;EACtB,IAAA,OAAOH,UAAP,CAAA;EACD,GAAA;;EAED,EAAA,IAAIE,gBAAgB,IAAI,OAAOA,gBAAP,KAA4B,UAApD,EAAgE;MAC9D,OAAOA,gBAAgB,CAACF,UAAD,CAAvB,CAAA;EACD,GAAA;;EAED,EAAA,MAAMI,SAAS,GAAG,IAAIC,MAAM,CAACC,SAAX,EAAlB,CAAA;IACA,MAAMC,eAAe,GAAGH,SAAS,CAACI,eAAV,CAA0BR,UAA1B,EAAsC,WAAtC,CAAxB,CAAA;EACA,EAAA,MAAMS,QAAQ,GAAG,EAAGC,CAAAA,MAAH,CAAU,GAAGH,eAAe,CAACI,IAAhB,CAAqBC,gBAArB,CAAsC,GAAtC,CAAb,CAAjB,CAAA;;EAEA,EAAA,KAAK,MAAMC,OAAX,IAAsBJ,QAAtB,EAAgC;EAC9B,IAAA,MAAMK,WAAW,GAAGD,OAAO,CAACxD,QAAR,CAAiBC,WAAjB,EAApB,CAAA;;MAEA,IAAI,CAACyD,MAAM,CAACC,IAAP,CAAYf,SAAZ,CAAA,CAAuB1C,QAAvB,CAAgCuD,WAAhC,CAAL,EAAmD;EACjDD,MAAAA,OAAO,CAACI,MAAR,EAAA,CAAA;EAEA,MAAA,SAAA;EACD,KAAA;;MAED,MAAMC,aAAa,GAAG,EAAGR,CAAAA,MAAH,CAAU,GAAGG,OAAO,CAACM,UAArB,CAAtB,CAAA;EACA,IAAA,MAAMC,iBAAiB,GAAG,EAAA,CAAGV,MAAH,CAAUT,SAAS,CAAC,GAAD,CAAT,IAAkB,EAA5B,EAAgCA,SAAS,CAACa,WAAD,CAAT,IAA0B,EAA1D,CAA1B,CAAA;;EAEA,IAAA,KAAK,MAAM5D,SAAX,IAAwBgE,aAAxB,EAAuC;EACrC,MAAA,IAAI,CAACjE,gBAAgB,CAACC,SAAD,EAAYkE,iBAAZ,CAArB,EAAqD;EACnDP,QAAAA,OAAO,CAACQ,eAAR,CAAwBnE,SAAS,CAACG,QAAlC,CAAA,CAAA;EACD,OAAA;EACF,KAAA;EACF,GAAA;;EAED,EAAA,OAAOkD,eAAe,CAACI,IAAhB,CAAqBW,SAA5B,CAAA;EACD;;;;;;;;;;;"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* CoreUI scrollbar.js v4.2.0 (https://coreui.io)
|
|
3
|
+
* Copyright 2022 The CoreUI Team (https://github.com/orgs/coreui/people)
|
|
4
|
+
* Licensed under MIT (https://coreui.io)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../dom/selector-engine'), require('../dom/manipulator'), require('./index')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['../dom/selector-engine', '../dom/manipulator', './index'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Scrollbar = factory(global.SelectorEngine, global.Manipulator, global.Index));
|
|
10
|
+
})(this, (function (SelectorEngine, Manipulator, index) { 'use strict';
|
|
11
|
+
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
|
+
|
|
14
|
+
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
15
|
+
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* --------------------------------------------------------------------------
|
|
19
|
+
* Bootstrap (v5.2.0-beta1): util/scrollBar.js
|
|
20
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
21
|
+
* --------------------------------------------------------------------------
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Constants
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
|
|
28
|
+
const SELECTOR_STICKY_CONTENT = '.sticky-top';
|
|
29
|
+
const PROPERTY_PADDING = 'padding-right';
|
|
30
|
+
const PROPERTY_MARGIN = 'margin-right';
|
|
31
|
+
/**
|
|
32
|
+
* Class definition
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
class ScrollBarHelper {
|
|
36
|
+
constructor() {
|
|
37
|
+
this._element = document.body;
|
|
38
|
+
} // Public
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
getWidth() {
|
|
42
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
|
|
43
|
+
const documentWidth = document.documentElement.clientWidth;
|
|
44
|
+
return Math.abs(window.innerWidth - documentWidth);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
hide() {
|
|
48
|
+
const width = this.getWidth();
|
|
49
|
+
|
|
50
|
+
this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
|
|
57
|
+
|
|
58
|
+
this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
reset() {
|
|
62
|
+
this._resetElementAttributes(this._element, 'overflow');
|
|
63
|
+
|
|
64
|
+
this._resetElementAttributes(this._element, PROPERTY_PADDING);
|
|
65
|
+
|
|
66
|
+
this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
|
|
67
|
+
|
|
68
|
+
this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
isOverflowing() {
|
|
72
|
+
return this.getWidth() > 0;
|
|
73
|
+
} // Private
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
_disableOverFlow() {
|
|
77
|
+
this._saveInitialAttribute(this._element, 'overflow');
|
|
78
|
+
|
|
79
|
+
this._element.style.overflow = 'hidden';
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
_setElementAttributes(selector, styleProperty, callback) {
|
|
83
|
+
const scrollbarWidth = this.getWidth();
|
|
84
|
+
|
|
85
|
+
const manipulationCallBack = element => {
|
|
86
|
+
if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
this._saveInitialAttribute(element, styleProperty);
|
|
91
|
+
|
|
92
|
+
const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
|
|
93
|
+
element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
this._applyManipulationCallback(selector, manipulationCallBack);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
_saveInitialAttribute(element, styleProperty) {
|
|
100
|
+
const actualValue = element.style.getPropertyValue(styleProperty);
|
|
101
|
+
|
|
102
|
+
if (actualValue) {
|
|
103
|
+
Manipulator__default.default.setDataAttribute(element, styleProperty, actualValue);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
_resetElementAttributes(selector, styleProperty) {
|
|
108
|
+
const manipulationCallBack = element => {
|
|
109
|
+
const value = Manipulator__default.default.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero
|
|
110
|
+
|
|
111
|
+
if (value === null) {
|
|
112
|
+
element.style.removeProperty(styleProperty);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
Manipulator__default.default.removeDataAttribute(element, styleProperty);
|
|
117
|
+
element.style.setProperty(styleProperty, value);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
this._applyManipulationCallback(selector, manipulationCallBack);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
_applyManipulationCallback(selector, callBack) {
|
|
124
|
+
if (index.isElement(selector)) {
|
|
125
|
+
callBack(selector);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
for (const sel of SelectorEngine__default.default.find(selector, this._element)) {
|
|
130
|
+
callBack(sel);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return ScrollBarHelper;
|
|
137
|
+
|
|
138
|
+
}));
|
|
139
|
+
//# sourceMappingURL=scrollbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollbar.js","sources":["../../src/util/scrollbar.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n"],"names":["SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","constructor","_element","document","body","getWidth","documentWidth","documentElement","clientWidth","Math","abs","window","innerWidth","hide","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","style","overflow","selector","styleProperty","callback","scrollbarWidth","manipulationCallBack","element","getComputedStyle","getPropertyValue","setProperty","Number","parseFloat","_applyManipulationCallback","actualValue","Manipulator","setDataAttribute","value","getDataAttribute","removeProperty","removeDataAttribute","callBack","isElement","sel","SelectorEngine","find"],"mappings":"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"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* CoreUI swipe.js v4.2.0 (https://coreui.io)
|
|
3
|
+
* Copyright 2022 The CoreUI Team (https://github.com/orgs/coreui/people)
|
|
4
|
+
* Licensed under MIT (https://coreui.io)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./config'), require('../dom/event-handler'), require('./index')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./config', '../dom/event-handler', './index'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Swipe = factory(global.Config, global.EventHandler, global.Index));
|
|
10
|
+
})(this, (function (Config, EventHandler, index) { 'use strict';
|
|
11
|
+
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
|
+
|
|
14
|
+
const Config__default = /*#__PURE__*/_interopDefaultLegacy(Config);
|
|
15
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* --------------------------------------------------------------------------
|
|
19
|
+
* Bootstrap (v5.2.0-beta1): util/swipe.js
|
|
20
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
21
|
+
* --------------------------------------------------------------------------
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Constants
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
const NAME = 'swipe';
|
|
28
|
+
const EVENT_KEY = '.coreui.swipe';
|
|
29
|
+
const EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`;
|
|
30
|
+
const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`;
|
|
31
|
+
const EVENT_TOUCHEND = `touchend${EVENT_KEY}`;
|
|
32
|
+
const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`;
|
|
33
|
+
const EVENT_POINTERUP = `pointerup${EVENT_KEY}`;
|
|
34
|
+
const POINTER_TYPE_TOUCH = 'touch';
|
|
35
|
+
const POINTER_TYPE_PEN = 'pen';
|
|
36
|
+
const CLASS_NAME_POINTER_EVENT = 'pointer-event';
|
|
37
|
+
const SWIPE_THRESHOLD = 40;
|
|
38
|
+
const Default = {
|
|
39
|
+
endCallback: null,
|
|
40
|
+
leftCallback: null,
|
|
41
|
+
rightCallback: null
|
|
42
|
+
};
|
|
43
|
+
const DefaultType = {
|
|
44
|
+
endCallback: '(function|null)',
|
|
45
|
+
leftCallback: '(function|null)',
|
|
46
|
+
rightCallback: '(function|null)'
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Class definition
|
|
50
|
+
*/
|
|
51
|
+
|
|
52
|
+
class Swipe extends Config__default.default {
|
|
53
|
+
constructor(element, config) {
|
|
54
|
+
super();
|
|
55
|
+
this._element = element;
|
|
56
|
+
|
|
57
|
+
if (!element || !Swipe.isSupported()) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
this._config = this._getConfig(config);
|
|
62
|
+
this._deltaX = 0;
|
|
63
|
+
this._supportPointerEvents = Boolean(window.PointerEvent);
|
|
64
|
+
|
|
65
|
+
this._initEvents();
|
|
66
|
+
} // Getters
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
static get Default() {
|
|
70
|
+
return Default;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
static get DefaultType() {
|
|
74
|
+
return DefaultType;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static get NAME() {
|
|
78
|
+
return NAME;
|
|
79
|
+
} // Public
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
dispose() {
|
|
83
|
+
EventHandler__default.default.off(this._element, EVENT_KEY);
|
|
84
|
+
} // Private
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
_start(event) {
|
|
88
|
+
if (!this._supportPointerEvents) {
|
|
89
|
+
this._deltaX = event.touches[0].clientX;
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (this._eventIsPointerPenTouch(event)) {
|
|
94
|
+
this._deltaX = event.clientX;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
_end(event) {
|
|
99
|
+
if (this._eventIsPointerPenTouch(event)) {
|
|
100
|
+
this._deltaX = event.clientX - this._deltaX;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
this._handleSwipe();
|
|
104
|
+
|
|
105
|
+
index.execute(this._config.endCallback);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
_move(event) {
|
|
109
|
+
this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
_handleSwipe() {
|
|
113
|
+
const absDeltaX = Math.abs(this._deltaX);
|
|
114
|
+
|
|
115
|
+
if (absDeltaX <= SWIPE_THRESHOLD) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const direction = absDeltaX / this._deltaX;
|
|
120
|
+
this._deltaX = 0;
|
|
121
|
+
|
|
122
|
+
if (!direction) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
index.execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
_initEvents() {
|
|
130
|
+
if (this._supportPointerEvents) {
|
|
131
|
+
EventHandler__default.default.on(this._element, EVENT_POINTERDOWN, event => this._start(event));
|
|
132
|
+
EventHandler__default.default.on(this._element, EVENT_POINTERUP, event => this._end(event));
|
|
133
|
+
|
|
134
|
+
this._element.classList.add(CLASS_NAME_POINTER_EVENT);
|
|
135
|
+
} else {
|
|
136
|
+
EventHandler__default.default.on(this._element, EVENT_TOUCHSTART, event => this._start(event));
|
|
137
|
+
EventHandler__default.default.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));
|
|
138
|
+
EventHandler__default.default.on(this._element, EVENT_TOUCHEND, event => this._end(event));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
_eventIsPointerPenTouch(event) {
|
|
143
|
+
return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
|
|
144
|
+
} // Static
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
static isSupported() {
|
|
148
|
+
return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return Swipe;
|
|
154
|
+
|
|
155
|
+
}));
|
|
156
|
+
//# sourceMappingURL=swipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swipe.js","sources":["../../src/util/swipe.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config'\nimport EventHandler from '../dom/event-handler'\nimport { execute } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.coreui.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n"],"names":["NAME","EVENT_KEY","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","Default","endCallback","leftCallback","rightCallback","DefaultType","Swipe","Config","constructor","element","config","_element","isSupported","_config","_getConfig","_deltaX","_supportPointerEvents","Boolean","window","PointerEvent","_initEvents","dispose","EventHandler","off","_start","event","touches","clientX","_eventIsPointerPenTouch","_end","_handleSwipe","execute","_move","length","absDeltaX","Math","abs","direction","on","classList","add","pointerType","document","documentElement","navigator","maxTouchPoints"],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* CoreUI template-factory.js v4.2.0 (https://coreui.io)
|
|
3
|
+
* Copyright 2022 The CoreUI Team (https://github.com/orgs/coreui/people)
|
|
4
|
+
* Licensed under MIT (https://coreui.io)
|
|
5
|
+
*/
|
|
6
|
+
(function (global, factory) {
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./sanitizer'), require('./index'), require('../dom/selector-engine'), require('./config')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./sanitizer', './index', '../dom/selector-engine', './config'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.TemplateFactory = factory(global.Sanitizer, global.Index, global.SelectorEngine, global.Config));
|
|
10
|
+
})(this, (function (sanitizer, index, SelectorEngine, Config) { 'use strict';
|
|
11
|
+
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
|
+
|
|
14
|
+
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
15
|
+
const Config__default = /*#__PURE__*/_interopDefaultLegacy(Config);
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* --------------------------------------------------------------------------
|
|
19
|
+
* Bootstrap (v5.2.0-beta1): util/template-factory.js
|
|
20
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
21
|
+
* --------------------------------------------------------------------------
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Constants
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
const NAME = 'TemplateFactory';
|
|
28
|
+
const Default = {
|
|
29
|
+
allowList: sanitizer.DefaultAllowlist,
|
|
30
|
+
content: {},
|
|
31
|
+
// { selector : text , selector2 : text2 , }
|
|
32
|
+
extraClass: '',
|
|
33
|
+
html: false,
|
|
34
|
+
sanitize: true,
|
|
35
|
+
sanitizeFn: null,
|
|
36
|
+
template: '<div></div>'
|
|
37
|
+
};
|
|
38
|
+
const DefaultType = {
|
|
39
|
+
allowList: 'object',
|
|
40
|
+
content: 'object',
|
|
41
|
+
extraClass: '(string|function)',
|
|
42
|
+
html: 'boolean',
|
|
43
|
+
sanitize: 'boolean',
|
|
44
|
+
sanitizeFn: '(null|function)',
|
|
45
|
+
template: 'string'
|
|
46
|
+
};
|
|
47
|
+
const DefaultContentType = {
|
|
48
|
+
entry: '(string|element|function|null)',
|
|
49
|
+
selector: '(string|element)'
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Class definition
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
class TemplateFactory extends Config__default.default {
|
|
56
|
+
constructor(config) {
|
|
57
|
+
super();
|
|
58
|
+
this._config = this._getConfig(config);
|
|
59
|
+
} // Getters
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
static get Default() {
|
|
63
|
+
return Default;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static get DefaultType() {
|
|
67
|
+
return DefaultType;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static get NAME() {
|
|
71
|
+
return NAME;
|
|
72
|
+
} // Public
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
getContent() {
|
|
76
|
+
return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
hasContent() {
|
|
80
|
+
return this.getContent().length > 0;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
changeContent(content) {
|
|
84
|
+
this._checkContent(content);
|
|
85
|
+
|
|
86
|
+
this._config.content = { ...this._config.content,
|
|
87
|
+
...content
|
|
88
|
+
};
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
toHtml() {
|
|
93
|
+
const templateWrapper = document.createElement('div');
|
|
94
|
+
templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
|
|
95
|
+
|
|
96
|
+
for (const [selector, text] of Object.entries(this._config.content)) {
|
|
97
|
+
this._setContent(templateWrapper, text, selector);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const template = templateWrapper.children[0];
|
|
101
|
+
|
|
102
|
+
const extraClass = this._resolvePossibleFunction(this._config.extraClass);
|
|
103
|
+
|
|
104
|
+
if (extraClass) {
|
|
105
|
+
template.classList.add(...extraClass.split(' '));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return template;
|
|
109
|
+
} // Private
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
_typeCheckConfig(config) {
|
|
113
|
+
super._typeCheckConfig(config);
|
|
114
|
+
|
|
115
|
+
this._checkContent(config.content);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
_checkContent(arg) {
|
|
119
|
+
for (const [selector, content] of Object.entries(arg)) {
|
|
120
|
+
super._typeCheckConfig({
|
|
121
|
+
selector,
|
|
122
|
+
entry: content
|
|
123
|
+
}, DefaultContentType);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
_setContent(template, content, selector) {
|
|
128
|
+
const templateElement = SelectorEngine__default.default.findOne(selector, template);
|
|
129
|
+
|
|
130
|
+
if (!templateElement) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
content = this._resolvePossibleFunction(content);
|
|
135
|
+
|
|
136
|
+
if (!content) {
|
|
137
|
+
templateElement.remove();
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (index.isElement(content)) {
|
|
142
|
+
this._putElementInTemplate(index.getElement(content), templateElement);
|
|
143
|
+
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (this._config.html) {
|
|
148
|
+
templateElement.innerHTML = this._maybeSanitize(content);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
templateElement.textContent = content;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
_maybeSanitize(arg) {
|
|
156
|
+
return this._config.sanitize ? sanitizer.sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
_resolvePossibleFunction(arg) {
|
|
160
|
+
return typeof arg === 'function' ? arg(this) : arg;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
_putElementInTemplate(element, templateElement) {
|
|
164
|
+
if (this._config.html) {
|
|
165
|
+
templateElement.innerHTML = '';
|
|
166
|
+
templateElement.append(element);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
templateElement.textContent = element.textContent;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return TemplateFactory;
|
|
176
|
+
|
|
177
|
+
}));
|
|
178
|
+
//# sourceMappingURL=template-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-factory.js","sources":["../../src/util/template-factory.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0-beta1): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer'\nimport { getElement, isElement } from '../util/index'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n"],"names":["NAME","Default","allowList","DefaultAllowlist","content","extraClass","html","sanitize","sanitizeFn","template","DefaultType","DefaultContentType","entry","selector","TemplateFactory","Config","constructor","config","_config","_getConfig","getContent","Object","values","map","_resolvePossibleFunction","filter","Boolean","hasContent","length","changeContent","_checkContent","toHtml","templateWrapper","document","createElement","innerHTML","_maybeSanitize","text","entries","_setContent","children","classList","add","split","_typeCheckConfig","arg","templateElement","SelectorEngine","findOne","remove","isElement","_putElementInTemplate","getElement","textContent","sanitizeHtml","element","append"],"mappings":";;;;;;;;;;;;;;;;EAAA;EACA;EACA;EACA;EACA;EACA;EAOA;EACA;EACA;;EAEA,MAAMA,IAAI,GAAG,iBAAb,CAAA;EAEA,MAAMC,OAAO,GAAG;EACdC,EAAAA,SAAS,EAAEC,0BADG;EAEdC,EAAAA,OAAO,EAAE,EAFK;EAED;EACbC,EAAAA,UAAU,EAAE,EAHE;EAIdC,EAAAA,IAAI,EAAE,KAJQ;EAKdC,EAAAA,QAAQ,EAAE,IALI;EAMdC,EAAAA,UAAU,EAAE,IANE;EAOdC,EAAAA,QAAQ,EAAE,aAAA;EAPI,CAAhB,CAAA;EAUA,MAAMC,WAAW,GAAG;EAClBR,EAAAA,SAAS,EAAE,QADO;EAElBE,EAAAA,OAAO,EAAE,QAFS;EAGlBC,EAAAA,UAAU,EAAE,mBAHM;EAIlBC,EAAAA,IAAI,EAAE,SAJY;EAKlBC,EAAAA,QAAQ,EAAE,SALQ;EAMlBC,EAAAA,UAAU,EAAE,iBANM;EAOlBC,EAAAA,QAAQ,EAAE,QAAA;EAPQ,CAApB,CAAA;EAUA,MAAME,kBAAkB,GAAG;EACzBC,EAAAA,KAAK,EAAE,gCADkB;EAEzBC,EAAAA,QAAQ,EAAE,kBAAA;EAFe,CAA3B,CAAA;EAKA;EACA;EACA;;EAEA,MAAMC,eAAN,SAA8BC,uBAA9B,CAAqC;IACnCC,WAAW,CAACC,MAAD,EAAS;EAClB,IAAA,KAAA,EAAA,CAAA;EACA,IAAA,IAAA,CAAKC,OAAL,GAAe,IAAA,CAAKC,UAAL,CAAgBF,MAAhB,CAAf,CAAA;EACD,GAJkC;;;EAOjB,EAAA,WAAPhB,OAAO,GAAG;EACnB,IAAA,OAAOA,OAAP,CAAA;EACD,GAAA;;EAEqB,EAAA,WAAXS,WAAW,GAAG;EACvB,IAAA,OAAOA,WAAP,CAAA;EACD,GAAA;;EAEc,EAAA,WAAJV,IAAI,GAAG;EAChB,IAAA,OAAOA,IAAP,CAAA;EACD,GAjBkC;;;EAoBnCoB,EAAAA,UAAU,GAAG;MACX,OAAOC,MAAM,CAACC,MAAP,CAAc,KAAKJ,OAAL,CAAad,OAA3B,CAAA,CACJmB,GADI,CACAN,MAAM,IAAI,IAAA,CAAKO,wBAAL,CAA8BP,MAA9B,CADV,CAEJQ,CAAAA,MAFI,CAEGC,OAFH,CAAP,CAAA;EAGD,GAAA;;EAEDC,EAAAA,UAAU,GAAG;EACX,IAAA,OAAO,IAAKP,CAAAA,UAAL,EAAkBQ,CAAAA,MAAlB,GAA2B,CAAlC,CAAA;EACD,GAAA;;IAEDC,aAAa,CAACzB,OAAD,EAAU;MACrB,IAAK0B,CAAAA,aAAL,CAAmB1B,OAAnB,CAAA,CAAA;;MACA,IAAKc,CAAAA,OAAL,CAAad,OAAb,GAAuB,EAAE,GAAG,IAAA,CAAKc,OAAL,CAAad,OAAlB;QAA2B,GAAGA,OAAAA;OAArD,CAAA;EACA,IAAA,OAAO,IAAP,CAAA;EACD,GAAA;;EAED2B,EAAAA,MAAM,GAAG;EACP,IAAA,MAAMC,eAAe,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAxB,CAAA;MACAF,eAAe,CAACG,SAAhB,GAA4B,IAAKC,CAAAA,cAAL,CAAoB,IAAKlB,CAAAA,OAAL,CAAaT,QAAjC,CAA5B,CAAA;;EAEA,IAAA,KAAK,MAAM,CAACI,QAAD,EAAWwB,IAAX,CAAX,IAA+BhB,MAAM,CAACiB,OAAP,CAAe,IAAKpB,CAAAA,OAAL,CAAad,OAA5B,CAA/B,EAAqE;EACnE,MAAA,IAAA,CAAKmC,WAAL,CAAiBP,eAAjB,EAAkCK,IAAlC,EAAwCxB,QAAxC,CAAA,CAAA;EACD,KAAA;;EAED,IAAA,MAAMJ,QAAQ,GAAGuB,eAAe,CAACQ,QAAhB,CAAyB,CAAzB,CAAjB,CAAA;;MACA,MAAMnC,UAAU,GAAG,IAAKmB,CAAAA,wBAAL,CAA8B,IAAKN,CAAAA,OAAL,CAAab,UAA3C,CAAnB,CAAA;;EAEA,IAAA,IAAIA,UAAJ,EAAgB;QACdI,QAAQ,CAACgC,SAAT,CAAmBC,GAAnB,CAAuB,GAAGrC,UAAU,CAACsC,KAAX,CAAiB,GAAjB,CAA1B,CAAA,CAAA;EACD,KAAA;;EAED,IAAA,OAAOlC,QAAP,CAAA;EACD,GApDkC;;;IAuDnCmC,gBAAgB,CAAC3B,MAAD,EAAS;MACvB,KAAM2B,CAAAA,gBAAN,CAAuB3B,MAAvB,CAAA,CAAA;;EACA,IAAA,IAAA,CAAKa,aAAL,CAAmBb,MAAM,CAACb,OAA1B,CAAA,CAAA;EACD,GAAA;;IAED0B,aAAa,CAACe,GAAD,EAAM;EACjB,IAAA,KAAK,MAAM,CAAChC,QAAD,EAAWT,OAAX,CAAX,IAAkCiB,MAAM,CAACiB,OAAP,CAAeO,GAAf,CAAlC,EAAuD;EACrD,MAAA,KAAA,CAAMD,gBAAN,CAAuB;UAAE/B,QAAF;EAAYD,QAAAA,KAAK,EAAER,OAAAA;EAAnB,OAAvB,EAAqDO,kBAArD,CAAA,CAAA;EACD,KAAA;EACF,GAAA;;EAED4B,EAAAA,WAAW,CAAC9B,QAAD,EAAWL,OAAX,EAAoBS,QAApB,EAA8B;MACvC,MAAMiC,eAAe,GAAGC,+BAAc,CAACC,OAAf,CAAuBnC,QAAvB,EAAiCJ,QAAjC,CAAxB,CAAA;;MAEA,IAAI,CAACqC,eAAL,EAAsB;EACpB,MAAA,OAAA;EACD,KAAA;;EAED1C,IAAAA,OAAO,GAAG,IAAA,CAAKoB,wBAAL,CAA8BpB,OAA9B,CAAV,CAAA;;MAEA,IAAI,CAACA,OAAL,EAAc;EACZ0C,MAAAA,eAAe,CAACG,MAAhB,EAAA,CAAA;EACA,MAAA,OAAA;EACD,KAAA;;EAED,IAAA,IAAIC,eAAS,CAAC9C,OAAD,CAAb,EAAwB;EACtB,MAAA,IAAA,CAAK+C,qBAAL,CAA2BC,gBAAU,CAAChD,OAAD,CAArC,EAAgD0C,eAAhD,CAAA,CAAA;;EACA,MAAA,OAAA;EACD,KAAA;;EAED,IAAA,IAAI,IAAK5B,CAAAA,OAAL,CAAaZ,IAAjB,EAAuB;EACrBwC,MAAAA,eAAe,CAACX,SAAhB,GAA4B,KAAKC,cAAL,CAAoBhC,OAApB,CAA5B,CAAA;EACA,MAAA,OAAA;EACD,KAAA;;MAED0C,eAAe,CAACO,WAAhB,GAA8BjD,OAA9B,CAAA;EACD,GAAA;;IAEDgC,cAAc,CAACS,GAAD,EAAM;MAClB,OAAO,IAAA,CAAK3B,OAAL,CAAaX,QAAb,GAAwB+C,sBAAY,CAACT,GAAD,EAAM,IAAA,CAAK3B,OAAL,CAAahB,SAAnB,EAA8B,IAAKgB,CAAAA,OAAL,CAAaV,UAA3C,CAApC,GAA6FqC,GAApG,CAAA;EACD,GAAA;;IAEDrB,wBAAwB,CAACqB,GAAD,EAAM;MAC5B,OAAO,OAAOA,GAAP,KAAe,UAAf,GAA4BA,GAAG,CAAC,IAAD,CAA/B,GAAwCA,GAA/C,CAAA;EACD,GAAA;;EAEDM,EAAAA,qBAAqB,CAACI,OAAD,EAAUT,eAAV,EAA2B;EAC9C,IAAA,IAAI,IAAK5B,CAAAA,OAAL,CAAaZ,IAAjB,EAAuB;QACrBwC,eAAe,CAACX,SAAhB,GAA4B,EAA5B,CAAA;QACAW,eAAe,CAACU,MAAhB,CAAuBD,OAAvB,CAAA,CAAA;EACA,MAAA,OAAA;EACD,KAAA;;EAEDT,IAAAA,eAAe,CAACO,WAAhB,GAA8BE,OAAO,CAACF,WAAtC,CAAA;EACD,GAAA;;EA7GkC;;;;;;;;"}
|
package/js/src/alert.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* --------------------------------------------------------------------------
|
|
3
|
-
* CoreUI (v4.
|
|
3
|
+
* CoreUI (v4.2.0): alert.js
|
|
4
4
|
* Licensed under MIT (https://coreui.io/license)
|
|
5
5
|
*
|
|
6
6
|
* This component is a modified version of the Bootstrap's alert.js
|
|
@@ -14,9 +14,7 @@ import BaseComponent from './base-component'
|
|
|
14
14
|
import { enableDismissTrigger } from './util/component-functions'
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* ------------------------------------------------------------------------
|
|
18
17
|
* Constants
|
|
19
|
-
* ------------------------------------------------------------------------
|
|
20
18
|
*/
|
|
21
19
|
|
|
22
20
|
const NAME = 'alert'
|
|
@@ -29,20 +27,16 @@ const CLASS_NAME_FADE = 'fade'
|
|
|
29
27
|
const CLASS_NAME_SHOW = 'show'
|
|
30
28
|
|
|
31
29
|
/**
|
|
32
|
-
*
|
|
33
|
-
* Class Definition
|
|
34
|
-
* ------------------------------------------------------------------------
|
|
30
|
+
* Class definition
|
|
35
31
|
*/
|
|
36
32
|
|
|
37
33
|
class Alert extends BaseComponent {
|
|
38
34
|
// Getters
|
|
39
|
-
|
|
40
35
|
static get NAME() {
|
|
41
36
|
return NAME
|
|
42
37
|
}
|
|
43
38
|
|
|
44
39
|
// Public
|
|
45
|
-
|
|
46
40
|
close() {
|
|
47
41
|
const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)
|
|
48
42
|
|
|
@@ -64,7 +58,6 @@ class Alert extends BaseComponent {
|
|
|
64
58
|
}
|
|
65
59
|
|
|
66
60
|
// Static
|
|
67
|
-
|
|
68
61
|
static jQueryInterface(config) {
|
|
69
62
|
return this.each(function () {
|
|
70
63
|
const data = Alert.getOrCreateInstance(this)
|
|
@@ -83,18 +76,13 @@ class Alert extends BaseComponent {
|
|
|
83
76
|
}
|
|
84
77
|
|
|
85
78
|
/**
|
|
86
|
-
*
|
|
87
|
-
* Data Api implementation
|
|
88
|
-
* ------------------------------------------------------------------------
|
|
79
|
+
* Data API implementation
|
|
89
80
|
*/
|
|
90
81
|
|
|
91
82
|
enableDismissTrigger(Alert, 'close')
|
|
92
83
|
|
|
93
84
|
/**
|
|
94
|
-
* ------------------------------------------------------------------------
|
|
95
85
|
* jQuery
|
|
96
|
-
* ------------------------------------------------------------------------
|
|
97
|
-
* add .Alert to jQuery only if jQuery is present
|
|
98
86
|
*/
|
|
99
87
|
|
|
100
88
|
defineJQueryPlugin(Alert)
|