@coreui/coreui 4.0.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 (203) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +183 -0
  3. package/dist/css/coreui-grid.css +5004 -0
  4. package/dist/css/coreui-grid.css.map +1 -0
  5. package/dist/css/coreui-grid.min.css +8 -0
  6. package/dist/css/coreui-grid.min.css.map +1 -0
  7. package/dist/css/coreui-grid.rtl.css +5011 -0
  8. package/dist/css/coreui-grid.rtl.css.map +1 -0
  9. package/dist/css/coreui-grid.rtl.min.css +14 -0
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -0
  11. package/dist/css/coreui-reboot.css +440 -0
  12. package/dist/css/coreui-reboot.css.map +1 -0
  13. package/dist/css/coreui-reboot.min.css +8 -0
  14. package/dist/css/coreui-reboot.min.css.map +1 -0
  15. package/dist/css/coreui-reboot.rtl.css +441 -0
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -0
  17. package/dist/css/coreui-reboot.rtl.min.css +14 -0
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -0
  19. package/dist/css/coreui-utilities.css +5030 -0
  20. package/dist/css/coreui-utilities.css.map +1 -0
  21. package/dist/css/coreui-utilities.min.css +8 -0
  22. package/dist/css/coreui-utilities.min.css.map +1 -0
  23. package/dist/css/coreui-utilities.rtl.css +5024 -0
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -0
  25. package/dist/css/coreui-utilities.rtl.min.css +14 -0
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -0
  27. package/dist/css/coreui.css +12152 -0
  28. package/dist/css/coreui.css.map +1 -0
  29. package/dist/css/coreui.min.css +8 -0
  30. package/dist/css/coreui.min.css.map +1 -0
  31. package/dist/css/coreui.rtl.css +12041 -0
  32. package/dist/css/coreui.rtl.css.map +1 -0
  33. package/dist/css/coreui.rtl.min.css +14 -0
  34. package/dist/css/coreui.rtl.min.css.map +1 -0
  35. package/dist/js/coreui.bundle.js +7437 -0
  36. package/dist/js/coreui.bundle.js.map +1 -0
  37. package/dist/js/coreui.bundle.min.js +7 -0
  38. package/dist/js/coreui.bundle.min.js.map +1 -0
  39. package/dist/js/coreui.esm.js +5622 -0
  40. package/dist/js/coreui.esm.js.map +1 -0
  41. package/dist/js/coreui.esm.min.js +7 -0
  42. package/dist/js/coreui.esm.min.js.map +1 -0
  43. package/dist/js/coreui.js +5673 -0
  44. package/dist/js/coreui.js.map +1 -0
  45. package/dist/js/coreui.min.js +7 -0
  46. package/dist/js/coreui.min.js.map +1 -0
  47. package/js/dist/alert.js +208 -0
  48. package/js/dist/alert.js.map +1 -0
  49. package/js/dist/base-component.js +181 -0
  50. package/js/dist/base-component.js.map +1 -0
  51. package/js/dist/button.js +142 -0
  52. package/js/dist/button.js.map +1 -0
  53. package/js/dist/carousel.js +724 -0
  54. package/js/dist/carousel.js.map +1 -0
  55. package/js/dist/collapse.js +515 -0
  56. package/js/dist/collapse.js.map +1 -0
  57. package/js/dist/dom/data.js +72 -0
  58. package/js/dist/dom/data.js.map +1 -0
  59. package/js/dist/dom/event-handler.js +319 -0
  60. package/js/dist/dom/event-handler.js.map +1 -0
  61. package/js/dist/dom/manipulator.js +92 -0
  62. package/js/dist/dom/manipulator.js.map +1 -0
  63. package/js/dist/dom/selector-engine.js +89 -0
  64. package/js/dist/dom/selector-engine.js.map +1 -0
  65. package/js/dist/dropdown.js +700 -0
  66. package/js/dist/dropdown.js.map +1 -0
  67. package/js/dist/modal.js +891 -0
  68. package/js/dist/modal.js.map +1 -0
  69. package/js/dist/offcanvas.js +724 -0
  70. package/js/dist/offcanvas.js.map +1 -0
  71. package/js/dist/popover.js +220 -0
  72. package/js/dist/popover.js.map +1 -0
  73. package/js/dist/scrollspy.js +387 -0
  74. package/js/dist/scrollspy.js.map +1 -0
  75. package/js/dist/tab.js +317 -0
  76. package/js/dist/tab.js.map +1 -0
  77. package/js/dist/toast.js +331 -0
  78. package/js/dist/toast.js.map +1 -0
  79. package/js/dist/tooltip.js +997 -0
  80. package/js/dist/tooltip.js.map +1 -0
  81. package/js/src/alert.js +128 -0
  82. package/js/src/base-component.js +78 -0
  83. package/js/src/button.js +89 -0
  84. package/js/src/carousel.js +589 -0
  85. package/js/src/collapse.js +391 -0
  86. package/js/src/dom/data.js +60 -0
  87. package/js/src/dom/event-handler.js +352 -0
  88. package/js/src/dom/manipulator.js +83 -0
  89. package/js/src/dom/selector-engine.js +78 -0
  90. package/js/src/dropdown.js +517 -0
  91. package/js/src/modal.js +451 -0
  92. package/js/src/navigation.js +298 -0
  93. package/js/src/offcanvas.js +277 -0
  94. package/js/src/popover.js +173 -0
  95. package/js/src/scrollspy.js +298 -0
  96. package/js/src/sidebar.js +347 -0
  97. package/js/src/tab.js +227 -0
  98. package/js/src/toast.js +245 -0
  99. package/js/src/tooltip.js +750 -0
  100. package/js/src/util/backdrop.js +129 -0
  101. package/js/src/util/index.js +327 -0
  102. package/js/src/util/sanitizer.js +130 -0
  103. package/js/src/util/scrollbar.js +97 -0
  104. package/package.json +166 -0
  105. package/scss/_accordion.scss +118 -0
  106. package/scss/_alert.scss +52 -0
  107. package/scss/_avatar.scss +49 -0
  108. package/scss/_badge.scss +38 -0
  109. package/scss/_breadcrumb.scss +33 -0
  110. package/scss/_button-group.scss +139 -0
  111. package/scss/_buttons.scss +143 -0
  112. package/scss/_callout.scss +16 -0
  113. package/scss/_card.scss +215 -0
  114. package/scss/_carousel.scss +231 -0
  115. package/scss/_close.scss +40 -0
  116. package/scss/_containers.scss +41 -0
  117. package/scss/_dropdown.scss +227 -0
  118. package/scss/_footer.scss +25 -0
  119. package/scss/_forms.scss +9 -0
  120. package/scss/_functions.scss +356 -0
  121. package/scss/_grid.scss +56 -0
  122. package/scss/_header.scss +170 -0
  123. package/scss/_helpers.scss +7 -0
  124. package/scss/_icon.scss +32 -0
  125. package/scss/_images.scss +42 -0
  126. package/scss/_list-group.scss +169 -0
  127. package/scss/_mixins.scss +50 -0
  128. package/scss/_modal.scss +219 -0
  129. package/scss/_nav.scss +140 -0
  130. package/scss/_navbar.scss +254 -0
  131. package/scss/_offcanvas.scss +79 -0
  132. package/scss/_pagination.scss +64 -0
  133. package/scss/_popover.scss +158 -0
  134. package/scss/_progress.scss +91 -0
  135. package/scss/_reboot.scss +632 -0
  136. package/scss/_root.scss +25 -0
  137. package/scss/_sidebar.scss +3 -0
  138. package/scss/_spinners.scss +69 -0
  139. package/scss/_subheader.scss +72 -0
  140. package/scss/_tables.scss +166 -0
  141. package/scss/_toasts.scss +52 -0
  142. package/scss/_tooltip.scss +115 -0
  143. package/scss/_transitions.scss +21 -0
  144. package/scss/_type.scss +104 -0
  145. package/scss/_utilities.scss +678 -0
  146. package/scss/_variables.scss +1801 -0
  147. package/scss/coreui-grid.rtl.scss +12 -0
  148. package/scss/coreui-grid.scss +67 -0
  149. package/scss/coreui-reboot.rtl.scss +12 -0
  150. package/scss/coreui-reboot.scss +15 -0
  151. package/scss/coreui-utilities.rtl.scss +12 -0
  152. package/scss/coreui-utilities.scss +19 -0
  153. package/scss/coreui.rtl.scss +12 -0
  154. package/scss/coreui.scss +61 -0
  155. package/scss/forms/_floating-labels.scss +63 -0
  156. package/scss/forms/_form-check.scss +188 -0
  157. package/scss/forms/_form-control.scss +219 -0
  158. package/scss/forms/_form-range.scss +91 -0
  159. package/scss/forms/_form-select.scss +70 -0
  160. package/scss/forms/_form-text.scss +11 -0
  161. package/scss/forms/_input-group.scss +121 -0
  162. package/scss/forms/_labels.scss +36 -0
  163. package/scss/forms/_validation.scss +12 -0
  164. package/scss/helpers/_clearfix.scss +3 -0
  165. package/scss/helpers/_colored-links.scss +12 -0
  166. package/scss/helpers/_position.scss +30 -0
  167. package/scss/helpers/_ratio.scss +26 -0
  168. package/scss/helpers/_stretched-link.scss +15 -0
  169. package/scss/helpers/_text-truncation.scss +7 -0
  170. package/scss/helpers/_visually-hidden.scss +8 -0
  171. package/scss/mixins/_alert.scss +15 -0
  172. package/scss/mixins/_avatar.scss +10 -0
  173. package/scss/mixins/_border-radius.scss +78 -0
  174. package/scss/mixins/_box-shadow.scss +18 -0
  175. package/scss/mixins/_breakpoints.scss +140 -0
  176. package/scss/mixins/_buttons.scss +101 -0
  177. package/scss/mixins/_caret.scss +64 -0
  178. package/scss/mixins/_clearfix.scss +9 -0
  179. package/scss/mixins/_color-scheme.scss +7 -0
  180. package/scss/mixins/_container.scss +9 -0
  181. package/scss/mixins/_css-vars.scss +87 -0
  182. package/scss/mixins/_deprecate.scss +10 -0
  183. package/scss/mixins/_forms.scss +144 -0
  184. package/scss/mixins/_gradients.scss +47 -0
  185. package/scss/mixins/_grid.scss +132 -0
  186. package/scss/mixins/_icon.scss +6 -0
  187. package/scss/mixins/_image.scss +16 -0
  188. package/scss/mixins/_list-group.scss +18 -0
  189. package/scss/mixins/_lists.scss +7 -0
  190. package/scss/mixins/_ltr-rtl.scss +60 -0
  191. package/scss/mixins/_pagination.scss +31 -0
  192. package/scss/mixins/_reset-text.scss +17 -0
  193. package/scss/mixins/_resize.scss +6 -0
  194. package/scss/mixins/_table-variants.scss +16 -0
  195. package/scss/mixins/_text-truncate.scss +8 -0
  196. package/scss/mixins/_transition.scss +26 -0
  197. package/scss/mixins/_utilities.scss +104 -0
  198. package/scss/mixins/_visually-hidden.scss +29 -0
  199. package/scss/sidebar/_sidebar-narrow.scss +106 -0
  200. package/scss/sidebar/_sidebar-nav.scss +165 -0
  201. package/scss/sidebar/_sidebar.scss +261 -0
  202. package/scss/utilities/_api.scss +47 -0
  203. package/scss/vendor/_rfs.scss +354 -0
