vendor: 20,429 bytes, lines 1-587
1/*! 2Chosen, a Select Box Enhancer for jQuery and Prototype 3by Patrick Filler for Harvest, http://getharvest.com 4 5Version 1.8.3 6Full source at https://github.com/harvesthq/chosen 7Copyright (c) 2011-2018 Harvest http://getharvest.com 8 9MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md 10This file is generated by `grunt build`, do not edit it by hand. 11*/ 12 13(function() { 14 var $, AbstractChosen, Chosen, SelectParser, 15 bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, 16 extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, 17 hasProp = {}.hasOwnProperty; 18 19 SelectParser = (function() { 20 function SelectParser() { 21 this.options_index = 0; 22 this.parsed = []; 23 } 24 25 SelectParser.prototype.add_node = function(child) { 26 if (child.nodeName.toUpperCase() === "OPTGROUP") { 27 return this.add_group(child); 28 } else { 29 return this.add_option(child); 30 } 31 }; 32 33 SelectParser.prototype.add_group = function(group) { 34 var group_position, i, len, option, ref, results1; 35 group_position = this.parsed.length; 36 this.parsed.push({ 37 array_index: group_position, 38 group: true, 39 label: group.label, 40 title: group.title ? group.title : void 0, 41 children: 0, 42 disabled: group.disabled, 43 classes: group.className 44 }); 45 ref = group.childNodes; 46 results1 = []; 47 for (i = 0, len = ref.length; i < len; i++) { 48 option = ref[i]; 49 results1.push(this.add_option(option, group_position, group.disabled)); 50 } 51 return results1; 52 }; 53 54 SelectParser.prototype.add_option = function(option, group_position, group_disabled) { 55 if (option.nodeName.toUpperCase() === "OPTION") { 56 if (option.text !== "") { 57 if (group_position != null) { 58 this.parsed[group_position].children += 1; 59 } 60 this.parsed.push({ 61 array_index: this.parsed.length, 62 options_index: this.options_index, 63 value: option.value, 64 text: option.text, 65 html: option.innerHTML, 66 title: option.title ? option.title : void 0, 67 selected: option.selected, 68 disabled: group_disabled === true ? group_disabled : option.disabled, 69 group_array_index: group_position, 70 group_label: group_position != null ? this.parsed[group_position].label : null, 71 classes: option.className, 72 style: option.style.cssText 73 }); 74 } else { 75 this.parsed.push({ 76 array_index: this.parsed.length, 77 options_index: this.options_index, 78 empty: true 79 }); 80 } 81 return this.options_index += 1; 82 } 83 }; 84 85 return SelectParser; 86 87 })(); 88 89 SelectParser.select_to_array = function(select) { 90 var child, i, len, parser, ref; 91 parser = new SelectParser(); 92 ref = select.childNodes; 93 for (i = 0, len = ref.length; i < len; i++) { 94 child = ref[i]; 95 parser.add_node(child); 96 } 97 return parser.parsed; 98 }; 99 100 AbstractChosen = (function() { 101 function AbstractChosen(form_field, options1) { 102 this.form_field = form_field; 103 this.options = options1 != null ? options1 : {}; 104 this.label_click_handler = bind(this.label_click_handler, this); 105 if (!AbstractChosen.browser_is_supported()) { 106 return; 107 } 108 this.is_multiple = this.form_field.multiple; 109 this.set_default_text(); 110 this.set_default_values(); 111 this.setup(); 112 this.set_up_html(); 113 this.register_observers(); 114 this.on_ready(); 115 } 116 117 AbstractChosen.prototype.set_default_values = function() { 118 this.click_test_action = (function(_this) { 119 return function(evt) { 120 return _this.test_active_click(evt); 121 }; 122 })(this); 123 this.activate_action = (function(_this) { 124 return function(evt) { 125 return _this.activate_field(evt); 126 }; 127 })(this); 128 this.active_field = false; 129 this.mouse_on_container = false; 130 this.results_showing = false; 131 this.result_highlighted = null; 132 this.is_rtl = this.options.rtl || /\bchosen-rtl\b/.test(this.form_field.className); 133 this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; 134 this.disable_search_threshold = this.options.disable_search_threshold || 0; 135 this.disable_search = this.options.disable_search || false; 136 this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true; 137 this.group_search = this.options.group_search != null ? this.options.group_search : true; 138 this.search_contains = this.options.search_contains || false; 139 this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true; 140 this.max_selected_options = this.options.max_selected_options || Infinity; 141 this.inherit_select_classes = this.options.inherit_select_classes || false; 142 this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true; 143 this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true; 144 this.include_group_label_in_selected = this.options.include_group_label_in_selected || false; 145 this.max_shown_results = this.options.max_shown_results || Number.POSITIVE_INFINITY; 146 this.case_sensitive_search = this.options.case_sensitive_search || false; 147 return this.hide_results_on_select = this.options.hide_results_on_select != null ? this.options.hide_results_on_select : true; 148 }; 149 150 AbstractChosen.prototype.set_default_text = function() { 151 if (this.form_field.getAttribute("data-placeholder")) { 152 this.default_text = this.form_field.getAttribute("data-placeholder"); 153 } else if (this.is_multiple) { 154 this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text; 155 } else { 156 this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text; 157 } 158 this.default_text = this.escape_html(this.default_text); 159 return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text; 160 }; 161 162 AbstractChosen.prototype.choice_label = function(item) { 163 if (this.include_group_label_in_selected && (item.group_label != null)) { 164 return "<b class='group-name'>" + item.group_label + "</b>" + item.html; 165 } else { 166 return item.html; 167 } 168 }; 169 170 AbstractChosen.prototype.mouse_enter = function() { 171 return this.mouse_on_container = true; 172 }; 173 174 AbstractChosen.prototype.mouse_leave = function() { 175 return this.mouse_on_container = false; 176 }; 177 178 AbstractChosen.prototype.input_focus = function(evt) { 179 if (this.is_multiple) { 180 if (!this.active_field) { 181 return setTimeout(((function(_this) { 182 return function() { 183 return _this.container_mousedown(); 184 }; 185 })(this)), 50); 186 } 187 } else { 188 if (!this.active_field) { 189 return this.activate_field(); 190 } 191 } 192 }; 193 194 AbstractChosen.prototype.input_blur = function(evt) { 195 if (!this.mouse_on_container) { 196 this.active_field = false; 197 return setTimeout(((function(_this) { 198 return function() { 199 return _this.blur_test(); 200 }; 201 })(this)), 100); 202 } 203 }; 204 205 AbstractChosen.prototype.label_click_handler = function(evt) { 206 if (this.is_multiple) { 207 return this.container_mousedown(evt); 208 } else { 209 return this.activate_field(); 210 } 211 }; 212 213 AbstractChosen.prototype.results_option_build = function(options) { 214 var content, data, data_content, i, len, ref, shown_results; 215 content = ''; 216 shown_results = 0; 217 ref = this.results_data; 218 for (i = 0, len = ref.length; i < len; i++) { 219 data = ref[i]; 220 data_content = ''; 221 if (data.group) { 222 data_content = this.result_add_group(data); 223 } else { 224 data_content = this.result_add_option(data); 225 } 226 if (data_content !== '') { 227 shown_results++; 228 content += data_content; 229 } 230 if (options != null ? options.first : void 0) { 231 if (data.selected && this.is_multiple) { 232 this.choice_build(data); 233 } else if (data.selected && !this.is_multiple) { 234 this.single_set_selected_text(this.choice_label(data)); 235 } 236 } 237 if (shown_results >= this.max_shown_results) { 238 break; 239 } 240 } 241 return content; 242 }; 243 244 AbstractChosen.prototype.result_add_option = function(option) { 245 var classes, option_el; 246 if (!option.search_match) { 247 return ''; 248 } 249 if (!this.include_option_in_results(option)) { 250 return ''; 251 } 252 classes = []; 253 if (!option.disabled && !(option.selected && this.is_multiple)) { 254 classes.push("active-result"); 255 } 256 if (option.disabled && !(option.selected && this.is_multiple)) { 257 classes.push("disabled-result"); 258 } 259 if (option.selected) { 260 classes.push("result-selected"); 261 } 262 if (option.group_array_index != null) { 263 classes.push("group-option"); 264 } 265 if (option.classes !== "") { 266 classes.push(option.classes); 267 } 268 option_el = document.createElement("li"); 269 option_el.className = classes.join(" "); 270 option_el.style.cssText = option.style; 271 option_el.setAttribute("data-option-array-index", option.array_index); 272 option_el.innerHTML = option.highlighted_html || option.html; 273 if (option.title) { 274 option_el.title = option.title; 275 } 276 return this.outerHTML(option_el); 277 }; 278 279 AbstractChosen.prototype.result_add_group = function(group) { 280 var classes, group_el; 281 if (!(group.search_match || group.group_match)) { 282 return ''; 283 } 284 if (!(group.active_options > 0)) { 285 return ''; 286 } 287 classes = []; 288 classes.push("group-result"); 289 if (group.classes) { 290 classes.push(group.classes); 291 } 292 group_el = document.createElement("li"); 293 group_el.className = classes.join(" "); 294 group_el.innerHTML = group.highlighted_html || this.escape_html(group.label); 295 if (group.title) { 296 group_el.title = group.title; 297 } 298 return this.outerHTML(group_el); 299 }; 300 301 AbstractChosen.prototype.results_update_field = function() { 302 this.set_default_text(); 303 if (!this.is_multiple) { 304 this.results_reset_cleanup(); 305 } 306 this.result_clear_highlight(); 307 this.results_build(); 308 if (this.results_showing) { 309 return this.winnow_results(); 310 } 311 }; 312 313 AbstractChosen.prototype.reset_single_select_options = function() { 314 var i, len, ref, result, results1; 315 ref = this.results_data; 316 results1 = []; 317 for (i = 0, len = ref.length; i < len; i++) { 318 result = ref[i]; 319 if (result.selected) { 320 results1.push(result.selected = false); 321 } else { 322 results1.push(void 0); 323 } 324 } 325 return results1; 326 }; 327 328 AbstractChosen.prototype.results_toggle = function() { 329 if (this.results_showing) { 330 return this.results_hide(); 331 } else { 332 return this.results_show(); 333 } 334 }; 335 336 AbstractChosen.prototype.results_search = function(evt) { 337 if (this.results_showing) { 338 return this.winnow_results(); 339 } else { 340 return this.results_show(); 341 } 342 }; 343 344 AbstractChosen.prototype.winnow_results = function() { 345 var escapedQuery, fix, i, len, option, prefix, query, ref, regex, results, results_group, search_match, startpos, suffix, text; 346 this.no_results_clear(); 347 results = 0; 348 query = this.get_search_text(); 349 escapedQuery = query.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 350 regex = this.get_search_regex(escapedQuery); 351 ref = this.results_data; 352 for (i = 0, len = ref.length; i < len; i++) { 353 option = ref[i]; 354 option.search_match = false; 355 results_group = null; 356 search_match = null; 357 option.highlighted_html = ''; 358 if (this.include_option_in_results(option)) { 359 if (option.group) { 360 option.group_match = false; 361 option.active_options = 0; 362 } 363 if ((option.group_array_index != null) && this.results_data[option.group_array_index]) { 364 results_group = this.results_data[option.group_array_index]; 365 if (results_group.active_options === 0 && results_group.search_match) { 366 results += 1; 367 } 368 results_group.active_options += 1; 369 } 370 text = option.group ? option.label : option.text; 371 if (!(option.group && !this.group_search)) { 372 search_match = this.search_string_match(text, regex); 373 option.search_match = search_match != null; 374 if (option.search_match && !option.group) { 375 results += 1; 376 } 377 if (option.search_match) { 378 if (query.length) { 379 startpos = search_match.index; 380 prefix = text.slice(0, startpos); 381 fix = text.slice(startpos, startpos + query.length); 382 suffix = text.slice(startpos + query.length); 383 option.highlighted_html = (this.escape_html(prefix)) + "<em>" + (this.escape_html(fix)) + "</em>" + (this.escape_html(suffix)); 384 } 385 if (results_group != null) { 386 results_group.group_match = true; 387 } 388 } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) { 389 option.search_match = true; 390 } 391 } 392 } 393 } 394 this.result_clear_highlight(); 395 if (results < 1 && query.length) { 396 this.update_results_content(""); 397 return this.no_results(query); 398 } else { 399 this.update_results_content(this.results_option_build()); 400 return this.winnow_results_set_highlight(); 401 } 402 }; 403 404 AbstractChosen.prototype.get_search_regex = function(escaped_search_string) { 405 var regex_flag, regex_string; 406 regex_string = this.search_contains ? escaped_search_string : "(^|\\s|\\b)" + escaped_search_string + "[^\\s]*"; 407 if (!(this.enable_split_word_search || this.search_contains)) { 408 regex_string = "^" + regex_string; 409 } 410 regex_flag = this.case_sensitive_search ? "" : "i"; 411 return new RegExp(regex_string, regex_flag); 412 }; 413 414 AbstractChosen.prototype.search_string_match = function(search_string, regex) { 415 var match; 416 match = regex.exec(search_string); 417 if (!this.search_contains && (match != null ? match[1] : void 0)) { 418 match.index += 1; 419 } 420 return match; 421 }; 422 423 AbstractChosen.prototype.choices_count = function() { 424 var i, len, option, ref; 425 if (this.selected_option_count != null) { 426 return this.selected_option_count; 427 } 428 this.selected_option_count = 0; 429 ref = this.form_field.options; 430 for (i = 0, len = ref.length; i < len; i++) { 431 option = ref[i]; 432 if (option.selected) { 433 this.selected_option_count += 1; 434 } 435 } 436 return this.selected_option_count; 437 }; 438 439 AbstractChosen.prototype.choices_click = function(evt) { 440 evt.preventDefault(); 441 this.activate_field(); 442 if (!(this.results_showing || this.is_disabled)) { 443 return this.results_show(); 444 } 445 }; 446 447 AbstractChosen.prototype.keydown_checker = function(evt) { 448 var ref, stroke; 449 stroke = (ref = evt.which) != null ? ref : evt.keyCode; 450 this.search_field_scale(); 451 if (stroke !== 8 && this.pending_backstroke) { 452 this.clear_backstroke(); 453 } 454 switch (stroke) { 455 case 8: 456 this.backstroke_length = this.get_search_field_value().length; 457 break; 458 case 9: 459 if (this.results_showing && !this.is_multiple) { 460 this.result_select(evt); 461 } 462 this.mouse_on_container = false; 463 break; 464 case 13: 465 if (this.results_showing) { 466 evt.preventDefault(); 467 } 468 break; 469 case 27: 470 if (this.results_showing) { 471 evt.preventDefault(); 472 } 473 break; 474 case 32: 475 if (this.disable_search) { 476 evt.preventDefault(); 477 } 478 break; 479 case 38: 480 evt.preventDefault(); 481 this.keyup_arrow(); 482 break; 483 case 40: 484 evt.preventDefault(); 485 this.keydown_arrow(); 486 break; 487 } 488 }; 489 490 AbstractChosen.prototype.keyup_checker = function(evt) { 491 var ref, stroke; 492 stroke = (ref = evt.which) != null ? ref : evt.keyCode; 493 this.search_field_scale(); 494 switch (stroke) { 495 case 8: 496 if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) { 497 this.keydown_backstroke(); 498 } else if (!this.pending_backstroke) { 499 this.result_clear_highlight(); 500 this.results_search(); 501 } 502 break; 503 case 13: 504 evt.preventDefault(); 505 if (this.results_showing) { 506 this.result_select(evt); 507 } 508 break; 509 case 27: 510 if (this.results_showing) { 511 this.results_hide(); 512 } 513 break; 514 case 9: 515 case 16: 516 case 17: 517 case 18: 518 case 38: 519 case 40: 520 case 91: 521 break; 522 default: 523 this.results_search(); 524 break; 525 } 526 }; 527 528 AbstractChosen.prototype.clipboard_event_checker = function(evt) { 529 if (this.is_disabled) { 530 return; 531 } 532 return setTimeout(((function(_this) { 533 return function() { 534 return _this.results_search(); 535 }; 536 })(this)), 50); 537 }; 538 539 AbstractChosen.prototype.container_width = function() { 540 if (this.options.width != null) { 541 return this.options.width; 542 } else { 543 return this.form_field.offsetWidth + "px"; 544 } 545 }; 546 547 AbstractChosen.prototype.include_option_in_results = function(option) { 548 if (this.is_multiple && (!this.display_selected_options && option.selected)) { 549 return false; 550 } 551 if (!this.display_disabled_options && option.disabled) { 552 return false; 553 } 554 if (option.empty) { 555 return false; 556 } 557 return true; 558 }; 559 560 AbstractChosen.prototype.search_results_touchstart = function(evt) { 561 this.touch_started = true; 562 return this.search_results_mouseover(evt); 563 }; 564 565 AbstractChosen.prototype.search_results_touchmove = function(evt) { 566 this.touch_started = false; 567 return this.search_results_mouseout(evt); 568 }; 569 570 AbstractChosen.prototype.search_results_touchend = function(evt) { 571 if (this.touch_started) { 572 return this.search_results_mouseup(evt); 573 } 574 }; 575 576 AbstractChosen.prototype.outerHTML = function(element) { 577 var tmp; 578 if (element.outerHTML) { 579 return element.outerHTML; 580 } 581 tmp = document.createElement("div"); 582 tmp.appendChild(element); 583 return tmp.innerHTML; 584 }; 585 586 AbstractChosen.prototype.get_single_html = function() { 587 return "<a class=\"chosen-single chosen-default\">\n <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" />\n <span>" + this.default_text + "</span>\n <div><b></b></div>\n</a>\n<div class=\"chosen-drop\">\n <div class=\"chosen-search\"
vendor: 12,623 bytes, lines 587-944
587>\n </div>\n <ul class=\"chosen-results\"></ul>\n</div>"; 588 }; 589 590 AbstractChosen.prototype.get_multi_html = function() { 591 return "<ul class=\"chosen-choices\">\n <li class=\"search-field\">\n <input class=\"chosen-search-input\" type=\"text\" autocomplete=\"off\" value=\"" + this.default_text + "\" />\n </li>\n</ul>\n<div class=\"chosen-drop\">\n <ul class=\"chosen-results\"></ul>\n</div>"; 592 }; 593 594 AbstractChosen.prototype.get_no_results_html = function(terms) { 595 return "<li class=\"no-results\">\n " + this.results_none_found + " <span>" + (this.escape_html(terms)) + "</span>\n</li>"; 596 }; 597 598 AbstractChosen.browser_is_supported = function() { 599 if ("Microsoft Internet Explorer" === window.navigator.appName) { 600 return document.documentMode >= 8; 601 } 602 if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) { 603 return false; 604 } 605 return true; 606 }; 607 608 AbstractChosen.default_multiple_text = "Select Some Options"; 609 610 AbstractChosen.default_single_text = "Select an Option"; 611 612 AbstractChosen.default_no_result_text = "No results match"; 613 614 return AbstractChosen; 615 616 })(); 617 618 $ = jQuery; 619 620 $.fn.extend({ 621 chosen: function(options) { 622 if (!AbstractChosen.browser_is_supported()) { 623 return this; 624 } 625 return this.each(function(input_field) { 626 var $this, chosen; 627 $this = $(this); 628 chosen = $this.data('chosen'); 629 if (options === 'destroy') { 630 if (chosen instanceof Chosen) { 631 chosen.destroy(); 632 } 633 return; 634 } 635 if (!(chosen instanceof Chosen)) { 636 $this.data('chosen', new Chosen(this, options)); 637 } 638 }); 639 } 640 }); 641 642 Chosen = (function(superClass) { 643 extend(Chosen, superClass); 644 645 function Chosen() { 646 return Chosen.__super__.constructor.apply(this, arguments); 647 } 648 649 Chosen.prototype.setup = function() { 650 this.form_field_jq = $(this.form_field); 651 return this.current_selectedIndex = this.form_field.selectedIndex; 652 }; 653 654 Chosen.prototype.set_up_html = function() { 655 var container_classes, container_props; 656 container_classes = ["chosen-container"]; 657 container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single")); 658 if (this.inherit_select_classes && this.form_field.className) { 659 container_classes.push(this.form_field.className); 660 } 661 if (this.is_rtl) { 662 container_classes.push("chosen-rtl"); 663 } 664 container_props = { 665 'class': container_classes.join(' '), 666 'title': this.form_field.title 667 }; 668 if (this.form_field.id.length) { 669 container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen"; 670 } 671 this.container = $("<div />", container_props); 672 this.container.width(this.container_width()); 673 if (this.is_multiple) { 674 this.container.html(this.get_multi_html()); 675 } else { 676 this.container.html(this.get_single_html()); 677 } 678 this.form_field_jq.hide().after(this.container); 679 this.dropdown = this.container.find('div.chosen-drop').first(); 680 this.search_field = this.container.find('input').first(); 681 this.search_results = this.container.find('ul.chosen-results').first(); 682 this.search_field_scale(); 683 this.search_no_results = this.container.find('li.no-results').first(); 684 if (this.is_multiple) { 685 this.search_choices = this.container.find('ul.chosen-choices').first(); 686 this.search_container = this.container.find('li.search-field').first(); 687 } else { 688 this.search_container = this.container.find('div.chosen-search').first(); 689 this.selected_item = this.container.find('.chosen-single').first(); 690 } 691 this.results_build(); 692 this.set_tab_index(); 693 return this.set_label_behavior(); 694 }; 695 696 Chosen.prototype.on_ready = function() { 697 return this.form_field_jq.trigger("chosen:ready", { 698 chosen: this 699 }); 700 }; 701 702 Chosen.prototype.register_observers = function() { 703 this.container.on('touchstart.chosen', (function(_this) { 704 return function(evt) { 705 _this.container_mousedown(evt); 706 }; 707 })(this)); 708 this.container.on('touchend.chosen', (function(_this) { 709 return function(evt) { 710 _this.container_mouseup(evt); 711 }; 712 })(this)); 713 this.container.on('mousedown.chosen', (function(_this) { 714 return function(evt) { 715 _this.container_mousedown(evt); 716 }; 717 })(this)); 718 this.container.on('mouseup.chosen', (function(_this) { 719 return function(evt) { 720 _this.container_mouseup(evt); 721 }; 722 })(this)); 723 this.container.on('mouseenter.chosen', (function(_this) { 724 return function(evt) { 725 _this.mouse_enter(evt); 726 }; 727 })(this)); 728 this.container.on('mouseleave.chosen', (function(_this) { 729 return function(evt) { 730 _this.mouse_leave(evt); 731 }; 732 })(this)); 733 this.search_results.on('mouseup.chosen', (function(_this) { 734 return function(evt) { 735 _this.search_results_mouseup(evt); 736 }; 737 })(this)); 738 this.search_results.on('mouseover.chosen', (function(_this) { 739 return function(evt) { 740 _this.search_results_mouseover(evt); 741 }; 742 })(this)); 743 this.search_results.on('mouseout.chosen', (function(_this) { 744 return function(evt) { 745 _this.search_results_mouseout(evt); 746 }; 747 })(this)); 748 this.search_results.on('mousewheel.chosen DOMMouseScroll.chosen', (function(_this) { 749 return function(evt) { 750 _this.search_results_mousewheel(evt); 751 }; 752 })(this)); 753 this.search_results.on('touchstart.chosen', (function(_this) { 754 return function(evt) { 755 _this.search_results_touchstart(evt); 756 }; 757 })(this)); 758 this.search_results.on('touchmove.chosen', (function(_this) { 759 return function(evt) { 760 _this.search_results_touchmove(evt); 761 }; 762 })(this)); 763 this.search_results.on('touchend.chosen', (function(_this) { 764 return function(evt) { 765 _this.search_results_touchend(evt); 766 }; 767 })(this)); 768 this.form_field_jq.on("chosen:updated.chosen", (function(_this) { 769 return function(evt) { 770 _this.results_update_field(evt); 771 }; 772 })(this)); 773 this.form_field_jq.on("chosen:activate.chosen", (function(_this) { 774 return function(evt) { 775 _this.activate_field(evt); 776 }; 777 })(this)); 778 this.form_field_jq.on("chosen:open.chosen", (function(_this) { 779 return function(evt) { 780 _this.container_mousedown(evt); 781 }; 782 })(this)); 783 this.form_field_jq.on("chosen:close.chosen", (function(_this) { 784 return function(evt) { 785 _this.close_field(evt); 786 }; 787 })(this)); 788 this.search_field.on('blur.chosen', (function(_this) { 789 return function(evt) { 790 _this.input_blur(evt); 791 }; 792 })(this)); 793 this.search_field.on('keyup.chosen', (function(_this) { 794 return function(evt) { 795 _this.keyup_checker(evt); 796 }; 797 })(this)); 798 this.search_field.on('keydown.chosen', (function(_this) { 799 return function(evt) { 800 _this.keydown_checker(evt); 801 }; 802 })(this)); 803 this.search_field.on('focus.chosen', (function(_this) { 804 return function(evt) { 805 _this.input_focus(evt); 806 }; 807 })(this)); 808 this.search_field.on('cut.chosen', (function(_this) { 809 return function(evt) { 810 _this.clipboard_event_checker(evt); 811 }; 812 })(this)); 813 this.search_field.on('paste.chosen', (function(_this) { 814 return function(evt) { 815 _this.clipboard_event_checker(evt); 816 }; 817 })(this)); 818 if (this.is_multiple) { 819 return this.search_choices.on('click.chosen', (function(_this) { 820 return function(evt) { 821 _this.choices_click(evt); 822 }; 823 })(this)); 824 } else { 825 return this.container.on('click.chosen', function(evt) { 826 evt.preventDefault(); 827 }); 828 } 829 }; 830 831 Chosen.prototype.destroy = function() { 832 $(this.container[0].ownerDocument).off('click.chosen', this.click_test_action); 833 if (this.form_field_label.length > 0) { 834 this.form_field_label.off('click.chosen'); 835 } 836 if (this.search_field[0].tabIndex) { 837 this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex; 838 } 839 this.container.remove(); 840 this.form_field_jq.removeData('chosen'); 841 return this.form_field_jq.show(); 842 }; 843 844 Chosen.prototype.search_field_disabled = function() { 845 this.is_disabled = this.form_field.disabled || this.form_field_jq.parents('fieldset').is(':disabled'); 846 this.container.toggleClass('chosen-disabled', this.is_disabled); 847 this.search_field[0].disabled = this.is_disabled; 848 if (!this.is_multiple) { 849 this.selected_item.off('focus.chosen', this.activate_field); 850 } 851 if (this.is_disabled) { 852 return this.close_field(); 853 } else if (!this.is_multiple) { 854 return this.selected_item.on('focus.chosen', this.activate_field); 855 } 856 }; 857 858 Chosen.prototype.container_mousedown = function(evt) { 859 var ref; 860 if (this.is_disabled) { 861 return; 862 } 863 if (evt && ((ref = evt.type) === 'mousedown' || ref === 'touchstart') && !this.results_showing) { 864 evt.preventDefault(); 865 } 866 if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) { 867 if (!this.active_field) { 868 if (this.is_multiple) { 869 this.search_field.val(""); 870 } 871 $(this.container[0].ownerDocument).on('click.chosen', this.click_test_action); 872 this.results_show(); 873 } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) { 874 evt.preventDefault(); 875 this.results_toggle(); 876 } 877 return this.activate_field(); 878 } 879 }; 880 881 Chosen.prototype.container_mouseup = function(evt) { 882 if (evt.target.nodeName === "ABBR" && !this.is_disabled) { 883 return this.results_reset(evt); 884 } 885 }; 886 887 Chosen.prototype.search_results_mousewheel = function(evt) { 888 var delta; 889 if (evt.originalEvent) { 890 delta = evt.originalEvent.deltaY || -evt.originalEvent.wheelDelta || evt.originalEvent.detail; 891 } 892 if (delta != null) { 893 evt.preventDefault(); 894 if (evt.type === 'DOMMouseScroll') { 895 delta = delta * 40; 896 } 897 return this.search_results.scrollTop(delta + this.search_results.scrollTop()); 898 } 899 }; 900 901 Chosen.prototype.blur_test = function(evt) { 902 if (!this.active_field && this.container.hasClass("chosen-container-active")) { 903 return this.close_field(); 904 } 905 }; 906 907 Chosen.prototype.close_field = function() { 908 $(this.container[0].ownerDocument).off("click.chosen", this.click_test_action); 909 this.active_field = false; 910 this.results_hide(); 911 this.container.removeClass("chosen-container-active"); 912 this.clear_backstroke(); 913 this.show_search_field_default(); 914 this.search_field_scale(); 915 return this.search_field.blur(); 916 }; 917 918 Chosen.prototype.activate_field = function() { 919 if (this.is_disabled) { 920 return; 921 } 922 this.container.addClass("chosen-container-active"); 923 this.active_field = true; 924 this.search_field.val(this.search_field.val()); 925 return this.search_field.focus(); 926 }; 927 928 Chosen.prototype.test_active_click = function(evt) { 929 var active_container; 930 active_container = $(evt.target).closest('.chosen-container'); 931 if (active_container.length && this.container[0] === active_container[0]) { 932 return this.active_field = true; 933 } else { 934 return this.close_field(); 935 } 936 }; 937 938 Chosen.prototype.results_build = function() { 939 this.parsing = true; 940 this.selected_option_count = null; 941 this.results_data = SelectParser.select_to_array(this.form_field); 942 if (this.is_multiple) { 943 this.search_choices.find("li.search-choice").remove(); 944 } else
vendor: 7,425 bytes, lines 944-1152
944if (!this.is_multiple) { 945 this.single_set_selected_text(); 946 if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) { 947 this.search_field[0].readOnly = true; 948 this.container.addClass("chosen-container-single-nosearch"); 949 } else { 950 this.search_field[0].readOnly = false; 951 this.container.removeClass("chosen-container-single-nosearch"); 952 } 953 } 954 this.update_results_content(this.results_option_build({ 955 first: true 956 })); 957 this.search_field_disabled(); 958 this.show_search_field_default(); 959 this.search_field_scale(); 960 return this.parsing = false; 961 }; 962 963 Chosen.prototype.result_do_highlight = function(el) { 964 var high_bottom, high_top, maxHeight, visible_bottom, visible_top; 965 if (el.length) { 966 this.result_clear_highlight(); 967 this.result_highlight = el; 968 this.result_highlight.addClass("highlighted"); 969 maxHeight = parseInt(this.search_results.css("maxHeight"), 10); 970 visible_top = this.search_results.scrollTop(); 971 visible_bottom = maxHeight + visible_top; 972 high_top = this.result_highlight.position().top + this.search_results.scrollTop(); 973 high_bottom = high_top + this.result_highlight.outerHeight(); 974 if (high_bottom >= visible_bottom) { 975 return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0); 976 } else if (high_top < visible_top) { 977 return this.search_results.scrollTop(high_top); 978 } 979 } 980 }; 981 982 Chosen.prototype.result_clear_highlight = function() { 983 if (this.result_highlight) { 984 this.result_highlight.removeClass("highlighted"); 985 } 986 return this.result_highlight = null; 987 }; 988 989 Chosen.prototype.results_show = function() { 990 if (this.is_multiple && this.max_selected_options <= this.choices_count()) { 991 this.form_field_jq.trigger("chosen:maxselected", { 992 chosen: this 993 }); 994 return false; 995 } 996 if (!this.is_multiple) { 997 this.search_container.append(this.search_field); 998 } 999 this.container.addClass("chosen-with-drop"); 1000 this.results_showing = true; 1001 this.search_field.focus(); 1002 this.search_field.val(this.get_search_field_value()); 1003 this.winnow_results(); 1004 return this.form_field_jq.trigger("chosen:showing_dropdown", { 1005 chosen: this 1006 }); 1007 }; 1008 1009 Chosen.prototype.update_results_content = function(content) { 1010 return this.search_results.html(content); 1011 }; 1012 1013 Chosen.prototype.results_hide = function() { 1014 if (this.results_showing) { 1015 this.result_clear_highlight(); 1016 if (!this.is_multiple) { 1017 this.selected_item.prepend(this.search_field); 1018 this.search_field.focus(); 1019 } 1020 this.container.removeClass("chosen-with-drop"); 1021 this.form_field_jq.trigger("chosen:hiding_dropdown", { 1022 chosen: this 1023 }); 1024 } 1025 return this.results_showing = false; 1026 }; 1027 1028 Chosen.prototype.set_tab_index = function(el) { 1029 var ti; 1030 if (this.form_field.tabIndex) { 1031 ti = this.form_field.tabIndex; 1032 this.form_field.tabIndex = -1; 1033 return this.search_field[0].tabIndex = ti; 1034 } 1035 }; 1036 1037 Chosen.prototype.set_label_behavior = function() { 1038 this.form_field_label = this.form_field_jq.parents("label"); 1039 if (!this.form_field_label.length && this.form_field.id.length) { 1040 this.form_field_label = $("label[for='" + this.form_field.id + "']"); 1041 } 1042 if (this.form_field_label.length > 0) { 1043 return this.form_field_label.on('click.chosen', this.label_click_handler); 1044 } 1045 }; 1046 1047 Chosen.prototype.show_search_field_default = function() { 1048 if (this.is_multiple && this.choices_count() < 1 && !this.active_field) { 1049 this.search_field.val(this.default_text); 1050 return this.search_field.addClass("default"); 1051 } else { 1052 this.search_field.val(""); 1053 return this.search_field.removeClass("default"); 1054 } 1055 }; 1056 1057 Chosen.prototype.search_results_mouseup = function(evt) { 1058 var target; 1059 target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); 1060 if (target.length) { 1061 this.result_highlight = target; 1062 this.result_select(evt); 1063 return this.search_field.focus(); 1064 } 1065 }; 1066 1067 Chosen.prototype.search_results_mouseover = function(evt) { 1068 var target; 1069 target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); 1070 if (target) { 1071 return this.result_do_highlight(target); 1072 } 1073 }; 1074 1075 Chosen.prototype.search_results_mouseout = function(evt) { 1076 if ($(evt.target).hasClass("active-result") || $(evt.target).parents('.active-result').first()) { 1077 return this.result_clear_highlight(); 1078 } 1079 }; 1080 1081 Chosen.prototype.choice_build = function(item) { 1082 var choice, close_link; 1083 choice = $('<li />', { 1084 "class": "search-choice" 1085 }).html("<span>" + (this.choice_label(item)) + "</span>"); 1086 if (item.disabled) { 1087 choice.addClass('search-choice-disabled'); 1088 } else { 1089 close_link = $('<a />', { 1090 "class": 'search-choice-close', 1091 'data-option-array-index': item.array_index 1092 }); 1093 close_link.on('click.chosen', (function(_this) { 1094 return function(evt) { 1095 return _this.choice_destroy_link_click(evt); 1096 }; 1097 })(this)); 1098 choice.append(close_link); 1099 } 1100 return this.search_container.before(choice); 1101 }; 1102 1103 Chosen.prototype.choice_destroy_link_click = function(evt) { 1104 evt.preventDefault(); 1105 evt.stopPropagation(); 1106 if (!this.is_disabled) { 1107 return this.choice_destroy($(evt.target)); 1108 } 1109 }; 1110 1111 Chosen.prototype.choice_destroy = function(link) { 1112 if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) { 1113 if (this.active_field) { 1114 this.search_field.focus(); 1115 } else { 1116 this.show_search_field_default(); 1117 } 1118 if (this.is_multiple && this.choices_count() > 0 && this.get_search_field_value().length < 1) { 1119 this.results_hide(); 1120 } 1121 link.parents('li').first().remove(); 1122 return this.search_field_scale(); 1123 } 1124 }; 1125 1126 Chosen.prototype.results_reset = function() { 1127 this.reset_single_select_options(); 1128 this.form_field.options[0].selected = true; 1129 this.single_set_selected_text(); 1130 this.show_search_field_default(); 1131 this.results_reset_cleanup(); 1132 this.trigger_form_field_change(); 1133 if (this.active_field) { 1134 return this.results_hide(); 1135 } 1136 }; 1137 1138 Chosen.prototype.results_reset_cleanup = function() { 1139 this.current_selectedIndex = this.form_field.selectedIndex; 1140 return this.selected_item.find("abbr").remove(); 1141 }; 1142 1143 Chosen.prototype.result_select = function(evt) { 1144 var high, item; 1145 if (this.result_highlight) { 1146 high = this.result_highlight; 1147 this.result_clear_highlight(); 1148 if (this.is_multiple && this.max_selected_options <= this.choices_count()) { 1149 this.form_field_jq.trigger("chosen:maxselected", { 1150 chosen: this 1151 }); 1152 return false;
1153 } 1154 if (this.is_multiple) { 1155 high.removeClass("active-result"); 1156 } else { 1157 this.reset_single_select_options(); 1158 } 1159 high.addClass("result-selected"); 1160 item = this.results_data[high[0].getAttribute("data-option-array-index")]; 1161 item.selected = true; 1162 this.form_field.options[item.options_index].selected = true; 1163 this.selected_option_count = null; 1164 this.search_field.val(""); 1165 if (this.is_multiple) { 1166 this.choice_build(item); 1167 } else { 1168 this.single_set_selected_text(this.choice_label(item)); 1169 } 1170 if (this.is_multiple && (!this.hide_results_on_select || (evt.metaKey || evt.ctrlKey))) { 1171 this.winnow_results();
vendor: 6,207 bytes, lines 1171-1356
1171 1172 } else { 1173 this.results_hide(); 1174 this.show_search_field_default(); 1175 } 1176 if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) { 1177 this.trigger_form_field_change({ 1178 selected: this.form_field.options[item.options_index].value 1179 }); 1180 } 1181 this.current_selectedIndex = this.form_field.selectedIndex; 1182 evt.preventDefault(); 1183 return this.search_field_scale(); 1184 } 1185 }; 1186 1187 Chosen.prototype.single_set_selected_text = function(text) { 1188 if (text == null) { 1189 text = this.default_text; 1190 } 1191 if (text === this.default_text) { 1192 this.selected_item.addClass("chosen-default"); 1193 } else { 1194 this.single_deselect_control_build(); 1195 this.selected_item.removeClass("chosen-default"); 1196 } 1197 return this.selected_item.find("span").html(text); 1198 }; 1199 1200 Chosen.prototype.result_deselect = function(pos) { 1201 var result_data; 1202 result_data = this.results_data[pos]; 1203 if (!this.form_field.options[result_data.options_index].disabled) { 1204 result_data.selected = false; 1205 this.form_field.options[result_data.options_index].selected = false; 1206 this.selected_option_count = null; 1207 this.result_clear_highlight(); 1208 if (this.results_showing) { 1209 this.winnow_results(); 1210 } 1211 this.trigger_form_field_change({ 1212 deselected: this.form_field.options[result_data.options_index].value 1213 }); 1214 this.search_field_scale(); 1215 return true; 1216 } else { 1217 return false; 1218 } 1219 }; 1220 1221 Chosen.prototype.single_deselect_control_build = function() { 1222 if (!this.allow_single_deselect) { 1223 return; 1224 } 1225 if (!this.selected_item.find("abbr").length) { 1226 this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>"); 1227 } 1228 return this.selected_item.addClass("chosen-single-with-deselect"); 1229 }; 1230 1231 Chosen.prototype.get_search_field_value = function() { 1232 return this.search_field.val(); 1233 }; 1234 1235 Chosen.prototype.get_search_text = function() { 1236 return $.trim(this.get_search_field_value()); 1237 }; 1238 1239 Chosen.prototype.escape_html = function(text) { 1240 return $('<div/>').text(text).html(); 1241 }; 1242 1243 Chosen.prototype.winnow_results_set_highlight = function() { 1244 var do_high, selected_results; 1245 selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; 1246 do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); 1247 if (do_high != null) { 1248 return this.result_do_highlight(do_high); 1249 } 1250 }; 1251 1252 Chosen.prototype.no_results = function(terms) { 1253 var no_results_html; 1254 no_results_html = this.get_no_results_html(terms); 1255 this.search_results.append(no_results_html); 1256 return this.form_field_jq.trigger("chosen:no_results", { 1257 chosen: this 1258 }); 1259 }; 1260 1261 Chosen.prototype.no_results_clear = function() { 1262 return this.search_results.find(".no-results").remove(); 1263 }; 1264 1265 Chosen.prototype.keydown_arrow = function() { 1266 var next_sib; 1267 if (this.results_showing && this.result_highlight) { 1268 next_sib = this.result_highlight.nextAll("li.active-result").first(); 1269 if (next_sib) { 1270 return this.result_do_highlight(next_sib); 1271 } 1272 } else { 1273 return this.results_show(); 1274 } 1275 }; 1276 1277 Chosen.prototype.keyup_arrow = function() { 1278 var prev_sibs; 1279 if (!this.results_showing && !this.is_multiple) { 1280 return this.results_show(); 1281 } else if (this.result_highlight) { 1282 prev_sibs = this.result_highlight.prevAll("li.active-result"); 1283 if (prev_sibs.length) { 1284 return this.result_do_highlight(prev_sibs.first()); 1285 } else { 1286 if (this.choices_count() > 0) { 1287 this.results_hide(); 1288 } 1289 return this.result_clear_highlight(); 1290 } 1291 } 1292 }; 1293 1294 Chosen.prototype.keydown_backstroke = function() { 1295 var next_available_destroy; 1296 if (this.pending_backstroke) { 1297 this.choice_destroy(this.pending_backstroke.find("a").first()); 1298 return this.clear_backstroke(); 1299 } else { 1300 next_available_destroy = this.search_container.siblings("li.search-choice").last(); 1301 if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) { 1302 this.pending_backstroke = next_available_destroy; 1303 if (this.single_backstroke_delete) { 1304 return this.keydown_backstroke(); 1305 } else { 1306 return this.pending_backstroke.addClass("search-choice-focus"); 1307 } 1308 } 1309 } 1310 }; 1311 1312 Chosen.prototype.clear_backstroke = function() { 1313 if (this.pending_backstroke) { 1314 this.pending_backstroke.removeClass("search-choice-focus"); 1315 } 1316 return this.pending_backstroke = null; 1317 }; 1318 1319 Chosen.prototype.search_field_scale = function() { 1320 var div, i, len, style, style_block, styles, width; 1321 if (!this.is_multiple) { 1322 return; 1323 } 1324 style_block = { 1325 position: 'absolute', 1326 left: '-1000px', 1327 top: '-1000px', 1328 display: 'none', 1329 whiteSpace: 'pre' 1330 }; 1331 styles = ['fontSize', 'fontStyle', 'fontWeight', 'fontFamily', 'lineHeight', 'textTransform', 'letterSpacing']; 1332 for (i = 0, len = styles.length; i < len; i++) { 1333 style = styles[i]; 1334 style_block[style] = this.search_field.css(style); 1335 } 1336 div = $('<div />').css(style_block); 1337 div.text(this.get_search_field_value()); 1338 $('body').append(div); 1339 width = div.width() + 25; 1340 div.remove(); 1341 if (this.container.is(':visible')) { 1342 width = Math.min(this.container.outerWidth() - 10, width); 1343 } 1344 return this.search_field.width(width); 1345 }; 1346 1347 Chosen.prototype.trigger_form_field_change = function(extra) { 1348 this.form_field_jq.trigger("input", extra); 1349 return this.form_field_jq.trigger("change", extra); 1350 }; 1351 1352 return Chosen; 1353 1354 })(AbstractChosen); 1355 1356}).call(this);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.