define('jira/ajs/list/list-with-messages', ['jira/ajs/list/list', 'jira/ajs/list/message-descriptor', 'jira/util/strings', 'jquery'], function (List, MessageDescriptor, strings, $) { 'use strict'; /** * AJS.List that can contain {@see MessageDescriptor}s as well * * @class ListWithMessages * @extends List */ var ListWithMessages = List.extend({ _filterOption: function _filterOption(item, keywordsRegex, labelRegex) { if (item instanceof MessageDescriptor) { // Always display messages return item; } else { return this._super(item, keywordsRegex, labelRegex); } }, _computeVisibleItems: function _computeVisibleItems() { return this.items.not(".hidden, .disabled, .nofocus"); }, _generateOption: function _generateOption(item, query, labelRegex) { if (item instanceof MessageDescriptor) { return this._render(item.useAUI() ? "AUImessage" : "message", item); } else { return this._super(item, query, labelRegex); } } }); /** * Renders a regular message * @param descriptor {MessageDescriptor} Descriptor to render * @return {*} Enhanced DOMElement that represents the descriptor */ ListWithMessages.prototype._renders.message = function (descriptor) { //adding the label as a class for testing. var rawItemId = descriptor.messageID() || descriptor.fieldText() || descriptor.label(); var itemId = strings.escapeHtml($.trim(rawItemId).toLowerCase()).replace(/[\s\.]+/g, "-"); var listElem = $('
  • ').addClass('aui-list-item-li-' + itemId); var messageElem = $(''); //If no styleClass, use 'generic' as default if (descriptor.styleClass()) { messageElem.addClass(descriptor.styleClass()); } //Add the text messageElem.text(descriptor.label()); //Assemble the html and return it listElem.append(messageElem).data("descriptor", descriptor); return listElem; }; /** * Renders an AUI message * @param descriptor {MessageDescriptor} Descriptor to render * @return {*} Enhanced DOMElement that represents the descriptor */ ListWithMessages.prototype._renders.AUImessage = function (descriptor) { //adding the label as a class for testing. var rawItemId = descriptor.messageID() || descriptor.fieldText() || descriptor.label(); var itemId = strings.escapeHtml($.trim(rawItemId).toLowerCase()).replace(/[\s\.]+/g, "-"); var listElem = $('
  • ').addClass('aui-list-item-li-' + itemId); var messageElem = $('
    '); var iconElem = $(''); var contentElem = $('

    '); //If no styleClass, use 'generic' as default if (descriptor.styleClass()) { messageElem.addClass(descriptor.styleClass()); iconElem.addClass("icon-" + descriptor.styleClass()); } else { iconElem.addClass("icon-generic"); } //Add the text contentElem.text(descriptor.label()); //Assemble the html and return it messageElem.append(iconElem).append(contentElem); listElem.append(messageElem).data("descriptor", descriptor); return listElem; }; return ListWithMessages; }); AJS.namespace('AJS.ListWithMessages', null, require('jira/ajs/list/list-with-messages'));