@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
147 lines (140 loc) • 3.77 kB
JavaScript
/*!
* OpenUI5
* (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
sap.ui.define([
'sap/ui/core/Core',
'./ColumnPopoverItem',
'sap/m/ToggleButton',
'sap/m/Button',
'sap/m/StandardListItem',
'sap/m/List'],
function(
Core,
ColumnPopoverItem,
ToggleButton,
Button,
StandardListItem,
List) {
"use strict";
/**
* Constructor for the element.
* @param {string} [sId] id for the new element.
* @param {string} [mSettings] initial settings for the new element.
*
* @class
* The <code>ColumnPopoverSortItem</code> provides the capabilities to perform sorting in ColumnHeaderPopover.
* @extends sap.m.ColumnPopoverItem
*
* @author SAP SE
* @version 1.117.4
*
* @constructor
* @since 1.66
* @private
* @alias sap.m.ColumnPopoverSortItem
*/
var ColumnPopoverSortItem = ColumnPopoverItem.extend("sap.m.ColumnPopoverSortItem", /** @lends sap.m.ColumnPopoverSortItem.prototype */
{
metadata: {
library: "sap.m",
properties: {
/**
* check it later with Ux - it is not used now.
*/
label: {type: "string", group: "Misc", defaultValue: null}
},
events: {
/**
* Sort event
*/
sort: {
parameters: {
/**
* sort property
*/
property: {type: "string"}
}
}
},
aggregations: {
items: {type: "sap.ui.core.Item", multiple: true, singularName: "item", bindable: true}
}
}
});
ColumnPopoverSortItem.prototype._createButton = function(sId, oCHPopover) {
var oBundle = Core.getLibraryResourceBundle("sap.m"),
sSortText = oBundle.getText("COLUMNHEADERPOPOVER_SORT_BUTTON"),
aSortItems = this.getItems(),
that = this;
if (aSortItems.length > 1) {
var oPopover = oCHPopover.getAggregation("_popover");
var oList = new List();
for (var i = 0; i < aSortItems.length; i++) {
var oListItem = new StandardListItem({
title: aSortItems[i].getText(),
type: "Active"
});
oList.addItem(oListItem);
oListItem.data("key", aSortItems[i].getKey());
}
oList.attachEvent("itemPress", function(oEvent) {
// close the popover first to prevent focus lost
oPopover.close();
var oListItem = oEvent.getParameter("listItem");
that.fireSort({
property: oListItem.data("key")
});
});
oList.setVisible(false);
oPopover.addContent(oList);
return new ToggleButton(sId, {
icon: "sap-icon://sort",
type: "Transparent",
tooltip: sSortText,
visible: this.getVisible(),
press: function() {
// between two custom items
if (oCHPopover._oShownCustomContent) {
oCHPopover._oShownCustomContent.setVisible(false);
}
if (this.getPressed()) {
// set other buttons unpressed
oCHPopover._cleanSelection(this);
if (oList) {
oList.setVisible(true);
oCHPopover._oShownCustomContent = oList;
}
} else if (oList) {
oList.setVisible(false);
oCHPopover._oShownCustomContent = null;
}
}
});
} else {
return new Button(sId, {
icon: "sap-icon://sort",
type: "Transparent",
tooltip: sSortText,
visible: this.getVisible(),
press: function() {
var oPopover = oCHPopover.getAggregation("_popover");
if (oCHPopover._oShownCustomContent) {
oCHPopover._oShownCustomContent.setVisible(false);
oCHPopover._oShownCustomContent = null;
// set other buttons unpressed
oCHPopover._cleanSelection(this);
}
// close the popover first to prevent focus lost
oPopover.close();
// fire sort event
that.fireSort({
property: aSortItems[0] ? aSortItems[0].getKey() : null
});
}
});
}
};
return ColumnPopoverSortItem;
});