boletia_ui 0.1.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.
- checksums.yaml +7 -0
- data/README.md +42 -0
- data/lib/boletia_ui/version.rb +3 -0
- data/lib/boletia_ui.rb +8 -0
- data/vendor/assets/boletia_ui/fonts/ss-standard.css +53 -0
- data/vendor/assets/boletia_ui/fonts/ss-standard.eot +0 -0
- data/vendor/assets/boletia_ui/fonts/ss-standard.js +84 -0
- data/vendor/assets/boletia_ui/fonts/ss-standard.svg +404 -0
- data/vendor/assets/boletia_ui/fonts/ss-standard.ttf +0 -0
- data/vendor/assets/boletia_ui/fonts/ss-standard.woff +0 -0
- data/vendor/assets/boletia_ui/images/cancel.png +0 -0
- data/vendor/assets/boletia_ui/images/check.png +0 -0
- data/vendor/assets/boletia_ui/images/default-search.png +0 -0
- data/vendor/assets/boletia_ui/images/download.png +0 -0
- data/vendor/assets/boletia_ui/images/edit.png +0 -0
- data/vendor/assets/boletia_ui/images/icon-logo140.png +0 -0
- data/vendor/assets/boletia_ui/images/logo/header-logo-black.png +0 -0
- data/vendor/assets/boletia_ui/images/logo/header-logo-white.png +0 -0
- data/vendor/assets/boletia_ui/images/logo/icon-logo140.png +0 -0
- data/vendor/assets/boletia_ui/images/resend.png +0 -0
- data/vendor/assets/boletia_ui/images/trash.png +0 -0
- data/vendor/assets/boletia_ui/images/trophy.png +0 -0
- data/vendor/assets/boletia_ui/images/white-resend.png +0 -0
- data/vendor/assets/boletia_ui/images/white-search.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/boletia-ui/boletia-ui-components.js +117 -0
- data/vendor/assets/boletia_ui/javascripts/boletia-ui/classie.js +80 -0
- data/vendor/assets/boletia_ui/javascripts/boletia-ui/select_fx.js +335 -0
- data/vendor/assets/boletia_ui/javascripts/charts/Chart.Legend.js +56 -0
- data/vendor/assets/boletia_ui/javascripts/charts/chart.min.js +11 -0
- data/vendor/assets/boletia_ui/javascripts/charts/refundCharts.js +167 -0
- data/vendor/assets/boletia_ui/javascripts/charts/src/Chart.Bar.js +302 -0
- data/vendor/assets/boletia_ui/javascripts/charts/src/Chart.Core.js +2002 -0
- data/vendor/assets/boletia_ui/javascripts/charts/src/Chart.Doughnut.js +184 -0
- data/vendor/assets/boletia_ui/javascripts/charts/src/Chart.Line.js +374 -0
- data/vendor/assets/boletia_ui/javascripts/charts/src/Chart.PolarArea.js +250 -0
- data/vendor/assets/boletia_ui/javascripts/charts/src/Chart.Radar.js +343 -0
- data/vendor/assets/boletia_ui/javascripts/counter/counter.js +12 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-bg_flat_0_eeeeee_40x100.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-bg_flat_55_ffffff_40x100.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-icons_0073ea_256x240.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-icons_454545_256x240.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-icons_666666_256x240.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-icons_ff0084_256x240.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/images/ui-icons_ffffff_256x240.png +0 -0
- data/vendor/assets/boletia_ui/javascripts/jquery-ui/jquery-ui.min.js +8 -0
- data/vendor/assets/boletia_ui/javascripts/scrolling-header/scrolling-header.js +41 -0
- data/vendor/assets/boletia_ui/javascripts/styleguide/styleguide.js +87 -0
- data/vendor/assets/boletia_ui/javascripts/tooltips/jquery.tooltipster.min.js +1 -0
- data/vendor/assets/boletia_ui/javascripts/vendor/magnific-popup/core.js +966 -0
- data/vendor/assets/boletia_ui/javascripts/vendor/magnific-popup/fastclick.js +93 -0
- data/vendor/assets/boletia_ui/javascripts/vendor/magnific-popup/image.js +245 -0
- data/vendor/assets/boletia_ui/javascripts/vendor/magnific-popup/inline.js +66 -0
- data/vendor/assets/boletia_ui/stylesheets/boletia-admin.css.scss +41 -0
- data/vendor/assets/boletia_ui/stylesheets/fonts/ss-standard.css +53 -0
- data/vendor/assets/boletia_ui/stylesheets/fonts/ss-standard.eot +0 -0
- data/vendor/assets/boletia_ui/stylesheets/fonts/ss-standard.js +84 -0
- data/vendor/assets/boletia_ui/stylesheets/fonts/ss-standard.svg +404 -0
- data/vendor/assets/boletia_ui/stylesheets/fonts/ss-standard.ttf +0 -0
- data/vendor/assets/boletia_ui/stylesheets/fonts/ss-standard.woff +0 -0
- data/vendor/assets/boletia_ui/stylesheets/jquery-ui/jquery-ui.min.css +7 -0
- data/vendor/assets/boletia_ui/stylesheets/jquery-ui/jquery-ui.structure.min.css +5 -0
- data/vendor/assets/boletia_ui/stylesheets/jquery-ui/jquery-ui.theme.css +410 -0
- data/vendor/assets/boletia_ui/stylesheets/layouts/_event_details.scss +100 -0
- data/vendor/assets/boletia_ui/stylesheets/layouts/_refund-wizard.scss +290 -0
- data/vendor/assets/boletia_ui/stylesheets/layouts/_sales.scss +17 -0
- data/vendor/assets/boletia_ui/stylesheets/layouts/_style_guide.scss +216 -0
- data/vendor/assets/boletia_ui/stylesheets/menu/_footer.scss +117 -0
- data/vendor/assets/boletia_ui/stylesheets/menu/_header.scss +314 -0
- data/vendor/assets/boletia_ui/stylesheets/menu/_new_front_footer.scss +117 -0
- data/vendor/assets/boletia_ui/stylesheets/menu/_new_front_header.scss +314 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_alerts.scss +183 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_base.scss +376 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_boletia-cards.scss +401 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_buttons.scss +200 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_dashboard.scss +192 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_forms.scss +395 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_grid.scss +85 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_tables.scss +139 -0
- data/vendor/assets/boletia_ui/stylesheets/partials/_wizard.scss +125 -0
- data/vendor/assets/boletia_ui/stylesheets/vendor/_select.scss +109 -0
- data/vendor/assets/boletia_ui/stylesheets/vendor/magnific-popup/_magnific.scss +642 -0
- data/vendor/assets/boletia_ui/stylesheets/vendor/magnific-popup/_settings.scss +45 -0
- data/vendor/assets/boletia_ui/stylesheets/vendor/tooltipster.css +274 -0
- metadata +174 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
$(document).ready(function() {
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
//Tooltip Initialize
|
|
5
|
+
|
|
6
|
+
$('.js-tooltip--top').tooltipster({
|
|
7
|
+
theme: 'o-tooltip',
|
|
8
|
+
position: 'top',
|
|
9
|
+
iconDesktop: true
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
$('.js-tooltip--right').tooltipster({
|
|
15
|
+
theme: 'o-tooltip',
|
|
16
|
+
position: 'right',
|
|
17
|
+
iconDesktop: true
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
$('.js-tooltip--bottom').tooltipster({
|
|
22
|
+
theme: 'o-tooltip',
|
|
23
|
+
position: 'bottom',
|
|
24
|
+
iconDesktop: true
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
$('.js-tooltip--left').tooltipster({
|
|
29
|
+
theme: 'o-tooltip',
|
|
30
|
+
position: 'left',
|
|
31
|
+
iconDesktop: true
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
//Tooltip No Icons
|
|
37
|
+
|
|
38
|
+
$('.js-tooltip__no-icon--top').tooltipster({
|
|
39
|
+
theme: 'o-tooltip',
|
|
40
|
+
position: 'top'
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
$('.js-tooltip__no-icon--right').tooltipster({
|
|
46
|
+
theme: 'o-tooltip',
|
|
47
|
+
position: 'right'
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
$('.js-tooltip__no-icon--bottom').tooltipster({
|
|
52
|
+
theme: 'o-tooltip',
|
|
53
|
+
position: 'bottom'
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
$('.js-tooltip__no-icon--left').tooltipster({
|
|
58
|
+
theme: 'o-tooltip',
|
|
59
|
+
position: 'left'
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
$('.js-tooltip__badge').tooltipster({
|
|
66
|
+
theme: 'o-tooltip',
|
|
67
|
+
position: 'top'
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
//Date Picker
|
|
72
|
+
|
|
73
|
+
$( ".js-datepicker" ).datepicker();
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
//Auto Complete
|
|
78
|
+
|
|
79
|
+
var availableEvents = [
|
|
80
|
+
"Spartan Race Monterrey",
|
|
81
|
+
"The Color Run",
|
|
82
|
+
"Festival de Bahidora",
|
|
83
|
+
"NRMl",
|
|
84
|
+
"Tough Mudder Monterrey",
|
|
85
|
+
"Badwater Ultramaraton",
|
|
86
|
+
"Carrera Brutal",
|
|
87
|
+
"Epic Queen: Monterrey Chapter",
|
|
88
|
+
"Startup Grind",
|
|
89
|
+
"WWE Raw"
|
|
90
|
+
];
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
$( "#js-header-search__input" ).autocomplete({
|
|
94
|
+
source: availableEvents,
|
|
95
|
+
position: { my : "left top", at: "left top" }
|
|
96
|
+
}).autocomplete("widget").addClass("o-header-search__autocomplete");
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
// MODALS
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
$('.js-modal-box__action').magnificPopup({
|
|
103
|
+
type:'inline',
|
|
104
|
+
midClick: true,
|
|
105
|
+
closeBtnInside:true
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
//Alerts
|
|
109
|
+
|
|
110
|
+
$(".o-system-message__close").on('click', function(event) {
|
|
111
|
+
|
|
112
|
+
$(event.target).closest(".o-system-message").fadeOut("slow");
|
|
113
|
+
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* classie - class helper functions
|
|
3
|
+
* from bonzo https://github.com/ded/bonzo
|
|
4
|
+
*
|
|
5
|
+
* classie.has( elem, 'my-class' ) -> true/false
|
|
6
|
+
* classie.add( elem, 'my-new-class' )
|
|
7
|
+
* classie.remove( elem, 'my-unwanted-class' )
|
|
8
|
+
* classie.toggle( elem, 'my-class' )
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/*jshint browser: true, strict: true, undef: true */
|
|
12
|
+
/*global define: false */
|
|
13
|
+
|
|
14
|
+
( function( window ) {
|
|
15
|
+
|
|
16
|
+
'use strict';
|
|
17
|
+
|
|
18
|
+
// class helper functions from bonzo https://github.com/ded/bonzo
|
|
19
|
+
|
|
20
|
+
function classReg( className ) {
|
|
21
|
+
return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// classList support for class management
|
|
25
|
+
// altho to be fair, the api sucks because it won't accept multiple classes at once
|
|
26
|
+
var hasClass, addClass, removeClass;
|
|
27
|
+
|
|
28
|
+
if ( 'classList' in document.documentElement ) {
|
|
29
|
+
hasClass = function( elem, c ) {
|
|
30
|
+
return elem.classList.contains( c );
|
|
31
|
+
};
|
|
32
|
+
addClass = function( elem, c ) {
|
|
33
|
+
elem.classList.add( c );
|
|
34
|
+
};
|
|
35
|
+
removeClass = function( elem, c ) {
|
|
36
|
+
elem.classList.remove( c );
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
hasClass = function( elem, c ) {
|
|
41
|
+
return classReg( c ).test( elem.className );
|
|
42
|
+
};
|
|
43
|
+
addClass = function( elem, c ) {
|
|
44
|
+
if ( !hasClass( elem, c ) ) {
|
|
45
|
+
elem.className = elem.className + ' ' + c;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
removeClass = function( elem, c ) {
|
|
49
|
+
elem.className = elem.className.replace( classReg( c ), ' ' );
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function toggleClass( elem, c ) {
|
|
54
|
+
var fn = hasClass( elem, c ) ? removeClass : addClass;
|
|
55
|
+
fn( elem, c );
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var classie = {
|
|
59
|
+
// full names
|
|
60
|
+
hasClass: hasClass,
|
|
61
|
+
addClass: addClass,
|
|
62
|
+
removeClass: removeClass,
|
|
63
|
+
toggleClass: toggleClass,
|
|
64
|
+
// short names
|
|
65
|
+
has: hasClass,
|
|
66
|
+
add: addClass,
|
|
67
|
+
remove: removeClass,
|
|
68
|
+
toggle: toggleClass
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// transport
|
|
72
|
+
if ( typeof define === 'function' && define.amd ) {
|
|
73
|
+
// AMD
|
|
74
|
+
define( classie );
|
|
75
|
+
} else {
|
|
76
|
+
// browser global
|
|
77
|
+
window.classie = classie;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
})( window );
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
// SELECT FX //
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* selectFx.js v1.0.0
|
|
5
|
+
* http://www.codrops.com
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the MIT license.
|
|
8
|
+
* http://www.opensource.org/licenses/mit-license.php
|
|
9
|
+
*
|
|
10
|
+
* Copyright 2014, Codrops
|
|
11
|
+
* http://www.codrops.com
|
|
12
|
+
*/
|
|
13
|
+
;( function( window ) {
|
|
14
|
+
|
|
15
|
+
'use strict';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* based on from https://github.com/inuyaksa/jquery.nicescroll/blob/master/jquery.nicescroll.js
|
|
19
|
+
*/
|
|
20
|
+
function hasParent( e, p ) {
|
|
21
|
+
if (!e) return false;
|
|
22
|
+
var el = e.target||e.srcElement||e||false;
|
|
23
|
+
while (el && el != p) {
|
|
24
|
+
el = el.parentNode||false;
|
|
25
|
+
}
|
|
26
|
+
return (el!==false);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* extend obj function
|
|
31
|
+
*/
|
|
32
|
+
function extend( a, b ) {
|
|
33
|
+
for( var key in b ) {
|
|
34
|
+
if( b.hasOwnProperty( key ) ) {
|
|
35
|
+
a[key] = b[key];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return a;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* SelectFx function
|
|
43
|
+
*/
|
|
44
|
+
function SelectFx( el, options ) {
|
|
45
|
+
this.el = el;
|
|
46
|
+
this.options = extend( {}, this.options );
|
|
47
|
+
extend( this.options, options );
|
|
48
|
+
this._init();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* SelectFx options
|
|
53
|
+
*/
|
|
54
|
+
SelectFx.prototype.options = {
|
|
55
|
+
// if true all the links will open in a new tab.
|
|
56
|
+
// if we want to be redirected when we click an option, we need to define a data-link attr on the option of the native select element
|
|
57
|
+
newTab : true,
|
|
58
|
+
// when opening the select element, the default placeholder (if any) is shown
|
|
59
|
+
stickyPlaceholder : true,
|
|
60
|
+
// callback when changing the value
|
|
61
|
+
onChange : function( val ) { return false; }
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* init function
|
|
66
|
+
* initialize and cache some vars
|
|
67
|
+
*/
|
|
68
|
+
SelectFx.prototype._init = function() {
|
|
69
|
+
// check if we are using a placeholder for the native select box
|
|
70
|
+
// we assume the placeholder is disabled and selected by default
|
|
71
|
+
var selectedOpt = this.el.querySelector( 'option[selected]' );
|
|
72
|
+
this.hasDefaultPlaceholder = selectedOpt && selectedOpt.disabled;
|
|
73
|
+
|
|
74
|
+
// get selected option (either the first option with attr selected or just the first option)
|
|
75
|
+
this.selectedOpt = selectedOpt || this.el.querySelector( 'option' );
|
|
76
|
+
|
|
77
|
+
// create structure
|
|
78
|
+
this._createSelectEl();
|
|
79
|
+
|
|
80
|
+
// all options
|
|
81
|
+
this.selOpts = [].slice.call( this.selEl.querySelectorAll( 'li[data-option]' ) );
|
|
82
|
+
|
|
83
|
+
// total options
|
|
84
|
+
this.selOptsCount = this.selOpts.length;
|
|
85
|
+
|
|
86
|
+
// current index
|
|
87
|
+
this.current = this.selOpts.indexOf( this.selEl.querySelector( 'li.js-custom-selected' ) ) || -1;
|
|
88
|
+
|
|
89
|
+
// placeholder elem
|
|
90
|
+
this.selPlaceholder = this.selEl.querySelector( 'span.cs-placeholder' );
|
|
91
|
+
|
|
92
|
+
// init events
|
|
93
|
+
this._initEvents();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* creates the structure for the select element
|
|
98
|
+
*/
|
|
99
|
+
SelectFx.prototype._createSelectEl = function() {
|
|
100
|
+
var self = this, options = '', createOptionHTML = function(el) {
|
|
101
|
+
var optclass = '', classes = '', link = '';
|
|
102
|
+
|
|
103
|
+
if( el.selectedOpt && !this.foundSelected && !this.hasDefaultPlaceholder ) {
|
|
104
|
+
classes += 'js-custom-selected ';
|
|
105
|
+
this.foundSelected = true;
|
|
106
|
+
}
|
|
107
|
+
// extra classes
|
|
108
|
+
if( el.getAttribute( 'data-class' ) ) {
|
|
109
|
+
classes += el.getAttribute( 'data-class' );
|
|
110
|
+
}
|
|
111
|
+
// link options
|
|
112
|
+
if( el.getAttribute( 'data-link' ) ) {
|
|
113
|
+
link = 'data-link=' + el.getAttribute( 'data-link' );
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if( classes !== '' ) {
|
|
117
|
+
optclass = 'class="' + classes + '" ';
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return '<li ' + optclass + link + ' data-option data-value="' + el.value + '"><span>' + el.textContent + '</span></li>';
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
[].slice.call( this.el.children ).forEach( function(el) {
|
|
124
|
+
if( el.disabled ) { return; }
|
|
125
|
+
|
|
126
|
+
var tag = el.tagName.toLowerCase();
|
|
127
|
+
|
|
128
|
+
if( tag === 'option' ) {
|
|
129
|
+
options += createOptionHTML(el);
|
|
130
|
+
}
|
|
131
|
+
else if( tag === 'optgroup' ) {
|
|
132
|
+
options += '<li class="cs-optgroup"><span>' + el.label + '</span><ul>';
|
|
133
|
+
[].slice.call( el.children ).forEach( function(opt) {
|
|
134
|
+
options += createOptionHTML(opt);
|
|
135
|
+
} );
|
|
136
|
+
options += '</ul></li>';
|
|
137
|
+
}
|
|
138
|
+
} );
|
|
139
|
+
|
|
140
|
+
var opts_el = '<div class="cs-options"><ul>' + options + '</ul></div>';
|
|
141
|
+
this.selEl = document.createElement( 'div' );
|
|
142
|
+
this.selEl.className = this.el.className;
|
|
143
|
+
this.selEl.tabIndex = this.el.tabIndex;
|
|
144
|
+
this.selEl.innerHTML = '<span class="cs-placeholder">' + this.selectedOpt.textContent + '</span>' + opts_el;
|
|
145
|
+
this.el.parentNode.appendChild( this.selEl );
|
|
146
|
+
this.selEl.appendChild( this.el );
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* initialize the events
|
|
151
|
+
*/
|
|
152
|
+
SelectFx.prototype._initEvents = function() {
|
|
153
|
+
var self = this;
|
|
154
|
+
|
|
155
|
+
// open/close select
|
|
156
|
+
this.selPlaceholder.addEventListener( 'click', function() {
|
|
157
|
+
self._toggleSelect();
|
|
158
|
+
} );
|
|
159
|
+
|
|
160
|
+
// clicking the options
|
|
161
|
+
this.selOpts.forEach( function(opt, idx) {
|
|
162
|
+
opt.addEventListener( 'click', function() {
|
|
163
|
+
self.current = idx;
|
|
164
|
+
self._changeOption();
|
|
165
|
+
// close select elem
|
|
166
|
+
self._toggleSelect();
|
|
167
|
+
} );
|
|
168
|
+
} );
|
|
169
|
+
|
|
170
|
+
// close the select element if the target it´s not the select element or one of its descendants..
|
|
171
|
+
document.addEventListener( 'click', function(ev) {
|
|
172
|
+
var target = ev.target;
|
|
173
|
+
if( self._isOpen() && target !== self.selEl && !hasParent( target, self.selEl ) ) {
|
|
174
|
+
self._toggleSelect();
|
|
175
|
+
}
|
|
176
|
+
} );
|
|
177
|
+
|
|
178
|
+
// keyboard navigation events
|
|
179
|
+
this.selEl.addEventListener( 'keydown', function( ev ) {
|
|
180
|
+
var keyCode = ev.keyCode || ev.which;
|
|
181
|
+
|
|
182
|
+
switch (keyCode) {
|
|
183
|
+
// up key
|
|
184
|
+
case 38:
|
|
185
|
+
ev.preventDefault();
|
|
186
|
+
self._navigateOpts('prev');
|
|
187
|
+
break;
|
|
188
|
+
// down key
|
|
189
|
+
case 40:
|
|
190
|
+
ev.preventDefault();
|
|
191
|
+
self._navigateOpts('next');
|
|
192
|
+
break;
|
|
193
|
+
// space key
|
|
194
|
+
case 32:
|
|
195
|
+
ev.preventDefault();
|
|
196
|
+
if( self._isOpen() && typeof self.preSelCurrent != 'undefined' && self.preSelCurrent !== -1 ) {
|
|
197
|
+
self._changeOption();
|
|
198
|
+
}
|
|
199
|
+
self._toggleSelect();
|
|
200
|
+
break;
|
|
201
|
+
// enter key
|
|
202
|
+
case 13:
|
|
203
|
+
ev.preventDefault();
|
|
204
|
+
if( self._isOpen() && typeof self.preSelCurrent != 'undefined' && self.preSelCurrent !== -1 ) {
|
|
205
|
+
self._changeOption();
|
|
206
|
+
self._toggleSelect();
|
|
207
|
+
}
|
|
208
|
+
break;
|
|
209
|
+
// esc key
|
|
210
|
+
case 27:
|
|
211
|
+
ev.preventDefault();
|
|
212
|
+
if( self._isOpen() ) {
|
|
213
|
+
self._toggleSelect();
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
} );
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* navigate with up/dpwn keys
|
|
222
|
+
*/
|
|
223
|
+
SelectFx.prototype._navigateOpts = function(dir) {
|
|
224
|
+
if( !this._isOpen() ) {
|
|
225
|
+
this._toggleSelect();
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
var tmpcurrent = typeof this.preSelCurrent != 'undefined' && this.preSelCurrent !== -1 ? this.preSelCurrent : this.current;
|
|
229
|
+
|
|
230
|
+
if( dir === 'prev' && tmpcurrent > 0 || dir === 'next' && tmpcurrent < this.selOptsCount - 1 ) {
|
|
231
|
+
// save pre selected current - if we click on option, or press enter, or press space this is going to be the index of the current option
|
|
232
|
+
this.preSelCurrent = dir === 'next' ? tmpcurrent + 1 : tmpcurrent - 1;
|
|
233
|
+
// remove focus class if any..
|
|
234
|
+
this._removeFocus();
|
|
235
|
+
// add class focus - track which option we are navigating
|
|
236
|
+
classie.add( this.selOpts[this.preSelCurrent], 'cs-focus' );
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* open/close select
|
|
242
|
+
* when opened show the default placeholder if any
|
|
243
|
+
*/
|
|
244
|
+
SelectFx.prototype._toggleSelect = function() {
|
|
245
|
+
// remove focus class if any..
|
|
246
|
+
this._removeFocus();
|
|
247
|
+
|
|
248
|
+
if( this._isOpen() ) {
|
|
249
|
+
if( this.current !== -1 ) {
|
|
250
|
+
// update placeholder text
|
|
251
|
+
this.selPlaceholder.textContent = this.selOpts[ this.current ].textContent;
|
|
252
|
+
}
|
|
253
|
+
classie.remove( this.selEl, 'cs-active' );
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
if( this.hasDefaultPlaceholder && this.options.stickyPlaceholder ) {
|
|
257
|
+
// everytime we open we wanna see the default placeholder text
|
|
258
|
+
this.selPlaceholder.textContent = this.selectedOpt.textContent;
|
|
259
|
+
}
|
|
260
|
+
classie.add( this.selEl, 'cs-active' );
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* change option - the new value is set
|
|
266
|
+
*/
|
|
267
|
+
SelectFx.prototype._changeOption = function() {
|
|
268
|
+
// if pre selected current (if we navigate with the keyboard)...
|
|
269
|
+
if( typeof this.preSelCurrent != 'undefined' && this.preSelCurrent !== -1 ) {
|
|
270
|
+
this.current = this.preSelCurrent;
|
|
271
|
+
this.preSelCurrent = -1;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// current option
|
|
275
|
+
var opt = this.selOpts[ this.current ];
|
|
276
|
+
|
|
277
|
+
// update current selected value
|
|
278
|
+
this.selPlaceholder.textContent = opt.textContent;
|
|
279
|
+
|
|
280
|
+
// change native select element´s value
|
|
281
|
+
this.el.value = opt.getAttribute( 'data-value' );
|
|
282
|
+
|
|
283
|
+
// remove class js-custom-selected from old selected option and add it to current selected option
|
|
284
|
+
var oldOpt = this.selEl.querySelector( 'li.js-custom-selected' );
|
|
285
|
+
if( oldOpt ) {
|
|
286
|
+
classie.remove( oldOpt, 'js-custom-selected' );
|
|
287
|
+
}
|
|
288
|
+
classie.add( opt, 'js-custom-selected' );
|
|
289
|
+
|
|
290
|
+
// if there´s a link defined
|
|
291
|
+
if( opt.getAttribute( 'data-link' ) ) {
|
|
292
|
+
// open in new tab?
|
|
293
|
+
if( this.options.newTab ) {
|
|
294
|
+
window.open( opt.getAttribute( 'data-link' ), '_blank' );
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
window.location = opt.getAttribute( 'data-link' );
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// callback
|
|
302
|
+
this.options.onChange( this.el.value );
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* returns true if select element is opened
|
|
307
|
+
*/
|
|
308
|
+
SelectFx.prototype._isOpen = function(opt) {
|
|
309
|
+
return classie.has( this.selEl, 'cs-active' );
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* removes the focus class from the option
|
|
314
|
+
*/
|
|
315
|
+
SelectFx.prototype._removeFocus = function(opt) {
|
|
316
|
+
var focusEl = this.selEl.querySelector( 'li.cs-focus' )
|
|
317
|
+
if( focusEl ) {
|
|
318
|
+
classie.remove( focusEl, 'cs-focus' );
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* add to global namespace
|
|
324
|
+
*/
|
|
325
|
+
window.SelectFx = SelectFx;
|
|
326
|
+
|
|
327
|
+
} )( window );
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
(function() {
|
|
332
|
+
[].slice.call( document.querySelectorAll( 'select.js-custom-select' ) ).forEach( function(el) {
|
|
333
|
+
new SelectFx(el);
|
|
334
|
+
} );
|
|
335
|
+
})();
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
function legend(parent, data) {
|
|
2
|
+
legend(parent, data, null);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
function legend(parent, data, chart) {
|
|
6
|
+
parent.className = 'o-chart-legend';
|
|
7
|
+
var datas = data.hasOwnProperty('datasets') ? data.datasets : data;
|
|
8
|
+
|
|
9
|
+
// remove possible children of the parent
|
|
10
|
+
while(parent.hasChildNodes()) {
|
|
11
|
+
parent.removeChild(parent.lastChild);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
var show = chart ? showTooltip : noop;
|
|
15
|
+
datas.forEach(function(d, i) {
|
|
16
|
+
//span to div: legend appears to all element (color-sample and text-node)
|
|
17
|
+
var title = document.createElement('div');
|
|
18
|
+
title.className = 'o-chart-legend__title';
|
|
19
|
+
parent.appendChild(title);
|
|
20
|
+
|
|
21
|
+
var colorSample = document.createElement('div');
|
|
22
|
+
colorSample.className = 'o-chart-legend__color-sample';
|
|
23
|
+
colorSample.style.backgroundColor = d.hasOwnProperty('strokeColor') ? d.strokeColor : d.color;
|
|
24
|
+
colorSample.style.borderColor = d.hasOwnProperty('fillColor') ? d.fillColor : d.color;
|
|
25
|
+
title.appendChild(colorSample);
|
|
26
|
+
|
|
27
|
+
var text = document.createTextNode(d.label);
|
|
28
|
+
text.className = 'text-node';
|
|
29
|
+
title.appendChild(text);
|
|
30
|
+
|
|
31
|
+
show(chart, title, i);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//add events to legend that show tool tips on chart
|
|
36
|
+
function showTooltip(chart, elem, indexChartSegment){
|
|
37
|
+
var helpers = Chart.helpers;
|
|
38
|
+
|
|
39
|
+
var segments = chart.segments;
|
|
40
|
+
//Only chart with segments
|
|
41
|
+
if(typeof segments != 'undefined'){
|
|
42
|
+
helpers.addEvent(elem, 'mouseover', function(){
|
|
43
|
+
var segment = segments[indexChartSegment];
|
|
44
|
+
segment.save();
|
|
45
|
+
segment.fillColor = segment.highlightColor;
|
|
46
|
+
chart.showTooltip([segment]);
|
|
47
|
+
segment.restore();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
helpers.addEvent(elem, 'mouseout', function(){
|
|
51
|
+
chart.draw();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function noop() {}
|