/*! * jQuery UI Checkboxradio 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Checkboxradio //>>group: Widgets //>>description: Enhances a form with multiple themeable checkboxes or radio buttons. //>>docs: http://api.jqueryui.com/checkboxradio/ //>>demos: http://jqueryui.com/checkboxradio/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/button.css //>>css.structure: ../../themes/base/checkboxradio.css //>>css.theme: ../../themes/base/theme.css ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery", "./core" ], factory ); } else { // Browser globals factory( jQuery ); } } )( function( $ ) { "use strict"; $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { version: "1.13.2", options: { disabled: null, label: null, icon: true, classes: { "ui-checkboxradio-label": "ui-corner-all", "ui-checkboxradio-icon": "ui-corner-all" } }, _getCreateOptions: function() { var disabled, labels, labelContents; var options = this._super() || {}; // We read the type here, because it makes more sense to throw a element type error first, // rather then the error for lack of a label. Often if its the wrong type, it // won't have a label (e.g. calling on a div, btn, etc) this._readType(); labels = this.element.labels(); // If there are multiple labels, use the last one this.label = $( labels[ labels.length - 1 ] ); if ( !this.label.length ) { $.error( "No label found for checkboxradio widget" ); } this.originalLabel = ""; // We need to get the label text but this may also need to make sure it does not contain the // input itself. // The label contents could be text, html, or a mix. We wrap all elements // and read the wrapper's `innerHTML` to get a string representation of // the label, without the input as part of it. labelContents = this.label.contents().not( this.element[ 0 ] ); if ( labelContents.length ) { this.originalLabel += labelContents .clone() .wrapAll( "<div></div>" ) .parent() .html(); } // Set the label option if we found label text if ( this.originalLabel ) { options.label = this.originalLabel; } disabled = this.element[ 0 ].disabled; if ( disabled != null ) { options.disabled = disabled; } return options; }, _create: function() { var checked = this.element[ 0 ].checked; this._bindFormResetHandler(); if ( this.options.disabled == null ) { this.options.disabled = this.element[ 0 ].disabled; } this._setOption( "disabled", this.options.disabled ); this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" ); this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" ); if ( this.type === "radio" ) { this._addClass( this.label, "ui-checkboxradio-radio-label" ); } if ( this.options.label && this.options.label !== this.originalLabel ) { this._updateLabel(); } else if ( this.originalLabel ) { this.options.label = this.originalLabel; } this._enhance(); if ( checked ) { this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" ); } this._on( { change: "_toggleClasses", focus: function() { this._addClass( this.label, null, "ui-state-focus ui-visual-focus" ); }, blur: function() { this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" ); } } ); }, _readType: function() { var nodeName = this.element[ 0 ].nodeName.toLowerCase(); this.type = this.element[ 0 ].type; if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) { $.error( "Can't create checkboxradio on element.nodeName=" + nodeName + " and element.type=" + this.type ); } }, // Support jQuery Mobile enhanced option _enhance: function() { this._updateIcon( this.element[ 0 ].checked ); }, widget: function() { return this.label; }, _getRadioGroup: function() { var group; var name = this.element[ 0 ].name; var nameSelector = "input[name='" + $.escapeSelector( name ) + "']"; if ( !name ) { return $( [] ); } if ( this.form.length ) { group = $( this.form[ 0 ].elements ).filter( nameSelector ); } else { // Not inside a form, check all inputs that also are not inside a form group = $( nameSelector ).filter( function() { return $( this )._form().length === 0; } ); } return group.not( this.element ); }, _toggleClasses: function() { var checked = this.element[ 0 ].checked; this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked ); if ( this.options.icon && this.type === "checkbox" ) { this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked ) ._toggleClass( this.icon, null, "ui-icon-blank", !checked ); } if ( this.type === "radio" ) { this._getRadioGroup() .each( function() { var instance = $( this ).checkboxradio( "instance" ); if ( instance ) { instance._removeClass( instance.label, "ui-checkboxradio-checked", "ui-state-active" ); } } ); } }, _destroy: function() { this._unbindFormResetHandler(); if ( this.icon ) { this.icon.remove(); this.iconSpace.remove(); } }, _setOption: function( key, value ) { // We don't allow the value to be set to nothing if ( key === "label" && !value ) { return; } this._super( key, value ); if ( key === "disabled" ) { this._toggleClass( this.label, null, "ui-state-disabled", value ); this.element[ 0 ].disabled = value; // Don't refresh when setting disabled return; } this.refresh(); }, _updateIcon: function( checked ) { var toAdd = "ui-icon ui-icon-background "; if ( this.options.icon ) { if ( !this.icon ) { this.icon = $( "<span>" ); this.iconSpace = $( "<span> </span>" ); this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" ); } if ( this.type === "checkbox" ) { toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank"; this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" ); } else { toAdd += "ui-icon-blank"; } this._addClass( this.icon, "ui-checkboxradio-icon", toAdd ); if ( !checked ) { this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" ); } this.icon.prependTo( this.label ).after( this.iconSpace ); } else if ( this.icon !== undefined ) { this.icon.remove(); this.iconSpace.remove(); delete this.icon; } }, _updateLabel: function() { // Remove the contents of the label ( minus the icon, icon space, and input ) var contents = this.label.contents().not( this.element[ 0 ] ); if ( this.icon ) { contents = contents.not( this.icon[ 0 ] ); } if ( this.iconSpace ) { contents = contents.not( this.iconSpace[ 0 ] ); } contents.remove(); this.label.append( this.options.label ); }, refresh: function() { var checked = this.element[ 0 ].checked, isDisabled = this.element[ 0 ].disabled; this._updateIcon( checked ); this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked ); if ( this.options.label !== null ) { this._updateLabel(); } if ( isDisabled !== this.options.disabled ) { this._setOptions( { "disabled": isDisabled } ); } } } ] ); return $.ui.checkboxradio; } );
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
accordion.js | File | 15.7 KB | 0644 |
|
accordion.min.js | File | 8.61 KB | 0644 |
|
autocomplete.js | File | 17.03 KB | 0644 |
|
autocomplete.min.js | File | 8.27 KB | 0644 |
|
button.js | File | 11.41 KB | 0644 |
|
button.min.js | File | 5.99 KB | 0644 |
|
checkboxradio.js | File | 7.36 KB | 0644 |
|
checkboxradio.min.js | File | 4.21 KB | 0644 |
|
controlgroup.js | File | 8.41 KB | 0644 |
|
controlgroup.min.js | File | 4.29 KB | 0644 |
|
core.js | File | 48.68 KB | 0644 |
|
core.min.js | File | 20.94 KB | 0644 |
|
datepicker.js | File | 80.56 KB | 0644 |
|
datepicker.min.js | File | 35.87 KB | 0644 |
|
dialog.js | File | 23.03 KB | 0644 |
|
dialog.min.js | File | 12.65 KB | 0644 |
|
draggable.js | File | 34.59 KB | 0644 |
|
draggable.min.js | File | 17.89 KB | 0644 |
|
droppable.js | File | 12.57 KB | 0644 |
|
droppable.min.js | File | 6.49 KB | 0644 |
|
effect-blind.js | File | 1.58 KB | 0644 |
|
effect-blind.min.js | File | 864 B | 0644 |
|
effect-bounce.js | File | 2.58 KB | 0644 |
|
effect-bounce.min.js | File | 975 B | 0644 |
|
effect-clip.js | File | 1.52 KB | 0644 |
|
effect-clip.min.js | File | 780 B | 0644 |
|
effect-drop.js | File | 1.54 KB | 0644 |
|
effect-drop.min.js | File | 737 B | 0644 |
|
effect-explode.js | File | 2.83 KB | 0644 |
|
effect-explode.min.js | File | 1.08 KB | 0644 |
|
effect-fade.js | File | 946 B | 0644 |
|
effect-fade.min.js | File | 509 B | 0644 |
|
effect-fold.js | File | 2.11 KB | 0644 |
|
effect-fold.min.js | File | 1004 B | 0644 |
|
effect-highlight.js | File | 1.19 KB | 0644 |
|
effect-highlight.min.js | File | 632 B | 0644 |
|
effect-puff.js | File | 973 B | 0644 |
|
effect-puff.min.js | File | 494 B | 0644 |
|
effect-pulsate.js | File | 1.51 KB | 0644 |
|
effect-pulsate.min.js | File | 672 B | 0644 |
|
effect-scale.js | File | 1.32 KB | 0644 |
|
effect-scale.min.js | File | 707 B | 0644 |
|
effect-shake.js | File | 1.82 KB | 0644 |
|
effect-shake.min.js | File | 830 B | 0644 |
|
effect-size.js | File | 5.27 KB | 0644 |
|
effect-size.min.js | File | 2.42 KB | 0644 |
|
effect-slide.js | File | 1.9 KB | 0644 |
|
effect-slide.min.js | File | 901 B | 0644 |
|
effect-transfer.js | File | 866 B | 0644 |
|
effect-transfer.min.js | File | 426 B | 0644 |
|
effect.js | File | 40.96 KB | 0644 |
|
effect.min.js | File | 16.93 KB | 0644 |
|
menu.js | File | 18.41 KB | 0644 |
|
menu.min.js | File | 9.88 KB | 0644 |
|
mouse.js | File | 6.05 KB | 0644 |
|
mouse.min.js | File | 3.32 KB | 0644 |
|
progressbar.js | File | 4.12 KB | 0644 |
|
progressbar.min.js | File | 2.48 KB | 0644 |
|
resizable.js | File | 29.62 KB | 0644 |
|
resizable.min.js | File | 18.27 KB | 0644 |
|
selectable.js | File | 7.92 KB | 0644 |
|
selectable.min.js | File | 4.38 KB | 0644 |
|
selectmenu.js | File | 15.75 KB | 0644 |
|
selectmenu.min.js | File | 9.13 KB | 0644 |
|
slider.js | File | 19.1 KB | 0644 |
|
slider.min.js | File | 10.48 KB | 0644 |
|
sortable.js | File | 46.45 KB | 0644 |
|
sortable.min.js | File | 24.85 KB | 0644 |
|
spinner.js | File | 14.03 KB | 0644 |
|
spinner.min.js | File | 7.44 KB | 0644 |
|
tabs.js | File | 23.02 KB | 0644 |
|
tabs.min.js | File | 11.66 KB | 0644 |
|
tooltip.js | File | 14.06 KB | 0644 |
|
tooltip.min.js | File | 6.04 KB | 0644 |
|