@finqu/cool 1.0.0

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 (199) hide show
  1. package/README.md +1 -0
  2. package/build/.eslintrc.json +10 -0
  3. package/build/banner.js +14 -0
  4. package/build/build-plugins.js +92 -0
  5. package/build/rollup.config.js +78 -0
  6. package/dist/css/cool-grid.css +3672 -0
  7. package/dist/css/cool-grid.css.map +30 -0
  8. package/dist/css/cool-grid.min.css +7 -0
  9. package/dist/css/cool-grid.min.css.map +1 -0
  10. package/dist/css/cool-reboot.css +281 -0
  11. package/dist/css/cool-reboot.css.map +58 -0
  12. package/dist/css/cool-reboot.min.css +7 -0
  13. package/dist/css/cool-reboot.min.css.map +1 -0
  14. package/dist/css/cool.css +14841 -0
  15. package/dist/css/cool.css.map +144 -0
  16. package/dist/css/cool.min.css +7 -0
  17. package/dist/css/cool.min.css.map +1 -0
  18. package/dist/js/cool.bundle.js +15304 -0
  19. package/dist/js/cool.bundle.js.map +1 -0
  20. package/dist/js/cool.bundle.min.js +45 -0
  21. package/dist/js/cool.bundle.min.js.map +1 -0
  22. package/dist/js/cool.esm.js +4766 -0
  23. package/dist/js/cool.esm.js.map +1 -0
  24. package/dist/js/cool.esm.min.js +7 -0
  25. package/dist/js/cool.esm.min.js.map +1 -0
  26. package/dist/js/cool.js +4948 -0
  27. package/dist/js/cool.js.map +1 -0
  28. package/dist/js/cool.min.js +7 -0
  29. package/dist/js/cool.min.js.map +1 -0
  30. package/html/index.html +892 -0
  31. package/js/dist/collapse.js +321 -0
  32. package/js/dist/collapse.js.map +1 -0
  33. package/js/dist/common.js +1474 -0
  34. package/js/dist/common.js.map +1 -0
  35. package/js/dist/cooldropdown.js +467 -0
  36. package/js/dist/cooldropdown.js.map +1 -0
  37. package/js/dist/coolpopover.js +391 -0
  38. package/js/dist/coolpopover.js.map +1 -0
  39. package/js/dist/coolsectiontabs.js +256 -0
  40. package/js/dist/coolsectiontabs.js.map +1 -0
  41. package/js/dist/coolselect.js +796 -0
  42. package/js/dist/coolselect.js.map +1 -0
  43. package/js/dist/cooltooltip.js +360 -0
  44. package/js/dist/cooltooltip.js.map +1 -0
  45. package/js/dist/coolui.js +73 -0
  46. package/js/dist/coolui.js.map +1 -0
  47. package/js/dist/dropdown.js +1716 -0
  48. package/js/dist/dropdown.js.map +1 -0
  49. package/js/dist/popover.js +587 -0
  50. package/js/dist/popover.js.map +1 -0
  51. package/js/dist/sectiontabs.js +263 -0
  52. package/js/dist/sectiontabs.js.map +1 -0
  53. package/js/dist/select.js +2029 -0
  54. package/js/dist/select.js.map +1 -0
  55. package/js/dist/tooltip.js +555 -0
  56. package/js/dist/tooltip.js.map +1 -0
  57. package/js/index.esm.js +21 -0
  58. package/js/index.umd.js +21 -0
  59. package/js/src/abstract-ui-component.js +70 -0
  60. package/js/src/collapse.js +258 -0
  61. package/js/src/common.js +280 -0
  62. package/js/src/dialog.js +570 -0
  63. package/js/src/dropdown.js +443 -0
  64. package/js/src/popover.js +615 -0
  65. package/js/src/section-tabs.js +204 -0
  66. package/js/src/select.js +832 -0
  67. package/js/src/toast.js +581 -0
  68. package/js/src/tooltip.js +575 -0
  69. package/js/src/util/animate-css.js +22 -0
  70. package/js/src/util/index.js +112 -0
  71. package/js/src/util/perfect-scrollbar.js +1316 -0
  72. package/less/alert.less +345 -0
  73. package/less/badge.less +38 -0
  74. package/less/bootstrap-noconflict.less +23 -0
  75. package/less/bootstrap.less +23 -0
  76. package/less/button-group.less +153 -0
  77. package/less/buttons.less +287 -0
  78. package/less/dialog-noconflict.less +174 -0
  79. package/less/dialog.less +203 -0
  80. package/less/dropdown.less +209 -0
  81. package/less/forms.less +770 -0
  82. package/less/images.less +242 -0
  83. package/less/input-group.less +163 -0
  84. package/less/list-group.less +73 -0
  85. package/less/mixins/aspect-ratio.less +23 -0
  86. package/less/mixins/border-radius.less +24 -0
  87. package/less/mixins/box-shadow.less +4 -0
  88. package/less/mixins/buttons.less +17 -0
  89. package/less/mixins/caret.less +51 -0
  90. package/less/mixins/clearfix.less +10 -0
  91. package/less/mixins/gradients.less +34 -0
  92. package/less/mixins/nav-divider.less +7 -0
  93. package/less/mixins/object-fit.less +13 -0
  94. package/less/mixins/reset-text.less +16 -0
  95. package/less/mixins.less +11 -0
  96. package/less/package.json +11 -0
  97. package/less/pagination.less +69 -0
  98. package/less/popover.less +143 -0
  99. package/less/project.sublime-workspace +774 -0
  100. package/less/reboot.less +235 -0
  101. package/less/section.less +793 -0
  102. package/less/select.less +150 -0
  103. package/less/tables.less +737 -0
  104. package/less/tabs.less +162 -0
  105. package/less/tooltip.less +87 -0
  106. package/less/type.less +71 -0
  107. package/less/utilities/align.less +27 -0
  108. package/less/utilities/animate.less +3512 -0
  109. package/less/utilities/background.less +70 -0
  110. package/less/utilities/borders.less +16 -0
  111. package/less/utilities/color.less +70 -0
  112. package/less/utilities/cursor.less +8 -0
  113. package/less/utilities/display.less +38 -0
  114. package/less/utilities/embed.less +61 -0
  115. package/less/utilities/flex.less +76 -0
  116. package/less/utilities/jquery-ui.less +116 -0
  117. package/less/utilities/lazyload.less +29 -0
  118. package/less/utilities/overflow.less +11 -0
  119. package/less/utilities/pace.less +25 -0
  120. package/less/utilities/placeholder.less +60 -0
  121. package/less/utilities/position.less +42 -0
  122. package/less/utilities/scrollbar.less +152 -0
  123. package/less/utilities/spacing.less +197 -0
  124. package/less/utilities/text.less +68 -0
  125. package/less/utilities/transform.less +7 -0
  126. package/less/utilities.less +21 -0
  127. package/less/variables.less +343 -0
  128. package/package.json +71 -0
  129. package/scss/LISENCE +15 -0
  130. package/scss/_alert.scss +125 -0
  131. package/scss/_badge.scss +58 -0
  132. package/scss/_button-group.scss +124 -0
  133. package/scss/_buttons.scss +206 -0
  134. package/scss/_custom-forms.scss +423 -0
  135. package/scss/_dialog.scss +149 -0
  136. package/scss/_dropdown.scss +234 -0
  137. package/scss/_forms.scss +257 -0
  138. package/scss/_frame.scss +523 -0
  139. package/scss/_functions.scss +114 -0
  140. package/scss/_grid.scss +35 -0
  141. package/scss/_images.scss +312 -0
  142. package/scss/_input-group.scss +245 -0
  143. package/scss/_list-group.scss +82 -0
  144. package/scss/_mixins.scss +32 -0
  145. package/scss/_navbar.scss +214 -0
  146. package/scss/_pagination.scss +79 -0
  147. package/scss/_popover.scss +165 -0
  148. package/scss/_reboot.scss +279 -0
  149. package/scss/_root.scss +15 -0
  150. package/scss/_section.scss +851 -0
  151. package/scss/_select.scss +166 -0
  152. package/scss/_tables.scss +707 -0
  153. package/scss/_tabs.scss +175 -0
  154. package/scss/_toast.scss +182 -0
  155. package/scss/_tooltip.scss +101 -0
  156. package/scss/_type.scss +90 -0
  157. package/scss/_utilities.scss +21 -0
  158. package/scss/_variables.scss +697 -0
  159. package/scss/cool-grid.scss +29 -0
  160. package/scss/cool-reboot.scss +11 -0
  161. package/scss/cool.scss +36 -0
  162. package/scss/mixins/_alert-variant.scss +40 -0
  163. package/scss/mixins/_aspect-ratio.scss +29 -0
  164. package/scss/mixins/_background-variant.scss +25 -0
  165. package/scss/mixins/_badge-variant.scss +13 -0
  166. package/scss/mixins/_breakpoints.scss +102 -0
  167. package/scss/mixins/_buttons.scss +104 -0
  168. package/scss/mixins/_caret.scss +80 -0
  169. package/scss/mixins/_clearfix.scss +10 -0
  170. package/scss/mixins/_float.scss +14 -0
  171. package/scss/mixins/_forms.scss +51 -0
  172. package/scss/mixins/_gradients.scss +40 -0
  173. package/scss/mixins/_grid-framework.scss +72 -0
  174. package/scss/mixins/_grid.scss +60 -0
  175. package/scss/mixins/_nav-divider.scss +9 -0
  176. package/scss/mixins/_object-fit.scss +16 -0
  177. package/scss/mixins/_reset-text.scss +19 -0
  178. package/scss/mixins/_text-emphasis.scss +21 -0
  179. package/scss/mixins/_text-hide.scss +10 -0
  180. package/scss/mixins/_text-truncate.scss +8 -0
  181. package/scss/project.sublime-workspace +491 -0
  182. package/scss/utilities/_align.scss +41 -0
  183. package/scss/utilities/_animate.scss +3512 -0
  184. package/scss/utilities/_background.scss +14 -0
  185. package/scss/utilities/_borders.scss +146 -0
  186. package/scss/utilities/_clearfix.scss +6 -0
  187. package/scss/utilities/_collapse.scss +33 -0
  188. package/scss/utilities/_cursor.scss +10 -0
  189. package/scss/utilities/_display.scss +16 -0
  190. package/scss/utilities/_embed.scss +78 -0
  191. package/scss/utilities/_flex.scss +50 -0
  192. package/scss/utilities/_lazyload.scss +31 -0
  193. package/scss/utilities/_overflow.scss +6 -0
  194. package/scss/utilities/_perfect-scrollbar.scss +154 -0
  195. package/scss/utilities/_placeholder.scss +76 -0
  196. package/scss/utilities/_position.scss +30 -0
  197. package/scss/utilities/_sizing.scss +32 -0
  198. package/scss/utilities/_spacing.scss +92 -0
  199. package/scss/utilities/_text.scss +97 -0
