From a5c67831e0b6d8974700e7cb134c054c6e9f3131 Mon Sep 17 00:00:00 2001 From: Dmytro Poperechnyy Date: Tue, 23 Jul 2019 13:38:03 -0500 Subject: [PATCH] MC-17868: Break jQuery UI into widgets and make a prototype - Add separate jquery ui widget component v1.9.2 for adminhtml area; - Update jquery ui components description; - Update requirejs config; --- .../Theme/view/adminhtml/requirejs-config.js | 41 +- .../Theme/view/frontend/requirejs-config.js | 3 - lib/web/jquery/jquery-ui-widget-1.9.2.js | 534 ++++++++++++++++++ lib/web/jquery/ui-modules/accordion.js | 2 +- lib/web/jquery/ui-modules/autocomplete.js | 2 +- lib/web/jquery/ui-modules/button.js | 2 +- lib/web/jquery/ui-modules/core.js | 2 +- lib/web/jquery/ui-modules/datepicker.js | 2 +- lib/web/jquery/ui-modules/dialog.js | 2 +- lib/web/jquery/ui-modules/draggable.js | 2 +- lib/web/jquery/ui-modules/droppable.js | 2 +- lib/web/jquery/ui-modules/effect-blind.js | 2 +- lib/web/jquery/ui-modules/effect-bounce.js | 2 +- lib/web/jquery/ui-modules/effect-clip.js | 2 +- lib/web/jquery/ui-modules/effect-drop.js | 2 +- lib/web/jquery/ui-modules/effect-explode.js | 2 +- lib/web/jquery/ui-modules/effect-fade.js | 2 +- lib/web/jquery/ui-modules/effect-fold.js | 2 +- lib/web/jquery/ui-modules/effect-highlight.js | 2 +- lib/web/jquery/ui-modules/effect-pulsate.js | 2 +- lib/web/jquery/ui-modules/effect-scale.js | 2 +- lib/web/jquery/ui-modules/effect-shake.js | 2 +- lib/web/jquery/ui-modules/effect-slide.js | 2 +- lib/web/jquery/ui-modules/effect-transfer.js | 2 +- lib/web/jquery/ui-modules/effect.js | 2 +- lib/web/jquery/ui-modules/menu.js | 2 +- lib/web/jquery/ui-modules/mouse.js | 5 +- lib/web/jquery/ui-modules/position.js | 2 +- lib/web/jquery/ui-modules/progressbar.js | 2 +- lib/web/jquery/ui-modules/resizable.js | 2 +- lib/web/jquery/ui-modules/selectable.js | 2 +- lib/web/jquery/ui-modules/slider.js | 2 +- lib/web/jquery/ui-modules/sortable.js | 2 +- lib/web/jquery/ui-modules/spinner.js | 2 +- lib/web/jquery/ui-modules/tabs.js | 6 +- lib/web/jquery/ui-modules/tooltip.js | 2 +- lib/web/jquery/ui-modules/widget.js | 77 ++- 37 files changed, 623 insertions(+), 105 deletions(-) create mode 100644 lib/web/jquery/jquery-ui-widget-1.9.2.js diff --git a/app/code/Magento/Theme/view/adminhtml/requirejs-config.js b/app/code/Magento/Theme/view/adminhtml/requirejs-config.js index 81269b87d583a..6bb0f79f008e4 100644 --- a/app/code/Magento/Theme/view/adminhtml/requirejs-config.js +++ b/app/code/Magento/Theme/view/adminhtml/requirejs-config.js @@ -28,26 +28,27 @@ var config = { }, 'map': { '*': { - 'translateInline': 'mage/translate-inline', - 'form': 'mage/backend/form', - 'button': 'mage/backend/button', - 'accordion': 'mage/accordion', - 'actionLink': 'mage/backend/action-link', - 'validation': 'mage/backend/validation', - 'notification': 'mage/backend/notification', - 'loader': 'mage/loader_old', - 'loaderAjax': 'mage/loader_old', - 'floatingHeader': 'mage/backend/floating-header', - 'suggest': 'mage/backend/suggest', - 'mediabrowser': 'jquery/jstree/jquery.jstree', - 'tabs': 'mage/backend/tabs', - 'treeSuggest': 'mage/backend/tree-suggest', - 'calendar': 'mage/calendar', - 'dropdown': 'mage/dropdown_old', - 'collapsible': 'mage/collapsible', - 'menu': 'mage/backend/menu', - 'jstree': 'jquery/jstree/jquery.jstree', - 'details': 'jquery/jquery.details' + 'translateInline': 'mage/translate-inline', + 'form': 'mage/backend/form', + 'button': 'mage/backend/button', + 'accordion': 'mage/accordion', + 'actionLink': 'mage/backend/action-link', + 'validation': 'mage/backend/validation', + 'notification': 'mage/backend/notification', + 'loader': 'mage/loader_old', + 'loaderAjax': 'mage/loader_old', + 'floatingHeader': 'mage/backend/floating-header', + 'suggest': 'mage/backend/suggest', + 'mediabrowser': 'jquery/jstree/jquery.jstree', + 'tabs': 'mage/backend/tabs', + 'treeSuggest': 'mage/backend/tree-suggest', + 'calendar': 'mage/calendar', + 'dropdown': 'mage/dropdown_old', + 'collapsible': 'mage/collapsible', + 'menu': 'mage/backend/menu', + 'jstree': 'jquery/jstree/jquery.jstree', + 'details': 'jquery/jquery.details', + 'jquery-ui-modules/widget': 'jquery/jquery-ui-widget-1.9.2' } }, 'deps': [ diff --git a/app/code/Magento/Theme/view/frontend/requirejs-config.js b/app/code/Magento/Theme/view/frontend/requirejs-config.js index 952353eb3aff0..d1cf76b83ebb4 100644 --- a/app/code/Magento/Theme/view/frontend/requirejs-config.js +++ b/app/code/Magento/Theme/view/frontend/requirejs-config.js @@ -33,9 +33,6 @@ var config = { 'jquery/ui': 'jquery/compat' } }, - paths: { - 'jquery/ui': 'jquery/jquery-ui' - }, deps: [ 'jquery/jquery.mobile.custom', 'mage/common', diff --git a/lib/web/jquery/jquery-ui-widget-1.9.2.js b/lib/web/jquery/jquery-ui-widget-1.9.2.js new file mode 100644 index 0000000000000..37631850c1dd6 --- /dev/null +++ b/lib/web/jquery/jquery-ui-widget-1.9.2.js @@ -0,0 +1,534 @@ +/*! + * jQuery UI Widget - v1.9.2 for adminhtml area + * http://jqueryui.com + * + * Copyright 2014 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/jQuery.widget/ + */ + +define([ + 'jquery' +], function ($, undefined) { + + var uuid = 0, + slice = Array.prototype.slice, + _cleanData = $.cleanData; + $.cleanData = function (elems) { + for (var i = 0, elem; (elem = elems[i]) != null; i++) { + try { + $(elem).triggerHandler("remove"); + // http://bugs.jquery.com/ticket/8235 + } catch (e) { + } + } + _cleanData(elems); + }; + + $.widget = function (name, base, prototype) { + var fullName, existingConstructor, constructor, basePrototype, + namespace = name.split(".")[0]; + + name = name.split(".")[1]; + fullName = namespace + "-" + name; + + if (!prototype) { + prototype = base; + base = $.Widget; + } + + // create selector for plugin + $.expr[":"][fullName.toLowerCase()] = function (elem) { + return !!$.data(elem, fullName); + }; + + $[namespace] = $[namespace] || {}; + existingConstructor = $[namespace][name]; + constructor = $[namespace][name] = function (options, element) { + // allow instantiation without "new" keyword + if (!this._createWidget) { + return new constructor(options, element); + } + + // allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if (arguments.length) { + this._createWidget(options, element); + } + }; + // extend with the existing constructor to carry over any static properties + $.extend(constructor, existingConstructor, { + version: prototype.version, + // copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend({}, prototype), + // track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + }); + + basePrototype = new base(); + // we need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend({}, basePrototype.options); + $.each(prototype, function (prop, value) { + if ($.isFunction(value)) { + prototype[prop] = (function () { + var _super = function () { + return base.prototype[prop].apply(this, arguments); + }, + _superApply = function (args) { + return base.prototype[prop].apply(this, args); + }; + return function () { + var __super = this._super, + __superApply = this._superApply, + returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply(this, arguments); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + })(); + } + }); + constructor.prototype = $.widget.extend(basePrototype, { + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name + }, prototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + // TODO remove widgetBaseClass, see #8155 + widgetBaseClass: fullName, + widgetFullName: fullName + }); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if (existingConstructor) { + $.each(existingConstructor._childConstructors, function (i, child) { + var childPrototype = child.prototype; + + // redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget(childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto); + }); + // remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push(constructor); + } + + $.widget.bridge(name, constructor); + }; + + $.widget.extend = function (target) { + var input = slice.call(arguments, 1), + inputIndex = 0, + inputLength = input.length, + key, + value; + for (; inputIndex < inputLength; inputIndex++) { + for (key in input[inputIndex]) { + value = input[inputIndex][key]; + if (input[inputIndex].hasOwnProperty(key) && value !== undefined) { + // Clone objects + if ($.isPlainObject(value)) { + target[key] = $.isPlainObject(target[key]) ? + $.widget.extend({}, target[key], value) : + // Don't extend strings, arrays, etc. with objects + $.widget.extend({}, value); + // Copy everything else by reference + } else { + target[key] = value; + } + } + } + } + return target; + }; + + $.widget.bridge = function (name, object) { + var fullName = object.prototype.widgetFullName || name; + $.fn[name] = function (options) { + var isMethodCall = typeof options === "string", + args = slice.call(arguments, 1), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.widget.extend.apply(null, [options].concat(args)) : + options; + + if (isMethodCall) { + this.each(function () { + var methodValue, + instance = $.data(this, fullName); + if (!instance) { + return $.error("cannot call methods on " + name + " prior to initialization; " + + "attempted to call method '" + options + "'"); + } + if (!$.isFunction(instance[options]) || options.charAt(0) === "_") { + return $.error("no such method '" + options + "' for " + name + " widget instance"); + } + methodValue = instance[options].apply(instance, args); + if (methodValue !== instance && methodValue !== undefined) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack(methodValue.get()) : + methodValue; + return false; + } + }); + } else { + this.each(function () { + var instance = $.data(this, fullName); + if (instance) { + instance.option(options || {})._init(); + } else { + $.data(this, fullName, new object(options, this)); + } + }); + } + + return returnValue; + }; + }; + + $.Widget = function ( /* options, element */) { + }; + $.Widget._childConstructors = []; + + $.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
", + options: { + disabled: false, + + // callbacks + create: null + }, + _createWidget: function (options, element) { + element = $(element || this.defaultElement || this)[0]; + this.element = $(element); + this.uuid = uuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + this.options = $.widget.extend({}, + this.options, + this._getCreateOptions(), + options); + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + + if (element !== this) { + // 1.9 BC for #7810 + // TODO remove dual storage + $.data(element, this.widgetName, this); + $.data(element, this.widgetFullName, this); + this._on(true, this.element, { + remove: function (event) { + if (event.target === element) { + this.destroy(); + } + } + }); + this.document = $(element.style ? + // element within the document + element.ownerDocument : + // element is window or document + element.document || element); + this.window = $(this.document[0].defaultView || this.document[0].parentWindow); + } + + this._create(); + this._trigger("create", null, this._getCreateEventData()); + this._init(); + }, + _getCreateOptions: $.noop, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, + + destroy: function () { + this._destroy(); + // we can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .unbind(this.eventNamespace) + // 1.9 BC for #7810 + // TODO remove dual storage + .removeData(this.widgetName) + .removeData(this.widgetFullName) + // support: jquery <1.6.3 + // http://bugs.jquery.com/ticket/9413 + .removeData($.camelCase(this.widgetFullName)); + this.widget() + .unbind(this.eventNamespace) + .removeAttr("aria-disabled") + .removeClass( + this.widgetFullName + "-disabled " + + "ui-state-disabled"); + + // clean up events and states + this.bindings.unbind(this.eventNamespace); + this.hoverable.removeClass("ui-state-hover"); + this.focusable.removeClass("ui-state-focus"); + }, + _destroy: $.noop, + + widget: function () { + return this.element; + }, + + option: function (key, value) { + var options = key, + parts, + curOption, + i; + + if (arguments.length === 0) { + // don't return a reference to the internal hash + return $.widget.extend({}, this.options); + } + + if (typeof key === "string") { + // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split("."); + key = parts.shift(); + if (parts.length) { + curOption = options[key] = $.widget.extend({}, this.options[key]); + for (i = 0; i < parts.length - 1; i++) { + curOption[parts[i]] = curOption[parts[i]] || {}; + curOption = curOption[parts[i]]; + } + key = parts.pop(); + if (value === undefined) { + return curOption[key] === undefined ? null : curOption[key]; + } + curOption[key] = value; + } else { + if (value === undefined) { + return this.options[key] === undefined ? null : this.options[key]; + } + options[key] = value; + } + } + + this._setOptions(options); + + return this; + }, + _setOptions: function (options) { + var key; + + for (key in options) { + this._setOption(key, options[key]); + } + + return this; + }, + _setOption: function (key, value) { + this.options[key] = value; + + if (key === "disabled") { + this.widget() + .toggleClass(this.widgetFullName + "-disabled ui-state-disabled", !!value) + .attr("aria-disabled", value); + this.hoverable.removeClass("ui-state-hover"); + this.focusable.removeClass("ui-state-focus"); + } + + return this; + }, + + enable: function () { + return this._setOption("disabled", false); + }, + disable: function () { + return this._setOption("disabled", true); + }, + + _on: function (suppressDisabledCheck, element, handlers) { + var delegateElement, + instance = this; + + // no suppressDisabledCheck flag, shuffle arguments + if (typeof suppressDisabledCheck !== "boolean") { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // no element argument, shuffle and use this.element + if (!handlers) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + // accept selectors, DOM elements + element = delegateElement = $(element); + this.bindings = this.bindings.add(element); + } + + $.each(handlers, function (event, handler) { + function handlerProxy() { + // allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if (!suppressDisabledCheck && + (instance.options.disabled === true || + $(this).hasClass("ui-state-disabled"))) { + return; + } + return (typeof handler === "string" ? instance[handler] : handler) + .apply(instance, arguments); + } + + // copy the guid so direct unbinding works + if (typeof handler !== "string") { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match(/^(\w+)\s*(.*)$/), + eventName = match[1] + instance.eventNamespace, + selector = match[2]; + if (selector) { + delegateElement.delegate(selector, eventName, handlerProxy); + } else { + element.bind(eventName, handlerProxy); + } + }); + }, + + _off: function (element, eventName) { + eventName = (eventName || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace; + element.unbind(eventName).undelegate(eventName); + }, + + _delay: function (handler, delay) { + function handlerProxy() { + return (typeof handler === "string" ? instance[handler] : handler) + .apply(instance, arguments); + } + + var instance = this; + return setTimeout(handlerProxy, delay || 0); + }, + + _hoverable: function (element) { + this.hoverable = this.hoverable.add(element); + this._on(element, { + mouseenter: function (event) { + $(event.currentTarget).addClass("ui-state-hover"); + }, + mouseleave: function (event) { + $(event.currentTarget).removeClass("ui-state-hover"); + } + }); + }, + + _focusable: function (element) { + this.focusable = this.focusable.add(element); + this._on(element, { + focusin: function (event) { + $(event.currentTarget).addClass("ui-state-focus"); + }, + focusout: function (event) { + $(event.currentTarget).removeClass("ui-state-focus"); + } + }); + }, + + _trigger: function (type, event, data) { + var prop, orig, + callback = this.options[type]; + + data = data || {}; + event = $.Event(event); + event.type = (type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type).toLowerCase(); + // the original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[0]; + + // copy original event properties over to the new event + orig = event.originalEvent; + if (orig) { + for (prop in orig) { + if (!(prop in event)) { + event[prop] = orig[prop]; + } + } + } + + this.element.trigger(event, data); + return !($.isFunction(callback) && + callback.apply(this.element[0], [event].concat(data)) === false || + event.isDefaultPrevented()); + } + }; + + $.each({show: "fadeIn", hide: "fadeOut"}, function (method, defaultEffect) { + $.Widget.prototype["_" + method] = function (element, options, callback) { + if (typeof options === "string") { + options = {effect: options}; + } + var hasOptions, + effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; + if (typeof options === "number") { + options = {duration: options}; + } + hasOptions = !$.isEmptyObject(options); + options.complete = callback; + if (options.delay) { + element.delay(options.delay); + } + if (hasOptions && $.effects && ($.effects.effect[effectName] || $.uiBackCompat !== false && $.effects[effectName])) { + element[method](options); + } else if (effectName !== method && element[effectName]) { + element[effectName](options.duration, options.easing, callback); + } else { + element.queue(function (next) { + $(this)[method](); + if (callback) { + callback.call(element[0]); + } + next(); + }); + } + }; + }); + +// DEPRECATED + if ($.uiBackCompat !== false) { + $.Widget.prototype._getCreateOptions = function () { + return $.metadata && $.metadata.get(this.element[0])[this.widgetName]; + }; + } + +}); diff --git a/lib/web/jquery/ui-modules/accordion.js b/lib/web/jquery/ui-modules/accordion.js index 7da6ace8d896d..de3bf49026fed 100644 --- a/lib/web/jquery/ui-modules/accordion.js +++ b/lib/web/jquery/ui-modules/accordion.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Accordion + * jQuery UI Accordion - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/autocomplete.js b/lib/web/jquery/ui-modules/autocomplete.js index 34f9d1b150c2a..3d70336c08f73 100644 --- a/lib/web/jquery/ui-modules/autocomplete.js +++ b/lib/web/jquery/ui-modules/autocomplete.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Autocomplete + * jQuery UI Autocomplete - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/button.js b/lib/web/jquery/ui-modules/button.js index 36f93d752c021..571fd97d6c9ab 100644 --- a/lib/web/jquery/ui-modules/button.js +++ b/lib/web/jquery/ui-modules/button.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Button + * jQuery UI Button - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/core.js b/lib/web/jquery/ui-modules/core.js index fdd91cd38d30f..ec860f140f262 100644 --- a/lib/web/jquery/ui-modules/core.js +++ b/lib/web/jquery/ui-modules/core.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Core + * jQuery UI Core - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/datepicker.js b/lib/web/jquery/ui-modules/datepicker.js index e3e725d1f3b72..77684e2558748 100644 --- a/lib/web/jquery/ui-modules/datepicker.js +++ b/lib/web/jquery/ui-modules/datepicker.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Datepicker + * jQuery UI Datepicker - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/dialog.js b/lib/web/jquery/ui-modules/dialog.js index bd9a60a8fbe22..295b1b7942e53 100644 --- a/lib/web/jquery/ui-modules/dialog.js +++ b/lib/web/jquery/ui-modules/dialog.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Dialog + * jQuery UI Dialog - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/draggable.js b/lib/web/jquery/ui-modules/draggable.js index b17ca262c5ec2..3e3a588566b45 100644 --- a/lib/web/jquery/ui-modules/draggable.js +++ b/lib/web/jquery/ui-modules/draggable.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Draggable + * jQuery UI Draggable - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/droppable.js b/lib/web/jquery/ui-modules/droppable.js index 4231f31ff4d56..22cba124493cb 100644 --- a/lib/web/jquery/ui-modules/droppable.js +++ b/lib/web/jquery/ui-modules/droppable.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Droppable + * jQuery UI Droppable - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-blind.js b/lib/web/jquery/ui-modules/effect-blind.js index 89b2069b82e1d..afd1a5285cad6 100644 --- a/lib/web/jquery/ui-modules/effect-blind.js +++ b/lib/web/jquery/ui-modules/effect-blind.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Blind + * jQuery UI Effects Blind - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-bounce.js b/lib/web/jquery/ui-modules/effect-bounce.js index 62a0797526602..1902dc1b88f53 100644 --- a/lib/web/jquery/ui-modules/effect-bounce.js +++ b/lib/web/jquery/ui-modules/effect-bounce.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Bounce + * jQuery UI Effects Bounce - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-clip.js b/lib/web/jquery/ui-modules/effect-clip.js index 2463757151a2b..a3651b303f057 100644 --- a/lib/web/jquery/ui-modules/effect-clip.js +++ b/lib/web/jquery/ui-modules/effect-clip.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Clip + * jQuery UI Effects Clip - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-drop.js b/lib/web/jquery/ui-modules/effect-drop.js index 45058916b7594..4b5025a2aa596 100644 --- a/lib/web/jquery/ui-modules/effect-drop.js +++ b/lib/web/jquery/ui-modules/effect-drop.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Drop + * jQuery UI Effects Drop - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-explode.js b/lib/web/jquery/ui-modules/effect-explode.js index e902ae654e2fa..3ec72fbf5a8c8 100644 --- a/lib/web/jquery/ui-modules/effect-explode.js +++ b/lib/web/jquery/ui-modules/effect-explode.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Explode + * jQuery UI Effects Explode - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-fade.js b/lib/web/jquery/ui-modules/effect-fade.js index 71d2ac769abd7..ba289cbeb0180 100644 --- a/lib/web/jquery/ui-modules/effect-fade.js +++ b/lib/web/jquery/ui-modules/effect-fade.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Fade + * jQuery UI Effects Fade - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-fold.js b/lib/web/jquery/ui-modules/effect-fold.js index ece8ade1a02c7..a9816cc53d7d2 100644 --- a/lib/web/jquery/ui-modules/effect-fold.js +++ b/lib/web/jquery/ui-modules/effect-fold.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Fold + * jQuery UI Effects Fold - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-highlight.js b/lib/web/jquery/ui-modules/effect-highlight.js index a852b51efb4a8..caa2596e95d46 100644 --- a/lib/web/jquery/ui-modules/effect-highlight.js +++ b/lib/web/jquery/ui-modules/effect-highlight.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Highlight + * jQuery UI Effects Highlight - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-pulsate.js b/lib/web/jquery/ui-modules/effect-pulsate.js index c8dd9f7847aa1..cd9f202a153ca 100644 --- a/lib/web/jquery/ui-modules/effect-pulsate.js +++ b/lib/web/jquery/ui-modules/effect-pulsate.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Pulsate + * jQuery UI Effects Pulsate - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-scale.js b/lib/web/jquery/ui-modules/effect-scale.js index b3c6675b460b2..18968e7183d68 100644 --- a/lib/web/jquery/ui-modules/effect-scale.js +++ b/lib/web/jquery/ui-modules/effect-scale.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Scale + * jQuery UI Effects Scale - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-shake.js b/lib/web/jquery/ui-modules/effect-shake.js index 8a4d7c21d2be1..21dce9ccc70a2 100644 --- a/lib/web/jquery/ui-modules/effect-shake.js +++ b/lib/web/jquery/ui-modules/effect-shake.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Shake + * jQuery UI Effects Shake - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-slide.js b/lib/web/jquery/ui-modules/effect-slide.js index 0cdf366f3778d..eb81d8716918b 100644 --- a/lib/web/jquery/ui-modules/effect-slide.js +++ b/lib/web/jquery/ui-modules/effect-slide.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Slide + * jQuery UI Effects Slide - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect-transfer.js b/lib/web/jquery/ui-modules/effect-transfer.js index 2328edd79bce6..a3d0af86beb8f 100644 --- a/lib/web/jquery/ui-modules/effect-transfer.js +++ b/lib/web/jquery/ui-modules/effect-transfer.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects Transfer + * jQuery UI Effects Transfer - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/effect.js b/lib/web/jquery/ui-modules/effect.js index f73a076f2a000..5a1e8adf7caeb 100644 --- a/lib/web/jquery/ui-modules/effect.js +++ b/lib/web/jquery/ui-modules/effect.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Effects + * jQuery UI Effects - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/menu.js b/lib/web/jquery/ui-modules/menu.js index b314075c5c4da..6d575b0462a9d 100644 --- a/lib/web/jquery/ui-modules/menu.js +++ b/lib/web/jquery/ui-modules/menu.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Menu + * jQuery UI Menu - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/mouse.js b/lib/web/jquery/ui-modules/mouse.js index a45b92a5a11c7..aefa64a5ea0a7 100644 --- a/lib/web/jquery/ui-modules/mouse.js +++ b/lib/web/jquery/ui-modules/mouse.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Mouse + * jQuery UI Mouse - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors @@ -7,9 +7,6 @@ * http://jquery.org/license * * http://api.jqueryui.com/mouse/ - * - * Depends: - * jquery.ui.widget.js */ define([ diff --git a/lib/web/jquery/ui-modules/position.js b/lib/web/jquery/ui-modules/position.js index 74f8df320d682..eedacebc01748 100644 --- a/lib/web/jquery/ui-modules/position.js +++ b/lib/web/jquery/ui-modules/position.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Position + * jQuery UI Position - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/progressbar.js b/lib/web/jquery/ui-modules/progressbar.js index 0f177d19f6962..f38ece369e873 100644 --- a/lib/web/jquery/ui-modules/progressbar.js +++ b/lib/web/jquery/ui-modules/progressbar.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Progressbar + * jQuery UI Progressbar - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/resizable.js b/lib/web/jquery/ui-modules/resizable.js index 7758e30fee64b..9a27f382eb466 100644 --- a/lib/web/jquery/ui-modules/resizable.js +++ b/lib/web/jquery/ui-modules/resizable.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Resizable + * jQuery UI Resizable - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/selectable.js b/lib/web/jquery/ui-modules/selectable.js index 5ec60733b9b51..67ba54f276246 100644 --- a/lib/web/jquery/ui-modules/selectable.js +++ b/lib/web/jquery/ui-modules/selectable.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Selectable + * jQuery UI Selectable - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/slider.js b/lib/web/jquery/ui-modules/slider.js index 963caf156d8f4..d6828e1c3bf20 100644 --- a/lib/web/jquery/ui-modules/slider.js +++ b/lib/web/jquery/ui-modules/slider.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Slider + * jQuery UI Slider - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/sortable.js b/lib/web/jquery/ui-modules/sortable.js index 0265165974322..a5bab5d846e4d 100644 --- a/lib/web/jquery/ui-modules/sortable.js +++ b/lib/web/jquery/ui-modules/sortable.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Sortable + * jQuery UI Sortable - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/spinner.js b/lib/web/jquery/ui-modules/spinner.js index cfa4cf1e3676e..6412a099f0707 100644 --- a/lib/web/jquery/ui-modules/spinner.js +++ b/lib/web/jquery/ui-modules/spinner.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Spinner + * jQuery UI Spinner - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/tabs.js b/lib/web/jquery/ui-modules/tabs.js index fe1dfbabee554..32c592de959ee 100644 --- a/lib/web/jquery/ui-modules/tabs.js +++ b/lib/web/jquery/ui-modules/tabs.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Tabs @VERSION + * jQuery UI Tabs - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors @@ -7,10 +7,6 @@ * http://jquery.org/license * * http://api.jqueryui.com/tabs/ - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js */ define([ diff --git a/lib/web/jquery/ui-modules/tooltip.js b/lib/web/jquery/ui-modules/tooltip.js index 17aaa49cdbde0..61ec01071432c 100644 --- a/lib/web/jquery/ui-modules/tooltip.js +++ b/lib/web/jquery/ui-modules/tooltip.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Tooltip + * jQuery UI Tooltip - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors diff --git a/lib/web/jquery/ui-modules/widget.js b/lib/web/jquery/ui-modules/widget.js index 91e9565d46f51..6c5dcbaa742e3 100644 --- a/lib/web/jquery/ui-modules/widget.js +++ b/lib/web/jquery/ui-modules/widget.js @@ -1,5 +1,5 @@ /*! - * jQuery UI Widget + * jQuery UI Widget - v1.10.4 * http://jqueryui.com * * Copyright 2014 jQuery Foundation and other contributors @@ -29,6 +29,9 @@ define([ $.widget = function (name, base, prototype) { var fullName, existingConstructor, constructor, basePrototype, + // proxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + proxiedPrototype = {}, namespace = name.split(".")[0]; name = name.split(".")[1]; @@ -75,43 +78,43 @@ define([ // inheriting from basePrototype.options = $.widget.extend({}, basePrototype.options); $.each(prototype, function (prop, value) { - if ($.isFunction(value)) { - prototype[prop] = (function () { - var _super = function () { - return base.prototype[prop].apply(this, arguments); - }, - _superApply = function (args) { - return base.prototype[prop].apply(this, args); - }; - return function () { - var __super = this._super, - __superApply = this._superApply, - returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply(this, arguments); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - })(); + if (!$.isFunction(value)) { + proxiedPrototype[prop] = value; + return; } + proxiedPrototype[prop] = (function () { + var _super = function () { + return base.prototype[prop].apply(this, arguments); + }, + _superApply = function (args) { + return base.prototype[prop].apply(this, args); + }; + return function () { + var __super = this._super, + __superApply = this._superApply, + returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply(this, arguments); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + })(); }); constructor.prototype = $.widget.extend(basePrototype, { // TODO: remove support for widgetEventPrefix // always use the name + a colon as the prefix, e.g., draggable:start // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix : name - }, prototype, { + widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name + }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, - // TODO remove widgetBaseClass, see #8155 - widgetBaseClass: fullName, widgetFullName: fullName }); @@ -238,9 +241,6 @@ define([ this.focusable = $(); if (element !== this) { - // 1.9 BC for #7810 - // TODO remove dual storage - $.data(element, this.widgetName, this); $.data(element, this.widgetFullName, this); this._on(true, this.element, { remove: function (event) { @@ -320,12 +320,12 @@ define([ curOption = curOption[parts[i]]; } key = parts.pop(); - if (value === undefined) { + if (arguments.length === 1) { return curOption[key] === undefined ? null : curOption[key]; } curOption[key] = value; } else { - if (value === undefined) { + if (arguments.length === 1) { return this.options[key] === undefined ? null : this.options[key]; } options[key] = value; @@ -508,7 +508,7 @@ define([ if (options.delay) { element.delay(options.delay); } - if (hasOptions && $.effects && ($.effects.effect[effectName] || $.uiBackCompat !== false && $.effects[effectName])) { + if (hasOptions && $.effects && $.effects.effect[effectName]) { element[method](options); } else if (effectName !== method && element[effectName]) { element[effectName](options.duration, options.easing, callback); @@ -524,11 +524,4 @@ define([ }; }); -// DEPRECATED - if ($.uiBackCompat !== false) { - $.Widget.prototype._getCreateOptions = function () { - return $.metadata && $.metadata.get(this.element[0])[this.widgetName]; - }; - } - });