UNPKG

@openui5/sap.m

Version:

OpenUI5 UI Library sap.m

160 lines (140 loc) 5.72 kB
/*! * OpenUI5 * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ // Provides control sap.m.ViewSettingsFilterItem. sap.ui.define(['./ViewSettingsItem', './library'], function(ViewSettingsItem, library) { "use strict"; /** * Constructor for a new ViewSettingsFilterItem. * * @param {string} [sId] ID for the new control, generated automatically if no ID is given * @param {object} [mSettings] Initial settings for the new control * * @class * A ViewSettingsFilterItem control is used for modelling filter behaviour in the ViewSettingsDialog. * It is derived from a core Item, but does not support the base class properties like textDirection and enabled. * Setting these properties will not have any effects. * @extends sap.m.ViewSettingsItem * * @author SAP SE * @version 1.117.4 * * @constructor * @public * @since 1.16 * @alias sap.m.ViewSettingsFilterItem */ var ViewSettingsFilterItem = ViewSettingsItem.extend("sap.m.ViewSettingsFilterItem", /** @lends sap.m.ViewSettingsFilterItem.prototype */ { metadata : { library : "sap.m", properties : { /** * If set to (true), multi selection will be allowed for the items aggregation. */ multiSelect : {type : "boolean", group : "Behavior", defaultValue : true} }, aggregations : { /** * Items with key and value that are logically grouped under this filter item. * They are used to display filter details in the ViewSettingsDialog. */ items : {type : "sap.m.ViewSettingsItem", multiple : true, singularName : "item", bindable: "bindable"} }, events : { /** * Let the outside world know that the filter detail aggregation was changed. * @private */ filterDetailItemsAggregationChange: {} } }}); /** * Attach events and fire events about the added aggregation. * @param {object} oObject Instance to which to attach events * @private */ ViewSettingsFilterItem.prototype._handleNewAggregationEvents = function (oObject) { // Attach 'itemPropertyChanged' handler, that will re-initiate (specific) dialog content oObject.attachEvent('itemPropertyChanged', function (oEvent) { this.fireItemPropertyChanged({ changedItem : oEvent.getParameter('changedItem'), propertyKey : oEvent.getParameter('propertyKey'), propertyValue : oEvent.getParameter('propertyValue') }); }.bind(this)); this.fireFilterDetailItemsAggregationChange({ item: oObject }); }; /** * Override the method in order to attach an event handler responsible for propagating item property changes. * @override * @param {string} sAggregationName Name of the added aggregation * @param {object} oObject Intance that is going to be added * @param {boolean} bSuppressInvalidate Flag indicating whether invalidation should be supressed * @returns {this} This instance for chaining */ ViewSettingsFilterItem.prototype.addAggregation = function (sAggregationName, oObject, bSuppressInvalidate) { ViewSettingsItem.prototype.addAggregation.apply(this, arguments); this._handleNewAggregationEvents(oObject); return this; }; /** * Inserts an entity to the aggregation named <code>sAggregationName</code> at position <code>iIndex</code>. * * @param {string} sAggregationName The name of the aggregation * @param {any} oObject The value of the aggregation to be inserted * @param {int} iIndex The index of the position of the entity to be inserted * @param {boolean} bSuppressInvalidate Whether to suppress invalidation * @returns {this} <code>this</code> pointer for chaining * @override */ ViewSettingsFilterItem.prototype.insertAggregation = function(sAggregationName, oObject, iIndex, bSuppressInvalidate) { ViewSettingsItem.prototype.insertAggregation.apply(this, arguments); this._handleNewAggregationEvents(oObject); return this; }; /** * Removes an entity from the aggregation named <code>sAggregationName</code>. * * @param {string} sAggregationName The name of the aggregation * @param {any} oObject The value of aggregation to be removed * @param {boolean} bSuppressInvalidate Whether to suppress invalidation * @returns {this} <code>this</code> pointer for chaining * @override */ ViewSettingsFilterItem.prototype.removeAggregation = function(sAggregationName, oObject, bSuppressInvalidate) { ViewSettingsItem.prototype.removeAggregation.apply(this, arguments); this.fireFilterDetailItemsAggregationChange(); return this; }; /** * Removes all objects from the aggregation named <code>sAggregationName</code>. * * @param {string} sAggregationName The name of aggregation * @param {boolean} bSuppressInvalidate Whether to suppress invalidation * @returns {this} <code>this</code> pointer for chaining * @override */ ViewSettingsFilterItem.prototype.removeAllAggregation = function(sAggregationName, bSuppressInvalidate) { ViewSettingsItem.prototype.removeAllAggregation.apply(this, arguments); this.fireFilterDetailItemsAggregationChange(); return this; }; /** * Destroys all the entities in the aggregation named <code>sAggregationName</code>. * * @param {string} sAggregationName The name of aggregation * @param {boolean} bSuppressInvalidate Whether to suppress invalidation * @returns {this} <code>this</code> pointer for chaining * @override */ ViewSettingsFilterItem.prototype.destroyAggregation = function(sAggregationName, bSuppressInvalidate) { ViewSettingsItem.prototype.destroyAggregation.apply(this, arguments); this.fireFilterDetailItemsAggregationChange(); return this; }; return ViewSettingsFilterItem; });