@openui5/sap.ui.core 1.91.0 → 1.93.2
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 +37 -0
- package/.reuse/dep5 +46 -0
- package/THIRDPARTY.txt +59 -1
- package/package.json +1 -1
- package/src/jquery.sap.global.js +6 -2
- 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 +7 -4
- package/src/jquery.sap.stubs.js +0 -1
- package/src/sap/base/i18n/ResourceBundle.js +2 -2
- package/src/sap/base/security/encodeCSS.js +1 -0
- package/src/sap/base/security/encodeJS.js +1 -0
- package/src/sap/base/security/encodeURL.js +1 -0
- package/src/sap/base/security/encodeXML.js +2 -0
- package/src/sap/base/util/LoaderExtensions.js +1 -1
- package/src/sap/base/util/Properties.js +4 -1
- package/src/sap/base/util/isEmptyObject.js +1 -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 +10 -10
- package/src/sap/ui/Global.js +4 -4
- package/src/sap/ui/VersionInfo.js +1 -0
- package/src/sap/ui/base/DataType.js +1 -0
- 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 +121 -18
- package/src/sap/ui/base/ManagedObjectMetadata.js +13 -4
- 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 +4 -2
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/BusyIndicatorUtils.js +4 -1
- package/src/sap/ui/core/Component.js +144 -43
- package/src/sap/ui/core/ComponentContainer.js +51 -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 +2 -1
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +20 -22
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/CustomizingConfiguration.js +2 -2
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +1 -1
- package/src/sap/ui/core/ElementMetadata.js +1 -3
- 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 +59 -16
- package/src/sap/ui/core/Fragment.js +3 -3
- 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/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +9 -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 +1 -1
- package/src/sap/ui/core/LocaleData.js +15 -1328
- package/src/sap/ui/core/Manifest.js +124 -69
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Patcher.js +143 -153
- package/src/sap/ui/core/Placeholder.js +173 -0
- package/src/sap/ui/core/Popup.js +29 -5
- package/src/sap/ui/core/RenderManager.js +344 -104
- 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/ThemeCheck.js +14 -62
- 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 +6 -3
- package/src/sap/ui/core/UIComponent.js +46 -23
- 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 +3 -5
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +5 -6
- package/src/sap/ui/core/cldr/en.json +1 -0
- package/src/sap/ui/core/date/UniversalDate.js +4 -2
- package/src/sap/ui/core/delegate/ItemNavigation.js +4 -4
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragAndDrop.js +1 -1
- package/src/sap/ui/core/dnd/DragDropBase.js +2 -9
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +41 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +4 -2
- package/src/sap/ui/core/format/NumberFormat.js +3 -0
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +26 -4
- 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 +4 -2
- 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_cs.properties +1 -1
- package/src/sap/ui/core/messagebundle_ms.properties +1 -1
- package/src/sap/ui/core/messagebundle_pt.properties +6 -6
- package/src/sap/ui/core/messagebundle_tr.properties +1 -1
- package/src/sap/ui/core/mvc/Controller.js +146 -8
- package/src/sap/ui/core/mvc/HTMLView.js +3 -1
- package/src/sap/ui/core/mvc/JSONView.js +7 -5
- package/src/sap/ui/core/mvc/JSView.js +4 -2
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +145 -68
- package/src/sap/ui/core/mvc/ViewType.js +2 -0
- package/src/sap/ui/core/mvc/XMLView.js +13 -9
- 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/HashChangerBase.js +9 -2
- package/src/sap/ui/core/routing/History.js +188 -87
- package/src/sap/ui/core/routing/Route.js +10 -1
- package/src/sap/ui/core/routing/Router.js +8 -5
- package/src/sap/ui/core/routing/RouterHashChanger.js +26 -16
- package/src/sap/ui/core/routing/TargetCache.js +19 -8
- package/src/sap/ui/core/routing/Targets.js +29 -3
- package/src/sap/ui/core/routing/async/Route.js +9 -1
- package/src/sap/ui/core/routing/async/Target.js +249 -85
- package/src/sap/ui/core/routing/async/TargetCache.js +9 -7
- package/src/sap/ui/core/routing/async/Targets.js +4 -2
- package/src/sap/ui/core/routing/sync/Target.js +15 -0
- package/src/sap/ui/core/rules/App.support.js +36 -2
- 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/InteractionTree.css +0 -14
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/RuleEngineOpaExtension.js +0 -2
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/TimelineOverview.css +0 -35
- package/src/sap/ui/core/support/controls/ObjectViewer.js +5 -9
- package/src/sap/ui/core/support/controls/TreeViewer.js +0 -1
- package/src/sap/ui/core/support/interactionSlider.css +0 -3
- package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
- 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/MessageTest.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +2 -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 -3
- package/src/sap/ui/core/support/support.css +4 -164
- package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
- package/src/sap/ui/core/support/usage/EventBroadcaster.js +0 -22
- package/src/sap/ui/core/themes/base/BlindLayer.less +0 -2
- package/src/sap/ui/core/themes/base/BrowserScrollbar.less +0 -9
- package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +5 -5
- 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/TechnicalInfo.less +0 -1
- package/src/sap/ui/core/themes/base/base.less +569 -414
- 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/base/shared.less +1 -1
- package/src/sap/ui/core/themes/sap_hcb/global.less +34 -0
- package/src/sap/ui/core/theming/Parameters.js +222 -60
- package/src/sap/ui/core/theming/ThemeHelper.js +94 -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 +2 -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 +27 -7
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/XMLPreprocessor.js +2 -2
- package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +18 -0
- 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 +2 -2
- package/src/sap/ui/core/util/serializer/delegate/XML.js +2 -2
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +2 -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/dom/jquery/zIndex.js +3 -3
- package/src/sap/ui/events/jquery/EventSimulation.js +7 -6
- package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
- package/src/sap/ui/model/Binding.js +7 -3
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/CompositeBinding.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/Context.js +31 -11
- package/src/sap/ui/model/DataState.js +1 -1
- package/src/sap/ui/model/ListBinding.js +19 -0
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +3 -3
- package/src/sap/ui/model/SelectionModel.js +5 -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/analytics/AnalyticalBinding.js +36 -45
- package/src/sap/ui/model/analytics/odata4analytics.js +31 -31
- package/src/sap/ui/model/base/ManagedObjectModel.js +11 -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/AnnotationParser.js +23 -18
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +1 -0
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +52 -40
- package/src/sap/ui/model/odata/ODataMetadata.js +3 -3
- package/src/sap/ui/model/odata/ODataModel.js +6 -6
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
- package/src/sap/ui/model/odata/ODataUtils.js +126 -0
- package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +30 -27
- 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 +7 -2
- 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 +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 +3 -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 +7 -2
- package/src/sap/ui/model/odata/type/UnitMixin.js +20 -7
- package/src/sap/ui/model/odata/v2/Context.js +165 -0
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +19 -5
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +20 -79
- package/src/sap/ui/model/odata/v2/ODataModel.js +75 -53
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +55 -41
- package/src/sap/ui/model/odata/v4/Context.js +48 -15
- package/src/sap/ui/model/odata/v4/ODataBinding.js +89 -9
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +87 -21
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +72 -50
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +8 -8
- package/src/sap/ui/model/odata/v4/ODataModel.js +109 -171
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +34 -67
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +18 -9
- package/src/sap/ui/model/odata/v4/ODataUtils.js +1 -1
- package/src/sap/ui/model/odata/v4/SubmitMode.js +3 -3
- package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +17 -16
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -1
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +86 -117
- package/src/sap/ui/model/odata/v4/lib/{_GrandTotalHelper.js → _ConcatHelper.js} +34 -27
- package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +2 -2
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +122 -7
- package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +4 -4
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +2 -2
- package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +25 -74
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +49 -12
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +7 -7
- 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 +3 -3
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +3 -3
- 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 +3 -3
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/performance/Measurement.js +3 -5
- package/src/sap/ui/performance/trace/FESR.js +2 -1
- package/src/sap/ui/performance/trace/Interaction.js +11 -9
- package/src/sap/ui/qunit/QUnitUtils.js +1 -1
- package/src/sap/ui/qunit/qunit-coverage.js +1 -0
- package/src/sap/ui/qunit/qunit-junit.js +1 -0
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/security/FrameOptions.js +2 -1
- package/src/sap/ui/test/Opa5.js +1 -1
- package/src/sap/ui/test/OpaBuilder.js +1 -0
- package/src/sap/ui/test/TestUtils.js +17 -30
- package/src/sap/ui/test/_BrowserLogCollector.js +1 -0
- package/src/sap/ui/test/actions/Action.js +1 -1
- package/src/sap/ui/test/launchers/componentLauncher.js +2 -1
- package/src/sap/ui/test/opaQunit.js +6 -9
- package/src/sap/ui/test/pipelines/MatcherPipeline.js +1 -1
- package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +4 -4
- package/src/sap/ui/test/starter/_utils.js +6 -0
- package/src/sap/ui/test/starter/createSuite.js +1 -1
- 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/caja-html-sanitizer.js +1 -1
- package/src/sap/ui/thirdparty/crossroads.js +10 -2
- package/src/sap/ui/util/Mobile.js +10 -7
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader-autoconfig.js +1 -1
- package/src/ui5loader.js +24 -6
- package/src/sap/ui/model/odata/v4/.eslintrc +0 -6
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
*/
|
|
6
6
|
sap.ui.define([
|
|
7
7
|
"sap/base/Log",
|
|
8
|
+
"sap/ui/base/ManagedObjectMetadata",
|
|
8
9
|
"sap/ui/core/ComponentContainer",
|
|
10
|
+
"sap/ui/core/Placeholder",
|
|
9
11
|
"sap/ui/core/library"
|
|
10
|
-
], function(Log, ComponentContainer, coreLib) {
|
|
12
|
+
], function(Log, ManagedObjectMetadata, ComponentContainer, Placeholder, coreLib) {
|
|
11
13
|
"use strict";
|
|
12
14
|
|
|
13
15
|
// shortcut for sap.ui.core.ComponentLifecycle
|
|
@@ -49,7 +51,7 @@ sap.ui.define([
|
|
|
49
51
|
_display: function (vData, oSequencePromise, oTargetCreateInfo) {
|
|
50
52
|
if (this._oParent) {
|
|
51
53
|
// replace the sync
|
|
52
|
-
oSequencePromise = this._oParent._display(vData, oSequencePromise, oTargetCreateInfo);
|
|
54
|
+
oSequencePromise = this._oParent._display(vData, oSequencePromise, Object.assign({}, oTargetCreateInfo));
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
return this._place(vData, oSequencePromise, oTargetCreateInfo);
|
|
@@ -82,6 +84,32 @@ sap.ui.define([
|
|
|
82
84
|
Log.warning("The target with name '" + this._oOptions._name + "' can't be suspended because it's being loaded or not loaded yet");
|
|
83
85
|
}
|
|
84
86
|
|
|
87
|
+
return this;
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Resumes the object which is loaded by the target.
|
|
92
|
+
*
|
|
93
|
+
* Currently this function initializes the router of the component without parsing the current hash when
|
|
94
|
+
* the object which is loaded by this target is an instance of
|
|
95
|
+
* UIComponent.
|
|
96
|
+
*
|
|
97
|
+
* @return {sap.ui.core.routing.Target} The 'this' to chain the call
|
|
98
|
+
* @private
|
|
99
|
+
*/
|
|
100
|
+
resume: function() {
|
|
101
|
+
if (this._oParent) {
|
|
102
|
+
this._oParent.resume();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (this._isLoaded()) {
|
|
106
|
+
var oObject = this._get(),
|
|
107
|
+
oRouter;
|
|
108
|
+
|
|
109
|
+
if (oObject.isA("sap.ui.core.UIComponent") && (oRouter = oObject.getRouter()) && oObject.hasNativeRouter()) {
|
|
110
|
+
oRouter.initialize(true);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
85
113
|
|
|
86
114
|
return this;
|
|
87
115
|
},
|
|
@@ -97,23 +125,19 @@ sap.ui.define([
|
|
|
97
125
|
},
|
|
98
126
|
|
|
99
127
|
/**
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* The difference between this function and the "_load" function is that this function returns the target
|
|
103
|
-
* instance directly if it's already loaded and returns a Promise during the loading of the target instance
|
|
104
|
-
* while the "_load" function always returns a promise no matter whether the target instance is loaded or not.
|
|
128
|
+
* Retrieves addional target creation info based on the target type.
|
|
105
129
|
*
|
|
106
|
-
* @param {object}
|
|
107
|
-
* only contains the prefix for the routerHashChanger
|
|
108
|
-
* @
|
|
109
|
-
* or a promise which resolves with the target instance during the loading of the target instance
|
|
110
|
-
* @private
|
|
130
|
+
* @param {object} oTargetCreateInfo Additional information for the target creation.
|
|
131
|
+
* Currently the object only contains the prefix for the routerHashChanger
|
|
132
|
+
* @return {object} Merged target creation info object
|
|
111
133
|
*/
|
|
112
|
-
|
|
134
|
+
_getCreateOptions: function(oTargetCreateInfo) {
|
|
113
135
|
var sName = this._getEffectiveObjectName(this._oOptions.name),
|
|
114
136
|
oOptions = this._oOptions,
|
|
115
137
|
oCreateOptions;
|
|
116
138
|
|
|
139
|
+
oTargetCreateInfo = oTargetCreateInfo || {};
|
|
140
|
+
|
|
117
141
|
switch (oOptions.type) {
|
|
118
142
|
case "View":
|
|
119
143
|
oCreateOptions = {
|
|
@@ -138,7 +162,26 @@ sap.ui.define([
|
|
|
138
162
|
throw new Error("The given type " + oOptions.type + " isn't support by sap.ui.core.routing.Target");
|
|
139
163
|
}
|
|
140
164
|
|
|
141
|
-
return
|
|
165
|
+
return oCreateOptions;
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Get the target instance from the TargetCache.
|
|
170
|
+
*
|
|
171
|
+
* The difference between this function and the "_load" function is that this function returns the target
|
|
172
|
+
* instance directly if it's already loaded and returns a Promise during the loading of the target instance
|
|
173
|
+
* while the "_load" function always returns a promise no matter whether the target instance is loaded or not.
|
|
174
|
+
*
|
|
175
|
+
* @param {object} [oTargetCreateInfo] Additional information for the component creation. Currently the object
|
|
176
|
+
* only contains the prefix for the routerHashChanger
|
|
177
|
+
* @returns {sap.ui.core.mvc.View|sap.ui.core.UIComponent|Promise} The target instance when it's already loaded
|
|
178
|
+
* or a promise which resolves with the target instance during the loading of the target instance
|
|
179
|
+
* @private
|
|
180
|
+
*/
|
|
181
|
+
_get: function(oTargetCreateInfo) {
|
|
182
|
+
var oCreateOptions = this._getCreateOptions(oTargetCreateInfo);
|
|
183
|
+
|
|
184
|
+
return this._oCache._get(oCreateOptions, this._oOptions.type,
|
|
142
185
|
// Hook in the route for deprecated global view id, it has to be supported to stay compatible
|
|
143
186
|
this._bUseRawViewId, oTargetCreateInfo);
|
|
144
187
|
},
|
|
@@ -193,12 +236,18 @@ sap.ui.define([
|
|
|
193
236
|
oObject, sErrorMessage, pLoaded,
|
|
194
237
|
bInstantResolve = true,
|
|
195
238
|
fnResolve,
|
|
196
|
-
pNestedRouteMatched
|
|
239
|
+
pNestedRouteMatched,
|
|
240
|
+
bIsComponentTarget = oOptions.type === "Component";
|
|
241
|
+
|
|
242
|
+
oTargetCreateInfo = oTargetCreateInfo || {};
|
|
197
243
|
|
|
198
244
|
if ((oOptions.name || oOptions.usage) && oOptions.type) {
|
|
199
245
|
pNestedRouteMatched = new Promise(function(resolve) {
|
|
200
246
|
fnResolve = resolve;
|
|
201
247
|
});
|
|
248
|
+
if (bIsComponentTarget) {
|
|
249
|
+
oTargetCreateInfo.componentId = that._oOptions.id || ManagedObjectMetadata.uid("uicomponent");
|
|
250
|
+
}
|
|
202
251
|
pLoaded = this._load(oTargetCreateInfo).then(function (oObject) {
|
|
203
252
|
if (oObject.isA("sap.ui.core.UIComponent")) {
|
|
204
253
|
var oRouter = oObject.getRouter();
|
|
@@ -208,7 +257,9 @@ sap.ui.define([
|
|
|
208
257
|
var bIgnoreInitialHash = oTargetCreateInfo && oTargetCreateInfo.ignoreInitialHash;
|
|
209
258
|
|
|
210
259
|
if (!oRouter._oConfig.async){
|
|
211
|
-
throw new Error("The router of component '" + oObject.getId() +
|
|
260
|
+
throw new Error("The router of component '" + oObject.getId() +
|
|
261
|
+
"' which is loaded via the target '" + that._oOptions._name +
|
|
262
|
+
"' is defined as synchronous which is not supported using as a nested component.");
|
|
212
263
|
}
|
|
213
264
|
|
|
214
265
|
if (oRouter._oOwner && oTargetCreateInfo) {
|
|
@@ -243,30 +294,9 @@ sap.ui.define([
|
|
|
243
294
|
// when target information is given
|
|
244
295
|
oSequencePromise = oSequencePromise
|
|
245
296
|
.then(function(oParentInfo) {
|
|
246
|
-
|
|
247
|
-
return {
|
|
248
|
-
object: oObject,
|
|
249
|
-
parentInfo: oParentInfo || {}
|
|
250
|
-
};
|
|
251
|
-
});
|
|
252
|
-
})
|
|
253
|
-
.then(function(oViewInfo) {
|
|
254
|
-
// loaded and do placement
|
|
255
|
-
var vValid = that._isValid(oViewInfo.parentInfo),
|
|
256
|
-
oView, oRootControl;
|
|
257
|
-
|
|
258
|
-
oObject = oViewInfo.object;
|
|
259
|
-
if (oObject.isA("sap.ui.core.UIComponent")) {
|
|
260
|
-
oRootControl = oObject.getRootControl();
|
|
261
|
-
if (oRootControl && oRootControl.isA("sap.ui.core.mvc.View")) {
|
|
262
|
-
oView = oRootControl;
|
|
263
|
-
}
|
|
264
|
-
} else {
|
|
265
|
-
oView = oObject;
|
|
266
|
-
}
|
|
297
|
+
oParentInfo = oParentInfo || {};
|
|
267
298
|
|
|
268
|
-
that.
|
|
269
|
-
that._addTitleProviderAsDependent(oView);
|
|
299
|
+
var vValid = that._isValid(oParentInfo);
|
|
270
300
|
|
|
271
301
|
// validate config and log errors if necessary
|
|
272
302
|
if (vValid !== true) {
|
|
@@ -274,9 +304,10 @@ sap.ui.define([
|
|
|
274
304
|
return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
|
|
275
305
|
}
|
|
276
306
|
|
|
277
|
-
var oViewContainingTheControl =
|
|
278
|
-
oControl =
|
|
279
|
-
|
|
307
|
+
var oViewContainingTheControl = oParentInfo.view,
|
|
308
|
+
oControl = oParentInfo.control,
|
|
309
|
+
pViewContainingTheControl,
|
|
310
|
+
pContainerControl;
|
|
280
311
|
|
|
281
312
|
// if the parent target loads a component, the oViewContainingTheControl is an instance of
|
|
282
313
|
// ComponentContainer. The root control of the component should be retrieved and set as
|
|
@@ -285,78 +316,186 @@ sap.ui.define([
|
|
|
285
316
|
oViewContainingTheControl = oViewContainingTheControl.getComponentInstance().getRootControl();
|
|
286
317
|
}
|
|
287
318
|
|
|
288
|
-
//no parent view - see if
|
|
319
|
+
//no parent view - see if container can be found by using oOptions.controlId under oOptions.rootView
|
|
289
320
|
if (!oViewContainingTheControl && oOptions.rootView) {
|
|
290
|
-
|
|
321
|
+
// oOptions.rootView can be either an id or a promise that resolves with the id
|
|
322
|
+
pViewContainingTheControl = Promise.resolve(oOptions.rootView)
|
|
323
|
+
.then(function(oRootViewId) {
|
|
324
|
+
var oView;
|
|
325
|
+
|
|
326
|
+
if (oRootViewId) {
|
|
327
|
+
oView = sap.ui.getCore().byId(oRootViewId);
|
|
328
|
+
oOptions.rootView = oRootViewId;
|
|
329
|
+
}
|
|
291
330
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
331
|
+
if (!oView) {
|
|
332
|
+
sErrorMessage = "Did not find the root view with the id " + oOptions.rootView;
|
|
333
|
+
return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
|
|
334
|
+
} else {
|
|
335
|
+
return oView;
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
} else {
|
|
339
|
+
pViewContainingTheControl = Promise.resolve(oViewContainingTheControl);
|
|
296
340
|
}
|
|
297
341
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
if (oViewContainingTheControl && oViewContainingTheControl.isA("sap.ui.core.mvc.View")) {
|
|
304
|
-
// controlId was specified - ask the parents view for it
|
|
305
|
-
// wait for the parent view to be loaded in case it's loaded async
|
|
306
|
-
pContainerControl = oViewContainingTheControl.loaded().then(function(oContainerView) {
|
|
307
|
-
return oContainerView.byId(oOptions.controlId);
|
|
308
|
-
});
|
|
342
|
+
pViewContainingTheControl = pViewContainingTheControl.then(function(oView) {
|
|
343
|
+
if (oView && oView.isA("sap.ui.core.mvc.View")) {
|
|
344
|
+
return oView.loaded();
|
|
345
|
+
} else {
|
|
346
|
+
return oView;
|
|
309
347
|
}
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
if (oOptions.controlId) {
|
|
351
|
+
pContainerControl = pViewContainingTheControl.then(function(oContainerView) {
|
|
352
|
+
var oContainerControl;
|
|
353
|
+
|
|
354
|
+
if (oContainerView) {
|
|
355
|
+
oContainerControl = oContainerView.byId(oOptions.controlId);
|
|
356
|
+
}
|
|
310
357
|
|
|
311
|
-
pContainerControl = pContainerControl.then(function(oContainerControl) {
|
|
312
358
|
if (!oContainerControl) {
|
|
313
359
|
//Test if control exists in core (without prefix) since it was not found in the parent or root view
|
|
314
360
|
oContainerControl = sap.ui.getCore().byId(oOptions.controlId);
|
|
315
361
|
}
|
|
316
362
|
|
|
317
|
-
|
|
318
|
-
sErrorMessage = "Control with ID " + oOptions.controlId + " could not be found";
|
|
319
|
-
return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
|
|
320
|
-
} else {
|
|
321
|
-
return oContainerControl;
|
|
322
|
-
}
|
|
363
|
+
return oContainerControl;
|
|
323
364
|
});
|
|
365
|
+
} else {
|
|
366
|
+
pContainerControl = Promise.resolve(oControl);
|
|
324
367
|
}
|
|
325
368
|
|
|
326
|
-
return pContainerControl
|
|
369
|
+
return pContainerControl.then(function(oContainerControl) {
|
|
370
|
+
if (!oContainerControl) {
|
|
371
|
+
sErrorMessage = "Control with ID " + oOptions.controlId + " could not be found";
|
|
372
|
+
return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
|
|
373
|
+
} else {
|
|
374
|
+
return oContainerControl;
|
|
375
|
+
}
|
|
376
|
+
});
|
|
327
377
|
})
|
|
328
378
|
.then(function(oContainerControl) {
|
|
329
|
-
var
|
|
330
|
-
|
|
331
|
-
|
|
379
|
+
var bHasPlaceholderConfig = false;
|
|
380
|
+
var oPlaceholderConfig = oTargetCreateInfo.placeholder || that._oOptions.placeholder || {};
|
|
381
|
+
|
|
382
|
+
if (Placeholder.hasProviders()) {
|
|
383
|
+
Object.assign(oPlaceholderConfig, Placeholder.getPlaceholderFromProviders({
|
|
384
|
+
name: that._oOptions.name,
|
|
385
|
+
type: that._oOptions.type
|
|
386
|
+
})
|
|
387
|
+
);
|
|
388
|
+
}
|
|
332
389
|
|
|
333
|
-
if (
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
390
|
+
if (Object.keys(oPlaceholderConfig).length > 0) {
|
|
391
|
+
if (oPlaceholderConfig.autoClose === undefined) {
|
|
392
|
+
oPlaceholderConfig.autoClose = true;
|
|
393
|
+
}
|
|
394
|
+
bHasPlaceholderConfig = true;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
if (bIsComponentTarget) {
|
|
398
|
+
var oOwnerComponent = that._oCache._oComponent;
|
|
399
|
+
var sComponentContainerId = oTargetCreateInfo.componentId + "-container";
|
|
400
|
+
|
|
401
|
+
oObject = (oOwnerComponent && oOwnerComponent.byId(sComponentContainerId))
|
|
402
|
+
|| sap.ui.getCore().byId(sComponentContainerId);
|
|
337
403
|
|
|
338
404
|
if (!oObject) {
|
|
339
405
|
// defaults mixed in with configured settings
|
|
340
406
|
var oContainerOptions = Object.assign({
|
|
341
|
-
component: oComponent,
|
|
342
407
|
height: "100%",
|
|
343
408
|
width: "100%",
|
|
344
409
|
lifecycle: ComponentLifecycle.Application
|
|
345
410
|
}, oOptions.containerOptions);
|
|
346
411
|
|
|
347
|
-
|
|
412
|
+
if (oOwnerComponent) {
|
|
413
|
+
oOwnerComponent.runAsOwner(function() {
|
|
414
|
+
oObject = new ComponentContainer(oOwnerComponent.createId(sComponentContainerId), oContainerOptions);
|
|
415
|
+
});
|
|
416
|
+
} else {
|
|
417
|
+
oObject = new ComponentContainer(sComponentContainerId, oContainerOptions);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// set container object only if placeholder config is available
|
|
422
|
+
if (bHasPlaceholderConfig) {
|
|
423
|
+
oPlaceholderConfig.container = oObject;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// for view targets use container control to display placeholder
|
|
428
|
+
if (bHasPlaceholderConfig && oContainerControl.isA("sap.ui.core.IPlaceholderSupport")) {
|
|
429
|
+
oPlaceholderConfig.container = oContainerControl;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// Placeholder creation
|
|
433
|
+
if (oPlaceholderConfig.container) {
|
|
434
|
+
oPlaceholderConfig.aggregation = that._oOptions.controlAggregation;
|
|
435
|
+
|
|
436
|
+
if (!oTargetCreateInfo.repeatedRoute) {
|
|
437
|
+
var oCreateOptions = that._getCreateOptions(oTargetCreateInfo);
|
|
438
|
+
var oCachedObject = that._oCache.fetch(oCreateOptions, that._oOptions.type);
|
|
439
|
+
|
|
440
|
+
if (oCachedObject && bIsComponentTarget) {
|
|
441
|
+
// for type "Component", the object that is saved in the placeholder config should be
|
|
442
|
+
// the component container instead of the component
|
|
443
|
+
oPlaceholderConfig.object = oObject;
|
|
444
|
+
} else {
|
|
445
|
+
oPlaceholderConfig.object = oCachedObject;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
if (oPlaceholderConfig.html) {
|
|
450
|
+
oPlaceholderConfig.placeholder = new Placeholder({
|
|
451
|
+
html: oPlaceholderConfig.html
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
if (oPlaceholderConfig.placeholder) {
|
|
456
|
+
that.showPlaceholder(oPlaceholderConfig);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
348
459
|
|
|
349
|
-
|
|
350
|
-
|
|
460
|
+
return {
|
|
461
|
+
containerControl: oContainerControl,
|
|
462
|
+
object: oObject,
|
|
463
|
+
placeholderConfig: oPlaceholderConfig
|
|
464
|
+
};
|
|
465
|
+
})
|
|
466
|
+
.then(function(oViewInfo) {
|
|
467
|
+
return pLoaded.then(function(oObject) {
|
|
468
|
+
var oView, oRootControl;
|
|
469
|
+
if (bIsComponentTarget) {
|
|
470
|
+
var fnOriginalDestroy = oObject.destroy;
|
|
471
|
+
oObject.destroy = function () {
|
|
351
472
|
if (fnOriginalDestroy) {
|
|
352
473
|
fnOriginalDestroy.apply(this);
|
|
353
474
|
}
|
|
354
|
-
|
|
355
475
|
// destroy the component container when the component is destroyed
|
|
356
|
-
|
|
476
|
+
oViewInfo.object.destroy();
|
|
357
477
|
};
|
|
478
|
+
oViewInfo.object.setComponent(oObject);
|
|
479
|
+
|
|
480
|
+
oRootControl = oObject.getRootControl();
|
|
481
|
+
if (oRootControl && oRootControl.isA("sap.ui.core.mvc.View")) {
|
|
482
|
+
oView = oRootControl;
|
|
483
|
+
}
|
|
484
|
+
} else {
|
|
485
|
+
// view
|
|
486
|
+
oViewInfo.object = oObject;
|
|
487
|
+
oView = oObject;
|
|
358
488
|
}
|
|
359
|
-
|
|
489
|
+
|
|
490
|
+
that._bindTitleInTitleProvider(oView);
|
|
491
|
+
that._addTitleProviderAsDependent(oView);
|
|
492
|
+
|
|
493
|
+
return oViewInfo;
|
|
494
|
+
});
|
|
495
|
+
})
|
|
496
|
+
.then(function(oViewInfo) {
|
|
497
|
+
var oContainerControl = oViewInfo.containerControl,
|
|
498
|
+
oObject = oViewInfo.object;
|
|
360
499
|
|
|
361
500
|
// adapt the container before placing the view into it to make the rendering occur together with the next
|
|
362
501
|
// aggregation modification.
|
|
@@ -369,7 +508,8 @@ sap.ui.define([
|
|
|
369
508
|
var oAggregationInfo = oContainerControl.getMetadata().getJSONKeys()[oOptions.controlAggregation];
|
|
370
509
|
|
|
371
510
|
if (!oAggregationInfo) {
|
|
372
|
-
sErrorMessage = "Control " + oOptions.controlId +
|
|
511
|
+
sErrorMessage = "Control " + oOptions.controlId +
|
|
512
|
+
" does not have an aggregation called " + oOptions.controlAggregation;
|
|
373
513
|
return that._refuseInvalidTarget(oOptions._name, sErrorMessage);
|
|
374
514
|
}
|
|
375
515
|
|
|
@@ -377,13 +517,19 @@ sap.ui.define([
|
|
|
377
517
|
oContainerControl[oAggregationInfo._sRemoveAllMutator]();
|
|
378
518
|
}
|
|
379
519
|
|
|
380
|
-
Log.info("Did place the " + oOptions.type.toLowerCase() +
|
|
520
|
+
Log.info("Did place the " + oOptions.type.toLowerCase() +
|
|
521
|
+
" target '" + (oOptions.name ? that._getEffectiveObjectName(oOptions.name) : oOptions.usage) +
|
|
522
|
+
"' with the id '" + oObject.getId() + "' into the aggregation '" + oOptions.controlAggregation +
|
|
523
|
+
"' of a control with the id '" + oContainerControl.getId() + "'", that);
|
|
524
|
+
|
|
525
|
+
// add oObject to oContainerControl's aggregation
|
|
381
526
|
oContainerControl[oAggregationInfo._sMutator](oObject);
|
|
382
527
|
|
|
383
528
|
return {
|
|
384
529
|
name: oOptions._name,
|
|
385
530
|
view: oObject,
|
|
386
|
-
control: oContainerControl
|
|
531
|
+
control: oContainerControl,
|
|
532
|
+
placeholderConfig: oViewInfo.placeholderConfig
|
|
387
533
|
};
|
|
388
534
|
});
|
|
389
535
|
} else {
|
|
@@ -405,13 +551,31 @@ sap.ui.define([
|
|
|
405
551
|
control : oContainerControl,
|
|
406
552
|
config : that._oOptions,
|
|
407
553
|
data: vData,
|
|
408
|
-
routeRelevant:
|
|
554
|
+
routeRelevant: oTargetCreateInfo.routeRelevant
|
|
409
555
|
});
|
|
410
556
|
}
|
|
557
|
+
|
|
558
|
+
if (aObjects[0].placeholderConfig && aObjects[0].placeholderConfig.container &&
|
|
559
|
+
that.hidePlaceholder && aObjects[0].placeholderConfig.autoClose) {
|
|
560
|
+
that.hidePlaceholder(aObjects[0].placeholderConfig);
|
|
561
|
+
}
|
|
562
|
+
|
|
411
563
|
return aObjects[0];
|
|
412
564
|
});
|
|
413
565
|
},
|
|
414
566
|
|
|
567
|
+
showPlaceholder: function(mSettings) {
|
|
568
|
+
if (mSettings.container && mSettings.container.showPlaceholder) {
|
|
569
|
+
mSettings.container.showPlaceholder(mSettings);
|
|
570
|
+
}
|
|
571
|
+
},
|
|
572
|
+
|
|
573
|
+
hidePlaceholder: function(mSettings) {
|
|
574
|
+
if (mSettings.container.hidePlaceholder) {
|
|
575
|
+
mSettings.container.hidePlaceholder();
|
|
576
|
+
}
|
|
577
|
+
},
|
|
578
|
+
|
|
415
579
|
/**
|
|
416
580
|
* Validates the target options, will also be called from the route but route will not log errors
|
|
417
581
|
*
|
|
@@ -29,7 +29,7 @@ sap.ui.define([
|
|
|
29
29
|
* @returns {Promise | object} The desired object, if the object already exists in the cache, if not the promise is returned
|
|
30
30
|
* @private
|
|
31
31
|
*/
|
|
32
|
-
_getObjectWithGlobalId : function (oOptions, sType, oTargetCreateInfo, bSynchronousCreate) {
|
|
32
|
+
_getObjectWithGlobalId : function (oOptions, sType, oTargetCreateInfo, bSynchronousCreate, bNoCreate) {
|
|
33
33
|
var that = this,
|
|
34
34
|
vPromiseOrObject,
|
|
35
35
|
sName,
|
|
@@ -58,12 +58,13 @@ sap.ui.define([
|
|
|
58
58
|
oOptions.settings._routerHashChanger = oRouterHashChanger;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
oOptions.id = oOptions.id || oTargetCreateInfo.componentId;
|
|
62
|
+
|
|
61
63
|
if (oOptions.usage) {
|
|
62
64
|
return oOwnerComponent.createComponent(oOptions);
|
|
63
65
|
} else {
|
|
64
66
|
return Component.create(oOptions);
|
|
65
67
|
}
|
|
66
|
-
break;
|
|
67
68
|
default:
|
|
68
69
|
// do nothing
|
|
69
70
|
}
|
|
@@ -97,9 +98,10 @@ sap.ui.define([
|
|
|
97
98
|
this._checkName(sName, sType);
|
|
98
99
|
|
|
99
100
|
oInstanceCache = this._oCache[sType.toLowerCase()][sName];
|
|
101
|
+
|
|
100
102
|
vPromiseOrObject = oInstanceCache && oInstanceCache[oOptions.id];
|
|
101
103
|
|
|
102
|
-
if (vPromiseOrObject) {
|
|
104
|
+
if (bNoCreate || vPromiseOrObject) {
|
|
103
105
|
return vPromiseOrObject;
|
|
104
106
|
}
|
|
105
107
|
|
|
@@ -139,11 +141,11 @@ sap.ui.define([
|
|
|
139
141
|
* @returns {Promise | object} The desired object, if the object already exists in the cache, if not the promise is returned
|
|
140
142
|
* @private
|
|
141
143
|
*/
|
|
142
|
-
_getViewWithGlobalId : function (oOptions, bSynchronousCreate) {
|
|
144
|
+
_getViewWithGlobalId : function (oOptions, bSynchronousCreate, bNoCreate) {
|
|
143
145
|
if (oOptions && !oOptions.name) {
|
|
144
146
|
oOptions.name = oOptions.viewName;
|
|
145
147
|
}
|
|
146
|
-
return this._getObjectWithGlobalId(oOptions, "View", undefined, bSynchronousCreate);
|
|
148
|
+
return this._getObjectWithGlobalId(oOptions, "View", undefined, bSynchronousCreate, bNoCreate);
|
|
147
149
|
},
|
|
148
150
|
|
|
149
151
|
/**
|
|
@@ -154,8 +156,8 @@ sap.ui.define([
|
|
|
154
156
|
* @returns {Promise | object} The desired object, if the object already exists in the cache, if not the promise is returned
|
|
155
157
|
* @private
|
|
156
158
|
*/
|
|
157
|
-
_getComponentWithGlobalId : function(oOptions, oTargetCreateInfo) {
|
|
158
|
-
return this._getObjectWithGlobalId(oOptions, "Component", oTargetCreateInfo);
|
|
159
|
+
_getComponentWithGlobalId : function(oOptions, oTargetCreateInfo, bNoCreate) {
|
|
160
|
+
return this._getObjectWithGlobalId(oOptions, "Component", oTargetCreateInfo, bNoCreate);
|
|
159
161
|
},
|
|
160
162
|
|
|
161
163
|
/**
|
|
@@ -53,7 +53,10 @@ sap.ui.define(["sap/base/Log"], function(Log) {
|
|
|
53
53
|
var oTargetCreateInfo = {
|
|
54
54
|
prefix: oTargetInfo.prefix,
|
|
55
55
|
propagateTitle: oTargetInfo.propagateTitle || false,
|
|
56
|
-
ignoreInitialHash: oTargetInfo.ignoreInitialHash
|
|
56
|
+
ignoreInitialHash: oTargetInfo.ignoreInitialHash,
|
|
57
|
+
placeholder: oTargetInfo.placeholder,
|
|
58
|
+
repeatedRoute: oTargetInfo.repeatedRoute,
|
|
59
|
+
routeRelevant: oTargetInfo.routeRelevant || false
|
|
57
60
|
};
|
|
58
61
|
|
|
59
62
|
// gather view infos while processing Promise chain
|
|
@@ -111,7 +114,6 @@ sap.ui.define(["sap/base/Log"], function(Log) {
|
|
|
111
114
|
oTarget = this.getTarget(sName);
|
|
112
115
|
|
|
113
116
|
if (oTarget !== undefined) {
|
|
114
|
-
oTarget._routeRelevant = oTargetInfo.routeRelevant || false;
|
|
115
117
|
if (oTargetInfo.routeRelevant) {
|
|
116
118
|
this._addDynamicTargetToRoute(oTargetInfo);
|
|
117
119
|
}
|
|
@@ -50,6 +50,21 @@ sap.ui.define(["sap/base/Log"], function(Log) {
|
|
|
50
50
|
return this;
|
|
51
51
|
},
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Resumes the object which is loaded by the target.
|
|
55
|
+
*
|
|
56
|
+
* Currently this function doesn't do anything because the sync
|
|
57
|
+
* version of the Target can only load Views but no Components.
|
|
58
|
+
*
|
|
59
|
+
* @return {sap.ui.core.routing.Target} The 'this' to chain the call
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
resume : function () {
|
|
63
|
+
// the sync target can only load view and not component
|
|
64
|
+
// therefore it's not needed to do anything in this function
|
|
65
|
+
return this;
|
|
66
|
+
},
|
|
67
|
+
|
|
53
68
|
/**
|
|
54
69
|
* Places the target on the screen
|
|
55
70
|
*
|
|
@@ -17,7 +17,7 @@ sap.ui.define(["sap/ui/support/library", "sap/ui/core/mvc/View", "sap/ui/core/mv
|
|
|
17
17
|
var aObsoleteFunctionNames = ["jQuery.sap.require", "$.sap.require", "sap.ui.requireSync", "jQuery.sap.sjax"];
|
|
18
18
|
|
|
19
19
|
// avoid spoiling the globalAPIRule by using Object.getOwnPropertyDescriptor
|
|
20
|
-
if (jQuery && jQuery.sap &&
|
|
20
|
+
if (jQuery && jQuery.sap && Object.getOwnPropertyDescriptor(jQuery.sap, "sjax").value) {
|
|
21
21
|
aObsoleteFunctionNames.push("jQuery.sap.syncHead",
|
|
22
22
|
"jQuery.sap.syncGet",
|
|
23
23
|
"jQuery.sap.syncPost",
|
|
@@ -439,5 +439,39 @@ sap.ui.define(["sap/ui/support/library", "sap/ui/core/mvc/View", "sap/ui/core/mv
|
|
|
439
439
|
}
|
|
440
440
|
};
|
|
441
441
|
|
|
442
|
-
|
|
442
|
+
/**
|
|
443
|
+
* Checks for missing super constructor calls on sap.ui.core.Component and sap.ui.core.mvc.Controller.
|
|
444
|
+
*/
|
|
445
|
+
var oMissingSuperConstructorRule = {
|
|
446
|
+
id: "missingSuperConstructor",
|
|
447
|
+
audiences: [Audiences.Application, Audiences.Control, Audiences.Internal],
|
|
448
|
+
categories: [Categories.Functionality],
|
|
449
|
+
enabled: true,
|
|
450
|
+
minversion: "1.93",
|
|
451
|
+
title: "Missing super constructor call",
|
|
452
|
+
description: "A sub-class of sap.ui.core.Component or sap.ui.core.mvc.Controller which overrides the constructor must apply the super constructor as well.",
|
|
453
|
+
resolution: "A bound call to sap.ui.core.Component or sap.ui.core.mvc.Controller must be introduced in the sub-class.",
|
|
454
|
+
resolutionurls: [{
|
|
455
|
+
text: "API Documentation: sap.ui.core.mvc.Controller",
|
|
456
|
+
href: "https://openui5.hana.ondemand.com/api/sap.ui.core.mvc.Controller"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
text: "API Documentation: sap.ui.core.Component",
|
|
460
|
+
href: "https://openui5.hana.ondemand.com/api/sap.ui.core.Component"
|
|
461
|
+
}],
|
|
462
|
+
check: function(oIssueManager, oCoreFacade, oScope) {
|
|
463
|
+
var oLoggedObjects = oScope.getLoggedObjects("missingSuperConstructor");
|
|
464
|
+
oLoggedObjects.forEach(function(oLoggedObject) {
|
|
465
|
+
oIssueManager.addIssue({
|
|
466
|
+
severity: Severity.High,
|
|
467
|
+
details: oLoggedObject.message,
|
|
468
|
+
context: {
|
|
469
|
+
id: "WEBPAGE"
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
};
|
|
475
|
+
|
|
476
|
+
return [oControllerSyncCodeCheckRule, oGlobalAPIRule, oJquerySapRule, oSyncFactoryLoadingRule, oGlobalSyncXhrRule, oDeprecatedAPIRule, oControllerExtensionRule, oJQueryThreeDeprecationRule, oMissingSuperInitRule, oMissingSuperConstructorRule, oJSViewRule];
|
|
443
477
|
}, true);
|
|
@@ -26,7 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
* @class
|
|
27
27
|
* A SearchProvider which uses the OpenSearch protocol (either JSON or XML).
|
|
28
28
|
* @extends sap.ui.core.search.SearchProvider
|
|
29
|
-
* @version 1.
|
|
29
|
+
* @version 1.93.2
|
|
30
30
|
*
|
|
31
31
|
* @public
|
|
32
32
|
* @alias sap.ui.core.search.OpenSearchProvider
|
|
@@ -23,7 +23,7 @@ sap.ui.define(['sap/ui/core/Element', "sap/base/Log", 'sap/ui/core/library'],
|
|
|
23
23
|
*
|
|
24
24
|
* Do not create instances of this class, but use a concrete subclass instead.
|
|
25
25
|
* @extends sap.ui.core.Element
|
|
26
|
-
* @version 1.
|
|
26
|
+
* @version 1.93.2
|
|
27
27
|
*
|
|
28
28
|
* @public
|
|
29
29
|
* @alias sap.ui.core.search.SearchProvider
|
|
@@ -83,7 +83,7 @@ sap.ui.define(['sap/ui/base/Object', 'sap/ui/core/service/Service', "sap/base/as
|
|
|
83
83
|
*
|
|
84
84
|
* @extends sap.ui.base.Object
|
|
85
85
|
* @author SAP SE
|
|
86
|
-
* @version 1.
|
|
86
|
+
* @version 1.93.2
|
|
87
87
|
* @alias sap.ui.core.service.ServiceFactory
|
|
88
88
|
* @private
|
|
89
89
|
* @ui5-restricted sap.ushell
|