UNPKG

@openui5/sap.ui.core

Version:

OpenUI5 Core Library sap.ui.core

1,955 lines (1,711 loc) 70 kB
/*! * OpenUI5 * (c) Copyright 2026 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ /** * Initialization Code and shared classes of library sap.ui.core. */ sap.ui.define([ 'sap/ui/base/DataType', 'sap/ui/core/Lib', 'sap/ui/core/message/MessageType', 'sap/ui/core/mvc/ViewType', // provides sap.ui.core.mvc.ViewType './CalendarType', // provides sap.ui.core.CalendarType 'sap/ui/core/date/CalendarWeekNumbering' // ensures availability of legacy DataType "sap.ui.core.date.CalendarWeekNumbering" ], function(DataType, Library, MessageType, ViewType, CalendarType, _CalendarWeekNumbering) { "use strict"; /** * The SAPUI5 Core Runtime. * * Contains the UI5 Core and all its components, base classes for Controls, * Components and the Model View Controller classes. * * @namespace * @alias sap.ui.core * @author SAP SE * @version 1.147.0 * @since 0.8 * @public */ var thisLib = Library.init({ name: "sap.ui.core", version: "1.147.0", designtime: "sap/ui/core/designtime/library.designtime", apiVersion: 2, ...{ interactionDocumentation: true }, types: [ // builtin types "any", "boolean", "float", "int", "object", "string", "void", // simple types and enums "sap.ui.core.AbsoluteCSSSize", "sap.ui.core.AccessibleRole", "sap.ui.core.AccessibleLandmarkRole", "sap.ui.core.aria.HasPopup", "sap.ui.core.BarColor", "sap.ui.core.BusyIndicatorSize", "sap.ui.core.CalendarType", "sap.ui.core.CSSColor", "sap.ui.core.CSSGapShortHand", "sap.ui.core.CSSSize", "sap.ui.core.CSSSizeShortHand", "sap.ui.core.Collision", "sap.ui.core.ComponentLifecycle", "sap.ui.core.Design", "sap.ui.core.Dock", "sap.ui.core.HorizontalAlign", "sap.ui.core.ID", "sap.ui.core.IconColor", "sap.ui.core.ImeMode", "sap.ui.core.IndicationColor", "sap.ui.core.ItemSelectionMode", /** @deprecated As of version 1.120. Please use {@link module:sap/ui/core/message/MessageType} instead. */ "sap.ui.core.MessageType", "sap.ui.core.OpenState", "sap.ui.core.Orientation", "sap.ui.core.Percentage", "sap.ui.core.Priority", "sap.ui.core.ScrollBarAction", "sap.ui.core.Scrolling", "sap.ui.core.SortOrder", "sap.ui.core.TextAlign", "sap.ui.core.TextDirection", "sap.ui.core.TitleLevel", "sap.ui.core.URI", "sap.ui.core.ValueState", "sap.ui.core.VerticalAlign", "sap.ui.core.Wrapping", "sap.ui.core.InvisibleMessageMode", "sap.ui.core.dnd.DropEffect", "sap.ui.core.dnd.DropLayout", "sap.ui.core.dnd.DropPosition", "sap.ui.core.mvc.ViewType", "sap.ui.core.routing.HistoryDirection" ], interfaces: [ "sap.ui.core.IShrinkable", "sap.ui.core.Label", "sap.ui.core.ILabelable", "sap.ui.core.PopupInterface", "sap.ui.core.Toolbar", "sap.ui.core.IContextMenu", "sap.ui.core.IFormContent", "sap.ui.core.dnd.IDragInfo", "sap.ui.core.dnd.IDropInfo", "sap.ui.core.IDScope", "sap.ui.core.ITitle", "sap.ui.core.ITitleContent", "sap.ui.core.IAsyncContentCreation", "sap.ui.core.IPlaceholderSupport", "sap.ui.core.IColumnHeaderMenu" ], controls: [ "sap.ui.core.ComponentContainer", "sap.ui.core.Control", "sap.ui.core.HTML", "sap.ui.core.Icon", "sap.ui.core.InvisibleText", "sap.ui.core.LocalBusyIndicator", "sap.ui.core.ScrollBar", "sap.ui.core.TooltipBase", /** @deprecated since 1.88 */ "sap.ui.core.XMLComposite", /** @deprecated since 1.108 */ "sap.ui.core.mvc.HTMLView", /** @deprecated since 1.120 */ "sap.ui.core.mvc.JSONView", /** @deprecated since 1.90 */ "sap.ui.core.mvc.JSView", /** @deprecated since 1.56 */ "sap.ui.core.mvc.TemplateView", "sap.ui.core.mvc.View", "sap.ui.core.mvc.XMLView", "sap.ui.core.tmpl.DOMElement", /** @deprecated since 1.56 */ "sap.ui.core.tmpl.TemplateControl", "sap.ui.core.util.Export" ], elements: [ "sap.ui.core.CustomData", "sap.ui.core.Element", "sap.ui.core.Item", "sap.ui.core.LayoutData", "sap.ui.core.ListItem", "sap.ui.core.Message", "sap.ui.core.SeparatorItem", "sap.ui.core.Title", "sap.ui.core.VariantLayoutData", "sap.ui.core.dnd.DragDropBase", "sap.ui.core.dnd.DragInfo", "sap.ui.core.dnd.DropInfo", "sap.ui.core.dnd.DragDropInfo", "sap.ui.core.search.OpenSearchProvider", "sap.ui.core.search.SearchProvider", "sap.ui.core.tmpl.DOMAttribute", "sap.ui.core.util.ExportCell", "sap.ui.core.InvisibleMessage" ], extensions: { "sap.ui.support" : { diagnosticPlugins: [ "sap/ui/core/support/plugins/TechInfo", "sap/ui/core/support/plugins/ControlTree", "sap/ui/core/support/plugins/Debugging", "sap/ui/core/support/plugins/Trace", "sap/ui/core/support/plugins/Selector", "sap/ui/core/support/plugins/Breakpoint", /** * @deprecated As of version 1.117 */ "sap/ui/core/support/plugins/ViewInfo", "sap/ui/core/support/plugins/LocalStorage", "sap/ui/core/support/plugins/Interaction", "sap/ui/core/support/plugins/Performance" ], //Configuration used for rule loading of Support Assistant publicRules:true, internalRules:true } } }); /** * @classdesc A string type that represents non-relative CSS size values. * * This is a subtype of the <code>'&lt;length&gt; type'</code> defined in the CSS specifications. * Allowed values are only absolute CSS sizes like &quot;1px&quot; or &quot;2em&quot;. Percentage * sizes like &quot;50%&quot; and the special values &quot;auto&quot; and &quot;inherit&quot; are * NOT allowed. Mathematical expressions using the CSS3 <code>calc(<i>expression</i>)</code> operator * are allowed as long as they do not use percentage sizes. * * Note that CSS might not allow all these values for every CSS property representing a size. * So even if a value is accepted by <code>sap.ui.core.AbsoluteCSSSize</code>, it still might have no effect * in a specific context. In other words: UI5 controls usually don't extend the range of allowed * values in CSS. * * * <b>Units</b> * * Valid font-relative units are <code>em, ex</code> and <code>rem</code>. Supported absolute units * are <code>cm, mm, in, pc, pt</code> and <code>px</code>. Other units are not supported. * * * <b>Mathematical Expressions</b> * * Expressions inside the <code>calc()</code> operator are only roughly checked for validity. * Not every value that this type accepts is a valid expression in the sense of the CSS spec. * But vice versa, any expression that is valid according to the spec should be accepted by this type. * The current implementation is based on the * {@link http://dev.w3.org/csswg/css-values-3/#calc-syntax CSS3 Draft specification from 22 April 2015}. * * Noteworthy details: * <ul> * <li>whitespace is mandatory around a '-' or '+' operator and optional otherwise</li> * <li>parentheses are accepted but not checked for being balanced (a restriction of regexp based checks)</li> * <li>semantic constraints like type restrictions are not checked</li> * </ul> * * Future versions of UI5 might check <code>calc()</code> expressions in more detail, so applications should * not assume that a value, that is invalid according to the CSS spec but currently accepted by this type * still will be accepted by future versions of this type. * * @final * @namespace * @public */ thisLib.AbsoluteCSSSize = DataType.createType('sap.ui.core.AbsoluteCSSSize', { isValid : function(vValue) { // Note: the following regexp by intention is a single regexp literal. // It could be made much more readable by constructing it out of (reused) sub-expressions (strings) // but this would not be parseable by the metamodel recovery tooling that is used inside SAP return /^([-+]?(0*|([0-9]+|[0-9]*\.[0-9]+)([rR][eE][mM]|[eE][mM]|[eE][xX]|[pP][xX]|[cC][mM]|[mM][mM]|[iI][nN]|[pP][tT]|[pP][cC]))|calc\(\s*(\(\s*)*[-+]?(([0-9]+|[0-9]*\.[0-9]+)([rR][eE][mM]|[eE][mM]|[eE][xX]|[pP][xX]|[cC][mM]|[mM][mM]|[iI][nN]|[pP][tT]|[pP][cC])?)(\s*(\)\s*)*(\s[-+]\s|[*\/])\s*(\(\s*)*([-+]?(([0-9]+|[0-9]*\.[0-9]+)([rR][eE][mM]|[eE][mM]|[eE][xX]|[pP][xX]|[cC][mM]|[mM][mM]|[iI][nN]|[pP][tT]|[pP][cC])?)))*\s*(\)\s*)*\))$/.test(vValue); } }, DataType.getType('string') ); /** * Defines the accessible roles for ARIA support. This enumeration is used with the AccessibleRole control property. * For more information, goto "Roles for Accessible Rich Internet Applications (WAI-ARIA Roles)" at the www.w3.org homepage. * * @enum {string} * @public */ thisLib.AccessibleRole = { /** * A message with an alert or error information. * * @public */ Alert : "Alert", /** * A separate window with an alert or error information. * * @public */ AlertDialog : "AlertDialog", /** * A software unit executing a set of tasks for the user. * @public */ Application : "Application", /** * Usually defined as the advertisement at the top of a web page. * The banner content typically contains the site or company logo, or other key advertisements. * * @public */ Banner : "Banner", /** * Allows user-triggered actions. * * @public */ Button : "Button", /** * A control that has three possible values: true, false, mixed. * @public */ Checkbox : "Checkbox", /** * A table cell containing header information for a column. * @public */ ColumnHeader : "ColumnHeader", /** * Allows selecting an item from a list, or to enter data directly in the input field. * @public */ Combobox : "Combobox", /** * Information about the content on the page. Examples are footnotes, copyrights, or links to privacy statements. * * @public */ ContentInfo : "ContentInfo", /** * The content of the associated element represents a definition. * If there is a definition element within the content, this one represents the term being defined. * * @public */ Definition : "Definition", /** * Descriptive content for a page element. * @public */ Description : "Description", /** * A small window that is designed to interrupt the current application processing * in order to inform the user and to get some response. * @public */ Dialog : "Dialog", /** * A list of references to members of a single group. * * @public */ Directory : "Directory", /** * Content that contains related information, such as a book. * @public */ Document : "Document", /** * Contains cells of tabular data arranged in rows and columns, for example in a table. * @public */ Grid : "Grid", /** * A table cell in a grid where the cells can be active, editable, and selectable. * Cells may have functional relationships to controls, for example. * @public */ GridCell : "GridCell", /** * A section of user interface objects. * @public */ Group : "Group", /** * A heading for a section of the page. * @public */ Heading : "Heading", /** * A container for a collection of elements that form an image. * @public */ Img : "Img", /** * An interactive reference to a resource. * @public */ Link : "Link", /** * A container for non-interactive list items which are the children of the list. * @public */ List : "List", /** * A widget that allows the user to select one or more items from a list. * The items within the list are static and can contain images. * @public */ Listbox : "Listbox", /** * A single item in a list. * @public */ ListItem : "ListItem", /** * An area where new information is added, or old information disappears. * Information types are chat logs, messaging, or error logs, for example. * The log contains a sequence: New information is always added to the end of the log. * @public */ Log : "Log", /** * Defines the main content of a document. * * @public */ Main : "Main", /** * Is used to scroll text across the page. * * @public */ Marquee : "Marquee", /** * Offers a list of choices to the user. * * @public */ Menu : "Menu", /** * A container for menu items where each item may activate a submenu. * * @public */ Menubar : "Menubar", /** * A child in a menu. * @public */ MenuItem : "MenuItem", /** * A checkable menu item (tri-state). * @public */ MenuItemCheckbox : "MenuItemCheckbox", /** * A menu item which is part of a group of menuitemradio roles. * @public */ MenuItemRadio : "MenuItemRadio", /** * A collection of links suitable for use when navigating the document or related documents. * @public */ Navigation : "Navigation", /** * The content is parenthetic or ancillary to the main content of the resource. * @public */ Note : "Note", /** * A selectable item in a list represented by a select. * * @public */ Option : "Option", /** * An element whose role is presentational does not need to be mapped to the accessibility API. * @public */ Presentation : "Presentation", /** * Shows the execution progress in applications providing functions that take a long time. * @public */ ProgressBar : "ProgressBar", /** * An option in single-select list. Only one radio control in a radiogroup can be selected at the same time. * * @public */ Radio : "Radio", /** * A group of radio controls. * @public */ RadioGroup : "RadioGroup", /** * A large section on the web page. * @public */ Region : "Region", /** * A row of table cells. * @public */ Row : "Row", /** * A table cell containing header information for a row. * @public */ RowHeader : "RowHeader", /** * A search section of a web document. In many cases, this is a form used to submit search requests about the site, * or a more general Internet wide search service. * @public */ Search : "Search", /** * A unique section of the document. In the case of a portal, this may include time display, weather forecast, * or stock price. * @public */ Secondary : "Secondary", /** * Indicates that the element contains content that is related to the main content of the page. * @public */ SeeAlso : "SeeAlso", /** * A line or bar that separates sections of content. * @public */ Separator : "Separator", /** * A user input where the user selects an input in a given range. This form of range expects an analogous keyboard * interface. * @public */ Slider : "Slider", /** * Allows users to select a value from a list of given entries where exactly one value is displayed at runtime, and * the other ones can be displayed by scrolling using the arrow up and arrow down key. * * @public */ SpinButton : "SpinButton", /** * A container for processing advisory information. * @public */ Status : "Status", /** * A header for a tab panel. * @public */ Tab : "Tab", /** * A list of tabs which are references to tab panels. * * @public */ Tablist : "Tablist", /** * A container for the resources associated with a tab. * @public */ Tabpanel : "Tabpanel", /** * Inputs that allow free-form text as their value. * @public */ Textbox : "Textbox", /** * A numerical counter which indicates an amount of elapsed time from a start point, * or of the time remaining until a certain end point. * @public */ Timer : "Timer", /** * A collection of commonly used functions represented in compact visual form. * @public */ Toolbar : "Toolbar", /** * A popup that displays a description for an element when the user passes over or rests on that element. * Supplement to the normal tooltip processing of the user agent. * * @public */ Tooltip : "Tooltip", /** * A form of a list (tree) having groups (subtrees) inside groups (subtrees), where the sub trees can be collapsed and expanded. * * @public */ Tree : "Tree", /** * A grid whose rows are expandable and collapsable in the same manner as the ones of trees. * @public */ TreeGrid : "TreeGrid", /** * A tree node * @public */ TreeItem : "TreeItem" }; DataType.registerEnum("sap.ui.core.AccessibleRole", thisLib.AccessibleRole); /** * Defines the accessible landmark roles for ARIA support. This enumeration is used with the AccessibleRole control property. * For more information, go to "Roles for Accessible Rich Internet Applications (WAI-ARIA Roles)" at the www.w3.org homepage. * * @enum {string} * @public */ thisLib.AccessibleLandmarkRole = { /** * No explicit role is applicable. * * The interpretation of this value depends on the control / element which defines a property with this type. * Normally this value means that no accessible landmark should be written. * * @public */ None : "None", /** * Represents the ARIA role <code>banner</code>. * * A banner usually appears at the top of the page and typically spans the full width. * * @public */ Banner : "Banner", /** * Represents the ARIA role <code>main</code>. * * The main content of a page. * * @public */ Main : "Main", /** * Represents the ARIA role <code>region</code>. * * A section of a page, that is important enough to be included in a page summary or table of contents. * * @public */ Region : "Region", /** * Represents the ARIA role <code>navigation</code>. * * A region that contains a collection of items and objects that, as a whole, combine to create a navigation facility. * * @public */ Navigation : "Navigation", /** * Represents the ARIA role <code>search</code>. * * A region that contains a collection of items and objects that, as a whole, combine to create a search facility. * * @public */ Search : "Search", /** * Represents the ARIA role <code>complementary</code>. * * A section of the page, designed to be complementary to the main content at a similar level in the DOM hierarchy. * * @public */ Complementary : "Complementary", /** * Represents the ARIA role <code>form</code>. * * A region that contains a collection of items and objects that, as a whole, combine to create a form. * * @public */ Form : "Form", /** * Represents the ARIA role <code>contentinfo</code>. * * A region that contains information about the content on the page. * * @public */ ContentInfo : "ContentInfo" }; DataType.registerEnum("sap.ui.core.AccessibleLandmarkRole", thisLib.AccessibleLandmarkRole); thisLib.aria = thisLib.aria || {}; /** * Types of popups to set as aria-haspopup attribute. * Most of the values (except "None") of the enumeration are taken from the ARIA specification: * https://www.w3.org/TR/wai-aria/#aria-haspopup * * @enum {string} * @public * @since 1.84 */ thisLib.aria.HasPopup = { /** * None - the aria-haspopup attribute will not be rendered. * @public */ None : "None", /** * Menu popup type. * @public */ Menu : "Menu", /** * ListBox popup type. * @public */ ListBox : "ListBox", /** * Tree popup type. * @public */ Tree : "Tree", /** * Grid popup type. * @public */ Grid : "Grid", /** * Dialog popup type. * @public */ Dialog : "Dialog" }; DataType.registerEnum("sap.ui.core.aria.HasPopup", thisLib.aria.HasPopup); /** * The object contains accessibility information for a control. * * @typedef {object} sap.ui.core.AccessibilityInfo * * @property {string} [role] * The WAI-ARIA role which is implemented by the control. * @property {string} [type] * A translated text that represents the control type. Might correlate with the role. * @property {string} [description] * Describes the most relevant control state (e.g. the input's value) - it should be a translated text. * <b>Note:</b> The type and the enabled/editable state shouldn`t be handled here. * @property {boolean} [focusable] * Whether the control can get the focus. * @property {boolean | null} [enabled] * Whether the control is enabled. If not relevant, it shouldn`t be set or <code>null</code> can be provided. * @property {boolean | null} [editable] * Whether the control is editable. If not relevant, it shouldn`t be set or <code>null</code> can be provided. * @property {boolean | null} [readonly] * Whether the control is readonly. If not relevant, it shouldn`t be set or <code>null</code> can be provided. * @property {sap.ui.core.Element[]} [children] * A list of elements or controls that are aggregated by the given control (e.g. when the control is a layout). * Primitive values in the list will be ignored. * <b>Note:</b> Children should only be provided when it is helpful to understand the accessibility context * (e.g. a form control shouldn`t provide details of its internals (fields, labels, ...) but a layout should). * @protected * @since 1.110 */ /** * The object contains focus information for input controls. * * @typedef {object} sap.ui.core.FocusInfo * * @property {string} [id] * The ID of the focused control. * @property {int} [cursorPos] * The position of the cursor. * @property {int} [selectionStart] * The start position of selection. * @property {int} [selectionEnd] * The end position of selection. * @property {boolean | undefined} [preventScroll] * Prevents scrolling. * @protected * @since 1.111 */ /** * Configuration options for the colors of a progress bar. * * @enum {string} * @public */ thisLib.BarColor = { /** * Color: blue (#b8d0e8) * @public */ NEUTRAL : "NEUTRAL", /** * Color: green (#b5e7a8) * @public */ POSITIVE : "POSITIVE", /** * Color: yellow (#faf2b0) * @public */ CRITICAL : "CRITICAL", /** * Color: red (#ff9a90) * @public */ NEGATIVE : "NEGATIVE" }; DataType.registerEnum("sap.ui.core.BarColor", thisLib.BarColor); /** * Configuration options for the <code>BusyIndicator</code> size. * * @enum {string} * @public */ thisLib.BusyIndicatorSize = { /** * Type: automatic size detection * @public */ Auto : "Auto", /** * Type: small size * @public */ Small : "Small", /** * Type: Medium size * @public */ Medium : "Medium", /** * Type: Large size * @public */ Large : "Large", /** * Type: Medium size, specifically if the BusyIndicator is displayed over a page section * @public */ Section : "Section" }; DataType.registerEnum("sap.ui.core.BusyIndicatorSize", thisLib.BusyIndicatorSize); /** @deprecated */ (() => { // this assignment here is kept so that imports via the library module continue to work // even when the export via globals is abandoned thisLib.CalendarType = CalendarType; })(); /** * @classdesc A string type that represents CSS color values (CSS Color Level 3). * * <b>Allowed values are:</b> * <ul> * <li>Hex colors like <code>#666666</code> or <code>#fff</code>,</li> * <li>HSL/RGB values with or without transparency, like <code>hsla(90,10%,30%,0.5)</code> or <code>rgb(0,0,0)</code>,</li> * <li>CSS color names like <code>darkblue</code>, or special values like <code>inherit</code> and <code>transparent</code>,</li> * <li>an empty string, which has the same effect as setting no color.</li> * </ul> * For more information about the CSS Level 3 color specification, see {@link https://www.w3.org/TR/css-color-3/#css-system}. * * @final * @namespace * @public */ thisLib.CSSColor = DataType.createType('sap.ui.core.CSSColor', { isValid : function(vValue) { // Note: the following regexp by intention is a single regexp literal. // It could be made much more readable by constructing it out of (reused) sub-expressions (strings) // but this would not be parseable by the metamodel recovery tooling that is used inside SAP return /^(#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})|rgb\(\s*((1?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))|([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*(,\s*((1?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))|([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*){2}\)|rgba\((\s*((1?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))|([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*,){3}\s*(0(\.[0-9]+)?|1(\.0+)?)\s*\)|hsl\(\s*([0-2]?[0-9]?[0-9]|3([0-5][0-9]|60))\s*(,\s*(([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*){2}\)|hsla\(\s*([0-2]?[0-9]?[0-9]|3([0-5][0-9]|60))\s*,(\s*(([0-9]?[0-9](\.[0-9]+)?|100(\.0+)?)%)\s*,){2}\s*(0(\.[0-9]+)?|1(\.0+)?)\s*\)|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgrey|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|grey|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgrey|lightgreen|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silverskyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|transparent|inherit|)$/.test(vValue); } }, DataType.getType('string') ); /** * @classdesc A string type that represents a short hand CSS gap. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/gap} * @since 1.134 * @public * @namespace */ thisLib.CSSGapShortHand = DataType.createType("sap.ui.core.CSSGapShortHand", { isValid: function (vValue) { var bResult = true, aValues = vValue.split(/\s+/); aValues.forEach(function (sValue) { if (!thisLib.CSSSize.isValid(sValue)) { bResult = false; } }); return bResult; }, parseValue: function (sValue) { return sValue.trim().split(/\s+/).join(" "); } }, DataType.getType("string") ); /** * @classdesc A string type that represents CSS size values. * * The CSS specifications calls this the <code>'&lt;length&gt; type'</code>. * Allowed values are CSS sizes like "1px" or "2em" or "50%". The special values <code>auto</code> * and <code>inherit</code> are also accepted as well as mathematical expressions using the CSS3 * <code>calc(<i>expression</i>)</code> operator. Furthermore, length units representing a percentage of the * current viewport dimensions: width (vw), height (vh), the smaller of the two (vmin), or the larger of the two (vmax) * can also be defined as a CSS size. * * Note that CSS does not allow all these values for every CSS property representing a size. * E.g. <code>padding-left</code> doesn't allow the value <code>auto</code>. So even if a value is * accepted by <code>sap.ui.core.CSSSize</code>, it still might have no effect in a specific context. * In other words: UI5 controls usually don't extend the range of allowed values in CSS. * * * <b>Units</b> * * Valid font-relative units are <code>em, ex</code> and <code>rem</code>. Viewport relative units * <code>vw, vh, vmin, vmax</code> are also valid. Supported absolute units are <code>cm, mm, in, pc, pt</code> * and <code>px</code>.Other units are not supported yet. * * * <b>Mathematical Expressions</b> * * Expressions inside the <code>calc()</code> operator are only roughly checked for validity. * Not every value that this type accepts might be a valid expression in the sense of the CSS spec. * But vice versa, any expression that is valid according to the spec should be accepted by this type. * The current implementation is based on the * {@link http://dev.w3.org/csswg/css-values-3/#calc-syntax CSS3 Draft specification from 22 April 2015}. * * Noteworthy details: * <ul> * <li>whitespace is mandatory around a '-' or '+' operator and optional otherwise</li> * <li>parentheses are accepted but not checked for being balanced (a restriction of regexp based checks)</li> * <li>semantic constraints like type restrictions are not checked</li> * </ul> * * Future versions of UI5 might check <code>calc()</code> expressions in more detail, so applications should * not assume that a value, that is invalid according to the CSS spec but currently accepted by this type * still will be accepted by future versions of this type. * * @final * @namespace * @public */ thisLib.CSSSize = DataType.createType('sap.ui.core.CSSSize', { isValid : function(vValue) { // Note: the following regexp by intention is a single regexp literal. // It could be made much more readable by constructing it out of (reused) sub-expressions (strings) // but this would not be parseable by the metamodel recovery tooling that is used inside SAP return /^(auto|inherit|[-+]?(0*|([0-9]+|[0-9]*\.[0-9]+)([rR][eE][mM]|[eE][mM]|[eE][xX]|[pP][xX]|[cC][mM]|[mM][mM]|[iI][nN]|[pP][tT]|[pP][cC]|[vV][wW]|[vV][hH]|[vV][mM][iI][nN]|[vV][mM][aA][xX]|%))|calc\(\s*(\(\s*)*[-+]?(([0-9]+|[0-9]*\.[0-9]+)([rR][eE][mM]|[eE][mM]|[eE][xX]|[pP][xX]|[cC][mM]|[mM][mM]|[iI][nN]|[pP][tT]|[pP][cC]|[vV][wW]|[vV][hH]|[vV][mM][iI][nN]|[vV][mM][aA][xX]|%)?)(\s*(\)\s*)*(\s[-+]\s|[*\/])\s*(\(\s*)*([-+]?(([0-9]+|[0-9]*\.[0-9]+)([rR][eE][mM]|[eE][mM]|[eE][xX]|[pP][xX]|[cC][mM]|[mM][mM]|[iI][nN]|[pP][tT]|[pP][cC]|[vV][wW]|[vV][hH]|[vV][mM][iI][nN]|[vV][mM][aA][xX]|%)?)))*\s*(\)\s*)*\))$/.test(vValue); } }, DataType.getType('string') ); /** * @classdesc This type checks the short hand form of a margin or padding definition. * * E.g. "1px 1px" or up to four CSSSize values are allowed or tHe special keyword <code>inherit</code>. * * * @since 1.11.0 * @final * @namespace * @public */ thisLib.CSSSizeShortHand = DataType.createType('sap.ui.core.CSSSizeShortHand', { isValid : function(vValue) { // Note: the following regexp by intention is a single regexp literal. // It could be made much more readable by constructing it out of (reused) sub-expressions (strings) // but this would not be parseable by the metamodel recovery tooling that is used inside SAP return /^(inherit|(auto|[-+]?(0*|(\d+|\d*\.\d+)([eE][mM]|[eE][xX]|[pP][xX]|[cC][mM]|[mM][mM]|[iI][nN]|[pP][tT]|[pP][cC]|%))){1}(\s(auto|[-+]?(0*|(\d+|\d*\.\d+)([eE][mM]|[eE][xX]|[pP][xX]|[cC][mM]|[mM][mM]|[iI][nN]|[pP][tT]|[pP][cC]|%)))){0,3})$/.test(vValue); } }, DataType.getType('string') ); /** * @classdesc Collision behavior: horizontal/vertical. * * Defines how the position of an element should be adjusted in case it overflows the window in some direction. * For both directions this can be "flip", "fit", "flipfit" or "none". * If only one behavior is provided it is applied to both directions. * * Examples: "flip", "fit none", "flipfit fit" * * @final * @namespace * @public */ thisLib.Collision = DataType.createType('sap.ui.core.Collision', { isValid : function(vValue) { return /^((flip|fit|flipfit|none)( (flip|fit|flipfit|none))?)$/.test(vValue); } }, DataType.getType('string') ); /** * Font design for texts. * * @enum {string} * @public */ thisLib.Design = { /** * Standard font * @public */ Standard : "Standard", /** * Mono space font * @public */ Monospace : "Monospace" }; DataType.registerEnum("sap.ui.core.Design", thisLib.Design); /** * @classdesc Docking position: horizontal/vertical. * * Defines a position on the element which is used for aligned positioning of another element (e.g. the left top * corner of a popup is positioned at the left bottom corner of the input field). For the horizontal position possible values * are "begin", "left", "center", "right" and "end", where left/right always are left and right, or begin/end which are * dependent on the text direction. For the vertical position possible values are "top", "center" and "bottom". * Examples: "left top", "end bottom", "center center". * * @final * @namespace * @public */ thisLib.Dock = DataType.createType('sap.ui.core.Dock', { isValid : function(vValue) { return /^((begin|left|center|right|end) (top|center|bottom))$/.test(vValue); } }, DataType.getType('string') ); /** * Configuration options for horizontal alignments of controls. * * @enum {string} * @public */ thisLib.HorizontalAlign = { /** * Locale-specific positioning at the beginning of the line * @public */ Begin : "Begin", /** * Locale-specific positioning at the end of the line * @public */ End : "End", /** * Hard option for left alignment * @public */ Left : "Left", /** * Hard option for right alignment * @public */ Right : "Right", /** * Centered alignment of text * @public */ Center : "Center" }; DataType.registerEnum("sap.ui.core.HorizontalAlign", thisLib.HorizontalAlign); // expose ID type for compatibility reasons thisLib.ID = DataType.getType('sap.ui.core.ID'); /** * Interface for the controls which are suitable to shrink. * * This means the control should still look fine when it gets smaller than its normal size, * e.g. Text controls which can show ellipsis in case of shrink. * * Note: This marker interface can be implemented by controls to give a hint to the container. * The control itself does not need to implement anything. A parent control that respects this interface * will apply the "flex-shrink" as a CSS property which determines how much the item will shrink relative * to the rest of the items in the container when negative free space is distributed. * * @since 1.26 * @name sap.ui.core.IShrinkable * @interface * @public */ /** * Semantic Colors of an icon. * * @enum {string} * @public */ thisLib.IconColor = { /** * Default color (brand color) * @public */ Default : "Default", /** * Positive color * @public */ Positive : "Positive", /** * Negative color * @public */ Negative : "Negative", /** * Critical color * @public */ Critical : "Critical", /** * Neutral color. * @public */ Neutral : "Neutral", /** * Contrast color. * @public */ Contrast : "Contrast", /** * Color that indicates an icon which isn't interactive * @public * @since 1.76 */ NonInteractive : "NonInteractive", /** * Color for icon used in a Tile * @public * @since 1.76 */ Tile : "Tile", /** * Color for icon used as a marker * @public * @since 1.76 */ Marker : "Marker" }; DataType.registerEnum("sap.ui.core.IconColor", thisLib.IconColor); /** * State of the Input Method Editor (IME) for the control. * * Depending on its value, it allows users to enter and edit for example Chinese characters. * * @enum {string} * @public */ thisLib.ImeMode = { /** * The value is automatically computed by the user agent. * @public */ Auto : "Auto", /** * IME is used for entering characters. * @public */ Active : "Active", /** * IME is not used for entering characters. * @public */ Inactive : "Inactive", /** * IME is disabled. * @public */ Disabled : "Disabled" }; DataType.registerEnum("sap.ui.core.ImeMode", thisLib.ImeMode); /** * Marker interface for controls which are suitable for use as label. * * @name sap.ui.core.Label * @interface * @public */ /** * Defines a control, which can specify if it can be bound to a label * * @since 1.121.0 * @name sap.ui.core.ILabelable * @interface * @public */ /** * Returns if the control can be bound to a label * * @returns {boolean} <code>true</code> if the control can be bound to a label * @public * @function * @since 1.121.0 * @name sap.ui.core.ILabelable.hasLabelableHTMLElement */ /** * Colors to highlight certain UI elements. * * In contrast to the <code>ValueState</code>, the semantic meaning must be defined by the application. * * @enum {string} * @public * @since 1.62.0 * @see {@link fiori:/how-to-use-semantic-colors/ Semantic Colors} */ thisLib.IndicationColor = { /** * Indication Color 1 * @public */ Indication01 : "Indication01", /** * Indication Color 2 * @public */ Indication02 : "Indication02", /** * Indication Color 3 * @public */ Indication03 : "Indication03", /** * Indication Color 4 * @public */ Indication04 : "Indication04", /** * Indication Color 5 * @public */ Indication05 : "Indication05", /** * Indication Color 6 * @public * @since 1.75 */ Indication06 : "Indication06", /** * Indication Color 7 * @public * @since 1.75 */ Indication07 : "Indication07", /** * Indication Color 8 * @public * @since 1.75 */ Indication08 : "Indication08", /** * Indication Color 9 * @public * @since 1.120 */ Indication09 : "Indication09", /** * Indication Color 10 * @public * @since 1.120 */ Indication10 : "Indication10", /** * Indication Color 11 * @public * @since 1.120 */ Indication11 : "Indication11", /** * Indication Color 12 * @public * @since 1.120 */ Indication12 : "Indication12", /** * Indication Color 13 * @public * @since 1.120 */ Indication13 : "Indication13", /** * Indication Color 14 * @public * @since 1.120 */ Indication14 : "Indication14", /** * Indication Color 15 * @public * @since 1.120 */ Indication15 : "Indication15", /** * Indication Color 16 * @public * @since 1.120 */ Indication16 : "Indication16", /** * Indication Color 17 * @public * @since 1.120 */ Indication17 : "Indication17", /** * Indication Color 18 * @public * @since 1.120 */ Indication18 : "Indication18", /** * Indication Color 19 * @public * @since 1.120 */ Indication19 : "Indication19", /** * Indication Color 20 * @public * @since 1.120 */ Indication20 : "Indication20" }; DataType.registerEnum("sap.ui.core.IndicationColor", thisLib.IndicationColor); /** * Defines the different possible states of an element that can be open or closed and does not only * toggle between these states, but also spends some time in between (e.g. because of an animation). * * @enum {string} * @public */ thisLib.OpenState = { /** * Open and currently not changing states. * @public */ OPEN : "OPEN", /** * Closed and currently not changing states. * @public */ CLOSED : "CLOSED", /** * Already left the CLOSED state, is not OPEN yet, but in the process of getting OPEN. * @public */ OPENING : "OPENING", /** * Still open, but in the process of going to the CLOSED state. * @public */ CLOSING : "CLOSING" }; DataType.registerEnum("sap.ui.core.OpenState", thisLib.OpenState); /** * Orientation of a UI element. * * @enum {string} * @public * @since 1.22 */ thisLib.Orientation = { /** * Arrange Horizontally * @public */ Horizontal : "Horizontal", /** * Arrange Vertically * @public */ Vertical : "Vertical" }; DataType.registerEnum("sap.ui.core.Orientation", thisLib.Orientation); /** * @classdesc A string type that represents a percentage value. * * @final * @namespace * @public */ thisLib.Percentage = DataType.createType('sap.ui.core.Percentage', { isValid : function(vValue) { return /^([0-9][0-9]*(\.[0-9]+)?%)$/.test(vValue); } }, DataType.getType('string') ); /** * Priorities for general use. * * @enum {string} * @public */ thisLib.Priority = { /** * Default, none priority * @public */ None: "None", /** * Low priority * @public */ Low: "Low", /** * Medium priority * @public */ Medium: "Medium", /** * High priority * @public */ High: "High" }; DataType.registerEnum("sap.ui.core.Priority", thisLib.Priority); /** * Marker interface for controls that are not rendered "embedded" into other controls but need to be opened/closed. * * Such controls are handled differently during rendering. * * @since 1.19.0 * @name sap.ui.core.PopupInterface * @interface * @public */ /** * Actions are: Click on track, button, drag of thumb, or mouse wheel click. * * @enum {string} * @public */ thisLib.ScrollBarAction = { /** * Single step scrolling caused by clicking an arrow button or arrow key. * @public */ Step : "Step", /** * Range scrolling caused by clicking track area or using page up or page down key. * @public */ Page : "Page", /** * Scrolling done by mouse wheel * @public */ MouseWheel : "MouseWheel", /** * Scrolling done by dragging the scroll bar's paint thumb * @public */ Drag : "Drag" }; DataType.registerEnum("sap.ui.core.ScrollBarAction", thisLib.ScrollBarAction); /** * Defines the possible values for horizontal and vertical scrolling behavior. * * @enum {string} * @public */ thisLib.Scrolling = { /** * No scroll bar provided even if the content is larger than the available space. * @public */ None : "None", /** * A scroll bar is shown if the content requires more space than the given space (rectangle) provides. * @public */ Auto : "Auto", /** * A scroll bar is always shown even if the space is large enough for the current content. * @public */ Scroll : "Scroll", /** * No scroll bar is shown, and the content stays in the given rectangle. * @public */ Hidden : "Hidden" }; DataType.registerEnum("sap.ui.core.Scrolling", thisLib.Scrolling); /** * Sort order of a column. * * @version 1.147.0 * @enum {string} * @public * @since 1.61.0 */ thisLib.SortOrder = { /** * Sorting is not applied. * @public */ None : "None", /** * Sorting is done in ascending order. * @public */ Ascending : "Ascending", /** * Sorting is done in descending order. * @public */ Descending : "Descending" }; DataType.registerEnum("sap.ui.core.SortOrder", thisLib.SortOrder); /** * Configuration options for text alignments. * * @enum {string} * @public */ thisLib.TextAlign = { /** * Locale-specific positioning at the beginning of the line. * @public */ Begin : "Begin", /** * Locale-specific positioning at the end of the line. * @public */ End : "End", /** * Hard option for left alignment. * @public */ Left : "Left", /** * Hard option for right alignment. * @public */ Right : "Right", /** * Centered text alignment. * @public */ Center : "Center", /** * Sets no text align, so the browser default is used. * @public * @since 1.26.0 */ Initial : "Initial" }; DataType.registerEnum("sap.ui.core.TextAlign", thisLib.TextAlign); /** * Configuration options for the direction of texts. * * @enum {string} * @public */ thisLib.TextDirection = { /** * Specifies left-to-right text direction. * @public */ LTR : "LTR", /** * Specifies right-to-left text direction. * @public */ RTL : "RTL", /** * Inherits the direction from its parent control/container. * @public */ Inherit : "Inherit" }; DataType.registerEnum("sap.ui.core.TextDirection", thisLib.TextDirection); /** * Level of a title. * * @enum {string} * @public * @since 1.9.1 */ thisLib.TitleLevel = { /** * The level of the title is choosen by the control rendering the title. * @public */ Auto : "Auto", /** * The Title is of level 1. * @public */ H1 : "H1", /** * The Title is of level 2 * @public */ H2 : "H2", /** * The Title is of level 3 * @public */ H3 : "H3", /** * The Title is of level 4 * @public */ H4 : "H4", /** * The Title is of level 5 * @public */ H5 : "H5", /** * The Title is of level 6 * @public */ H6 : "H6" }; DataType.registerEnum("sap.ui.core.TitleLevel", thisLib.TitleLevel); /** * * Marker interface for toolbar controls. * * * @since 1.21.0 * @name sap.ui.core.Toolbar * @interface * @public */ /** * Marker interface for subclasses of <code>sap.ui.core.UIComponent</code>. * * Implementing this interface allows a {@link sap.ui.core.UIComponent} to be created fully asynchronously. * This interface will implicitly set the component's rootView and router configuration to async. * Nested views will also be handled asynchronously. * Additionally the error handling during the processing of views is stricter and will fail if a view definition contains * errors, e.g. broken binding strings. * * <b>Note:</b> Nested components (via {@link sap.ui.core.ComponentContainer}) are not handled asynchronously by default. * * When implementing this interface the {@link sap.ui.core.Component.create Component.create} factory's result Promise * will resolve once the defined <code>rootView</code> is fully processed. * * An asynchronous component can also return a Promise in its {@link sap.ui.core.UIComponent#createContent createContent} function. * This Promise will also be chained into the {@link sap.ui.core.Component.create Component.create} factory's result Promise. * * See {@link sap.ui.core.UIComponent#createContent} for more details and usage samples. * * @name sap.ui.core.IAsyncContentCreation * @interface * @public * @since 1.89.0 */ /** * Marker interface for container controls. * * Implementing this interface allows a container control to display a {@link sap.ui.core.Placeholder}. * This requires the container control to implement the <code>showPlaceholder</code> and <code>hidePlaceholder</code> * methods. * * Optionally, the <code>needPlaceholder</code> method can be implemented to defined, whether a placeholder is needed or not. * If implemented, this method must return a <code>boolean</code>. Depending on the return value, <code>showPlaceholder</code> * will be called or not. * * @name sap.ui.core.IPlaceholderSupport * @interface * @public * @since 1.92.0 */ /** * Marker interface for controls that can serve as a menu for a table column header. * * Implementation of this interface should include the <code>openBy</code>, <code>close</code>, <code>isOpen</code> and * <code>getAriaHasPopupType</code> methods and fire the <code>beforeOpen</code> and <code>afterClose</code> events. * * Refer to the base class {@link sap.m.table.columnmenu.MenuBase} for a detailed API description. * * @name sap.ui.core.IColumnHeaderMenu * @interface * @public * @since 1.98 * */ /** * Opens the menu using the column header. * @param {sap.ui.core.Control|HTMLElement} oAnchor Specifies the element where the menu is placed. * * @public * @function * @since 1.98 * @name sap.ui.core.IColumnHeaderMenu.openBy */ /** * Closes the menu. * * @public * @function * @since 1.126 * @name sap.ui.core.IColumnHeaderMenu.close */ /** * Determines whether the menu is open. * * @param {sap.ui.core.Element} openBy The element for which the menu is opened. If it is an <code>HTMLElement</code>, * the closest control is passed for this event (if it exists). * @returns {boolean} <code>true</code> if the menu is open, <code>false</code> otherwise * * @public * @function * @since 1.126 * @name sap.ui.core.IColumnHeaderMenu.isOpen */ /** * Returns the <code>sap.ui.core.aria.HasPopup</code> type of the menu. * * @returns {sap.ui.core.aria.HasPopup} <code>sap.ui.core.aria.HasPopup</code> type of the menu * * @public * @function * @since 1.98.0 * @name sap.ui.core.IColumnHeaderMenu.getAriaHasPopupType */ /** * Fires before the menu is opened. * * @public * @event * @since 1.126 * @name sap.ui.core.IColumnHeaderMenu.beforeOpen */ /** * Fires after the menu is closed. * * @public * @event * @since 1.126 * @name sap.ui.core.IColumnHeaderMenu.afterClose */ /** * Implementing this interface allows a control to be accessible via access keys. * * @name sap.ui.core.IAccessKeySupport * @interface * @public * @ui5-experimental-since 1.104 */ /** * Returns a refence to DOM element to be focused during Access key navigation. * If not implemented getFocusDomRef() method is used. * * @public