@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,277 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * CoreUI (v4.0.2): dropdown.js
4
+ * Licensed under MIT (https://coreui.io/license)
5
+ *
6
+ * This component is a modified version of the Bootstrap's offcanvas.js
7
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
8
+ * --------------------------------------------------------------------------
9
+ */
10
+
11
+ import {
12
+ defineJQueryPlugin,
13
+ getElementFromSelector,
14
+ isDisabled,
15
+ isVisible,
16
+ typeCheckConfig
17
+ } from './util/index'
18
+ import ScrollBarHelper from './util/scrollbar'
19
+ import EventHandler from './dom/event-handler'
20
+ import BaseComponent from './base-component'
21
+ import SelectorEngine from './dom/selector-engine'
22
+ import Manipulator from './dom/manipulator'
23
+ import Backdrop from './util/backdrop'
24
+
25
+ /**
26
+ * ------------------------------------------------------------------------
27
+ * Constants
28
+ * ------------------------------------------------------------------------
29
+ */
30
+
31
+ const NAME = 'offcanvas'
32
+ const DATA_KEY = 'coreui.offcanvas'
33
+ const EVENT_KEY = `.${DATA_KEY}`
34
+ const DATA_API_KEY = '.data-api'
35
+ const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`
36
+ const ESCAPE_KEY = 'Escape'
37
+
38
+ const Default = {
39
+ backdrop: true,
40
+ keyboard: true,
41
+ scroll: false
42
+ }
43
+
44
+ const DefaultType = {
45
+ backdrop: 'boolean',
46
+ keyboard: 'boolean',
47
+ scroll: 'boolean'
48
+ }
49
+
50
+ const CLASS_NAME_SHOW = 'show'
51
+ const OPEN_SELECTOR = '.offcanvas.show'
52
+
53
+ const EVENT_SHOW = `show${EVENT_KEY}`
54
+ const EVENT_SHOWN = `shown${EVENT_KEY}`
55
+ const EVENT_HIDE = `hide${EVENT_KEY}`
56
+ const EVENT_HIDDEN = `hidden${EVENT_KEY}`
57
+ const EVENT_FOCUSIN = `focusin${EVENT_KEY}`
58
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
59
+ const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`
60
+ const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`
61
+
62
+ const SELECTOR_DATA_DISMISS = '[data-coreui-dismiss="offcanvas"]'
63
+ const SELECTOR_DATA_TOGGLE = '[data-coreui-toggle="offcanvas"]'
64
+
65
+ /**
66
+ * ------------------------------------------------------------------------
67
+ * Class Definition
68
+ * ------------------------------------------------------------------------
69
+ */
70
+
71
+ class Offcanvas extends BaseComponent {
72
+ constructor(element, config) {
73
+ super(element)
74
+
75
+ this._config = this._getConfig(config)
76
+ this._isShown = false
77
+ this._backdrop = this._initializeBackDrop()
78
+ this._addEventListeners()
79
+ }
80
+
81
+ // Getters
82
+
83
+ static get NAME() {
84
+ return NAME
85
+ }
86
+
87
+ static get Default() {
88
+ return Default
89
+ }
90
+
91
+ // Public
92
+
93
+ toggle(relatedTarget) {
94
+ return this._isShown ? this.hide() : this.show(relatedTarget)
95
+ }
96
+
97
+ show(relatedTarget) {
98
+ if (this._isShown) {
99
+ return
100
+ }
101
+
102
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })
103
+
104
+ if (showEvent.defaultPrevented) {
105
+ return
106
+ }
107
+
108
+ this._isShown = true
109
+ this._element.style.visibility = 'visible'
110
+
111
+ this._backdrop.show()
112
+
113
+ if (!this._config.scroll) {
114
+ new ScrollBarHelper().hide()
115
+ this._enforceFocusOnElement(this._element)
116
+ }
117
+
118
+ this._element.removeAttribute('aria-hidden')
119
+ this._element.setAttribute('aria-modal', true)
120
+ this._element.setAttribute('role', 'dialog')
121
+ this._element.classList.add(CLASS_NAME_SHOW)
122
+
123
+ const completeCallBack = () => {
124
+ EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })
125
+ }
126
+
127
+ this._queueCallback(completeCallBack, this._element, true)
128
+ }
129
+
130
+ hide() {
131
+ if (!this._isShown) {
132
+ return
133
+ }
134
+
135
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)
136
+
137
+ if (hideEvent.defaultPrevented) {
138
+ return
139
+ }
140
+
141
+ EventHandler.off(document, EVENT_FOCUSIN)
142
+ this._element.blur()
143
+ this._isShown = false
144
+ this._element.classList.remove(CLASS_NAME_SHOW)
145
+ this._backdrop.hide()
146
+
147
+ const completeCallback = () => {
148
+ this._element.setAttribute('aria-hidden', true)
149
+ this._element.removeAttribute('aria-modal')
150
+ this._element.removeAttribute('role')
151
+ this._element.style.visibility = 'hidden'
152
+
153
+ if (!this._config.scroll) {
154
+ new ScrollBarHelper().reset()
155
+ }
156
+
157
+ EventHandler.trigger(this._element, EVENT_HIDDEN)
158
+ }
159
+
160
+ this._queueCallback(completeCallback, this._element, true)
161
+ }
162
+
163
+ dispose() {
164
+ this._backdrop.dispose()
165
+ super.dispose()
166
+ EventHandler.off(document, EVENT_FOCUSIN)
167
+ }
168
+
169
+ // Private
170
+
171
+ _getConfig(config) {
172
+ config = {
173
+ ...Default,
174
+ ...Manipulator.getDataAttributes(this._element),
175
+ ...(typeof config === 'object' ? config : {})
176
+ }
177
+ typeCheckConfig(NAME, config, DefaultType)
178
+ return config
179
+ }
180
+
181
+ _initializeBackDrop() {
182
+ return new Backdrop({
183
+ isVisible: this._config.backdrop,
184
+ isAnimated: true,
185
+ rootElement: this._element.parentNode,
186
+ clickCallback: () => this.hide()
187
+ })
188
+ }
189
+
190
+ _enforceFocusOnElement(element) {
191
+ EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop
192
+ EventHandler.on(document, EVENT_FOCUSIN, event => {
193
+ if (document !== event.target &&
194
+ element !== event.target &&
195
+ !element.contains(event.target)) {
196
+ element.focus()
197
+ }
198
+ })
199
+ element.focus()
200
+ }
201
+
202
+ _addEventListeners() {
203
+ EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())
204
+
205
+ EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
206
+ if (this._config.keyboard && event.key === ESCAPE_KEY) {
207
+ this.hide()
208
+ }
209
+ })
210
+ }
211
+
212
+ // Static
213
+
214
+ static jQueryInterface(config) {
215
+ return this.each(function () {
216
+ const data = Offcanvas.getOrCreateInstance(this, config)
217
+
218
+ if (typeof config !== 'string') {
219
+ return
220
+ }
221
+
222
+ if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
223
+ throw new TypeError(`No method named "${config}"`)
224
+ }
225
+
226
+ data[config](this)
227
+ })
228
+ }
229
+ }
230
+
231
+ /**
232
+ * ------------------------------------------------------------------------
233
+ * Data Api implementation
234
+ * ------------------------------------------------------------------------
235
+ */
236
+
237
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
238
+ const target = getElementFromSelector(this)
239
+
240
+ if (['A', 'AREA'].includes(this.tagName)) {
241
+ event.preventDefault()
242
+ }
243
+
244
+ if (isDisabled(this)) {
245
+ return
246
+ }
247
+
248
+ EventHandler.one(target, EVENT_HIDDEN, () => {
249
+ // focus on trigger when it is closed
250
+ if (isVisible(this)) {
251
+ this.focus()
252
+ }
253
+ })
254
+
255
+ // avoid conflict when clicking a toggler of an offcanvas, while another is open
256
+ const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)
257
+ if (allReadyOpen && allReadyOpen !== target) {
258
+ Offcanvas.getInstance(allReadyOpen).hide()
259
+ }
260
+
261
+ const data = Offcanvas.getOrCreateInstance(target)
262
+ data.toggle(this)
263
+ })
264
+
265
+ EventHandler.on(window, EVENT_LOAD_DATA_API, () =>
266
+ SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())
267
+ )
268
+
269
+ /**
270
+ * ------------------------------------------------------------------------
271
+ * jQuery
272
+ * ------------------------------------------------------------------------
273
+ */
274
+
275
+ defineJQueryPlugin(Offcanvas)
276
+
277
+ export default Offcanvas
@@ -0,0 +1,173 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * CoreUI (v4.0.2): popover.js
4
+ * Licensed under MIT (https://coreui.io/license)
5
+ *
6
+ * This component is a modified version of the Bootstrap's popover.js
7
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
8
+ * --------------------------------------------------------------------------
9
+ */
10
+
11
+ import { defineJQueryPlugin } from './util/index'
12
+ import SelectorEngine from './dom/selector-engine'
13
+ import Tooltip from './tooltip'
14
+
15
+ /**
16
+ * ------------------------------------------------------------------------
17
+ * Constants
18
+ * ------------------------------------------------------------------------
19
+ */
20
+
21
+ const NAME = 'popover'
22
+ const DATA_KEY = 'coreui.popover'
23
+ const EVENT_KEY = `.${DATA_KEY}`
24
+ const CLASS_PREFIX = 'bs-popover'
25
+ const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\s)${CLASS_PREFIX}\\S+`, 'g')
26
+
27
+ const Default = {
28
+ ...Tooltip.Default,
29
+ placement: 'right',
30
+ offset: [0, 8],
31
+ trigger: 'click',
32
+ content: '',
33
+ template: '<div class="popover" role="tooltip">' +
34
+ '<div class="popover-arrow"></div>' +
35
+ '<h3 class="popover-header"></h3>' +
36
+ '<div class="popover-body"></div>' +
37
+ '</div>'
38
+ }
39
+
40
+ const DefaultType = {
41
+ ...Tooltip.DefaultType,
42
+ content: '(string|element|function)'
43
+ }
44
+
45
+ const Event = {
46
+ HIDE: `hide${EVENT_KEY}`,
47
+ HIDDEN: `hidden${EVENT_KEY}`,
48
+ SHOW: `show${EVENT_KEY}`,
49
+ SHOWN: `shown${EVENT_KEY}`,
50
+ INSERTED: `inserted${EVENT_KEY}`,
51
+ CLICK: `click${EVENT_KEY}`,
52
+ FOCUSIN: `focusin${EVENT_KEY}`,
53
+ FOCUSOUT: `focusout${EVENT_KEY}`,
54
+ MOUSEENTER: `mouseenter${EVENT_KEY}`,
55
+ MOUSELEAVE: `mouseleave${EVENT_KEY}`
56
+ }
57
+
58
+ const CLASS_NAME_FADE = 'fade'
59
+ const CLASS_NAME_SHOW = 'show'
60
+
61
+ const SELECTOR_TITLE = '.popover-header'
62
+ const SELECTOR_CONTENT = '.popover-body'
63
+
64
+ /**
65
+ * ------------------------------------------------------------------------
66
+ * Class Definition
67
+ * ------------------------------------------------------------------------
68
+ */
69
+
70
+ class Popover extends Tooltip {
71
+ // Getters
72
+
73
+ static get Default() {
74
+ return Default
75
+ }
76
+
77
+ static get NAME() {
78
+ return NAME
79
+ }
80
+
81
+ static get Event() {
82
+ return Event
83
+ }
84
+
85
+ static get DefaultType() {
86
+ return DefaultType
87
+ }
88
+
89
+ // Overrides
90
+
91
+ isWithContent() {
92
+ return this.getTitle() || this._getContent()
93
+ }
94
+
95
+ getTipElement() {
96
+ if (this.tip) {
97
+ return this.tip
98
+ }
99
+
100
+ this.tip = super.getTipElement()
101
+
102
+ if (!this.getTitle()) {
103
+ SelectorEngine.findOne(SELECTOR_TITLE, this.tip).remove()
104
+ }
105
+
106
+ if (!this._getContent()) {
107
+ SelectorEngine.findOne(SELECTOR_CONTENT, this.tip).remove()
108
+ }
109
+
110
+ return this.tip
111
+ }
112
+
113
+ setContent() {
114
+ const tip = this.getTipElement()
115
+
116
+ // we use append for html objects to maintain js events
117
+ this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())
118
+ let content = this._getContent()
119
+ if (typeof content === 'function') {
120
+ content = content.call(this._element)
121
+ }
122
+
123
+ this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)
124
+
125
+ tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)
126
+ }
127
+
128
+ // Private
129
+
130
+ _addAttachmentClass(attachment) {
131
+ this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)
132
+ }
133
+
134
+ _getContent() {
135
+ return this._element.getAttribute('data-coreui-content') || this._config.content
136
+ }
137
+
138
+ _cleanTipClass() {
139
+ const tip = this.getTipElement()
140
+ const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)
141
+ if (tabClass !== null && tabClass.length > 0) {
142
+ tabClass.map(token => token.trim())
143
+ .forEach(tClass => tip.classList.remove(tClass))
144
+ }
145
+ }
146
+
147
+ // Static
148
+
149
+ static jQueryInterface(config) {
150
+ return this.each(function () {
151
+ const data = Popover.getOrCreateInstance(this, config)
152
+
153
+ if (typeof config === 'string') {
154
+ if (typeof data[config] === 'undefined') {
155
+ throw new TypeError(`No method named "${config}"`)
156
+ }
157
+
158
+ data[config]()
159
+ }
160
+ })
161
+ }
162
+ }
163
+
164
+ /**
165
+ * ------------------------------------------------------------------------
166
+ * jQuery
167
+ * ------------------------------------------------------------------------
168
+ * add .Popover to jQuery only if jQuery is present
169
+ */
170
+
171
+ defineJQueryPlugin(Popover)
172
+
173
+ export default Popover