@@ -0,0 +1,130 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * CoreUI (v4.0.2): alert.js
4
+ * Licensed under MIT (https://coreui.io/license)
5
+ *
6
+ * This component is a modified version of the Bootstrap's util/sanitizer.js
7
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
8
+ * --------------------------------------------------------------------------
9
+ */
10
+
11
+ const uriAttrs = new Set([
12
+ 'background',
13
+ 'cite',
14
+ 'href',
15
+ 'itemtype',
16
+ 'longdesc',
17
+ 'poster',
18
+ 'src',
19
+ 'xlink:href'
20
+ ])
21
+
22
+ const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
23
+
24
+ /**
25
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
26
+ *
27
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
28
+ */
29
+ const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i
30
+
31
+ /**
32
+ * A pattern that matches safe data URLs. Only matches image, video and audio types.
33
+ *
34
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
35
+ */
36
+ const 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
37
+
38
+ const allowedAttribute = (attr, allowedAttributeList) => {
39
+ const attrName = attr.nodeName.toLowerCase()
40
+
41
+ if (allowedAttributeList.includes(attrName)) {
42
+ if (uriAttrs.has(attrName)) {
43
+ return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))
44
+ }
45
+
46
+ return true
47
+ }
48
+
49
+ const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)
50
+
51
+ // Check if a regular expression validates the attribute.
52
+ for (let i = 0, len = regExp.length; i < len; i++) {
53
+ if (regExp[i].test(attrName)) {
54
+ return true
55
+ }
56
+ }
57
+
58
+ return false
59
+ }
60
+
61
+ export const DefaultAllowlist = {
62
+ // Global attributes allowed on any supplied element below.
63
+ '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
64
+ a: ['target', 'href', 'title', 'rel'],
65
+ area: [],
66
+ b: [],
67
+ br: [],
68
+ col: [],
69
+ code: [],
70
+ div: [],
71
+ em: [],
72
+ hr: [],
73
+ h1: [],
74
+ h2: [],
75
+ h3: [],
76
+ h4: [],
77
+ h5: [],
78
+ h6: [],
79
+ i: [],
80
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
81
+ li: [],
82
+ ol: [],
83
+ p: [],
84
+ pre: [],
85
+ s: [],
86
+ small: [],
87
+ span: [],
88
+ sub: [],
89
+ sup: [],
90
+ strong: [],
91
+ u: [],
92
+ ul: []
93
+ }
94
+
95
+ export function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
96
+ if (!unsafeHtml.length) {
97
+ return unsafeHtml
98
+ }
99
+
100
+ if (sanitizeFn && typeof sanitizeFn === 'function') {
101
+ return sanitizeFn(unsafeHtml)
102
+ }
103
+
104
+ const domParser = new window.DOMParser()
105
+ const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')
106
+ const allowlistKeys = Object.keys(allowList)
107
+ const elements = [].concat(...createdDocument.body.querySelectorAll('*'))
108
+
109
+ for (let i = 0, len = elements.length; i < len; i++) {
110
+ const el = elements[i]
111
+ const elName = el.nodeName.toLowerCase()
112
+
113
+ if (!allowlistKeys.includes(elName)) {
114
+ el.remove()
115
+
116
+ continue
117
+ }
118
+
119
+ const attributeList = [].concat(...el.attributes)
120
+ const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])
121
+
122
+ attributeList.forEach(attr => {
123
+ if (!allowedAttribute(attr, allowedAttributes)) {
124
+ el.removeAttribute(attr.nodeName)
125
+ }
126
+ })
127
+ }
128
+
129
+ return createdDocument.body.innerHTML
130
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap (v5.0.2): util/scrollBar.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import SelectorEngine from '../dom/selector-engine'
9
+ import Manipulator from '../dom/manipulator'
10
+ import { isElement } from './index'
11
+
12
+ const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'
13
+ const SELECTOR_STICKY_CONTENT = '.sticky-top'
14
+
15
+ class ScrollBarHelper {
16
+ constructor() {
17
+ this._element = document.body
18
+ }
19
+
20
+ getWidth() {
21
+ // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
22
+ const documentWidth = document.documentElement.clientWidth
23
+ return Math.abs(window.innerWidth - documentWidth)
24
+ }
25
+
26
+ hide() {
27
+ const width = this.getWidth()
28
+ this._disableOverFlow()
29
+ // give padding to element to balance the hidden scrollbar width
30
+ this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)
31
+ // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
32
+ this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)
33
+ this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)
34
+ }
35
+
36
+ _disableOverFlow() {
37
+ this._saveInitialAttribute(this._element, 'overflow')
38
+ this._element.style.overflow = 'hidden'
39
+ }
40
+
41
+ _setElementAttributes(selector, styleProp, callback) {
42
+ const scrollbarWidth = this.getWidth()
43
+ const manipulationCallBack = element => {
44
+ if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
45
+ return
46
+ }
47
+
48
+ this._saveInitialAttribute(element, styleProp)
49
+ const calculatedValue = window.getComputedStyle(element)[styleProp]
50
+ element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`
51
+ }
52
+
53
+ this._applyManipulationCallback(selector, manipulationCallBack)
54
+ }
55
+
56
+ reset() {
57
+ this._resetElementAttributes(this._element, 'overflow')
58
+ this._resetElementAttributes(this._element, 'paddingRight')
59
+ this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')
60
+ this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')
61
+ }
62
+
63
+ _saveInitialAttribute(element, styleProp) {
64
+ const actualValue = element.style[styleProp]
65
+ if (actualValue) {
66
+ Manipulator.setDataAttribute(element, styleProp, actualValue)
67
+ }
68
+ }
69
+
70
+ _resetElementAttributes(selector, styleProp) {
71
+ const manipulationCallBack = element => {
72
+ const value = Manipulator.getDataAttribute(element, styleProp)
73
+ if (typeof value === 'undefined') {
74
+ element.style.removeProperty(styleProp)
75
+ } else {
76
+ Manipulator.removeDataAttribute(element, styleProp)
77
+ element.style[styleProp] = value
78
+ }
79
+ }
80
+
81
+ this._applyManipulationCallback(selector, manipulationCallBack)
82
+ }
83
+
84
+ _applyManipulationCallback(selector, callBack) {
85
+ if (isElement(selector)) {
86
+ callBack(selector)
87
+ } else {
88
+ SelectorEngine.find(selector, this._element).forEach(callBack)
89
+ }
90
+ }
91
+
92
+ isOverflowing() {
93
+ return this.getWidth() > 0
94
+ }
95
+ }
96
+
97
+ export default ScrollBarHelper
package/package.json ADDED
@@ -0,0 +1,166 @@
1
+ {
2
+ "name": "@coreui/coreui",
3
+ "description": "The most popular front-end framework for developing responsive, mobile-first projects on the web rewritten and maintain by the CoreUI Team",
4
+ "version": "4.0.2",
5
+ "config": {
6
+ "version_short": "4.0"
7
+ },
8
+ "keywords": [
9
+ "css",
10
+ "sass",
11
+ "mobile-first",
12
+ "responsive",
13
+ "front-end",
14
+ "framework",
15
+ "web"
16
+ ],
17
+ "homepage": "https://coreui.io",
18
+ "author": "The CoreUI Team (https://github.com/orgs/coreui/people)",
19
+ "scripts": {
20
+ "start": "npm-run-all --parallel watch docs-serve",
21
+ "bundlewatch": "bundlewatch --config .bundlewatch.config.json",
22
+ "changelog": "auto-changelog --template build/changelog-template.hbs --commit-limit false --package --backfill-limit 0 --starting-version v4.0.2",
23
+ "css": "npm-run-all css-compile css-prefix css-minify",
24
+ "css-compile": "sass --style expanded --source-map --embed-sources --no-error-css scss/:dist/css/",
25
+ "css-lint": "npm-run-all --continue-on-error --parallel css-lint-*",
26
+ "css-lint-stylelint": "stylelint \"**/*.{css,scss}\" --cache --cache-location .cache/.stylelintcache --rd",
27
+ "css-lint-vars": "fusv scss/ docs/assets/scss/",
28
+ "css-minify": "npm-run-all --parallel css-minify-*",
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\"",
31
+ "css-prefix": "npm-run-all --parallel css-prefix-*",
32
+ "css-prefix-main": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"",
33
+ "js": "npm-run-all js-compile js-minify",
34
+ "js-compile": "npm-run-all --parallel js-compile-*",
35
+ "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap",
36
+ "js-compile-standalone-esm": "rollup --environment ESM:true,BUNDLE:false --config build/rollup.config.js --sourcemap",
37
+ "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap",
38
+ "js-compile-plugins": "node build/build-plugins.js",
39
+ "js-lint": "eslint --cache --cache-location .cache/.eslintcache --report-unused-disable-directives .",
40
+ "js-minify": "npm-run-all --parallel js-minify-*",
41
+ "js-minify-standalone": "terser --compress --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
+ "js-minify-standalone-esm": "terser --compress --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
+ "js-minify-bundle": "terser --compress --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",
44
+ "js-test": "npm-run-all --parallel js-test-karma js-test-jquery js-test-integration-*",
45
+ "js-debug": "cross-env DEBUG=true npm run js-test-karma",
46
+ "js-test-karma": "karma start js/tests/karma.conf.js",
47
+ "js-test-integration-bundle": "rollup --config js/tests/integration/rollup.bundle.js",
48
+ "js-test-integration-modularity": "rollup --config js/tests/integration/rollup.bundle-modularity.js",
49
+ "js-test-cloud": "cross-env BROWSERSTACK=true npm run js-test-karma",
50
+ "js-test-jquery": "cross-env JQUERY=true npm run js-test-karma",
51
+ "lint": "npm-run-all --parallel js-lint css-lint lockfile-lint",
52
+ "docs": "npm-run-all docs-build docs-lint",
53
+ "docs-build": "hugo --cleanDestinationDir --enableGitInfo",
54
+ "docs-compile": "npm run docs-build",
55
+ "docs-linkinator": "linkinator _gh_pages --recurse --skip \"^(?!http://localhost)\" --verbosity error",
56
+ "docs-vnu": "node build/vnu-jar.js",
57
+ "docs-lint": "npm-run-all --parallel docs-vnu docs-linkinator",
58
+ "docs-serve": "hugo server --port 9001 --disableFastRender --enableGitInfo",
59
+ "docs-serve-only": "npx sirv-cli _gh_pages --port 9001",
60
+ "lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json",
61
+ "update-deps": "ncu -u -x karma-browserstack-launcher,terser && npm update && echo Manually update docs/assets/js/vendor",
62
+ "release": "npm-run-all dist release-sri docs-build release-zip*",
63
+ "release-sri": "node build/generate-sri.js",
64
+ "release-version": "node build/change-version.js",
65
+ "release-zip": "cross-env-shell \"rm -rf coreui-$npm_package_version-dist && cp -r dist/ coreui-$npm_package_version-dist && zip -r9 coreui-$npm_package_version-dist.zip coreui-$npm_package_version-dist && rm -rf coreui-$npm_package_version-dist\"",
66
+ "dist": "npm-run-all --parallel css js",
67
+ "test": "npm-run-all lint dist js-test docs-build docs-lint",
68
+ "netlify": "cross-env-shell HUGO_BASEURL=$DEPLOY_PRIME_URL npm-run-all dist release-sri docs-build",
69
+ "watch": "npm-run-all --parallel watch-*",
70
+ "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm-run-all css-lint css-compile css-prefix\"",
71
+ "watch-css-docs": "nodemon --watch docs/assets/scss/ --ext scss --exec \"npm run css-lint\"",
72
+ "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm-run-all js-lint js-compile\"",
73
+ "watch-js-docs": "nodemon --watch docs/assets/js/ --ext js --exec \"npm run js-lint\""
74
+ },
75
+ "style": "dist/css/coreui.css",
76
+ "sass": "scss/coreui.scss",
77
+ "main": "dist/js/coreui.js",
78
+ "module": "dist/js/coreui.esm.js",
79
+ "repository": {
80
+ "type": "git",
81
+ "url": "git+https://github.com/coreui/coreui.git"
82
+ },
83
+ "bugs": {
84
+ "url": "https://github.com/coreui/coreui/issues"
85
+ },
86
+ "license": "MIT",
87
+ "peerDependencies": {
88
+ "@popperjs/core": "^2.10.1"
89
+ },
90
+ "devDependencies": {
91
+ "@babel/cli": "^7.15.4",
92
+ "@babel/core": "^7.15.5",
93
+ "@babel/preset-env": "^7.15.6",
94
+ "@popperjs/core": "^2.10.1",
95
+ "@rollup/plugin-babel": "^5.3.0",
96
+ "@rollup/plugin-commonjs": "^20.0.0",
97
+ "@rollup/plugin-node-resolve": "^13.0.4",
98
+ "@rollup/plugin-replace": "^3.0.0",
99
+ "auto-changelog": "^2.3.0",
100
+ "autoprefixer": "^10.3.4",
101
+ "bundlewatch": "^0.3.2",
102
+ "clean-css-cli": "^5.3.3",
103
+ "cross-env": "^7.0.3",
104
+ "eslint": "^7.32.0",
105
+ "eslint-config-xo": "^0.36.0",
106
+ "eslint-plugin-import": "^2.24.2",
107
+ "eslint-plugin-unicorn": "^31.0.0",
108
+ "find-unused-sass-variables": "^3.1.0",
109
+ "glob": "^7.1.7",
110
+ "globby": "^11.0.4",
111
+ "hammer-simulator": "0.0.1",
112
+ "hugo-bin": "^0.76.1",
113
+ "ip": "^1.1.5",
114
+ "jquery": "^3.6.0",
115
+ "karma": "^6.3.4",
116
+ "karma-browserstack-launcher": "1.6.0",
117
+ "karma-chrome-launcher": "^3.1.0",
118
+ "karma-coverage-istanbul-reporter": "^3.0.3",
119
+ "karma-detect-browsers": "^2.3.3",
120
+ "karma-firefox-launcher": "^2.1.1",
121
+ "karma-jasmine": "^4.0.2",
122
+ "karma-jasmine-html-reporter": "^1.7.0",
123
+ "karma-rollup-preprocessor": "^7.0.7",
124
+ "linkinator": "^2.14.0",
125
+ "lockfile-lint": "^4.6.2",
126
+ "nodemon": "^2.0.12",
127
+ "npm-run-all": "^4.1.5",
128
+ "postcss": "^8.3.6",
129
+ "postcss-cli": "^8.3.1",
130
+ "postcss-combine-duplicated-selectors": "^10.0.3",
131
+ "rollup": "^2.56.3",
132
+ "rollup-plugin-istanbul": "^3.0.0",
133
+ "sass": "^1.39.2",
134
+ "shelljs": "^0.8.4",
135
+ "stylelint": "^13.13.1",
136
+ "stylelint-config-twbs-bootstrap": "^2.2.1",
137
+ "terser": "5.8.0",
138
+ "vnu-jar": "21.9.2"
139
+ },
140
+ "files": [
141
+ "dist/{css,js}/*.{css,js,map}",
142
+ "js/{src,dist}/**/*.{js,map}",
143
+ "scss/**/*.scss"
144
+ ],
145
+ "hugo-bin": {
146
+ "buildTags": "extended"
147
+ },
148
+ "jspm": {
149
+ "registry": "npm",
150
+ "main": "js/coreui",
151
+ "directories": {
152
+ "lib": "dist"
153
+ },
154
+ "shim": {
155
+ "js/coreui": {
156
+ "deps": [
157
+ "@popperjs/core"
158
+ ]
159
+ }
160
+ },
161
+ "dependencies": {},
162
+ "peerDependencies": {
163
+ "@popperjs/core": "^2.10.1"
164
+ }
165
+ }
166
+ }
@@ -0,0 +1,118 @@
1
+ //
2
+ // Base styles
3
+ //
4
+
5
+ .accordion-button {
6
+ position: relative;
7
+ display: flex;
8
+ align-items: center;
9
+ width: 100%;
10
+ padding: $accordion-button-padding-y $accordion-button-padding-x;
11
+ @include font-size($font-size-base);
12
+ color: var(--#{$variable-prefix}accordion-button-color, $accordion-button-color);
13
+ text-align: left; // Reset button style
14
+ background-color: var(--#{$variable-prefix}accordion-button-bg, $accordion-button-bg);
15
+ border: 0;
16
+ @include border-radius(0);
17
+ overflow-anchor: none;
18
+ @include transition($accordion-transition);
19
+
20
+ &:not(.collapsed) {
21
+ color: var(--#{$variable-prefix}accordion-button-active-color, $accordion-button-active-color);
22
+ background-color: var(--#{$variable-prefix}accordion-button-active-bg, $accordion-button-active-bg);
23
+ box-shadow: inset 0 ($accordion-border-width * -1) 0 var(--#{$variable-prefix}accordion-border-color, $accordion-border-color);
24
+
25
+ &::after {
26
+ background-image: var(--#{$variable-prefix}accordion-button-active-icon, escape-svg($accordion-button-active-icon));
27
+ transform: $accordion-icon-transform;
28
+ }
29
+ }
30
+
31
+ // Accordion icon
32
+ &::after {
33
+ flex-shrink: 0;
34
+ width: $accordion-icon-width;
35
+ height: $accordion-icon-width;
36
+ @include ltr-rtl("margin-left", auto);
37
+ content: "";
38
+ background-image: var(--#{$variable-prefix}accordion-button-icon, escape-svg($accordion-button-icon));
39
+ background-repeat: no-repeat;
40
+ background-size: $accordion-icon-width;
41
+ @include transition($accordion-icon-transition);
42
+ }
43
+
44
+ &:hover {
45
+ z-index: 2;
46
+ }
47
+
48
+ &:focus {
49
+ z-index: 3;
50
+ border-color: var(--#{$variable-prefix}accordion-button-focus-border-color, $accordion-button-focus-border-color);
51
+ outline: 0;
52
+ box-shadow: $accordion-button-focus-box-shadow;
53
+ }
54
+ }
55
+
56
+ .accordion-header {
57
+ margin-bottom: 0;
58
+ }
59
+
60
+ .accordion-item {
61
+ background-color: var(--#{$variable-prefix}accordion-bg, $accordion-bg);
62
+ border: $accordion-border-width solid var(--#{$variable-prefix}accordion-border-color, $accordion-border-color);
63
+
64
+ &:first-of-type {
65
+ @include border-top-radius($accordion-border-radius);
66
+
67
+ .accordion-button {
68
+ @include border-top-radius($accordion-inner-border-radius);
69
+ }
70
+ }
71
+
72
+ &:not(:first-of-type) {
73
+ border-top: 0;
74
+ }
75
+
76
+ // Only set a border-radius on the last item if the accordion is collapsed
77
+ &:last-of-type {
78
+ @include border-bottom-radius($accordion-border-radius);
79
+
80
+ .accordion-button {
81
+ &.collapsed {
82
+ @include border-bottom-radius($accordion-inner-border-radius);
83
+ }
84
+ }
85
+
86
+ .accordion-collapse {
87
+ @include border-bottom-radius($accordion-border-radius);
88
+ }
89
+ }
90
+ }
91
+
92
+ .accordion-body {
93
+ padding: $accordion-body-padding-y $accordion-body-padding-x;
94
+ }
95
+
96
+
97
+ // Flush accordion items
98
+ //
99
+ // Remove borders and border-radius to keep accordion items edge-to-edge.
100
+
101
+ .accordion-flush {
102
+ .accordion-collapse {
103
+ border-width: 0;
104
+ }
105
+
106
+ .accordion-item {
107
+ border-right: 0;
108
+ border-left: 0;
109
+ @include border-radius(0);
110
+
111
+ &:first-child { border-top: 0; }
112
+ &:last-child { border-bottom: 0; }
113
+
114
+ .accordion-button {
115
+ @include border-radius(0);
116
+ }
117
+ }
118
+ }