@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.
- package/README.md +1 -0
- package/build/.eslintrc.json +10 -0
- package/build/banner.js +14 -0
- package/build/build-plugins.js +92 -0
- package/build/rollup.config.js +78 -0
- package/dist/css/cool-grid.css +3672 -0
- package/dist/css/cool-grid.css.map +30 -0
- package/dist/css/cool-grid.min.css +7 -0
- package/dist/css/cool-grid.min.css.map +1 -0
- package/dist/css/cool-reboot.css +281 -0
- package/dist/css/cool-reboot.css.map +58 -0
- package/dist/css/cool-reboot.min.css +7 -0
- package/dist/css/cool-reboot.min.css.map +1 -0
- package/dist/css/cool.css +14841 -0
- package/dist/css/cool.css.map +144 -0
- package/dist/css/cool.min.css +7 -0
- package/dist/css/cool.min.css.map +1 -0
- package/dist/js/cool.bundle.js +15304 -0
- package/dist/js/cool.bundle.js.map +1 -0
- package/dist/js/cool.bundle.min.js +45 -0
- package/dist/js/cool.bundle.min.js.map +1 -0
- package/dist/js/cool.esm.js +4766 -0
- package/dist/js/cool.esm.js.map +1 -0
- package/dist/js/cool.esm.min.js +7 -0
- package/dist/js/cool.esm.min.js.map +1 -0
- package/dist/js/cool.js +4948 -0
- package/dist/js/cool.js.map +1 -0
- package/dist/js/cool.min.js +7 -0
- package/dist/js/cool.min.js.map +1 -0
- package/html/index.html +892 -0
- package/js/dist/collapse.js +321 -0
- package/js/dist/collapse.js.map +1 -0
- package/js/dist/common.js +1474 -0
- package/js/dist/common.js.map +1 -0
- package/js/dist/cooldropdown.js +467 -0
- package/js/dist/cooldropdown.js.map +1 -0
- package/js/dist/coolpopover.js +391 -0
- package/js/dist/coolpopover.js.map +1 -0
- package/js/dist/coolsectiontabs.js +256 -0
- package/js/dist/coolsectiontabs.js.map +1 -0
- package/js/dist/coolselect.js +796 -0
- package/js/dist/coolselect.js.map +1 -0
- package/js/dist/cooltooltip.js +360 -0
- package/js/dist/cooltooltip.js.map +1 -0
- package/js/dist/coolui.js +73 -0
- package/js/dist/coolui.js.map +1 -0
- package/js/dist/dropdown.js +1716 -0
- package/js/dist/dropdown.js.map +1 -0
- package/js/dist/popover.js +587 -0
- package/js/dist/popover.js.map +1 -0
- package/js/dist/sectiontabs.js +263 -0
- package/js/dist/sectiontabs.js.map +1 -0
- package/js/dist/select.js +2029 -0
- package/js/dist/select.js.map +1 -0
- package/js/dist/tooltip.js +555 -0
- package/js/dist/tooltip.js.map +1 -0
- package/js/index.esm.js +21 -0
- package/js/index.umd.js +21 -0
- package/js/src/abstract-ui-component.js +70 -0
- package/js/src/collapse.js +258 -0
- package/js/src/common.js +280 -0
- package/js/src/dialog.js +570 -0
- package/js/src/dropdown.js +443 -0
- package/js/src/popover.js +615 -0
- package/js/src/section-tabs.js +204 -0
- package/js/src/select.js +832 -0
- package/js/src/toast.js +581 -0
- package/js/src/tooltip.js +575 -0
- package/js/src/util/animate-css.js +22 -0
- package/js/src/util/index.js +112 -0
- package/js/src/util/perfect-scrollbar.js +1316 -0
- package/less/alert.less +345 -0
- package/less/badge.less +38 -0
- package/less/bootstrap-noconflict.less +23 -0
- package/less/bootstrap.less +23 -0
- package/less/button-group.less +153 -0
- package/less/buttons.less +287 -0
- package/less/dialog-noconflict.less +174 -0
- package/less/dialog.less +203 -0
- package/less/dropdown.less +209 -0
- package/less/forms.less +770 -0
- package/less/images.less +242 -0
- package/less/input-group.less +163 -0
- package/less/list-group.less +73 -0
- package/less/mixins/aspect-ratio.less +23 -0
- package/less/mixins/border-radius.less +24 -0
- package/less/mixins/box-shadow.less +4 -0
- package/less/mixins/buttons.less +17 -0
- package/less/mixins/caret.less +51 -0
- package/less/mixins/clearfix.less +10 -0
- package/less/mixins/gradients.less +34 -0
- package/less/mixins/nav-divider.less +7 -0
- package/less/mixins/object-fit.less +13 -0
- package/less/mixins/reset-text.less +16 -0
- package/less/mixins.less +11 -0
- package/less/package.json +11 -0
- package/less/pagination.less +69 -0
- package/less/popover.less +143 -0
- package/less/project.sublime-workspace +774 -0
- package/less/reboot.less +235 -0
- package/less/section.less +793 -0
- package/less/select.less +150 -0
- package/less/tables.less +737 -0
- package/less/tabs.less +162 -0
- package/less/tooltip.less +87 -0
- package/less/type.less +71 -0
- package/less/utilities/align.less +27 -0
- package/less/utilities/animate.less +3512 -0
- package/less/utilities/background.less +70 -0
- package/less/utilities/borders.less +16 -0
- package/less/utilities/color.less +70 -0
- package/less/utilities/cursor.less +8 -0
- package/less/utilities/display.less +38 -0
- package/less/utilities/embed.less +61 -0
- package/less/utilities/flex.less +76 -0
- package/less/utilities/jquery-ui.less +116 -0
- package/less/utilities/lazyload.less +29 -0
- package/less/utilities/overflow.less +11 -0
- package/less/utilities/pace.less +25 -0
- package/less/utilities/placeholder.less +60 -0
- package/less/utilities/position.less +42 -0
- package/less/utilities/scrollbar.less +152 -0
- package/less/utilities/spacing.less +197 -0
- package/less/utilities/text.less +68 -0
- package/less/utilities/transform.less +7 -0
- package/less/utilities.less +21 -0
- package/less/variables.less +343 -0
- package/package.json +71 -0
- package/scss/LISENCE +15 -0
- package/scss/_alert.scss +125 -0
- package/scss/_badge.scss +58 -0
- package/scss/_button-group.scss +124 -0
- package/scss/_buttons.scss +206 -0
- package/scss/_custom-forms.scss +423 -0
- package/scss/_dialog.scss +149 -0
- package/scss/_dropdown.scss +234 -0
- package/scss/_forms.scss +257 -0
- package/scss/_frame.scss +523 -0
- package/scss/_functions.scss +114 -0
- package/scss/_grid.scss +35 -0
- package/scss/_images.scss +312 -0
- package/scss/_input-group.scss +245 -0
- package/scss/_list-group.scss +82 -0
- package/scss/_mixins.scss +32 -0
- package/scss/_navbar.scss +214 -0
- package/scss/_pagination.scss +79 -0
- package/scss/_popover.scss +165 -0
- package/scss/_reboot.scss +279 -0
- package/scss/_root.scss +15 -0
- package/scss/_section.scss +851 -0
- package/scss/_select.scss +166 -0
- package/scss/_tables.scss +707 -0
- package/scss/_tabs.scss +175 -0
- package/scss/_toast.scss +182 -0
- package/scss/_tooltip.scss +101 -0
- package/scss/_type.scss +90 -0
- package/scss/_utilities.scss +21 -0
- package/scss/_variables.scss +697 -0
- package/scss/cool-grid.scss +29 -0
- package/scss/cool-reboot.scss +11 -0
- package/scss/cool.scss +36 -0
- package/scss/mixins/_alert-variant.scss +40 -0
- package/scss/mixins/_aspect-ratio.scss +29 -0
- package/scss/mixins/_background-variant.scss +25 -0
- package/scss/mixins/_badge-variant.scss +13 -0
- package/scss/mixins/_breakpoints.scss +102 -0
- package/scss/mixins/_buttons.scss +104 -0
- package/scss/mixins/_caret.scss +80 -0
- package/scss/mixins/_clearfix.scss +10 -0
- package/scss/mixins/_float.scss +14 -0
- package/scss/mixins/_forms.scss +51 -0
- package/scss/mixins/_gradients.scss +40 -0
- package/scss/mixins/_grid-framework.scss +72 -0
- package/scss/mixins/_grid.scss +60 -0
- package/scss/mixins/_nav-divider.scss +9 -0
- package/scss/mixins/_object-fit.scss +16 -0
- package/scss/mixins/_reset-text.scss +19 -0
- package/scss/mixins/_text-emphasis.scss +21 -0
- package/scss/mixins/_text-hide.scss +10 -0
- package/scss/mixins/_text-truncate.scss +8 -0
- package/scss/project.sublime-workspace +491 -0
- package/scss/utilities/_align.scss +41 -0
- package/scss/utilities/_animate.scss +3512 -0
- package/scss/utilities/_background.scss +14 -0
- package/scss/utilities/_borders.scss +146 -0
- package/scss/utilities/_clearfix.scss +6 -0
- package/scss/utilities/_collapse.scss +33 -0
- package/scss/utilities/_cursor.scss +10 -0
- package/scss/utilities/_display.scss +16 -0
- package/scss/utilities/_embed.scss +78 -0
- package/scss/utilities/_flex.scss +50 -0
- package/scss/utilities/_lazyload.scss +31 -0
- package/scss/utilities/_overflow.scss +6 -0
- package/scss/utilities/_perfect-scrollbar.scss +154 -0
- package/scss/utilities/_placeholder.scss +76 -0
- package/scss/utilities/_position.scss +30 -0
- package/scss/utilities/_sizing.scss +32 -0
- package/scss/utilities/_spacing.scss +92 -0
- package/scss/utilities/_text.scss +97 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import 'jquery';
|
|
2
|
+
import { debounce } from './util/index';
|
|
3
|
+
import AbstractUIComponent from './abstract-ui-component';
|
|
4
|
+
|
|
5
|
+
const NAME = 'coolSectionTabs';
|
|
6
|
+
const DATA_KEY = 'plugin_coolSectionTabs';
|
|
7
|
+
|
|
8
|
+
class SectionTabs extends AbstractUIComponent {
|
|
9
|
+
|
|
10
|
+
constructor(el, opts) {
|
|
11
|
+
|
|
12
|
+
super();
|
|
13
|
+
|
|
14
|
+
this.opts = {};
|
|
15
|
+
|
|
16
|
+
if (window.Cool.settings.sectionTabs) {
|
|
17
|
+
|
|
18
|
+
$.extend(true, this.opts, $.fn[NAME].defaults, window.Cool.settings.sectionTabs, opts);
|
|
19
|
+
|
|
20
|
+
} else {
|
|
21
|
+
|
|
22
|
+
$.extend(true, this.opts, $.fn[NAME].defaults, opts);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
this.el = el;
|
|
26
|
+
this.debug = this.opts.debug;
|
|
27
|
+
this.init();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Init plugin
|
|
31
|
+
init() {
|
|
32
|
+
|
|
33
|
+
this.buildCache();
|
|
34
|
+
this.bindEvents();
|
|
35
|
+
this.checkForChanges();
|
|
36
|
+
this.onInit();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Remove plugin instance completely
|
|
40
|
+
destroy() {
|
|
41
|
+
|
|
42
|
+
this.unbindEvents();
|
|
43
|
+
this.$el.removeData(DATA_KEY);
|
|
44
|
+
this.onDestroy();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Update plugin data
|
|
48
|
+
update() {
|
|
49
|
+
|
|
50
|
+
this.buildCache();
|
|
51
|
+
this.onUpdate();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Cache DOM nodes for performance
|
|
55
|
+
buildCache() {
|
|
56
|
+
|
|
57
|
+
this.$el = $(this.el);
|
|
58
|
+
this.$dropdownContainer = this.$el.find('.dropdown-container');
|
|
59
|
+
this.$dropdownList = this.$el.find('.dropdown-list');
|
|
60
|
+
this.tabsCount = this.$el.find('> .tab-item').length;
|
|
61
|
+
this.tabs = this.$el.find('> .tab-item:visible');
|
|
62
|
+
|
|
63
|
+
$.each(this.tabs, function(i, el) {
|
|
64
|
+
$(el).data('width', $(el).outerWidth(true));
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
this.log(this.$el);
|
|
68
|
+
this.log(this.$dropdownContainer);
|
|
69
|
+
this.log(this.$dropdownList);
|
|
70
|
+
this.log(this.tabsCount);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Bind events that trigger methods
|
|
74
|
+
bindEvents() {
|
|
75
|
+
|
|
76
|
+
$(window).on('resize', debounce(() => {
|
|
77
|
+
this.checkForChanges();
|
|
78
|
+
}, 250));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Unbind events that trigger methods
|
|
82
|
+
unbindEvents() {
|
|
83
|
+
|
|
84
|
+
this.$el.off('.'+this._name);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Move to list
|
|
88
|
+
moveToList(el) {
|
|
89
|
+
|
|
90
|
+
$(el).insertBefore(this.$dropdownContainer);
|
|
91
|
+
|
|
92
|
+
this.checkForChanges();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Move to dropdown
|
|
96
|
+
moveToDropdown(el) {
|
|
97
|
+
|
|
98
|
+
$(el).appendTo(this.$dropdownList);
|
|
99
|
+
|
|
100
|
+
this.checkForChanges();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Overflow status
|
|
104
|
+
overflowStatus() {
|
|
105
|
+
|
|
106
|
+
if (this.$el[0].offsetWidth < this.$el[0].scrollWidth) {
|
|
107
|
+
return true;
|
|
108
|
+
} else {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// CheckForChanges
|
|
114
|
+
checkForChanges() {
|
|
115
|
+
|
|
116
|
+
let dropdownItems = this.$dropdownList.children();
|
|
117
|
+
let moveableTabs = this.$el.find('> .tab-item').not(this.$dropdownContainer);
|
|
118
|
+
let tabs = this.$el.find('> .tab-item:visible');
|
|
119
|
+
let usedSpace = 0;
|
|
120
|
+
|
|
121
|
+
$.each(tabs, function(i, el) {
|
|
122
|
+
usedSpace += $(el).outerWidth(true);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
let freeSpace = this.$el[0].offsetWidth - usedSpace;
|
|
126
|
+
|
|
127
|
+
if (dropdownItems.length > 0) {
|
|
128
|
+
|
|
129
|
+
if (!this.$dropdownContainer.hasClass('visible')) {
|
|
130
|
+
this.$dropdownContainer.addClass('visible');
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
} else {
|
|
134
|
+
|
|
135
|
+
if (this.$dropdownContainer.hasClass('visible')) {
|
|
136
|
+
this.$dropdownContainer.removeClass('visible');
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (this.overflowStatus() == true) {
|
|
141
|
+
|
|
142
|
+
if (moveableTabs.length > 0) {
|
|
143
|
+
this.moveToDropdown(moveableTabs.last());
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
} else {
|
|
147
|
+
|
|
148
|
+
if (dropdownItems.length > 0) {
|
|
149
|
+
|
|
150
|
+
if (freeSpace > dropdownItems.last().data('width')) {
|
|
151
|
+
this.moveToList(dropdownItems.last());
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
static _jQueryInterface(config) {
|
|
158
|
+
|
|
159
|
+
return this.each(function() {
|
|
160
|
+
|
|
161
|
+
let data = $(this).data(DATA_KEY);
|
|
162
|
+
const _config = typeof config === 'object' && config;
|
|
163
|
+
|
|
164
|
+
if (!data) {
|
|
165
|
+
data = new SectionTabs(this, _config);
|
|
166
|
+
$(this).data(DATA_KEY, data);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (typeof config === 'string') {
|
|
170
|
+
|
|
171
|
+
if (typeof data[config] === 'undefined') {
|
|
172
|
+
throw new TypeError(`No method named "${config}"`)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
data[config]()
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (typeof $ !== 'undefined') {
|
|
182
|
+
|
|
183
|
+
// jQuery
|
|
184
|
+
const JQUERY_NO_CONFLICT = $.fn[NAME];
|
|
185
|
+
|
|
186
|
+
$.fn[NAME] = SectionTabs._jQueryInterface;
|
|
187
|
+
$.fn[NAME].Constructor = SectionTabs;
|
|
188
|
+
|
|
189
|
+
$.fn[NAME].noConflict = () => {
|
|
190
|
+
|
|
191
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT
|
|
192
|
+
|
|
193
|
+
return SectionTabs._jQueryInterface
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
$.fn[NAME].defaults = {
|
|
197
|
+
onInit: null,
|
|
198
|
+
onUpdate: null,
|
|
199
|
+
onDestroy: null,
|
|
200
|
+
debug: false
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export default SectionTabs;
|