@coreui/coreui 5.0.0-beta.1 → 5.0.0-rc-2

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.
Files changed (127) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -37
  3. package/dist/css/coreui-grid.css +3 -3
  4. package/dist/css/coreui-grid.css.map +1 -1
  5. package/dist/css/coreui-grid.min.css +3 -3
  6. package/dist/css/coreui-grid.min.css.map +1 -1
  7. package/dist/css/coreui-grid.rtl.css +3 -3
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +3 -3
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +2 -2
  12. package/dist/css/coreui-reboot.css.map +1 -1
  13. package/dist/css/coreui-reboot.min.css +2 -2
  14. package/dist/css/coreui-reboot.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.rtl.css +3 -3
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  17. package/dist/css/coreui-reboot.rtl.min.css +3 -3
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  19. package/dist/css/coreui-utilities.css +2 -2
  20. package/dist/css/coreui-utilities.css.map +1 -1
  21. package/dist/css/coreui-utilities.min.css +2 -2
  22. package/dist/css/coreui-utilities.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.rtl.css +10 -10
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  25. package/dist/css/coreui-utilities.rtl.min.css +3 -3
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  27. package/dist/css/coreui.css +43 -44
  28. package/dist/css/coreui.css.map +1 -1
  29. package/dist/css/coreui.min.css +3 -3
  30. package/dist/css/coreui.min.css.map +1 -1
  31. package/dist/css/coreui.rtl.css +60 -58
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +3 -3
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/js/bootstrap.bundle.js +6932 -0
  36. package/dist/js/bootstrap.bundle.js.map +1 -0
  37. package/dist/js/bootstrap.bundle.min.js +7 -0
  38. package/dist/js/bootstrap.bundle.min.js.map +1 -0
  39. package/dist/js/bootstrap.esm.js +5063 -0
  40. package/dist/js/bootstrap.esm.js.map +1 -0
  41. package/dist/js/bootstrap.esm.min.js +7 -0
  42. package/dist/js/bootstrap.esm.min.js.map +1 -0
  43. package/dist/js/bootstrap.js +5112 -0
  44. package/dist/js/bootstrap.js.map +1 -0
  45. package/dist/js/bootstrap.min.js +7 -0
  46. package/dist/js/bootstrap.min.js.map +1 -0
  47. package/dist/js/coreui.bundle.js +8 -10
  48. package/dist/js/coreui.bundle.js.map +1 -1
  49. package/dist/js/coreui.bundle.min.js +3 -3
  50. package/dist/js/coreui.bundle.min.js.map +1 -1
  51. package/dist/js/coreui.esm.js +8 -10
  52. package/dist/js/coreui.esm.js.map +1 -1
  53. package/dist/js/coreui.esm.min.js +3 -3
  54. package/dist/js/coreui.esm.min.js.map +1 -1
  55. package/dist/js/coreui.js +8 -10
  56. package/dist/js/coreui.js.map +1 -1
  57. package/dist/js/coreui.min.js +3 -3
  58. package/dist/js/coreui.min.js.map +1 -1
  59. package/js/dist/alert.js +2 -2
  60. package/js/dist/base-component.js +3 -3
  61. package/js/dist/base-component.js.map +1 -1
  62. package/js/dist/button.js +2 -2
  63. package/js/dist/carousel.js +2 -2
  64. package/js/dist/collapse.js +2 -2
  65. package/js/dist/dom/data.js +2 -2
  66. package/js/dist/dom/event-handler.js +2 -2
  67. package/js/dist/dom/manipulator.js +2 -2
  68. package/js/dist/dom/selector-engine.js +4 -4
  69. package/js/dist/dom/selector-engine.js.map +1 -1
  70. package/js/dist/dropdown.js +2 -2
  71. package/js/dist/modal.js +2 -2
  72. package/js/dist/modal.js.map +1 -1
  73. package/js/dist/navigation.js +2 -4
  74. package/js/dist/navigation.js.map +1 -1
  75. package/js/dist/offcanvas.js +2 -2
  76. package/js/dist/popover.js +2 -2
  77. package/js/dist/scrollspy.js +2 -2
  78. package/js/dist/scrollspy.js.map +1 -1
  79. package/js/dist/sidebar.js +2 -2
  80. package/js/dist/sidebar.js.map +1 -1
  81. package/js/dist/tab.js +2 -2
  82. package/js/dist/toast.js +2 -2
  83. package/js/dist/tooltip.js +2 -2
  84. package/js/dist/tooltip.js.map +1 -1
  85. package/js/dist/util/backdrop.js +2 -3
  86. package/js/dist/util/backdrop.js.map +1 -1
  87. package/js/dist/util/component-functions.js +2 -2
  88. package/js/dist/util/config.js +2 -2
  89. package/js/dist/util/config.js.map +1 -1
  90. package/js/dist/util/focustrap.js +2 -3
  91. package/js/dist/util/focustrap.js.map +1 -1
  92. package/js/dist/util/index.js +2 -3
  93. package/js/dist/util/index.js.map +1 -1
  94. package/js/dist/util/sanitizer.js +5 -2
  95. package/js/dist/util/sanitizer.js.map +1 -1
  96. package/js/dist/util/scrollbar.js +2 -2
  97. package/js/dist/util/swipe.js +2 -2
  98. package/js/dist/util/template-factory.js +2 -2
  99. package/js/src/base-component.js +1 -1
  100. package/js/src/dom/selector-engine.js +2 -2
  101. package/js/src/modal.js +3 -1
  102. package/js/src/scrollspy.js +3 -1
  103. package/js/src/tooltip.js +3 -1
  104. package/js/src/util/backdrop.js +3 -1
  105. package/js/src/util/sanitizer.js +3 -0
  106. package/package.json +39 -31
  107. package/scss/_accordion.scss +13 -13
  108. package/scss/_buttons.scss +9 -0
  109. package/scss/_dropdown.scss +1 -1
  110. package/scss/_modal.scss +0 -1
  111. package/scss/_offcanvas.scss +0 -1
  112. package/scss/_reboot.scss +1 -1
  113. package/scss/_tables.scss +1 -1
  114. package/scss/_utilities.scss +8 -5
  115. package/scss/_variables.scss +23 -19
  116. package/scss/forms/_form-check.scss +1 -1
  117. package/scss/mixins/_banner.scss +2 -2
  118. package/scss/mixins/_forms.scss +12 -2
  119. package/scss/mixins/_grid.scss +1 -1
  120. package/scss/mixins/_reset-text.scss +1 -1
  121. package/scss/mixins/_utilities.scss +5 -2
  122. package/scss/sidebar/_sidebar-narrow.scss +8 -8
  123. package/scss/sidebar/_sidebar.scss +8 -6
  124. package/scss/themes/bootstrap/_variables.scss +2 -0
  125. package/scss/themes/bootstrap/bootstrap.rtl.scss +23 -0
  126. package/scss/themes/bootstrap/bootstrap.scss +20 -0
  127. package/scss/themes/bootstrap/mixins/_banner.scss +8 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * CoreUI sanitizer.js v5.0.0-beta.1 (https://coreui.io)
3
- * Copyright 2023 The CoreUI Team (https://github.com/orgs/coreui/people)
2
+ * CoreUI sanitizer.js v5.0.0-rc-2 (https://coreui.io)
3
+ * Copyright 2024 The CoreUI Team (https://github.com/orgs/coreui/people)
4
4
  * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
@@ -30,7 +30,10 @@
30
30
  br: [],
31
31
  col: [],
32
32
  code: [],
33
+ dd: [],
33
34
  div: [],
35
+ dl: [],
36
+ dt: [],
34
37
  em: [],
35
38
  hr: [],
36
39
  h1: [],
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizer.js","sources":["../../src/util/sanitizer.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI util/sanitizer.js\n * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)\n *\n * This 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\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\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// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/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))\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 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":["ARIA_ATTRIBUTE_PATTERN","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","uriAttributes","Set","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","toLowerCase","includes","has","Boolean","test","nodeValue","filter","attributeRegex","RegExp","some","regex","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;EACA,MAAMA,sBAAsB,GAAG,gBAAgB,CAAA;AAExC,QAAMC,gBAAgB,GAAG;EAC9B;EACA,EAAA,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAED,sBAAsB,CAAC;IACnEE,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;EACrCC,EAAAA,IAAI,EAAE,EAAE;EACRC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,IAAI,EAAE,EAAE;EACRC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;EACzDC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,KAAK,EAAE,EAAE;EACTC,EAAAA,IAAI,EAAE,EAAE;EACRC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,MAAM,EAAE,EAAE;EACVC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,EAAE,EAAE,EAAA;EACN,EAAC;EACD;;EAEA,MAAMC,aAAa,GAAG,IAAIC,GAAG,CAAC,CAC5B,YAAY,EACZ,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,YAAY,CACb,CAAC,CAAA;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,gBAAgB,GAAG,yDAAyD,CAAA;EAElF,MAAMC,gBAAgB,GAAGA,CAACC,SAAS,EAAEC,oBAAoB,KAAK;IAC5D,MAAMC,aAAa,GAAGF,SAAS,CAACG,QAAQ,CAACC,WAAW,EAAE,CAAA;EAEtD,EAAA,IAAIH,oBAAoB,CAACI,QAAQ,CAACH,aAAa,CAAC,EAAE;EAChD,IAAA,IAAIN,aAAa,CAACU,GAAG,CAACJ,aAAa,CAAC,EAAE;QACpC,OAAOK,OAAO,CAACT,gBAAgB,CAACU,IAAI,CAACR,SAAS,CAACS,SAAS,CAAC,CAAC,CAAA;EAC5D,KAAA;EAEA,IAAA,OAAO,IAAI,CAAA;EACb,GAAA;;EAEA;IACA,OAAOR,oBAAoB,CAACS,MAAM,CAACC,cAAc,IAAIA,cAAc,YAAYC,MAAM,CAAC,CACnFC,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACN,IAAI,CAACN,aAAa,CAAC,CAAC,CAAA;EAC7C,CAAC,CAAA;EAEM,SAASa,YAAYA,CAACC,UAAU,EAAEC,SAAS,EAAEC,gBAAgB,EAAE;EACpE,EAAA,IAAI,CAACF,UAAU,CAACG,MAAM,EAAE;EACtB,IAAA,OAAOH,UAAU,CAAA;EACnB,GAAA;EAEA,EAAA,IAAIE,gBAAgB,IAAI,OAAOA,gBAAgB,KAAK,UAAU,EAAE;MAC9D,OAAOA,gBAAgB,CAACF,UAAU,CAAC,CAAA;EACrC,GAAA;EAEA,EAAA,MAAMI,SAAS,GAAG,IAAIC,MAAM,CAACC,SAAS,EAAE,CAAA;IACxC,MAAMC,eAAe,GAAGH,SAAS,CAACI,eAAe,CAACR,UAAU,EAAE,WAAW,CAAC,CAAA;EAC1E,EAAA,MAAMS,QAAQ,GAAG,EAAE,CAACC,MAAM,CAAC,GAAGH,eAAe,CAACI,IAAI,CAACC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;EAEzE,EAAA,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE;MAC9B,MAAMK,WAAW,GAAGD,OAAO,CAAC1B,QAAQ,CAACC,WAAW,EAAE,CAAA;EAElD,IAAA,IAAI,CAAC2B,MAAM,CAACC,IAAI,CAACf,SAAS,CAAC,CAACZ,QAAQ,CAACyB,WAAW,CAAC,EAAE;QACjDD,OAAO,CAACI,MAAM,EAAE,CAAA;EAEhB,MAAA,SAAA;EACF,KAAA;MAEA,MAAMC,aAAa,GAAG,EAAE,CAACR,MAAM,CAAC,GAAGG,OAAO,CAACM,UAAU,CAAC,CAAA;EACtD,IAAA,MAAMC,iBAAiB,GAAG,EAAE,CAACV,MAAM,CAACT,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAEA,SAAS,CAACa,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;EAEvF,IAAA,KAAK,MAAM9B,SAAS,IAAIkC,aAAa,EAAE;EACrC,MAAA,IAAI,CAACnC,gBAAgB,CAACC,SAAS,EAAEoC,iBAAiB,CAAC,EAAE;EACnDP,QAAAA,OAAO,CAACQ,eAAe,CAACrC,SAAS,CAACG,QAAQ,CAAC,CAAA;EAC7C,OAAA;EACF,KAAA;EACF,GAAA;EAEA,EAAA,OAAOoB,eAAe,CAACI,IAAI,CAACW,SAAS,CAAA;EACvC;;;;;;;;;;;"}
1
+ {"version":3,"file":"sanitizer.js","sources":["../../src/util/sanitizer.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * CoreUI util/sanitizer.js\n * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)\n *\n * This 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\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\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 dd: [],\n div: [],\n dl: [],\n dt: [],\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// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/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))\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 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":["ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","i","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","Set","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","toLowerCase","includes","has","Boolean","test","nodeValue","filter","attributeRegex","RegExp","some","regex","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;EACA,MAAMA,sBAAsB,GAAG,gBAAgB,CAAA;AAExC,QAAMC,gBAAgB,GAAG;EAC9B;EACA,EAAA,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAED,sBAAsB,CAAC;IACnEE,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;EACrCC,EAAAA,IAAI,EAAE,EAAE;EACRC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,IAAI,EAAE,EAAE;EACRC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;EACzDC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,EAAE,EAAE,EAAE;EACNC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,KAAK,EAAE,EAAE;EACTC,EAAAA,IAAI,EAAE,EAAE;EACRC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,GAAG,EAAE,EAAE;EACPC,EAAAA,MAAM,EAAE,EAAE;EACVC,EAAAA,CAAC,EAAE,EAAE;EACLC,EAAAA,EAAE,EAAE,EAAA;EACN,EAAC;EACD;;EAEA,MAAMC,aAAa,GAAG,IAAIC,GAAG,CAAC,CAC5B,YAAY,EACZ,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,YAAY,CACb,CAAC,CAAA;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMC,gBAAgB,GAAG,yDAAyD,CAAA;EAElF,MAAMC,gBAAgB,GAAGA,CAACC,SAAS,EAAEC,oBAAoB,KAAK;IAC5D,MAAMC,aAAa,GAAGF,SAAS,CAACG,QAAQ,CAACC,WAAW,EAAE,CAAA;EAEtD,EAAA,IAAIH,oBAAoB,CAACI,QAAQ,CAACH,aAAa,CAAC,EAAE;EAChD,IAAA,IAAIN,aAAa,CAACU,GAAG,CAACJ,aAAa,CAAC,EAAE;QACpC,OAAOK,OAAO,CAACT,gBAAgB,CAACU,IAAI,CAACR,SAAS,CAACS,SAAS,CAAC,CAAC,CAAA;EAC5D,KAAA;EAEA,IAAA,OAAO,IAAI,CAAA;EACb,GAAA;;EAEA;IACA,OAAOR,oBAAoB,CAACS,MAAM,CAACC,cAAc,IAAIA,cAAc,YAAYC,MAAM,CAAC,CACnFC,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACN,IAAI,CAACN,aAAa,CAAC,CAAC,CAAA;EAC7C,CAAC,CAAA;EAEM,SAASa,YAAYA,CAACC,UAAU,EAAEC,SAAS,EAAEC,gBAAgB,EAAE;EACpE,EAAA,IAAI,CAACF,UAAU,CAACG,MAAM,EAAE;EACtB,IAAA,OAAOH,UAAU,CAAA;EACnB,GAAA;EAEA,EAAA,IAAIE,gBAAgB,IAAI,OAAOA,gBAAgB,KAAK,UAAU,EAAE;MAC9D,OAAOA,gBAAgB,CAACF,UAAU,CAAC,CAAA;EACrC,GAAA;EAEA,EAAA,MAAMI,SAAS,GAAG,IAAIC,MAAM,CAACC,SAAS,EAAE,CAAA;IACxC,MAAMC,eAAe,GAAGH,SAAS,CAACI,eAAe,CAACR,UAAU,EAAE,WAAW,CAAC,CAAA;EAC1E,EAAA,MAAMS,QAAQ,GAAG,EAAE,CAACC,MAAM,CAAC,GAAGH,eAAe,CAACI,IAAI,CAACC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;EAEzE,EAAA,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE;MAC9B,MAAMK,WAAW,GAAGD,OAAO,CAAC1B,QAAQ,CAACC,WAAW,EAAE,CAAA;EAElD,IAAA,IAAI,CAAC2B,MAAM,CAACC,IAAI,CAACf,SAAS,CAAC,CAACZ,QAAQ,CAACyB,WAAW,CAAC,EAAE;QACjDD,OAAO,CAACI,MAAM,EAAE,CAAA;EAEhB,MAAA,SAAA;EACF,KAAA;MAEA,MAAMC,aAAa,GAAG,EAAE,CAACR,MAAM,CAAC,GAAGG,OAAO,CAACM,UAAU,CAAC,CAAA;EACtD,IAAA,MAAMC,iBAAiB,GAAG,EAAE,CAACV,MAAM,CAACT,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAEA,SAAS,CAACa,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;EAEvF,IAAA,KAAK,MAAM9B,SAAS,IAAIkC,aAAa,EAAE;EACrC,MAAA,IAAI,CAACnC,gBAAgB,CAACC,SAAS,EAAEoC,iBAAiB,CAAC,EAAE;EACnDP,QAAAA,OAAO,CAACQ,eAAe,CAACrC,SAAS,CAACG,QAAQ,CAAC,CAAA;EAC7C,OAAA;EACF,KAAA;EACF,GAAA;EAEA,EAAA,OAAOoB,eAAe,CAACI,IAAI,CAACW,SAAS,CAAA;EACvC;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * CoreUI scrollbar.js v5.0.0-beta.1 (https://coreui.io)
3
- * Copyright 2023 The CoreUI Team (https://github.com/orgs/coreui/people)
2
+ * CoreUI scrollbar.js v5.0.0-rc-2 (https://coreui.io)
3
+ * Copyright 2024 The CoreUI Team (https://github.com/orgs/coreui/people)
4
4
  * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * CoreUI swipe.js v5.0.0-beta.1 (https://coreui.io)
3
- * Copyright 2023 The CoreUI Team (https://github.com/orgs/coreui/people)
2
+ * CoreUI swipe.js v5.0.0-rc-2 (https://coreui.io)
3
+ * Copyright 2024 The CoreUI Team (https://github.com/orgs/coreui/people)
4
4
  * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * CoreUI template-factory.js v5.0.0-beta.1 (https://coreui.io)
3
- * Copyright 2023 The CoreUI Team (https://github.com/orgs/coreui/people)
2
+ * CoreUI template-factory.js v5.0.0-rc-2 (https://coreui.io)
3
+ * Copyright 2024 The CoreUI Team (https://github.com/orgs/coreui/people)
4
4
  * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
@@ -17,7 +17,7 @@ import { executeAfterTransition, getElement } from './util/index.js'
17
17
  * Constants
18
18
  */
19
19
 
20
- const VERSION = '5.0.0-beta.1'
20
+ const VERSION = '5.0.0-rc-2'
21
21
 
22
22
  /**
23
23
  * Class definition
@@ -29,10 +29,10 @@ const getSelector = element => {
29
29
  hrefAttribute = `#${hrefAttribute.split('#')[1]}`
30
30
  }
31
31
 
32
- selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null
32
+ selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null
33
33
  }
34
34
 
35
- return selector
35
+ return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null
36
36
  }
37
37
 
38
38
  const SelectorEngine = {
package/js/src/modal.js CHANGED
@@ -14,7 +14,9 @@ import SelectorEngine from './dom/selector-engine.js'
14
14
  import Backdrop from './util/backdrop.js'
15
15
  import { enableDismissTrigger } from './util/component-functions.js'
16
16
  import FocusTrap from './util/focustrap.js'
17
- import { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'
17
+ import {
18
+ defineJQueryPlugin, isRTL, isVisible, reflow
19
+ } from './util/index.js'
18
20
  import ScrollBarHelper from './util/scrollbar.js'
19
21
 
20
22
  /**
@@ -11,7 +11,9 @@
11
11
  import BaseComponent from './base-component.js'
12
12
  import EventHandler from './dom/event-handler.js'
13
13
  import SelectorEngine from './dom/selector-engine.js'
14
- import { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'
14
+ import {
15
+ defineJQueryPlugin, getElement, isDisabled, isVisible
16
+ } from './util/index.js'
15
17
 
16
18
  /**
17
19
  * Constants
package/js/src/tooltip.js CHANGED
@@ -12,7 +12,9 @@ import * as Popper from '@popperjs/core'
12
12
  import BaseComponent from './base-component.js'
13
13
  import EventHandler from './dom/event-handler.js'
14
14
  import Manipulator from './dom/manipulator.js'
15
- import { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'
15
+ import {
16
+ defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop
17
+ } from './util/index.js'
16
18
  import { DefaultAllowlist } from './util/sanitizer.js'
17
19
  import TemplateFactory from './util/template-factory.js'
18
20
 
@@ -10,7 +10,9 @@
10
10
 
11
11
  import EventHandler from '../dom/event-handler.js'
12
12
  import Config from './config.js'
13
- import { execute, executeAfterTransition, getElement, reflow } from './index.js'
13
+ import {
14
+ execute, executeAfterTransition, getElement, reflow
15
+ } from './index.js'
14
16
 
15
17
  /**
16
18
  * Constants
@@ -20,7 +20,10 @@ export const DefaultAllowlist = {
20
20
  br: [],
21
21
  col: [],
22
22
  code: [],
23
+ dd: [],
23
24
  div: [],
25
+ dl: [],
26
+ dt: [],
24
27
  em: [],
25
28
  hr: [],
26
29
  h1: [],
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coreui/coreui",
3
3
  "description": "The most popular front-end framework for developing responsive, mobile-first projects on the web rewritten and maintained by the CoreUI Team",
4
- "version": "5.0.0-beta.1",
4
+ "version": "5.0.0-rc-2",
5
5
  "config": {
6
6
  "version_short": "5.0"
7
7
  },
@@ -19,28 +19,35 @@
19
19
  "scripts": {
20
20
  "start": "npm-run-all --parallel watch docs-serve",
21
21
  "bundlewatch": "bundlewatch --config .bundlewatch.config.json",
22
- "css": "npm-run-all css-compile css-prefix css-minify",
22
+ "css": "npm-run-all css-compile css-prefix css-rtl css-minify",
23
23
  "css-compile": "sass --style expanded --source-map --embed-sources --no-error-css scss/:dist/css/",
24
+ "css-rtl": "cross-env NODE_ENV=RTL postcss --config build/postcss.config.mjs --dir \"dist/css/themes/bootstrap/\" --ext \".rtl.css\" \"dist/css/themes/bootstrap/*.css\" \"!dist/css/themes/bootstrap/*.min.css\" \"!dist/css/themes/bootstrap/*.rtl.css\"",
24
25
  "css-lint": "npm-run-all --aggregate-output --continue-on-error --parallel css-lint-*",
25
26
  "css-lint-stylelint": "stylelint \"**/*.{css,scss}\" --cache --cache-location .cache/.stylelintcache",
26
27
  "css-lint-vars": "fusv scss/ docs/assets/scss/",
27
28
  "css-minify": "npm-run-all --aggregate-output --parallel css-minify-*",
28
- "css-minify-main": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*rtl*.css\"",
29
- "css-minify-rtl": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*rtl.css\" \"!dist/css/*.min.css\"",
29
+ "css-minify-main": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/**/*.css\" \"!dist/css/**/*.min.css\" \"!dist/css/**/*rtl*.css\"",
30
+ "css-minify-rtl": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/**/*rtl.css\" \"!dist/css/**/*.min.css\"",
30
31
  "css-prefix": "npm-run-all --aggregate-output --parallel css-prefix-*",
31
- "css-prefix-main": "postcss --config build/postcss.config.mjs --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
32
+ "css-prefix-main": "postcss --config build/postcss.config.mjs --replace \"dist/css/**/*.css\" \"!dist/css/**/*.rtl*.css\" \"!dist/css/**/*.min.css\"",
32
33
  "css-test": "jasmine --config=scss/tests/jasmine.js",
33
34
  "js": "npm-run-all js-compile js-minify",
34
35
  "js-compile": "npm-run-all --aggregate-output --parallel js-compile-*",
35
36
  "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.mjs --sourcemap",
36
37
  "js-compile-standalone-esm": "rollup --environment ESM:true,BUNDLE:false --config build/rollup.config.mjs --sourcemap",
38
+ "js-compile-standalone-bootstrap": "rollup --environment BOOTSTRAP:true,BUNDLE:false --config build/rollup.config.mjs --sourcemap",
39
+ "js-compile-standalone-bootstrap-esm": "rollup --environment ESM:true,BOOTSTRAP:true,BUNDLE:false --config build/rollup.config.mjs --sourcemap",
37
40
  "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.mjs --sourcemap",
41
+ "js-compile-bundle-bootstrap": "rollup --environment BOOTSTRAP:true,BUNDLE:true --config build/rollup.config.mjs --sourcemap",
38
42
  "js-compile-plugins": "node build/build-plugins.mjs",
39
43
  "js-lint": "eslint --cache --cache-location .cache/.eslintcache --report-unused-disable-directives --ext .html,.js,.mjs,.md .",
40
44
  "js-minify": "npm-run-all --aggregate-output --parallel js-minify-*",
41
45
  "js-minify-standalone": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/coreui.js.map,includeSources,url=coreui.min.js.map\" --output dist/js/coreui.min.js dist/js/coreui.js",
42
46
  "js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/coreui.esm.js.map,includeSources,url=coreui.esm.min.js.map\" --output dist/js/coreui.esm.min.js dist/js/coreui.esm.js",
43
47
  "js-minify-bundle": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/coreui.bundle.js.map,includeSources,url=coreui.bundle.min.js.map\" --output dist/js/coreui.bundle.min.js dist/js/coreui.bundle.js",
48
+ "js-minify-standalone-bootstrap": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map\" --output dist/js/bootstrap.min.js dist/js/bootstrap.js",
49
+ "js-minify-standalone-bootstrap-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.esm.js.map,includeSources,url=bootstrap.esm.min.js.map\" --output dist/js/bootstrap.esm.min.js dist/js/bootstrap.esm.js",
50
+ "js-minify-bundle-bootstrap": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js",
44
51
  "js-test": "npm-run-all --aggregate-output --parallel js-test-karma js-test-jquery js-test-integration-*",
45
52
  "js-debug": "cross-env DEBUG=true npm run js-test-karma",
46
53
  "js-test-karma": "karma start js/tests/karma.conf.js",
@@ -93,32 +100,33 @@
93
100
  "@popperjs/core": "^2.11.8"
94
101
  },
95
102
  "devDependencies": {
96
- "@babel/cli": "^7.23.0",
97
- "@babel/core": "^7.23.2",
98
- "@babel/preset-env": "^7.23.2",
103
+ "@babel/cli": "^7.23.9",
104
+ "@babel/core": "^7.24.0",
105
+ "@babel/preset-env": "^7.24.0",
99
106
  "@popperjs/core": "^2.11.8",
100
107
  "@rollup/plugin-babel": "^6.0.4",
101
108
  "@rollup/plugin-commonjs": "^25.0.7",
102
109
  "@rollup/plugin-node-resolve": "^15.2.3",
103
- "@rollup/plugin-replace": "^5.0.4",
104
- "autoprefixer": "^10.4.16",
110
+ "@rollup/plugin-replace": "^5.0.5",
111
+ "autoprefixer": "^10.4.17",
112
+ "bootstrap": "^5.3.3",
105
113
  "bundlewatch": "^0.3.3",
106
- "clean-css-cli": "^5.6.2",
114
+ "clean-css-cli": "^5.6.3",
107
115
  "cross-env": "^7.0.3",
108
- "eslint": "^8.52.0",
109
- "eslint-config-xo": "^0.43.1",
110
- "eslint-plugin-html": "^7.1.0",
111
- "eslint-plugin-import": "^2.29.0",
116
+ "eslint": "^8.57.0",
117
+ "eslint-config-xo": "^0.44.0",
118
+ "eslint-plugin-html": "^8.0.0",
119
+ "eslint-plugin-import": "^2.29.1",
112
120
  "eslint-plugin-markdown": "^3.0.1",
113
- "eslint-plugin-unicorn": "^48.0.1",
121
+ "eslint-plugin-unicorn": "^51.0.1",
114
122
  "find-unused-sass-variables": "^5.0.0",
115
123
  "globby": "^11.1.0",
116
124
  "hammer-simulator": "0.0.1",
117
- "hugo-bin": "^0.115.0",
118
- "ip": "^2.0.0",
119
- "jasmine": "^4.6.0",
125
+ "hugo-bin": "^0.120.6",
126
+ "ip": "^2.0.1",
127
+ "jasmine": "^5.1.0",
120
128
  "jquery": "^3.7.1",
121
- "karma": "^6.4.2",
129
+ "karma": "^6.4.3",
122
130
  "karma-browserstack-launcher": "1.6.0",
123
131
  "karma-chrome-launcher": "^3.2.0",
124
132
  "karma-coverage-istanbul-reporter": "^3.0.3",
@@ -127,21 +135,21 @@
127
135
  "karma-jasmine": "^5.1.0",
128
136
  "karma-jasmine-html-reporter": "^2.1.0",
129
137
  "karma-rollup-preprocessor": "7.0.8",
130
- "lockfile-lint": "^4.12.1",
131
- "nodemon": "^3.0.1",
138
+ "lockfile-lint": "^4.13.2",
139
+ "nodemon": "^3.1.0",
132
140
  "npm-run-all": "^4.1.5",
133
- "postcss": "^8.4.31",
134
- "postcss-cli": "^10.1.0",
141
+ "postcss": "^8.4.35",
142
+ "postcss-cli": "^11.0.0",
135
143
  "postcss-combine-duplicated-selectors": "^10.0.3",
136
- "rollup": "^3.29.4",
137
- "rollup-plugin-istanbul": "^4.0.0",
144
+ "rollup": "^4.12.0",
145
+ "rollup-plugin-istanbul": "^5.0.0",
138
146
  "rtlcss": "^4.1.1",
139
- "sass": "^1.69.4",
140
- "sass-true": "^7.0.0",
147
+ "sass": "^1.71.1",
148
+ "sass-true": "^7.0.1",
141
149
  "shelljs": "^0.8.5",
142
- "stylelint": "^15.11.0",
143
- "stylelint-config-twbs-bootstrap": "^11.0.1",
144
- "terser": "5.22.0",
150
+ "stylelint": "^16.2.1",
151
+ "stylelint-config-twbs-bootstrap": "^14.0.0",
152
+ "terser": "5.28.1",
145
153
  "vnu-jar": "23.4.11"
146
154
  },
147
155
  "files": [
@@ -20,7 +20,6 @@
20
20
  --#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};
21
21
  --#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};
22
22
  --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};
23
- --#{$prefix}accordion-btn-focus-border-color: #{$accordion-button-focus-border-color};
24
23
  --#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};
25
24
  --#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};
26
25
  --#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
@@ -37,7 +36,7 @@
37
36
  padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x);
38
37
  @include font-size($font-size-base);
39
38
  color: var(--#{$prefix}accordion-btn-color);
40
- text-align: left; // Reset button style
39
+ @include ltr-rtl("text-align", left); // Reset button style
41
40
  background-color: var(--#{$prefix}accordion-btn-bg);
42
41
  border: 0;
43
42
  @include border-radius(0);
@@ -60,7 +59,7 @@
60
59
  flex-shrink: 0;
61
60
  width: var(--#{$prefix}accordion-btn-icon-width);
62
61
  height: var(--#{$prefix}accordion-btn-icon-width);
63
- margin-left: auto;
62
+ @include ltr-rtl("margin-left", auto);
64
63
  content: "";
65
64
  background-image: var(--#{$prefix}accordion-btn-icon);
66
65
  background-repeat: no-repeat;
@@ -74,7 +73,6 @@
74
73
 
75
74
  &:focus {
76
75
  z-index: 3;
77
- border-color: var(--#{$prefix}accordion-btn-focus-border-color);
78
76
  outline: 0;
79
77
  box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow);
80
78
  }
@@ -92,7 +90,7 @@
92
90
  &:first-of-type {
93
91
  @include border-top-radius(var(--#{$prefix}accordion-border-radius));
94
92
 
95
- .accordion-button {
93
+ > .accordion-header .accordion-button {
96
94
  @include border-top-radius(var(--#{$prefix}accordion-inner-border-radius));
97
95
  }
98
96
  }
@@ -105,13 +103,13 @@
105
103
  &:last-of-type {
106
104
  @include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
107
105
 
108
- .accordion-button {
106
+ > .accordion-header .accordion-button {
109
107
  &.collapsed {
110
108
  @include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius));
111
109
  }
112
110
  }
113
111
 
114
- .accordion-collapse {
112
+ > .accordion-collapse {
115
113
  @include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
116
114
  }
117
115
  }
@@ -127,11 +125,7 @@
127
125
  // Remove borders and border-radius to keep accordion items edge-to-edge.
128
126
 
129
127
  .accordion-flush {
130
- .accordion-collapse {
131
- border-width: 0;
132
- }
133
-
134
- .accordion-item {
128
+ > .accordion-item {
135
129
  border-right: 0;
136
130
  border-left: 0;
137
131
  @include border-radius(0);
@@ -139,12 +133,18 @@
139
133
  &:first-child { border-top: 0; }
140
134
  &:last-child { border-bottom: 0; }
141
135
 
142
- .accordion-button {
136
+ // stylelint-disable selector-max-class
137
+ > .accordion-header .accordion-button {
143
138
  &,
144
139
  &.collapsed {
145
140
  @include border-radius(0);
146
141
  }
147
142
  }
143
+ // stylelint-enable selector-max-class
144
+
145
+ > .accordion-collapse {
146
+ @include border-radius(0);
147
+ }
148
148
  }
149
149
  }
150
150
 
@@ -100,6 +100,15 @@
100
100
  }
101
101
  }
102
102
 
103
+ .btn-check:checked:focus-visible + & {
104
+ // Avoid using mixin so we can pass custom focus shadow properly
105
+ @if $enable-shadows {
106
+ box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow);
107
+ } @else {
108
+ box-shadow: var(--#{$prefix}btn-focus-box-shadow);
109
+ }
110
+ }
111
+
103
112
  &:disabled,
104
113
  &.disabled,
105
114
  fieldset:disabled & {
@@ -54,7 +54,7 @@
54
54
  margin: 0; // Override default margin of ul
55
55
  @include font-size(var(--#{$prefix}dropdown-font-size));
56
56
  color: var(--#{$prefix}dropdown-color);
57
- text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
57
+ @include ltr-rtl("text-align", left); // Ensures proper alignment if parent has it changed (e.g., modal footer)
58
58
  list-style: none;
59
59
  background-color: var(--#{$prefix}dropdown-bg);
60
60
  background-clip: padding-box;
package/scss/_modal.scss CHANGED
@@ -126,7 +126,6 @@
126
126
  display: flex;
127
127
  flex-shrink: 0;
128
128
  align-items: center;
129
- justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
130
129
  padding: var(--#{$prefix}modal-header-padding);
131
130
  border-bottom: var(--#{$prefix}modal-header-border-width) solid var(--#{$prefix}modal-header-border-color);
132
131
  @include border-top-radius(var(--#{$prefix}modal-inner-border-radius));
@@ -123,7 +123,6 @@
123
123
  .offcanvas-header {
124
124
  display: flex;
125
125
  align-items: center;
126
- justify-content: space-between;
127
126
  padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);
128
127
 
129
128
  .btn-close {
package/scss/_reboot.scss CHANGED
@@ -350,7 +350,7 @@ caption {
350
350
  padding-top: $table-cell-padding-y;
351
351
  padding-bottom: $table-cell-padding-y;
352
352
  color: var(--#{$prefix}table-caption-color, $table-caption-color);
353
- text-align: left;
353
+ @include ltr-rtl("text-align", left);
354
354
  }
355
355
 
356
356
  // 1. Removes font-weight bold by inheriting
package/scss/_tables.scss CHANGED
@@ -79,7 +79,7 @@
79
79
  //
80
80
  // When borders are added on all sides of the cells, the corners can render odd when
81
81
  // these borders do not have the same color or if they are semi-transparent.
82
- // Therefor we add top and border bottoms to the `tr`s and left and right borders
82
+ // Therefore we add top and border bottoms to the `tr`s and left and right borders
83
83
  // to the `td`s or `th`s
84
84
 
85
85
  .table-bordered {
@@ -109,21 +109,24 @@ $utilities: map-merge(
109
109
  "start": (
110
110
  property: left,
111
111
  class: start,
112
- values: $position-values
112
+ values: $position-values,
113
+ rtl: true
113
114
  ),
114
115
  "end": (
115
116
  property: right,
116
117
  class: end,
117
- values: $position-values
118
+ values: $position-values,
119
+ rtl: true
118
120
  ),
119
121
  "translate-middle": (
120
122
  property: transform,
121
123
  class: translate-middle,
122
124
  values: (
123
- null: translate(-50%, -50%),
124
- x: translateX(-50%),
125
+ null: ("ltr": translate(-50%, -50%), "rtl": translate(50%, -50%)),
126
+ x: ("ltr": translateX(-50%), "rtl": translateX(50%)),
125
127
  y: translateY(-50%),
126
- )
128
+ ),
129
+ rtl: true
127
130
  ),
128
131
  // scss-docs-end utils-position
129
132
  // scss-docs-start utils-borders
@@ -407,7 +407,7 @@ $prefix: $variable-prefix !default;
407
407
 
408
408
  // Set mobile breakpoint
409
409
 
410
- $mobile-breakpoint: md !default;
410
+ $mobile-breakpoint: lg !default;
411
411
 
412
412
  // Gradient
413
413
  //
@@ -1456,7 +1456,9 @@ $accordion-transition: $btn-transition, border-radius .15s ea
1456
1456
  $accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;
1457
1457
  $accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;
1458
1458
 
1459
- $accordion-button-focus-border-color: $input-focus-border-color !default;
1459
+ // fusv-disable
1460
+ $accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.0.0
1461
+ // fusv-enable
1460
1462
  $accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;
1461
1463
 
1462
1464
  $accordion-icon-width: 1.25rem !default;
@@ -1465,8 +1467,8 @@ $accordion-icon-active-color: $primary-text-emphasis !default;
1465
1467
  $accordion-icon-transition: transform .2s ease-in-out !default;
1466
1468
  $accordion-icon-transform: rotate(-180deg) !default;
1467
1469
 
1468
- $accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
1469
- $accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
1470
+ $accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>") !default;
1471
+ $accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>") !default;
1470
1472
  // scss-docs-end accordion-variables
1471
1473
 
1472
1474
  // Tooltips
@@ -1896,21 +1898,21 @@ $sidebar-nav-link-icon-bullet-border-width: 1px !default;
1896
1898
  $sidebar-nav-link-icon-bullet-border-color: var(--#{$prefix}tertiary-color) !default;
1897
1899
  $sidebar-nav-link-icon-bullet-border-radius: 50rem !default;
1898
1900
 
1899
- $sidebar-nav-link-hover-color: var(--#{$prefix}emphasis-color) !default;
1900
- $sidebar-nav-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;
1901
- $sidebar-nav-link-hover-icon-color: var(--#{$prefix}body-color) !default;
1902
- $sidebar-nav-link-hover-icon-bullet-bg: transparent !default;
1903
- $sidebar-nav-link-hover-icon-bullet-border-color: var(--#{$prefix}body-color) !default;
1904
-
1905
- $sidebar-nav-link-active-color: var(--#{$prefix}emphasis-color) !default;
1906
- $sidebar-nav-link-active-bg: var(--#{$prefix}tertiary-bg) !default;
1907
- $sidebar-nav-link-active-icon-color: var(--#{$prefix}primary) !default;
1908
- $sidebar-nav-link-active-icon-bullet-bg: transparent !default;
1909
- $sidebar-nav-link-active-icon-bullet-border-color: var(--#{$prefix}primary) !default;
1910
-
1911
- $sidebar-nav-link-disabled-color: var(--#{$prefix}tertiary-color) !default;
1912
- $sidebar-nav-link-disabled-icon-color: var(--#{$prefix}tertiary-color) !default;
1913
- $sidebar-nav-link-disabled-icon-bullet-bg: transparent !default;
1901
+ $sidebar-nav-link-hover-color: var(--#{$prefix}emphasis-color) !default;
1902
+ $sidebar-nav-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;
1903
+ $sidebar-nav-link-hover-icon-color: var(--#{$prefix}body-color) !default;
1904
+ $sidebar-nav-link-hover-icon-bullet-bg: transparent !default;
1905
+ $sidebar-nav-link-hover-icon-bullet-border-color: var(--#{$prefix}body-color) !default;
1906
+
1907
+ $sidebar-nav-link-active-color: var(--#{$prefix}emphasis-color) !default;
1908
+ $sidebar-nav-link-active-bg: var(--#{$prefix}tertiary-bg) !default;
1909
+ $sidebar-nav-link-active-icon-color: var(--#{$prefix}emphasis-color) !default;
1910
+ $sidebar-nav-link-active-icon-bullet-bg: transparent !default;
1911
+ $sidebar-nav-link-active-icon-bullet-border-color: var(--#{$prefix}emphasis-color) !default;
1912
+
1913
+ $sidebar-nav-link-disabled-color: var(--#{$prefix}tertiary-color) !default;
1914
+ $sidebar-nav-link-disabled-icon-color: var(--#{$prefix}tertiary-color) !default;
1915
+ $sidebar-nav-link-disabled-icon-bullet-bg: transparent !default;
1914
1916
  $sidebar-nav-link-disabled-icon-bullet-border-color: var(--#{$prefix}tertiary-color) !default;
1915
1917
 
1916
1918
  $sidebar-nav-group-bg: transparent !default;
@@ -2019,3 +2021,5 @@ $kbd-bg: var(--#{$prefix}body-color) !default;
2019
2021
  $nested-kbd-font-weight: null !default; // Deprecated in v4.2.6, removing in v6
2020
2022
 
2021
2023
  $pre-color: null !default;
2024
+
2025
+ @import "variables-dark"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5
@@ -131,7 +131,7 @@
131
131
  @include ltr-rtl("margin-left", $form-switch-padding-start * -1);
132
132
  background-image: var(--#{$prefix}form-switch-bg);
133
133
  background-position: left center;
134
- @include border-radius($form-switch-border-radius);
134
+ @include border-radius($form-switch-border-radius, 0);
135
135
  @include transition($form-switch-transition);
136
136
 
137
137
  &:focus {
@@ -1,7 +1,7 @@
1
1
  @mixin bsBanner($file) {
2
2
  /*!
3
- * CoreUI #{$file} v5.0.0-beta.1 (https://coreui.io)
4
- * Copyright (c) 2023 creativeLabs Łukasz Holeczek
3
+ * CoreUI #{$file} v5.0.0-rc-2 (https://coreui.io)
4
+ * Copyright (c) 2024 creativeLabs Łukasz Holeczek
5
5
  * Licensed under MIT (https://github.com/coreui/coreui/blob/main/LICENSE)
6
6
  */
7
7
  }
@@ -69,7 +69,12 @@
69
69
 
70
70
  &:focus {
71
71
  border-color: $border-color;
72
- box-shadow: $focus-box-shadow;
72
+ @if $enable-shadows {
73
+ @include box-shadow($input-box-shadow, $focus-box-shadow);
74
+ } @else {
75
+ // Avoid using mixin so we can pass custom focus shadow properly
76
+ box-shadow: $focus-box-shadow;
77
+ }
73
78
  }
74
79
  }
75
80
  }
@@ -100,7 +105,12 @@
100
105
 
101
106
  &:focus {
102
107
  border-color: $border-color;
103
- box-shadow: $focus-box-shadow;
108
+ @if $enable-shadows {
109
+ @include box-shadow($form-select-box-shadow, $focus-box-shadow);
110
+ } @else {
111
+ // Avoid using mixin so we can pass custom focus shadow properly
112
+ box-shadow: $focus-box-shadow;
113
+ }
104
114
  }
105
115
  }
106
116
  }
@@ -138,7 +138,7 @@
138
138
  }
139
139
  }
140
140
 
141
- // Start with `1` because `0` is and invalid value.
141
+ // Start with `1` because `0` is an invalid value.
142
142
  // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.
143
143
  @for $i from 1 through ($columns - 1) {
144
144
  .g-start#{$infix}-#{$i} {