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