06c1e33a270f80929bf9b9dde81f4061d1949fffDerek GathrightYUI.add('button-plugin', function(Y) {
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright/**
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright* A Button Plugin
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright*
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright* @module button-plugin
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright* @since 3.5.0
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright*/
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright/**
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright* @class ButtonPlugin
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright* @param config {Object} Configuration object
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright* @constructor
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright*/
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathrightfunction ButtonPlugin(config) {
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright ButtonPlugin.superclass.constructor.apply(this, arguments);
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright}
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek GathrightY.extend(ButtonPlugin, Y.ButtonCore, {
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright /**
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @method _afterNodeGet
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @param name {string}
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @private
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright */
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright _afterNodeGet: function (name) {
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright // TODO: point to method (_uiSetLabel, etc) instead of getter/setter
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright var ATTRS = this.constructor.ATTRS,
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright fn = ATTRS[name] && ATTRS[name].getter && this[ATTRS[name].getter];
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright if (fn) {
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright return new Y.Do.AlterReturn('get ' + name, fn.call(this));
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright }
d35783d338067103badd5ebbb57676c129f5e563Eric Ferraiuolo },
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright /**
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @method _afterNodeSet
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @param name {String}
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @param val {String}
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @private
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright */
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright _afterNodeSet: function (name, val) {
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright var ATTRS = this.constructor.ATTRS,
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright fn = ATTRS[name] && ATTRS[name].setter && this[ATTRS[name].setter];
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright if (fn) {
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright fn.call(this, val);
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright }
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright },
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright /**
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @method _initNode
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @param config {Object}
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @private
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright */
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright _initNode: function(config) {
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright var node = config.host;
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright this._host = node;
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright Y.Do.after(this._afterNodeGet, node, 'get', this);
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright Y.Do.after(this._afterNodeSet, node, 'set', this);
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright },
d35783d338067103badd5ebbb57676c129f5e563Eric Ferraiuolo
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright /**
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright * @method destroy
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @private
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright */
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright destroy: function(){
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright // Nothing to do, but things are happier with it here
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright }
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright}, {
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright /**
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * Attribute configuration.
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright *
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @property ATTRS
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @type {Object}
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @private
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @static
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright */
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright ATTRS: Y.merge(Y.ButtonCore.ATTRS),
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright /**
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * Name of this component.
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright *
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @property NAME
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @type String
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @static
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright */
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright NAME: 'buttonPlugin',
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright /**
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * Namespace of this component.
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright *
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @property NS
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @type String
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright * @static
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright */
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright NS: 'button'
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright});
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright/**
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright* @method createNode
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright* @description A factory that plugs a Y.Node instance with Y.Plugin.Button
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright* @param node {Object}
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright* @param config {Object}
acbf78fbb0e5ea3c5353314fcbaa6b7e3b82ad7cDerek Gathright* @returns {Object} A plugged Y.Node instance
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright* @public
d0f9ee99aee2d631a24062cd95d30c1d6955fc0fDerek Gathright*/
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek GathrightButtonPlugin.createNode = function(node, config) {
c857ea22eae75f7e285a2c5e626131e7be23e12cEric Ferraiuolo var template;
d35783d338067103badd5ebbb57676c129f5e563Eric Ferraiuolo
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright if (node && !config) {
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright if (! (node.nodeType || node.getDOMNode || typeof node == 'string')) {
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright config = node;
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright node = config.srcNode;
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright }
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright }
c857ea22eae75f7e285a2c5e626131e7be23e12cEric Ferraiuolo
c857ea22eae75f7e285a2c5e626131e7be23e12cEric Ferraiuolo config = config || {};
c857ea22eae75f7e285a2c5e626131e7be23e12cEric Ferraiuolo template = config.template || Y.Plugin.Button.prototype.TEMPLATE;
c857ea22eae75f7e285a2c5e626131e7be23e12cEric Ferraiuolo node = node || config.srcNode || Y.DOM.create(template);
c857ea22eae75f7e285a2c5e626131e7be23e12cEric Ferraiuolo
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright return Y.one(node).plug(Y.Plugin.Button, config);
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright};
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright
65aeef931a8f8abce78e6f0fafec90308ceaec34Derek GathrightY.namespace('Plugin').Button = ButtonPlugin;
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright
06c1e33a270f80929bf9b9dde81f4061d1949fffDerek Gathright
d35783d338067103badd5ebbb57676c129f5e563Eric Ferraiuolo}, '@VERSION@' ,{requires:['button-core', 'cssbutton', 'node-pluginhost']});