API Docs for: 1.0.0
Show:

File: Resources/public/js/views/ez-usermenuitemfireeventview.js

/*
 * Copyright (C) eZ Systems AS. All rights reserved.
 * For full copyright and license information view LICENSE file distributed with this source code.
 */
YUI.add('ez-usermenuitemfireeventview', function (Y) {
    "use strict";
    /**
     * Provides the user menu item fire event view
     *
     * @module ez-usermenuitemfire event view
     */
    Y.namespace('eZ');

    /**
     * The user menu item fire event view. 
     *
     * @namespace eZ
     * @class UserMenuItemFireEventView
     * @constructor
     * @extends eZ.UserMenuItemView
     */
    Y.eZ.UserMenuItemFireEventView = Y.Base.create('UserMenuItemFireEventView', Y.eZ.UserMenuItemView, [], {
        events: {
            '.ez-view-usermenuitemfireeventview': {
                'tap': '_fireEvent'
            }
        },

        initializer: function () {
            var dataEvent = 'data-event-name="' + this.get('eventName') + '"';

            this.containerTemplate = '<li class="' + this._generateViewClassName(this._getName()) + '" ' + dataEvent + '/>';

            this.on('addedToUserMenu', this._addUserMenuHideOnEvent, this);
        },

        /**
        * Renders the item view
        *
        * @method render
        * @return {eZ.UserMenuItemFireEventView} the view itself
        */
        render: function () {
            this.get('container').setHTML(this.template({title: this.get('title')}));
            return this;
        },

        /**
         * Adds the event listener to hide the user menu
         *
         * @method _addUserMenuHideOnEvent
         * @protected
         * @param event {Object} event facade
         */
        _addUserMenuHideOnEvent: function (event) {
            this.on(this.get('eventName'), Y.bind(event.userMenu.hide, event.userMenu));
        },

        /**
         * Tap event handler on the user menu item
         *
         * @method _fireEvent
         * @protected
         * @param event {Object} tap event facade
         */
        _fireEvent: function (event) {
            event.preventDefault();
            this.fire(this.get('eventName'), {
                originalEvent: event
            });
        }
    }, {
        ATTRS: {
            /**
             * The event name to fire
             *
             * @attribute eventName
             * @type {String}
             */
            eventName: {}
        }
    });
});