Version Description
- February 5th, 2015 =
- Enhancement: Added a dropdown to select the font awesome icon
- Enhancement: Fadded in the timeline after everything has initialized, to prevent seeing a messed up Timeline layout
Download this release
Release Info
Developer | eherman24 |
Plugin | Timeline Express |
Version | 1.1.5.7 |
Comparing to | |
See all releases |
Code changes from version 1.1.5.6 to 1.1.5.7
- classes/class.timeline-express.php +124 -26
- css/bootstrap-select.min.css +6 -0
- css/timeline-express.css +12 -1
- css/timeline-express.min.css +2 -2
- js/bootstrap-select.js +1209 -0
- js/script.timeline-express.js +1 -0
- js/script.timeline-express.min.js +1 -1
- readme.txt +10 -1
- timeline-express.php +2 -2
classes/class.timeline-express.php
CHANGED
@@ -152,6 +152,10 @@ if(!class_exists("timelineExpressBase"))
|
|
152 |
// custom vlaidation for our new custom field
|
153 |
//Validate new metabox type
|
154 |
add_filter( 'cmb_validate_te_date_time_stamp_custom', array( $this, 'cmb_validate_te_date_time_stamp_custom' ) , 10, 2 );
|
|
|
|
|
|
|
|
|
155 |
}
|
156 |
|
157 |
/*
|
@@ -160,21 +164,21 @@ if(!class_exists("timelineExpressBase"))
|
|
160 |
* since @v1.1.5
|
161 |
*/
|
162 |
function cmb_render_te_date_time_stamp_custom( $field, $meta ) {
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
|
179 |
/*
|
180 |
* cmb_validate_te_date_time_stamp_custom()
|
@@ -182,11 +186,11 @@ if(!class_exists("timelineExpressBase"))
|
|
182 |
* since @v1.1.5
|
183 |
*/
|
184 |
function cmb_validate_te_date_time_stamp_custom( $value, $new ) {
|
185 |
-
|
186 |
-
|
|
|
|
|
187 |
}
|
188 |
-
return '-1';
|
189 |
-
}
|
190 |
|
191 |
|
192 |
/*
|
@@ -195,10 +199,31 @@ if(!class_exists("timelineExpressBase"))
|
|
195 |
* since @v1.1.5
|
196 |
*/
|
197 |
function cmb_render_te_about_metabox( $field, $meta ) {
|
198 |
-
|
199 |
-
|
200 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
/*
|
203 |
* schedule_timeline_express_support_cron()
|
204 |
* Setup our twice daily transient, to cross check the API key ( if set )
|
@@ -218,10 +243,10 @@ if(!class_exists("timelineExpressBase"))
|
|
218 |
if ( get_option( 'timeline_express_license_status' ) !== false && get_option( 'timeline_express_license_status' ) == 'valid' ) {
|
219 |
// api parameters, cross checking the license
|
220 |
$api_params = array(
|
221 |
-
'edd_action'=> 'check_license',
|
222 |
-
'license'
|
223 |
'item_name' => urlencode( EH_DEV_SHOP_SUPPORT_PRODUCT_NAME ), // the name of our product
|
224 |
-
'url'
|
225 |
);
|
226 |
// Call the custom API.
|
227 |
$response = wp_remote_get( add_query_arg( $api_params, EH_DEV_SHOP_URL ), array( 'timeout' => 15, 'sslverify' => false ) );
|
@@ -463,7 +488,7 @@ if(!class_exists("timelineExpressBase"))
|
|
463 |
'name' => __( 'Font Awesome Class', 'timeline-express' ),
|
464 |
'desc' => __( 'enter the font-awesome class name in the box above. This is used for the icon associated with the announcement. <a href="http://fortawesome.github.io/Font-Awesome/cheatsheet/" target="_blank">cheat sheet</a> Example : "fa-times-circle" ', 'timeline-express' ),
|
465 |
'id' => $prefix . 'icon',
|
466 |
-
'type' => '
|
467 |
'default' => trim( $this->timeline_express_optionVal['default-announcement-icon'] ),
|
468 |
// 'repeatable' => true,
|
469 |
// 'on_front' => false, // Optionally designate a field to wp-admin only
|
@@ -827,7 +852,7 @@ if(!class_exists("timelineExpressBase"))
|
|
827 |
$screen = get_current_screen();
|
828 |
$print_styles_on_screen_array = array( 'te_announcements_page_timeline-express-settings' , 'admin_page_timeline-express-welcome' , 'te_announcements_page_timeline-express-support' );
|
829 |
|
830 |
-
if ( in_array( $screen->base , $print_styles_on_screen_array ) ||
|
831 |
// Register Styles
|
832 |
wp_enqueue_style( 'timeline-express-css-base', TIMELINE_EXPRESS_URL . 'css/timeline-express-settings.min.css' , array(), '1.0.0', 'all');
|
833 |
// enqueue font awesome for use in column display
|
@@ -1206,6 +1231,79 @@ if(!class_exists("timelineExpressBase"))
|
|
1206 |
return $attachment[0];
|
1207 |
}
|
1208 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1209 |
/***** ADMINISTRATION MENUS
|
1210 |
****************************************************************************************************/
|
1211 |
public function addAdministrationMenu() {
|
152 |
// custom vlaidation for our new custom field
|
153 |
//Validate new metabox type
|
154 |
add_filter( 'cmb_validate_te_date_time_stamp_custom', array( $this, 'cmb_validate_te_date_time_stamp_custom' ) , 10, 2 );
|
155 |
+
// render new custom timeline express about metabox
|
156 |
+
add_action( 'cmb_render_te_bootstrap_dropdown', array( $this, 'cmb_render_te_bootstrap_dropdown' ), 10, 2 );
|
157 |
+
// validate the new custom timeline express about metabox
|
158 |
+
add_filter( 'cmb_validate_te_bootstrap_dropdown', array( $this, 'cmb_validate_te_bootstrap_dropdown' ) , 10, 2);
|
159 |
}
|
160 |
|
161 |
/*
|
164 |
* since @v1.1.5
|
165 |
*/
|
166 |
function cmb_render_te_date_time_stamp_custom( $field, $meta ) {
|
167 |
+
?>
|
168 |
+
<style>
|
169 |
+
#ui-datepicker-div { z-index: 99999 !important; }
|
170 |
+
#wpbody-content { overflow: hidden !important; }
|
171 |
+
.cmb_id_announcement_image td .cmb_upload_button { height: 32px !important; }
|
172 |
+
</style>
|
173 |
+
<?php
|
174 |
+
if( $meta && isset( $meta ) ){
|
175 |
+
echo '<input class="cmb_text_small cmb_datepicker" type="text" name="', $field['id'], '" id="', $field['id'], '" value="', '' !== $meta ? date( 'm/d/Y' , $meta ) : $field['default'], '" />';
|
176 |
+
echo '<p class="cmb_metabox_description">'.$field['desc'].'</p>';
|
177 |
+
} else{
|
178 |
+
echo '<input class="cmb_text_small cmb_datepicker" type="text" name="', $field['id'], '" id="', $field['id'], '" value="' . date('m/d/Y' ) .'" />';
|
179 |
+
echo '<p class="cmb_metabox_description">'.$field['desc'].'</p>';
|
180 |
+
}
|
181 |
+
}
|
182 |
|
183 |
/*
|
184 |
* cmb_validate_te_date_time_stamp_custom()
|
186 |
* since @v1.1.5
|
187 |
*/
|
188 |
function cmb_validate_te_date_time_stamp_custom( $value, $new ) {
|
189 |
+
if( isset( $new ) && $new != '' ){
|
190 |
+
return strtotime( $new );
|
191 |
+
}
|
192 |
+
return '-1';
|
193 |
}
|
|
|
|
|
194 |
|
195 |
|
196 |
/*
|
199 |
* since @v1.1.5
|
200 |
*/
|
201 |
function cmb_render_te_about_metabox( $field, $meta ) {
|
202 |
+
require_once TIMELINE_EXPRESS_PATH . 'lib/about-metabox-template.php';
|
203 |
+
}
|
204 |
|
205 |
+
/*
|
206 |
+
* cmb_render_te_bootstrap_dropdown()
|
207 |
+
* render the custom bootstrap dropdown
|
208 |
+
* since @v1.1.5.7
|
209 |
+
*/
|
210 |
+
function cmb_render_te_bootstrap_dropdown( $field, $meta ) {
|
211 |
+
// pass in the field object and meta data
|
212 |
+
$this->timeline_express_build_bootstrap_dropdown( $field, $meta );
|
213 |
+
}
|
214 |
|
215 |
+
/*
|
216 |
+
* cmb_validate_te_date_time_stamp_custom()
|
217 |
+
* save our custom date time stamp
|
218 |
+
* since @v1.1.5
|
219 |
+
*/
|
220 |
+
function cmb_validate_te_bootstrap_dropdown( $value, $new ) {
|
221 |
+
if( isset( $new ) && $new != '' ){
|
222 |
+
return 'fa-'.trim($new);
|
223 |
+
}
|
224 |
+
return '-1';
|
225 |
+
}
|
226 |
+
|
227 |
/*
|
228 |
* schedule_timeline_express_support_cron()
|
229 |
* Setup our twice daily transient, to cross check the API key ( if set )
|
243 |
if ( get_option( 'timeline_express_license_status' ) !== false && get_option( 'timeline_express_license_status' ) == 'valid' ) {
|
244 |
// api parameters, cross checking the license
|
245 |
$api_params = array(
|
246 |
+
'edd_action' => 'check_license',
|
247 |
+
'license' => trim( get_option( 'timeline_express_license_key' ) ),
|
248 |
'item_name' => urlencode( EH_DEV_SHOP_SUPPORT_PRODUCT_NAME ), // the name of our product
|
249 |
+
'url' => home_url()
|
250 |
);
|
251 |
// Call the custom API.
|
252 |
$response = wp_remote_get( add_query_arg( $api_params, EH_DEV_SHOP_URL ), array( 'timeout' => 15, 'sslverify' => false ) );
|
488 |
'name' => __( 'Font Awesome Class', 'timeline-express' ),
|
489 |
'desc' => __( 'enter the font-awesome class name in the box above. This is used for the icon associated with the announcement. <a href="http://fortawesome.github.io/Font-Awesome/cheatsheet/" target="_blank">cheat sheet</a> Example : "fa-times-circle" ', 'timeline-express' ),
|
490 |
'id' => $prefix . 'icon',
|
491 |
+
'type' => 'te_bootstrap_dropdown',
|
492 |
'default' => trim( $this->timeline_express_optionVal['default-announcement-icon'] ),
|
493 |
// 'repeatable' => true,
|
494 |
// 'on_front' => false, // Optionally designate a field to wp-admin only
|
852 |
$screen = get_current_screen();
|
853 |
$print_styles_on_screen_array = array( 'te_announcements_page_timeline-express-settings' , 'admin_page_timeline-express-welcome' , 'te_announcements_page_timeline-express-support' );
|
854 |
|
855 |
+
if ( in_array( $screen->base , $print_styles_on_screen_array ) || $screen->post_type == 'te_announcements' ) {
|
856 |
// Register Styles
|
857 |
wp_enqueue_style( 'timeline-express-css-base', TIMELINE_EXPRESS_URL . 'css/timeline-express-settings.min.css' , array(), '1.0.0', 'all');
|
858 |
// enqueue font awesome for use in column display
|
1231 |
return $attachment[0];
|
1232 |
}
|
1233 |
|
1234 |
+
|
1235 |
+
// Build a dropdown for our bootstrap icons
|
1236 |
+
// @since v1.1.5.7
|
1237 |
+
public function timeline_express_build_bootstrap_dropdown( $field, $meta ) {
|
1238 |
+
|
1239 |
+
// get the icons out of the css file
|
1240 |
+
$response = wp_remote_get( 'http://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css' );
|
1241 |
+
|
1242 |
+
// splot the response body, and store the icon classes in a variable
|
1243 |
+
$split_dat_response = explode( 'icons */' , $response['body'] );
|
1244 |
+
|
1245 |
+
// empty array for icon array
|
1246 |
+
$bootstrap_icon_array = array();
|
1247 |
+
|
1248 |
+
// replace the unecessary stuff
|
1249 |
+
$data = str_replace( ';' , '' , str_replace( ':before' , '' , str_replace( '}' , '' , str_replace( 'content' , '' , str_replace( '{' , '' , $split_dat_response[1] ) ) ) ) );
|
1250 |
+
$icon_data = explode( '.fa-' , $data );
|
1251 |
+
$i = 1;
|
1252 |
+
|
1253 |
+
foreach( array_slice($icon_data,1) as $key => $value) {
|
1254 |
+
$split_icon = explode( ':' , $value );
|
1255 |
+
if( isset( $split_icon[1] ) ) {
|
1256 |
+
$bootstrap_icon_array[] = array( trim( 'fa-' . $split_icon[0] ) => trim( $split_icon[0] ) );
|
1257 |
+
}
|
1258 |
+
$i++;
|
1259 |
+
}
|
1260 |
+
|
1261 |
+
$flat_bootstrap_icon_array = array();
|
1262 |
+
foreach($bootstrap_icon_array as $array) {
|
1263 |
+
foreach($array as $k=>$v) {
|
1264 |
+
$flat_bootstrap_icon_array[$k] = $v;
|
1265 |
+
}
|
1266 |
+
}
|
1267 |
+
|
1268 |
+
wp_enqueue_script( 'bootstrap-select' , TIMELINE_EXPRESS_URL . 'js/bootstrap-select.js' , array( 'jquery' ) , 'all' );
|
1269 |
+
wp_enqueue_script( 'bootstrap-min' , 'http://netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js' );
|
1270 |
+
wp_enqueue_style('bootstrap-select-style' , TIMELINE_EXPRESS_URL . 'css/bootstrap-select.min.css' );
|
1271 |
+
?>
|
1272 |
+
<script>
|
1273 |
+
jQuery( document ).ready( function() {
|
1274 |
+
jQuery('.selectpicker').selectpicker({
|
1275 |
+
style: 'btn-info',
|
1276 |
+
size: 6
|
1277 |
+
});
|
1278 |
+
});
|
1279 |
+
</script>
|
1280 |
+
<style>
|
1281 |
+
.dropdown-toggle { background: transparent !important; border: 1px solid rgb(201, 201, 201) !important; }
|
1282 |
+
.dropdown-toggle .caret { border-top-color: #333 !important; }
|
1283 |
+
.ui-datepicker-prev:hover, .ui-datepicker-next:hover { cursor: pointer; }
|
1284 |
+
</style>
|
1285 |
+
<!-- start the font awesome icon select -->
|
1286 |
+
<select class="selectpicker" name="<?php echo $field['id']; ?>" id="<?php echo $field['id']; ?>">
|
1287 |
+
|
1288 |
+
<?php
|
1289 |
+
/* sort the bootstrap icons alphabetically */
|
1290 |
+
sort( $flat_bootstrap_icon_array );
|
1291 |
+
foreach( $flat_bootstrap_icon_array as $icon ) {
|
1292 |
+
?>
|
1293 |
+
|
1294 |
+
<option class="fa" data-icon="fa-<?php echo $icon; ?>" <?php selected( 'fa-'.$icon , $meta ); ?>><?php echo $icon; ?></option>
|
1295 |
+
|
1296 |
+
<?php
|
1297 |
+
}
|
1298 |
+
?>
|
1299 |
+
|
1300 |
+
</select>
|
1301 |
+
<!-- end select -->
|
1302 |
+
|
1303 |
+
<?php
|
1304 |
+
echo '<p class="cmb_metabox_description">'.$field['desc'].'</p>';
|
1305 |
+
}
|
1306 |
+
|
1307 |
/***** ADMINISTRATION MENUS
|
1308 |
****************************************************************************************************/
|
1309 |
public function addAdministrationMenu() {
|
css/bootstrap-select.min.css
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/)
|
3 |
+
*
|
4 |
+
* Copyright 2013-2014 bootstrap-select
|
5 |
+
* Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
|
6 |
+
*/select{margin:0;text-transform:none;font-family:inherit;font-size:inherit;line-height:inherit}select[multiple]{background-image:none}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}select.input-sm{height:30px;line-height:30px}select.input-lg{height:45px;line-height:45px}textarea.input-lg{height:auto}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:#333 dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid #000;border-right:4px solid transparent;border-bottom:0 dotted;border-left:4px solid transparent;content:""}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#428bca}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#999}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-default .caret{border-top-color:#333}.btn-danger .caret,.btn-info .caret,.btn-primary .caret,.btn-success .caret,.btn-warning .caret{border-top-color:#fff}.dropup .btn-default .caret{border-bottom-color:#333}.dropup .btn-danger .caret,.dropup .btn-info .caret,.dropup .btn-primary .caret,.dropup .btn-success .caret,.dropup .btn-warning .caret{border-bottom-color:#fff}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.dropdown-menu open{z-index:99999}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn:focus,.btn-group>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar:after,.btn-toolbar:before{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn-group+.btn-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified .btn{display:table-cell;float:none;width:1%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.dropdown-menu.inner li a{padding-left:10px}.dropdown-menu.inner li a span.glyphicon{padding-right:5px}.bootstrap-select{width:220px \0}.bootstrap-select>.btn{width:100%;padding-right:25px}.error .bootstrap-select .btn{border:1px solid #b94a48}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .btn:focus{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row-fluid .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-search .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-group .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.form-inline .bootstrap-select.btn-group .form-control{width:100%}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .btn .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select.btn-group[class*=col-] .btn{width:100%}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small,.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small,.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled) a small{color:#64b1d8;color:rgba(100,177,216,.4)}.bootstrap-select.btn-group .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.btn{z-index:1035+1}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom-width:7px;border-bottom-style:solid;border-bottom-color:#ccc;border-bottom-color:rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-bottom:0;border-top-width:7px;border-top-style:solid;border-top-color:#ccc;border-top-color:rgba(204,204,204,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after{display:block}.bs-searchbox,.bs-actionsbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox input.form-control{margin-bottom:0;width:100%}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0}
|
css/timeline-express.css
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
/* Timeline Express Minified Styles 1.1.
|
2 |
/* By Evan Herman (http://www.evan-herman.com */
|
3 |
/* -------------------------------------------------- */
|
4 |
.cd-container {
|
@@ -22,6 +22,17 @@
|
|
22 |
padding: 2em 0;
|
23 |
margin-top: 2em;
|
24 |
margin-bottom: 3em;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
}
|
26 |
#cd-timeline::before {
|
27 |
content: '';
|
1 |
+
/* Timeline Express Minified Styles 1.1.5.7 */
|
2 |
/* By Evan Herman (http://www.evan-herman.com */
|
3 |
/* -------------------------------------------------- */
|
4 |
.cd-container {
|
22 |
padding: 2em 0;
|
23 |
margin-top: 2em;
|
24 |
margin-bottom: 3em;
|
25 |
+
/* @since v1.1.5.7 */
|
26 |
+
/* IE 8 */
|
27 |
+
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
|
28 |
+
/* IE 5-7 */
|
29 |
+
filter: alpha(opacity=0);
|
30 |
+
/* Netscape */
|
31 |
+
-moz-opacity: 0;
|
32 |
+
/* Safari 1.x */
|
33 |
+
-khtml-opacity: 0;
|
34 |
+
/* Good browsers */
|
35 |
+
opacity: 0;
|
36 |
}
|
37 |
#cd-timeline::before {
|
38 |
content: '';
|
css/timeline-express.min.css
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
/* Timeline Express Minified Styles 1.1.
|
2 |
/* By Evan Herman (http://www.evan-herman.com */
|
3 |
/* -------------------------------------------------- */
|
4 |
-
.cd-container{width:100%;max-width:822px;margin:0 auto}.cd-container::after{content:'';display:table;clear:both}.cd-timeline-announcement-image{box-shadow:none!important;max-width:100%;display:block;margin:1em auto}#cd-timeline{position:relative;padding:2em 0;margin-top:2em;margin-bottom:3em}#cd-timeline::before{content:'';position:absolute;top:0;left:18px;height:100%;width:4px;background:#d7e4ed}.announcement-banner-image{max-width:100%}.timeline-express-single-page-announcement-date{display:block;margin-bottom:1em}@media only screen and (min-width:822px){#cd-timeline{margin-top:3em;margin-bottom:5.5em}#cd-timeline::before{left:50%;margin-left:-2px}}.cd-timeline-block{margin:25px 0}.cd-timeline-block:after{content:"";display:table;clear:both}.cd-timeline-block:first-child{margin-top:0}.cd-timeline-block:last-child{margin-bottom:0}@media only screen and (min-width:822px){.cd-timeline-block{width:100%;margin:-3.5em 0}.cd-timeline-block:first-child{margin-top:0}.cd-timeline-block:last-child{margin-bottom:0}}.cd-timeline-img{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;box-shadow:0 0 0 4px white,inset 0 2px 0 rgba(0,0,0,.08),0 3px 0 4px rgba(0,0,0,.05)}.cd-timeline-img img{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-12px}.cd-timeline-img.cd-picture{background:#75ce66}.cd-timeline-img.cd-movie{background:#c03b44}.cd-timeline-img.cd-location{background:#f0ca45}@media only screen and (min-width:822px){.cd-timeline-img{width:60px;height:60px;left:50%;margin-left:-30px;-webkit-transform:translateZ(0);-webkit-backface-visibility:hidden}.cssanimations .cd-timeline-img.is-hidden{visibility:hidden}.cssanimations .cd-timeline-img.bounce-in{visibility:visible;-webkit-animation:cd-bounce-1 .6s;-moz-animation:cd-bounce-1 .6s;animation:cd-bounce-1 .6s}}@-webkit-keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(0.5)}60%{opacity:1;-webkit-transform:scale(1.2)}100%{-webkit-transform:scale(1)}}@-moz-keyframes cd-bounce-1{0%{opacity:0;-moz-transform:scale(0.5)}60%{opacity:1;-moz-transform:scale(1.2)}100%{-moz-transform:scale(1)}}@keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(0.5);-moz-transform:scale(0.5);-ms-transform:scale(0.5);-o-transform:scale(0.5);transform:scale(0.5)}60%{opacity:1;-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.cd-timeline-content{position:relative;margin-left:60px;background:#fff;border-radius:.25em;padding:1em;box-shadow:0 3px 0 #B9C5CD}.cd-timeline-content:after{content:"";display:table;clear:both}.cd-timeline-content .cd-date,.cd-timeline-content .cd-read-more{display:inline-block}.cd-timeline-content .cd-read-more{padding:.8em 1em;position:relative;z-index:9999}.cd-timeline-content .cd-date{float:left;padding:.8em 0;opacity:.7;font-size:12px}.cd-timeline-title-container{display:inline-block;width:100%;float:left;margin:.55em 0}.cd-timeline-title-container h2{float:left}.cd-timeline-content .timeline-date{opacity:.7;font-size:.857143rem;float:right;margin-top:.5em}.cd-timeline-content::before{content:'';position:absolute;top:16px;right:100%;height:0;width:0;border:7px solid transparent;border-right:7px solid #fff}@media only screen and (min-width:768px){.cd-timeline-content h2{margin-top:0;margin-bottom:0}.cd-timeline-content .the-excerpt{display:block;float:left;width:100%;margin:1em 0;position:relative;z-index:999}.cd-timeline-content .cd-date,.cd-timeline-content .cd-read-more{font-size:14px;font-size:.875rem;position:relative;z-index:999}}@media only screen and (min-width:822px){.cd-timeline-content{margin-left:0;padding:1.6em;width:39%;background:#EFEFEF}.cd-timeline-content::before{top:24px;left:100%;border-color:transparent transparent transparent #EFEFEF}.cd-timeline-content .cd-read-more{float:left;color:#333}.cd-timeline-content .cd-date{position:absolute;width:100%;left:125%;top:15px}.cd-timeline-block:nth-child(even) .cd-timeline-content{float:right}.cd-timeline-block:nth-child(even) .cd-timeline-content::before{top:24px;left:auto;right:100%;border-color:transparent #EFEFEF transparent transparent}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more{float:right;color:#333;padding-right:0}.cd-timeline-block:nth-child(odd) .cd-timeline-content .cd-read-more{position:relative;z-index:99999;padding-left:0}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-date{left:auto;right:125%;text-align:right}.cssanimations .cd-timeline-content.is-hidden{visibility:hidden}.cssanimations .cd-timeline-content.bounce-in{visibility:visible;-webkit-animation:cd-bounce-2 .6s;-moz-animation:cd-bounce-2 .6s;animation:cd-bounce-2 .6s}}@media only screen and (min-width:822px){.cssanimations .cd-timeline-block:nth-child(even) .cd-timeline-content.bounce-in{-webkit-animation:cd-bounce-2-inverse .6s;-moz-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@-webkit-keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes cd-bounce-2{0%{opacity:0;-moz-transform:translateX(-100px)}60%{opacity:1;-moz-transform:translateX(20px)}100%{-moz-transform:translateX(0)}}@keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px);-moz-transform:translateX(-100px);-ms-transform:translateX(-100px);-o-transform:translateX(-100px);transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px);-moz-transform:translateX(20px);-ms-transform:translateX(20px);-o-transform:translateX(20px);transform:translateX(20px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes cd-bounce-2-inverse{0%{opacity:0;-moz-transform:translateX(100px)}60%{opacity:1;-moz-transform:translateX(-20px)}100%{-moz-transform:translateX(0)}}@keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px);-moz-transform:translateX(100px);-ms-transform:translateX(100px);-o-transform:translateX(100px);transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px);-moz-transform:translateX(-20px);-ms-transform:translateX(-20px);-o-transform:translateX(-20px);transform:translateX(-20px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}}.more-to-come-container{position:relative;background:#EFEFEF;display:block;width:100%;text-align:center}.more-to-come{margin:10em 0 0;padding:1em 0;font-weight:200;color:rgba(100,100,100,.46)}.page article.page{background:0 0!important;box-shadow:none;border:none;-webkit-box-shadow:none}#cd-timeline span.fa{color:#fff;font-size:28px;display:block;text-align:center;margin-top:17px}.cd-timeline-icon-link{color:#fff!important}@media only screen and (max-width:821px){#cd-timeline span.fa{color:#fff;font-size:18px;display:block;text-align:center;margin-top:12px}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more,.cd-timeline-block:nth-child(odd) .cd-timeline-content .cd-read-more{padding-left:0!important;position:relative;z-index:99999}}.timeline-width100{width:100%}.timeline-width34{width:34%}.timeline-width30{width:30%}.timeline-date-left{width:100%;float:left!important}.single-post .announcement-banner-image,.single-post .return-to-timeline,.single-post .timeline-express-single-page-announcement-date{display:none}
|
1 |
+
/* Timeline Express Minified Styles 1.1.5.7 */
|
2 |
/* By Evan Herman (http://www.evan-herman.com */
|
3 |
/* -------------------------------------------------- */
|
4 |
+
.cd-container{width:100%;max-width:822px;margin:0 auto}.cd-container::after{content:'';display:table;clear:both}.cd-timeline-announcement-image{box-shadow:none!important;max-width:100%;display:block;margin:1em auto}#cd-timeline{position:relative;padding:2em 0;margin-top:2em;margin-bottom:3em;-ms-filter:"alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity:0;opacity:0}#cd-timeline::before{content:'';position:absolute;top:0;left:18px;height:100%;width:4px;background:#d7e4ed}.announcement-banner-image{max-width:100%}.timeline-express-single-page-announcement-date{display:block;margin-bottom:1em}@media only screen and (min-width:822px){#cd-timeline{margin-top:3em;margin-bottom:5.5em}#cd-timeline::before{left:50%;margin-left:-2px}}.cd-timeline-block{margin:25px 0}.cd-timeline-block:after{content:"";display:table;clear:both}.cd-timeline-block:first-child{margin-top:0}.cd-timeline-block:last-child{margin-bottom:0}@media only screen and (min-width:822px){.cd-timeline-block{width:100%;margin:-3.5em 0}.cd-timeline-block:first-child{margin-top:0}.cd-timeline-block:last-child{margin-bottom:0}}.cd-timeline-img{position:absolute;top:0;left:0;width:40px;height:40px;border-radius:50%;box-shadow:0 0 0 4px white,inset 0 2px 0 rgba(0,0,0,.08),0 3px 0 4px rgba(0,0,0,.05)}.cd-timeline-img img{display:block;width:24px;height:24px;position:relative;left:50%;top:50%;margin-left:-12px;margin-top:-12px}.cd-timeline-img.cd-picture{background:#75ce66}.cd-timeline-img.cd-movie{background:#c03b44}.cd-timeline-img.cd-location{background:#f0ca45}@media only screen and (min-width:822px){.cd-timeline-img{width:60px;height:60px;left:50%;margin-left:-30px;-webkit-transform:translateZ(0);-webkit-backface-visibility:hidden}.cssanimations .cd-timeline-img.is-hidden{visibility:hidden}.cssanimations .cd-timeline-img.bounce-in{visibility:visible;-webkit-animation:cd-bounce-1 .6s;-moz-animation:cd-bounce-1 .6s;animation:cd-bounce-1 .6s}}@-webkit-keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(0.5)}60%{opacity:1;-webkit-transform:scale(1.2)}100%{-webkit-transform:scale(1)}}@-moz-keyframes cd-bounce-1{0%{opacity:0;-moz-transform:scale(0.5)}60%{opacity:1;-moz-transform:scale(1.2)}100%{-moz-transform:scale(1)}}@keyframes cd-bounce-1{0%{opacity:0;-webkit-transform:scale(0.5);-moz-transform:scale(0.5);-ms-transform:scale(0.5);-o-transform:scale(0.5);transform:scale(0.5)}60%{opacity:1;-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}100%{-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.cd-timeline-content{position:relative;margin-left:60px;background:#fff;border-radius:.25em;padding:1em;box-shadow:0 3px 0 #B9C5CD}.cd-timeline-content:after{content:"";display:table;clear:both}.cd-timeline-content .cd-date,.cd-timeline-content .cd-read-more{display:inline-block}.cd-timeline-content .cd-read-more{padding:.8em 1em;position:relative;z-index:9999}.cd-timeline-content .cd-date{float:left;padding:.8em 0;opacity:.7;font-size:12px}.cd-timeline-title-container{display:inline-block;width:100%;float:left;margin:.55em 0}.cd-timeline-title-container h2{float:left}.cd-timeline-content .timeline-date{opacity:.7;font-size:.857143rem;float:right;margin-top:.5em}.cd-timeline-content::before{content:'';position:absolute;top:16px;right:100%;height:0;width:0;border:7px solid transparent;border-right:7px solid #fff}@media only screen and (min-width:768px){.cd-timeline-content h2{margin-top:0;margin-bottom:0}.cd-timeline-content .the-excerpt{display:block;float:left;width:100%;margin:1em 0;position:relative;z-index:999}.cd-timeline-content .cd-date,.cd-timeline-content .cd-read-more{font-size:14px;font-size:.875rem;position:relative;z-index:999}}@media only screen and (min-width:822px){.cd-timeline-content{margin-left:0;padding:1.6em;width:39%;background:#EFEFEF}.cd-timeline-content::before{top:24px;left:100%;border-color:transparent transparent transparent #EFEFEF}.cd-timeline-content .cd-read-more{float:left;color:#333}.cd-timeline-content .cd-date{position:absolute;width:100%;left:125%;top:15px}.cd-timeline-block:nth-child(even) .cd-timeline-content{float:right}.cd-timeline-block:nth-child(even) .cd-timeline-content::before{top:24px;left:auto;right:100%;border-color:transparent #EFEFEF transparent transparent}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more{float:right;color:#333;padding-right:0}.cd-timeline-block:nth-child(odd) .cd-timeline-content .cd-read-more{position:relative;z-index:99999;padding-left:0}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-date{left:auto;right:125%;text-align:right}.cssanimations .cd-timeline-content.is-hidden{visibility:hidden}.cssanimations .cd-timeline-content.bounce-in{visibility:visible;-webkit-animation:cd-bounce-2 .6s;-moz-animation:cd-bounce-2 .6s;animation:cd-bounce-2 .6s}}@media only screen and (min-width:822px){.cssanimations .cd-timeline-block:nth-child(even) .cd-timeline-content.bounce-in{-webkit-animation:cd-bounce-2-inverse .6s;-moz-animation:cd-bounce-2-inverse .6s;animation:cd-bounce-2-inverse .6s}}@-webkit-keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes cd-bounce-2{0%{opacity:0;-moz-transform:translateX(-100px)}60%{opacity:1;-moz-transform:translateX(20px)}100%{-moz-transform:translateX(0)}}@keyframes cd-bounce-2{0%{opacity:0;-webkit-transform:translateX(-100px);-moz-transform:translateX(-100px);-ms-transform:translateX(-100px);-o-transform:translateX(-100px);transform:translateX(-100px)}60%{opacity:1;-webkit-transform:translateX(20px);-moz-transform:translateX(20px);-ms-transform:translateX(20px);-o-transform:translateX(20px);transform:translateX(20px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px)}100%{-webkit-transform:translateX(0)}}@-moz-keyframes cd-bounce-2-inverse{0%{opacity:0;-moz-transform:translateX(100px)}60%{opacity:1;-moz-transform:translateX(-20px)}100%{-moz-transform:translateX(0)}}@keyframes cd-bounce-2-inverse{0%{opacity:0;-webkit-transform:translateX(100px);-moz-transform:translateX(100px);-ms-transform:translateX(100px);-o-transform:translateX(100px);transform:translateX(100px)}60%{opacity:1;-webkit-transform:translateX(-20px);-moz-transform:translateX(-20px);-ms-transform:translateX(-20px);-o-transform:translateX(-20px);transform:translateX(-20px)}100%{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);-o-transform:translateX(0);transform:translateX(0)}}.more-to-come-container{position:relative;background:#EFEFEF;display:block;width:100%;text-align:center}.more-to-come{margin:10em 0 0;padding:1em 0;font-weight:200;color:rgba(100,100,100,.46)}.page article.page{background:0 0!important;box-shadow:none;border:none;-webkit-box-shadow:none}#cd-timeline span.fa{color:#fff;font-size:28px;display:block;text-align:center;margin-top:17px}.cd-timeline-icon-link{color:#fff!important}@media only screen and (max-width:821px){#cd-timeline span.fa{color:#fff;font-size:18px;display:block;text-align:center;margin-top:12px}.cd-timeline-block:nth-child(even) .cd-timeline-content .cd-read-more,.cd-timeline-block:nth-child(odd) .cd-timeline-content .cd-read-more{padding-left:0!important;position:relative;z-index:99999}}.timeline-width100{width:100%}.timeline-width34{width:34%}.timeline-width30{width:30%}.timeline-date-left{width:100%;float:left!important}.single-post .announcement-banner-image,.single-post .return-to-timeline,.single-post .timeline-express-single-page-announcement-date{display:none}
|
js/bootstrap-select.js
ADDED
@@ -0,0 +1,1209 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function ($) {
|
2 |
+
'use strict';
|
3 |
+
|
4 |
+
// Case insensitive search
|
5 |
+
$.expr[':'].icontains = function (obj, index, meta) {
|
6 |
+
return icontains($(obj).text(), meta[3]);
|
7 |
+
};
|
8 |
+
|
9 |
+
// Case and accent insensitive search
|
10 |
+
$.expr[':'].aicontains = function (obj, index, meta) {
|
11 |
+
return icontains($(obj).data('normalizedText') || $(obj).text(), meta[3]);
|
12 |
+
};
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Actual implementation of the case insensitive search.
|
16 |
+
* @access private
|
17 |
+
* @param {String} haystack
|
18 |
+
* @param {String} needle
|
19 |
+
* @returns {boolean}
|
20 |
+
*/
|
21 |
+
function icontains(haystack, needle) {
|
22 |
+
return haystack.toUpperCase().indexOf(needle.toUpperCase()) > -1;
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Remove all diatrics from the given text.
|
27 |
+
* @access private
|
28 |
+
* @param {String} text
|
29 |
+
* @returns {String}
|
30 |
+
*/
|
31 |
+
function normalizeToBase(text) {
|
32 |
+
var rExps = [
|
33 |
+
{re: /[\xC0-\xC6]/g, ch: "A"},
|
34 |
+
{re: /[\xE0-\xE6]/g, ch: "a"},
|
35 |
+
{re: /[\xC8-\xCB]/g, ch: "E"},
|
36 |
+
{re: /[\xE8-\xEB]/g, ch: "e"},
|
37 |
+
{re: /[\xCC-\xCF]/g, ch: "I"},
|
38 |
+
{re: /[\xEC-\xEF]/g, ch: "i"},
|
39 |
+
{re: /[\xD2-\xD6]/g, ch: "O"},
|
40 |
+
{re: /[\xF2-\xF6]/g, ch: "o"},
|
41 |
+
{re: /[\xD9-\xDC]/g, ch: "U"},
|
42 |
+
{re: /[\xF9-\xFC]/g, ch: "u"},
|
43 |
+
{re: /[\xC7-\xE7]/g, ch: "c"},
|
44 |
+
{re: /[\xD1]/g, ch: "N"},
|
45 |
+
{re: /[\xF1]/g, ch: "n"}
|
46 |
+
];
|
47 |
+
$.each(rExps, function () {
|
48 |
+
text = text.replace(this.re, this.ch);
|
49 |
+
});
|
50 |
+
return text;
|
51 |
+
}
|
52 |
+
|
53 |
+
|
54 |
+
function htmlEscape(html) {
|
55 |
+
var escapeMap = {
|
56 |
+
'&': '&',
|
57 |
+
'<': '<',
|
58 |
+
'>': '>',
|
59 |
+
'"': '"',
|
60 |
+
"'": ''',
|
61 |
+
'`': '`'
|
62 |
+
};
|
63 |
+
var source = '(?:' + Object.keys(escapeMap).join('|') + ')',
|
64 |
+
testRegexp = new RegExp(source),
|
65 |
+
replaceRegexp = new RegExp(source, 'g'),
|
66 |
+
string = html == null ? '' : '' + html;
|
67 |
+
return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {
|
68 |
+
return escapeMap[match];
|
69 |
+
}) : string;
|
70 |
+
}
|
71 |
+
|
72 |
+
var Selectpicker = function (element, options, e) {
|
73 |
+
if (e) {
|
74 |
+
e.stopPropagation();
|
75 |
+
e.preventDefault();
|
76 |
+
}
|
77 |
+
|
78 |
+
this.$element = $(element);
|
79 |
+
this.$newElement = null;
|
80 |
+
this.$button = null;
|
81 |
+
this.$menu = null;
|
82 |
+
this.$lis = null;
|
83 |
+
this.options = options;
|
84 |
+
|
85 |
+
// If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a
|
86 |
+
// data-attribute)
|
87 |
+
if (this.options.title === null) {
|
88 |
+
this.options.title = this.$element.attr('title');
|
89 |
+
}
|
90 |
+
|
91 |
+
//Expose public methods
|
92 |
+
this.val = Selectpicker.prototype.val;
|
93 |
+
this.render = Selectpicker.prototype.render;
|
94 |
+
this.refresh = Selectpicker.prototype.refresh;
|
95 |
+
this.setStyle = Selectpicker.prototype.setStyle;
|
96 |
+
this.selectAll = Selectpicker.prototype.selectAll;
|
97 |
+
this.deselectAll = Selectpicker.prototype.deselectAll;
|
98 |
+
this.destroy = Selectpicker.prototype.remove;
|
99 |
+
this.remove = Selectpicker.prototype.remove;
|
100 |
+
this.show = Selectpicker.prototype.show;
|
101 |
+
this.hide = Selectpicker.prototype.hide;
|
102 |
+
|
103 |
+
this.init();
|
104 |
+
};
|
105 |
+
|
106 |
+
Selectpicker.VERSION = '1.6.3';
|
107 |
+
|
108 |
+
// part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.
|
109 |
+
Selectpicker.DEFAULTS = {
|
110 |
+
noneSelectedText: 'Nothing selected',
|
111 |
+
noneResultsText: 'No results match',
|
112 |
+
countSelectedText: function (numSelected, numTotal) {
|
113 |
+
return (numSelected == 1) ? "{0} item selected" : "{0} items selected";
|
114 |
+
},
|
115 |
+
maxOptionsText: function (numAll, numGroup) {
|
116 |
+
var arr = [];
|
117 |
+
|
118 |
+
arr[0] = (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)';
|
119 |
+
arr[1] = (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)';
|
120 |
+
|
121 |
+
return arr;
|
122 |
+
},
|
123 |
+
selectAllText: 'Select All',
|
124 |
+
deselectAllText: 'Deselect All',
|
125 |
+
multipleSeparator: ', ',
|
126 |
+
style: 'btn-default',
|
127 |
+
size: 'auto',
|
128 |
+
title: null,
|
129 |
+
selectedTextFormat: 'values',
|
130 |
+
width: false,
|
131 |
+
container: false,
|
132 |
+
hideDisabled: false,
|
133 |
+
showSubtext: false,
|
134 |
+
showIcon: true,
|
135 |
+
showContent: true,
|
136 |
+
dropupAuto: true,
|
137 |
+
header: false,
|
138 |
+
liveSearch: false,
|
139 |
+
actionsBox: false,
|
140 |
+
iconBase: 'fa',
|
141 |
+
tickIcon: 'fa-ok',
|
142 |
+
maxOptions: false,
|
143 |
+
mobile: false,
|
144 |
+
selectOnTab: false,
|
145 |
+
dropdownAlignRight: false,
|
146 |
+
searchAccentInsensitive: false
|
147 |
+
};
|
148 |
+
|
149 |
+
Selectpicker.prototype = {
|
150 |
+
|
151 |
+
constructor: Selectpicker,
|
152 |
+
|
153 |
+
init: function () {
|
154 |
+
var that = this,
|
155 |
+
id = this.$element.attr('id');
|
156 |
+
|
157 |
+
this.$element.hide();
|
158 |
+
this.multiple = this.$element.prop('multiple');
|
159 |
+
this.autofocus = this.$element.prop('autofocus');
|
160 |
+
this.$newElement = this.createView();
|
161 |
+
this.$element.after(this.$newElement);
|
162 |
+
this.$menu = this.$newElement.find('> .dropdown-menu');
|
163 |
+
this.$button = this.$newElement.find('> button');
|
164 |
+
this.$searchbox = this.$newElement.find('input');
|
165 |
+
|
166 |
+
if (this.options.dropdownAlignRight)
|
167 |
+
this.$menu.addClass('dropdown-menu-right');
|
168 |
+
|
169 |
+
if (typeof id !== 'undefined') {
|
170 |
+
this.$button.attr('data-id', id);
|
171 |
+
$('label[for="' + id + '"]').click(function (e) {
|
172 |
+
e.preventDefault();
|
173 |
+
that.$button.focus();
|
174 |
+
});
|
175 |
+
}
|
176 |
+
|
177 |
+
this.checkDisabled();
|
178 |
+
this.clickListener();
|
179 |
+
if (this.options.liveSearch) this.liveSearchListener();
|
180 |
+
this.render();
|
181 |
+
this.liHeight();
|
182 |
+
this.setStyle();
|
183 |
+
this.setWidth();
|
184 |
+
if (this.options.container) this.selectPosition();
|
185 |
+
this.$menu.data('this', this);
|
186 |
+
this.$newElement.data('this', this);
|
187 |
+
if (this.options.mobile) this.mobile();
|
188 |
+
},
|
189 |
+
|
190 |
+
createDropdown: function () {
|
191 |
+
// Options
|
192 |
+
// If we are multiple, then add the show-tick class by default
|
193 |
+
var multiple = this.multiple ? ' show-tick' : '',
|
194 |
+
inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',
|
195 |
+
autofocus = this.autofocus ? ' autofocus' : '',
|
196 |
+
btnSize = this.$element.parents().hasClass('form-group-lg') ? ' btn-lg' : (this.$element.parents().hasClass('form-group-sm') ? ' btn-sm' : '');
|
197 |
+
// Elements
|
198 |
+
var header = this.options.header ? '<div class="popover-title"><button type="button" class="close" aria-hidden="true">×</button>' + this.options.header + '</div>' : '';
|
199 |
+
var searchbox = this.options.liveSearch ? '<div class="bs-searchbox"><input type="text" class="input-block-level form-control" autocomplete="off" /></div>' : '';
|
200 |
+
var actionsbox = this.options.actionsBox ? '<div class="bs-actionsbox">' +
|
201 |
+
'<div class="btn-group btn-block">' +
|
202 |
+
'<button class="actions-btn bs-select-all btn btn-sm btn-default">' +
|
203 |
+
this.options.selectAllText +
|
204 |
+
'</button>' +
|
205 |
+
'<button class="actions-btn bs-deselect-all btn btn-sm btn-default">' +
|
206 |
+
this.options.deselectAllText +
|
207 |
+
'</button>' +
|
208 |
+
'</div>' +
|
209 |
+
'</div>' : '';
|
210 |
+
var drop =
|
211 |
+
'<div class="btn-group bootstrap-select' + multiple + inputGroup + '">' +
|
212 |
+
'<button type="button" class="btn dropdown-toggle selectpicker' + btnSize + '" data-toggle="dropdown"' + autofocus + '>' +
|
213 |
+
'<span class="filter-option pull-left"></span> ' +
|
214 |
+
'<span class="caret"></span>' +
|
215 |
+
'</button>' +
|
216 |
+
'<div class="dropdown-menu open">' +
|
217 |
+
header +
|
218 |
+
searchbox +
|
219 |
+
actionsbox +
|
220 |
+
'<ul class="dropdown-menu inner selectpicker" role="menu">' +
|
221 |
+
'</ul>' +
|
222 |
+
'</div>' +
|
223 |
+
'</div>';
|
224 |
+
|
225 |
+
return $(drop);
|
226 |
+
},
|
227 |
+
|
228 |
+
createView: function () {
|
229 |
+
var $drop = this.createDropdown();
|
230 |
+
var $li = this.createLi();
|
231 |
+
$drop.find('ul').append($li);
|
232 |
+
return $drop;
|
233 |
+
},
|
234 |
+
|
235 |
+
reloadLi: function () {
|
236 |
+
//Remove all children.
|
237 |
+
this.destroyLi();
|
238 |
+
//Re build
|
239 |
+
var $li = this.createLi();
|
240 |
+
this.$menu.find('ul').append($li);
|
241 |
+
},
|
242 |
+
|
243 |
+
destroyLi: function () {
|
244 |
+
this.$menu.find('li').remove();
|
245 |
+
},
|
246 |
+
|
247 |
+
createLi: function () {
|
248 |
+
var that = this,
|
249 |
+
_li = [],
|
250 |
+
optID = 0;
|
251 |
+
|
252 |
+
// Helper functions
|
253 |
+
/**
|
254 |
+
* @param content
|
255 |
+
* @param [index]
|
256 |
+
* @param [classes]
|
257 |
+
* @returns {string}
|
258 |
+
*/
|
259 |
+
var generateLI = function (content, index, classes) {
|
260 |
+
return '<li' +
|
261 |
+
(typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
|
262 |
+
(typeof index !== 'undefined' | null === index ? ' data-original-index="' + index + '"' : '') +
|
263 |
+
'>' + content + '</li>';
|
264 |
+
};
|
265 |
+
|
266 |
+
/**
|
267 |
+
* @param text
|
268 |
+
* @param [classes]
|
269 |
+
* @param [inline]
|
270 |
+
* @param [optgroup]
|
271 |
+
* @returns {string}
|
272 |
+
*/
|
273 |
+
var generateA = function (text, classes, inline, optgroup) {
|
274 |
+
var normText = normalizeToBase(htmlEscape(text));
|
275 |
+
return '<a tabindex="0"' +
|
276 |
+
(typeof classes !== 'undefined' ? ' class="' + classes + '"' : '') +
|
277 |
+
(typeof inline !== 'undefined' ? ' style="' + inline + '"' : '') +
|
278 |
+
(typeof optgroup !== 'undefined' ? 'data-optgroup="' + optgroup + '"' : '') +
|
279 |
+
' data-normalized-text="' + normText + '"' +
|
280 |
+
'>' + text +
|
281 |
+
'<span class="' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark"></span>' +
|
282 |
+
'</a>';
|
283 |
+
};
|
284 |
+
|
285 |
+
this.$element.find('option').each(function () {
|
286 |
+
var $this = $(this);
|
287 |
+
|
288 |
+
// Get the class and text for the option
|
289 |
+
var optionClass = $this.attr('class') || '',
|
290 |
+
inline = $this.attr('style'),
|
291 |
+
text = $this.data('content') ? $this.data('content') : $this.html(),
|
292 |
+
subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class="muted text-muted">' + $this.data('subtext') + '</small>' : '',
|
293 |
+
icon = typeof $this.data('icon') !== 'undefined' ? '<span class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></span> ' : '',
|
294 |
+
isDisabled = $this.is(':disabled') || $this.parent().is(':disabled'),
|
295 |
+
index = $this[0].index;
|
296 |
+
if (icon !== '' && isDisabled) {
|
297 |
+
icon = '<span>' + icon + '</span>';
|
298 |
+
}
|
299 |
+
|
300 |
+
if (!$this.data('content')) {
|
301 |
+
// Prepend any icon and append any subtext to the main text.
|
302 |
+
text = icon + '<span class="text">' + text + subtext + '</span>';
|
303 |
+
}
|
304 |
+
|
305 |
+
if (that.options.hideDisabled && isDisabled) {
|
306 |
+
return;
|
307 |
+
}
|
308 |
+
|
309 |
+
if ($this.parent().is('optgroup') && $this.data('divider') !== true) {
|
310 |
+
if ($this.index() === 0) { // Is it the first option of the optgroup?
|
311 |
+
optID += 1;
|
312 |
+
|
313 |
+
// Get the opt group label
|
314 |
+
var label = $this.parent().attr('label');
|
315 |
+
var labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class="muted text-muted">' + $this.parent().data('subtext') + '</small>' : '';
|
316 |
+
var labelIcon = $this.parent().data('icon') ? '<span class="' + that.options.iconBase + ' ' + $this.parent().data('icon') + '"></span> ' : '';
|
317 |
+
label = labelIcon + '<span class="text">' + label + labelSubtext + '</span>';
|
318 |
+
|
319 |
+
if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?
|
320 |
+
_li.push(generateLI('', null, 'divider'));
|
321 |
+
}
|
322 |
+
|
323 |
+
_li.push(generateLI(label, null, 'dropdown-header'));
|
324 |
+
}
|
325 |
+
|
326 |
+
_li.push(generateLI(generateA(text, 'opt ' + optionClass, inline, optID), index));
|
327 |
+
} else if ($this.data('divider') === true) {
|
328 |
+
_li.push(generateLI('', index, 'divider'));
|
329 |
+
} else if ($this.data('hidden') === true) {
|
330 |
+
_li.push(generateLI(generateA(text, optionClass, inline), index, 'hide is-hidden'));
|
331 |
+
} else {
|
332 |
+
_li.push(generateLI(generateA(text, optionClass, inline), index));
|
333 |
+
}
|
334 |
+
});
|
335 |
+
|
336 |
+
//If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button
|
337 |
+
if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {
|
338 |
+
this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');
|
339 |
+
}
|
340 |
+
|
341 |
+
return $(_li.join(''));
|
342 |
+
},
|
343 |
+
|
344 |
+
findLis: function () {
|
345 |
+
if (this.$lis == null) this.$lis = this.$menu.find('li');
|
346 |
+
return this.$lis;
|
347 |
+
},
|
348 |
+
|
349 |
+
/**
|
350 |
+
* @param [updateLi] defaults to true
|
351 |
+
*/
|
352 |
+
render: function (updateLi) {
|
353 |
+
var that = this;
|
354 |
+
|
355 |
+
//Update the LI to match the SELECT
|
356 |
+
if (updateLi !== false) {
|
357 |
+
this.$element.find('option').each(function (index) {
|
358 |
+
that.setDisabled(index, $(this).is(':disabled') || $(this).parent().is(':disabled'));
|
359 |
+
that.setSelected(index, $(this).is(':selected'));
|
360 |
+
});
|
361 |
+
}
|
362 |
+
|
363 |
+
this.tabIndex();
|
364 |
+
var notDisabled = this.options.hideDisabled ? ':not([disabled])' : '';
|
365 |
+
var selectedItems = this.$element.find('option:selected' + notDisabled).map(function () {
|
366 |
+
var $this = $(this);
|
367 |
+
var icon = $this.data('icon') && that.options.showIcon ? '<i class="' + that.options.iconBase + ' ' + $this.data('icon') + '"></i> ' : '';
|
368 |
+
var subtext;
|
369 |
+
if (that.options.showSubtext && $this.attr('data-subtext') && !that.multiple) {
|
370 |
+
subtext = ' <small class="muted text-muted">' + $this.data('subtext') + '</small>';
|
371 |
+
} else {
|
372 |
+
subtext = '';
|
373 |
+
}
|
374 |
+
if ($this.data('content') && that.options.showContent) {
|
375 |
+
return $this.data('content');
|
376 |
+
} else if (typeof $this.attr('title') !== 'undefined') {
|
377 |
+
return $this.attr('title');
|
378 |
+
} else {
|
379 |
+
return icon + $this.html() + subtext;
|
380 |
+
}
|
381 |
+
}).toArray();
|
382 |
+
|
383 |
+
//Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled
|
384 |
+
//Convert all the values into a comma delimited string
|
385 |
+
var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);
|
386 |
+
|
387 |
+
//If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..
|
388 |
+
if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {
|
389 |
+
var max = this.options.selectedTextFormat.split('>');
|
390 |
+
if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {
|
391 |
+
notDisabled = this.options.hideDisabled ? ', [disabled]' : '';
|
392 |
+
var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length,
|
393 |
+
tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;
|
394 |
+
title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());
|
395 |
+
}
|
396 |
+
}
|
397 |
+
|
398 |
+
this.options.title = this.$element.attr('title');
|
399 |
+
|
400 |
+
if (this.options.selectedTextFormat == 'static') {
|
401 |
+
title = this.options.title;
|
402 |
+
}
|
403 |
+
|
404 |
+
//If we dont have a title, then use the default, or if nothing is set at all, use the not selected text
|
405 |
+
if (!title) {
|
406 |
+
title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;
|
407 |
+
}
|
408 |
+
|
409 |
+
this.$button.attr('title', htmlEscape(title));
|
410 |
+
this.$newElement.find('.filter-option').html(title);
|
411 |
+
},
|
412 |
+
|
413 |
+
/**
|
414 |
+
* @param [style]
|
415 |
+
* @param [status]
|
416 |
+
*/
|
417 |
+
setStyle: function (style, status) {
|
418 |
+
if (this.$element.attr('class')) {
|
419 |
+
this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|validate\[.*\]/gi, ''));
|
420 |
+
}
|
421 |
+
|
422 |
+
var buttonClass = style ? style : this.options.style;
|
423 |
+
|
424 |
+
if (status == 'add') {
|
425 |
+
this.$button.addClass(buttonClass);
|
426 |
+
} else if (status == 'remove') {
|
427 |
+
this.$button.removeClass(buttonClass);
|
428 |
+
} else {
|
429 |
+
this.$button.removeClass(this.options.style);
|
430 |
+
this.$button.addClass(buttonClass);
|
431 |
+
}
|
432 |
+
},
|
433 |
+
|
434 |
+
liHeight: function () {
|
435 |
+
if (this.options.size === false) return;
|
436 |
+
|
437 |
+
var $selectClone = this.$menu.parent().clone().find('> .dropdown-toggle').prop('autofocus', false).end().appendTo('body'),
|
438 |
+
$menuClone = $selectClone.addClass('open').find('> .dropdown-menu'),
|
439 |
+
liHeight = $menuClone.find('li').not('.divider').not('.dropdown-header').filter(':visible').children('a').outerHeight(),
|
440 |
+
headerHeight = this.options.header ? $menuClone.find('.popover-title').outerHeight() : 0,
|
441 |
+
searchHeight = this.options.liveSearch ? $menuClone.find('.bs-searchbox').outerHeight() : 0,
|
442 |
+
actionsHeight = this.options.actionsBox ? $menuClone.find('.bs-actionsbox').outerHeight() : 0;
|
443 |
+
|
444 |
+
$selectClone.remove();
|
445 |
+
|
446 |
+
this.$newElement
|
447 |
+
.data('liHeight', liHeight)
|
448 |
+
.data('headerHeight', headerHeight)
|
449 |
+
.data('searchHeight', searchHeight)
|
450 |
+
.data('actionsHeight', actionsHeight);
|
451 |
+
},
|
452 |
+
|
453 |
+
setSize: function () {
|
454 |
+
this.findLis();
|
455 |
+
var that = this,
|
456 |
+
menu = this.$menu,
|
457 |
+
menuInner = menu.find('.inner'),
|
458 |
+
selectHeight = this.$newElement.outerHeight(),
|
459 |
+
liHeight = this.$newElement.data('liHeight'),
|
460 |
+
headerHeight = this.$newElement.data('headerHeight'),
|
461 |
+
searchHeight = this.$newElement.data('searchHeight'),
|
462 |
+
actionsHeight = this.$newElement.data('actionsHeight'),
|
463 |
+
divHeight = this.$lis.filter('.divider').outerHeight(true),
|
464 |
+
menuPadding = parseInt(menu.css('padding-top')) +
|
465 |
+
parseInt(menu.css('padding-bottom')) +
|
466 |
+
parseInt(menu.css('border-top-width')) +
|
467 |
+
parseInt(menu.css('border-bottom-width')),
|
468 |
+
notDisabled = this.options.hideDisabled ? ', .disabled' : '',
|
469 |
+
$window = $(window),
|
470 |
+
menuExtras = menuPadding + parseInt(menu.css('margin-top')) + parseInt(menu.css('margin-bottom')) + 2,
|
471 |
+
menuHeight,
|
472 |
+
selectOffsetTop,
|
473 |
+
selectOffsetBot,
|
474 |
+
posVert = function () {
|
475 |
+
// JQuery defines a scrollTop function, but in pure JS it's a property
|
476 |
+
//noinspection JSValidateTypes
|
477 |
+
selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();
|
478 |
+
selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;
|
479 |
+
};
|
480 |
+
posVert();
|
481 |
+
if (this.options.header) menu.css('padding-top', 0);
|
482 |
+
|
483 |
+
if (this.options.size == 'auto') {
|
484 |
+
var getSize = function () {
|
485 |
+
var minHeight,
|
486 |
+
lisVis = that.$lis.not('.hide');
|
487 |
+
|
488 |
+
posVert();
|
489 |
+
menuHeight = selectOffsetBot - menuExtras;
|
490 |
+
|
491 |
+
if (that.options.dropupAuto) {
|
492 |
+
that.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && ((menuHeight - menuExtras) < menu.height()));
|
493 |
+
}
|
494 |
+
if (that.$newElement.hasClass('dropup')) {
|
495 |
+
menuHeight = selectOffsetTop - menuExtras;
|
496 |
+
}
|
497 |
+
|
498 |
+
if ((lisVis.length + lisVis.filter('.dropdown-header').length) > 3) {
|
499 |
+
minHeight = liHeight * 3 + menuExtras - 2;
|
500 |
+
} else {
|
501 |
+
minHeight = 0;
|
502 |
+
}
|
503 |
+
|
504 |
+
menu.css({
|
505 |
+
'max-height': menuHeight + 'px',
|
506 |
+
'overflow': 'hidden',
|
507 |
+
'min-height': minHeight + headerHeight + searchHeight + actionsHeight + 'px'
|
508 |
+
});
|
509 |
+
menuInner.css({
|
510 |
+
'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - menuPadding + 'px',
|
511 |
+
'overflow-y': 'auto',
|
512 |
+
'min-height': Math.max(minHeight - menuPadding, 0) + 'px'
|
513 |
+
});
|
514 |
+
};
|
515 |
+
getSize();
|
516 |
+
this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);
|
517 |
+
$(window).off('resize.getSize').on('resize.getSize', getSize);
|
518 |
+
$(window).off('scroll.getSize').on('scroll.getSize', getSize);
|
519 |
+
} else if (this.options.size && this.options.size != 'auto' && menu.find('li' + notDisabled).length > this.options.size) {
|
520 |
+
var optIndex = this.$lis.not('.divider' + notDisabled).find(' > *').slice(0, this.options.size).last().parent().index();
|
521 |
+
var divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;
|
522 |
+
menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;
|
523 |
+
if (that.options.dropupAuto) {
|
524 |
+
//noinspection JSUnusedAssignment
|
525 |
+
this.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && (menuHeight < menu.height()));
|
526 |
+
}
|
527 |
+
menu.css({'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + 'px', 'overflow': 'hidden'});
|
528 |
+
menuInner.css({'max-height': menuHeight - menuPadding + 'px', 'overflow-y': 'auto'});
|
529 |
+
}
|
530 |
+
},
|
531 |
+
|
532 |
+
setWidth: function () {
|
533 |
+
if (this.options.width == 'auto') {
|
534 |
+
this.$menu.css('min-width', '0');
|
535 |
+
|
536 |
+
// Get correct width if element hidden
|
537 |
+
var selectClone = this.$newElement.clone().appendTo('body');
|
538 |
+
var ulWidth = selectClone.find('> .dropdown-menu').css('width');
|
539 |
+
var btnWidth = selectClone.css('width', 'auto').find('> button').css('width');
|
540 |
+
selectClone.remove();
|
541 |
+
|
542 |
+
// Set width to whatever's larger, button title or longest option
|
543 |
+
this.$newElement.css('width', Math.max(parseInt(ulWidth), parseInt(btnWidth)) + 'px');
|
544 |
+
} else if (this.options.width == 'fit') {
|
545 |
+
// Remove inline min-width so width can be changed from 'auto'
|
546 |
+
this.$menu.css('min-width', '');
|
547 |
+
this.$newElement.css('width', '').addClass('fit-width');
|
548 |
+
} else if (this.options.width) {
|
549 |
+
// Remove inline min-width so width can be changed from 'auto'
|
550 |
+
this.$menu.css('min-width', '');
|
551 |
+
this.$newElement.css('width', this.options.width);
|
552 |
+
} else {
|
553 |
+
// Remove inline min-width/width so width can be changed
|
554 |
+
this.$menu.css('min-width', '');
|
555 |
+
this.$newElement.css('width', '');
|
556 |
+
}
|
557 |
+
// Remove fit-width class if width is changed programmatically
|
558 |
+
if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {
|
559 |
+
this.$newElement.removeClass('fit-width');
|
560 |
+
}
|
561 |
+
},
|
562 |
+
|
563 |
+
selectPosition: function () {
|
564 |
+
var that = this,
|
565 |
+
drop = '<div />',
|
566 |
+
$drop = $(drop),
|
567 |
+
pos,
|
568 |
+
actualHeight,
|
569 |
+
getPlacement = function ($element) {
|
570 |
+
$drop.addClass($element.attr('class').replace(/form-control/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));
|
571 |
+
pos = $element.offset();
|
572 |
+
actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;
|
573 |
+
$drop.css({
|
574 |
+
'top': pos.top + actualHeight,
|
575 |
+
'left': pos.left,
|
576 |
+
'width': $element[0].offsetWidth,
|
577 |
+
'position': 'absolute'
|
578 |
+
});
|
579 |
+
};
|
580 |
+
this.$newElement.on('click', function () {
|
581 |
+
if (that.isDisabled()) {
|
582 |
+
return;
|
583 |
+
}
|
584 |
+
getPlacement($(this));
|
585 |
+
$drop.appendTo(that.options.container);
|
586 |
+
$drop.toggleClass('open', !$(this).hasClass('open'));
|
587 |
+
$drop.append(that.$menu);
|
588 |
+
});
|
589 |
+
$(window).resize(function () {
|
590 |
+
getPlacement(that.$newElement);
|
591 |
+
});
|
592 |
+
$(window).on('scroll', function () {
|
593 |
+
getPlacement(that.$newElement);
|
594 |
+
});
|
595 |
+
$('html').on('click', function (e) {
|
596 |
+
if ($(e.target).closest(that.$newElement).length < 1) {
|
597 |
+
$drop.removeClass('open');
|
598 |
+
}
|
599 |
+
});
|
600 |
+
},
|
601 |
+
|
602 |
+
setSelected: function (index, selected) {
|
603 |
+
this.findLis();
|
604 |
+
this.$lis.filter('[data-original-index="' + index + '"]').toggleClass('selected', selected);
|
605 |
+
},
|
606 |
+
|
607 |
+
setDisabled: function (index, disabled) {
|
608 |
+
this.findLis();
|
609 |
+
if (disabled) {
|
610 |
+
this.$lis.filter('[data-original-index="' + index + '"]').addClass('disabled').find('a').attr('href', '#').attr('tabindex', -1);
|
611 |
+
} else {
|
612 |
+
this.$lis.filter('[data-original-index="' + index + '"]').removeClass('disabled').find('a').removeAttr('href').attr('tabindex', 0);
|
613 |
+
}
|
614 |
+
},
|
615 |
+
|
616 |
+
isDisabled: function () {
|
617 |
+
return this.$element.is(':disabled');
|
618 |
+
},
|
619 |
+
|
620 |
+
checkDisabled: function () {
|
621 |
+
var that = this;
|
622 |
+
|
623 |
+
if (this.isDisabled()) {
|
624 |
+
this.$button.addClass('disabled').attr('tabindex', -1);
|
625 |
+
} else {
|
626 |
+
if (this.$button.hasClass('disabled')) {
|
627 |
+
this.$button.removeClass('disabled');
|
628 |
+
}
|
629 |
+
|
630 |
+
if (this.$button.attr('tabindex') == -1) {
|
631 |
+
if (!this.$element.data('tabindex')) this.$button.removeAttr('tabindex');
|
632 |
+
}
|
633 |
+
}
|
634 |
+
|
635 |
+
this.$button.click(function () {
|
636 |
+
return !that.isDisabled();
|
637 |
+
});
|
638 |
+
},
|
639 |
+
|
640 |
+
tabIndex: function () {
|
641 |
+
if (this.$element.is('[tabindex]')) {
|
642 |
+
this.$element.data('tabindex', this.$element.attr('tabindex'));
|
643 |
+
this.$button.attr('tabindex', this.$element.data('tabindex'));
|
644 |
+
}
|
645 |
+
},
|
646 |
+
|
647 |
+
clickListener: function () {
|
648 |
+
var that = this;
|
649 |
+
|
650 |
+
this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {
|
651 |
+
e.stopPropagation();
|
652 |
+
});
|
653 |
+
|
654 |
+
this.$newElement.on('click', function () {
|
655 |
+
that.setSize();
|
656 |
+
if (!that.options.liveSearch && !that.multiple) {
|
657 |
+
setTimeout(function () {
|
658 |
+
that.$menu.find('.selected a').focus();
|
659 |
+
}, 10);
|
660 |
+
}
|
661 |
+
});
|
662 |
+
|
663 |
+
this.$menu.on('click', 'li a', function (e) {
|
664 |
+
var $this = $(this),
|
665 |
+
clickedIndex = $this.parent().data('originalIndex'),
|
666 |
+
prevValue = that.$element.val(),
|
667 |
+
prevIndex = that.$element.prop('selectedIndex');
|
668 |
+
|
669 |
+
// Don't close on multi choice menu
|
670 |
+
if (that.multiple) {
|
671 |
+
e.stopPropagation();
|
672 |
+
}
|
673 |
+
|
674 |
+
e.preventDefault();
|
675 |
+
|
676 |
+
//Don't run if we have been disabled
|
677 |
+
if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {
|
678 |
+
var $options = that.$element.find('option'),
|
679 |
+
$option = $options.eq(clickedIndex),
|
680 |
+
state = $option.prop('selected'),
|
681 |
+
$optgroup = $option.parent('optgroup'),
|
682 |
+
maxOptions = that.options.maxOptions,
|
683 |
+
maxOptionsGrp = $optgroup.data('maxOptions') || false;
|
684 |
+
|
685 |
+
if (!that.multiple) { // Deselect all others if not multi select box
|
686 |
+
$options.prop('selected', false);
|
687 |
+
$option.prop('selected', true);
|
688 |
+
that.$menu.find('.selected').removeClass('selected');
|
689 |
+
that.setSelected(clickedIndex, true);
|
690 |
+
} else { // Toggle the one we have chosen if we are multi select.
|
691 |
+
$option.prop('selected', !state);
|
692 |
+
that.setSelected(clickedIndex, !state);
|
693 |
+
$this.blur();
|
694 |
+
|
695 |
+
if ((maxOptions !== false) || (maxOptionsGrp !== false)) {
|
696 |
+
var maxReached = maxOptions < $options.filter(':selected').length,
|
697 |
+
maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;
|
698 |
+
|
699 |
+
if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {
|
700 |
+
if (maxOptions && maxOptions == 1) {
|
701 |
+
$options.prop('selected', false);
|
702 |
+
$option.prop('selected', true);
|
703 |
+
that.$menu.find('.selected').removeClass('selected');
|
704 |
+
that.setSelected(clickedIndex, true);
|
705 |
+
} else if (maxOptionsGrp && maxOptionsGrp == 1) {
|
706 |
+
$optgroup.find('option:selected').prop('selected', false);
|
707 |
+
$option.prop('selected', true);
|
708 |
+
var optgroupID = $this.data('optgroup');
|
709 |
+
|
710 |
+
that.$menu.find('.selected').has('a[data-optgroup="' + optgroupID + '"]').removeClass('selected');
|
711 |
+
|
712 |
+
that.setSelected(clickedIndex, true);
|
713 |
+
} else {
|
714 |
+
var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
|
715 |
+
that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
|
716 |
+
maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
|
717 |
+
maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),
|
718 |
+
$notify = $('<div class="notify"></div>');
|
719 |
+
// If {var} is set in array, replace it
|
720 |
+
/** @deprecated */
|
721 |
+
if (maxOptionsArr[2]) {
|
722 |
+
maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);
|
723 |
+
maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);
|
724 |
+
}
|
725 |
+
|
726 |
+
$option.prop('selected', false);
|
727 |
+
|
728 |
+
that.$menu.append($notify);
|
729 |
+
|
730 |
+
if (maxOptions && maxReached) {
|
731 |
+
$notify.append($('<div>' + maxTxt + '</div>'));
|
732 |
+
that.$element.trigger('maxReached.bs.select');
|
733 |
+
}
|
734 |
+
|
735 |
+
if (maxOptionsGrp && maxReachedGrp) {
|
736 |
+
$notify.append($('<div>' + maxTxtGrp + '</div>'));
|
737 |
+
that.$element.trigger('maxReachedGrp.bs.select');
|
738 |
+
}
|
739 |
+
|
740 |
+
setTimeout(function () {
|
741 |
+
that.setSelected(clickedIndex, false);
|
742 |
+
}, 10);
|
743 |
+
|
744 |
+
$notify.delay(750).fadeOut(300, function () {
|
745 |
+
$(this).remove();
|
746 |
+
});
|
747 |
+
}
|
748 |
+
}
|
749 |
+
}
|
750 |
+
}
|
751 |
+
|
752 |
+
if (!that.multiple) {
|
753 |
+
that.$button.focus();
|
754 |
+
} else if (that.options.liveSearch) {
|
755 |
+
that.$searchbox.focus();
|
756 |
+
}
|
757 |
+
|
758 |
+
// Trigger select 'change'
|
759 |
+
if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {
|
760 |
+
that.$element.change();
|
761 |
+
}
|
762 |
+
}
|
763 |
+
});
|
764 |
+
|
765 |
+
this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {
|
766 |
+
if (e.target == this) {
|
767 |
+
e.preventDefault();
|
768 |
+
e.stopPropagation();
|
769 |
+
if (!that.options.liveSearch) {
|
770 |
+
that.$button.focus();
|
771 |
+
} else {
|
772 |
+
that.$searchbox.focus();
|
773 |
+
}
|
774 |
+
}
|
775 |
+
});
|
776 |
+
|
777 |
+
this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) {
|
778 |
+
e.preventDefault();
|
779 |
+
e.stopPropagation();
|
780 |
+
if (!that.options.liveSearch) {
|
781 |
+
that.$button.focus();
|
782 |
+
} else {
|
783 |
+
that.$searchbox.focus();
|
784 |
+
}
|
785 |
+
});
|
786 |
+
|
787 |
+
this.$menu.on('click', '.popover-title .close', function () {
|
788 |
+
that.$button.focus();
|
789 |
+
});
|
790 |
+
|
791 |
+
this.$searchbox.on('click', function (e) {
|
792 |
+
e.stopPropagation();
|
793 |
+
});
|
794 |
+
|
795 |
+
|
796 |
+
this.$menu.on('click', '.actions-btn', function (e) {
|
797 |
+
if (that.options.liveSearch) {
|
798 |
+
that.$searchbox.focus();
|
799 |
+
} else {
|
800 |
+
that.$button.focus();
|
801 |
+
}
|
802 |
+
|
803 |
+
e.preventDefault();
|
804 |
+
e.stopPropagation();
|
805 |
+
|
806 |
+
if ($(this).is('.bs-select-all')) {
|
807 |
+
that.selectAll();
|
808 |
+
} else {
|
809 |
+
that.deselectAll();
|
810 |
+
}
|
811 |
+
that.$element.change();
|
812 |
+
});
|
813 |
+
|
814 |
+
this.$element.change(function () {
|
815 |
+
that.render(false);
|
816 |
+
});
|
817 |
+
},
|
818 |
+
|
819 |
+
liveSearchListener: function () {
|
820 |
+
var that = this,
|
821 |
+
no_results = $('<li class="no-results"></li>');
|
822 |
+
|
823 |
+
this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {
|
824 |
+
that.$menu.find('.active').removeClass('active');
|
825 |
+
if (!!that.$searchbox.val()) {
|
826 |
+
that.$searchbox.val('');
|
827 |
+
that.$lis.not('.is-hidden').removeClass('hide');
|
828 |
+
if (!!no_results.parent().length) no_results.remove();
|
829 |
+
}
|
830 |
+
if (!that.multiple) that.$menu.find('.selected').addClass('active');
|
831 |
+
setTimeout(function () {
|
832 |
+
that.$searchbox.focus();
|
833 |
+
}, 10);
|
834 |
+
});
|
835 |
+
|
836 |
+
this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {
|
837 |
+
e.stopPropagation();
|
838 |
+
});
|
839 |
+
|
840 |
+
this.$searchbox.on('input propertychange', function () {
|
841 |
+
if (that.$searchbox.val()) {
|
842 |
+
|
843 |
+
if (that.options.searchAccentInsensitive) {
|
844 |
+
that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':aicontains(' + normalizeToBase(that.$searchbox.val()) + ')').parent().addClass('hide');
|
845 |
+
} else {
|
846 |
+
that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':icontains(' + that.$searchbox.val() + ')').parent().addClass('hide');
|
847 |
+
}
|
848 |
+
|
849 |
+
if (!that.$menu.find('li').filter(':visible:not(.no-results)').length) {
|
850 |
+
if (!!no_results.parent().length) no_results.remove();
|
851 |
+
no_results.html(that.options.noneResultsText + ' "' + htmlEscape(that.$searchbox.val()) + '"').show();
|
852 |
+
that.$menu.find('li').last().after(no_results);
|
853 |
+
} else if (!!no_results.parent().length) {
|
854 |
+
no_results.remove();
|
855 |
+
}
|
856 |
+
|
857 |
+
} else {
|
858 |
+
that.$lis.not('.is-hidden').removeClass('hide');
|
859 |
+
if (!!no_results.parent().length) no_results.remove();
|
860 |
+
}
|
861 |
+
|
862 |
+
that.$menu.find('li.active').removeClass('active');
|
863 |
+
that.$menu.find('li').filter(':visible:not(.divider)').eq(0).addClass('active').find('a').focus();
|
864 |
+
$(this).focus();
|
865 |
+
});
|
866 |
+
},
|
867 |
+
|
868 |
+
val: function (value) {
|
869 |
+
if (typeof value !== 'undefined') {
|
870 |
+
this.$element.val(value);
|
871 |
+
this.render();
|
872 |
+
|
873 |
+
return this.$element;
|
874 |
+
} else {
|
875 |
+
return this.$element.val();
|
876 |
+
}
|
877 |
+
},
|
878 |
+
|
879 |
+
selectAll: function () {
|
880 |
+
this.findLis();
|
881 |
+
this.$lis.not('.divider').not('.disabled').not('.selected').filter(':visible').find('a').click();
|
882 |
+
},
|
883 |
+
|
884 |
+
deselectAll: function () {
|
885 |
+
this.findLis();
|
886 |
+
this.$lis.not('.divider').not('.disabled').filter('.selected').filter(':visible').find('a').click();
|
887 |
+
},
|
888 |
+
|
889 |
+
keydown: function (e) {
|
890 |
+
var $this = $(this),
|
891 |
+
$parent = ($this.is('input')) ? $this.parent().parent() : $this.parent(),
|
892 |
+
$items,
|
893 |
+
that = $parent.data('this'),
|
894 |
+
index,
|
895 |
+
next,
|
896 |
+
first,
|
897 |
+
last,
|
898 |
+
prev,
|
899 |
+
nextPrev,
|
900 |
+
prevIndex,
|
901 |
+
isActive,
|
902 |
+
keyCodeMap = {
|
903 |
+
32: ' ',
|
904 |
+
48: '0',
|
905 |
+
49: '1',
|
906 |
+
50: '2',
|
907 |
+
51: '3',
|
908 |
+
52: '4',
|
909 |
+
53: '5',
|
910 |
+
54: '6',
|
911 |
+
55: '7',
|
912 |
+
56: '8',
|
913 |
+
57: '9',
|
914 |
+
59: ';',
|
915 |
+
65: 'a',
|
916 |
+
66: 'b',
|
917 |
+
67: 'c',
|
918 |
+
68: 'd',
|
919 |
+
69: 'e',
|
920 |
+
70: 'f',
|
921 |
+
71: 'g',
|
922 |
+
72: 'h',
|
923 |
+
73: 'i',
|
924 |
+
74: 'j',
|
925 |
+
75: 'k',
|
926 |
+
76: 'l',
|
927 |
+
77: 'm',
|
928 |
+
78: 'n',
|
929 |
+
79: 'o',
|
930 |
+
80: 'p',
|
931 |
+
81: 'q',
|
932 |
+
82: 'r',
|
933 |
+
83: 's',
|
934 |
+
84: 't',
|
935 |
+
85: 'u',
|
936 |
+
86: 'v',
|
937 |
+
87: 'w',
|
938 |
+
88: 'x',
|
939 |
+
89: 'y',
|
940 |
+
90: 'z',
|
941 |
+
96: '0',
|
942 |
+
97: '1',
|
943 |
+
98: '2',
|
944 |
+
99: '3',
|
945 |
+
100: '4',
|
946 |
+
101: '5',
|
947 |
+
102: '6',
|
948 |
+
103: '7',
|
949 |
+
104: '8',
|
950 |
+
105: '9'
|
951 |
+
};
|
952 |
+
|
953 |
+
if (that.options.liveSearch) $parent = $this.parent().parent();
|
954 |
+
|
955 |
+
if (that.options.container) $parent = that.$menu;
|
956 |
+
|
957 |
+
$items = $('[role=menu] li a', $parent);
|
958 |
+
|
959 |
+
isActive = that.$menu.parent().hasClass('open');
|
960 |
+
|
961 |
+
if (!isActive && /([0-9]|[A-z])/.test(String.fromCharCode(e.keyCode))) {
|
962 |
+
if (!that.options.container) {
|
963 |
+
that.setSize();
|
964 |
+
that.$menu.parent().addClass('open');
|
965 |
+
isActive = true;
|
966 |
+
} else {
|
967 |
+
that.$newElement.trigger('click');
|
968 |
+
}
|
969 |
+
that.$searchbox.focus();
|
970 |
+
}
|
971 |
+
|
972 |
+
if (that.options.liveSearch) {
|
973 |
+
if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {
|
974 |
+
e.preventDefault();
|
975 |
+
that.$menu.parent().removeClass('open');
|
976 |
+
that.$button.focus();
|
977 |
+
}
|
978 |
+
$items = $('[role=menu] li:not(.divider):not(.dropdown-header):visible', $parent);
|
979 |
+
if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {
|
980 |
+
if ($items.filter('.active').length === 0) {
|
981 |
+
if (that.options.searchAccentInsensitive) {
|
982 |
+
$items = that.$newElement.find('li').filter(':aicontains(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');
|
983 |
+
} else {
|
984 |
+
$items = that.$newElement.find('li').filter(':icontains(' + keyCodeMap[e.keyCode] + ')');
|
985 |
+
}
|
986 |
+
}
|
987 |
+
}
|
988 |
+
}
|
989 |
+
|
990 |
+
if (!$items.length) return;
|
991 |
+
|
992 |
+
if (/(38|40)/.test(e.keyCode.toString(10))) {
|
993 |
+
index = $items.index($items.filter(':focus'));
|
994 |
+
first = $items.parent(':not(.disabled):visible').first().index();
|
995 |
+
last = $items.parent(':not(.disabled):visible').last().index();
|
996 |
+
next = $items.eq(index).parent().nextAll(':not(.disabled):visible').eq(0).index();
|
997 |
+
prev = $items.eq(index).parent().prevAll(':not(.disabled):visible').eq(0).index();
|
998 |
+
nextPrev = $items.eq(next).parent().prevAll(':not(.disabled):visible').eq(0).index();
|
999 |
+
|
1000 |
+
if (that.options.liveSearch) {
|
1001 |
+
$items.each(function (i) {
|
1002 |
+
if ($(this).is(':not(.disabled)')) {
|
1003 |
+
$(this).data('index', i);
|
1004 |
+
}
|
1005 |
+
});
|
1006 |
+
index = $items.index($items.filter('.active'));
|
1007 |
+
first = $items.filter(':not(.disabled):visible').first().data('index');
|
1008 |
+
last = $items.filter(':not(.disabled):visible').last().data('index');
|
1009 |
+
next = $items.eq(index).nextAll(':not(.disabled):visible').eq(0).data('index');
|
1010 |
+
prev = $items.eq(index).prevAll(':not(.disabled):visible').eq(0).data('index');
|
1011 |
+
nextPrev = $items.eq(next).prevAll(':not(.disabled):visible').eq(0).data('index');
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
prevIndex = $this.data('prevIndex');
|
1015 |
+
|
1016 |
+
if (e.keyCode == 38) {
|
1017 |
+
if (that.options.liveSearch) index -= 1;
|
1018 |
+
if (index != nextPrev && index > prev) index = prev;
|
1019 |
+
if (index < first) index = first;
|
1020 |
+
if (index == prevIndex) index = last;
|
1021 |
+
}
|
1022 |
+
|
1023 |
+
if (e.keyCode == 40) {
|
1024 |
+
if (that.options.liveSearch) index += 1;
|
1025 |
+
if (index == -1) index = 0;
|
1026 |
+
if (index != nextPrev && index < next) index = next;
|
1027 |
+
if (index > last) index = last;
|
1028 |
+
if (index == prevIndex) index = first;
|
1029 |
+
}
|
1030 |
+
|
1031 |
+
$this.data('prevIndex', index);
|
1032 |
+
|
1033 |
+
if (!that.options.liveSearch) {
|
1034 |
+
$items.eq(index).focus();
|
1035 |
+
} else {
|
1036 |
+
e.preventDefault();
|
1037 |
+
if (!$this.is('.dropdown-toggle')) {
|
1038 |
+
$items.removeClass('active');
|
1039 |
+
$items.eq(index).addClass('active').find('a').focus();
|
1040 |
+
$this.focus();
|
1041 |
+
}
|
1042 |
+
}
|
1043 |
+
|
1044 |
+
} else if (!$this.is('input')) {
|
1045 |
+
var keyIndex = [],
|
1046 |
+
count,
|
1047 |
+
prevKey;
|
1048 |
+
|
1049 |
+
$items.each(function () {
|
1050 |
+
if ($(this).parent().is(':not(.disabled)')) {
|
1051 |
+
if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {
|
1052 |
+
keyIndex.push($(this).parent().index());
|
1053 |
+
}
|
1054 |
+
}
|
1055 |
+
});
|
1056 |
+
|
1057 |
+
count = $(document).data('keycount');
|
1058 |
+
count++;
|
1059 |
+
$(document).data('keycount', count);
|
1060 |
+
|
1061 |
+
prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);
|
1062 |
+
|
1063 |
+
if (prevKey != keyCodeMap[e.keyCode]) {
|
1064 |
+
count = 1;
|
1065 |
+
$(document).data('keycount', count);
|
1066 |
+
} else if (count >= keyIndex.length) {
|
1067 |
+
$(document).data('keycount', 0);
|
1068 |
+
if (count > keyIndex.length) count = 1;
|
1069 |
+
}
|
1070 |
+
|
1071 |
+
$items.eq(keyIndex[count - 1]).focus();
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
// Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu.
|
1075 |
+
if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {
|
1076 |
+
if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();
|
1077 |
+
if (!that.options.liveSearch) {
|
1078 |
+
$(':focus').click();
|
1079 |
+
} else if (!/(32)/.test(e.keyCode.toString(10))) {
|
1080 |
+
that.$menu.find('.active a').click();
|
1081 |
+
$this.focus();
|
1082 |
+
}
|
1083 |
+
$(document).data('keycount', 0);
|
1084 |
+
}
|
1085 |
+
|
1086 |
+
if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {
|
1087 |
+
that.$menu.parent().removeClass('open');
|
1088 |
+
that.$button.focus();
|
1089 |
+
}
|
1090 |
+
},
|
1091 |
+
|
1092 |
+
mobile: function () {
|
1093 |
+
this.$element.addClass('mobile-device').appendTo(this.$newElement);
|
1094 |
+
if (this.options.container) this.$menu.hide();
|
1095 |
+
},
|
1096 |
+
|
1097 |
+
refresh: function () {
|
1098 |
+
this.$lis = null;
|
1099 |
+
this.reloadLi();
|
1100 |
+
this.render();
|
1101 |
+
this.setWidth();
|
1102 |
+
this.setStyle();
|
1103 |
+
this.checkDisabled();
|
1104 |
+
this.liHeight();
|
1105 |
+
},
|
1106 |
+
|
1107 |
+
update: function () {
|
1108 |
+
this.reloadLi();
|
1109 |
+
this.setWidth();
|
1110 |
+
this.setStyle();
|
1111 |
+
this.checkDisabled();
|
1112 |
+
this.liHeight();
|
1113 |
+
},
|
1114 |
+
|
1115 |
+
hide: function () {
|
1116 |
+
this.$newElement.hide();
|
1117 |
+
},
|
1118 |
+
|
1119 |
+
show: function () {
|
1120 |
+
this.$newElement.show();
|
1121 |
+
},
|
1122 |
+
|
1123 |
+
remove: function () {
|
1124 |
+
this.$newElement.remove();
|
1125 |
+
this.$element.remove();
|
1126 |
+
}
|
1127 |
+
};
|
1128 |
+
|
1129 |
+
// SELECTPICKER PLUGIN DEFINITION
|
1130 |
+
// ==============================
|
1131 |
+
function Plugin(option, event) {
|
1132 |
+
// get the args of the outer function..
|
1133 |
+
var args = arguments;
|
1134 |
+
// The arguments of the function are explicitly re-defined from the argument list, because the shift causes them
|
1135 |
+
// to get lost
|
1136 |
+
//noinspection JSDuplicatedDeclaration
|
1137 |
+
var _option = option,
|
1138 |
+
option = args[0],
|
1139 |
+
event = args[1];
|
1140 |
+
[].shift.apply(args);
|
1141 |
+
|
1142 |
+
// This fixes a bug in the js implementation on android 2.3 #715
|
1143 |
+
if (typeof option == 'undefined') {
|
1144 |
+
option = _option;
|
1145 |
+
}
|
1146 |
+
|
1147 |
+
var value;
|
1148 |
+
var chain = this.each(function () {
|
1149 |
+
var $this = $(this);
|
1150 |
+
if ($this.is('select')) {
|
1151 |
+
var data = $this.data('selectpicker'),
|
1152 |
+
options = typeof option == 'object' && option;
|
1153 |
+
|
1154 |
+
if (!data) {
|
1155 |
+
var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);
|
1156 |
+
$this.data('selectpicker', (data = new Selectpicker(this, config, event)));
|
1157 |
+
} else if (options) {
|
1158 |
+
for (var i in options) {
|
1159 |
+
if (options.hasOwnProperty(i)) {
|
1160 |
+
data.options[i] = options[i];
|
1161 |
+
}
|
1162 |
+
}
|
1163 |
+
}
|
1164 |
+
|
1165 |
+
if (typeof option == 'string') {
|
1166 |
+
if (data[option] instanceof Function) {
|
1167 |
+
value = data[option].apply(data, args);
|
1168 |
+
} else {
|
1169 |
+
value = data.options[option];
|
1170 |
+
}
|
1171 |
+
}
|
1172 |
+
}
|
1173 |
+
});
|
1174 |
+
|
1175 |
+
if (typeof value !== 'undefined') {
|
1176 |
+
//noinspection JSUnusedAssignment
|
1177 |
+
return value;
|
1178 |
+
} else {
|
1179 |
+
return chain;
|
1180 |
+
}
|
1181 |
+
}
|
1182 |
+
|
1183 |
+
var old = $.fn.selectpicker;
|
1184 |
+
$.fn.selectpicker = Plugin;
|
1185 |
+
$.fn.selectpicker.Constructor = Selectpicker;
|
1186 |
+
|
1187 |
+
// SELECTPICKER NO CONFLICT
|
1188 |
+
// ========================
|
1189 |
+
$.fn.selectpicker.noConflict = function () {
|
1190 |
+
$.fn.selectpicker = old;
|
1191 |
+
return this;
|
1192 |
+
};
|
1193 |
+
|
1194 |
+
$(document)
|
1195 |
+
.data('keycount', 0)
|
1196 |
+
.on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input', Selectpicker.prototype.keydown)
|
1197 |
+
.on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input', function (e) {
|
1198 |
+
e.stopPropagation();
|
1199 |
+
});
|
1200 |
+
|
1201 |
+
// SELECTPICKER DATA-API
|
1202 |
+
// =====================
|
1203 |
+
$(window).on('load.bs.select.data-api', function () {
|
1204 |
+
$('.selectpicker').each(function () {
|
1205 |
+
var $selectpicker = $(this);
|
1206 |
+
Plugin.call($selectpicker, $selectpicker.data());
|
1207 |
+
})
|
1208 |
+
});
|
1209 |
+
})(jQuery);
|
js/script.timeline-express.js
CHANGED
@@ -30,6 +30,7 @@ jQuery(document).ready(function(){
|
|
30 |
var $masonryContainer = jQuery( '#cd-timeline' );
|
31 |
$masonryContainer.imagesLoaded( function() {
|
32 |
$masonryContainer.masonry({itemSelector : '.cd-timeline-block',});
|
|
|
33 |
});
|
34 |
|
35 |
var entry_content_width = jQuery( '#cd-timeline' ).parents('div').css('width');
|
30 |
var $masonryContainer = jQuery( '#cd-timeline' );
|
31 |
$masonryContainer.imagesLoaded( function() {
|
32 |
$masonryContainer.masonry({itemSelector : '.cd-timeline-block',});
|
33 |
+
jQuery( '#cd-timeline' ).fadeTo( 600 , 1 );
|
34 |
});
|
35 |
|
36 |
var entry_content_width = jQuery( '#cd-timeline' ).parents('div').css('width');
|
js/script.timeline-express.min.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
/* Timeline Express by Evan Herman - http://www.Evan-Herman.com */
|
2 |
-
jQuery(document).ready(function(){jQuery("html").addClass("cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions");var e=jQuery(".cd-timeline-block");e.each(function(){if(jQuery(this).offset().top>jQuery(window).scrollTop()+jQuery(window).height()*.75){jQuery(this).find(".cd-timeline-img, .cd-timeline-content").addClass("is-hidden")}});jQuery(window).on("scroll",function(){e.each(function(){if(jQuery(this).offset().top<=jQuery(window).scrollTop()+jQuery(window).height()*.75&&jQuery(this).find(".cd-timeline-img").hasClass("is-hidden")){jQuery(this).find(".cd-timeline-img, .cd-timeline-content").removeClass("is-hidden").addClass("bounce-in")}})});var t=jQuery("#cd-timeline");t.imagesLoaded(function(){t.masonry({itemSelector:".cd-timeline-block"})});var n=jQuery("#cd-timeline").parents("div").css("width");var r=jQuery(window).width()+parseInt(17);var i=jQuery(".cd-timeline-content").css("width");if(r<=822&&n.replace("px","")<="475"&&n.replace("px","")<="800"){jQuery(".cd-timeline-content").removeClass("timeline-width34")}else if(r>=822&&n.replace("px","")>="475"&&n.replace("px","")<="800"){jQuery(".cd-timeline-content").addClass("timeline-width34")}if(r<=822&&n.replace("px","")<="475"){jQuery(".cd-timeline-content").removeClass("timeline-width30")}else if(r>=822&&n.replace("px","")<="475"){jQuery(".cd-timeline-content").addClass("timeline-width30")}if(i.replace("px","")<262){jQuery(".cd-timeline-content").find(".timeline-date").addClass("timeline-date-left")}jQuery(window).resize(function(){var e=jQuery(window).width()+parseInt(17);var t=jQuery("#cd-timeline").parents("div").css("width");var n=jQuery(".cd-timeline-content").css("width");if(e>="822"&&t.replace("px","")<="475"){jQuery(".cd-timeline-content").addClass("timeline-width30")}if(e>="822"&&n.replace("px","")<262){jQuery(".cd-timeline-content").find(".timeline-date").addClass("timeline-date-left")}else{jQuery(".cd-timeline-content").find(".timeline-date").removeClass("timeline-date-left")}if(e<"822"){jQuery("#cd-timeline").masonry("reload");jQuery(".cd-timeline-content").removeClass("timeline-width30").removeClass("timeline-width34")}})})
|
1 |
/* Timeline Express by Evan Herman - http://www.Evan-Herman.com */
|
2 |
+
jQuery(document).ready(function(){jQuery("html").addClass("cssanimations csscolumns cssgradients cssreflections csstransforms csstransforms3d csstransitions");var e=jQuery(".cd-timeline-block");e.each(function(){if(jQuery(this).offset().top>jQuery(window).scrollTop()+jQuery(window).height()*.75){jQuery(this).find(".cd-timeline-img, .cd-timeline-content").addClass("is-hidden")}});jQuery(window).on("scroll",function(){e.each(function(){if(jQuery(this).offset().top<=jQuery(window).scrollTop()+jQuery(window).height()*.75&&jQuery(this).find(".cd-timeline-img").hasClass("is-hidden")){jQuery(this).find(".cd-timeline-img, .cd-timeline-content").removeClass("is-hidden").addClass("bounce-in")}})});var t=jQuery("#cd-timeline");t.imagesLoaded(function(){t.masonry({itemSelector:".cd-timeline-block"});jQuery("#cd-timeline").fadeTo(600,1)});var n=jQuery("#cd-timeline").parents("div").css("width");var r=jQuery(window).width()+parseInt(17);var i=jQuery(".cd-timeline-content").css("width");if(r<=822&&n.replace("px","")<="475"&&n.replace("px","")<="800"){jQuery(".cd-timeline-content").removeClass("timeline-width34")}else if(r>=822&&n.replace("px","")>="475"&&n.replace("px","")<="800"){jQuery(".cd-timeline-content").addClass("timeline-width34")}if(r<=822&&n.replace("px","")<="475"){jQuery(".cd-timeline-content").removeClass("timeline-width30")}else if(r>=822&&n.replace("px","")<="475"){jQuery(".cd-timeline-content").addClass("timeline-width30")}if(i.replace("px","")<262){jQuery(".cd-timeline-content").find(".timeline-date").addClass("timeline-date-left")}jQuery(window).resize(function(){var e=jQuery(window).width()+parseInt(17);var t=jQuery("#cd-timeline").parents("div").css("width");var n=jQuery(".cd-timeline-content").css("width");if(e>="822"&&t.replace("px","")<="475"){jQuery(".cd-timeline-content").addClass("timeline-width30")}if(e>="822"&&n.replace("px","")<262){jQuery(".cd-timeline-content").find(".timeline-date").addClass("timeline-date-left")}else{jQuery(".cd-timeline-content").find(".timeline-date").removeClass("timeline-date-left")}if(e<"822"){jQuery("#cd-timeline").masonry("reload");jQuery(".cd-timeline-content").removeClass("timeline-width30").removeClass("timeline-width34")}})})
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.evan-herman.com/contact/?contact-reason=I%20want%20to%20
|
|
4 |
Tags: vertical, timeline, animated, css3, animations, evan, herman, evan herman, easy, time, line, font awesome, font, awesome, announcements, notifications, simple, events, calendar, scroll, triggered, scrolling, animated, fade, in, fade in
|
5 |
Requires at least: 3.9
|
6 |
Tested up to: 4.1
|
7 |
-
Stable tag: 1.1.5.
|
8 |
License: GPLv2 or later
|
9 |
|
10 |
Timeline express allows you to create a beautiful vertical animated and responsive timeline of posts , without writing a single line of code. Sweet!
|
@@ -301,6 +301,10 @@ add_filter( 'timeline_express_custom_template' , 'custom_timeline_express_templa
|
|
301 |
|
302 |
== Changelog ==
|
303 |
|
|
|
|
|
|
|
|
|
304 |
= 1.1.5.6 - February 5th, 2015 =
|
305 |
* Fixed: Issue with the excerpt being truncated and throwing off entire timeline layout (issue occured when truncate happened mid html tag , which left a tag open)
|
306 |
* Fixed: Wrapped missing text in text domain
|
@@ -410,6 +414,11 @@ add_filter( 'timeline_express_custom_template' , 'custom_timeline_express_templa
|
|
410 |
|
411 |
== Upgrade Notice ==
|
412 |
|
|
|
|
|
|
|
|
|
|
|
413 |
= 1.1.5.6 - February 5th, 2015 =
|
414 |
* Fixed: Issue with the excerpt being truncated and throwing off entire timeline layout (issue occured when truncate happened mid html tag , which left a tag open)
|
415 |
* Fixed: Wrapped missing text in text domain
|
4 |
Tags: vertical, timeline, animated, css3, animations, evan, herman, evan herman, easy, time, line, font awesome, font, awesome, announcements, notifications, simple, events, calendar, scroll, triggered, scrolling, animated, fade, in, fade in
|
5 |
Requires at least: 3.9
|
6 |
Tested up to: 4.1
|
7 |
+
Stable tag: 1.1.5.7
|
8 |
License: GPLv2 or later
|
9 |
|
10 |
Timeline express allows you to create a beautiful vertical animated and responsive timeline of posts , without writing a single line of code. Sweet!
|
301 |
|
302 |
== Changelog ==
|
303 |
|
304 |
+
= 1.1.5.7 - February 5th, 2015 =
|
305 |
+
* Enhancement: Added a dropdown to select the font awesome icon
|
306 |
+
* Enhancement: Fadded in the timeline after everything has initialized, to prevent seeing a messed up Timeline layout
|
307 |
+
|
308 |
= 1.1.5.6 - February 5th, 2015 =
|
309 |
* Fixed: Issue with the excerpt being truncated and throwing off entire timeline layout (issue occured when truncate happened mid html tag , which left a tag open)
|
310 |
* Fixed: Wrapped missing text in text domain
|
414 |
|
415 |
== Upgrade Notice ==
|
416 |
|
417 |
+
= 1.1.5.7 - February 5th, 2015 =
|
418 |
+
* Message From The Author: Sorry for multiple updates on the same day. I was feeling ambitious and rolled out one patch to fix an issue and another with some new features. Enjoy :)
|
419 |
+
* Enhancement: Added a dropdown to select the font awesome icon
|
420 |
+
* Enhancement: Fadded in the timeline after everything has initialized, to prevent seeing a messed up Timeline layout
|
421 |
+
|
422 |
= 1.1.5.6 - February 5th, 2015 =
|
423 |
* Fixed: Issue with the excerpt being truncated and throwing off entire timeline layout (issue occured when truncate happened mid html tag , which left a tag open)
|
424 |
* Fixed: Wrapped missing text in text domain
|
timeline-express.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
Plugin Name: Timeline Express
|
5 |
Plugin URI: http://www.evan-herman.com
|
6 |
Description: Create a beautiful vertical, CSS3 animated and responsive timeline in minutes flat without writing code.
|
7 |
-
Version: 1.1.5.
|
8 |
Author: Evan Herman
|
9 |
Author URI: http://www.evan-herman.com
|
10 |
License: GPL2
|
@@ -28,7 +28,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
28 |
#_________________________________________________ CONSTANTS
|
29 |
|
30 |
/** Configuration **/
|
31 |
-
if(!defined('TIMELINE_EXPRESS_VERSION_CURRENT')) define('TIMELINE_EXPRESS_VERSION_CURRENT', '1.1.5.
|
32 |
if(!defined('TIMELINE_EXPRESS_PATH')) define('TIMELINE_EXPRESS_PATH', plugin_dir_path( __FILE__ ));
|
33 |
if(!defined('TIMELINE_EXPRESS_URL')) define('TIMELINE_EXPRESS_URL', plugins_url('timeline-express/'));
|
34 |
if(!defined('TIMELINE_EXPRESS_URL_WP')) define('TIMELINE_EXPRESS_URL_WP', get_bloginfo('url'));
|
4 |
Plugin Name: Timeline Express
|
5 |
Plugin URI: http://www.evan-herman.com
|
6 |
Description: Create a beautiful vertical, CSS3 animated and responsive timeline in minutes flat without writing code.
|
7 |
+
Version: 1.1.5.7
|
8 |
Author: Evan Herman
|
9 |
Author URI: http://www.evan-herman.com
|
10 |
License: GPL2
|
28 |
#_________________________________________________ CONSTANTS
|
29 |
|
30 |
/** Configuration **/
|
31 |
+
if(!defined('TIMELINE_EXPRESS_VERSION_CURRENT')) define('TIMELINE_EXPRESS_VERSION_CURRENT', '1.1.5.7');
|
32 |
if(!defined('TIMELINE_EXPRESS_PATH')) define('TIMELINE_EXPRESS_PATH', plugin_dir_path( __FILE__ ));
|
33 |
if(!defined('TIMELINE_EXPRESS_URL')) define('TIMELINE_EXPRESS_URL', plugins_url('timeline-express/'));
|
34 |
if(!defined('TIMELINE_EXPRESS_URL_WP')) define('TIMELINE_EXPRESS_URL_WP', get_bloginfo('url'));
|