@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.
- package/LICENSE +22 -0
- package/README.md +183 -0
- package/dist/css/coreui-grid.css +5004 -0
- package/dist/css/coreui-grid.css.map +1 -0
- package/dist/css/coreui-grid.min.css +8 -0
- package/dist/css/coreui-grid.min.css.map +1 -0
- package/dist/css/coreui-grid.rtl.css +5011 -0
- package/dist/css/coreui-grid.rtl.css.map +1 -0
- package/dist/css/coreui-grid.rtl.min.css +14 -0
- package/dist/css/coreui-grid.rtl.min.css.map +1 -0
- package/dist/css/coreui-reboot.css +440 -0
- package/dist/css/coreui-reboot.css.map +1 -0
- package/dist/css/coreui-reboot.min.css +8 -0
- package/dist/css/coreui-reboot.min.css.map +1 -0
- package/dist/css/coreui-reboot.rtl.css +441 -0
- package/dist/css/coreui-reboot.rtl.css.map +1 -0
- package/dist/css/coreui-reboot.rtl.min.css +14 -0
- package/dist/css/coreui-reboot.rtl.min.css.map +1 -0
- package/dist/css/coreui-utilities.css +5030 -0
- package/dist/css/coreui-utilities.css.map +1 -0
- package/dist/css/coreui-utilities.min.css +8 -0
- package/dist/css/coreui-utilities.min.css.map +1 -0
- package/dist/css/coreui-utilities.rtl.css +5024 -0
- package/dist/css/coreui-utilities.rtl.css.map +1 -0
- package/dist/css/coreui-utilities.rtl.min.css +14 -0
- package/dist/css/coreui-utilities.rtl.min.css.map +1 -0
- package/dist/css/coreui.css +12152 -0
- package/dist/css/coreui.css.map +1 -0
- package/dist/css/coreui.min.css +8 -0
- package/dist/css/coreui.min.css.map +1 -0
- package/dist/css/coreui.rtl.css +12041 -0
- package/dist/css/coreui.rtl.css.map +1 -0
- package/dist/css/coreui.rtl.min.css +14 -0
- package/dist/css/coreui.rtl.min.css.map +1 -0
- package/dist/js/coreui.bundle.js +7437 -0
- package/dist/js/coreui.bundle.js.map +1 -0
- package/dist/js/coreui.bundle.min.js +7 -0
- package/dist/js/coreui.bundle.min.js.map +1 -0
- package/dist/js/coreui.esm.js +5622 -0
- package/dist/js/coreui.esm.js.map +1 -0
- package/dist/js/coreui.esm.min.js +7 -0
- package/dist/js/coreui.esm.min.js.map +1 -0
- package/dist/js/coreui.js +5673 -0
- package/dist/js/coreui.js.map +1 -0
- package/dist/js/coreui.min.js +7 -0
- package/dist/js/coreui.min.js.map +1 -0
- package/js/dist/alert.js +208 -0
- package/js/dist/alert.js.map +1 -0
- package/js/dist/base-component.js +181 -0
- package/js/dist/base-component.js.map +1 -0
- package/js/dist/button.js +142 -0
- package/js/dist/button.js.map +1 -0
- package/js/dist/carousel.js +724 -0
- package/js/dist/carousel.js.map +1 -0
- package/js/dist/collapse.js +515 -0
- package/js/dist/collapse.js.map +1 -0
- package/js/dist/dom/data.js +72 -0
- package/js/dist/dom/data.js.map +1 -0
- package/js/dist/dom/event-handler.js +319 -0
- package/js/dist/dom/event-handler.js.map +1 -0
- package/js/dist/dom/manipulator.js +92 -0
- package/js/dist/dom/manipulator.js.map +1 -0
- package/js/dist/dom/selector-engine.js +89 -0
- package/js/dist/dom/selector-engine.js.map +1 -0
- package/js/dist/dropdown.js +700 -0
- package/js/dist/dropdown.js.map +1 -0
- package/js/dist/modal.js +891 -0
- package/js/dist/modal.js.map +1 -0
- package/js/dist/offcanvas.js +724 -0
- package/js/dist/offcanvas.js.map +1 -0
- package/js/dist/popover.js +220 -0
- package/js/dist/popover.js.map +1 -0
- package/js/dist/scrollspy.js +387 -0
- package/js/dist/scrollspy.js.map +1 -0
- package/js/dist/tab.js +317 -0
- package/js/dist/tab.js.map +1 -0
- package/js/dist/toast.js +331 -0
- package/js/dist/toast.js.map +1 -0
- package/js/dist/tooltip.js +997 -0
- package/js/dist/tooltip.js.map +1 -0
- package/js/src/alert.js +128 -0
- package/js/src/base-component.js +78 -0
- package/js/src/button.js +89 -0
- package/js/src/carousel.js +589 -0
- package/js/src/collapse.js +391 -0
- package/js/src/dom/data.js +60 -0
- package/js/src/dom/event-handler.js +352 -0
- package/js/src/dom/manipulator.js +83 -0
- package/js/src/dom/selector-engine.js +78 -0
- package/js/src/dropdown.js +517 -0
- package/js/src/modal.js +451 -0
- package/js/src/navigation.js +298 -0
- package/js/src/offcanvas.js +277 -0
- package/js/src/popover.js +173 -0
- package/js/src/scrollspy.js +298 -0
- package/js/src/sidebar.js +347 -0
- package/js/src/tab.js +227 -0
- package/js/src/toast.js +245 -0
- package/js/src/tooltip.js +750 -0
- package/js/src/util/backdrop.js +129 -0
- package/js/src/util/index.js +327 -0
- package/js/src/util/sanitizer.js +130 -0
- package/js/src/util/scrollbar.js +97 -0
- package/package.json +166 -0
- package/scss/_accordion.scss +118 -0
- package/scss/_alert.scss +52 -0
- package/scss/_avatar.scss +49 -0
- package/scss/_badge.scss +38 -0
- package/scss/_breadcrumb.scss +33 -0
- package/scss/_button-group.scss +139 -0
- package/scss/_buttons.scss +143 -0
- package/scss/_callout.scss +16 -0
- package/scss/_card.scss +215 -0
- package/scss/_carousel.scss +231 -0
- package/scss/_close.scss +40 -0
- package/scss/_containers.scss +41 -0
- package/scss/_dropdown.scss +227 -0
- package/scss/_footer.scss +25 -0
- package/scss/_forms.scss +9 -0
- package/scss/_functions.scss +356 -0
- package/scss/_grid.scss +56 -0
- package/scss/_header.scss +170 -0
- package/scss/_helpers.scss +7 -0
- package/scss/_icon.scss +32 -0
- package/scss/_images.scss +42 -0
- package/scss/_list-group.scss +169 -0
- package/scss/_mixins.scss +50 -0
- package/scss/_modal.scss +219 -0
- package/scss/_nav.scss +140 -0
- package/scss/_navbar.scss +254 -0
- package/scss/_offcanvas.scss +79 -0
- package/scss/_pagination.scss +64 -0
- package/scss/_popover.scss +158 -0
- package/scss/_progress.scss +91 -0
- package/scss/_reboot.scss +632 -0
- package/scss/_root.scss +25 -0
- package/scss/_sidebar.scss +3 -0
- package/scss/_spinners.scss +69 -0
- package/scss/_subheader.scss +72 -0
- package/scss/_tables.scss +166 -0
- package/scss/_toasts.scss +52 -0
- package/scss/_tooltip.scss +115 -0
- package/scss/_transitions.scss +21 -0
- package/scss/_type.scss +104 -0
- package/scss/_utilities.scss +678 -0
- package/scss/_variables.scss +1801 -0
- package/scss/coreui-grid.rtl.scss +12 -0
- package/scss/coreui-grid.scss +67 -0
- package/scss/coreui-reboot.rtl.scss +12 -0
- package/scss/coreui-reboot.scss +15 -0
- package/scss/coreui-utilities.rtl.scss +12 -0
- package/scss/coreui-utilities.scss +19 -0
- package/scss/coreui.rtl.scss +12 -0
- package/scss/coreui.scss +61 -0
- package/scss/forms/_floating-labels.scss +63 -0
- package/scss/forms/_form-check.scss +188 -0
- package/scss/forms/_form-control.scss +219 -0
- package/scss/forms/_form-range.scss +91 -0
- package/scss/forms/_form-select.scss +70 -0
- package/scss/forms/_form-text.scss +11 -0
- package/scss/forms/_input-group.scss +121 -0
- package/scss/forms/_labels.scss +36 -0
- package/scss/forms/_validation.scss +12 -0
- package/scss/helpers/_clearfix.scss +3 -0
- package/scss/helpers/_colored-links.scss +12 -0
- package/scss/helpers/_position.scss +30 -0
- package/scss/helpers/_ratio.scss +26 -0
- package/scss/helpers/_stretched-link.scss +15 -0
- package/scss/helpers/_text-truncation.scss +7 -0
- package/scss/helpers/_visually-hidden.scss +8 -0
- package/scss/mixins/_alert.scss +15 -0
- package/scss/mixins/_avatar.scss +10 -0
- package/scss/mixins/_border-radius.scss +78 -0
- package/scss/mixins/_box-shadow.scss +18 -0
- package/scss/mixins/_breakpoints.scss +140 -0
- package/scss/mixins/_buttons.scss +101 -0
- package/scss/mixins/_caret.scss +64 -0
- package/scss/mixins/_clearfix.scss +9 -0
- package/scss/mixins/_color-scheme.scss +7 -0
- package/scss/mixins/_container.scss +9 -0
- package/scss/mixins/_css-vars.scss +87 -0
- package/scss/mixins/_deprecate.scss +10 -0
- package/scss/mixins/_forms.scss +144 -0
- package/scss/mixins/_gradients.scss +47 -0
- package/scss/mixins/_grid.scss +132 -0
- package/scss/mixins/_icon.scss +6 -0
- package/scss/mixins/_image.scss +16 -0
- package/scss/mixins/_list-group.scss +18 -0
- package/scss/mixins/_lists.scss +7 -0
- package/scss/mixins/_ltr-rtl.scss +60 -0
- package/scss/mixins/_pagination.scss +31 -0
- package/scss/mixins/_reset-text.scss +17 -0
- package/scss/mixins/_resize.scss +6 -0
- package/scss/mixins/_table-variants.scss +16 -0
- package/scss/mixins/_text-truncate.scss +8 -0
- package/scss/mixins/_transition.scss +26 -0
- package/scss/mixins/_utilities.scss +104 -0
- package/scss/mixins/_visually-hidden.scss +29 -0
- package/scss/sidebar/_sidebar-narrow.scss +106 -0
- package/scss/sidebar/_sidebar-nav.scss +165 -0
- package/scss/sidebar/_sidebar.scss +261 -0
- package/scss/utilities/_api.scss +47 -0
- 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
|
+
}
|