Diff: STRATO-apps/wordpress_03/app/wp-includes/js/jquery/ui/checkboxradio.js

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
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();
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 +
288 + return $.ui.checkboxradio;
289 +
290 + } );
291 +