@openui5/sap.ui.core 1.94.0 → 1.97.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/.eslintrc.json +15 -4
- package/.reuse/dep5 +12 -12
- package/THIRDPARTY.txt +21 -17
- 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 +2 -2
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/i18n/ResourceBundle.js +6 -2
- 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 +15 -11
- package/src/sap/ui/Global.js +13 -17
- package/src/sap/ui/base/DataType.js +14 -8
- 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 +13 -8
- package/src/sap/ui/base/ManagedObjectMetadata.js +2 -2
- package/src/sap/ui/base/Metadata.js +1 -3
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +6 -32
- package/src/sap/ui/core/AppCacheBuster.js +8 -8
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +303 -135
- package/src/sap/ui/core/ComponentContainer.js +11 -7
- 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 +67 -31
- package/src/sap/ui/core/Control.js +2 -2
- package/src/sap/ui/core/Core.js +79 -15
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +2 -6
- 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/ExtensionPoint.js +6 -13
- package/src/sap/ui/core/Fragment.js +30 -32
- package/src/sap/ui/core/HTML.js +3 -3
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +7 -8
- package/src/sap/ui/core/IconPool.js +26 -1097
- package/src/sap/ui/core/IconRenderer.js +6 -6
- 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/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/Locale.js +26 -4
- package/src/sap/ui/core/LocaleData.js +3 -3
- package/src/sap/ui/core/Manifest.js +2 -60
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Patcher.js +27 -3
- package/src/sap/ui/core/Placeholder.js +4 -4
- package/src/sap/ui/core/RenderManager.js +38 -8
- package/src/sap/ui/core/Renderer.js +13 -3
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +4 -3
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
- package/src/sap/ui/core/ThemeCheck.js +2 -2
- 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 +3 -3
- package/src/sap/ui/core/UIComponent.js +19 -11
- 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 +2 -2
- package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
- package/src/sap/ui/core/XMLTemplateProcessor.js +132 -43
- package/src/sap/ui/core/_IconRegistry.js +1148 -0
- package/src/sap/ui/core/cache/LRUPersistentCache.js +4 -2
- package/src/sap/ui/core/date/UniversalDateUtils.js +33 -0
- 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/format/NumberFormat.js +16 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +61 -80
- package/src/sap/ui/core/library.js +5 -5
- package/src/sap/ui/core/message/ControlMessageProcessor.js +5 -5
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +13 -15
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +22 -12
- package/src/sap/ui/core/messagebundle_de.properties +1 -1
- package/src/sap/ui/core/messagebundle_fr.properties +8 -8
- package/src/sap/ui/core/messagebundle_it.properties +1 -1
- package/src/sap/ui/core/messagebundle_pl.properties +1 -1
- package/src/sap/ui/core/messagebundle_ru.properties +21 -21
- package/src/sap/ui/core/messagebundle_th.properties +2 -2
- package/src/sap/ui/core/mvc/Controller.js +5 -5
- package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
- package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
- package/src/sap/ui/core/mvc/HTMLView.js +2 -2
- package/src/sap/ui/core/mvc/JSONView.js +2 -2
- package/src/sap/ui/core/mvc/JSView.js +2 -2
- package/src/sap/ui/core/mvc/TemplateView.js +2 -2
- package/src/sap/ui/core/mvc/View.js +58 -85
- package/src/sap/ui/core/mvc/XMLView.js +2 -2
- package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
- 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/routing/Route.js +10 -1
- package/src/sap/ui/core/routing/Router.js +16 -6
- package/src/sap/ui/core/routing/Targets.js +26 -0
- package/src/sap/ui/core/routing/async/Route.js +6 -3
- package/src/sap/ui/core/routing/async/Target.js +28 -4
- package/src/sap/ui/core/routing/sync/Target.js +15 -0
- package/src/sap/ui/core/rules/Misc.support.js +51 -1
- package/src/sap/ui/core/rules/Rendering.support.js +1 -4
- package/src/sap/ui/core/rules/View.support.js +14 -46
- 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 +2 -2
- package/src/sap/ui/core/support/RuleEngineOpaExtension.js +0 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/controls/TreeViewer.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +37 -43
- 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 -2
- 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 +2 -2
- package/src/sap/ui/core/support/support.css +2 -8
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +150 -73
- package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
- package/src/sap/ui/core/themes/base/Icon.less +9 -0
- package/src/sap/ui/core/themes/base/SAP-icons.css +2 -0
- package/src/sap/ui/core/themes/base/SAP-icons.less +10 -0
- package/src/sap/ui/core/themes/base/base.less +543 -390
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/global.less +38 -0
- package/src/sap/ui/core/themes/base/library.source.less +1 -2
- package/src/sap/ui/core/themes/sap_hcb/global.less +34 -0
- package/src/sap/ui/core/theming/Parameters.js +21 -0
- 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 +2 -2
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
- package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +10 -12
- package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +6 -3
- 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/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/Highlighter.js +8 -2
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/Binding.js +174 -118
- package/src/sap/ui/model/ChangeReason.js +1 -1
- package/src/sap/ui/model/ClientContextBinding.js +1 -1
- package/src/sap/ui/model/ClientListBinding.js +8 -3
- package/src/sap/ui/model/ClientModel.js +9 -8
- package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
- package/src/sap/ui/model/ClientTreeBinding.js +15 -9
- package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
- package/src/sap/ui/model/CompositeBinding.js +98 -77
- package/src/sap/ui/model/CompositeDataState.js +2 -2
- package/src/sap/ui/model/CompositeType.js +2 -2
- package/src/sap/ui/model/Context.js +4 -2
- package/src/sap/ui/model/ContextBinding.js +6 -14
- package/src/sap/ui/model/DataState.js +2 -2
- package/src/sap/ui/model/Filter.js +255 -53
- package/src/sap/ui/model/FilterOperator.js +1 -1
- package/src/sap/ui/model/FilterProcessor.js +27 -17
- package/src/sap/ui/model/FilterType.js +1 -1
- package/src/sap/ui/model/ListBinding.js +200 -118
- package/src/sap/ui/model/MetaModel.js +4 -9
- package/src/sap/ui/model/Model.js +349 -303
- package/src/sap/ui/model/PropertyBinding.js +92 -58
- package/src/sap/ui/model/SelectionModel.js +2 -2
- package/src/sap/ui/model/SimpleType.js +2 -2
- package/src/sap/ui/model/Sorter.js +1 -1
- package/src/sap/ui/model/SorterProcessor.js +1 -1
- package/src/sap/ui/model/StaticBinding.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
- package/src/sap/ui/model/TreeBinding.js +1 -1
- package/src/sap/ui/model/TreeBindingAdapter.js +249 -100
- package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
- package/src/sap/ui/model/TreeBindingUtils.js +3 -0
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +20 -10
- package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +17 -19
- package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
- package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
- package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
- package/src/sap/ui/model/analytics/odata4analytics.js +3 -2
- package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
- package/src/sap/ui/model/json/JSONListBinding.js +8 -5
- package/src/sap/ui/model/json/JSONModel.js +29 -20
- package/src/sap/ui/model/json/JSONPropertyBinding.js +5 -4
- package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
- package/src/sap/ui/model/message/MessageListBinding.js +6 -3
- package/src/sap/ui/model/message/MessageModel.js +25 -17
- package/src/sap/ui/model/message/MessagePropertyBinding.js +3 -3
- package/src/sap/ui/model/odata/AnnotationHelper.js +3 -3
- package/src/sap/ui/model/odata/AnnotationParser.js +5 -3
- package/src/sap/ui/model/odata/CountMode.js +1 -1
- package/src/sap/ui/model/odata/Filter.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
- package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +62 -39
- package/src/sap/ui/model/odata/ODataMessageParser.js +3 -3
- package/src/sap/ui/model/odata/ODataMetaModel.js +6 -4
- package/src/sap/ui/model/odata/ODataMetadata.js +137 -86
- package/src/sap/ui/model/odata/ODataModel.js +443 -216
- package/src/sap/ui/model/odata/ODataPropertyBinding.js +8 -6
- package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
- package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +28 -18
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +442 -262
- package/src/sap/ui/model/odata/ODataUtils.js +36 -19
- package/src/sap/ui/model/odata/OperationMode.js +1 -1
- package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +2 -1
- package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +11 -9
- package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +6 -4
- 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/Decimal.js +5 -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/type/UnitMixin.js +0 -1
- package/src/sap/ui/model/odata/v2/Context.js +98 -17
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +416 -132
- package/src/sap/ui/model/odata/v2/ODataModel.js +465 -250
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +191 -109
- package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +179 -0
- package/src/sap/ui/model/odata/v4/Context.js +48 -7
- package/src/sap/ui/model/odata/v4/ODataBinding.js +60 -30
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +177 -53
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +304 -91
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +32 -20
- package/src/sap/ui/model/odata/v4/ODataModel.js +29 -15
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +83 -51
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +13 -9
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +115 -19
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +35 -5
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +50 -5
- package/src/sap/ui/model/resource/ResourceModel.js +6 -2
- package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +2 -2
- package/src/sap/ui/model/type/Currency.js +2 -2
- package/src/sap/ui/model/type/Date.js +9 -3
- package/src/sap/ui/model/type/DateInterval.js +4 -2
- package/src/sap/ui/model/type/DateTime.js +2 -2
- package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
- package/src/sap/ui/model/type/FileSize.js +4 -2
- package/src/sap/ui/model/type/Float.js +4 -2
- package/src/sap/ui/model/type/Integer.js +4 -2
- package/src/sap/ui/model/type/String.js +2 -2
- package/src/sap/ui/model/type/Time.js +2 -2
- package/src/sap/ui/model/type/TimeInterval.js +2 -2
- package/src/sap/ui/model/type/Unit.js +14 -7
- package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
- package/src/sap/ui/model/xml/XMLModel.js +74 -45
- package/src/sap/ui/model/xml/XMLPropertyBinding.js +5 -5
- package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
- package/src/sap/ui/performance/trace/Interaction.js +30 -15
- package/src/sap/ui/qunit/QUnitUtils.js +3 -2
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
- package/src/sap/ui/test/TestUtils.js +11 -4
- package/src/sap/ui/test/actions/Action.js +9 -2
- package/src/sap/ui/test/actions/Press.js +28 -1
- package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +111 -0
- package/src/sap/ui/test/matchers/I18NText.js +29 -11
- package/src/sap/ui/test/opaQunit.js +5 -0
- package/src/sap/ui/thirdparty/IPv6.js +2 -2
- package/src/sap/ui/thirdparty/SecondLevelDomains.js +2 -2
- package/src/sap/ui/thirdparty/URI.js +14 -5
- package/src/sap/ui/thirdparty/URITemplate.js +2 -2
- package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
- package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
- package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
- package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
- package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
- package/src/sap/ui/thirdparty/jquery.js +9 -1
- package/src/sap/ui/thirdparty/qunit-2.js +1 -1
- package/src/sap/ui/thirdparty/qunit.js +1 -1
- package/src/sap/ui/util/Mobile.js +30 -59
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/util/isCrossOriginURL.js +16 -6
- package/src/ui5loader.js +6 -6
- package/ui5.yaml +248 -2
- package/src/sap/ui/core/CustomizingConfiguration.js +0 -272
- package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
- package/src/sap/ui/thirdparty/baseuri.js +0 -1
- package/src/sap/ui/thirdparty/es6-object-assign.js +0 -1
- package/src/sap/ui/thirdparty/es6-promise.js +0 -1
- package/src/sap/ui/thirdparty/es6-shim-nopromise.js +0 -1
- package/src/sap/ui/thirdparty/es6-string-methods.js +0 -1
- package/src/sap/ui/thirdparty/flexie.js +0 -1
- package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
- package/src/sap/ui/thirdparty/unorm.js +0 -1
- package/src/sap/ui/thirdparty/unormdata.js +0 -1
|
@@ -228,7 +228,7 @@ sap.ui.define([
|
|
|
228
228
|
* @extends sap.ui.base.ManagedObject
|
|
229
229
|
* @abstract
|
|
230
230
|
* @author SAP SE
|
|
231
|
-
* @version 1.
|
|
231
|
+
* @version 1.97.0
|
|
232
232
|
* @alias sap.ui.core.Component
|
|
233
233
|
* @since 1.9.2
|
|
234
234
|
*/
|
|
@@ -383,6 +383,64 @@ sap.ui.define([
|
|
|
383
383
|
}
|
|
384
384
|
});
|
|
385
385
|
|
|
386
|
+
/**
|
|
387
|
+
* Helper function to retrieve owner (extension) component holding the customizing configuration.
|
|
388
|
+
* @param {string|sap.ui.core.Component|sap.ui.base.ManagedObject} vObject Component Id, component instance or ManagedObject
|
|
389
|
+
* @throws {Error} If 'getExtensionComponent' function is given, but does not return an instance.
|
|
390
|
+
* @returns {sap.ui.core.Component|undefined} The owner component or <code>undefined</code>
|
|
391
|
+
*/
|
|
392
|
+
function getCustomizingComponent(vObject) {
|
|
393
|
+
var oComponent, sComponentId;
|
|
394
|
+
|
|
395
|
+
if (!sap.ui.getCore().getConfiguration().getDisableCustomizing()) {
|
|
396
|
+
if (typeof vObject === "string") {
|
|
397
|
+
sComponentId = vObject;
|
|
398
|
+
} else if (vObject && typeof vObject.isA === "function" && !vObject.isA("sap.ui.core.Component")) {
|
|
399
|
+
sComponentId = Component.getOwnerIdFor(vObject);
|
|
400
|
+
} else {
|
|
401
|
+
oComponent = vObject;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
if (sComponentId) {
|
|
405
|
+
oComponent = Component.get(sComponentId);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
if (oComponent) {
|
|
409
|
+
if (oComponent.getExtensionComponent) {
|
|
410
|
+
oComponent = oComponent.getExtensionComponent();
|
|
411
|
+
if (!oComponent) {
|
|
412
|
+
throw new Error("getExtensionComponent() must return an instance.");
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return oComponent;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* @param {string|sap.ui.base.ManagedObject|sap.ui.core.Component} vObject Either Component Id, ManagedObject or component instance
|
|
422
|
+
* @param {object} mOptions Info object to retrieve the customizing config
|
|
423
|
+
* @param {object} mOptions.type Either <code>sap.ui.viewExtension</code>, <code>sap.ui.controllerReplacement</code>, <code>sap.ui.viewReplacement</code>, <code>sap.ui.viewModification</code> or <code>sap.ui.controllerExtension</code>
|
|
424
|
+
* @param {object} mOptions.name Name of the customizing configuration
|
|
425
|
+
* @param {object} [mOptions.extensionName] If type <code>sap.ui.viewExtension</code>, the extension name must be provided
|
|
426
|
+
* @param {object} oExtInfo Config object containing the view/fragment and extension name
|
|
427
|
+
* @throws {Error} If 'getExtensionComponent' function is given, but does not return an instance.
|
|
428
|
+
* @returns {object|undefined} Object containing the customizing config or <code>undefined</code>
|
|
429
|
+
* @static
|
|
430
|
+
* @private ui5-restricted sap.ui.core
|
|
431
|
+
*/
|
|
432
|
+
Component.getCustomizing = function(vObject, mOptions) {
|
|
433
|
+
var sType = mOptions.type,
|
|
434
|
+
sPath = "/sap.ui5/extends/extensions/" + sType + "/" + mOptions.name;
|
|
435
|
+
|
|
436
|
+
if (sType === "sap.ui.viewExtensions") {
|
|
437
|
+
sPath += "/" + mOptions.extensionName;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
var oComponent = getCustomizingComponent(vObject);
|
|
441
|
+
return oComponent ? oComponent._getManifestEntry(sPath, true) : undefined;
|
|
442
|
+
};
|
|
443
|
+
|
|
386
444
|
/**
|
|
387
445
|
* Returns the metadata for the Component class.
|
|
388
446
|
*
|
|
@@ -874,10 +932,18 @@ sap.ui.define([
|
|
|
874
932
|
* @private
|
|
875
933
|
*/
|
|
876
934
|
Component.prototype._initComponentModels = function(mModels, mDataSources, mCacheTokens) {
|
|
935
|
+
var sComponentName = this.getManifestObject().getComponentName();
|
|
877
936
|
|
|
878
|
-
var
|
|
937
|
+
var mAllModelConfigs = Component._findManifestModelClasses({
|
|
879
938
|
models: mModels,
|
|
880
939
|
dataSources: mDataSources,
|
|
940
|
+
componentName: sComponentName
|
|
941
|
+
});
|
|
942
|
+
Component._loadManifestModelClasses(mAllModelConfigs, sComponentName);
|
|
943
|
+
|
|
944
|
+
var mAllModelConfigurations = Component._createManifestModelConfigurations({
|
|
945
|
+
models: mAllModelConfigs,
|
|
946
|
+
dataSources: mDataSources,
|
|
881
947
|
component: this,
|
|
882
948
|
mergeParent: true,
|
|
883
949
|
cacheTokens: mCacheTokens,
|
|
@@ -898,7 +964,7 @@ sap.ui.define([
|
|
|
898
964
|
}
|
|
899
965
|
|
|
900
966
|
// create all models which are not created, yet.
|
|
901
|
-
var mCreatedModels = Component._createManifestModels(mModelConfigurations,
|
|
967
|
+
var mCreatedModels = Component._createManifestModels(mModelConfigurations, sComponentName);
|
|
902
968
|
for (sModelName in mCreatedModels) {
|
|
903
969
|
// keep the model instance to be able to destroy the created models on component destroy
|
|
904
970
|
this._mManifestModels[sModelName] = mCreatedModels[sModelName];
|
|
@@ -1305,8 +1371,7 @@ sap.ui.define([
|
|
|
1305
1371
|
if (mConfig.async === true) {
|
|
1306
1372
|
return Component.create(mConfig);
|
|
1307
1373
|
} else {
|
|
1308
|
-
// use deprecated factory for sync use case only
|
|
1309
|
-
return sap.ui.component(mConfig);
|
|
1374
|
+
return sap.ui.component(mConfig); // legacy-relevant: use deprecated factory for sync use case only
|
|
1310
1375
|
}
|
|
1311
1376
|
}
|
|
1312
1377
|
|
|
@@ -1373,6 +1438,102 @@ sap.ui.define([
|
|
|
1373
1438
|
|
|
1374
1439
|
};
|
|
1375
1440
|
|
|
1441
|
+
Component._findManifestModelClasses = function(mOptions) {
|
|
1442
|
+
if (!mOptions.models) {
|
|
1443
|
+
// skipping model creation because of missing sap.ui5 models manifest entry
|
|
1444
|
+
return null;
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
var mConfig = {
|
|
1448
|
+
|
|
1449
|
+
// ui5 model definitions
|
|
1450
|
+
models: mOptions.models,
|
|
1451
|
+
|
|
1452
|
+
// optional dataSources from "sap.app" manifest
|
|
1453
|
+
dataSources: mOptions.dataSources || {},
|
|
1454
|
+
|
|
1455
|
+
// to identify where the dataSources/models have been originally defined
|
|
1456
|
+
origin: {
|
|
1457
|
+
dataSources: {},
|
|
1458
|
+
models: {}
|
|
1459
|
+
}
|
|
1460
|
+
};
|
|
1461
|
+
|
|
1462
|
+
var sLogComponentName = mOptions.componentName;
|
|
1463
|
+
var mModelConfigurations = {};
|
|
1464
|
+
|
|
1465
|
+
// create a model for each ["sap.ui5"]["models"] entry
|
|
1466
|
+
for (var sModelName in mConfig.models) {
|
|
1467
|
+
|
|
1468
|
+
var oModelConfig = mConfig.models[sModelName];
|
|
1469
|
+
|
|
1470
|
+
// normalize dataSource shorthand, e.g.
|
|
1471
|
+
// "myModel": "myDataSource" => "myModel": { dataSource: "myDataSource" }
|
|
1472
|
+
if (typeof oModelConfig === 'string') {
|
|
1473
|
+
oModelConfig = {
|
|
1474
|
+
dataSource: oModelConfig
|
|
1475
|
+
};
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
// check for referenced dataSource entry and read out settings/uri/type
|
|
1479
|
+
// if not already provided in model config
|
|
1480
|
+
if (oModelConfig.dataSource) {
|
|
1481
|
+
|
|
1482
|
+
var oDataSource = mConfig.dataSources && mConfig.dataSources[oModelConfig.dataSource];
|
|
1483
|
+
if (typeof oDataSource === 'object') {
|
|
1484
|
+
|
|
1485
|
+
// default type is OData
|
|
1486
|
+
if (oDataSource.type === undefined) {
|
|
1487
|
+
oDataSource.type = 'OData';
|
|
1488
|
+
}
|
|
1489
|
+
|
|
1490
|
+
var sODataVersion;
|
|
1491
|
+
|
|
1492
|
+
// read out type and translate to model class
|
|
1493
|
+
// (only if no model type was set to allow overriding)
|
|
1494
|
+
if (!oModelConfig.type) {
|
|
1495
|
+
switch (oDataSource.type) {
|
|
1496
|
+
case 'OData':
|
|
1497
|
+
sODataVersion = oDataSource.settings && oDataSource.settings.odataVersion;
|
|
1498
|
+
if (sODataVersion === "4.0") {
|
|
1499
|
+
oModelConfig.type = 'sap.ui.model.odata.v4.ODataModel';
|
|
1500
|
+
} else if (!sODataVersion || sODataVersion === "2.0") {
|
|
1501
|
+
// 2.0 is the default in case no version is provided
|
|
1502
|
+
oModelConfig.type = 'sap.ui.model.odata.v2.ODataModel';
|
|
1503
|
+
} else {
|
|
1504
|
+
Log.error('Component Manifest: Provided OData version "' + sODataVersion + '" in ' +
|
|
1505
|
+
'dataSource "' + oModelConfig.dataSource + '" for model "' + sModelName + '" is unknown. ' +
|
|
1506
|
+
'Falling back to default model type "sap.ui.model.odata.v2.ODataModel".',
|
|
1507
|
+
'["sap.app"]["dataSources"]["' + oModelConfig.dataSource + '"]', sLogComponentName);
|
|
1508
|
+
oModelConfig.type = 'sap.ui.model.odata.v2.ODataModel';
|
|
1509
|
+
}
|
|
1510
|
+
break;
|
|
1511
|
+
case 'JSON':
|
|
1512
|
+
oModelConfig.type = 'sap.ui.model.json.JSONModel';
|
|
1513
|
+
break;
|
|
1514
|
+
case 'XML':
|
|
1515
|
+
oModelConfig.type = 'sap.ui.model.xml.XMLModel';
|
|
1516
|
+
break;
|
|
1517
|
+
default:
|
|
1518
|
+
// for custom dataSource types, the class should already be specified in the sap.ui5 models config
|
|
1519
|
+
}
|
|
1520
|
+
}
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
// model type is required!
|
|
1525
|
+
if (!oModelConfig.type) {
|
|
1526
|
+
Log.error("Component Manifest: Missing \"type\" for model \"" + sModelName + "\"", "[\"sap.ui5\"][\"models\"][\"" + sModelName + "\"]", sLogComponentName);
|
|
1527
|
+
continue;
|
|
1528
|
+
}
|
|
1529
|
+
|
|
1530
|
+
// Add final configuration to result map
|
|
1531
|
+
mModelConfigurations[sModelName] = oModelConfig;
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1534
|
+
return mModelConfigurations;
|
|
1535
|
+
};
|
|
1536
|
+
|
|
1376
1537
|
/**
|
|
1377
1538
|
* Creates model configurations by processing "/sap.app/dataSources" and "/sap.ui5/models" manifest entries.
|
|
1378
1539
|
* Result can be handed over to {@link sap.ui.core.Component._createManifestModels} in order to create instances.
|
|
@@ -1393,7 +1554,7 @@ sap.ui.define([
|
|
|
1393
1554
|
var oManifest = mOptions.manifest || oComponent.getManifestObject();
|
|
1394
1555
|
var bMergeParent = mOptions.mergeParent;
|
|
1395
1556
|
var mCacheTokens = mOptions.cacheTokens || {};
|
|
1396
|
-
var sLogComponentName = oComponent ? oComponent.
|
|
1557
|
+
var sLogComponentName = oComponent ? oComponent.getMetadata().getComponentName() : oManifest.getComponentName();
|
|
1397
1558
|
var oConfig = sap.ui.getCore().getConfiguration();
|
|
1398
1559
|
var aActiveTerminologies = mOptions.activeTerminologies;
|
|
1399
1560
|
|
|
@@ -1439,6 +1600,22 @@ sap.ui.define([
|
|
|
1439
1600
|
for (var sModelName in mConfig.models) {
|
|
1440
1601
|
|
|
1441
1602
|
var oModelConfig = mConfig.models[sModelName];
|
|
1603
|
+
var fnClass = sap.ui.require(oModelConfig.type.replace(/\./g, "/"));
|
|
1604
|
+
if (!fnClass) {
|
|
1605
|
+
fnClass = ObjectPath.get(oModelConfig.type);
|
|
1606
|
+
}
|
|
1607
|
+
// class could not be loaded by _loadManifestModelClasses
|
|
1608
|
+
if (!fnClass) {
|
|
1609
|
+
Log.error("Component Manifest: Class \"" + oModelConfig.type + "\" for model \"" + sModelName + "\" could not be found", "[\"sap.ui5\"][\"models\"][\"" + sModelName + "\"]", sLogComponentName);
|
|
1610
|
+
continue;
|
|
1611
|
+
}
|
|
1612
|
+
var oClassMetadata = fnClass.getMetadata();
|
|
1613
|
+
|
|
1614
|
+
var bIsV1Model = oClassMetadata.isA("sap.ui.model.odata.ODataModel");
|
|
1615
|
+
var bIsV2Model = oClassMetadata.isA("sap.ui.model.odata.v2.ODataModel");
|
|
1616
|
+
var bIsV4Model = oClassMetadata.isA("sap.ui.model.odata.v4.ODataModel");
|
|
1617
|
+
var bIsResourceModel = oClassMetadata.isA("sap.ui.model.resource.ResourceModel");
|
|
1618
|
+
|
|
1442
1619
|
var bIsDataSourceUri = false;
|
|
1443
1620
|
var mMetadataUrlParams = null;
|
|
1444
1621
|
|
|
@@ -1462,42 +1639,8 @@ sap.ui.define([
|
|
|
1462
1639
|
oDataSource.type = 'OData';
|
|
1463
1640
|
}
|
|
1464
1641
|
|
|
1465
|
-
var sODataVersion;
|
|
1466
|
-
|
|
1467
|
-
// read out type and translate to model class
|
|
1468
|
-
// (only if no model type was set to allow overriding)
|
|
1469
|
-
if (!oModelConfig.type) {
|
|
1470
|
-
switch (oDataSource.type) {
|
|
1471
|
-
case 'OData':
|
|
1472
|
-
sODataVersion = oDataSource.settings && oDataSource.settings.odataVersion;
|
|
1473
|
-
if (sODataVersion === "4.0") {
|
|
1474
|
-
oModelConfig.type = 'sap.ui.model.odata.v4.ODataModel';
|
|
1475
|
-
} else if (!sODataVersion || sODataVersion === "2.0") {
|
|
1476
|
-
// 2.0 is the default in case no version is provided
|
|
1477
|
-
oModelConfig.type = 'sap.ui.model.odata.v2.ODataModel';
|
|
1478
|
-
} else {
|
|
1479
|
-
Log.error('Component Manifest: Provided OData version "' + sODataVersion + '" in ' +
|
|
1480
|
-
'dataSource "' + oModelConfig.dataSource + '" for model "' + sModelName + '" is unknown. ' +
|
|
1481
|
-
'Falling back to default model type "sap.ui.model.odata.v2.ODataModel".',
|
|
1482
|
-
'["sap.app"]["dataSources"]["' + oModelConfig.dataSource + '"]', sLogComponentName);
|
|
1483
|
-
oModelConfig.type = 'sap.ui.model.odata.v2.ODataModel';
|
|
1484
|
-
}
|
|
1485
|
-
break;
|
|
1486
|
-
case 'JSON':
|
|
1487
|
-
oModelConfig.type = 'sap.ui.model.json.JSONModel';
|
|
1488
|
-
break;
|
|
1489
|
-
case 'XML':
|
|
1490
|
-
oModelConfig.type = 'sap.ui.model.xml.XMLModel';
|
|
1491
|
-
break;
|
|
1492
|
-
default:
|
|
1493
|
-
// for custom dataSource types, the class should already be specified in the sap.ui5 models config
|
|
1494
|
-
}
|
|
1495
|
-
}
|
|
1496
|
-
|
|
1497
1642
|
// pass OData service version (e.g. "2.0"), if specified, to the OData V4 model
|
|
1498
|
-
if (
|
|
1499
|
-
&& oDataSource.settings
|
|
1500
|
-
&& oDataSource.settings.odataVersion) {
|
|
1643
|
+
if (bIsV4Model && oDataSource.settings && oDataSource.settings.odataVersion) {
|
|
1501
1644
|
oModelConfig.settings = oModelConfig.settings || {};
|
|
1502
1645
|
oModelConfig.settings.odataVersion = oDataSource.settings.odataVersion;
|
|
1503
1646
|
}
|
|
@@ -1542,20 +1685,16 @@ sap.ui.define([
|
|
|
1542
1685
|
|
|
1543
1686
|
var oAnnotationUri = new URI(oAnnotation.uri);
|
|
1544
1687
|
|
|
1545
|
-
if (
|
|
1546
|
-
|
|
1688
|
+
if (bIsV2Model || bIsV4Model) {
|
|
1689
|
+
/* eslint-disable no-loop-func */
|
|
1690
|
+
["sap-language", "sap-client"].forEach(function(sName) {
|
|
1691
|
+
if (!oAnnotationUri.hasQuery(sName) && oConfig.getSAPParam(sName)) {
|
|
1692
|
+
oAnnotationUri.setQuery(sName, oConfig.getSAPParam(sName));
|
|
1693
|
+
}
|
|
1694
|
+
});
|
|
1695
|
+
/* eslint-enable no-loop-func */
|
|
1547
1696
|
|
|
1548
1697
|
var sCacheTokenForAnnotation = mCacheTokens.dataSources && mCacheTokens.dataSources[oAnnotation.uri];
|
|
1549
|
-
if (sCacheTokenForAnnotation || oModelConfig.type === 'sap.ui.model.odata.v2.ODataModel') {
|
|
1550
|
-
/* eslint-disable no-loop-func */
|
|
1551
|
-
["sap-language", "sap-client"].forEach(function(sName) {
|
|
1552
|
-
if (!oAnnotationUri.hasQuery(sName) && oConfig.getSAPParam(sName)) {
|
|
1553
|
-
oAnnotationUri.setQuery(sName, oConfig.getSAPParam(sName));
|
|
1554
|
-
}
|
|
1555
|
-
});
|
|
1556
|
-
/* eslint-enable no-loop-func */
|
|
1557
|
-
}
|
|
1558
|
-
|
|
1559
1698
|
if (sCacheTokenForAnnotation) {
|
|
1560
1699
|
Component._applyCacheToken(oAnnotationUri, {
|
|
1561
1700
|
cacheToken: sCacheTokenForAnnotation,
|
|
@@ -1582,24 +1721,16 @@ sap.ui.define([
|
|
|
1582
1721
|
}
|
|
1583
1722
|
}
|
|
1584
1723
|
|
|
1585
|
-
// model type is required!
|
|
1586
|
-
if (!oModelConfig.type) {
|
|
1587
|
-
Log.error("Component Manifest: Missing \"type\" for model \"" + sModelName + "\"", "[\"sap.ui5\"][\"models\"][\"" + sModelName + "\"]", sLogComponentName);
|
|
1588
|
-
continue;
|
|
1589
|
-
}
|
|
1590
|
-
|
|
1591
1724
|
// set mode of old ODataModel to "json" (default is xml).
|
|
1592
1725
|
// as the automatic model creation is a new feature, this is not incompatible here
|
|
1593
|
-
if (oModelConfig.
|
|
1594
|
-
(!oModelConfig.settings || oModelConfig.settings.json === undefined)) {
|
|
1726
|
+
if (bIsV1Model && (!oModelConfig.settings || oModelConfig.settings.json === undefined)) {
|
|
1595
1727
|
// do not overwrite the flag if it was explicitly defined!
|
|
1596
|
-
|
|
1597
1728
|
oModelConfig.settings = oModelConfig.settings || {};
|
|
1598
1729
|
oModelConfig.settings.json = true;
|
|
1599
1730
|
}
|
|
1600
1731
|
|
|
1601
1732
|
// Check resource models for bundleUrl configuration
|
|
1602
|
-
if (
|
|
1733
|
+
if (bIsResourceModel) {
|
|
1603
1734
|
if (oModelConfig.uri && oModelConfig.settings && oModelConfig.settings.bundleUrl) {
|
|
1604
1735
|
Log.warning("Defining both model uri and bundleUrl is not supported. Only model uri will be resolved.");
|
|
1605
1736
|
}
|
|
@@ -1627,8 +1758,7 @@ sap.ui.define([
|
|
|
1627
1758
|
if (oModelConfig.dataSource) {
|
|
1628
1759
|
addSapParams(oUri);
|
|
1629
1760
|
|
|
1630
|
-
if (
|
|
1631
|
-
oModelConfig.type === 'sap.ui.model.odata.v4.ODataModel') {
|
|
1761
|
+
if (bIsV2Model || bIsV4Model) {
|
|
1632
1762
|
|
|
1633
1763
|
var oModelDataSource = mConfig.dataSources && mConfig.dataSources[oModelConfig.dataSource];
|
|
1634
1764
|
var sCacheToken = mCacheTokens.dataSources && mCacheTokens.dataSources[oModelDataSource.uri];
|
|
@@ -1639,7 +1769,7 @@ sap.ui.define([
|
|
|
1639
1769
|
&& !oUri.hasQuery('sap-language')
|
|
1640
1770
|
&& oConfig.getSAPParam('sap-language');
|
|
1641
1771
|
|
|
1642
|
-
if (
|
|
1772
|
+
if (bNeedsLanguage || sCacheToken) {
|
|
1643
1773
|
// Lazy initialize settings and metadataUrlParams objects
|
|
1644
1774
|
oModelConfig.settings = oModelConfig.settings || {};
|
|
1645
1775
|
mMetadataUrlParams = oModelConfig.settings.metadataUrlParams = oModelConfig.settings.metadataUrlParams || {};
|
|
@@ -1667,17 +1797,12 @@ sap.ui.define([
|
|
|
1667
1797
|
// set model specific "uri" property names which should be used to map "uri" to model specific constructor
|
|
1668
1798
|
// (only if it wasn't specified before)
|
|
1669
1799
|
if (oModelConfig.uriSettingName === undefined) {
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
case 'sap.ui.model.resource.ResourceModel':
|
|
1677
|
-
oModelConfig.uriSettingName = 'bundleUrl';
|
|
1678
|
-
break;
|
|
1679
|
-
default:
|
|
1680
|
-
// default 'undefined' is already set in this case
|
|
1800
|
+
if (bIsV1Model || bIsV2Model || bIsV4Model) {
|
|
1801
|
+
oModelConfig.uriSettingName = 'serviceUrl';
|
|
1802
|
+
} else if (bIsResourceModel) {
|
|
1803
|
+
oModelConfig.uriSettingName = 'bundleUrl';
|
|
1804
|
+
} else {
|
|
1805
|
+
// default 'undefined' is already set in this case
|
|
1681
1806
|
}
|
|
1682
1807
|
}
|
|
1683
1808
|
|
|
@@ -1698,9 +1823,9 @@ sap.ui.define([
|
|
|
1698
1823
|
// lazy load the ODataUtils if systemParameter is given
|
|
1699
1824
|
var bAddOrigin = false;
|
|
1700
1825
|
var ODataUtils;
|
|
1701
|
-
if (sSystemParameter &&
|
|
1826
|
+
if (sSystemParameter && (bIsV1Model || bIsV2Model)) {
|
|
1702
1827
|
bAddOrigin = true;
|
|
1703
|
-
ODataUtils = sap.ui.
|
|
1828
|
+
ODataUtils = sap.ui.require("sap/ui/model/odata/ODataUtils");
|
|
1704
1829
|
}
|
|
1705
1830
|
|
|
1706
1831
|
// include "uri" property in "settings" object, depending on "uriSettingName"
|
|
@@ -1757,7 +1882,7 @@ sap.ui.define([
|
|
|
1757
1882
|
// resolve the bundleUrl of the enhancing resource bundle relative to
|
|
1758
1883
|
// the component (default) or relative to manifest, e.g.:
|
|
1759
1884
|
// bundleUrlRelativeTo: 'component|manifest'
|
|
1760
|
-
if (
|
|
1885
|
+
if (bIsResourceModel && oModelConfig.settings) {
|
|
1761
1886
|
if (aActiveTerminologies) {
|
|
1762
1887
|
oModelConfig.settings.activeTerminologies = aActiveTerminologies;
|
|
1763
1888
|
}
|
|
@@ -1784,6 +1909,21 @@ sap.ui.define([
|
|
|
1784
1909
|
return mModelConfigurations;
|
|
1785
1910
|
};
|
|
1786
1911
|
|
|
1912
|
+
Component._loadManifestModelClasses = function(mModelConfigurations, sLogComponentName) {
|
|
1913
|
+
for (var sModelName in mModelConfigurations) {
|
|
1914
|
+
var oModelConfig = mModelConfigurations[sModelName];
|
|
1915
|
+
|
|
1916
|
+
// load model class and log error message if it couldn't be loaded.
|
|
1917
|
+
// error gets caught to continue creating the other models and not breaking the execution here
|
|
1918
|
+
try {
|
|
1919
|
+
sap.ui.requireSync(oModelConfig.type.replace(/\./g, "/"));
|
|
1920
|
+
} catch (oError) {
|
|
1921
|
+
Log.error("Component Manifest: Class \"" + oModelConfig.type + "\" for model \"" + sModelName + "\" could not be loaded. " + oError, "[\"sap.ui5\"][\"models\"][\"" + sModelName + "\"]", sLogComponentName);
|
|
1922
|
+
continue;
|
|
1923
|
+
}
|
|
1924
|
+
}
|
|
1925
|
+
};
|
|
1926
|
+
|
|
1787
1927
|
/**
|
|
1788
1928
|
* Creates model instances using a configuration provided by {@link sap.ui.core.Component._createManifestModelConfigurations}.
|
|
1789
1929
|
*
|
|
@@ -1797,24 +1937,9 @@ sap.ui.define([
|
|
|
1797
1937
|
for (var sModelName in mModelConfigurations) {
|
|
1798
1938
|
var oModelConfig = mModelConfigurations[sModelName];
|
|
1799
1939
|
|
|
1800
|
-
// load model class and log error message if it couldn't be loaded.
|
|
1801
|
-
// error gets caught to continue creating the other models and not breaking the execution here
|
|
1802
|
-
try {
|
|
1803
|
-
sap.ui.requireSync(oModelConfig.type.replace(/\./g, "/"));
|
|
1804
|
-
} catch (oError) {
|
|
1805
|
-
Log.error("Component Manifest: Class \"" + oModelConfig.type + "\" for model \"" + sModelName + "\" could not be loaded. " + oError, "[\"sap.ui5\"][\"models\"][\"" + sModelName + "\"]", sLogComponentName);
|
|
1806
|
-
continue;
|
|
1807
|
-
}
|
|
1808
|
-
|
|
1809
|
-
// TODO: We don't use the return value of sap.ui.requireSync here yet.
|
|
1810
1940
|
// The tests for the Model creation make use of a constructor stub,
|
|
1811
1941
|
// and this only works from the global namespace export.
|
|
1812
1942
|
var fnModelClass = ObjectPath.get(oModelConfig.type);
|
|
1813
|
-
if (!fnModelClass) {
|
|
1814
|
-
// this could be the case if the required module doesn't register itself in the defined namespace
|
|
1815
|
-
Log.error("Component Manifest: Class \"" + oModelConfig.type + "\" for model \"" + sModelName + "\" could not be found", "[\"sap.ui5\"][\"models\"][\"" + sModelName + "\"]", sLogComponentName);
|
|
1816
|
-
continue;
|
|
1817
|
-
}
|
|
1818
1943
|
|
|
1819
1944
|
// create arguments array with leading "null" value so that it can be passed to the apply function
|
|
1820
1945
|
var aArgs = [null].concat(oModelConfig.settings || []);
|
|
@@ -1851,7 +1976,7 @@ sap.ui.define([
|
|
|
1851
1976
|
* @param {string[]} [aActiveTerminologies] optional list of active terminologies
|
|
1852
1977
|
* @returns {object} object with two maps, see above
|
|
1853
1978
|
*/
|
|
1854
|
-
function getPreloadModelConfigsFromManifest(oManifest
|
|
1979
|
+
function getPreloadModelConfigsFromManifest(oManifest) {
|
|
1855
1980
|
var mModelConfigs = {
|
|
1856
1981
|
afterManifest: {},
|
|
1857
1982
|
afterPreload: {}
|
|
@@ -1860,14 +1985,11 @@ sap.ui.define([
|
|
|
1860
1985
|
// deep clone is needed as manifest only returns a read-only copy (frozen object)
|
|
1861
1986
|
var oManifestDataSources = merge({}, oManifest.getEntry("/sap.app/dataSources"));
|
|
1862
1987
|
var oManifestModels = merge({}, oManifest.getEntry("/sap.ui5/models"));
|
|
1863
|
-
|
|
1864
|
-
var mAllModelConfigurations = Component.
|
|
1988
|
+
var sComponentName = oManifest.getComponentName();
|
|
1989
|
+
var mAllModelConfigurations = Component._findManifestModelClasses({
|
|
1865
1990
|
models: oManifestModels,
|
|
1866
1991
|
dataSources: oManifestDataSources,
|
|
1867
|
-
|
|
1868
|
-
componentData: oComponentData,
|
|
1869
|
-
cacheTokens: mCacheTokens,
|
|
1870
|
-
activeTerminologies: aActiveTerminologies
|
|
1992
|
+
componentName: sComponentName
|
|
1871
1993
|
});
|
|
1872
1994
|
|
|
1873
1995
|
// Read internal URI parameter to enable model preload for testing purposes
|
|
@@ -1886,14 +2008,13 @@ sap.ui.define([
|
|
|
1886
2008
|
if (!mModelConfig.preload && aPreloadModels && aPreloadModels.indexOf(sModelName) > -1 ) {
|
|
1887
2009
|
mModelConfig.preload = true;
|
|
1888
2010
|
Log.warning("FOR TESTING ONLY!!! Activating preload for model \"" + sModelName + "\" (" + mModelConfig.type + ")",
|
|
1889
|
-
|
|
2011
|
+
sComponentName, "sap.ui.core.Component");
|
|
1890
2012
|
}
|
|
1891
2013
|
|
|
1892
2014
|
// ResourceModels with async=false should be always loaded beforehand to get rid of sync requests under the hood (regardless of the "preload" flag)
|
|
1893
2015
|
if (mModelConfig.type === "sap.ui.model.resource.ResourceModel" &&
|
|
1894
|
-
|
|
1895
|
-
mModelConfig.settings.
|
|
1896
|
-
mModelConfig.settings[0].async !== true
|
|
2016
|
+
(!mModelConfig.settings ||
|
|
2017
|
+
mModelConfig.settings.async !== true)
|
|
1897
2018
|
) {
|
|
1898
2019
|
// Use separate config object for ResourceModels as the resourceBundle might be
|
|
1899
2020
|
// part of the Component-preload which isn't available when the regular "preloaded"-models are created
|
|
@@ -1902,11 +2023,14 @@ sap.ui.define([
|
|
|
1902
2023
|
// Only create models:
|
|
1903
2024
|
// - which are flagged for preload (mModelConfig.preload) or configured via internal URI param (see above)
|
|
1904
2025
|
// - in case the model class is already loaded (otherwise log a warning)
|
|
2026
|
+
// We check for the moduleState here instead of a simple sap.ui.require probing, because it captures the following cases:
|
|
2027
|
+
// - modules defined in a preload (via predefine) are "available, but not executed"
|
|
2028
|
+
// - modules which are already loaded/executed
|
|
1905
2029
|
if (sap.ui.loader._.getModuleState(mModelConfig.type.replace(/\./g, "/") + ".js")) {
|
|
1906
2030
|
mModelConfigs.afterManifest[sModelName] = mModelConfig;
|
|
1907
2031
|
} else {
|
|
1908
2032
|
Log.warning("Can not preload model \"" + sModelName + "\" as required class has not been loaded: \"" + mModelConfig.type + "\"",
|
|
1909
|
-
|
|
2033
|
+
sComponentName, "sap.ui.core.Component");
|
|
1910
2034
|
}
|
|
1911
2035
|
}
|
|
1912
2036
|
|
|
@@ -2260,9 +2384,9 @@ sap.ui.define([
|
|
|
2260
2384
|
if (typeof vConfig === 'string') {
|
|
2261
2385
|
Log.warning("Do not use deprecated function 'sap.ui.component' (" + vConfig + ") + for Component instance lookup. " +
|
|
2262
2386
|
"Use 'Component.get' instead", "sap.ui.component", null, fnLogProperties.bind(null, vConfig));
|
|
2263
|
-
// when only a string is given then this function behaves like a
|
|
2387
|
+
// when only a string is given, then this function behaves like a
|
|
2264
2388
|
// getter and returns an existing component instance
|
|
2265
|
-
return
|
|
2389
|
+
return Component.get(vConfig);
|
|
2266
2390
|
}
|
|
2267
2391
|
|
|
2268
2392
|
if (vConfig.async) {
|
|
@@ -2505,7 +2629,7 @@ sap.ui.define([
|
|
|
2505
2629
|
*/
|
|
2506
2630
|
Component.get = function (sId) {
|
|
2507
2631
|
// lookup and return the component
|
|
2508
|
-
return
|
|
2632
|
+
return Component.registry.get(sId);
|
|
2509
2633
|
};
|
|
2510
2634
|
|
|
2511
2635
|
/**
|
|
@@ -2597,7 +2721,7 @@ sap.ui.define([
|
|
|
2597
2721
|
sManifestUrl,
|
|
2598
2722
|
oManifest,
|
|
2599
2723
|
mModels,
|
|
2600
|
-
|
|
2724
|
+
mPreloadModelConfigs,
|
|
2601
2725
|
fnCallLoadComponentCallback;
|
|
2602
2726
|
|
|
2603
2727
|
function createSanitizedManifest( oRawManifestJSON, mOptions ) {
|
|
@@ -2806,7 +2930,18 @@ sap.ui.define([
|
|
|
2806
2930
|
http2 = sap.ui.getCore().getConfiguration().getDepCache(),
|
|
2807
2931
|
sPreloadName,
|
|
2808
2932
|
oTransitiveDependencies,
|
|
2809
|
-
aLibs
|
|
2933
|
+
aLibs,
|
|
2934
|
+
errorLogging = function (sPreloadName, bAsync) {
|
|
2935
|
+
return function (e) {
|
|
2936
|
+
var sErrorMessage = "Component-preload for this component does not exist.";
|
|
2937
|
+
Log.warning(
|
|
2938
|
+
"Couldn't preload component from " + sPreloadName + ": " + ((e && e.message) || e),
|
|
2939
|
+
!bAsync ? sErrorMessage : sErrorMessage + " If the component is part of a library or another component, the configuration 'sap.app/embeddedBy' is not maintained. " +
|
|
2940
|
+
" The 'sap.app/embeddedBy' property must be relative path inside the deployment unit (library or component).",
|
|
2941
|
+
"sap.ui.core.Component#preload"
|
|
2942
|
+
);
|
|
2943
|
+
};
|
|
2944
|
+
};
|
|
2810
2945
|
|
|
2811
2946
|
// only load the Component-preload file if the Component module is not yet available
|
|
2812
2947
|
if ( bComponentPreload && sComponentName != null && !sap.ui.loader._.getModuleState(sController.replace(/\./g, "/") + ".js") ) {
|
|
@@ -2821,10 +2956,10 @@ sap.ui.define([
|
|
|
2821
2956
|
Array.prototype.push.apply(aLibs, oTransitiveDependencies.dependencies);
|
|
2822
2957
|
|
|
2823
2958
|
// load library preload for every transitive dependency
|
|
2824
|
-
return sap.ui.getCore().loadLibraries( aLibs, { preloadOnly: true } );
|
|
2959
|
+
return sap.ui.getCore().loadLibraries( aLibs, { preloadOnly: true } ).catch(errorLogging(oTransitiveDependencies.library, true));
|
|
2825
2960
|
} else {
|
|
2826
2961
|
sPreloadName = sController.replace(/\./g, "/") + (http2 ? '-h2-preload.js' : '-preload.js'); // URN
|
|
2827
|
-
return sap.ui.loader._.loadJSResourceAsync(sPreloadName, true);
|
|
2962
|
+
return sap.ui.loader._.loadJSResourceAsync(sPreloadName).catch(errorLogging(sPreloadName, true));
|
|
2828
2963
|
}
|
|
2829
2964
|
}
|
|
2830
2965
|
|
|
@@ -2832,7 +2967,7 @@ sap.ui.define([
|
|
|
2832
2967
|
sPreloadName = sController + '-preload'; // Module name
|
|
2833
2968
|
sap.ui.requireSync(sPreloadName.replace(/\./g, "/"));
|
|
2834
2969
|
} catch (e) {
|
|
2835
|
-
|
|
2970
|
+
errorLogging(sPreloadName, false)(e);
|
|
2836
2971
|
}
|
|
2837
2972
|
} else if (bAsync) {
|
|
2838
2973
|
return Promise.resolve();
|
|
@@ -3004,14 +3139,26 @@ sap.ui.define([
|
|
|
3004
3139
|
// create "afterPreload" models in parallel to loading the component preload (below)
|
|
3005
3140
|
if (mOptions.createModels) {
|
|
3006
3141
|
collect(oManifest.then(function(oManifest) {
|
|
3142
|
+
var sComponentName = oManifest.getComponentName();
|
|
3007
3143
|
// Calculate configurations of preloaded models once the manifest is available
|
|
3008
|
-
|
|
3144
|
+
mPreloadModelConfigs = getPreloadModelConfigsFromManifest(oManifest);
|
|
3009
3145
|
|
|
3010
|
-
return oManifest;
|
|
3011
|
-
}).then(function(oManifest) {
|
|
3012
3146
|
// Create preloaded models directly after the manifest has been loaded
|
|
3013
|
-
if (Object.keys(
|
|
3014
|
-
|
|
3147
|
+
if (Object.keys(mPreloadModelConfigs.afterManifest).length > 0) {
|
|
3148
|
+
Component._loadManifestModelClasses(mPreloadModelConfigs.afterManifest, sComponentName);
|
|
3149
|
+
|
|
3150
|
+
// deep clone is needed as manifest only returns a read-only copy (frozen object)
|
|
3151
|
+
var oManifestDataSources = merge({}, oManifest.getEntry("/sap.app/dataSources"));
|
|
3152
|
+
var mAllModelConfigurations = Component._createManifestModelConfigurations({
|
|
3153
|
+
models: mPreloadModelConfigs.afterManifest,
|
|
3154
|
+
dataSources: oManifestDataSources,
|
|
3155
|
+
manifest: oManifest,
|
|
3156
|
+
componentData: oConfig.componentData,
|
|
3157
|
+
cacheTokens: hints.cacheTokens,
|
|
3158
|
+
activeTerminologies: aActiveTerminologies
|
|
3159
|
+
});
|
|
3160
|
+
|
|
3161
|
+
mModels = Component._createManifestModels(mAllModelConfigurations, sComponentName);
|
|
3015
3162
|
}
|
|
3016
3163
|
|
|
3017
3164
|
return oManifest;
|
|
@@ -3023,11 +3170,21 @@ sap.ui.define([
|
|
|
3023
3170
|
collect(oManifest.then(function(oManifest) {
|
|
3024
3171
|
|
|
3025
3172
|
// preload the component only if not embedded in a library
|
|
3026
|
-
//
|
|
3027
|
-
//
|
|
3173
|
+
// If the Component controller is not preloaded, the Component.js file is loaded as a single request later on.
|
|
3174
|
+
// This situation should be fixed by the factory caller, so we log it as a warning.
|
|
3028
3175
|
var pPreload = Promise.resolve();
|
|
3029
|
-
|
|
3030
|
-
|
|
3176
|
+
var sEmbeddedBy = oManifest.getEntry("/sap.app/embeddedBy");
|
|
3177
|
+
var sComponentName = oManifest.getComponentName();
|
|
3178
|
+
if (!sEmbeddedBy) {
|
|
3179
|
+
pPreload = preload(sComponentName, true);
|
|
3180
|
+
} else if (!sap.ui.loader._.getModuleState(getControllerModuleName() + ".js")) {
|
|
3181
|
+
Log.warning(
|
|
3182
|
+
"Component '" + sComponentName + "' is defined to be embedded in a library or another component" +
|
|
3183
|
+
"The relatively given preload for the embedding resource was not loaded before hand. " +
|
|
3184
|
+
"Please make sure to load the embedding resource containing this Component before instantiating.",
|
|
3185
|
+
undefined,
|
|
3186
|
+
"sap.ui.core.Component#embeddedBy"
|
|
3187
|
+
);
|
|
3031
3188
|
}
|
|
3032
3189
|
|
|
3033
3190
|
return pPreload.then(function() {
|
|
@@ -3040,7 +3197,7 @@ sap.ui.define([
|
|
|
3040
3197
|
return null;
|
|
3041
3198
|
}
|
|
3042
3199
|
|
|
3043
|
-
var aResourceModelNames = Object.keys(
|
|
3200
|
+
var aResourceModelNames = Object.keys(mPreloadModelConfigs.afterPreload);
|
|
3044
3201
|
|
|
3045
3202
|
if (aResourceModelNames.length === 0) {
|
|
3046
3203
|
return null;
|
|
@@ -3055,8 +3212,20 @@ sap.ui.define([
|
|
|
3055
3212
|
resolve(ResourceModel);
|
|
3056
3213
|
}, reject);
|
|
3057
3214
|
}).then(function(ResourceModel) {
|
|
3215
|
+
|
|
3216
|
+
// deep clone is needed as manifest only returns a read-only copy (frozen object)
|
|
3217
|
+
var oManifestDataSources = merge({}, oManifest.getEntry("/sap.app/dataSources"));
|
|
3218
|
+
var mAfterPreloadModelConfigurations = Component._createManifestModelConfigurations({
|
|
3219
|
+
models: mPreloadModelConfigs.afterPreload,
|
|
3220
|
+
dataSources: oManifestDataSources,
|
|
3221
|
+
manifest: oManifest,
|
|
3222
|
+
componentData: oConfig.componentData,
|
|
3223
|
+
cacheTokens: hints.cacheTokens,
|
|
3224
|
+
activeTerminologies: aActiveTerminologies
|
|
3225
|
+
});
|
|
3226
|
+
|
|
3058
3227
|
function loadResourceBundle(sModelName) {
|
|
3059
|
-
var mModelConfig =
|
|
3228
|
+
var mModelConfig = mAfterPreloadModelConfigurations[sModelName];
|
|
3060
3229
|
if (Array.isArray(mModelConfig.settings) && mModelConfig.settings.length > 0) {
|
|
3061
3230
|
var mModelSettings = mModelConfig.settings[0]; // first argument is the config map
|
|
3062
3231
|
|
|
@@ -3087,19 +3256,19 @@ sap.ui.define([
|
|
|
3087
3256
|
|
|
3088
3257
|
// If the resource bundle can't be loaded, the resource model will be skipped.
|
|
3089
3258
|
// But once the component instance gets created, the model will be tried to created again.
|
|
3090
|
-
delete
|
|
3259
|
+
delete mAfterPreloadModelConfigurations[sModelName];
|
|
3091
3260
|
});
|
|
3092
3261
|
} else {
|
|
3093
3262
|
// Can't load bundle as no settings are defined.
|
|
3094
|
-
// Should not happen as those models won't be part of "
|
|
3263
|
+
// Should not happen as those models won't be part of "afterPreload"
|
|
3095
3264
|
return Promise.resolve();
|
|
3096
3265
|
}
|
|
3097
3266
|
}
|
|
3098
3267
|
|
|
3099
3268
|
// Load all ResourceBundles for all models in parallel
|
|
3100
3269
|
return Promise.all(aResourceModelNames.map(loadResourceBundle)).then(function() {
|
|
3101
|
-
if (Object.keys(
|
|
3102
|
-
var mResourceModels = Component._createManifestModels(
|
|
3270
|
+
if (Object.keys(mAfterPreloadModelConfigurations).length > 0) {
|
|
3271
|
+
var mResourceModels = Component._createManifestModels(mAfterPreloadModelConfigurations, oManifest.getComponentName());
|
|
3103
3272
|
if (!mModels) {
|
|
3104
3273
|
mModels = {};
|
|
3105
3274
|
}
|
|
@@ -3275,12 +3444,10 @@ sap.ui.define([
|
|
|
3275
3444
|
// lookup model classes
|
|
3276
3445
|
var mManifestModels = merge({}, oManifest.getEntry("/sap.ui5/models"));
|
|
3277
3446
|
var mManifestDataSources = merge({}, oManifest.getEntry("/sap.app/dataSources"));
|
|
3278
|
-
var mAllModelConfigurations = Component.
|
|
3447
|
+
var mAllModelConfigurations = Component._findManifestModelClasses({
|
|
3279
3448
|
models: mManifestModels,
|
|
3280
3449
|
dataSources: mManifestDataSources,
|
|
3281
|
-
|
|
3282
|
-
cacheTokens: hints.cacheTokens,
|
|
3283
|
-
activeTerminologies: aActiveTerminologies
|
|
3450
|
+
componentName: oManifest.getComponentName()
|
|
3284
3451
|
});
|
|
3285
3452
|
for (var mModelName in mAllModelConfigurations) {
|
|
3286
3453
|
if (!mAllModelConfigurations.hasOwnProperty(mModelName)) {
|
|
@@ -3369,7 +3536,7 @@ sap.ui.define([
|
|
|
3369
3536
|
|
|
3370
3537
|
// synchronously load the controller class, prepare and return it
|
|
3371
3538
|
return prepareControllerClass(
|
|
3372
|
-
sap.ui.requireSync( getControllerModuleName() )
|
|
3539
|
+
sap.ui.requireSync( getControllerModuleName() ) // legacy-relevant: Sync path
|
|
3373
3540
|
);
|
|
3374
3541
|
}
|
|
3375
3542
|
|
|
@@ -3384,6 +3551,7 @@ sap.ui.define([
|
|
|
3384
3551
|
*
|
|
3385
3552
|
* @namespace sap.ui.core.Component.registry
|
|
3386
3553
|
* @public
|
|
3554
|
+
* @since 1.67
|
|
3387
3555
|
*/
|
|
3388
3556
|
|
|
3389
3557
|
/**
|