declare module "sap/esh/search/ui/SearchCompositeControl" {
/*!
* SAPUI5
* Copyright (c) 2025 SAP SE or an SAP affiliate company. All rights reserved.
*/
import ErrorHandler from "sap/esh/search/ui/error/ErrorHandler";
import SearchFieldGroup from "sap/esh/search/ui/controls/searchfieldgroup/SearchFieldGroup";
import SearchModel from "sap/esh/search/ui/SearchModel";
import SearchLayoutResponsive from "sap/esh/search/ui/controls/SearchLayoutResponsive";
import SearchResultContainer from "sap/esh/search/ui/controls/resultview/SearchResultContainer";
import SearchResultTable from "sap/esh/search/ui/controls/resultview/SearchResultTable";
import SearchResultList from "sap/esh/search/ui/controls/resultview/SearchResultList";
import SearchResultGrid from "sap/esh/search/ui/controls/resultview/SearchResultGrid";
import SearchSpreadsheetExport from "sap/esh/search/ui/controls/SearchSpreadsheetExport";
import { SearchFocusHandler } from "sap/esh/search/ui/SearchHelper";
import SearchFilterBar from "sap/esh/search/ui/controls/SearchFilterBar";
import SearchNlqExplainBar from "sap/esh/search/ui/controls/SearchNlqExplainBar";
import Control from "sap/ui/core/Control";
import InvisibleText from "sap/ui/core/InvisibleText";
import VerticalLayout from "sap/ui/layout/VerticalLayout";
import Button from "sap/m/Button";
import SegmentedButton from "sap/m/SegmentedButton";
import Bar from "sap/m/Bar";
import IconTabBar from "sap/m/IconTabBar";
import OverflowToolbar from "sap/m/OverflowToolbar";
import CustomListItem from "sap/m/CustomListItem";
import FlexBox from "sap/m/FlexBox";
import ViewSettingsDialog from "sap/m/ViewSettingsDialog";
import MessagePopover from "sap/m/MessagePopover";
import VBox from "sap/m/VBox";
import { ComplexCondition } from "sap/esh/search/ui/sinaNexTS/sina/ComplexCondition";
import { Filter } from "sap/esh/search/ui/sinaNexTS/sina/Filter";
import SearchConfigurationSettings from "sap/esh/search/ui/SearchConfigurationSettings";
import DragDropBase from "sap/ui/core/dnd/DragDropBase";
import { IUiEventParametersResultViewSelectionChanged, IUiEventParametersResultViewTypeChanged, IUiEventParametersShowResultDetail, IUiEventParametersBasketChanged, IUiEventParametersPublicModelChanged } from "./UIEvents";
import { NavigationTarget } from "sap/esh/search/ui/sinaNexTS/sina/NavigationTarget";
import { Value } from "sap/esh/search/ui/sinaNexTS/sina/types";
import { DataSource } from "sap/esh/search/ui/sinaNexTS/sina/DataSource";
import { ResultSet } from "sap/esh/search/ui/ResultSetApi";
import EventConsumer from "sap/esh/search/ui/eventlogging/EventConsumer";
import SearchCompositeControlDragDropConfig from "sap/esh/search/ui/SearchCompositeControlDragDropConfig";
import PublicSearchModel from "sap/esh/search/ui/PublicSearchModel";
import Model from "sap/ui/model/Model";
import ToolbarAssembler from "sap/esh/search/ui/compositecontrol/ToolbarAssembler";
import ResultViewsAssembler from "sap/esh/search/ui/compositecontrol/ResultViewsAssembler";
import SearchPageAssembler from "sap/esh/search/ui/compositecontrol/SearchPageAssembler";
import SearchConfiguration from "sap/esh/search/ui/SearchConfiguration";
import SearchSelectionBar from "sap/esh/search/ui/controls/SearchSelectionBar";
import FixFlex from "sap/ui/layout/FixFlex";
import { PublicSina } from "sap/esh/search/ui/sinaNexTS/sina/PublicSina";
import { Condition } from "sap/esh/search/ui/sinaNexTS/sina/Condition";
import OverflowToolbarToggleButton from "sap/m/OverflowToolbarToggleButton";
import { SelectionMode } from "sap/esh/search/ui/SelectionMode";
import OverflowToolbarButton from "sap/m/OverflowToolbarButton";
import Title from "sap/m/Title";
import SearchBasketSapMList from "sap/esh/search/ui/controls/basket/SearchBasketSapMList";
import SearchBasketSapMTable from "sap/esh/search/ui/controls/basket/SearchBasketSapMTable";
import SearchBasketSapUiTable from "sap/esh/search/ui/controls/basket/SearchBasketSapUiTable";
import SearchBasketModel, { SearchBasketApi } from "sap/esh/search/ui/controls/basket/SearchBasketModel";
/**
* Search control (input for search terms, suggestions, facets, result views "list", "table", "grid") powered by AI
*
*/
/**
* Constructs a new SearchCompositeControl to interact with SAP Enterprise Search Services.
*
* @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
*
* This is the SAPUI5 composite control by the Enterprise Search Team which helps to make full use of the Enterprise Search Engine
* features built into ABAP and HANA (including natural language processing).
* It includes a search input box with a suggestion dropdown, a result view which can have different visualisation, including tiles, list and table, filtering facets and more.
* This control is ready to use with enterprise search backend services but also allows deep extension to match requirements of adopting applications.
*
* @extends sap.ui.layout.VerticalLayout
*
* @author SAP SE
* @version 1.150.1
*
* @see https://help.sap.com/viewer/691cb949c1034198800afde3e5be6570/2.0.08/en-US/ce86ef2fd97610149eaaaa0244ca4d36.html SAP HANA Search Developer Guide
* @see https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/90b263323d0a4976bcda415e6bd20ea4/d93d53ef27074bbf9a4849c4a4c3e360.html Enterprise Search in SAP S/4HANA
*
*
* @constructor
* @public
* @alias sap.esh.search.ui.SearchCompositeControl
* @since 1.93.0
* @name sap.esh.search.ui.SearchCompositeControl
*
*/
/**
* @namespace sap.esh.search.ui
*/
export default class SearchCompositeControl extends VerticalLayout {
static readonly metadata: {
library: string;
dnd: {
draggable: boolean;
droppable: boolean;
};
properties: {
/**
* An additional CSS class to add to this control
* @since 1.93.0
*/
cssClass: {
type: string;
};
/**
* Defines the initial search term for the search input.
* @since 1.93.0
*/
searchTerm: {
type: string;
group: string;
defaultValue: string;
};
/**
* Defines if the search composite control will send a search request directly after loading, using given search term, data source and filter root condition settings.
* @since 1.93.0
*/
searchOnStart: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Defines the filter root condition of a filter tree which shall be applied to the search request.
* This control only allows filter trees which have a the following structure:
* complex condition (root level)
* \
* complex condition (attribute level)
* \
* simple condition (attribute value level)
* Filter root conditions which do not follow this structure won't be accepted and an error will be thrown.
* Please see the below for a more in-depth example.
*
* @since 1.98.0
* @example A simple use case for filter conditions
* sap.ui.require(
* [
* // Adjust the path to the .js files accordingly!
* "sap/esh/search/ui/sinaNexTS/sina/LogicalOperator",
* "sap/esh/search/ui/sinaNexTS/sina/ComparisonOperator",
* "sap/esh/search/ui/sinaNexTS/sina/ComplexCondition",
* "sap/esh/search/ui/sinaNexTS/sina/SimpleCondition",
* ], function (
* LogicalOperatorModule,
* ComparisonOperatorModule,
* ComplexConditionModule,
* SimpleConditionModule
* ) {
* ("use strict");
*
* // Root condition must always be of type ComplexCondition!
* const rootCondition = new ComplexConditionModule.ComplexCondition({
* operator: LogicalOperatorModule.LogicalOperator.And,
* });
*
* // Conditions of root condition must always be of type ComplexCondition!
* // Create one of those for each attribute.
* // This condition will hold all values for attribute 'FOLKLORIST':
* const complexChildCondition = new ComplexConditionModule.ComplexCondition({
* operator: LogicalOperatorModule.LogicalOperator.Or,
* });
*
* // Conditions of complexChildCondition have to be simple conditions!
* // This filter specfies the value of the attributes.
* // The result is an attribute filter like 'FOLKLORIST' = 'Douglas Milford':
* const simpleGrandChildCondition = new SimpleConditionModule.SimpleCondition({
* operator: ComparisonOperatorModule.ComparisonOperator.Eq, // results should be equal to the filter value
* attribute: "FOLKLORIST", // example: name of the attribute
* value: "Douglas Milford", // example: value of the filter
* });
* complexChildCondition.addCondition(simpleGrandChildCondition); // Add the conditions to the condition tree
* rootCondition.addCondition(complexChildCondition);
*
* // The filter tree now looks like this:
* // rootCondition
* // / And \
* // complexChildCondition
* // / Or
* // simpleGrandChildCondition ('FOLKLORIST' Eq 'Douglas Milford')
* // Additional complex child conditions would be linked by an "And" operator, additional simple attribute
* // filter conditions will be linked by an "Or":
*
* // If you would like to apply an additional filter to the 'FOLKLORIST' attribute you can do that, too:
* const simpleGrandChildCondition2 = new SimpleConditionModule.SimpleCondition({
* operator: ComparisonOperatorModule.ComparisonOperator.Eq, // results should be equal to the filter value
* attribute: "FOLKLORIST", // example: name of the attribute
* value: "Cynthia MacDonald", // example: value of the filter
* });
*
* complexChildCondition.addCondition(simpleGrandChildCondition2);
*
* // The filter tree now looks like this:
* // rootCondition
* // / And
* // complexChildCondition
* // / Or \
* // simpleGrandChildCondition simpleGrandChildCondition2
*
* // create a new search ui:
* const searchUI = new SearchCompositeControl({
* filterRootCondition: rootCondition,
* });
*
* // or if it already exists:
* // const searchUI = Element.getElementById("eshCompGenId_0");
* // searchUI.setFilterRootCondition(rootCondition);
* });
*/
filterRootCondition: {
type: string;
group: string;
};
/**
* Configuration for the Enterprise Search Client API.
* @since 1.93.0
*/
sinaConfiguration: {
type: string;
group: string;
};
/**
* The id of the data source in which it will search right after initialization.
* @since 1.98.0
*/
dataSource: {
type: string;
group: string;
};
/**
* Data source id which is set when the UI is loaded and cannot be changed at run time.
* The following UI parts will be hidden:
* - data source select (dropdown)
* - data source tab bar
* - data source facet (facet panel)
* - data source name/link on result list (header section of item)
* @since 1.121.0
*/
exclusiveDataSource: {
type: string;
group: string;
};
/**
* Defines selectable search result view types.
* The value can be set/get in attach event "searchFinished".
* Case 1: Search in Apps: result is displayed in a mandatory view type ["appSearchResult"], and it is not switchable.
* Case 2: Search in All or other Category: result is switchable between different view types.
* Possible values for the array items are "searchResultList" and "searchResultGrid".
* Case 3, Search in Business Object: result is switchable between different view types.
* Possible values for the array items are "searchResultList", "searchResultTable" and "searchResultGrid".
* Note: The value of resultViewTypes and resultViewType must be compatible to each other.
*
* After the result view type has been changed, the event 'resultViewTypeChanged' is fired.
*
* @since 1.98.0
*/
resultViewTypes: {
type: string;
group: string;
defaultValue: string[];
};
/**
* Defines active search result view type.
* The value can be set/get in attach event "searchFinished", and it must be contained in resultViewTypes.
* Case 1, Search in Apps: result is displayed in a mandatory view type "appSearchResult".
* Case 2.1, Search in All or other Category (configuration.isUshell !== true): result is switchable between different view types.
* Possible value is "searchResultList", or "searchResultGrid".
* Case 2.2, Search in All or other Category (configuration.isUshell === true): result is displayed in a mandatory view type "searchResultList".
* Case 3, Search in Business Object: result is switchable between different view types.
* Possible value is "searchResultList", "searchResultTable" or "searchResultGrid".
* Note: The value of resultViewTypes and resultViewType must be compatible to each other.
*
* After the result view type has been changed, the event 'resultViewTypeChanged' is fired.
*
* @since 1.98.0
*/
resultViewType: {
type: string;
group: string;
defaultValue: string;
};
/**
* Defines a pair of search result view settings.
* The value is an object of properties resultViewTypes and resultViewType.
* An example: {resultViewTypes: ["searchResultList", "searchResultTable"], resultViewType: "searchResultList"}
* Find more detail in the definition of each child property.
* The value can be set/get in attached event "searchFinished".
* Function setResultViewSettings prevents incompatibility of sequential execution of functions setResultViewTypes and setResultViewType.
* Note: The value of resultViewTypes and resultViewType must be compatible to each other.
*
* After the result view type has been changed, the event 'resultViewTypeChanged' is fired.
*
* @since 1.100.0
*/
resultViewSettings: {
settings: {
resultViewTypes: string;
resultViewType: string;
};
group: string;
defaultValue: {
resultViewTypes: string[];
resultViewType: string;
};
};
/**
* The result views are displayed in a master-detail mode.
* The event showResultDetail is fired whenever the detail button/indicator is clicked.
*
* @since 1.140.0
*/
resultviewMasterDetailMode: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Set default number of visible columns of search result table.
* This is important when adding custom columns by means of formatters.
* @since 1.142.0
*/
searchResultTableMaxNumberOfInitiallyVisibleColumns: {
type: string;
group: string;
defaultValue: number;
};
/**
* Function callback for formatting the datasource tabstrips in the top toolbar.
* To the callback function a list of datasources is passed. The callback functions return a modified list of datasources
* to be displayed in the tabstrips.
*
* @since 1.103.0
*/
tabStripsFormatter: {
type: string;
group: string;
};
/**
* Activates the folder mode. Precondition for folder mode is
* 1) Search model:
* In the search model for the current datasource a hierarchy attribute (representing the folders) is defined
* 1.1) the hierarchy attribute is annotated with displayType=TREE and for the hierarchy there is a helper
* connector representing the hierarchy or
* 1.2) the current datasource is the helper datasource representing the folder hierarchy. The hierarchy attribute
* is annotated with displayType=FLAT
* 2) Search query:
* The folder mode is only active in case the search query has an empty search term and no filter conditions
* (except the hierarchy attribute) are set.
*
* In folder mode and in case a folder filter is set the result view only shows direct children of a folder.
* In contrast the counts in the facets are calculated by counting direct and not direct children.
* In case the folder mode is not active the UI uses the search mode: The result list shows direct and
* not direct children of a folder.
* @since 1.106.0
*/
folderMode: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* In case folderMode is set to true this boolean indicates whether for the initial search the folder mode is enabled.
* @since 1.114.0
*/
folderModeForInitialSearch: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* In case folder mode is active:
* Automatically switch result view type to list in search mode and to table in folder mode.
* @since 1.106.0
*/
autoAdjustResultViewTypeInFolderMode: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Enables the query language for the hana_odata provider.
* With query language it is possible for the end user to enter complex search
* queries with logical operators.
* @since 1.107.0
*/
enableQueryLanguage: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Relevant for SAP partners and SAP, the "Application Component" you expect customers to create incidents.
* @since 1.108.0
*/
applicationComponent: {
type: string;
group: string;
defaultValue: string;
};
/**
* Display a splitter bar to resize the left hand panel, containing all facets and filter criteria.
* @since 1.108.0
*/
facetPanelResizable: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Default size (percent) of the left hand panel, containing all facets and filter criteria. If "facetPanelResizable" is true, the width of the facet panel can be changed by the user.
* @since 1.108.0
*/
facetPanelWidthInPercent: {
type: string;
group: string;
defaultValue: number;
};
/**
* A boolean which indicates whether the basket panel with selected items is initially opened or closed.
* This affects only the initial state of the basket panel.
* @since 1.146.0
*/
basketPanelVisibility: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Display a splitter bar to resize the right hand panel, containing the basket with selected items.
* @since 1.142.0
*/
basketPanelResizable: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Default size (percent) of the right hand panel, containing the basket with selected items. If "basketPanelResizable" is true, the width of the basket panel can be changed by the user.
* @since 1.142.0
* @default 100
*/
basketPanelWidthInPercent: {
type: string;
group: string;
defaultValue: number;
};
/**
* Whenever a search has no results, a 'No Results Screen' is displayed. You can provide a custom control to be more specific and add some hints, links, buttons or other content.
* @since 1.94.0
*/
getCustomNoResultScreen: {
type: string;
group: string;
};
/**
* Define your own rendering of result items (we recommend to use 'sap.m.GridContainer' and 'sap.m.GenericTile').
* @since 1.93.0
*/
customGridView: {
type: string;
group: string;
};
/**
* Define a custom toolbar.
* @since 1.93.0
*/
getCustomToolbar: {
type: string;
group: string;
};
/**
* A callback which returns customized "label" for placeholder text of search box in case there is no search term.
* The placeholder text (en) will be "Search In: ".
*/
getSearchInputPlaceholderLabel: {
type: string;
group: string;
};
/**
* Location of the search input box.
* The search input can be placed on the top of the control (SearchCompositeControl) or as part of the search bar.
* By default the location is at the top, values are "Top" and "Searchbar".
* @since 1.140.0
*/
searchInputLocation: {
type: string;
group: string;
defaultValue: string;
};
/**
* Shall the window title be overwritten by this control?
* If true, the control will set the current search condition as window title.
* If false, it will not set or update the window title.
* @since 1.93.0
*/
overwriteBrowserTitle: {
type: string;
group: string;
};
/**
* Data source id which is set when the UI is loaded or filter is reset.
* If dataSource is also set, dataSource will be used during UI load and this
* parameter will used only after filter is reset. When setting 'exclusiveDataSource' to 'true', do not set this parameter (will be ignored).
* @since 1.93.0
*/
defaultDataSource: {
type: string;
group: string;
};
/**
* The layout is optimized for object selection / value help (narrow view w/o facet panel).
* @since 1.111.0
*/
optimizeForValueHelp: {
type: string;
group: string;
};
/**
* Callback for filtering the datasources displayed in the datasource dropdown listbox.
* The callback gets a list of datsources and returns the filtered list of datasources.
* @since 1.112.0
*/
filterDataSources: {
type: string;
group: string;
};
/**
* Show a text/title at the start(left) of the search bar.
*
* @since 1.143.0
*/
searchBarTitle: {
type: string;
group: string;
};
/**
* Controls whether the facet functionality is available or not.
* @since 1.133.0
*/
facets: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* A boolean which indicates whether the facet panel is initially opened or closed.
* This affects only the initial state of the facet panel.
* This initial state of the facet panel can be overwritten by the user, depending
* on the user's personalization settings.
* @since 1.113.0
*/
facetVisibility: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Location of the button to show/hide facet panel. The button (filter icon) can be placed on the left (begin) or on the right (end) of the search bar.
* By default the button's location is at the beginning (left), values are "Begin" and "End".
* The property is not evaluated if facet panel is disabled, see property 'facets'.
* @since 1.140.0
*/
facetToggleButtonLocation: {
type: string;
group: string;
defaultValue: string;
};
/**
* Location of the buttons to show/hide basket and add items to the basket. The buttons can be placed on the left (begin) or on the right (end) of the search bar.
* By default the location is at the end (right), values are "Begin", "Middle" and "End".
* @since 1.143.0
*/
basketButtonsLocation: {
type: string;
group: string;
defaultValue: string;
};
/**
* Items of the basket are automatically added/removed when selecting/deselecting items on result views. Moreover all items of the basket are automatically selected on result views, if they are visible on the current result view page.
* The basket show/hide button is rendered as a toggle button. The left button shows available items (label: "Available"), the right button shows selected items (label: "Selected"). You either see the result view (table, list or grid) or the basket.
* With release 1.148.0 the label, icon and tooltip of the right button are controlled by the properties 'basketShowHideButtonText', 'basketShowHideButtonIcon' and 'basketShowHideButtonTooltip'.
* @since 1.143.0
*/
basketLinkByResultViewItemSelection: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Custom icon of button 'add items to basket'. By default the icon is "sap-icon://cart-4".
* @since 1.143.0
*/
basketAddButtonIcon: {
type: string;
group: string;
};
/**
* Custom text of button 'add items to basket'. By default the text is empty and the button will show the icon, only.
* @since 1.143.0
*/
basketAddButtonText: {
type: string;
group: string;
};
/**
* Custom tooltip of button 'add items to basket'. By default there tooltip is 'Add to Basket'.
* @since 1.143.0
*/
basketAddButtonTooltip: {
type: string;
group: string;
};
/**
* Custom icon of the show/hide basket button. Only applies when {@link #basketLinkByResultViewItemSelection} is true.
* In that case, the icon is applied to the right button part ("Selected") of the segmented toggle button.
* @since 1.148.0
*/
basketShowHideButtonIcon: {
type: string;
group: string;
};
/**
* Custom text of the show/hide basket button. Only applies when {@link #basketLinkByResultViewItemSelection} is true.
* In that case, the text is applied to the right button part ("Selected") of the segmented toggle button.
* @since 1.148.0
*/
basketShowHideButtonText: {
type: string;
group: string;
};
/**
* Custom tooltip of the show/hide basket button. Only applies when {@link #basketLinkByResultViewItemSelection} is true.
* In that case, the tooltip is applied to the right button part ("Selected") of the segmented toggle button.
* @since 1.148.0
*/
basketShowHideButtonTooltip: {
type: string;
group: string;
};
/**
* When basket gets initialized, this callback is called with the columns of the (future) basket table.
* You can add more columns or adjust the sequence of columns.
* @since 1.144.0
*/
basketInit: {
type: string;
group: string;
};
/**
* Before new item is added to basket, this callback is called with the public item (search result) and the new basket item
* You can adjust the model data of the basket item.
* @since 1.144.0
*/
basketBeforeAddItem: {
type: string;
group: string;
};
/**
* Location of the basket. When creating your own basket (see function 'createAndRegisterBasket'), set this property to "CustomBasketLocation".
* By default the basket is a panel at the right of the result view.
*
* Values:
* - "SidePanelRight" (default): basket is a panel at the right of the result view
* - "CustomBasketLocation": basket is created by function 'createAndRegisterBasket' and can be placed anywhere in the UI
*
* @since 1.145.0
*/
basketLocation: {
type: string;
group: string;
defaultValue: string;
};
/**
* Define your own view for the basket. The basket is displayed on a panel at the right/end of result views (by default, details see 'basketLocation'). There is buttons to show/hide it and add items to the basket (see config properties 'basketVisibilityButton' and 'basketAddButton').
* For the basket items collection, we recommend to use function 'createAndRegisterBasket' to create a table/list, so the selection (incl. 'add to basket') of result views with table/list is managed by SearchCompositeControl.
* @since 1.144.0
*/
customBasket: {
type: string;
group: string;
};
/**
* A boolean for enabling chart visualizations (pie chart / bar chart facets).
* If set to true, facets can be viewed as a pie or bar chart (this cannot be deactivated at runtime).
* @since 1.140.0
*/
enableCharts: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* A boolean for enabling (business) object suggestions.
* @since 1.113.0
*/
boSuggestions: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* When set to true the facet panel is displayed also in case there are no search results.
* @since 1.113.0
* @deprecated As of version 1.134.0, this setting is ignored and the visibility of the facet panel is controlled by the end user.
*/
displayFacetPanelInCaseOfNoResults: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* A boolean indicating that the search state is written to the URL.
* @since 1.113.0
*/
updateUrl: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* A callback for rendering the search URL. The callback gets a list of url encoded parameters and returns the URL string.
* Typically you need to register this callback in case of 'updateUrl = true'.
* @since 1.113.0
* @example
*
* const renderSearchUrl = function (properties){
return (
"#Action-search&/top=" +
properties.top +
(properties.orderby ? "&orderBy=" + properties.orderby : "") +
(properties.sortorder ? "&sortOrder=" + properties.sortorder : "") +
"&filter=" +
properties.filter
);
};
*/
renderSearchUrl: {
type: string;
group: string;
};
/**
* A callback for checking whether a URL is a search-relevant URL. The callback receives a URL and returns 'true' in case the URL is a search-relevant URL.
* Typically you need to register this callback in case of 'updateUrl = true'.
* @since 1.113.0
* @example
*
* const isSearchUrl =function (url) {
return url.indexOf("#Action-search") === 0;
};
*/
isSearchUrl: {
type: string;
group: string;
};
/**
* A callback for parsing URL parameters. The callback receices URL parameters and returns modified URL parameters.
* This is an optional callback. In case you set 'updateUrl = true' typcically this callback is not needed.
* @since 1.113.0
*/
parseSearchUrlParameters: {
type: string;
group: string;
};
/**
* A list of data sources to be displayed in the facet panel in the section "Collection".
* @since 1.113.0
*/
quickSelectDataSources: {
type: string;
group: string;
};
/**
* An asynchronues callback which is called after the initialization of the search composite control.
* @since 1.113.0
*/
initAsync: {
type: string;
group: string;
};
/**
* Enables the multiselection mode of search result items.
* A checkbox is provided for each result item if the value is set to 'true'.
* @public
* @since 1.96.0
* @deprecated As of version 1.141.0, use 'resultviewSelectionMode' instead.
*/
enableMultiSelectionResultItems: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* To select result view items, enable multi-selection or single-selection mode. Shows checkboxes ('MultipleItems') or enables item press ('OneItem'). Values of configuration parameter `resultviewSelectionMode` are 'None', 'OneItem' and 'MultipleItems'.
* To show a button for switching selection mode on/off, see 'showSelectionToggleButton'.
* A checkbox is provided for each result item if the value is true.
* The setting is related to `resultviewMasterDetailMode` (master-detail mode). The event `showResultDetail` is fired whenever the detail button is clicked.
* @public
* @since 1.141.0
* @param {"None" | "OneItem" | "MultipleItems"} selectionMode The mode to control how many result view items can be selected (checkboxes are displayedfor multi-selection).
*/
resultviewSelectionMode: {
type: string;
group: string;
defaultValue: string;
values: {
name: string;
key: string;
}[];
};
/**
* Enables the selection toggle button in the search result list.
* The button is displayed on the top of search result view and allows to toggle the selection of all result items.
* The button is only displayed if the property 'resultviewSelectionMode' is not set to 'None'.
* @public
* @since 1.140.0
* @param {boolean} [showSelectionToggleButton=false] If true, shows a toggle button to show/hide selection indicators (checkboxes).
*/
showSelectionToggleButton: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Enables a button in the search result list to control basket panel visibility.
* Depending on the configuration, this is either a show/hide button or an 'Available'/'Selected' toggle button (when basketLinkByResultViewItemSelection=true).
* The button is only rendered when the basket feature is active (i.e. createAndRegisterBasket was called).
* @public
* @since 1.143.0
* @param {boolean} [basketVisibilityButton=true] If true, shows a button to control visibility of the basket (when basket feature is active).
*/
basketVisibilityButton: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* Enables the basket add button in the search result list.
* The button is displayed on the top of search result view and allows to add result view items to the basket.
* Has no effect when basketLinkByResultViewItemSelection=true — in that case items are added automatically
* via result view item selection and a manual add button is redundant (a console warning is logged).
* @public
* @since 1.143.0
* @param {boolean} [basketAddButton=false] If true, shows a button to add result view items to the basket.
*/
basketAddButton: {
type: string;
group: string;
defaultValue: boolean;
};
/**
* The maximum count of search result items displayed on a page after a search.
* By clicking 'Show More' button, another page of result items of the same count (if available) will be displayed.
* @since 1.96.0
*/
pageSize: {
type: string;
group: string;
defaultValue: number;
};
/**
* Callback for formatting the filter string to be displayed on the filter bar (for closed facet panel).
* @since 1.120
*/
formatFilterBarText: {
type: string;
group: string;
};
/**
* Callback for checking whether the filter bar is visible.
* @since 1.120
*/
isFilterBarVisible: {
type: string;
group: string;
};
/**
* Adds a callback function which is called whenever there is a user or a technical event.
* A user event is an event which is triggered by the user interaction with the UI, such as clicking.
* A technical event is an event which is triggered by the internal events or events which can also
* be triggered by API.
* @since 1.120
* @example
*
*/
eventConsumers: {
singularName: string;
multiple: boolean;
group: string;
};
/**
* Limit for length of searchterm.
*/
searchTermLengthLimit: {
type: string;
group: string;
defaultValue: number;
};
/**
* Prevents too many ajax requests in a short time.
*/
limitAjaxRequests: {
type: string;
group: string;
defaultValue: boolean;
};
};
events: {
/**
* Event is fired when search is started.
* @since 1.121
*/
searchStarted: {};
/**
* Event is fired when search is finished.
* @since 1.121
*/
searchFinished: {};
/**
* Event is fired when selection on result view (list, table or grid) has changed.
* @since 1.143
*/
resultViewSelectionChanged: {};
/**
* Event is fired when selection on result view (list, table or grid) has changed.
* @since 1.121
* Will be deprecated as of version 1.143.0, use 'resultViewSelectionChanged' instead. The new event comes with more details about selected/deselected items.
*/
selectionChanged: {};
/**
* Event is fired after result view type got changed (list, table or grid).
* Parameters of the event (since 1.143):
* - newValue: current result view type
* - oldValue: previous result view type
* @since 1.124
*/
resultViewTypeChanged: {};
/**
* Event is fired after result view detail button is pressed (list, table or grid).
* To use this event, set the property 'resultviewMasterDetailMode' to 'true'.
* @since 1.140.0
*/
showResultDetail: {};
/**
* After items are added/removed from basket, this callback is called
* Parameters of the event:
* - count: current number of items in basket
* @since 1.144.0
*/
basketChanged: {};
};
};
errorHandler: ErrorHandler;
oSearchCompositeControlDragDropConfig: SearchCompositeControlDragDropConfig;
searchContainer: SearchLayoutResponsive;
oSearchFieldGroup: SearchFieldGroup;
oFilterBar: SearchFilterBar;
oNlqExplainBar: SearchNlqExplainBar;
oSearchBar: OverflowToolbar;
oSearchBarTitle: Title;
oFilterButton: OverflowToolbarToggleButton;
oSelectionButton: OverflowToolbarToggleButton;
oBasketButtons: Array;
oBasketAddButton: OverflowToolbarButton;
oDataSourceTabBar: IconTabBar;
oGenericItemsToolbar: OverflowToolbar;
resultViewSwitch: SegmentedButton;
oSearchResultContainer: SearchResultContainer;
oSearchResultPanel: FixFlex;
oSearchBaskets: Array;
resultView: Array;
countBreadcrumbsHiddenElement: InvisibleText;
showMoreFooter: FlexBox;
sortDialog: ViewSettingsDialog;
oContextBar: Bar;
oContextBarContainer: VerticalLayout;
oSearchCountBreadcrumbs: Control;
oSearchSelectionBar: SearchSelectionBar;
noResultScreen: VBox;
noResultScreenFolder: VBox;
searchResultTable: SearchResultTable;
searchResultList: SearchResultList;
appResultListItem: CustomListItem;
searchResultGrid: SearchResultGrid;
searchSpreadsheetExport: SearchSpreadsheetExport;
appSearchResult: VerticalLayout;
oAppView: Control;
oFooter: OverflowToolbar;
oErrorPopover: MessagePopover;
oFocusHandler: SearchFocusHandler;
model: SearchModel;
toolbarAssembler: ToolbarAssembler;
resultViewsAssembler: ResultViewsAssembler;
searchPageAssembler: SearchPageAssembler;
private static eshCompCounter;
subscribeDone_SearchStarted: boolean;
subscribeDone_SearchFinished: boolean;
subscribeDone_SelectionChanged: boolean;
subscribeDone_ResultViewTypeChanged: boolean;
subscribeDone_ShowResultDetail: boolean;
subscribeDone_BasketChanged: boolean;
subscribeDone_PublicModelChanged: boolean;
private _cssClass;
private initSearchPromise;
private _onHashChangedHandler;
private isHashChangedAttached;
constructor(sId?: string, settings?: Partial);
getPublicSina(): PublicSina;
getModel(sName?: string): any;
setModel(oModel: Model, sName?: string): this;
private setModelInternal;
private browserHasValidSearchUrl;
private initSearch;
private static getUI5ControlSettings;
private static unifyInputParameters;
private closePopovers;
exit(): void;
static renderer: {
apiVersion: number;
};
createContent(): void;
createSearchFieldGroup(): SearchFieldGroup;
createClassicSearchFieldGroup(): SearchFieldGroup;
onAfterRendering(): void;
isShowMoreFooterVisible(): boolean;
assignDragDropConfig(): void;
addDragDropConfig(oDragDropConfig: DragDropBase): this;
insertDragDropConfig(oDragDropConfig: DragDropBase, iIndex: number): this;
indexOfDragDropConfig(oDragDropConfig: DragDropBase): number;
getDragDropConfig(): Array;
removeDragDropConfig(vDragDropConfig: DragDropBase | string | number): DragDropBase;
removeAllDragDropConfig(): Array;
destroyDragDropConfig(): this;
onAllSearchStarted(eventId: string, parameters: unknown): void;
onAllSearchFinished(eventId: string, parameters: unknown): void;
onSelectionChanged(eventId: string, parameters: IUiEventParametersResultViewSelectionChanged): void;
onResultViewTypeChanged(eventId: string, parameters: IUiEventParametersResultViewTypeChanged): void;
onShowResultDetail(eventId: string, parameters: IUiEventParametersShowResultDetail): void;
onBasketChanged(eventId: string, parameters: IUiEventParametersBasketChanged): void;
onPublicModelChanged(eventId: string, parameters: IUiEventParametersPublicModelChanged): void;
createSearchPage(idPrefix: string): void;
createNoResultScreen(idPrefix: string, type: "default" | "folder"): VBox;
createSearchContainer(idPrefix: string): SearchLayoutResponsive;
isSearchFieldGroupLocatedInsideSearchComposite(currentControlDomRef?: HTMLElement | ParentNode): boolean;
adjustSearchbarCustomGenericButtonWidth(): void;
resizeHandler(): void;
createFooter(idPrefix: string): OverflowToolbar;
chooseNoResultScreen(): void;
openSortDialog(): void;
openShowMoreDialog(dimension?: string): void;
/**
* Parse the browser URL, update properties and trigger search call (if needed)
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.122.0
* @returns this
*/
parseURL(): SearchCompositeControl;
/**
* Get the public part of the search model (JSON)
* In general the model is read-only but a few properties can be modified.
* Modifiable properties (i.e. consumtion via two-way binding):
* - 'results[i].data.selected'
* For binding use model 'publicSearchModel' (i.e. "publicSearchModel>results/...")
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.122.0
* @returns {object} A JSON model containing public artefacts of internal search model
*/
getPublicSearchModel(): PublicSearchModel;
/**
* Create an instance of a basket and register it for interaction with the result view (items/selection indicator).
* See property 'basketLocation' in search model configuration to define where the basket panel is located.
* @public
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.145.0
* @param {string} idPostfix The ID postfix for the basket instance
* @param {"sapMList" | "sapMTable" | "sapUiTable"} type The UI type table/list ("sapMList" | "sapMTable" | "sapUiTable")
* @returns {object} A basket control of type sap.m.Table or sap.m.List containing items of the search basket ('selected items')
*/
createAndRegisterBasket(idPostfix: string, type: "sapMList" | "sapMTable" | "sapUiTable"): SearchBasketSapUiTable | SearchBasketSapMTable | SearchBasketSapMList;
/**
* Get the basket model ('selected items', 'count' : JSON model)
* The model is managed by SearchCompositeControl, do not change it manually.
* @public
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.145.0
* @returns {object} A JSON model containing items of the search basket ('selected items', 'count')
*/
getSearchBasketModel(): SearchBasketModel | null;
/**
* Get the active/current search basket (see interfaceSearchBasketApi)
* @public
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.145.0
* @returns {object} A control containing other controls. At least one of the controls is the basket-list/table, containg the 'selected items'.
*/
getBasket(): SearchBasketApi | undefined;
/**
* Get items of the latest search basket ('selected items', JSON model)
* The model is read-only.
* @public
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.143.0
* @returns {object} A JSON model containing items of the search basket ('selected items')
*/
getBasketItems(): Array;
/**
* Get visibility status of basket panel
* @public
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.146.0
* @returns boolean The visibility status of basket panel
*/
getBasketPanelVisibility(): boolean;
/**
* Set visibility status of basket panel
* @public
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.146.0
* @returns boolean The visibility status of basket panel
*/
setBasketPanelVisibility(basketPanelVisibility: boolean): boolean;
/**
* Get activation status of master detail mode
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.141.0
* @returns {boolean} The activation status of master detail mode
*/
getResultviewMasterDetailMode(): boolean;
/**
* Set activation status of master detail mode
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.141.0
* @returns this
*/
setResultviewMasterDetailMode(bMasterDetailMode: boolean): SearchCompositeControl;
/**
* Get result view selection mode ('None', 'OneItem', 'MultipleItems')
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.141.0
* @returns {string} The result view selection mode
*/
getResultviewSelectionMode(): SelectionMode;
/**
* Set result view selection mode ('None', 'OneItem', 'MultipleItems')
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.141.0
* @returns this
*/
setResultviewSelectionMode(selectionMode: SelectionMode): SearchCompositeControl;
/**
* Get the internal search model (JSON)
* In general the internal search model shall not be accessed by consumers of SearchCompositeControl
* The preferred consumption of search model data is to use public search model 'publicSearchModel' (i.e. "publicSearchModel>results/..."), also see function getPublicSearchModel
* @public
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.122.0
* @returns {object} A JSON model containing public artefacts of internal search model
*/
getModelInternal(sName?: string): any;
/**
* Gets the set of result items
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.114.0
* @returns {object} The result set containg 'items'.
*/
getSearchResultSet(): ResultSet;
/**
* Gets search result view types
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.98.0
* @returns {string[]} The array of active search result view types.
*/
getResultViewTypes(): Array;
/**
* Sets search result view types
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.98.0
* @param {string[]} resultViewTypes The array of active search result view types.
* @example
* setResultViewTypes(["searchResultList", "searchResultTable"])
* @returns this
*/
setResultViewTypes(resultViewTypes: Array): SearchCompositeControl;
/**
* Gets search result view type
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.98.0
* @returns {"appSearchResult" | "searchResultList" | "searchResultTable" | "searchResultGrid" | "" | string} The active search result view type.
*/
getResultViewType(): string;
/**
* Sets search result view type
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.98.0
* @param {"appSearchResult" | "searchResultList" | "searchResultTable" | "searchResultGrid"} resultViewType The active search result view type.
* @example
* setResultViewType("searchResultList")
* @returns this
*/
setResultViewType(resultViewType: string): SearchCompositeControl;
/**
* Gets search result view type settings
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.100.0
* @returns {object} The object of resultViewTypes and resultViewType.
*/
getResultViewSettings(): {
resultViewTypes: Array;
resultViewType: string;
};
/**
* Sets search result view type settings
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.100.0
* @param {object} settings The object of resultViewTypes and resultViewType.
* @example
* setResultViewSettings({resultViewTypes: ["searchResultList", "searchResultTable"], resultViewType: "searchResultList"})
* @returns this
*/
setResultViewSettings(resultlViewSettings: {
resultViewTypes: Array;
resultViewType: string;
}): SearchCompositeControl;
getControllerName(): string;
/**
* Gets the additional CSS class which was applied to this control
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.98.0
* @this sap.esh.search.ui.SearchCompositeControl
* @returns {string} The additional CSS class which was applied to this control
*/
getCssClass(): string;
/**
* Adds an additional CSS class to this control
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.98.0
* @this sap.esh.search.ui.SearchCompositeControl
* @param {string} cssClass The new CSS class
* @returns this
*/
setCssClass(cssClass: string): SearchCompositeControl;
/**
* Gets the id of the active data source which is selected in the data source drop down list.
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @this sap.esh.search.ui.SearchCompositeControl
* @since 1.98.0
* @returns {string} The id of currently selected data source.
*/
getDataSource(): string;
/**
* Sets the id of the active data source which is selected in the data source drop down list.
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.98.0
* @this sap.esh.search.ui.SearchCompositeControl
* @param {string} dataSource The id of the new to be selected data source
* @param {boolean} [fireQuery=true] If true, fires a search query right away. Set to false for batch updates.
* @param {boolean} [resetTop=true] If true, top will be reset to the default number of visible results.
*/
setDataSource(dataSourceId: string, fireQuery: boolean, resetTop: boolean): SearchCompositeControl;
/**
* Resets the active data source which is selected in the data source drop down list to its default (see 'defaultDataSource'/'exclusiveDataSource').
* @public
* @since 1.124.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @param {boolean} [fireQuery=true] If true, fires a search query right away. Set to 'false' for batch updates.
* @returns {this}
*/
resetDataSource(fireQuery?: boolean): Promise;
/**
* Invalidate the search cache and optionally fire a new search.
* Also see functions 'retriggerSearch' and 'invalidateSearchResultCache'.
* @public
* @since 1.124.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @param {boolean} [invalidateQuery=false] Indicates wether the search query should be resetted. Set to 'true' to reset the query.
* @param {boolean} [fireQuery=true] Indicates wether the search query should be sent to the search service or not. Set to 'false', to prevent auto-update of search results.
* @returns {Promise} Returns 'true' if the search query was fired, otherwise 'void'.
*/
search(invalidateQuery?: boolean, fireQuery?: boolean): Promise;
/**
* Resets the UI / search results (reset search query and fire a new search).
* @public
* @since 1.125.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @returns {Promise}
*/
resetSearch(): Promise;
/**
* Fire a new search (includes invalidation of search cache).
* To invalidate the search cache w/o triggering a new search, use function 'invalidateSearchResultCache' instead.
* @public
* @since 1.124.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @returns {Promise}
*/
retriggerSearch(): Promise;
/**
* Invalidate the search cache.
* To trigger a search in addition, use function 'retriggerSearch' instead.
* @public
* @since 1.124.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @returns {Promise}
*/
invalidateSearchResultCache(): Promise;
/**
* Gets the search term which is displayed in the search box.
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.98.0
* @this sap.esh.search.ui.SearchCompositeControl
* @returns {string} The search term
*/
getSearchTerm(): string;
/**
* Sets the search term which is displayed in the search box.
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.98.0
* @this sap.esh.search.ui.SearchCompositeControl
* @param {string} searchTerm Sets the new search term
* @param {boolean} [fireQuery=true] Indicates wether the search query should be sent to the search service or not.
* Not sending it could be useful for batch updates, for example if the data source shall also be changed.
* This way, the search service will not have to deal with outdated queries which will improve overall performance.
* @returns this
*/
setSearchTerm(searchTerm: string, fireQuery: boolean): SearchCompositeControl;
/**
* Gets the settings.
* @public
* @since 1.125.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @returns {object} The settings (search configuration)
*/
getConfig(): SearchConfiguration;
/**
* Gets the filter containing all attribute filters currently set and functions to manipulate the filter.
* @public
* @since 1.124.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @returns {object} The filter
*/
getFilter(): Filter;
/**
* Gets the filter root condition which contains all attribute filters currently set.
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.98.0
* @this sap.esh.search.ui.SearchCompositeControl
* @returns {object} The filter root condition
*/
getFilterRootCondition(): ComplexCondition;
/**
* Update hierarchy facet
* Updates the one and only (static) hierarchy facet (tree control on facet panel).
* If no hierarchy facet exists, nothing will happen.
* @public
* @since 1.126.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @returns {Promise}
*/
updateStaticHierarchyFacet(): Promise;
/**
* Recalculate the placeholder text of search input field. If implemented, this will also call function 'getSearchInputPlaceholderLabel' to get the label for the placeholder text.
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.136.0
* @returns void
*/
recalculateSearchInputPlaceholder(): void;
/**
* Sets the filter root condition for the search query.
*
* The filter root condition can contain multiple attribute filter which are then combined using AND or OR operators.
* For a more comprehensive explanation and examples, see the description of the filterRootCondition property of this control.
*
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.98.0
* @this sap.esh.search.ui.SearchCompositeControl
* @param {object} filterRootCondition Sets the new filter root condition.
* @param {boolean} [fireQuery=true] Indicates wether the search query should be sent to the search service or not.
* Not sending it could be useful for batch updates, for example if the data source shall also be changed.
* This way, the search service will not have to deal with outdated queries which will improve overall performance.
* @returns this
*/
setFilterRootCondition(filterRootCondition: ComplexCondition, fireQuery: boolean): SearchCompositeControl;
/**
* Assembles a search URL.
*
* Use this method for the creation of links to the search UI.
*
* @public
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @since 1.103.0
* @this sap.esh.search.ui.SearchCompositeControl
* @param {number} top Number of search results to be displayed.
* @param {object} filter A sina filter object storing the searchterm, datasource and the filter conditions.
* @param {boolean} encodeFilter A boolean whether to encode the URL parameters or not.
* @returns {string} search URL.
* @deprecated As of version 1.120.0, use {@link sap.esh.search.ui.SearchCompositeControl#createSearchNavigationTarget createSearchNavigationTarget} instead.
*/
renderSearchUrlFromParameters(top: number, filter: Filter, encodeFilter: boolean): string;
/**
* Create a NavigationTarget instance for filtering/search.
*
* Use this method for the creation a NavigationTarget instance with filter and label.
*
* @public
* @since 1.114.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @param {object} filter A sina filter object storing the searchterm, datasource and the filter conditions.
* @param {string} label The label of the navigation target.
* @returns {object} The NavigationTarget instance. If the configuration parameter updateUrl is true, it contains targetUrl, otherwise it contains targetFunction.
*/
createSearchNavigationTarget(filter: Filter, label: string): NavigationTarget;
/**
* Create a NavigationTarget instance for hierarchy.
*
* Use this method for the creation a NavigationTarget instance by hierarchical node id value and its label.
*
* @public
* @since 1.114.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @param {object} hierarchyNodeId The hiearchical node id value of the giving datasource or its helper hierarchical datasource.
* @param {string} hierarchyNodeLabel The label of the hiearchical node id.
* @param {object} dataSource The datasource instance.
* @param {string} navigationTargetLabel The label of the NavigatonTarget instance.
* @returns {object} The NavigationTarget instance. If the configuration parameter updateUrl is true, it contains targetUrl, otherwise it contains targetFunction.
*/
createStaticHierarchySearchNavigationTarget(hierarchyNodeId: Value, hierarchyNodeLabel: string, dataSource: DataSource, navigationTargetLabel: string): NavigationTarget;
/**
* Adds a callback function which is called whenever there is a user triggered event.
*
* @public
* @since 1.120.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @param {object} eventConsumer - This function will be called when the user triggered an UI event. As arguments this
* function will receive the UI event along with details of the event.
* @returns {void}
* @example A simple event consumer which could be passed to the addEventConsumer function
* const logEventConsumer = {
* label: "my log event consumer",
* logEvent: (event) => {
* console.log("user event happened: " + event.type)
* }
* }
* mySearchCompositeControl.addEventConsumer(logEventConsumer);
*/
addEventConsumer(eventConsumer: EventConsumer): void;
/**
* Returns all event consumers.
*
* @public
* @since 1.120.0
* @this sap.esh.search.ui.SearchCompositeControl
* @memberof sap.esh.search.ui.SearchCompositeControl.prototype
* @returns {Array