@openui5/sap.ui.core 1.134.0 → 1.135.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dtsgenrc +32 -0
- package/THIRDPARTY.txt +2 -2
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/Event.js +1 -1
- package/src/sap/base/Eventing.js +1 -1
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/LanguageFallback.js +344 -0
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/Localization.js +9 -4
- package/src/sap/base/i18n/ResourceBundle.js +40 -313
- package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +3 -3
- package/src/sap/ui/VersionInfo.js +24 -9
- package/src/sap/ui/base/Event.js +1 -1
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +108 -91
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +1 -1
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +52 -6
- package/src/sap/ui/core/ComponentContainer.js +4 -2
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +1 -1
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +11 -3
- package/src/sap/ui/core/CustomData.js +2 -2
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +14 -35
- package/src/sap/ui/core/ElementHooks.js +35 -0
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/Fragment.js +34 -11
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -1
- package/src/sap/ui/core/IconPool.js +11 -12
- package/src/sap/ui/core/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -1
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +1 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/Lib.js +12 -32
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +67 -93
- package/src/sap/ui/core/Manifest.js +5 -3
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/RenderManager.js +1 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/ShortcutHintsMixin.js +9 -0
- package/src/sap/ui/core/Theming.js +98 -1
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +1 -1
- package/src/sap/ui/core/UIComponent.js +6 -3
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +5 -1
- package/src/sap/ui/core/_CommandPool.js +80 -0
- package/src/sap/ui/core/boot/KeyboardInteractionEndpoint.js +124 -0
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/fieldhelp/FieldHelp.js +90 -48
- package/src/sap/ui/core/fieldhelp/FieldHelpCustomData.js +0 -4
- package/src/sap/ui/core/format/FormatUtils.js +1 -1
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/i18n/interaction.xml +31 -0
- package/src/sap/ui/core/interaction/KeyboardInteractionDisplay.js +332 -0
- package/src/sap/ui/core/library.js +6 -3
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/messagebundle.properties +14 -0
- package/src/sap/ui/core/messagebundle_ro.properties +2 -2
- package/src/sap/ui/core/messagebundle_th.properties +1 -1
- package/src/sap/ui/core/messagebundle_vi.properties +2 -2
- package/src/sap/ui/core/mvc/Controller.js +25 -11
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +43 -18
- package/src/sap/ui/core/mvc/XMLView.js +20 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +1 -1
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/support/techinfo/moduleTreeHelper.js +12 -0
- package/src/sap/ui/core/support/usage/EventBroadcaster.js +5 -5
- package/src/sap/ui/core/themes/base/base.less +398 -23
- package/src/sap/ui/core/themes/base/global.less +7 -0
- package/src/sap/ui/core/themes/base/icons/favicon.ico +0 -0
- package/src/sap/ui/core/themes/base/skeleton.less +11 -4
- package/src/sap/ui/core/themes/sap_hcb/.theming +2 -1
- package/src/sap/ui/core/theming/ThemeHelper.js +13 -0
- package/src/sap/ui/core/theming/ThemeManager.js +1 -1
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/webc/WebComponent.js +1 -1
- package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +1 -1
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +1 -1
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +5 -2
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataModel.js +36 -21
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +88 -33
- package/src/sap/ui/model/odata/v4/ODataBinding.js +15 -9
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +4 -4
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +84 -17
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +63 -4
- package/src/sap/ui/model/odata/v4/ODataModel.js +14 -2
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +5 -2
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -2
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +24 -6
- package/src/sap/ui/model/odata/v4/lib/_Batch.js +5 -1
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +30 -11
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +33 -17
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/TestUtils.js +1 -1
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader.js +19 -3
|
@@ -84,7 +84,7 @@ sap.ui.define([
|
|
|
84
84
|
* @extends sap.ui.core.Element
|
|
85
85
|
* @abstract
|
|
86
86
|
* @author SAP SE
|
|
87
|
-
* @version 1.
|
|
87
|
+
* @version 1.135.0
|
|
88
88
|
* @alias sap.ui.core.Control
|
|
89
89
|
*/
|
|
90
90
|
var Control = Element.extend("sap.ui.core.Control", /** @lends sap.ui.core.Control.prototype */ {
|
package/src/sap/ui/core/Core.js
CHANGED
|
@@ -118,7 +118,7 @@ sap.ui.define([
|
|
|
118
118
|
* @private
|
|
119
119
|
* @ui5-restricted sap.ui.core, sap.ui.test
|
|
120
120
|
*/
|
|
121
|
-
const sVersion = "1.
|
|
121
|
+
const sVersion = "1.135.0";
|
|
122
122
|
|
|
123
123
|
/**
|
|
124
124
|
* The buildinfo.
|
|
@@ -443,7 +443,7 @@ sap.ui.define([
|
|
|
443
443
|
* @extends sap.ui.base.Object
|
|
444
444
|
* @final
|
|
445
445
|
* @author SAP SE
|
|
446
|
-
* @version 1.
|
|
446
|
+
* @version 1.135.0
|
|
447
447
|
* @alias sap.ui.core.Core
|
|
448
448
|
* @public
|
|
449
449
|
* @hideconstructor
|
|
@@ -1134,6 +1134,9 @@ sap.ui.define([
|
|
|
1134
1134
|
// add FieldHelpEndpoint to list of modules
|
|
1135
1135
|
this.aModules.push("sap/ui/core/boot/FieldHelpEndpoint");
|
|
1136
1136
|
|
|
1137
|
+
// add KeyboardInteractionEndpoint to list of modules
|
|
1138
|
+
this.aModules.push("sap/ui/core/boot/KeyboardInteractionEndpoint");
|
|
1139
|
+
|
|
1137
1140
|
// load all modules now
|
|
1138
1141
|
if ( bAsync ) {
|
|
1139
1142
|
return this._requireModulesAsync().then(function() {
|
|
@@ -2770,6 +2773,11 @@ sap.ui.define([
|
|
|
2770
2773
|
}
|
|
2771
2774
|
};
|
|
2772
2775
|
|
|
2776
|
+
/**
|
|
2777
|
+
* Retrieve default propagated properties from a fresh MO (which then is garbage collected)
|
|
2778
|
+
* @deprecated As of 1.118, as it needs to be removed together with setModel
|
|
2779
|
+
*/
|
|
2780
|
+
const { oPropagatedProperties: defaultPropagatedProperties } = new ManagedObject();
|
|
2773
2781
|
|
|
2774
2782
|
/**
|
|
2775
2783
|
* Sets or unsets a model for the given model name.
|
|
@@ -2801,7 +2809,7 @@ sap.ui.define([
|
|
|
2801
2809
|
if (!oModel && this.oModels[sName]) {
|
|
2802
2810
|
delete this.oModels[sName];
|
|
2803
2811
|
if (isEmptyObject(that.oModels) && isEmptyObject(that.oBindingContexts)) {
|
|
2804
|
-
oProperties =
|
|
2812
|
+
oProperties = defaultPropagatedProperties;
|
|
2805
2813
|
} else {
|
|
2806
2814
|
oProperties = {
|
|
2807
2815
|
oModels: Object.assign({}, that.oModels),
|
|
@@ -24,12 +24,12 @@ sap.ui.define([
|
|
|
24
24
|
* in the documentation.
|
|
25
25
|
*
|
|
26
26
|
* @extends sap.ui.core.Element
|
|
27
|
-
* @version 1.
|
|
27
|
+
* @version 1.135.0
|
|
28
28
|
*
|
|
29
29
|
* @public
|
|
30
30
|
* @alias sap.ui.core.CustomData
|
|
31
31
|
*/
|
|
32
|
-
var CustomData = Element.
|
|
32
|
+
var CustomData = Element.getMetadata().getAggregation("customData").defaultClass;
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* Creates a new subclass of <code>CustomData</code> with name <code>sClassName</code>
|
|
@@ -9,6 +9,7 @@ sap.ui.define([
|
|
|
9
9
|
'../base/DataType',
|
|
10
10
|
'../base/Object',
|
|
11
11
|
'../base/ManagedObject',
|
|
12
|
+
'./ElementHooks',
|
|
12
13
|
'./ElementMetadata',
|
|
13
14
|
'./FocusMode',
|
|
14
15
|
'../Device',
|
|
@@ -30,6 +31,7 @@ sap.ui.define([
|
|
|
30
31
|
DataType,
|
|
31
32
|
BaseObject,
|
|
32
33
|
ManagedObject,
|
|
34
|
+
ElementHooks,
|
|
33
35
|
ElementMetadata,
|
|
34
36
|
FocusMode,
|
|
35
37
|
Device,
|
|
@@ -140,7 +142,7 @@ sap.ui.define([
|
|
|
140
142
|
*
|
|
141
143
|
* @extends sap.ui.base.ManagedObject
|
|
142
144
|
* @author SAP SE
|
|
143
|
-
* @version 1.
|
|
145
|
+
* @version 1.135.0
|
|
144
146
|
* @public
|
|
145
147
|
* @alias sap.ui.core.Element
|
|
146
148
|
*/
|
|
@@ -938,7 +940,7 @@ sap.ui.define([
|
|
|
938
940
|
var bHasNoParent = !this.getParent();
|
|
939
941
|
|
|
940
942
|
// update the focus information (potentially) stored by the central UI5 focus handling
|
|
941
|
-
|
|
943
|
+
updateFocusInfo(this);
|
|
942
944
|
|
|
943
945
|
|
|
944
946
|
ManagedObject.prototype.destroy.call(this, bSuppressInvalidate);
|
|
@@ -992,28 +994,11 @@ sap.ui.define([
|
|
|
992
994
|
mParameters = mParameters || {};
|
|
993
995
|
mParameters.id = mParameters.id || this.getId();
|
|
994
996
|
|
|
995
|
-
|
|
996
|
-
Element._interceptEvent(sEventId, this, mParameters);
|
|
997
|
-
}
|
|
997
|
+
ElementHooks.interceptEvent?.(sEventId, this, mParameters);
|
|
998
998
|
|
|
999
999
|
return ManagedObject.prototype.fireEvent.call(this, sEventId, mParameters, bAllowPreventDefault, bEnableEventBubbling);
|
|
1000
1000
|
};
|
|
1001
1001
|
|
|
1002
|
-
/**
|
|
1003
|
-
* Intercepts an event. This method is meant for private usages. Apps are not supposed to used it.
|
|
1004
|
-
* It is created for an experimental purpose.
|
|
1005
|
-
* Implementation should be injected by outside.
|
|
1006
|
-
*
|
|
1007
|
-
* @param {string} sEventId the name of the event
|
|
1008
|
-
* @param {sap.ui.core.Element} oElement the element itself
|
|
1009
|
-
* @param {object} mParameters The parameters which complement the event. Hooks must not modify the parameters.
|
|
1010
|
-
* @function
|
|
1011
|
-
* @private
|
|
1012
|
-
* @ui5-restricted
|
|
1013
|
-
* @experimental Since 1.58
|
|
1014
|
-
*/
|
|
1015
|
-
Element._interceptEvent = undefined;
|
|
1016
|
-
|
|
1017
1002
|
/**
|
|
1018
1003
|
* Updates the count of rendering-related delegates and if the given threshold is reached,
|
|
1019
1004
|
* informs the RenderManager` to enable/disable rendering V4 for the element.
|
|
@@ -1827,12 +1812,6 @@ sap.ui.define([
|
|
|
1827
1812
|
}
|
|
1828
1813
|
};
|
|
1829
1814
|
|
|
1830
|
-
/**
|
|
1831
|
-
* Expose CustomData class privately
|
|
1832
|
-
* @private
|
|
1833
|
-
*/
|
|
1834
|
-
Element._CustomData = CustomData;
|
|
1835
|
-
|
|
1836
1815
|
/**
|
|
1837
1816
|
* Define CustomData class as the default for the built-in "customData" aggregation.
|
|
1838
1817
|
* We need to do this here via the aggregation itself, since the CustomData class is
|
|
@@ -1975,11 +1954,13 @@ sap.ui.define([
|
|
|
1975
1954
|
*
|
|
1976
1955
|
* There's no difference between <code>bindElement</code> and {@link sap.ui.base.ManagedObject#bindObject}.
|
|
1977
1956
|
*
|
|
1978
|
-
* @param {
|
|
1957
|
+
* @param {sap.ui.base.ManagedObject.ObjectBindingInfo|string} vBindingInfo A <code>BindingInfo</code> object or just the path, if no further properties are required
|
|
1979
1958
|
* @param {object} [mParameters] map of additional parameters for this binding.
|
|
1980
1959
|
* Only taken into account when <code>vPath</code> is a string. In that case it corresponds to <code>mParameters</code> of {@link sap.ui.base.ManagedObject.ObjectBindingInfo}.
|
|
1981
1960
|
* The supported parameters are listed in the corresponding model-specific implementation of <code>sap.ui.model.ContextBinding</code>.
|
|
1982
1961
|
*
|
|
1962
|
+
* Providing 'parameters' as positional parameter is deprecated as of 1.135.0. Provide them as part of a <code>BindingInfo</code> object instead.
|
|
1963
|
+
*
|
|
1983
1964
|
* @returns {this} reference to the instance itself
|
|
1984
1965
|
* @public
|
|
1985
1966
|
* @function
|
|
@@ -2240,16 +2221,14 @@ sap.ui.define([
|
|
|
2240
2221
|
}
|
|
2241
2222
|
};
|
|
2242
2223
|
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
FocusHandler
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
}
|
|
2249
|
-
};
|
|
2224
|
+
let FocusHandler;
|
|
2225
|
+
function updateFocusInfo(oElement) {
|
|
2226
|
+
FocusHandler ??= sap.ui.require("sap/ui/core/FocusHandler");
|
|
2227
|
+
FocusHandler?.updateControlFocusInfo(oElement);
|
|
2228
|
+
}
|
|
2250
2229
|
|
|
2251
2230
|
/**
|
|
2252
|
-
* Returns the nearest
|
|
2231
|
+
* Returns the nearest {@link sap.ui.core.Element UI5 Element} that wraps the given DOM element.
|
|
2253
2232
|
*
|
|
2254
2233
|
* A DOM element or a CSS selector is accepted as a given parameter. When a CSS selector is given as parameter, only
|
|
2255
2234
|
* the first DOM element that matches the CSS selector is taken to find the nearest UI5 Element that wraps it. When
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* OpenUI5
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
|
+
*/
|
|
6
|
+
sap.ui.define([], function() {
|
|
7
|
+
"use strict";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A registry of <code>sap.ui.core.Element</code> hooks that can be used to register, deregister callback functions.
|
|
11
|
+
*
|
|
12
|
+
* @alias module:sap/ui/core/ElementHooks
|
|
13
|
+
* @namespace
|
|
14
|
+
* @private
|
|
15
|
+
* @ui5-restricted sap.ui.core
|
|
16
|
+
*/
|
|
17
|
+
const ElementHooks = {
|
|
18
|
+
/**
|
|
19
|
+
* Intercepts an event. This method is meant for private usages. Apps are not supposed to used it.
|
|
20
|
+
* It is created for an experimental purpose.
|
|
21
|
+
* Implementation should be injected by outside.
|
|
22
|
+
*
|
|
23
|
+
* @param {string} sEventId the name of the event
|
|
24
|
+
* @param {sap.ui.core.Element} oElement the element itself
|
|
25
|
+
* @param {object} mParameters The parameters which complement the event. Hooks must not modify the parameters.
|
|
26
|
+
* @function
|
|
27
|
+
* @private
|
|
28
|
+
* @ui5-restricted sap.ui.core.support.usage.EventBroadcaster
|
|
29
|
+
* @experimental Since 1.58
|
|
30
|
+
*/
|
|
31
|
+
interceptEvent: null
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
return ElementHooks;
|
|
35
|
+
});
|
|
@@ -43,7 +43,7 @@ sap.ui.define(["./FocusMode"], function(FocusMode) {
|
|
|
43
43
|
*
|
|
44
44
|
* @param {boolean} [bDefault=true] Value that should be used as default value for the enhancement of the control.
|
|
45
45
|
* @param {boolean} [bLegacy=false] Whether the introduced property should use the old name <code>Enabled</code>.
|
|
46
|
-
* @version 1.
|
|
46
|
+
* @version 1.135.0
|
|
47
47
|
* @public
|
|
48
48
|
* @class
|
|
49
49
|
* @alias sap.ui.core.EnabledPropagator
|
|
@@ -99,7 +99,7 @@ function(
|
|
|
99
99
|
* @class
|
|
100
100
|
* @extends sap.ui.base.ManagedObject
|
|
101
101
|
* @author SAP SE
|
|
102
|
-
* @version 1.
|
|
102
|
+
* @version 1.135.0
|
|
103
103
|
* @public
|
|
104
104
|
* @alias sap.ui.core.Fragment
|
|
105
105
|
*/
|
|
@@ -410,6 +410,10 @@ function(
|
|
|
410
410
|
return oSupportInfo;
|
|
411
411
|
});
|
|
412
412
|
|
|
413
|
+
if ((typeof vName === "object" && vName.fragmentName?.startsWith("module:")) || (typeof vName === "string" && vName.startsWith("module:"))) {
|
|
414
|
+
throw new Error(`sap.ui.fragment(): module name syntax '${vName.fragmentName || vName}' is not supported.`);
|
|
415
|
+
}
|
|
416
|
+
|
|
413
417
|
return fragmentFactory(vName, vType, oController);
|
|
414
418
|
};
|
|
415
419
|
|
|
@@ -511,7 +515,7 @@ function(
|
|
|
511
515
|
* });
|
|
512
516
|
* });
|
|
513
517
|
*
|
|
514
|
-
* @example <caption>Creating an XML
|
|
518
|
+
* @example <caption>Creating an XML fragment</caption>
|
|
515
519
|
* sap.ui.require(["sap/ui/core/Fragment"], async (Fragment) => {
|
|
516
520
|
* const myFrag = await Fragment.load({
|
|
517
521
|
* type: "XML",
|
|
@@ -519,15 +523,15 @@ function(
|
|
|
519
523
|
* });
|
|
520
524
|
* });
|
|
521
525
|
*
|
|
522
|
-
* @example <caption>Creating
|
|
526
|
+
* @example <caption>Creating a JS fragment</caption>
|
|
523
527
|
* sap.ui.require(["sap/ui/core/Fragment"], async (Fragment) => {
|
|
524
528
|
* const myFrag = await Fragment.load({
|
|
525
|
-
* name: "my
|
|
529
|
+
* name: "module:my/sample/AsyncButton",
|
|
526
530
|
* type: "JS",
|
|
527
531
|
* });
|
|
528
532
|
* });
|
|
529
533
|
*
|
|
530
|
-
* @example <caption>Creating an HTML
|
|
534
|
+
* @example <caption>Creating an HTML fragment (deprecated)</caption>
|
|
531
535
|
* sap.ui.require(["sap/ui/core/Fragment"], async (Fragment) => {
|
|
532
536
|
* const myFrag = await Fragment.load({
|
|
533
537
|
* type: "HTML",
|
|
@@ -539,12 +543,13 @@ function(
|
|
|
539
543
|
* The containing view should be the View instance into which the fragment content will be inserted manually.
|
|
540
544
|
*
|
|
541
545
|
* @param {object} mOptions options map
|
|
542
|
-
* @param {string} [mOptions.name]
|
|
543
|
-
* can be loaded via the module system
|
|
544
|
-
* (fragmentName + suffix <code>.fragment.<i><typeExtension></i></code>)
|
|
546
|
+
* @param {string} [mOptions.name] Must be provided if no <code>definition</code> parameter is given. The fragment name must correspond to an XML fragment which
|
|
547
|
+
* can be loaded via the module system and must contain the fragment definition. It can be specified either in dot notation
|
|
548
|
+
* (fragmentName + suffix <code>.fragment.<i><typeExtension></i></code>) or, for JS fragments, in module name syntax (<code>module:my/sample/AsyncButton</code>).
|
|
545
549
|
* If <code>mOptions.controller</code> is supplied, the (event handler) methods referenced in the fragment will be called on that controller.
|
|
546
550
|
* Note that fragments may require a controller to be given and certain methods to be implemented by it.
|
|
547
|
-
* @param {string} [mOptions.type=XML] the fragment type, e.g. <code>"XML"</code>, <code>"JS"</code>, or <code>"HTML"</code> (type <code>"HTML"</code> is deprecated). Default is <code>"XML"</code
|
|
551
|
+
* @param {string} [mOptions.type=XML] the fragment type, e.g. <code>"XML"</code>, <code>"JS"</code>, or <code>"HTML"</code> (type <code>"HTML"</code> is deprecated). Default is <code>"XML"</code>.
|
|
552
|
+
* If the fragment name is given in module name syntax (e.g., <code>module:my/sample/AsyncButton</code>) the type must be omitted.
|
|
548
553
|
* @param {string} [mOptions.definition] definition of the fragment content. When this property is supplied, the <code>name</code> parameter must not be used. If both are supplied, the definition has priority.
|
|
549
554
|
* Please see the above example on how to use the <code>definition</code> parameter.
|
|
550
555
|
* @param {string} [mOptions.id] the ID of the fragment
|
|
@@ -555,6 +560,7 @@ function(
|
|
|
555
560
|
* @static
|
|
556
561
|
* @since 1.58
|
|
557
562
|
* @returns {Promise<sap.ui.core.Control|sap.ui.core.Control[]>} a <code>Promise</code> resolving with the resulting control (array) after fragment parsing and instantiation
|
|
563
|
+
* @throws {TypeError} If the fragment name is given in module name syntax and a fragment type is provided.
|
|
558
564
|
*/
|
|
559
565
|
Fragment.load = function(mOptions) {
|
|
560
566
|
var mParameters = Object.assign({}, mOptions);
|
|
@@ -564,7 +570,17 @@ function(
|
|
|
564
570
|
delete mParameters.name;
|
|
565
571
|
}
|
|
566
572
|
|
|
567
|
-
|
|
573
|
+
// Sanity check and default fragment type handling
|
|
574
|
+
if (mParameters.name?.startsWith("module:")) {
|
|
575
|
+
if (mParameters.type) {
|
|
576
|
+
throw new TypeError(`Invalid arguments: If the fragment name is given in module name syntax the type must be omitted. Found type: '${mParameters.type}'.`);
|
|
577
|
+
} else {
|
|
578
|
+
mParameters.type = "JS";
|
|
579
|
+
}
|
|
580
|
+
} else {
|
|
581
|
+
mParameters.type ??= "XML";
|
|
582
|
+
}
|
|
583
|
+
|
|
568
584
|
mParameters.async = true;
|
|
569
585
|
|
|
570
586
|
/**
|
|
@@ -905,7 +921,14 @@ function(
|
|
|
905
921
|
|
|
906
922
|
Fragment.registerType("JS", {
|
|
907
923
|
load: function(mSettings) {
|
|
908
|
-
|
|
924
|
+
let sFragmentPath;
|
|
925
|
+
// Handle module: syntax
|
|
926
|
+
if (mSettings.fragmentName.startsWith("module:")) {
|
|
927
|
+
sFragmentPath = mSettings.fragmentName.substring(7);
|
|
928
|
+
} else {
|
|
929
|
+
// Handle dot-separated syntax
|
|
930
|
+
sFragmentPath = mSettings.fragmentName.replace(/\./g, "/") + ".fragment";
|
|
931
|
+
}
|
|
909
932
|
return new Promise(function(resolve, reject) {
|
|
910
933
|
sap.ui.require([sFragmentPath], function(content) {
|
|
911
934
|
resolve(content);
|
package/src/sap/ui/core/HTML.js
CHANGED
package/src/sap/ui/core/Icon.js
CHANGED
|
@@ -282,18 +282,17 @@ sap.ui.define([
|
|
|
282
282
|
"application/vnd.ms-excel": "sap-icon://excel-attachment",
|
|
283
283
|
// 2007 and later (.xlsx)
|
|
284
284
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "sap-icon://excel-attachment",
|
|
285
|
-
//
|
|
286
|
-
"application/vnd.ms-excel.sheet.
|
|
287
|
-
//
|
|
285
|
+
// macro enabled (.xlsm)
|
|
286
|
+
"application/vnd.ms-excel.sheet.macroenabled.12": "sap-icon://excel-attachment",
|
|
287
|
+
// template files (.xltx)
|
|
288
288
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.template": "sap-icon://excel-attachment",
|
|
289
|
-
//
|
|
290
|
-
"application/vnd.ms-excel.template.
|
|
291
|
-
//
|
|
292
|
-
"application/vnd.ms-excel.sheet.binary.
|
|
293
|
-
//
|
|
294
|
-
"application/vnd.ms-excel.addin.
|
|
295
|
-
|
|
296
|
-
//Google Sheets document
|
|
289
|
+
// macro enabled template files (.xltm)
|
|
290
|
+
"application/vnd.ms-excel.template.macroenabled.12": "sap-icon://excel-attachment",
|
|
291
|
+
// binary workbook files (.xlsb)
|
|
292
|
+
"application/vnd.ms-excel.sheet.binary.macroenabled.12": "sap-icon://excel-attachment",
|
|
293
|
+
// add-in files (.xlam)
|
|
294
|
+
"application/vnd.ms-excel.addin.macroenabled.12": "sap-icon://excel-attachment",
|
|
295
|
+
// Google Sheets document
|
|
297
296
|
"application/vnd.google-apps.spreadsheet": "sap-icon://excel-attachment",
|
|
298
297
|
|
|
299
298
|
"application/vnd.ms-powerpoint": "sap-icon://ppt-attachment",
|
|
@@ -350,7 +349,7 @@ sap.ui.define([
|
|
|
350
349
|
* @since 1.25.0
|
|
351
350
|
*/
|
|
352
351
|
IconPool.getIconForMimeType = function (sMimeType) {
|
|
353
|
-
return mIconForMimeType[sMimeType] || "sap-icon://document";
|
|
352
|
+
return mIconForMimeType[sMimeType?.toLowerCase()] || "sap-icon://document";
|
|
354
353
|
};
|
|
355
354
|
|
|
356
355
|
return IconPool;
|
|
@@ -12,7 +12,7 @@ sap.ui.define([], function() {
|
|
|
12
12
|
* Provides the default renderer for the controls that have set their <code>visible</code> property to <code>false</code>.
|
|
13
13
|
*
|
|
14
14
|
* @author SAP SE
|
|
15
|
-
* @version 1.
|
|
15
|
+
* @version 1.135.0
|
|
16
16
|
* @alias module:sap/ui/core/InvisibleRenderer
|
|
17
17
|
* @since 1.66.0
|
|
18
18
|
* @protected
|
package/src/sap/ui/core/Item.js
CHANGED
|
@@ -192,7 +192,7 @@ sap.ui.define(['../base/ManagedObject', "sap/base/assert"],
|
|
|
192
192
|
* @see sap.ui.core.LabelEnablement#enrich
|
|
193
193
|
*
|
|
194
194
|
* @author SAP SE
|
|
195
|
-
* @version 1.
|
|
195
|
+
* @version 1.135.0
|
|
196
196
|
* @protected
|
|
197
197
|
* @alias sap.ui.core.LabelEnablement
|
|
198
198
|
* @namespace
|
package/src/sap/ui/core/Lib.js
CHANGED
|
@@ -613,29 +613,7 @@ sap.ui.define([
|
|
|
613
613
|
|
|
614
614
|
if (aDependencies && aDependencies.length) {
|
|
615
615
|
if (!mOptions.sync) {
|
|
616
|
-
|
|
617
|
-
aLazyDependencies = [];
|
|
618
|
-
|
|
619
|
-
aDependencies.forEach(function(oDependency) {
|
|
620
|
-
if (oDependency.lazy) {
|
|
621
|
-
aLazyDependencies.push(oDependency);
|
|
622
|
-
} else {
|
|
623
|
-
aEagerDependencies.push(oDependency.name);
|
|
624
|
-
}
|
|
625
|
-
});
|
|
626
|
-
// aEagerDependencies contains string elements before executing the next line
|
|
627
|
-
|
|
628
|
-
aEagerDependencies = VersionInfo._getTransitiveDependencyForLibraries(aEagerDependencies)
|
|
629
|
-
.map(function(sDependencyName) {
|
|
630
|
-
return {
|
|
631
|
-
name: sDependencyName
|
|
632
|
-
};
|
|
633
|
-
});
|
|
634
|
-
// aEagerDependencies contains object elements after executing the above line
|
|
635
|
-
|
|
636
|
-
// combine transitive closure of eager dependencies and direct lazy dependencies,
|
|
637
|
-
// the latter might be redundant
|
|
638
|
-
aDependencies = aEagerDependencies.concat(aLazyDependencies);
|
|
616
|
+
aDependencies = VersionInfo._getTransitiveDependencyForLibraries(aDependencies);
|
|
639
617
|
}
|
|
640
618
|
|
|
641
619
|
aPromises = aDependencies.map(function(oDependency) {
|
|
@@ -1028,7 +1006,9 @@ sap.ui.define([
|
|
|
1028
1006
|
// add known library name to cache to avoid later guessing
|
|
1029
1007
|
mGuessedLibraries[sBundleUrl] = this;
|
|
1030
1008
|
|
|
1031
|
-
|
|
1009
|
+
const fnResourceBundleCreate = bSync ? ResourceBundle._createSync : ResourceBundle.create;
|
|
1010
|
+
|
|
1011
|
+
vResult = fnResourceBundleCreate({
|
|
1032
1012
|
bundleUrl: sBundleUrl,
|
|
1033
1013
|
supportedLocales: vI18n.supportedLocales,
|
|
1034
1014
|
fallbackLocale: vI18n.fallbackLocale,
|
|
@@ -1648,15 +1628,15 @@ sap.ui.define([
|
|
|
1648
1628
|
}
|
|
1649
1629
|
|
|
1650
1630
|
var mAdditionalConfig = {};
|
|
1651
|
-
var
|
|
1631
|
+
var aAllLibraries = [];
|
|
1652
1632
|
vLibConfigs.forEach(function(vLibrary) {
|
|
1653
1633
|
if (typeof vLibrary === "object") {
|
|
1654
1634
|
if (vLibrary.hasOwnProperty("url") || vLibrary.hasOwnProperty("json")) {
|
|
1655
1635
|
mAdditionalConfig[vLibrary.name] = vLibrary;
|
|
1656
1636
|
}
|
|
1657
|
-
|
|
1637
|
+
aAllLibraries.push(vLibrary);
|
|
1658
1638
|
} else {
|
|
1659
|
-
|
|
1639
|
+
aAllLibraries.push({name: vLibrary});
|
|
1660
1640
|
}
|
|
1661
1641
|
});
|
|
1662
1642
|
|
|
@@ -1664,14 +1644,14 @@ sap.ui.define([
|
|
|
1664
1644
|
bRequire = !mOptions.preloadOnly;
|
|
1665
1645
|
|
|
1666
1646
|
if (!mOptions.sync) {
|
|
1667
|
-
|
|
1647
|
+
aAllLibraries = VersionInfo._getTransitiveDependencyForLibraries(aAllLibraries);
|
|
1668
1648
|
}
|
|
1669
1649
|
|
|
1670
|
-
var aLibs =
|
|
1671
|
-
var oLib = Library._get(
|
|
1650
|
+
var aLibs = aAllLibraries.map(function(oLibrary) {
|
|
1651
|
+
var oLib = Library._get(oLibrary.name, true /* bCreate */);
|
|
1672
1652
|
|
|
1673
|
-
if (oLib._loadingStatus == null && mAdditionalConfig[
|
|
1674
|
-
registerModulePath(
|
|
1653
|
+
if (oLib._loadingStatus == null && mAdditionalConfig[oLibrary.name] && mAdditionalConfig[oLibrary.name].url) {
|
|
1654
|
+
registerModulePath(oLibrary.name, mAdditionalConfig[oLibrary.name].url);
|
|
1675
1655
|
}
|
|
1676
1656
|
|
|
1677
1657
|
return oLib;
|