@@ -0,0 +1,391 @@
1
+ /*!
2
+ * Cool UI coolpopover.js v1.0.0 (https://finqu.fi)
3
+ * Copyright 2011-2019 Finqu Oy
4
+ * Licensed under the ISC license - (http://opensource.org/licenses/ISC)
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
8
+ typeof define === 'function' && define.amd ? define(factory) :
9
+ (global = global || self, global.CoolPopover = factory());
10
+ }(this, function () { 'use strict';
11
+
12
+ const {
13
+ jQuery
14
+ } = window;
15
+
16
+ const debounce = function (func, wait, immediate) {
17
+ var timeout;
18
+ return function () {
19
+ var context = this,
20
+ args = arguments;
21
+
22
+ var later = function () {
23
+ timeout = null;
24
+ if (!immediate) func.apply(context, args);
25
+ };
26
+
27
+ var callNow = immediate && !timeout;
28
+ clearTimeout(timeout);
29
+ timeout = setTimeout(later, wait);
30
+ if (callNow) func.apply(context, args);
31
+ };
32
+ };
33
+
34
+ class AbstractUIComponent {
35
+ // Create callback
36
+ onCreate() {
37
+ var onCreate = this.opts.onCreate;
38
+
39
+ if (typeof onCreate === 'function') {
40
+ onCreate.call(this.el);
41
+ }
42
+ } // Update callback
43
+
44
+
45
+ onUpdate() {
46
+ var onUpdate = this.opts.onUpdate;
47
+
48
+ if (typeof onUpdate === 'function') {
49
+ onUpdate.call(this.el);
50
+ }
51
+ } // Destroy callback
52
+
53
+
54
+ onDestroy() {
55
+ var onDestroy = this.opts.onDestroy;
56
+
57
+ if (typeof onDestroy === 'function') {
58
+ onDestroy.call(this.el);
59
+ }
60
+ } // Show callback
61
+
62
+
63
+ onShow() {
64
+ var onShow = this.opts.onShow;
65
+
66
+ if (typeof onShow === 'function') {
67
+ onShow.call(this.el);
68
+ }
69
+ } // Close callback
70
+
71
+
72
+ onClose() {
73
+ var onClose = this.opts.onClose;
74
+
75
+ if (typeof onClose === 'function') {
76
+ onClose.call(this.el);
77
+ }
78
+ }
79
+
80
+ debug(...args) {
81
+ if (this.opts.debug) {
82
+ if (typeof this.opts.debug === 'function') {
83
+ this.opts.debug(...args);
84
+ } else {
85
+ console.log(...args);
86
+ }
87
+ }
88
+ }
89
+
90
+ }
91
+
92
+ const NAME = 'coolPopover';
93
+ const DATA_KEY = 'plugin_coolPopover';
94
+
95
+ class CoolPopover extends AbstractUIComponent {
96
+ constructor(element, config) {
97
+ super();
98
+ this.el = element;
99
+ this.opts = jQuery.extend({}, jQuery.fn[NAME].defaults, config);
100
+ this.init();
101
+ } // Init plugin
102
+
103
+
104
+ init() {
105
+ this.buildCache();
106
+ this.bindEvents();
107
+ this.onCreate();
108
+ } // Remove plugin instance completely
109
+
110
+
111
+ destroy() {
112
+ this.unbindEvents();
113
+ this.$el.removeData();
114
+ this.onDestroy();
115
+ } // Update plugin data
116
+
117
+
118
+ update() {
119
+ this.buildCache();
120
+ this.onUpdate();
121
+ } // Cache DOM nodes for performance
122
+
123
+
124
+ buildCache() {
125
+ this.$el = jQuery(this.el);
126
+ this.$container = this.$el.data('container') ? jQuery(this.$el.data('container')) : jQuery(this.opts.container);
127
+ this.id = 'popover-' + this.generateUUID();
128
+ this.trigger = this.$el.data('trigger') ? this.$el.data('trigger') : this.opts.trigger;
129
+ this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;
130
+ this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;
131
+ this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;
132
+ this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;
133
+ this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;
134
+ this.title = this.$el.data('title') ? this.$el.data('title') : this.opts.title;
135
+ this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;
136
+ this.template = this.$el.data('template') ? this.$el.data('template') : this.opts.template;
137
+ this.templateAttrs = this.$el.data('templateAttrs') ? this.$el.data('templateAttrs') : this.opts.templateAttrs;
138
+ } // Bind events that trigger methods
139
+
140
+
141
+ bindEvents() {
142
+ if (this.trigger === 'click') {
143
+ this.$el.on('click' + '.' + NAME, () => {
144
+ if (this.$popover) {
145
+ this.close();
146
+ } else {
147
+ this.show();
148
+ }
149
+ });
150
+ } else if (this.trigger === 'hover') {
151
+ this.$el.on('mouseenter' + '.' + NAME, () => {
152
+ this.show();
153
+ });
154
+ this.$el.on('mouseleave' + '.' + NAME, () => {
155
+ this.close();
156
+ });
157
+ } else if (this.trigger === 'focus') {
158
+ this.$el.on('focusin' + '.' + NAME, () => {
159
+ this.show();
160
+ });
161
+ this.$el.on('focusout' + '.' + NAME, () => {
162
+ this.close();
163
+ });
164
+ }
165
+
166
+ jQuery(window).on('resize', debounce(() => {
167
+ if (this.$popover) {
168
+ this.setPosition();
169
+ this.onUpdate();
170
+ }
171
+ }, 250));
172
+ } // Unbind events that trigger methods
173
+
174
+
175
+ unbindEvents() {
176
+ this.$el.off('.' + NAME);
177
+ } // Generate UUID
178
+
179
+
180
+ generateUUID() {
181
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
182
+ var r = Math.random() * 16 | 0,
183
+ v = c == 'x' ? r : r & 0x3 | 0x8;
184
+ return v.toString(16);
185
+ });
186
+ } // Build popover
187
+
188
+
189
+ buildPopover() {
190
+ let content = this.content;
191
+
192
+ if (typeof this.opts.template === 'function') {
193
+ content = this.opts.template();
194
+ }
195
+
196
+ this.$popover = jQuery(`
197
+ <div class="popover popover-${this.placement}" role="tooltip" id="${this.id}">
198
+
199
+ <div class="arrow"></div>
200
+
201
+ <h3 class="popover-header">${this.title}</h3>
202
+
203
+ <div class="popover-body">${content}</div>
204
+
205
+ </div>
206
+ `);
207
+ this.$container.append(this.$popover);
208
+ this.$arrow = this.$popover.find('.arrow') ? this.$popover.find('.arrow') : false;
209
+ this.debug(this.$el);
210
+ this.debug(this.$container);
211
+ this.debug(this.$popover);
212
+ this.debug(this.$arrow);
213
+ this.debug('Id: ' + this.id);
214
+ this.debug('Trigger: ' + this.trigger);
215
+ this.debug('Placement: ' + this.placement);
216
+ this.debug('Animation: ' + this.animation);
217
+ this.debug('Animation in: ' + this.animationIn);
218
+ this.debug('Animation out: ' + this.animationOut);
219
+ this.debug('Animation speed: ' + this.animationSpeed);
220
+ this.debug('Title: ' + this.title);
221
+ this.debug('Content: ' + this.content);
222
+ this.debug('Template: ' + this.template);
223
+ this.debug(this.templateAttrs);
224
+ } // Set positions
225
+
226
+
227
+ setPosition(placement) {
228
+ if (typeof str === 'undefined' || str === null) {
229
+ placement = this.placement;
230
+ }
231
+
232
+ var popoverWidth = this.$popover.outerWidth(true);
233
+ var popoverHeight = this.$popover.outerHeight(true);
234
+ var popoverTriggerWidth = this.$el.outerWidth();
235
+ var popoverTriggerHeight = this.$el.outerHeight();
236
+ var popoverTriggerPosX = this.$el.position().left;
237
+ var popoverTriggerPosY = this.$el.position().top;
238
+ var arrowWidth = this.$arrow.outerWidth(true);
239
+ var arrowHeight = this.$arrow.outerHeight(true);
240
+
241
+ if (placement === 'top') {
242
+ var popoverPosX = popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2;
243
+ var popoverPosY = popoverTriggerPosY - popoverHeight;
244
+ var arrowPos = popoverWidth / 2 - arrowWidth / 2;
245
+ this.$arrow.css({
246
+ left: arrowPos + 'px'
247
+ });
248
+ } else if (placement === 'right') {
249
+ var popoverPosX = popoverTriggerPosX + popoverTriggerWidth;
250
+ var popoverPosY = popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2;
251
+ var arrowPos = popoverHeight / 2 - arrowHeight / 2;
252
+ this.$arrow.css({
253
+ top: arrowPos + 'px'
254
+ });
255
+ } else if (placement === 'bottom') {
256
+ var popoverPosX = popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2;
257
+ var popoverPosY = popoverTriggerPosY + popoverTriggerHeight;
258
+ var arrowPos = popoverWidth / 2 - arrowWidth / 2;
259
+ this.$arrow.css({
260
+ left: arrowPos + 'px'
261
+ });
262
+ } else if (placement === 'left') {
263
+ var popoverPosX = popoverTriggerPosX - popoverWidth;
264
+ var popoverPosY = popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2;
265
+ var arrowPos = popoverHeight / 2 - arrowHeight / 2;
266
+ this.$arrow.css({
267
+ top: arrowPos + 'px'
268
+ });
269
+ }
270
+
271
+ this.$popover.css({
272
+ position: 'absolute',
273
+ top: '0px',
274
+ left: '0px',
275
+ transform: 'translate3d(' + popoverPosX + 'px, ' + popoverPosY + 'px, 0px)',
276
+ 'will-change': 'transform'
277
+ });
278
+ this.debug('Popover trigger width: ' + popoverTriggerWidth + 'px');
279
+ this.debug('Popover trigger height: ' + popoverTriggerHeight + 'px');
280
+ this.debug('popover trigger position x: ' + popoverTriggerPosX + 'px');
281
+ this.debug('Popover trigger position Y: ' + popoverTriggerPosY + 'px');
282
+ this.debug('Popover width: ' + popoverWidth + 'px');
283
+ this.debug('Popover height: ' + popoverHeight + 'px');
284
+ this.debug('Popover position x: ' + popoverPosX + 'px');
285
+ this.debug('Popover position y: ' + popoverPosY + 'px');
286
+ } // Show
287
+
288
+
289
+ show() {
290
+ if (this.$popover) {
291
+ return;
292
+ }
293
+
294
+ this.buildPopover();
295
+ this.setPosition();
296
+
297
+ if (this.animation) {
298
+ this.$popover.addClass(this.animationSpeed);
299
+ this.$popover.animateCss(this.animationIn);
300
+ this.$popover.addClass('show');
301
+ this.$popover.attr('id', this.id);
302
+ this.$el.attr('data-popover', this.id);
303
+ } else {
304
+ this.$popover.addClass('show');
305
+ this.$popover.attr('id', this.id);
306
+ this.$el.attr('data-popover', this.id);
307
+ }
308
+
309
+ this.onShow();
310
+ } // Close
311
+
312
+
313
+ close() {
314
+ if (!this.$popover) {
315
+ return;
316
+ }
317
+
318
+ if (this.animation && !this.$popover.hasClass('animated')) {
319
+ this.$popover.animateCss(this.animationOut, () => {
320
+ this.$popover.remove();
321
+ this.$el.removeAttr('data-popover');
322
+ this.$popover = false;
323
+ this.onClose();
324
+ });
325
+ } else {
326
+ this.$popover.remove();
327
+ this.$el.removeAttr('data-popover');
328
+ this.$popover = false;
329
+ this.onClose();
330
+ }
331
+ }
332
+
333
+ static _jQueryInterface(config) {
334
+ return this.each(function () {
335
+ let data = jQuery(this).data(DATA_KEY);
336
+
337
+ const _config = typeof config === 'object' && config;
338
+
339
+ if (!data) {
340
+ data = new CoolPopover(this, _config);
341
+ jQuery(this).data(DATA_KEY, data);
342
+ }
343
+
344
+ if (typeof config === 'string') {
345
+ if (typeof data[config] === 'undefined') {
346
+ throw new TypeError(`No method named "${config}"`);
347
+ }
348
+
349
+ data[config]();
350
+ }
351
+ });
352
+ }
353
+
354
+ }
355
+
356
+ if (typeof jQuery !== 'undefined') {
357
+ // jQuery
358
+ const JQUERY_NO_CONFLICT = jQuery.fn[NAME];
359
+ jQuery.fn[NAME] = CoolPopover._jQueryInterface;
360
+ jQuery.fn[NAME].Constructor = CoolPopover;
361
+
362
+ jQuery.fn[NAME].noConflict = () => {
363
+ jQuery.fn[NAME] = JQUERY_NO_CONFLICT;
364
+ return CoolPopover._jQueryInterface;
365
+ };
366
+
367
+ jQuery.fn[NAME].defaults = {
368
+ container: 'body',
369
+ trigger: 'focus',
370
+ placement: 'bottom',
371
+ animation: true,
372
+ animationIn: 'fadeIn',
373
+ animationOut: 'fadeOut',
374
+ animationSpeed: 'fastest',
375
+ title: '',
376
+ content: '',
377
+ template: false,
378
+ templateAttrs: {},
379
+ onCreate: null,
380
+ onUpdate: null,
381
+ onDestroy: null,
382
+ onShow: null,
383
+ onClose: null,
384
+ debug: false
385
+ };
386
+ }
387
+
388
+ return CoolPopover;
389
+
390
+ }));
391
+ //# sourceMappingURL=coolpopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coolpopover.js","sources":["../src/util/index.js","../src/abstract-ui-component.js","../src/popover.js"],"sourcesContent":["const { jQuery } = window;\n\nconst debounce = function (func, wait, immediate) {\n\tvar timeout;\n\treturn function() {\n\t\tvar context = this, args = arguments;\n\t\tvar later = function() {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) func.apply(context, args);\n\t\t};\n\t\tvar callNow = immediate && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t\tif (callNow) func.apply(context, args);\n\t};\n};\n\nconst isArrayLike = function(collection) {\n\tvar length = getLength(collection);\n\treturn typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n};\n\nconst optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n};\n\nconst each = function(obj, iteratee, context) {\n\titeratee = optimizeCb(iteratee, context);\n\tvar i, length;\n\tif (isArrayLike(obj)) {\n\t\tfor (i = 0, length = obj.length; i < length; i++) {\n\t\t\titeratee(obj[i], i, obj);\n\t\t}\n\t} else {\n\t\tvar keys = _.keys(obj);\n\t\tfor (i = 0, length = keys.length; i < length; i++) {\n\t\t\titeratee(obj[keys[i]], keys[i], obj);\n\t\t}\n\t}\n\treturn obj;\n};\n\nconst touchEvents = function () {\n\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\treturn true;\n\t}\n};\n\nexport {\n\tjQuery,\n\tdebounce,\n\ttouchEvents,\n\teach\n}","export default class AbstractUIComponent {\n\t// Create callback\n onCreate() {\n\n var onCreate = this.opts.onCreate;\n\n if (typeof onCreate === 'function') {\n\n onCreate.call(this.el);\n }\n }\n\n // Update callback\n onUpdate() {\n\n var onUpdate = this.opts.onUpdate;\n\n if (typeof onUpdate === 'function') {\n\n onUpdate.call(this.el);\n }\n }\n\n // Destroy callback\n onDestroy() {\n\n var onDestroy = this.opts.onDestroy;\n\n if (typeof onDestroy === 'function') {\n\n onDestroy.call(this.el);\n }\n }\n\n // Show callback\n onShow() {\n\n var onShow = this.opts.onShow;\n\n if (typeof onShow === 'function') {\n\n onShow.call(this.el);\n }\n }\n\n // Close callback\n onClose() {\n\n var onClose = this.opts.onClose;\n\n if (typeof onClose === 'function') {\n\n onClose.call(this.el);\n }\n }\n\n debug(...args) {\n \tif (this.opts.debug) {\n if (typeof this.opts.debug === 'function') {\n this.opts.debug(...args);\n } else {\n \t \tconsole.log(...args);\n }\n \t}\n }\n}","import { jQuery as $, debounce } from './util/index';\nimport AbstractUIComponent from './abstract-ui-component';\n\nconst NAME = 'coolPopover';\nconst DATA_KEY = 'plugin_coolPopover';\n\nclass CoolPopover extends AbstractUIComponent {\n\n constructor(element, config) {\n super();\n\n this.el = element;\n this.opts = $.extend({}, $.fn[NAME].defaults, config);\n this.init();\n }\n\n // Init plugin\n init() {\n this.buildCache();\n this.bindEvents();\n this.onCreate();\n }\n\n // Remove plugin instance completely\n destroy() {\n\n this.unbindEvents();\n this.$el.removeData();\n this.onDestroy();\n }\n\n // Update plugin data\n update() {\n\n this.buildCache();\n this.onUpdate();\n }\n\n // Cache DOM nodes for performance\n buildCache() {\n this.$el = $(this.el);\n this.$container = this.$el.data('container') ? $(this.$el.data('container')) : $(this.opts.container);\n this.id = 'popover-'+this.generateUUID();\n this.trigger = this.$el.data('trigger') ? this.$el.data('trigger') : this.opts.trigger;\n this.placement = this.$el.data('placement') ? this.$el.data('placement') : this.opts.placement;\n this.animation = this.$el.data('animation') ? this.$el.data('animation') : this.opts.animation;\n this.animationIn = this.$el.data('animationIn') ? this.$el.data('animationIn') : this.opts.animationIn;\n this.animationOut = this.$el.data('animationOut') ? this.$el.data('animationOut') : this.opts.animationOut;\n this.animationSpeed = this.$el.data('animationSpeed') ? this.$el.data('animationSpeed') : this.opts.animationSpeed;\n this.title = this.$el.data('title') ? this.$el.data('title') : this.opts.title;\n this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;\n this.template = this.$el.data('template') ? this.$el.data('template') : this.opts.template;\n this.templateAttrs = this.$el.data('templateAttrs') ? this.$el.data('templateAttrs') : this.opts.templateAttrs;\n }\n\n // Bind events that trigger methods\n bindEvents() {\n if (this.trigger === 'click') {\n\n this.$el.on('click'+'.'+NAME, () => {\n\n if (this.$popover) {\n this.close();\n } else {\n this.show();\n }\n });\n\n } else if (this.trigger === 'hover') {\n\n this.$el.on('mouseenter'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('mouseleave'+'.'+NAME, () => {\n\n this.close();\n });\n\n } else if (this.trigger === 'focus') {\n\n this.$el.on('focusin'+'.'+NAME, () => {\n\n this.show();\n });\n\n this.$el.on('focusout'+'.'+NAME, () => {\n\n this.close();\n });\n }\n\n $(window).on('resize', debounce(() => {\n\n if (this.$popover) {\n this.setPosition();\n this.onUpdate();\n }\n }, 250));\n }\n\n // Unbind events that trigger methods\n unbindEvents() {\n\n this.$el.off('.'+NAME);\n }\n\n // Generate UUID\n generateUUID() {\n\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n // Build popover\n buildPopover() {\n \tlet content = this.content;\n\n \tif (typeof this.opts.template === 'function') {\n \t\tcontent = this.opts.template();\n \t}\n\n \tthis.$popover = $(`\n \t\t<div class=\"popover popover-${this.placement}\" role=\"tooltip\" id=\"${this.id}\">\n\n\t\t\t <div class=\"arrow\"></div>\n\n\t\t\t <h3 class=\"popover-header\">${this.title}</h3>\n\n\t\t\t <div class=\"popover-body\">${content}</div>\n\n\t\t\t</div>\n \t`);\n\n this.$container.append(this.$popover);\n this.$arrow = this.$popover.find('.arrow') ? this.$popover.find('.arrow') : false;\n\n this.debug(this.$el);\n this.debug(this.$container);\n this.debug(this.$popover);\n this.debug(this.$arrow);\n this.debug('Id: '+this.id);\n this.debug('Trigger: '+this.trigger);\n this.debug('Placement: '+this.placement);\n this.debug('Animation: '+this.animation);\n this.debug('Animation in: '+this.animationIn);\n this.debug('Animation out: '+this.animationOut);\n this.debug('Animation speed: '+this.animationSpeed);\n this.debug('Title: '+this.title);\n this.debug('Content: '+this.content);\n this.debug('Template: '+this.template);\n this.debug(this.templateAttrs);\n }\n\n // Set positions\n setPosition(placement) {\n\n if (typeof str === 'undefined' || str === null) {\n placement = this.placement;\n }\n\n var popoverWidth = this.$popover.outerWidth(true);\n var popoverHeight = this.$popover.outerHeight(true);\n var popoverTriggerWidth = this.$el.outerWidth();\n var popoverTriggerHeight = this.$el.outerHeight();\n var popoverTriggerPosX = this.$el.position().left;\n var popoverTriggerPosY = this.$el.position().top;\n var arrowWidth = this.$arrow.outerWidth(true);\n var arrowHeight = this.$arrow.outerHeight(true);\n\n if (placement === 'top') {\n\n var popoverPosX = popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2;\n var popoverPosY = popoverTriggerPosY - popoverHeight;\n var arrowPos = popoverWidth / 2 - arrowWidth / 2;\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'right') {\n\n var popoverPosX = popoverTriggerPosX + popoverTriggerWidth;\n var popoverPosY = popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2;\n var arrowPos = popoverHeight / 2 - arrowHeight / 2;\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n\n } else if (placement === 'bottom') {\n\n var popoverPosX = popoverTriggerPosX - (popoverWidth - popoverTriggerWidth) / 2;\n var popoverPosY = popoverTriggerPosY + popoverTriggerHeight;\n var arrowPos = popoverWidth / 2 - arrowWidth / 2;\n\n this.$arrow.css({\n left: arrowPos+'px'\n });\n\n } else if (placement === 'left') {\n\n var popoverPosX = popoverTriggerPosX - popoverWidth;\n var popoverPosY = popoverTriggerPosY - (popoverHeight - popoverTriggerHeight) / 2;\n var arrowPos = popoverHeight / 2 - arrowHeight / 2;\n\n this.$arrow.css({\n top: arrowPos+'px'\n });\n }\n\n this.$popover.css({\n position: 'absolute',\n top: '0px',\n left: '0px',\n transform: 'translate3d('+popoverPosX+'px, '+popoverPosY+'px, 0px)',\n 'will-change': 'transform'\n });\n\n this.debug('Popover trigger width: '+popoverTriggerWidth+'px');\n this.debug('Popover trigger height: '+popoverTriggerHeight+'px');\n this.debug('popover trigger position x: '+popoverTriggerPosX+'px');\n this.debug('Popover trigger position Y: '+popoverTriggerPosY+'px');\n this.debug('Popover width: '+popoverWidth+'px');\n this.debug('Popover height: '+popoverHeight+'px');\n this.debug('Popover position x: '+popoverPosX+'px');\n this.debug('Popover position y: '+popoverPosY+'px');\n }\n\n // Show\n show() {\n\n if (this.$popover) {\n return;\n }\n\n this.buildPopover();\n this.setPosition();\n\n if (this.animation) {\n\n this.$popover.addClass(this.animationSpeed);\n this.$popover.animateCss(this.animationIn);\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n\n } else {\n\n this.$popover.addClass('show');\n this.$popover.attr('id', this.id);\n this.$el.attr('data-popover', this.id);\n }\n\n this.onShow();\n }\n\n // Close\n close() {\n if (!this.$popover) {\n return;\n }\n\n if (this.animation && !this.$popover.hasClass('animated')) {\n\n this.$popover.animateCss(this.animationOut, () => {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = false;\n\n this.onClose();\n });\n\n } else {\n\n this.$popover.remove();\n this.$el.removeAttr('data-popover');\n this.$popover = false;\n\n this.onClose();\n }\n }\n\n static _jQueryInterface(config) {\n \treturn this.each(function() {\n \t\tlet data = $(this).data(DATA_KEY);\n \t\tconst _config = typeof config === 'object' && config;\n\n \t\tif (!data) {\n \t\t\tdata = new CoolPopover(this, _config);\n \t\t\t$(this).data(DATA_KEY, data);\n \t\t}\n\n \t\tif (typeof config === 'string') {\n \t\t\tif (typeof data[config] === 'undefined') {\n\t\t \tthrow new TypeError(`No method named \"${config}\"`)\n\t\t }\n\n\t\t data[config]()\n \t\t}\n\t });\n }\n}\n\nif (typeof $ !== 'undefined') {\n // jQuery\n const JQUERY_NO_CONFLICT = $.fn[NAME];\n $.fn[NAME] = CoolPopover._jQueryInterface;\n $.fn[NAME].Constructor = CoolPopover;\n $.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return CoolPopover._jQueryInterface\n }\n\n $.fn[NAME].defaults = {\n container: 'body',\n trigger: 'focus',\n placement: 'bottom',\n animation: true,\n animationIn: 'fadeIn',\n animationOut: 'fadeOut',\n animationSpeed: 'fastest',\n title: '',\n content: '',\n template: false,\n templateAttrs: {},\n onCreate: null,\n onUpdate: null,\n onDestroy: null,\n onShow: null,\n onClose: null,\n debug: false\n };\n\n}\n\nexport default CoolPopover;"],"names":["jQuery","window","debounce","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","clearTimeout","setTimeout","AbstractUIComponent","onCreate","opts","call","el","onUpdate","onDestroy","onShow","onClose","debug","console","log","NAME","DATA_KEY","CoolPopover","constructor","element","config","$","extend","fn","defaults","init","buildCache","bindEvents","destroy","unbindEvents","$el","removeData","update","$container","data","container","id","generateUUID","trigger","placement","animation","animationIn","animationOut","animationSpeed","title","content","template","templateAttrs","on","$popover","close","show","setPosition","off","replace","c","r","Math","random","v","toString","buildPopover","append","$arrow","find","str","popoverWidth","outerWidth","popoverHeight","outerHeight","popoverTriggerWidth","popoverTriggerHeight","popoverTriggerPosX","position","left","popoverTriggerPosY","top","arrowWidth","arrowHeight","popoverPosX","popoverPosY","arrowPos","css","transform","addClass","animateCss","attr","hasClass","remove","removeAttr","_jQueryInterface","each","_config","TypeError","JQUERY_NO_CONFLICT","Constructor","noConflict"],"mappings":"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"}