@finqu/cool 1.1.9 → 1.2.3
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/dist/css/cool-grid.css +2 -2
- package/dist/css/cool-grid.css.map +3 -3
- package/dist/css/cool-grid.min.css +1 -1
- package/dist/css/cool-grid.min.css.map +1 -1
- package/dist/css/cool-reboot.css +6 -2
- package/dist/css/cool-reboot.css.map +11 -9
- package/dist/css/cool-reboot.min.css +2 -2
- package/dist/css/cool-reboot.min.css.map +1 -1
- package/dist/css/cool.css +2848 -771
- package/dist/css/cool.css.map +33 -29
- package/dist/css/cool.min.css +2 -2
- package/dist/css/cool.min.css.map +1 -1
- package/dist/js/cool.bundle.js +659 -185
- package/dist/js/cool.bundle.js.map +1 -1
- package/dist/js/cool.bundle.min.js +2 -2
- package/dist/js/cool.bundle.min.js.map +1 -1
- package/dist/js/cool.esm.js +659 -185
- package/dist/js/cool.esm.js.map +1 -1
- package/dist/js/cool.esm.min.js +2 -2
- package/dist/js/cool.esm.min.js.map +1 -1
- package/dist/js/cool.js +659 -185
- package/dist/js/cool.js.map +1 -1
- package/dist/js/cool.min.js +2 -2
- package/dist/js/cool.min.js.map +1 -1
- package/html/dropdown-test.html +200 -0
- package/html/index.html +1418 -101
- package/js/dist/collapse.js +1043 -629
- package/js/dist/collapse.js.map +1 -1
- package/js/dist/common.js +876 -506
- package/js/dist/common.js.map +1 -1
- package/js/dist/dropdown.js +3451 -1867
- package/js/dist/dropdown.js.map +1 -1
- package/js/dist/popover.js +273 -58
- package/js/dist/popover.js.map +1 -1
- package/js/dist/sectiontabs.js +273 -58
- package/js/dist/sectiontabs.js.map +1 -1
- package/js/dist/select.js +10031 -3660
- package/js/dist/select.js.map +1 -1
- package/js/dist/tooltip.js +1703 -1434
- package/js/dist/tooltip.js.map +1 -1
- package/js/src/abstract-ui-component.js +16 -5
- package/js/src/collapse.js +24 -10
- package/js/src/common.js +26 -0
- package/js/src/dialog.js +12 -18
- package/js/src/dropdown.js +79 -7
- package/js/src/popover.js +2 -2
- package/js/src/section-tabs.js +2 -2
- package/js/src/select.js +582 -181
- package/js/src/toast.js +2 -2
- package/js/src/tooltip.js +7 -2
- package/js/src/util/index.js +10 -0
- package/package.json +21 -21
- package/scss/_alert.scss +79 -82
- package/scss/_badge.scss +16 -22
- package/scss/_button-group.scss +4 -0
- package/scss/_buttons.scss +3 -3
- package/scss/_custom-forms.scss +14 -12
- package/scss/_dialog.scss +17 -5
- package/scss/_dropdown.scss +1 -4
- package/scss/_frame.scss +24 -3
- package/scss/_functions.scss +10 -0
- package/scss/_images.scss +52 -2
- package/scss/_input-group.scss +12 -6
- package/scss/_mixins.scss +1 -0
- package/scss/_navbar.scss +40 -0
- package/scss/_notification.scss +13 -0
- package/scss/_reboot.scss +4 -0
- package/scss/_section.scss +28 -2
- package/scss/_select.scss +10 -1
- package/scss/_tables.scss +2 -1
- package/scss/_type.scss +37 -6
- package/scss/_variables.scss +6 -5
- package/scss/cool-grid.scss +1 -1
- package/scss/cool-reboot.scss +1 -1
- package/scss/cool.scss +3 -2
- package/scss/mixins/_alert-variant.scss +13 -28
- package/scss/mixins/_badge-variant.scss +27 -5
- package/scss/mixins/_notification-variant.scss +7 -0
- package/scss/mixins/_text-truncate.scss +77 -4
- package/scss/utilities/_collapse.scss +2 -2
- package/scss/utilities/_cursor.scss +14 -2
- package/scss/utilities/_text.scss +4 -2
package/js/src/dropdown.js
CHANGED
|
@@ -68,6 +68,7 @@ class Dropdown extends AbstractUIComponent {
|
|
|
68
68
|
this.minWidth = this.$el.data('minWidth') ? this.$el.data('minWidth') : this.opts.minWidth;
|
|
69
69
|
this.scroll = this.$el.data('scroll') ? this.$el.data('scroll') : this.opts.scroll;
|
|
70
70
|
this.scrollContentHeight = this.$el.data('scrollContentHeight') ? this.$el.data('scrollContentHeight') : this.opts.scrollContentHeight;
|
|
71
|
+
this.positionObserver = this.$el.attr('data-position-observer') ? JSON.parse(this.$el.attr('data-position-observer')) : this.opts.positionObserver;
|
|
71
72
|
this.closeOnItemClick = this.$el.data('closeOnItemClick') ? this.$el.data('closeOnItemClick') : this.opts.closeOnItemClick;
|
|
72
73
|
this.content = this.$el.data('content') ? this.$el.data('content') : this.opts.content;
|
|
73
74
|
this.contentOpen = false;
|
|
@@ -247,8 +248,10 @@ class Dropdown extends AbstractUIComponent {
|
|
|
247
248
|
let dropdownTriggerHeight = this.$el.outerHeight(true);
|
|
248
249
|
let dropdownTriggerPosX = this.$el.position().left;
|
|
249
250
|
let dropdownTriggerPosY = this.$el.position().top;
|
|
250
|
-
let dropdownPosX;
|
|
251
|
-
let dropdownPosY;
|
|
251
|
+
let dropdownPosX = 0;
|
|
252
|
+
let dropdownPosY = 0;
|
|
253
|
+
let offsetX = 0;
|
|
254
|
+
let offsetY = 0;
|
|
252
255
|
|
|
253
256
|
if (placement === 'top') {
|
|
254
257
|
|
|
@@ -283,14 +286,82 @@ class Dropdown extends AbstractUIComponent {
|
|
|
283
286
|
|
|
284
287
|
if (this.offset) {
|
|
285
288
|
|
|
286
|
-
|
|
287
|
-
let offsetX = offsets[0];
|
|
288
|
-
let offsetY = offsets[1];
|
|
289
|
+
const offsets = this.offset.split(',');
|
|
289
290
|
|
|
291
|
+
offsetX = offsets[0];
|
|
292
|
+
offsetY = offsets[1];
|
|
290
293
|
dropdownPosX += parseInt(offsetX, 10);
|
|
291
294
|
dropdownPosY += parseInt(offsetY, 10);
|
|
292
295
|
}
|
|
293
296
|
|
|
297
|
+
if (this.positionObserver) {
|
|
298
|
+
|
|
299
|
+
// this is not set during init so we have to fetch it
|
|
300
|
+
// and let's assume that this containing parent fits and is inside
|
|
301
|
+
// viewport
|
|
302
|
+
let $containingParent = null;
|
|
303
|
+
|
|
304
|
+
do {
|
|
305
|
+
$containingParent = $containingParent ? $containingParent.parent() : this.$container.parent();
|
|
306
|
+
|
|
307
|
+
if (!$containingParent) {
|
|
308
|
+
$containingParent = $('body');
|
|
309
|
+
break;
|
|
310
|
+
}
|
|
311
|
+
} while ($containingParent.css('overflow-x') !== 'hidden' && $containingParent.css('overflow') !== 'hidden' && ($containingParent.prop('tagName') ? $containingParent.prop('tagName').toLowerCase() !== 'body' : false));
|
|
312
|
+
|
|
313
|
+
const containingBoundingRect = $containingParent.get(0).getBoundingClientRect();
|
|
314
|
+
const containerBoundingRect = this.$container.get(0).getBoundingClientRect();
|
|
315
|
+
|
|
316
|
+
if (containingBoundingRect.width < dropdownWidth) {
|
|
317
|
+
this.$dropdown.css('max-width', containingBoundingRect.width);
|
|
318
|
+
dropdownWidth = containingBoundingRect.width;
|
|
319
|
+
} else {
|
|
320
|
+
this.$dropdown.css('max-width', '');
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
if (containingBoundingRect.height < dropdownHeight) {
|
|
324
|
+
this.$dropdown.css('max-height', containingBoundingRect.height);
|
|
325
|
+
dropdownHeight = containingBoundingRect.height;
|
|
326
|
+
} else {
|
|
327
|
+
this.$dropdown.css('max-height', '');
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
const maxTop = Math.max(Math.abs(containingBoundingRect.y - containerBoundingRect.y), 0);
|
|
331
|
+
const maxLeft = Math.max(Math.abs(containingBoundingRect.x - containerBoundingRect.x), 0);
|
|
332
|
+
const maxRight = $containingParent.get(0).scrollWidth - (containerBoundingRect.x + containerBoundingRect.width);
|
|
333
|
+
const maxBottom = $containingParent.get(0).scrollHeight - (containerBoundingRect.y + (placement === 'dropbottom' ? containerBoundingRect.height : 0));
|
|
334
|
+
|
|
335
|
+
if (maxLeft < dropdownWidth && dropdownPosX < dropdownTriggerPosX) {
|
|
336
|
+
dropdownPosX = dropdownTriggerPosX;
|
|
337
|
+
|
|
338
|
+
// would be on top of the trigger
|
|
339
|
+
if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {
|
|
340
|
+
dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (maxRight < dropdownWidth && dropdownPosX + dropdownWidth > dropdownTriggerPosX + dropdownTriggerWidth) {
|
|
345
|
+
dropdownPosX = dropdownTriggerPosX + dropdownTriggerWidth - dropdownWidth;
|
|
346
|
+
|
|
347
|
+
if (dropdownTriggerPosY + dropdownTriggerHeight > dropdownPosY) {
|
|
348
|
+
dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + (offsetY > 0 ? offsetY : 0);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
if (dropdownPosY < dropdownTriggerPosY && maxTop < dropdownHeight) {
|
|
353
|
+
dropdownPosY = dropdownTriggerPosY + dropdownTriggerHeight + offsetY;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
if (dropdownPosY >= dropdownTriggerPosY && maxBottom < dropdownHeight) {
|
|
357
|
+
if (dropdownPosX >= dropdownTriggerPosX + dropdownTriggerWidth || dropdownTriggerPosX >= dropdownPosX + dropdownWidth) {
|
|
358
|
+
dropdownPosY = dropdownTriggerPosY - (dropdownHeight - maxBottom);
|
|
359
|
+
} else {
|
|
360
|
+
dropdownPosY = dropdownTriggerPosY - dropdownHeight - offsetY
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
294
365
|
this.$dropdown.css({
|
|
295
366
|
position: 'absolute',
|
|
296
367
|
top: '0px',
|
|
@@ -413,9 +484,9 @@ if (typeof $ !== 'undefined') {
|
|
|
413
484
|
|
|
414
485
|
$.fn[NAME].noConflict = () => {
|
|
415
486
|
|
|
416
|
-
$.fn[NAME] = JQUERY_NO_CONFLICT
|
|
487
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
417
488
|
|
|
418
|
-
return Dropdown._jQueryInterface
|
|
489
|
+
return Dropdown._jQueryInterface;
|
|
419
490
|
}
|
|
420
491
|
|
|
421
492
|
$.fn[NAME].defaults = {
|
|
@@ -427,6 +498,7 @@ if (typeof $ !== 'undefined') {
|
|
|
427
498
|
minWidth: null,
|
|
428
499
|
align: 'start',
|
|
429
500
|
closeOnItemClick: true,
|
|
501
|
+
positionObserver: true,
|
|
430
502
|
content: false,
|
|
431
503
|
scroll: true,
|
|
432
504
|
scrollContentHeight: 100,
|
package/js/src/popover.js
CHANGED
|
@@ -588,9 +588,9 @@ if (typeof $ !== 'undefined') {
|
|
|
588
588
|
|
|
589
589
|
$.fn[NAME].noConflict = () => {
|
|
590
590
|
|
|
591
|
-
$.fn[NAME] = JQUERY_NO_CONFLICT
|
|
591
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
592
592
|
|
|
593
|
-
return Popover._jQueryInterface
|
|
593
|
+
return Popover._jQueryInterface;
|
|
594
594
|
}
|
|
595
595
|
|
|
596
596
|
$.fn[NAME].defaults = {
|
package/js/src/section-tabs.js
CHANGED
|
@@ -188,9 +188,9 @@ if (typeof $ !== 'undefined') {
|
|
|
188
188
|
|
|
189
189
|
$.fn[NAME].noConflict = () => {
|
|
190
190
|
|
|
191
|
-
$.fn[NAME] = JQUERY_NO_CONFLICT
|
|
191
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
192
192
|
|
|
193
|
-
return SectionTabs._jQueryInterface
|
|
193
|
+
return SectionTabs._jQueryInterface;
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
$.fn[NAME].defaults = {
|