@openui5/sap.ui.core 1.97.1 → 1.100.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 +92 -2
- package/.reuse/dep5 +25 -30
- package/THIRDPARTY.txt +15 -22
- package/package.json +1 -1
- package/src/jquery.sap.global.js +6 -3
- package/src/jquery.sap.mobile.js +29 -19
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/Log.js +1 -1
- package/src/sap/base/strings/whitespaceReplacer.js +1 -1
- package/src/sap/base/util/LoaderExtensions.js +1 -10
- package/src/sap/base/util/UriParameters.js +2 -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 +80 -168
- package/src/sap/ui/Global.js +4 -4
- package/src/sap/ui/VersionInfo.js +13 -10
- package/src/sap/ui/base/BindingParser.js +34 -7
- package/src/sap/ui/base/Event.js +1 -1
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/ExpressionParser.js +1 -1
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +48 -27
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/ManagedObjectObserver.js +2 -0
- 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 +2 -2
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
- package/src/sap/ui/core/Component.js +3 -3
- package/src/sap/ui/core/ComponentContainer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +2 -2
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +82 -15
- package/src/sap/ui/core/Control.js +3 -2
- package/src/sap/ui/core/Core.js +5 -6
- 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 +5 -7
- 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 +1 -1
- package/src/sap/ui/core/FocusHandler.js +1 -1
- package/src/sap/ui/core/Fragment.js +1 -1
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/HTMLRenderer.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +18 -5
- package/src/sap/ui/core/IconRenderer.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 +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 +9 -2
- 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/LocalBusyIndicatorRenderer.js +2 -2
- package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +60 -6
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Patcher.js +3 -3
- package/src/sap/ui/core/Placeholder.js +28 -28
- package/src/sap/ui/core/Popup.js +12 -9
- package/src/sap/ui/core/RenderManager.js +1 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +2 -2
- package/src/sap/ui/core/UIArea.js +1 -1
- package/src/sap/ui/core/UIComponent.js +1 -1
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +7 -6
- package/src/sap/ui/core/_IconRegistry.js +13 -3
- package/src/sap/ui/core/cache/CacheManager.js +1 -1
- package/src/sap/ui/core/cache/LRUPersistentCache.js +2 -1
- package/src/sap/ui/core/cldr/en_AU.json +1 -1
- package/src/sap/ui/core/date/Buddhist.js +3 -3
- package/src/sap/ui/core/date/Japanese.js +4 -4
- package/src/sap/ui/core/date/UniversalDate.js +10 -0
- package/src/sap/ui/core/date/UniversalDateUtils.js +175 -5
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +9 -6
- package/src/sap/ui/core/dnd/DragAndDrop.js +21 -18
- 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 +3 -3
- package/src/sap/ui/core/format/DateFormat.js +654 -202
- package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +44 -0
- package/src/sap/ui/core/format/ListFormat.js +2 -2
- package/src/sap/ui/core/format/NumberFormat.js +502 -216
- package/src/sap/ui/core/format/TimezoneUtil.js +248 -0
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +126 -53
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageMixin.js +2 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/messagebundle.properties +2 -0
- package/src/sap/ui/core/messagebundle_ar.properties +1 -0
- package/src/sap/ui/core/messagebundle_bg.properties +6 -5
- package/src/sap/ui/core/messagebundle_ca.properties +1 -0
- package/src/sap/ui/core/messagebundle_cs.properties +1 -0
- package/src/sap/ui/core/messagebundle_cy.properties +1 -0
- package/src/sap/ui/core/messagebundle_da.properties +1 -0
- package/src/sap/ui/core/messagebundle_de.properties +2 -1
- package/src/sap/ui/core/messagebundle_el.properties +1 -0
- package/src/sap/ui/core/messagebundle_en.properties +1 -0
- package/src/sap/ui/core/messagebundle_en_GB.properties +1 -0
- package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +1 -0
- package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
- package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +1 -0
- package/src/sap/ui/core/messagebundle_es.properties +1 -0
- package/src/sap/ui/core/messagebundle_es_MX.properties +1 -0
- package/src/sap/ui/core/messagebundle_et.properties +1 -0
- package/src/sap/ui/core/messagebundle_fi.properties +1 -0
- package/src/sap/ui/core/messagebundle_fr.properties +1 -0
- package/src/sap/ui/core/messagebundle_fr_CA.properties +1 -0
- package/src/sap/ui/core/messagebundle_hi.properties +1 -0
- package/src/sap/ui/core/messagebundle_hr.properties +1 -0
- package/src/sap/ui/core/messagebundle_hu.properties +1 -0
- package/src/sap/ui/core/messagebundle_id.properties +3 -2
- package/src/sap/ui/core/messagebundle_it.properties +2 -1
- package/src/sap/ui/core/messagebundle_iw.properties +1 -0
- package/src/sap/ui/core/messagebundle_ja.properties +1 -0
- package/src/sap/ui/core/messagebundle_kk.properties +1 -0
- package/src/sap/ui/core/messagebundle_ko.properties +2 -1
- package/src/sap/ui/core/messagebundle_lt.properties +1 -0
- package/src/sap/ui/core/messagebundle_lv.properties +2 -1
- package/src/sap/ui/core/messagebundle_ms.properties +1 -0
- package/src/sap/ui/core/messagebundle_nl.properties +1 -0
- package/src/sap/ui/core/messagebundle_no.properties +5 -4
- package/src/sap/ui/core/messagebundle_pl.properties +1 -0
- package/src/sap/ui/core/messagebundle_pt.properties +1 -0
- package/src/sap/ui/core/messagebundle_pt_PT.properties +1 -0
- package/src/sap/ui/core/messagebundle_ro.properties +1 -0
- package/src/sap/ui/core/messagebundle_ru.properties +1 -0
- package/src/sap/ui/core/messagebundle_sh.properties +1 -0
- package/src/sap/ui/core/messagebundle_sk.properties +1 -0
- package/src/sap/ui/core/messagebundle_sl.properties +1 -0
- package/src/sap/ui/core/messagebundle_sv.properties +1 -0
- package/src/sap/ui/core/messagebundle_th.properties +1 -0
- package/src/sap/ui/core/messagebundle_tr.properties +1 -0
- package/src/sap/ui/core/messagebundle_uk.properties +1 -0
- package/src/sap/ui/core/messagebundle_vi.properties +1 -0
- package/src/sap/ui/core/messagebundle_zh_CN.properties +1 -0
- package/src/sap/ui/core/messagebundle_zh_TW.properties +1 -0
- package/src/sap/ui/core/mvc/Controller.js +1 -1
- package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +2 -1
- package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/View.js +2 -1
- package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/XMLView.js +24 -3
- 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 +6 -6
- package/src/sap/ui/core/routing/Router.js +4 -3
- package/src/sap/ui/core/routing/Targets.js +17 -13
- package/src/sap/ui/core/rules/Misc.support.js +8 -3
- package/src/sap/ui/core/rules/Model.support.js +95 -8
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +3 -3
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -5
- package/src/sap/ui/core/themes/base/CommandShortcutHints.less +1 -1
- package/src/sap/ui/core/themes/base/base.less +1108 -35
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/global.less +158 -4
- package/src/sap/ui/core/themes/base/parameterClasses.less +21 -21
- package/src/sap/ui/core/themes/sap_hcb/global.less +157 -2
- package/src/sap/ui/core/theming/Parameters.js +22 -142
- package/src/sap/ui/core/theming/ThemeHelper.js +26 -37
- 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/DraftEnabledMockServer.js +21 -16
- 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 +157 -57
- package/src/sap/ui/core/util/PasteHelper.js +5 -5
- package/src/sap/ui/core/util/XMLPreprocessor.js +17 -4
- package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +4 -0
- package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +26 -16
- package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/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/LogViewer.js +2 -2
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/dom/includeStylesheet.js +8 -3
- package/src/sap/ui/events/jquery/EventExtension.js +1 -1
- package/src/sap/ui/events/jquery/EventSimulation.js +3 -13
- package/src/sap/ui/model/Binding.js +4 -3
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +1 -1
- package/src/sap/ui/model/CompositeBinding.js +4 -1
- package/src/sap/ui/model/CompositeDataState.js +26 -4
- package/src/sap/ui/model/CompositeType.js +13 -1
- package/src/sap/ui/model/ContextBinding.js +1 -1
- package/src/sap/ui/model/DataState.js +27 -6
- package/src/sap/ui/model/ListBinding.js +2 -2
- package/src/sap/ui/model/MetaModel.js +2 -3
- package/src/sap/ui/model/Model.js +2 -2
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/_Helper.js +22 -0
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +68 -42
- package/src/sap/ui/model/analytics/ODataModelAdapter.js +2 -15
- package/src/sap/ui/model/base/ManagedObjectModel.js +9 -7
- package/src/sap/ui/model/json/JSONListBinding.js +1 -1
- package/src/sap/ui/model/json/JSONModel.js +15 -8
- package/src/sap/ui/model/json/JSONPropertyBinding.js +1 -1
- package/src/sap/ui/model/message/MessageListBinding.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/message/MessagePropertyBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +3 -3
- package/src/sap/ui/model/odata/ODataModel.js +2 -2
- package/src/sap/ui/model/odata/ODataPropertyBinding.js +3 -1
- package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
- package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
- package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
- package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +346 -0
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +62 -5
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +8 -4
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +324 -112
- package/src/sap/ui/model/odata/v2/ODataModel.js +324 -94
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +3 -4
- package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +65 -5
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +21 -22
- package/src/sap/ui/model/odata/v4/Context.js +224 -101
- package/src/sap/ui/model/odata/v4/ODataBinding.js +99 -55
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +272 -210
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +557 -258
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +131 -100
- package/src/sap/ui/model/odata/v4/ODataModel.js +503 -260
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +106 -138
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +87 -80
- package/src/sap/ui/model/odata/v4/ODataUtils.js +5 -5
- package/src/sap/ui/model/odata/v4/SubmitMode.js +0 -1
- package/src/sap/ui/model/odata/v4/ValueListType.js +0 -1
- package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +20 -20
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +3 -5
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -4
- package/src/sap/ui/model/odata/v4/lib/_Batch.js +21 -20
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +322 -127
- package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +5 -1
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +28 -21
- package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +62 -61
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Parser.js +52 -43
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +216 -51
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +147 -147
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +14 -13
- package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +66 -67
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/model/xml/XMLPropertyBinding.js +1 -1
- package/src/sap/ui/performance/trace/FESR.js +1 -1
- package/src/sap/ui/performance/trace/FESRHelper.js +72 -0
- package/src/sap/ui/performance/trace/Interaction.js +6 -2
- package/src/sap/ui/performance/trace/Passport.js +3 -3
- package/src/sap/ui/qunit/qunit-2-css.js +4 -4
- package/src/sap/ui/qunit/qunit-css.js +4 -4
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/BlanketReporter.js +1 -1
- package/src/sap/ui/test/BranchTracking.js +1 -0
- package/src/sap/ui/test/Opa5.js +1 -1
- package/src/sap/ui/test/OpaBuilder.js +7 -7
- package/src/sap/ui/test/TestUtils.js +12 -2
- package/src/sap/ui/test/_LogCollector.js +1 -1
- package/src/sap/ui/test/_UsageReport.js +1 -1
- package/src/sap/ui/test/actions/Action.js +4 -2
- package/src/sap/ui/test/actions/Press.js +51 -2
- package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
- package/src/sap/ui/test/generic/GenericTestCollection.js +176 -0
- package/src/sap/ui/test/generic/TestBase.js +151 -0
- package/src/sap/ui/test/generic/Utils.js +284 -0
- package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +9 -8
- package/src/sap/ui/test/selectors/_ControlSelectorValidator.js +1 -1
- package/src/sap/ui/test/starter/_setupAndStart.js +4 -0
- package/src/sap/ui/test/starter/createSuite.js +3 -3
- package/src/sap/ui/thirdparty/IPv6.js +1 -1
- package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
- package/src/sap/ui/thirdparty/URI.js +7 -3
- package/src/sap/ui/thirdparty/URITemplate.js +1 -1
- package/src/sap/ui/thirdparty/jquery-mobile-custom.js +3 -6
- package/src/sap/ui/thirdparty/jqueryui/jquery-ui-datepicker.js +143 -3
- package/src/sap/ui/thirdparty/jqueryui/jquery-ui-position.js +8 -1
- package/src/sap/ui/thirdparty/jszip.js +17 -7
- package/src/sap/ui/thirdparty/mobify-carousel.js +1 -1
- package/src/sap/ui/util/Mobile.js +17 -0
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/util/XMLHelper.js +53 -30
- package/src/ui5loader.js +4 -4
package/src/sap/ui/Device.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* This API is independent from any other part of the UI5 framework. This allows it to be loaded beforehand, if it is needed, to create the UI5 bootstrap
|
|
12
12
|
* dynamically depending on the capabilities of the browser or device.
|
|
13
13
|
*
|
|
14
|
-
* @version 1.
|
|
14
|
+
* @version 1.100.0
|
|
15
15
|
* @namespace
|
|
16
16
|
* @name sap.ui.Device
|
|
17
17
|
* @public
|
|
@@ -32,7 +32,7 @@ if (typeof window.sap.ui !== "object") {
|
|
|
32
32
|
|
|
33
33
|
//Skip initialization if API is already available
|
|
34
34
|
if (typeof window.sap.ui.Device === "object" || typeof window.sap.ui.Device === "function") {
|
|
35
|
-
var apiVersion = "1.
|
|
35
|
+
var apiVersion = "1.100.0";
|
|
36
36
|
window.sap.ui.Device._checkAPIVersion(apiVersion);
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
@@ -105,7 +105,7 @@ if (typeof window.sap.ui !== "object") {
|
|
|
105
105
|
|
|
106
106
|
//Only used internal to make clear when Device API is loaded in wrong version
|
|
107
107
|
Device._checkAPIVersion = function(sVersion) {
|
|
108
|
-
var v = "1.
|
|
108
|
+
var v = "1.100.0";
|
|
109
109
|
if (v != sVersion) {
|
|
110
110
|
oLogger.log(WARNING, "Device API version differs: " + v + " <-> " + sVersion);
|
|
111
111
|
}
|
|
@@ -156,6 +156,18 @@ if (typeof window.sap.ui !== "object") {
|
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
+
var oReducedNavigator;
|
|
160
|
+
var setDefaultNavigator = function () {
|
|
161
|
+
oReducedNavigator = {
|
|
162
|
+
userAgent: window.navigator.userAgent,
|
|
163
|
+
platform: window.navigator.platform
|
|
164
|
+
};
|
|
165
|
+
// Only add property standalone in case navigator has this property
|
|
166
|
+
if (window.navigator.hasOwnProperty("standalone")) {
|
|
167
|
+
oReducedNavigator.standalone = window.navigator.standalone;
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
setDefaultNavigator();
|
|
159
171
|
//******** OS Detection ********
|
|
160
172
|
|
|
161
173
|
/**
|
|
@@ -183,7 +195,7 @@ if (typeof window.sap.ui !== "object") {
|
|
|
183
195
|
/**
|
|
184
196
|
* The version of the operating system as <code>string</code>.
|
|
185
197
|
*
|
|
186
|
-
* Might be empty if no version can be determined.
|
|
198
|
+
* Might be empty if no version can reliably be determined.
|
|
187
199
|
*
|
|
188
200
|
* @name sap.ui.Device.os.versionStr
|
|
189
201
|
* @type string
|
|
@@ -192,7 +204,7 @@ if (typeof window.sap.ui !== "object") {
|
|
|
192
204
|
/**
|
|
193
205
|
* The version of the operating system as <code>float</code>.
|
|
194
206
|
*
|
|
195
|
-
* Might be <code>-1</code> if no version can be determined.
|
|
207
|
+
* Might be <code>-1</code> if no version can reliably be determined.
|
|
196
208
|
*
|
|
197
209
|
* @name sap.ui.Device.os.version
|
|
198
210
|
* @type float
|
|
@@ -235,20 +247,6 @@ if (typeof window.sap.ui !== "object") {
|
|
|
235
247
|
* @type boolean
|
|
236
248
|
* @public
|
|
237
249
|
*/
|
|
238
|
-
/**
|
|
239
|
-
* If this flag is set to <code>true</code>, a Blackberry operating system is used.
|
|
240
|
-
*
|
|
241
|
-
* @name sap.ui.Device.os.blackberry
|
|
242
|
-
* @type boolean
|
|
243
|
-
* @public
|
|
244
|
-
*/
|
|
245
|
-
/**
|
|
246
|
-
* If this flag is set to <code>true</code>, a Windows Phone operating system is used.
|
|
247
|
-
*
|
|
248
|
-
* @name sap.ui.Device.os.windows_phone
|
|
249
|
-
* @type boolean
|
|
250
|
-
* @public
|
|
251
|
-
*/
|
|
252
250
|
/**
|
|
253
251
|
* Windows operating system name.
|
|
254
252
|
*
|
|
@@ -284,40 +282,24 @@ if (typeof window.sap.ui !== "object") {
|
|
|
284
282
|
* @name sap.ui.Device.os.OS.ANDROID
|
|
285
283
|
* @public
|
|
286
284
|
*/
|
|
287
|
-
/**
|
|
288
|
-
* Blackberry operating system name.
|
|
289
|
-
*
|
|
290
|
-
* @see sap.ui.Device.os.name
|
|
291
|
-
* @name sap.ui.Device.os.OS.BLACKBERRY
|
|
292
|
-
* @public
|
|
293
|
-
*/
|
|
294
|
-
/**
|
|
295
|
-
* Windows Phone operating system name.
|
|
296
|
-
*
|
|
297
|
-
* @see sap.ui.Device.os.name
|
|
298
|
-
* @name sap.ui.Device.os.OS.WINDOWS_PHONE
|
|
299
|
-
* @public
|
|
300
|
-
*/
|
|
301
285
|
|
|
302
286
|
var OS = {
|
|
303
287
|
"WINDOWS": "win",
|
|
304
288
|
"MACINTOSH": "mac",
|
|
305
289
|
"LINUX": "linux",
|
|
306
290
|
"IOS": "iOS",
|
|
307
|
-
"ANDROID": "Android"
|
|
308
|
-
"BLACKBERRY": "bb",
|
|
309
|
-
"WINDOWS_PHONE": "winphone"
|
|
291
|
+
"ANDROID": "Android"
|
|
310
292
|
};
|
|
311
293
|
|
|
312
|
-
function getOS(
|
|
294
|
+
function getOS() { // may return null!!
|
|
313
295
|
|
|
314
|
-
userAgent =
|
|
296
|
+
var userAgent = oReducedNavigator.userAgent;
|
|
315
297
|
|
|
316
298
|
var rPlatform, // regular expression for platform
|
|
317
299
|
aMatches;
|
|
318
300
|
|
|
319
301
|
function getDesktopOS() {
|
|
320
|
-
var sPlatform =
|
|
302
|
+
var sPlatform = oReducedNavigator.platform;
|
|
321
303
|
if (sPlatform.indexOf("Win") != -1) {
|
|
322
304
|
// userAgent in windows 7 contains: windows NT 6.1
|
|
323
305
|
// userAgent in windows 8 contains: windows NT 6.2 or higher
|
|
@@ -357,39 +339,10 @@ if (typeof window.sap.ui !== "object") {
|
|
|
357
339
|
return null;
|
|
358
340
|
}
|
|
359
341
|
|
|
360
|
-
// Windows Phone. User agent includes other platforms and therefore must be checked first:
|
|
361
|
-
rPlatform = /Windows Phone (?:OS )?([\d.]*)/;
|
|
362
|
-
aMatches = userAgent.match(rPlatform);
|
|
363
|
-
if (aMatches) {
|
|
364
|
-
return ({
|
|
365
|
-
"name": OS.WINDOWS_PHONE,
|
|
366
|
-
"versionStr": aMatches[1]
|
|
367
|
-
});
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
// BlackBerry 10:
|
|
371
|
-
if (userAgent.indexOf("(BB10;") > 0) {
|
|
372
|
-
rPlatform = /\sVersion\/([\d.]+)\s/;
|
|
373
|
-
aMatches = userAgent.match(rPlatform);
|
|
374
|
-
if (aMatches) {
|
|
375
|
-
return {
|
|
376
|
-
"name": OS.BLACKBERRY,
|
|
377
|
-
"versionStr": aMatches[1]
|
|
378
|
-
};
|
|
379
|
-
} else {
|
|
380
|
-
return {
|
|
381
|
-
"name": OS.BLACKBERRY,
|
|
382
|
-
"versionStr": '10'
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
// iOS, Android, BlackBerry 6.0+:
|
|
388
342
|
rPlatform = /\(([a-zA-Z ]+);\s(?:[U]?[;]?)([\D]+)((?:[\d._]*))(?:.*[\)][^\d]*)([\d.]*)\s/;
|
|
389
343
|
aMatches = userAgent.match(rPlatform);
|
|
390
344
|
if (aMatches) {
|
|
391
345
|
var rAppleDevices = /iPhone|iPad|iPod/;
|
|
392
|
-
var rBbDevices = /PlayBook|BlackBerry/;
|
|
393
346
|
if (aMatches[0].match(rAppleDevices)) {
|
|
394
347
|
aMatches[3] = aMatches[3].replace(/_/g, ".");
|
|
395
348
|
//result[1] contains info of devices
|
|
@@ -403,11 +356,6 @@ if (typeof window.sap.ui !== "object") {
|
|
|
403
356
|
"name": OS.ANDROID,
|
|
404
357
|
"versionStr": aMatches[3]
|
|
405
358
|
});
|
|
406
|
-
} else if (aMatches[0].match(rBbDevices)) {
|
|
407
|
-
return ({
|
|
408
|
-
"name": OS.BLACKBERRY,
|
|
409
|
-
"versionStr": aMatches[4]
|
|
410
|
-
});
|
|
411
359
|
}
|
|
412
360
|
}
|
|
413
361
|
|
|
@@ -425,8 +373,8 @@ if (typeof window.sap.ui !== "object") {
|
|
|
425
373
|
return getDesktopOS();
|
|
426
374
|
}
|
|
427
375
|
|
|
428
|
-
function setOS(
|
|
429
|
-
Device.os = getOS(
|
|
376
|
+
function setOS() {
|
|
377
|
+
Device.os = getOS() || {};
|
|
430
378
|
Device.os.OS = OS;
|
|
431
379
|
Device.os.version = Device.os.versionStr ? parseFloat(Device.os.versionStr) : -1;
|
|
432
380
|
|
|
@@ -439,8 +387,6 @@ if (typeof window.sap.ui !== "object") {
|
|
|
439
387
|
}
|
|
440
388
|
}
|
|
441
389
|
setOS();
|
|
442
|
-
// expose for unit test
|
|
443
|
-
Device._setOS = setOS;
|
|
444
390
|
|
|
445
391
|
|
|
446
392
|
|
|
@@ -551,9 +497,8 @@ if (typeof window.sap.ui !== "object") {
|
|
|
551
497
|
/**
|
|
552
498
|
* If this flag is set to <code>true</code>, the Safari browser runs in standalone fullscreen mode on iOS.
|
|
553
499
|
*
|
|
554
|
-
* <b>Note:</b> This flag is only available if the Safari browser was detected.
|
|
555
|
-
*
|
|
556
|
-
* the availability of {@link sap.ui.Device.browser.version}.
|
|
500
|
+
* <b>Note:</b> This flag is only available if the Safari browser was detected. There might be slight
|
|
501
|
+
* differences in behavior and detection, e.g. regarding the availability of {@link sap.ui.Device.browser.version}.
|
|
557
502
|
*
|
|
558
503
|
* @name sap.ui.Device.browser.fullscreen
|
|
559
504
|
* @type boolean
|
|
@@ -563,11 +508,12 @@ if (typeof window.sap.ui !== "object") {
|
|
|
563
508
|
/**
|
|
564
509
|
* If this flag is set to <code>true</code>, the Safari browser runs in webview mode on iOS.
|
|
565
510
|
*
|
|
566
|
-
* <b>Note:</b>
|
|
567
|
-
*
|
|
568
|
-
* the
|
|
511
|
+
* <b>Note:</b> Since iOS 11 it is no longer reliably possible to detect whether an application runs in <code>webview</code>.
|
|
512
|
+
* The flag is <code>true</code> if the browser's user agent contains 'SAPFioriClient'. Applications
|
|
513
|
+
* using WKWebView have the possibility to customize the user agent, and to explicitly add this information.
|
|
569
514
|
*
|
|
570
515
|
* @name sap.ui.Device.browser.webview
|
|
516
|
+
* @deprecated as of version 1.98.
|
|
571
517
|
* @type boolean
|
|
572
518
|
* @since 1.31.0
|
|
573
519
|
* @public
|
|
@@ -625,11 +571,10 @@ if (typeof window.sap.ui !== "object") {
|
|
|
625
571
|
"ANDROID": "an"
|
|
626
572
|
};
|
|
627
573
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
574
|
+
function getBrowser() {
|
|
575
|
+
var sUserAgent = oReducedNavigator.userAgent,
|
|
576
|
+
sLowerCaseUserAgent = sUserAgent.toLowerCase();
|
|
631
577
|
|
|
632
|
-
function getBrowser(customUa, customNav) {
|
|
633
578
|
/*!
|
|
634
579
|
* Taken from jQuery JavaScript Library v1.7.1
|
|
635
580
|
* http://jquery.com/
|
|
@@ -645,16 +590,12 @@ if (typeof window.sap.ui !== "object") {
|
|
|
645
590
|
*
|
|
646
591
|
* Date: Mon Nov 21 21:11:03 2011 -0500
|
|
647
592
|
*/
|
|
648
|
-
function calcBrowser(
|
|
649
|
-
var sUserAgent = (customUa || ua).toLowerCase(); // use custom user-agent if given
|
|
650
|
-
|
|
593
|
+
function calcBrowser() {
|
|
651
594
|
var rwebkit = /(webkit)[ \/]([\w.]+)/;
|
|
652
|
-
var ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/;
|
|
653
595
|
var rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/;
|
|
654
596
|
|
|
655
|
-
var browserMatch = rwebkit.exec(
|
|
656
|
-
|
|
657
|
-
sUserAgent.indexOf("compatible") < 0 && rmozilla.exec(sUserAgent) || [];
|
|
597
|
+
var browserMatch = rwebkit.exec(sLowerCaseUserAgent) ||
|
|
598
|
+
sLowerCaseUserAgent.indexOf("compatible") < 0 && rmozilla.exec(sLowerCaseUserAgent) || [];
|
|
658
599
|
|
|
659
600
|
var oRes = {
|
|
660
601
|
browser: browserMatch[1] || "",
|
|
@@ -664,17 +605,16 @@ if (typeof window.sap.ui !== "object") {
|
|
|
664
605
|
return oRes;
|
|
665
606
|
}
|
|
666
607
|
|
|
667
|
-
var oBrowser = calcBrowser(
|
|
668
|
-
var sUserAgent = customUa || ua;
|
|
669
|
-
var oNavigator = customNav || window.navigator;
|
|
608
|
+
var oBrowser = calcBrowser();
|
|
670
609
|
|
|
671
610
|
// jQuery checks for user agent strings. We differentiate between browsers
|
|
672
611
|
var oExpMobile;
|
|
673
612
|
var oResult;
|
|
613
|
+
var fVersion;
|
|
674
614
|
if (oBrowser.mozilla) {
|
|
675
615
|
oExpMobile = /Mobile/;
|
|
676
616
|
if (sUserAgent.match(/Firefox\/(\d+\.\d+)/)) {
|
|
677
|
-
|
|
617
|
+
fVersion = parseFloat(RegExp.$1);
|
|
678
618
|
oResult = {
|
|
679
619
|
name: BROWSER.FIREFOX,
|
|
680
620
|
versionStr: "" + fVersion,
|
|
@@ -692,7 +632,7 @@ if (typeof window.sap.ui !== "object") {
|
|
|
692
632
|
}
|
|
693
633
|
} else if (oBrowser.webkit) {
|
|
694
634
|
// webkit version is needed for calculation if the mobile android device is a tablet (calculation of other mobile devices work without)
|
|
695
|
-
var regExpWebkitVersion =
|
|
635
|
+
var regExpWebkitVersion = sLowerCaseUserAgent.match(/webkit[\/]([\d.]+)/);
|
|
696
636
|
var webkitVersion;
|
|
697
637
|
if (regExpWebkitVersion) {
|
|
698
638
|
webkitVersion = regExpWebkitVersion[1];
|
|
@@ -728,31 +668,24 @@ if (typeof window.sap.ui !== "object") {
|
|
|
728
668
|
};
|
|
729
669
|
} else { // Safari might have an issue with sUserAgent.match(...); thus changing
|
|
730
670
|
var oExp = /Version\/(\d+\.\d+).*Safari/;
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
var aParts = oExp.exec(sUserAgent);
|
|
734
|
-
var fVersion = parseFloat(aParts[1]);
|
|
671
|
+
if (oExp.test(sUserAgent) || /iPhone|iPad|iPod/.test(sUserAgent)) {
|
|
672
|
+
var bStandalone = oReducedNavigator.standalone;
|
|
735
673
|
oResult = {
|
|
736
674
|
name: BROWSER.SAFARI,
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
webview: false,
|
|
740
|
-
version: fVersion,
|
|
741
|
-
mobile: oExpMobile.test(sUserAgent),
|
|
742
|
-
webkit: true,
|
|
743
|
-
webkitVersion: webkitVersion
|
|
744
|
-
};
|
|
745
|
-
} else if (/iPhone|iPad|iPod/.test(sUserAgent) && !(/CriOS/.test(sUserAgent)) && !(/FxiOS/.test(sUserAgent)) && (bStandalone === true || bStandalone === false)) {
|
|
746
|
-
//WebView or Standalone mode on iOS
|
|
747
|
-
oResult = {
|
|
748
|
-
name: BROWSER.SAFARI,
|
|
749
|
-
version: -1,
|
|
750
|
-
fullscreen: bStandalone,
|
|
751
|
-
webview: !bStandalone,
|
|
675
|
+
fullscreen: bStandalone === undefined ? false : bStandalone,
|
|
676
|
+
webview: /SAPFioriClient/.test(sUserAgent),
|
|
752
677
|
mobile: oExpMobile.test(sUserAgent),
|
|
753
678
|
webkit: true,
|
|
754
679
|
webkitVersion: webkitVersion
|
|
755
680
|
};
|
|
681
|
+
var aParts = oExp.exec(sUserAgent);
|
|
682
|
+
if (aParts) {
|
|
683
|
+
fVersion = parseFloat(aParts[1]);
|
|
684
|
+
oResult.versionStr = "" + fVersion;
|
|
685
|
+
oResult.version = fVersion;
|
|
686
|
+
} else {
|
|
687
|
+
oResult.version = -1;
|
|
688
|
+
}
|
|
756
689
|
} else { // other webkit based browser
|
|
757
690
|
oResult = {
|
|
758
691
|
mobile: oExpMobile.test(sUserAgent),
|
|
@@ -778,7 +711,6 @@ if (typeof window.sap.ui !== "object") {
|
|
|
778
711
|
|
|
779
712
|
return oResult;
|
|
780
713
|
}
|
|
781
|
-
Device._testUserAgent = getBrowser; // expose the user-agent parsing (mainly for testing), but don't let it be overwritten
|
|
782
714
|
|
|
783
715
|
function setBrowser() {
|
|
784
716
|
Device.browser = getBrowser();
|
|
@@ -883,10 +815,14 @@ if (typeof window.sap.ui !== "object") {
|
|
|
883
815
|
* This is also the recommended way of detecting touch feature support, according to the Chrome Developers
|
|
884
816
|
* (https://www.chromestatus.com/feature/4764225348042752).
|
|
885
817
|
*/
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
818
|
+
var detectTouch = function () {
|
|
819
|
+
return !!(('ontouchstart' in window)
|
|
820
|
+
|| (window.navigator.maxTouchPoints > 0)
|
|
821
|
+
|| (window.DocumentTouch && document instanceof window.DocumentTouch)
|
|
822
|
+
|| (window.TouchEvent && Device.browser.firefox));
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
Device.support.touch = detectTouch();
|
|
890
826
|
|
|
891
827
|
Device.support.pointer = !!window.PointerEvent;
|
|
892
828
|
|
|
@@ -1581,8 +1517,8 @@ if (typeof window.sap.ui !== "object") {
|
|
|
1581
1517
|
return oSystem;
|
|
1582
1518
|
}
|
|
1583
1519
|
|
|
1584
|
-
function isTablet(
|
|
1585
|
-
var sUserAgent =
|
|
1520
|
+
function isTablet() {
|
|
1521
|
+
var sUserAgent = oReducedNavigator.userAgent;
|
|
1586
1522
|
if (Device.os.ios) {
|
|
1587
1523
|
return /ipad/i.test(sUserAgent);
|
|
1588
1524
|
} else if (Device.os.windows || Device.os.macintosh || Device.os.linux) {
|
|
@@ -1598,45 +1534,7 @@ if (typeof window.sap.ui !== "object") {
|
|
|
1598
1534
|
} else {
|
|
1599
1535
|
//in real mobile device
|
|
1600
1536
|
if (Device.support.touch) { // eslint-disable-line no-lonely-if
|
|
1601
|
-
|
|
1602
|
-
// From Android version 4.4, WebView also uses Chrome as Kernel.
|
|
1603
|
-
// We can use the user agent pattern defined in Chrome to do phone/tablet detection
|
|
1604
|
-
// According to the information here: https://developer.chrome.com/multidevice/user-agent#chrome_for_android_user_agent,
|
|
1605
|
-
// the existence of "Mobile" indicates it's a phone. But because the crosswalk framework which is used in Fiori Client
|
|
1606
|
-
// inserts another "Mobile" to the user agent for both tablet and phone, we need to check whether "Mobile Safari/<Webkit Rev>" exists.
|
|
1607
|
-
return !/Mobile Safari\/[.0-9]+/.test(sUserAgent);
|
|
1608
|
-
} else {
|
|
1609
|
-
var densityFactor = window.devicePixelRatio ? window.devicePixelRatio : 1; // may be undefined in Windows Phone devices
|
|
1610
|
-
// On Android sometimes window.screen.width returns the logical CSS pixels, sometimes the physical device pixels;
|
|
1611
|
-
// Tests on multiple devices suggest this depends on the Webkit version.
|
|
1612
|
-
// The Webkit patch which changed the behavior was done here: https://bugs.webkit.org/show_bug.cgi?id=106460
|
|
1613
|
-
// Chrome 27 with Webkit 537.36 returns the logical pixels,
|
|
1614
|
-
// Chrome 18 with Webkit 535.19 returns the physical pixels.
|
|
1615
|
-
// The BlackBerry 10 browser with Webkit 537.10+ returns the physical pixels.
|
|
1616
|
-
// So it appears like somewhere above Webkit 537.10 we do not hve to divide by the devicePixelRatio anymore.
|
|
1617
|
-
if (Device.os.android && Device.browser.webkit && (parseFloat(Device.browser.webkitVersion) > 537.10)) {
|
|
1618
|
-
densityFactor = 1;
|
|
1619
|
-
}
|
|
1620
|
-
|
|
1621
|
-
//this is how android distinguishes between tablet and phone
|
|
1622
|
-
//http://android-developers.blogspot.de/2011/07/new-tools-for-managing-screen-sizes.html
|
|
1623
|
-
var bTablet = (Math.min(window.screen.width / densityFactor, window.screen.height / densityFactor) >= 600);
|
|
1624
|
-
|
|
1625
|
-
// special workaround for Nexus 7 where the window.screen.width is 600px or 601px in portrait mode (=> tablet)
|
|
1626
|
-
// but window.screen.height 552px in landscape mode (=> phone), because the browser UI takes some space on top.
|
|
1627
|
-
// So the detected device type depends on the orientation :-(
|
|
1628
|
-
// actually this is a Chrome bug, as "width"/"height" should return the entire screen's dimensions and
|
|
1629
|
-
// "availWidth"/"availHeight" should return the size available after subtracting the browser UI
|
|
1630
|
-
if (isLandscape() &&
|
|
1631
|
-
(window.screen.height === 552 || window.screen.height === 553) // old/new Nexus 7
|
|
1632
|
-
&&
|
|
1633
|
-
(/Nexus 7/i.test(sUserAgent))) {
|
|
1634
|
-
bTablet = true;
|
|
1635
|
-
}
|
|
1636
|
-
|
|
1637
|
-
return bTablet;
|
|
1638
|
-
}
|
|
1639
|
-
|
|
1537
|
+
return Device.browser.chrome && Device.os.android && !/Mobile Safari\/[.0-9]+/.test(sUserAgent);
|
|
1640
1538
|
} else {
|
|
1641
1539
|
// This simple android phone detection can be used here because this is the mobile emulation mode in desktop browser
|
|
1642
1540
|
var bAndroidPhone = (/(?=android)(?=.*mobile)/i.test(sUserAgent));
|
|
@@ -1646,15 +1544,13 @@ if (typeof window.sap.ui !== "object") {
|
|
|
1646
1544
|
}
|
|
1647
1545
|
}
|
|
1648
1546
|
|
|
1649
|
-
function setSystem(
|
|
1650
|
-
Device.system = getSystem(
|
|
1547
|
+
function setSystem() {
|
|
1548
|
+
Device.system = getSystem();
|
|
1651
1549
|
if (Device.system.tablet || Device.system.phone) {
|
|
1652
1550
|
Device.browser.mobile = true;
|
|
1653
1551
|
}
|
|
1654
1552
|
}
|
|
1655
1553
|
setSystem();
|
|
1656
|
-
// expose the function for unit test
|
|
1657
|
-
Device._getSystem = getSystem;
|
|
1658
1554
|
|
|
1659
1555
|
//******** Orientation Detection ********
|
|
1660
1556
|
|
|
@@ -1978,6 +1874,22 @@ if (typeof window.sap.ui !== "object") {
|
|
|
1978
1874
|
Device.media.initRangeSet();
|
|
1979
1875
|
Device.media.initRangeSet(RANGESETS["SAP_STANDARD_EXTENDED"]);
|
|
1980
1876
|
|
|
1877
|
+
// Only for test purposes
|
|
1878
|
+
Device._setCustomNavigator = function (oCustomNavigator, bTouch) {
|
|
1879
|
+
// Reset to device capabilities in case no custom navigator is given
|
|
1880
|
+
if (!oCustomNavigator) {
|
|
1881
|
+
Device.support.touch = detectTouch();
|
|
1882
|
+
setDefaultNavigator();
|
|
1883
|
+
} else {
|
|
1884
|
+
Device.support.touch = bTouch;
|
|
1885
|
+
oReducedNavigator = Object.assign(oReducedNavigator, oCustomNavigator);
|
|
1886
|
+
}
|
|
1887
|
+
|
|
1888
|
+
setOS();
|
|
1889
|
+
setBrowser();
|
|
1890
|
+
setSystem();
|
|
1891
|
+
};
|
|
1892
|
+
|
|
1981
1893
|
// define module if API is available
|
|
1982
1894
|
if (sap.ui.define) {
|
|
1983
1895
|
sap.ui.define("sap/ui/Device", [], function() {
|
package/src/sap/ui/Global.js
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* sap.ui.lazyRequire("sap.ui.core.Control");
|
|
19
19
|
* sap.ui.lazyRequire("sap.m.Button");
|
|
20
20
|
*
|
|
21
|
-
* @version 1.
|
|
21
|
+
* @version 1.100.0
|
|
22
22
|
* @author SAP SE
|
|
23
23
|
* @public
|
|
24
24
|
*/
|
|
@@ -48,7 +48,7 @@ sap.ui.define([
|
|
|
48
48
|
* The <code>sap</code> namespace is automatically registered with the
|
|
49
49
|
* OpenAjax hub if it exists.
|
|
50
50
|
*
|
|
51
|
-
* @version 1.
|
|
51
|
+
* @version 1.100.0
|
|
52
52
|
* @namespace
|
|
53
53
|
* @public
|
|
54
54
|
* @name sap
|
|
@@ -61,7 +61,7 @@ sap.ui.define([
|
|
|
61
61
|
* The <code>sap.ui</code> namespace is the central OpenAjax compliant entry
|
|
62
62
|
* point for UI related JavaScript functionality provided by SAP.
|
|
63
63
|
*
|
|
64
|
-
* @version 1.
|
|
64
|
+
* @version 1.100.0
|
|
65
65
|
* @namespace
|
|
66
66
|
* @name sap.ui
|
|
67
67
|
* @public
|
|
@@ -75,7 +75,7 @@ sap.ui.define([
|
|
|
75
75
|
* The version of the SAP UI Library
|
|
76
76
|
* @type string
|
|
77
77
|
*/
|
|
78
|
-
version: "1.
|
|
78
|
+
version: "1.100.0",
|
|
79
79
|
// buildinfo.lastchange is deprecated and is therefore defaulted to empty string
|
|
80
80
|
buildinfo : { lastchange : "", buildtime : "${buildtime}" }
|
|
81
81
|
});
|
|
@@ -16,19 +16,22 @@ sap.ui.define(['sap/base/util/LoaderExtensions'], function (LoaderExtensions) {
|
|
|
16
16
|
var VersionInfo = {};
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Loads the version info
|
|
20
|
-
* The returned Promise resolves with the version info files content.
|
|
19
|
+
* Loads the version info asynchronously from resource "sap-ui-version.json".
|
|
21
20
|
*
|
|
22
|
-
*
|
|
21
|
+
* By default, the returned promise will resolve with the whole version info file's content.
|
|
22
|
+
* If a library name is specified in the options, then the promise will resolve with the
|
|
23
|
+
* version info for that library only or with <code>undefined</code>, if the named library
|
|
24
|
+
* is not listed in the version info file.
|
|
23
25
|
*
|
|
24
|
-
*
|
|
26
|
+
* If loading the version info file fails, the promise will be rejected with the corresponding
|
|
27
|
+
* error.
|
|
25
28
|
*
|
|
26
|
-
* @param {object} mOptions
|
|
27
|
-
* @param {string} mOptions.library
|
|
28
|
-
* @
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* @param {object} [mOptions] Map of options
|
|
30
|
+
* @param {string} [mOptions.library] Name of a library (e.g. "sap.ui.core")
|
|
31
|
+
* @returns {Promise<object|undefined>}
|
|
32
|
+
* A promise which resolves with the full version info or with the library specific version
|
|
33
|
+
* info or <code>undefined</code> if the library is not listed; if an error occurred during
|
|
34
|
+
* loading, then the promise is rejected.
|
|
32
35
|
* @since 1.56.0
|
|
33
36
|
* @public
|
|
34
37
|
* @static
|
|
@@ -62,13 +62,23 @@ sap.ui.define([
|
|
|
62
62
|
* a composite formatter
|
|
63
63
|
*/
|
|
64
64
|
function composeFormatters(aFormatters, fnRootFormatter) {
|
|
65
|
-
function
|
|
65
|
+
var bRequiresIContext = aFormatters.some(function (fnFormatter) {
|
|
66
|
+
return fnFormatter.requiresIContext; // Note: it's either true or missing here
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
function formatter(oInterface) {
|
|
66
70
|
var i,
|
|
67
71
|
n = aFormatters.length,
|
|
72
|
+
aArguments = arguments,
|
|
68
73
|
aResults = new Array(n);
|
|
69
74
|
|
|
70
75
|
for (i = 0; i < n; i += 1) {
|
|
71
|
-
|
|
76
|
+
if (aFormatters[i].requiresIContext) {
|
|
77
|
+
aArguments = arguments;
|
|
78
|
+
} else if (bRequiresIContext) { // drop oInterface
|
|
79
|
+
aArguments = Array.prototype.slice.call(arguments, 1);
|
|
80
|
+
}
|
|
81
|
+
aResults[i] = aFormatters[i].apply(this, aArguments);
|
|
72
82
|
}
|
|
73
83
|
|
|
74
84
|
if (fnRootFormatter) {
|
|
@@ -79,6 +89,10 @@ sap.ui.define([
|
|
|
79
89
|
// formatter or type specified"
|
|
80
90
|
return n > 1 ? aResults.join(" ") : aResults[0];
|
|
81
91
|
}
|
|
92
|
+
|
|
93
|
+
if (bRequiresIContext) {
|
|
94
|
+
formatter.requiresIContext = true;
|
|
95
|
+
}
|
|
82
96
|
// @see sap.ui.base.ManagedObject#_bindProperty
|
|
83
97
|
formatter.textFragments = fnRootFormatter && fnRootFormatter.textFragments
|
|
84
98
|
|| "sap.ui.base.BindingParser: composeFormatters";
|
|
@@ -594,11 +608,24 @@ sap.ui.define([
|
|
|
594
608
|
aParts = aParts.concat(vEmbeddedBinding.parts);
|
|
595
609
|
iEnd = aParts.length;
|
|
596
610
|
if (vEmbeddedBinding.formatter) {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
611
|
+
if (vEmbeddedBinding.formatter.requiresIContext === true) {
|
|
612
|
+
fnFormatter = function (oInterface) {
|
|
613
|
+
// old formatter needs to operate on its own slice of overall args
|
|
614
|
+
var aArguments
|
|
615
|
+
= Array.prototype.slice.call(arguments, iStart + 1, iEnd + 1);
|
|
616
|
+
|
|
617
|
+
aArguments.unshift(oInterface._slice(iStart, iEnd));
|
|
618
|
+
|
|
619
|
+
return vEmbeddedBinding.formatter.apply(this, aArguments);
|
|
620
|
+
};
|
|
621
|
+
fnFormatter.requiresIContext = true;
|
|
622
|
+
} else {
|
|
623
|
+
fnFormatter = function () {
|
|
624
|
+
// old formatter needs to operate on its own slice of overall args
|
|
625
|
+
return vEmbeddedBinding.formatter.apply(this,
|
|
626
|
+
Array.prototype.slice.call(arguments, iStart, iEnd));
|
|
627
|
+
};
|
|
628
|
+
}
|
|
602
629
|
} else if (iEnd - iStart > 1) {
|
|
603
630
|
fnFormatter = function () {
|
|
604
631
|
// @see sap.ui.model.CompositeBinding#getExternalValue
|
package/src/sap/ui/base/Event.js
CHANGED
|
@@ -340,7 +340,7 @@ sap.ui.define([
|
|
|
340
340
|
* and "else" clause.
|
|
341
341
|
* @param {function} fnCondition - formatter function for the condition
|
|
342
342
|
* @param {function} fnThen - formatter function for the "then" clause
|
|
343
|
-
* @param {function} fnElse- formatter function for the "else" clause
|
|
343
|
+
* @param {function} fnElse - formatter function for the "else" clause
|
|
344
344
|
* @param {any[]} aParts - the array of binding values
|
|
345
345
|
* @return {any} - the value of the "then" or "else" clause, depending on the value of the
|
|
346
346
|
* condition
|
|
@@ -28,7 +28,7 @@ sap.ui.define(['sap/ui/base/Object'], function(BaseObject) {
|
|
|
28
28
|
* no internals of the class can be accessed.
|
|
29
29
|
*
|
|
30
30
|
* @author Malte Wedel, Daniel Brinkmann
|
|
31
|
-
* @version 1.
|
|
31
|
+
* @version 1.100.0
|
|
32
32
|
* @param {sap.ui.base.Object} oObject
|
|
33
33
|
* Object for which a facade should be created
|
|
34
34
|
* @param {string[]} aMethods
|