@coreui/coreui 4.1.5 → 4.2.1

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 +2 -2
  2. package/README.md +64 -11
  3. package/dist/css/coreui-grid.css +23 -949
  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 +25 -951
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +5 -5
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +35 -42
  12. package/dist/css/coreui-reboot.css.map +1 -1
  13. package/dist/css/coreui-reboot.min.css +3 -3
  14. package/dist/css/coreui-reboot.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.rtl.css +36 -44
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  17. package/dist/css/coreui-reboot.rtl.min.css +5 -5
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  19. package/dist/css/coreui-utilities.css +279 -951
  20. package/dist/css/coreui-utilities.css.map +1 -1
  21. package/dist/css/coreui-utilities.min.css +3 -3
  22. package/dist/css/coreui-utilities.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.rtl.css +275 -953
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  25. package/dist/css/coreui-utilities.rtl.min.css +5 -5
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  27. package/dist/css/coreui.css +2179 -2259
  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 +2166 -2253
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +5 -5
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/js/coreui.bundle.js +2095 -1906
  36. package/dist/js/coreui.bundle.js.map +1 -1
  37. package/dist/js/coreui.bundle.min.js +2 -2
  38. package/dist/js/coreui.bundle.min.js.map +1 -1
  39. package/dist/js/coreui.esm.js +2098 -1909
  40. package/dist/js/coreui.esm.js.map +1 -1
  41. package/dist/js/coreui.esm.min.js +2 -2
  42. package/dist/js/coreui.esm.min.js.map +1 -1
  43. package/dist/js/coreui.js +2099 -1910
  44. package/dist/js/coreui.js.map +1 -1
  45. package/dist/js/coreui.min.js +2 -2
  46. package/dist/js/coreui.min.js.map +1 -1
  47. package/js/dist/alert.js +10 -148
  48. package/js/dist/alert.js.map +1 -1
  49. package/js/dist/base-component.js +36 -122
  50. package/js/dist/base-component.js.map +1 -1
  51. package/js/dist/button.js +9 -76
  52. package/js/dist/button.js.map +1 -1
  53. package/js/dist/carousel.js +212 -507
  54. package/js/dist/carousel.js.map +1 -1
  55. package/js/dist/collapse.js +64 -251
  56. package/js/dist/collapse.js.map +1 -1
  57. package/js/dist/dom/data.js +2 -4
  58. package/js/dist/dom/data.js.map +1 -1
  59. package/js/dist/dom/event-handler.js +82 -133
  60. package/js/dist/dom/event-handler.js.map +1 -1
  61. package/js/dist/dom/manipulator.js +22 -26
  62. package/js/dist/dom/manipulator.js.map +1 -1
  63. package/js/dist/dom/selector-engine.js +16 -81
  64. package/js/dist/dom/selector-engine.js.map +1 -1
  65. package/js/dist/dropdown.js +99 -338
  66. package/js/dist/dropdown.js.map +1 -1
  67. package/js/dist/modal.js +106 -774
  68. package/js/dist/modal.js.map +1 -1
  69. package/js/dist/navigation.js +309 -0
  70. package/js/dist/navigation.js.map +1 -0
  71. package/js/dist/offcanvas.js +88 -680
  72. package/js/dist/offcanvas.js.map +1 -1
  73. package/js/dist/popover.js +35 -120
  74. package/js/dist/popover.js.map +1 -1
  75. package/js/dist/scrollspy.js +178 -264
  76. package/js/dist/scrollspy.js.map +1 -1
  77. package/js/dist/sidebar.js +347 -0
  78. package/js/dist/sidebar.js.map +1 -0
  79. package/js/dist/tab.js +226 -216
  80. package/js/dist/tab.js.map +1 -1
  81. package/js/dist/toast.js +27 -216
  82. package/js/dist/toast.js.map +1 -1
  83. package/js/dist/tooltip.js +271 -618
  84. package/js/dist/tooltip.js.map +1 -1
  85. package/js/dist/util/backdrop.js +166 -0
  86. package/js/dist/util/backdrop.js.map +1 -0
  87. package/js/dist/util/component-functions.js +47 -0
  88. package/js/dist/util/component-functions.js.map +1 -0
  89. package/js/dist/util/config.js +80 -0
  90. package/js/dist/util/config.js.map +1 -0
  91. package/js/dist/util/focustrap.js +130 -0
  92. package/js/dist/util/focustrap.js.map +1 -0
  93. package/js/dist/util/index.js +354 -0
  94. package/js/dist/util/index.js.map +1 -0
  95. package/js/dist/util/sanitizer.js +126 -0
  96. package/js/dist/util/sanitizer.js.map +1 -0
  97. package/js/dist/util/scrollbar.js +139 -0
  98. package/js/dist/util/scrollbar.js.map +1 -0
  99. package/js/dist/util/swipe.js +156 -0
  100. package/js/dist/util/swipe.js.map +1 -0
  101. package/js/dist/util/template-factory.js +178 -0
  102. package/js/dist/util/template-factory.js.map +1 -0
  103. package/js/src/alert.js +3 -15
  104. package/js/src/base-component.js +28 -18
  105. package/js/src/button.js +3 -15
  106. package/js/src/carousel.js +203 -320
  107. package/js/src/collapse.js +61 -94
  108. package/js/src/dom/data.js +1 -3
  109. package/js/src/dom/event-handler.js +74 -107
  110. package/js/src/dom/manipulator.js +22 -31
  111. package/js/src/dom/selector-engine.js +10 -19
  112. package/js/src/dropdown.js +84 -138
  113. package/js/src/modal.js +94 -158
  114. package/js/src/navigation.js +12 -13
  115. package/js/src/offcanvas.js +71 -60
  116. package/js/src/popover.js +31 -62
  117. package/js/src/scrollspy.js +166 -171
  118. package/js/src/sidebar.js +5 -8
  119. package/js/src/tab.js +201 -110
  120. package/js/src/toast.js +19 -41
  121. package/js/src/tooltip.js +264 -374
  122. package/js/src/util/backdrop.js +55 -36
  123. package/js/src/util/component-functions.js +1 -1
  124. package/js/src/util/config.js +66 -0
  125. package/js/src/util/focustrap.js +38 -28
  126. package/js/src/util/index.js +41 -57
  127. package/js/src/util/sanitizer.js +9 -17
  128. package/js/src/util/scrollbar.js +47 -30
  129. package/js/src/util/swipe.js +146 -0
  130. package/js/src/util/template-factory.js +160 -0
  131. package/package.json +40 -40
  132. package/scss/_accordion.scss +53 -25
  133. package/scss/_alert.scss +29 -9
  134. package/scss/_badge.scss +15 -6
  135. package/scss/_breadcrumb.scss +23 -11
  136. package/scss/_button-group.scss +3 -0
  137. package/scss/_buttons.scss +77 -50
  138. package/scss/_callout.scss +18 -6
  139. package/scss/_card.scss +55 -37
  140. package/scss/_carousel.scss +6 -6
  141. package/scss/_close.scss +4 -4
  142. package/scss/_containers.scss +1 -1
  143. package/scss/_dropdown.scss +86 -64
  144. package/scss/_footer.scss +15 -5
  145. package/scss/_functions.scss +11 -24
  146. package/scss/_grid.scss +3 -3
  147. package/scss/_header.scss +59 -34
  148. package/scss/_helpers.scss +1 -0
  149. package/scss/_images.scss +3 -3
  150. package/scss/_list-group.scss +47 -29
  151. package/scss/_maps.scss +54 -0
  152. package/scss/_modal.scss +70 -43
  153. package/scss/_nav.scss +53 -20
  154. package/scss/_navbar.scss +84 -94
  155. package/scss/_offcanvas.scss +120 -60
  156. package/scss/_pagination.scss +66 -21
  157. package/scss/_popover.scss +90 -52
  158. package/scss/_progress.scss +20 -9
  159. package/scss/_reboot.scss +31 -58
  160. package/scss/_root.scss +41 -21
  161. package/scss/_spinners.scss +37 -21
  162. package/scss/_subheader.scss +9 -9
  163. package/scss/_tables.scss +34 -36
  164. package/scss/_toasts.scss +35 -19
  165. package/scss/_tooltip.scss +61 -56
  166. package/scss/_utilities.scss +42 -27
  167. package/scss/_variables.scss +169 -148
  168. package/scss/coreui-grid.rtl.scss +2 -2
  169. package/scss/coreui-grid.scss +3 -2
  170. package/scss/coreui-reboot.rtl.scss +2 -2
  171. package/scss/coreui-reboot.scss +2 -2
  172. package/scss/coreui-utilities.rtl.scss +2 -2
  173. package/scss/coreui-utilities.scss +3 -2
  174. package/scss/coreui.rtl.scss +2 -2
  175. package/scss/coreui.scss +3 -2
  176. package/scss/forms/_floating-labels.scss +14 -3
  177. package/scss/forms/_form-check.scss +42 -19
  178. package/scss/forms/_form-control.scss +25 -50
  179. package/scss/forms/_form-range.scss +8 -8
  180. package/scss/forms/_form-select.scss +8 -8
  181. package/scss/forms/_form-text.scss +1 -1
  182. package/scss/forms/_input-group.scss +3 -3
  183. package/scss/forms/_labels.scss +2 -2
  184. package/scss/helpers/_color-bg.scss +10 -0
  185. package/scss/helpers/_colored-links.scss +2 -2
  186. package/scss/helpers/_position.scss +7 -1
  187. package/scss/helpers/_ratio.scss +2 -2
  188. package/scss/helpers/_vr.scss +1 -0
  189. package/scss/mixins/_alert.scss +10 -10
  190. package/scss/mixins/_breakpoints.scss +8 -8
  191. package/scss/mixins/_buttons.scss +45 -47
  192. package/scss/mixins/_container.scss +4 -2
  193. package/scss/mixins/_css-vars.scss +47 -47
  194. package/scss/mixins/_forms.scss +8 -0
  195. package/scss/mixins/_gradients.scss +1 -1
  196. package/scss/mixins/_grid.scss +11 -11
  197. package/scss/mixins/_list-group.scss +7 -9
  198. package/scss/mixins/_pagination.scss +4 -25
  199. package/scss/mixins/_table-variants.scss +20 -12
  200. package/scss/mixins/_utilities.scss +8 -3
  201. package/scss/sidebar/_sidebar-narrow.scss +10 -10
  202. package/scss/sidebar/_sidebar-nav.scss +33 -32
  203. package/scss/sidebar/_sidebar.scss +110 -56
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * CoreUI (v4.1.5): dropdown.js
3
+ * CoreUI (v4.2.1): dropdown.js
4
4
  * Licensed under MIT (https://coreui.io/license)
5
5
  *
6
6
  * This component is a modified version of the Bootstrap's offcanvas.js
@@ -12,22 +12,18 @@ import {
12
12
  defineJQueryPlugin,
13
13
  getElementFromSelector,
14
14
  isDisabled,
15
- isVisible,
16
- typeCheckConfig
15
+ isVisible
17
16
  } from './util/index'
18
17
  import ScrollBarHelper from './util/scrollbar'
19
18
  import EventHandler from './dom/event-handler'
20
19
  import BaseComponent from './base-component'
21
20
  import SelectorEngine from './dom/selector-engine'
22
- import Manipulator from './dom/manipulator'
23
21
  import Backdrop from './util/backdrop'
24
22
  import FocusTrap from './util/focustrap'
25
23
  import { enableDismissTrigger } from './util/component-functions'
26
24
 
27
25
  /**
28
- * ------------------------------------------------------------------------
29
26
  * Constants
30
- * ------------------------------------------------------------------------
31
27
  */
32
28
 
33
29
  const NAME = 'offcanvas'
@@ -37,42 +33,43 @@ const DATA_API_KEY = '.data-api'
37
33
  const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`
38
34
  const ESCAPE_KEY = 'Escape'
39
35
 
40
- const Default = {
41
- backdrop: true,
42
- keyboard: true,
43
- scroll: false
44
- }
45
-
46
- const DefaultType = {
47
- backdrop: 'boolean',
48
- keyboard: 'boolean',
49
- scroll: 'boolean'
50
- }
51
-
52
36
  const CLASS_NAME_SHOW = 'show'
37
+ const CLASS_NAME_SHOWING = 'showing'
38
+ const CLASS_NAME_HIDING = 'hiding'
53
39
  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'
54
40
  const OPEN_SELECTOR = '.offcanvas.show'
55
41
 
56
42
  const EVENT_SHOW = `show${EVENT_KEY}`
57
43
  const EVENT_SHOWN = `shown${EVENT_KEY}`
58
44
  const EVENT_HIDE = `hide${EVENT_KEY}`
45
+ const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`
59
46
  const EVENT_HIDDEN = `hidden${EVENT_KEY}`
47
+ const EVENT_RESIZE = `resize${EVENT_KEY}`
60
48
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
61
49
  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`
62
50
 
63
51
  const SELECTOR_DATA_TOGGLE = '[data-coreui-toggle="offcanvas"]'
64
52
 
53
+ const Default = {
54
+ backdrop: true,
55
+ keyboard: true,
56
+ scroll: false
57
+ }
58
+
59
+ const DefaultType = {
60
+ backdrop: '(boolean|string)',
61
+ keyboard: 'boolean',
62
+ scroll: 'boolean'
63
+ }
64
+
65
65
  /**
66
- * ------------------------------------------------------------------------
67
- * Class Definition
68
- * ------------------------------------------------------------------------
66
+ * Class definition
69
67
  */
70
68
 
71
69
  class Offcanvas extends BaseComponent {
72
70
  constructor(element, config) {
73
- super(element)
71
+ super(element, config)
74
72
 
75
- this._config = this._getConfig(config)
76
73
  this._isShown = false
77
74
  this._backdrop = this._initializeBackDrop()
78
75
  this._focustrap = this._initializeFocusTrap()
@@ -80,17 +77,19 @@ class Offcanvas extends BaseComponent {
80
77
  }
81
78
 
82
79
  // Getters
80
+ static get Default() {
81
+ return Default
82
+ }
83
83
 
84
- static get NAME() {
85
- return NAME
84
+ static get DefaultType() {
85
+ return DefaultType
86
86
  }
87
87
 
88
- static get Default() {
89
- return Default
88
+ static get NAME() {
89
+ return NAME
90
90
  }
91
91
 
92
92
  // Public
93
-
94
93
  toggle(relatedTarget) {
95
94
  return this._isShown ? this.hide() : this.show(relatedTarget)
96
95
  }
@@ -107,24 +106,23 @@ class Offcanvas extends BaseComponent {
107
106
  }
108
107
 
109
108
  this._isShown = true
110
- this._element.style.visibility = 'visible'
111
-
112
109
  this._backdrop.show()
113
110
 
114
111
  if (!this._config.scroll) {
115
112
  new ScrollBarHelper().hide()
116
113
  }
117
114
 
118
- this._element.removeAttribute('aria-hidden')
119
115
  this._element.setAttribute('aria-modal', true)
120
116
  this._element.setAttribute('role', 'dialog')
121
- this._element.classList.add(CLASS_NAME_SHOW)
117
+ this._element.classList.add(CLASS_NAME_SHOWING)
122
118
 
123
119
  const completeCallBack = () => {
124
120
  if (!this._config.scroll) {
125
121
  this._focustrap.activate()
126
122
  }
127
123
 
124
+ this._element.classList.add(CLASS_NAME_SHOW)
125
+ this._element.classList.remove(CLASS_NAME_SHOWING)
128
126
  EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })
129
127
  }
130
128
 
@@ -145,14 +143,13 @@ class Offcanvas extends BaseComponent {
145
143
  this._focustrap.deactivate()
146
144
  this._element.blur()
147
145
  this._isShown = false
148
- this._element.classList.remove(CLASS_NAME_SHOW)
146
+ this._element.classList.add(CLASS_NAME_HIDING)
149
147
  this._backdrop.hide()
150
148
 
151
149
  const completeCallback = () => {
152
- this._element.setAttribute('aria-hidden', true)
150
+ this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)
153
151
  this._element.removeAttribute('aria-modal')
154
152
  this._element.removeAttribute('role')
155
- this._element.style.visibility = 'hidden'
156
153
 
157
154
  if (!this._config.scroll) {
158
155
  new ScrollBarHelper().reset()
@@ -171,24 +168,25 @@ class Offcanvas extends BaseComponent {
171
168
  }
172
169
 
173
170
  // Private
171
+ _initializeBackDrop() {
172
+ const clickCallback = () => {
173
+ if (this._config.backdrop === 'static') {
174
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)
175
+ return
176
+ }
174
177
 
175
- _getConfig(config) {
176
- config = {
177
- ...Default,
178
- ...Manipulator.getDataAttributes(this._element),
179
- ...(typeof config === 'object' ? config : {})
178
+ this.hide()
180
179
  }
181
- typeCheckConfig(NAME, config, DefaultType)
182
- return config
183
- }
184
180
 
185
- _initializeBackDrop() {
181
+ // 'static' option will be translated to true, and booleans will keep their value
182
+ const isVisible = Boolean(this._config.backdrop)
183
+
186
184
  return new Backdrop({
187
185
  className: CLASS_NAME_BACKDROP,
188
- isVisible: this._config.backdrop,
186
+ isVisible,
189
187
  isAnimated: true,
190
188
  rootElement: this._element.parentNode,
191
- clickCallback: () => this.hide()
189
+ clickCallback: isVisible ? clickCallback : null
192
190
  })
193
191
  }
194
192
 
@@ -200,14 +198,20 @@ class Offcanvas extends BaseComponent {
200
198
 
201
199
  _addEventListeners() {
202
200
  EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
203
- if (this._config.keyboard && event.key === ESCAPE_KEY) {
204
- this.hide()
201
+ if (event.key !== ESCAPE_KEY) {
202
+ return
203
+ }
204
+
205
+ if (!this._config.keyboard) {
206
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)
207
+ return
205
208
  }
209
+
210
+ this.hide()
206
211
  })
207
212
  }
208
213
 
209
214
  // Static
210
-
211
215
  static jQueryInterface(config) {
212
216
  return this.each(function () {
213
217
  const data = Offcanvas.getOrCreateInstance(this, config)
@@ -226,9 +230,7 @@ class Offcanvas extends BaseComponent {
226
230
  }
227
231
 
228
232
  /**
229
- * ------------------------------------------------------------------------
230
- * Data Api implementation
231
- * ------------------------------------------------------------------------
233
+ * Data API implementation
232
234
  */
233
235
 
234
236
  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
@@ -250,24 +252,33 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (
250
252
  })
251
253
 
252
254
  // avoid conflict when clicking a toggler of an offcanvas, while another is open
253
- const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)
254
- if (allReadyOpen && allReadyOpen !== target) {
255
- Offcanvas.getInstance(allReadyOpen).hide()
255
+ const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)
256
+ if (alreadyOpen && alreadyOpen !== target) {
257
+ Offcanvas.getInstance(alreadyOpen).hide()
256
258
  }
257
259
 
258
260
  const data = Offcanvas.getOrCreateInstance(target)
259
261
  data.toggle(this)
260
262
  })
261
263
 
262
- EventHandler.on(window, EVENT_LOAD_DATA_API, () =>
263
- SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show())
264
- )
264
+ EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
265
+ for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
266
+ Offcanvas.getOrCreateInstance(selector).show()
267
+ }
268
+ })
269
+
270
+ EventHandler.on(window, EVENT_RESIZE, () => {
271
+ for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
272
+ if (getComputedStyle(element).position !== 'fixed') {
273
+ Offcanvas.getOrCreateInstance(element).hide()
274
+ }
275
+ }
276
+ })
265
277
 
266
278
  enableDismissTrigger(Offcanvas)
279
+
267
280
  /**
268
- * ------------------------------------------------------------------------
269
281
  * jQuery
270
- * ------------------------------------------------------------------------
271
282
  */
272
283
 
273
284
  defineJQueryPlugin(Offcanvas)
package/js/src/popover.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * --------------------------------------------------------------------------
3
- * CoreUI (v4.1.5): popover.js
3
+ * CoreUI (v4.2.1): popover.js
4
4
  * Licensed under MIT (https://coreui.io/license)
5
5
  *
6
6
  * This component is a modified version of the Bootstrap's popover.js
@@ -12,118 +12,87 @@ import { defineJQueryPlugin } from './util/index'
12
12
  import Tooltip from './tooltip'
13
13
 
14
14
  /**
15
- * ------------------------------------------------------------------------
16
15
  * Constants
17
- * ------------------------------------------------------------------------
18
16
  */
19
17
 
20
18
  const NAME = 'popover'
21
- const DATA_KEY = 'coreui.popover'
22
- const EVENT_KEY = `.${DATA_KEY}`
23
- const CLASS_PREFIX = 'bs-popover'
19
+
20
+ const SELECTOR_TITLE = '.popover-header'
21
+ const SELECTOR_CONTENT = '.popover-body'
24
22
 
25
23
  const Default = {
26
24
  ...Tooltip.Default,
27
- placement: 'right',
28
- offset: [0, 8],
29
- trigger: 'click',
30
25
  content: '',
26
+ offset: [0, 8],
27
+ placement: 'right',
31
28
  template: '<div class="popover" role="tooltip">' +
32
- '<div class="popover-arrow"></div>' +
33
- '<h3 class="popover-header"></h3>' +
34
- '<div class="popover-body"></div>' +
35
- '</div>'
29
+ '<div class="popover-arrow"></div>' +
30
+ '<h3 class="popover-header"></h3>' +
31
+ '<div class="popover-body"></div>' +
32
+ '</div>',
33
+ trigger: 'click'
36
34
  }
37
35
 
38
36
  const DefaultType = {
39
37
  ...Tooltip.DefaultType,
40
- content: '(string|element|function)'
38
+ content: '(null|string|element|function)'
41
39
  }
42
40
 
43
- const Event = {
44
- HIDE: `hide${EVENT_KEY}`,
45
- HIDDEN: `hidden${EVENT_KEY}`,
46
- SHOW: `show${EVENT_KEY}`,
47
- SHOWN: `shown${EVENT_KEY}`,
48
- INSERTED: `inserted${EVENT_KEY}`,
49
- CLICK: `click${EVENT_KEY}`,
50
- FOCUSIN: `focusin${EVENT_KEY}`,
51
- FOCUSOUT: `focusout${EVENT_KEY}`,
52
- MOUSEENTER: `mouseenter${EVENT_KEY}`,
53
- MOUSELEAVE: `mouseleave${EVENT_KEY}`
54
- }
55
-
56
- const SELECTOR_TITLE = '.popover-header'
57
- const SELECTOR_CONTENT = '.popover-body'
58
-
59
41
  /**
60
- * ------------------------------------------------------------------------
61
- * Class Definition
62
- * ------------------------------------------------------------------------
42
+ * Class definition
63
43
  */
64
44
 
65
45
  class Popover extends Tooltip {
66
46
  // Getters
67
-
68
47
  static get Default() {
69
48
  return Default
70
49
  }
71
50
 
72
- static get NAME() {
73
- return NAME
74
- }
75
-
76
- static get Event() {
77
- return Event
78
- }
79
-
80
51
  static get DefaultType() {
81
52
  return DefaultType
82
53
  }
83
54
 
84
- // Overrides
85
-
86
- isWithContent() {
87
- return this.getTitle() || this._getContent()
55
+ static get NAME() {
56
+ return NAME
88
57
  }
89
58
 
90
- setContent(tip) {
91
- this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)
92
- this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)
59
+ // Overrides
60
+ _isWithContent() {
61
+ return this._getTitle() || this._getContent()
93
62
  }
94
63
 
95
64
  // Private
65
+ _getContentForTemplate() {
66
+ return {
67
+ [SELECTOR_TITLE]: this._getTitle(),
68
+ [SELECTOR_CONTENT]: this._getContent()
69
+ }
70
+ }
96
71
 
97
72
  _getContent() {
98
73
  return this._resolvePossibleFunction(this._config.content)
99
74
  }
100
75
 
101
- _getBasicClassPrefix() {
102
- return CLASS_PREFIX
103
- }
104
-
105
76
  // Static
106
-
107
77
  static jQueryInterface(config) {
108
78
  return this.each(function () {
109
79
  const data = Popover.getOrCreateInstance(this, config)
110
80
 
111
- if (typeof config === 'string') {
112
- if (typeof data[config] === 'undefined') {
113
- throw new TypeError(`No method named "${config}"`)
114
- }
81
+ if (typeof config !== 'string') {
82
+ return
83
+ }
115
84
 
116
- data[config]()
85
+ if (typeof data[config] === 'undefined') {
86
+ throw new TypeError(`No method named "${config}"`)
117
87
  }
88
+
89
+ data[config]()
118
90
  })
119
91
  }
120
92
  }
121
93
 
122
94
  /**
123
- * ------------------------------------------------------------------------
124
95
  * jQuery
125
- * ------------------------------------------------------------------------
126
- * add .Popover to jQuery only if jQuery is present
127
96
  */
128
97
 
129
98
  defineJQueryPlugin(Popover)