PageSourceSearch

https://www.alfredstreet.org/wp-includes/js/jquery/ui/checkboxradio.js?ver=1.13.3

js alfredstreet.org collected 2026-09-24 09:55:16 UTC 7,589 bytes, 290 lines download raw bytes

vendor: 5,433 bytes, lines 1-204
1/*!
2 * jQuery UI Checkboxradio 1.13.3
3 * https://jqueryui.com
4 *
5 * Copyright OpenJS Foundation and other contributors
6 * Released under the MIT license.
7 * https://jquery.org/license
8 */
9
10//>>label: Checkboxradio
11//>>group: Widgets
12//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
13//>>docs: https://api.jqueryui.com/checkboxradio/
14//>>demos: https://jqueryui.com/checkboxradio/
15//>>css.structure: ../../themes/base/core.css
16//>>css.structure: ../../themes/base/button.css
17//>>css.structure: ../../themes/base/checkboxradio.css
18//>>css.theme: ../../themes/base/theme.css
19
20( function( factory ) {
21	"use strict";
22
23	if ( typeof define === "function" && define.amd ) {
24
25		// AMD. Register as an anonymous module.
26		define( [
27			"jquery",
28			"../form-reset-mixin",
29			"../labels",
30			"../widget"
31		], factory );
32	} else {
33
34		// Browser globals
35		factory( jQuery );
36	}
37} )( function( $ ) {
38"use strict";
39
40$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
41	version: "1.13.3",
42	options: {
43		disabled: null,
44		label: null,
45		icon: true,
46		classes: {
47			"ui-checkboxradio-label": "ui-corner-all",
48			"ui-checkboxradio-icon": "ui-corner-all"
49		}
50	},
51
52	_getCreateOptions: function() {
53		var disabled, labels, labelContents;
54		var options = this._super() || {};
55
56		// We read the type here, because it makes more sense to throw a element type error first,
57		// rather then the error for lack of a label. Often if its the wrong type, it
58		// won't have a label (e.g. calling on a div, btn, etc)
59		this._readType();
60
61		labels = this.element.labels();
62
63		// If there are multiple labels, use the last one
64		this.label = $( labels[ labels.length - 1 ] );
65		if ( !this.label.length ) {
66			$.error( "No label found for checkboxradio widget" );
67		}
68
69		this.originalLabel = "";
70
71		// We need to get the label text but this may also need to make sure it does not contain the
72		// input itself.
73		// The label contents could be text, html, or a mix. We wrap all elements
74		// and read the wrapper's `innerHTML` to get a string representation of
75		// the label, without the input as part of it.
76		labelContents = this.label.contents().not( this.element[ 0 ] );
77
78		if ( labelContents.length ) {
79			this.originalLabel += labelContents
80				.clone()
81				.wrapAll( "<div></div>" )
82				.parent()
83				.html();
84		}
85
86		// Set the label option if we found label text
87		if ( this.originalLabel ) {
88			options.label = this.originalLabel;
89		}
90
91		disabled = this.element[ 0 ].disabled;
92		if ( disabled != null ) {
93			options.disabled = disabled;
94		}
95		return options;
96	},
97
98	_create: function() {
99		var checked = this.element[ 0 ].checked;
100
101		this._bindFormResetHandler();
102
103		if ( this.options.disabled == null ) {
104			this.options.disabled = this.element[ 0 ].disabled;
105		}
106
107		this._setOption( "disabled", this.options.disabled );
108		this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
109		this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
110
111		if ( this.type === "radio" ) {
112			this._addClass( this.label, "ui-checkboxradio-radio-label" );
113		}
114
115		if ( this.options.label && this.options.label !== this.originalLabel ) {
116			this._updateLabel();
117		} else if ( this.originalLabel ) {
118			this.options.label = this.originalLabel;
119		}
120
121		this._enhance();
122
123		if ( checked ) {
124			this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
125		}
126
127		this._on( {
128			change: "_toggleClasses",
129			focus: function() {
130				this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
131			},
132			blur: function() {
133				this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
134			}
135		} );
136	},
137
138	_readType: function() {
139		var nodeName = this.element[ 0 ].nodeName.toLowerCase();
140		this.type = this.element[ 0 ].type;
141		if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
142			$.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
143				" and element.type=" + this.type );
144		}
145	},
146
147	// Support jQuery Mobile enhanced option
148	_enhance: function() {
149		this._updateIcon( this.element[ 0 ].checked );
150	},
151
152	widget: function() {
153		return this.label;
154	},
155
156	_getRadioGroup: function() {
157		var group;
158		var name = this.element[ 0 ].name;
159		var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
160
161		if ( !name ) {
162			return $( [] );
163		}
164
165		if ( this.form.length ) {
166			group = $( this.form[ 0 ].elements ).filter( nameSelector );
167		} else {
168
169			// Not inside a form, check all inputs that also are not inside a form
170			group = $( nameSelector ).filter( function() {
171				return $( this )._form().length === 0;
172			} );
173		}
174
175		return group.not( this.element );
176	},
177
178	_toggleClasses: function() {
179		var checked = this.element[ 0 ].checked;
180		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
181
182		if ( this.options.icon && this.type === "checkbox" ) {
183			this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
184				._toggleClass( this.icon, null, "ui-icon-blank", !checked );
185		}
186
187		if ( this.type === "radio" ) {
188			this._getRadioGroup()
189				.each( function() {
190					var instance = $( this ).checkboxradio( "instance" );
191
192					if ( instance ) {
193						instance._removeClass( instance.label,
194							"ui-checkboxradio-checked", "ui-state-active" );
195					}
196				} );
197		}
198	},
199
200	_destroy: function() {
201		this._unbindFormResetHandler();
202
203		if ( this.icon ) {
204			this.icon.remove();
vendor: 2,156 bytes, lines 205-290
205			this.iconSpace.remove();
206		}
207	},
208
209	_setOption: function( key, value ) {
210
211		// We don't allow the value to be set to nothing
212		if ( key === "label" && !value ) {
213			return;
214		}
215
216		this._super( key, value );
217
218		if ( key === "disabled" ) {
219			this._toggleClass( this.label, null, "ui-state-disabled", value );
220			this.element[ 0 ].disabled = value;
221
222			// Don't refresh when setting disabled
223			return;
224		}
225		this.refresh();
226	},
227
228	_updateIcon: function( checked ) {
229		var toAdd = "ui-icon ui-icon-background ";
230
231		if ( this.options.icon ) {
232			if ( !this.icon ) {
233				this.icon = $( "<span>" );
234				this.iconSpace = $( "<span> </span>" );
235				this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
236			}
237
238			if ( this.type === "checkbox" ) {
239				toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
240				this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
241			} else {
242				toAdd += "ui-icon-blank";
243			}
244			this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
245			if ( !checked ) {
246				this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
247			}
248			this.icon.prependTo( this.label ).after( this.iconSpace );
249		} else if ( this.icon !== undefined ) {
250			this.icon.remove();
251			this.iconSpace.remove();
252			delete this.icon;
253		}
254	},
255
256	_updateLabel: function() {
257
258		// Remove the contents of the label ( minus the icon, icon space, and input )
259		var contents = this.label.contents().not( this.element[ 0 ] );
260		if ( this.icon ) {
261			contents = contents.not( this.icon[ 0 ] );
262		}
263		if ( this.iconSpace ) {
264			contents = contents.not( this.iconSpace[ 0 ] );
265		}
266		contents.remove();
267
268		this.label.append( this.options.label );
269	},
270
271	refresh: function() {
272		var checked = this.element[ 0 ].checked,
273			isDisabled = this.element[ 0 ].disabled;
274
275		this._updateIcon( checked );
276		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
277		if ( this.options.label !== null ) {
278			this._updateLabel();
279		}
280
281		if ( isDisabled !== this.options.disabled ) {
282			this._setOptions( { "disabled": isDisabled } );
283		}
284	}
285
286} ] );
287
288return $.ui.checkboxradio;
289
290} );

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.