@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,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;