@openui5/sap.ui.core 1.96.2 → 1.98.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 +62 -3
- package/.reuse/dep5 +26 -31
- package/THIRDPARTY.txt +15 -21
- package/package.json +1 -1
- package/src/jquery.sap.act.js +1 -1
- package/src/jquery.sap.dom.js +1 -1
- package/src/jquery.sap.encoder.js +1 -1
- package/src/jquery.sap.events.js +1 -1
- package/src/jquery.sap.global.js +2 -2
- package/src/jquery.sap.history.js +1 -1
- package/src/jquery.sap.keycodes.js +1 -1
- package/src/jquery.sap.mobile.js +1 -9
- package/src/jquery.sap.promise.js +1 -1
- package/src/jquery.sap.properties.js +2 -2
- package/src/jquery.sap.resources.js +3 -3
- package/src/jquery.sap.script.js +2 -2
- package/src/jquery.sap.sjax.js +1 -1
- package/src/jquery.sap.storage.js +4 -4
- package/src/jquery.sap.strings.js +1 -1
- package/src/jquery.sap.stubs.js +1 -1
- package/src/jquery.sap.trace.js +1 -1
- package/src/jquery.sap.ui.js +1 -1
- package/src/jquery.sap.xml.js +1 -1
- package/src/sap/base/Log.js +1 -1
- package/src/sap/base/assert.js +1 -1
- package/src/sap/base/i18n/ResourceBundle.js +1 -1
- package/src/sap/base/security/URLListValidator.js +1 -1
- package/src/sap/base/security/URLWhitelist.js +1 -1
- package/src/sap/base/security/encodeCSS.js +1 -1
- package/src/sap/base/security/encodeJS.js +1 -1
- package/src/sap/base/security/encodeURL.js +1 -1
- package/src/sap/base/security/encodeURLParameters.js +1 -1
- package/src/sap/base/security/encodeXML.js +1 -1
- package/src/sap/base/security/sanitizeHTML.js +1 -1
- package/src/sap/base/strings/camelize.js +1 -1
- package/src/sap/base/strings/capitalize.js +1 -1
- package/src/sap/base/strings/escapeRegExp.js +1 -1
- package/src/sap/base/strings/formatMessage.js +1 -1
- package/src/sap/base/strings/hash.js +1 -1
- package/src/sap/base/strings/hyphenate.js +1 -1
- package/src/sap/base/strings/toHex.js +1 -1
- package/src/sap/base/strings/whitespaceReplacer.js +1 -1
- package/src/sap/base/util/Deferred.js +1 -1
- package/src/sap/base/util/JSTokenizer.js +1 -1
- package/src/sap/base/util/LoaderExtensions.js +1 -1
- package/src/sap/base/util/ObjectPath.js +1 -1
- package/src/sap/base/util/Properties.js +1 -1
- package/src/sap/base/util/UriParameters.js +1 -1
- package/src/sap/base/util/Version.js +1 -1
- package/src/sap/base/util/_merge.js +1 -1
- package/src/sap/base/util/array/diff.js +1 -1
- package/src/sap/base/util/array/uniqueSort.js +1 -1
- package/src/sap/base/util/deepClone.js +1 -1
- package/src/sap/base/util/deepEqual.js +1 -1
- package/src/sap/base/util/deepExtend.js +1 -1
- package/src/sap/base/util/defineCoupledProperty.js +1 -1
- package/src/sap/base/util/defineLazyProperty.js +1 -1
- package/src/sap/base/util/each.js +1 -1
- package/src/sap/base/util/extend.js +1 -1
- package/src/sap/base/util/includes.js +1 -1
- package/src/sap/base/util/isEmptyObject.js +1 -1
- package/src/sap/base/util/isPlainObject.js +1 -1
- package/src/sap/base/util/merge.js +1 -1
- package/src/sap/base/util/now.js +1 -1
- package/src/sap/base/util/resolveReference.js +1 -1
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +2 -2
- package/src/sap/base/util/restricted/_compact.js +2 -2
- package/src/sap/base/util/restricted/_curry.js +2 -2
- package/src/sap/base/util/restricted/_debounce.js +2 -2
- package/src/sap/base/util/restricted/_difference.js +2 -2
- package/src/sap/base/util/restricted/_differenceBy.js +2 -2
- package/src/sap/base/util/restricted/_differenceWith.js +2 -2
- package/src/sap/base/util/restricted/_flatMap.js +2 -2
- package/src/sap/base/util/restricted/_flatMapDeep.js +2 -2
- package/src/sap/base/util/restricted/_flatMapDepth.js +2 -2
- package/src/sap/base/util/restricted/_flatten.js +2 -2
- package/src/sap/base/util/restricted/_flattenDeep.js +2 -2
- package/src/sap/base/util/restricted/_flattenDepth.js +2 -2
- package/src/sap/base/util/restricted/_intersection.js +2 -2
- package/src/sap/base/util/restricted/_intersectionBy.js +2 -2
- package/src/sap/base/util/restricted/_intersectionWith.js +2 -2
- package/src/sap/base/util/restricted/_isEqual.js +2 -2
- package/src/sap/base/util/restricted/_isEqualWith.js +2 -2
- package/src/sap/base/util/restricted/_isNil.js +2 -2
- package/src/sap/base/util/restricted/_max.js +2 -2
- package/src/sap/base/util/restricted/_merge.js +2 -2
- package/src/sap/base/util/restricted/_mergeWith.js +2 -2
- package/src/sap/base/util/restricted/_min.js +2 -2
- package/src/sap/base/util/restricted/_omit.js +2 -2
- package/src/sap/base/util/restricted/_pick.js +2 -2
- package/src/sap/base/util/restricted/_pickBy.js +2 -2
- package/src/sap/base/util/restricted/_throttle.js +2 -2
- package/src/sap/base/util/restricted/_toArray.js +2 -2
- package/src/sap/base/util/restricted/_union.js +2 -2
- package/src/sap/base/util/restricted/_unionBy.js +2 -2
- package/src/sap/base/util/restricted/_unionWith.js +2 -2
- package/src/sap/base/util/restricted/_uniq.js +2 -2
- package/src/sap/base/util/restricted/_uniqBy.js +2 -2
- package/src/sap/base/util/restricted/_uniqWith.js +2 -2
- package/src/sap/base/util/restricted/_without.js +2 -2
- package/src/sap/base/util/restricted/_xor.js +2 -2
- package/src/sap/base/util/restricted/_xorBy.js +2 -2
- package/src/sap/base/util/restricted/_xorWith.js +2 -2
- package/src/sap/base/util/restricted/_zipObject.js +2 -2
- package/src/sap/base/util/restricted/_zipObjectDeep.js +2 -2
- package/src/sap/base/util/uid.js +1 -1
- package/src/sap/base/util/values.js +1 -1
- package/src/sap/ui/Device.js +82 -170
- package/src/sap/ui/Global.js +12 -17
- package/src/sap/ui/VersionInfo.js +1 -1
- package/src/sap/ui/base/BindingParser.js +1 -1
- package/src/sap/ui/base/DataType.js +1 -1
- package/src/sap/ui/base/Event.js +2 -2
- package/src/sap/ui/base/EventProvider.js +2 -2
- package/src/sap/ui/base/Exception.js +1 -1
- package/src/sap/ui/base/ExpressionParser.js +1 -1
- package/src/sap/ui/base/Interface.js +2 -2
- package/src/sap/ui/base/ManagedObject.js +20 -9
- package/src/sap/ui/base/ManagedObjectMetadata.js +2 -2
- package/src/sap/ui/base/ManagedObjectObserver.js +1 -1
- package/src/sap/ui/base/ManagedObjectRegistry.js +1 -1
- package/src/sap/ui/base/Metadata.js +2 -4
- package/src/sap/ui/base/Object.js +2 -2
- package/src/sap/ui/base/ObjectPool.js +2 -2
- package/src/sap/ui/base/SyncPromise.js +1 -1
- package/src/sap/ui/base/syncXHRFix.js +1 -1
- package/src/sap/ui/core/.library +2 -28
- package/src/sap/ui/core/AppCacheBuster.js +5 -5
- package/src/sap/ui/core/BlockLayerUtils.js +1 -1
- package/src/sap/ui/core/BusyIndicator.js +2 -2
- package/src/sap/ui/core/BusyIndicatorUtils.js +2 -2
- package/src/sap/ui/core/CalendarType.js +1 -1
- package/src/sap/ui/core/CommandExecution.js +1 -1
- package/src/sap/ui/core/Component.js +32 -10
- package/src/sap/ui/core/ComponentContainer.js +2 -2
- package/src/sap/ui/core/ComponentContainerRenderer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +2 -2
- package/src/sap/ui/core/ComponentSupport.js +2 -2
- package/src/sap/ui/core/Configuration.js +3 -5
- package/src/sap/ui/core/ContextMenuSupport.js +1 -1
- package/src/sap/ui/core/Control.js +4 -4
- package/src/sap/ui/core/Core.js +3 -6
- package/src/sap/ui/core/CustomData.js +2 -2
- package/src/sap/ui/core/CustomStyleClassSupport.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +2 -2
- package/src/sap/ui/core/Element.js +4 -7
- package/src/sap/ui/core/ElementMetadata.js +2 -2
- package/src/sap/ui/core/EnabledPropagator.js +2 -2
- package/src/sap/ui/core/EventBus.js +2 -2
- 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 +2 -2
- package/src/sap/ui/core/HTML.js +4 -4
- package/src/sap/ui/core/HTMLRenderer.js +1 -1
- package/src/sap/ui/core/History.js +2 -2
- package/src/sap/ui/core/Icon.js +3 -4
- package/src/sap/ui/core/IconPool.js +1 -1
- package/src/sap/ui/core/IconRenderer.js +1 -1
- package/src/sap/ui/core/IndicationColorSupport.js +2 -2
- package/src/sap/ui/core/IntervalTrigger.js +2 -2
- package/src/sap/ui/core/InvisibleMessage.js +2 -2
- package/src/sap/ui/core/InvisibleRenderer.js +2 -2
- package/src/sap/ui/core/InvisibleText.js +2 -2
- package/src/sap/ui/core/Item.js +2 -2
- package/src/sap/ui/core/LabelEnablement.js +2 -2
- package/src/sap/ui/core/LayoutData.js +2 -2
- package/src/sap/ui/core/ListItem.js +2 -2
- package/src/sap/ui/core/LocalBusyIndicator.js +2 -2
- package/src/sap/ui/core/LocalBusyIndicatorRenderer.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicatorSupport.js +2 -2
- package/src/sap/ui/core/Locale.js +2 -2
- package/src/sap/ui/core/LocaleData.js +4 -4
- package/src/sap/ui/core/Manifest.js +2 -2
- package/src/sap/ui/core/Message.js +2 -2
- package/src/sap/ui/core/Patcher.js +1 -1
- package/src/sap/ui/core/Placeholder.js +29 -29
- package/src/sap/ui/core/Popup.js +2 -2
- package/src/sap/ui/core/RenderManager.js +4 -4
- package/src/sap/ui/core/Renderer.js +2 -2
- package/src/sap/ui/core/ResizeHandler.js +2 -2
- package/src/sap/ui/core/ScrollBar.js +5 -4
- package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +2 -2
- package/src/sap/ui/core/Shortcut.js +1 -1
- package/src/sap/ui/core/ShortcutHint.js +1 -1
- package/src/sap/ui/core/ShortcutHintsMixin.js +1 -1
- package/src/sap/ui/core/StashedControlSupport.js +1 -1
- package/src/sap/ui/core/ThemeCheck.js +3 -3
- package/src/sap/ui/core/Title.js +2 -2
- package/src/sap/ui/core/TooltipBase.js +3 -3
- package/src/sap/ui/core/UIArea.js +4 -4
- package/src/sap/ui/core/UIComponent.js +2 -2
- package/src/sap/ui/core/UIComponentMetadata.js +2 -2
- package/src/sap/ui/core/ValueStateSupport.js +2 -2
- package/src/sap/ui/core/VariantLayoutData.js +2 -2
- package/src/sap/ui/core/XMLComposite.js +2 -2
- package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
- package/src/sap/ui/core/XMLTemplateProcessor.js +27 -6
- package/src/sap/ui/core/_IconRegistry.js +1 -1
- package/src/sap/ui/core/cache/CacheManager.js +1 -1
- package/src/sap/ui/core/cache/CacheManagerNOP.js +1 -1
- package/src/sap/ui/core/cache/LRUPersistentCache.js +5 -3
- package/src/sap/ui/core/date/Buddhist.js +1 -1
- package/src/sap/ui/core/date/Gregorian.js +1 -1
- package/src/sap/ui/core/date/Islamic.js +1 -1
- package/src/sap/ui/core/date/Japanese.js +1 -1
- package/src/sap/ui/core/date/Persian.js +1 -1
- package/src/sap/ui/core/date/UniversalDate.js +1 -1
- package/src/sap/ui/core/date/UniversalDateUtils.js +206 -3
- package/src/sap/ui/core/date/_Calendars.js +1 -1
- package/src/sap/ui/core/delegate/ItemNavigation.js +2 -2
- package/src/sap/ui/core/delegate/ScrollEnablement.js +2 -2
- package/src/sap/ui/core/designtime/ComponentContainer.designtime.js +1 -1
- package/src/sap/ui/core/designtime/CustomData.designtime.js +1 -1
- package/src/sap/ui/core/designtime/Icon.designtime.js +1 -1
- package/src/sap/ui/core/designtime/UIComponent.designtime.js +1 -1
- package/src/sap/ui/core/designtime/library.designtime.js +1 -1
- package/src/sap/ui/core/designtime/mvc/ControllerExtensionTemplate.js +1 -1
- package/src/sap/ui/core/designtime/mvc/View.designtime.js +1 -1
- package/src/sap/ui/core/designtime/mvc/XMLView.designtime.js +1 -1
- package/src/sap/ui/core/dnd/DragAndDrop.js +3 -3
- package/src/sap/ui/core/dnd/DragDropBase.js +2 -2
- package/src/sap/ui/core/dnd/DragDropInfo.js +2 -2
- package/src/sap/ui/core/dnd/DragInfo.js +2 -2
- package/src/sap/ui/core/dnd/DropInfo.js +2 -2
- package/src/sap/ui/core/format/DateFormat.js +45 -9
- package/src/sap/ui/core/format/FileSizeFormat.js +1 -1
- package/src/sap/ui/core/format/ListFormat.js +1 -1
- package/src/sap/ui/core/format/NumberFormat.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +2 -2
- package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +1 -1
- package/src/sap/ui/core/library.js +46 -9
- package/src/sap/ui/core/library.support.js +1 -1
- package/src/sap/ui/core/message/ControlMessageProcessor.js +6 -6
- package/src/sap/ui/core/message/Message.js +2 -2
- package/src/sap/ui/core/message/MessageManager.js +2 -2
- package/src/sap/ui/core/message/MessageMixin.js +3 -2
- package/src/sap/ui/core/message/MessageParser.js +2 -2
- package/src/sap/ui/core/message/MessageProcessor.js +23 -13
- package/src/sap/ui/core/messagebundle_fr.properties +7 -7
- package/src/sap/ui/core/messagebundle_it.properties +1 -1
- package/src/sap/ui/core/messagebundle_no.properties +4 -4
- package/src/sap/ui/core/messagebundle_ru.properties +21 -21
- package/src/sap/ui/core/mvc/Controller.js +5 -5
- package/src/sap/ui/core/mvc/ControllerExtension.js +1 -1
- package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
- package/src/sap/ui/core/mvc/ControllerMetadata.js +1 -1
- package/src/sap/ui/core/mvc/EventHandlerResolver.js +1 -1
- package/src/sap/ui/core/mvc/HTMLView.js +2 -2
- package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +3 -2
- package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +2 -2
- package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/OverrideExecution.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +2 -2
- package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/View.js +3 -2
- package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/ViewType.js +1 -1
- package/src/sap/ui/core/mvc/XMLProcessingMode.js +1 -1
- package/src/sap/ui/core/mvc/XMLView.js +17 -4
- package/src/sap/ui/core/mvc/XMLViewRenderer.js +1 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +2 -2
- package/src/sap/ui/core/plugin/LessSupport.js +2 -2
- package/src/sap/ui/core/plugin/TemplatingSupport.js +2 -2
- package/src/sap/ui/core/postmessage/Bus.js +2 -2
- package/src/sap/ui/core/postmessage/confirmationDialog.js +2 -2
- package/src/sap/ui/core/routing/HashChanger.js +1 -1
- package/src/sap/ui/core/routing/HashChangerBase.js +1 -1
- package/src/sap/ui/core/routing/History.js +1 -1
- package/src/sap/ui/core/routing/Route.js +7 -7
- package/src/sap/ui/core/routing/Router.js +4 -3
- package/src/sap/ui/core/routing/RouterHashChanger.js +1 -1
- package/src/sap/ui/core/routing/Target.js +1 -1
- package/src/sap/ui/core/routing/TargetCache.js +1 -1
- package/src/sap/ui/core/routing/Targets.js +18 -14
- package/src/sap/ui/core/routing/Views.js +1 -1
- package/src/sap/ui/core/routing/async/Route.js +1 -1
- package/src/sap/ui/core/routing/async/Target.js +1 -1
- package/src/sap/ui/core/routing/async/TargetCache.js +1 -1
- package/src/sap/ui/core/routing/async/Targets.js +1 -1
- package/src/sap/ui/core/routing/sync/Route.js +1 -1
- package/src/sap/ui/core/routing/sync/Target.js +1 -1
- package/src/sap/ui/core/routing/sync/TargetCache.js +1 -1
- package/src/sap/ui/core/routing/sync/Targets.js +1 -1
- package/src/sap/ui/core/rules/App.support.js +1 -1
- package/src/sap/ui/core/rules/Config.support.js +1 -1
- package/src/sap/ui/core/rules/CoreHelper.support.js +1 -1
- package/src/sap/ui/core/rules/Misc.support.js +52 -2
- package/src/sap/ui/core/rules/Model.support.js +96 -9
- package/src/sap/ui/core/rules/Rendering.support.js +2 -5
- package/src/sap/ui/core/rules/Theming.support.js +1 -1
- package/src/sap/ui/core/rules/View.support.js +15 -47
- package/src/sap/ui/core/search/OpenSearchProvider.js +2 -2
- package/src/sap/ui/core/search/SearchProvider.js +2 -2
- package/src/sap/ui/core/service/Service.js +2 -2
- package/src/sap/ui/core/service/ServiceFactory.js +2 -2
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +2 -2
- package/src/sap/ui/core/support/BootSupportTool.js +1 -1
- package/src/sap/ui/core/support/Hotkeys.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +3 -3
- package/src/sap/ui/core/support/RuleEngineOpaExtension.js +1 -2
- package/src/sap/ui/core/support/Support.js +2 -2
- package/src/sap/ui/core/support/ToolsAPI.js +1 -1
- package/src/sap/ui/core/support/bootstrapFallback.js +1 -1
- package/src/sap/ui/core/support/controls/InteractionSlider.js +1 -1
- package/src/sap/ui/core/support/controls/InteractionTree.js +1 -1
- package/src/sap/ui/core/support/controls/ObjectViewer.js +1 -1
- package/src/sap/ui/core/support/controls/TimelineOverview.js +1 -1
- package/src/sap/ui/core/support/controls/TreeViewer.js +2 -2
- package/src/sap/ui/core/support/debugReboot.js +1 -1
- package/src/sap/ui/core/support/plugins/Breakpoint.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
- package/src/sap/ui/core/support/plugins/Debugging.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
- package/src/sap/ui/core/support/plugins/LocalStorage.js +2 -2
- package/src/sap/ui/core/support/plugins/Performance.js +2 -3
- package/src/sap/ui/core/support/plugins/Selector.js +2 -2
- package/src/sap/ui/core/support/plugins/TechInfo.js +2 -2
- package/src/sap/ui/core/support/plugins/Trace.js +2 -2
- package/src/sap/ui/core/support/plugins/ViewInfo.js +2 -2
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +3 -7
- package/src/sap/ui/core/support/techinfo/moduleTreeHelper.js +1 -1
- package/src/sap/ui/core/support/trace/E2eTraceLib.js +4 -4
- package/src/sap/ui/core/support/trace/EppLib.js +1 -1
- package/src/sap/ui/core/support/usage/EventBroadcaster.js +1 -1
- package/src/sap/ui/core/syncStyleClass.js +1 -1
- package/src/sap/ui/core/themes/base/library.source.less +1 -1
- package/src/sap/ui/core/themes/base/parameterClasses.less +21 -21
- package/src/sap/ui/core/themes/sap_hcb/library.source.less +1 -1
- package/src/sap/ui/core/theming/Parameters.js +23 -143
- package/src/sap/ui/core/theming/ThemeHelper.js +27 -38
- package/src/sap/ui/core/tmpl/DOMAttribute.js +2 -2
- package/src/sap/ui/core/tmpl/DOMElement.js +2 -2
- package/src/sap/ui/core/tmpl/DOMElementRenderer.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +2 -2
- package/src/sap/ui/core/tmpl/Template.js +2 -2
- package/src/sap/ui/core/tmpl/TemplateControl.js +2 -2
- package/src/sap/ui/core/tmpl/TemplateControlRenderer.js +1 -1
- package/src/sap/ui/core/tmpl/_parsePath.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +2 -2
- package/src/sap/ui/core/util/DraftEnabledMockServer.js +22 -17
- package/src/sap/ui/core/util/Export.js +2 -2
- package/src/sap/ui/core/util/ExportCell.js +2 -2
- package/src/sap/ui/core/util/ExportColumn.js +2 -2
- package/src/sap/ui/core/util/ExportRow.js +2 -2
- package/src/sap/ui/core/util/ExportType.js +2 -2
- package/src/sap/ui/core/util/ExportTypeCSV.js +2 -2
- package/src/sap/ui/core/util/File.js +2 -2
- package/src/sap/ui/core/util/LibraryInfo.js +2 -2
- package/src/sap/ui/core/util/MockServer.js +140 -43
- package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +2 -2
- package/src/sap/ui/core/util/ResponsivePaddingsEnablement.js +1 -1
- package/src/sap/ui/core/util/ShortcutHelper.js +1 -1
- package/src/sap/ui/core/util/XMLPreprocessor.js +1 -1
- package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +5 -1
- package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +31 -21
- package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +2 -2
- package/src/sap/ui/core/util/serializer/Serializer.js +2 -2
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +2 -2
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +2 -2
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +2 -2
- 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 +2 -2
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +2 -2
- package/src/sap/ui/core/ws/WebSocket.js +2 -2
- package/src/sap/ui/debug/ControlTree.js +2 -2
- package/src/sap/ui/debug/DebugEnv.js +2 -2
- package/src/sap/ui/debug/Highlighter.js +1 -1
- package/src/sap/ui/debug/LogViewer.js +1 -1
- package/src/sap/ui/debug/PropertyList.js +2 -2
- package/src/sap/ui/dom/containsOrEquals.js +1 -1
- package/src/sap/ui/dom/denormalizeScrollBeginRTL.js +1 -1
- package/src/sap/ui/dom/denormalizeScrollLeftRTL.js +1 -1
- package/src/sap/ui/dom/getComputedStyleFix.js +1 -1
- package/src/sap/ui/dom/getFirstEditableInput.js +1 -1
- package/src/sap/ui/dom/getOwnerWindow.js +1 -1
- package/src/sap/ui/dom/getScrollbarSize.js +1 -1
- package/src/sap/ui/dom/includeScript.js +1 -1
- package/src/sap/ui/dom/includeStylesheet.js +1 -1
- package/src/sap/ui/dom/isHidden.js +1 -1
- package/src/sap/ui/dom/jquery/Aria.js +1 -1
- package/src/sap/ui/dom/jquery/Focusable.js +1 -1
- package/src/sap/ui/dom/jquery/Selection.js +1 -1
- package/src/sap/ui/dom/jquery/Selectors.js +1 -1
- package/src/sap/ui/dom/jquery/control.js +1 -1
- package/src/sap/ui/dom/jquery/cursorPos.js +1 -1
- package/src/sap/ui/dom/jquery/getSelectedText.js +1 -1
- package/src/sap/ui/dom/jquery/hasTabIndex.js +1 -1
- package/src/sap/ui/dom/jquery/parentByAttribute.js +1 -1
- package/src/sap/ui/dom/jquery/rect.js +1 -1
- package/src/sap/ui/dom/jquery/rectContains.js +1 -1
- package/src/sap/ui/dom/jquery/scrollLeftRTL.js +1 -1
- package/src/sap/ui/dom/jquery/scrollRightRTL.js +1 -1
- package/src/sap/ui/dom/jquery/selectText.js +1 -1
- package/src/sap/ui/dom/jquery/zIndex.js +1 -1
- package/src/sap/ui/dom/units/Rem.js +1 -1
- package/src/sap/ui/events/ControlEvents.js +1 -1
- package/src/sap/ui/events/F6Navigation.js +1 -1
- package/src/sap/ui/events/KeyCodes.js +1 -1
- package/src/sap/ui/events/PasteEventFix.js +1 -1
- package/src/sap/ui/events/PseudoEvents.js +1 -1
- package/src/sap/ui/events/TouchToMouseMapping.js +1 -1
- package/src/sap/ui/events/checkMouseEnterOrLeave.js +1 -1
- package/src/sap/ui/events/isMouseEventDelayed.js +1 -1
- package/src/sap/ui/events/isSpecialKey.js +1 -1
- package/src/sap/ui/events/jquery/EventExtension.js +1 -1
- package/src/sap/ui/events/jquery/EventSimulation.js +4 -14
- package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
- package/src/sap/ui/model/Binding.js +1 -1
- package/src/sap/ui/model/BindingMode.js +1 -1
- package/src/sap/ui/model/ChangeReason.js +2 -2
- package/src/sap/ui/model/ClientContextBinding.js +1 -1
- package/src/sap/ui/model/ClientListBinding.js +8 -1
- package/src/sap/ui/model/ClientModel.js +7 -6
- package/src/sap/ui/model/ClientPropertyBinding.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +1 -1
- package/src/sap/ui/model/ClientTreeBindingAdapter.js +2 -2
- package/src/sap/ui/model/CompositeBinding.js +1 -1
- package/src/sap/ui/model/CompositeDataState.js +27 -5
- package/src/sap/ui/model/CompositeType.js +2 -2
- package/src/sap/ui/model/Context.js +1 -1
- package/src/sap/ui/model/ContextBinding.js +1 -1
- package/src/sap/ui/model/DataState.js +28 -7
- package/src/sap/ui/model/Filter.js +1 -1
- package/src/sap/ui/model/FilterOperator.js +1 -1
- package/src/sap/ui/model/FilterProcessor.js +1 -1
- package/src/sap/ui/model/FilterType.js +1 -1
- package/src/sap/ui/model/FormatException.js +1 -1
- package/src/sap/ui/model/ListBinding.js +25 -6
- package/src/sap/ui/model/MetaModel.js +3 -3
- package/src/sap/ui/model/Model.js +7 -12
- package/src/sap/ui/model/ParseException.js +1 -1
- package/src/sap/ui/model/PropertyBinding.js +1 -1
- package/src/sap/ui/model/SelectionModel.js +2 -2
- package/src/sap/ui/model/SimpleType.js +2 -2
- package/src/sap/ui/model/Sorter.js +1 -1
- package/src/sap/ui/model/SorterProcessor.js +1 -1
- package/src/sap/ui/model/StaticBinding.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
- package/src/sap/ui/model/TreeBinding.js +1 -1
- package/src/sap/ui/model/TreeBindingAdapter.js +1 -3
- package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +1 -1
- package/src/sap/ui/model/TreeBindingUtils.js +3 -1
- package/src/sap/ui/model/Type.js +2 -2
- package/src/sap/ui/model/ValidateException.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +52 -35
- package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +17 -19
- package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
- package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
- package/src/sap/ui/model/analytics/ODataModelAdapter.js +3 -16
- package/src/sap/ui/model/analytics/odata4analytics.js +1 -1
- package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
- package/src/sap/ui/model/json/JSONListBinding.js +1 -1
- package/src/sap/ui/model/json/JSONModel.js +8 -8
- package/src/sap/ui/model/json/JSONPropertyBinding.js +2 -2
- package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
- package/src/sap/ui/model/message/MessageListBinding.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +4 -4
- package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
- package/src/sap/ui/model/odata/AnnotationHelper.js +3 -3
- package/src/sap/ui/model/odata/AnnotationParser.js +5 -3
- package/src/sap/ui/model/odata/CountMode.js +1 -1
- package/src/sap/ui/model/odata/Filter.js +1 -1
- package/src/sap/ui/model/odata/MessageScope.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
- package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +62 -39
- package/src/sap/ui/model/odata/ODataMessageParser.js +3 -3
- package/src/sap/ui/model/odata/ODataMetaModel.js +4 -4
- package/src/sap/ui/model/odata/ODataMetadata.js +137 -86
- package/src/sap/ui/model/odata/ODataModel.js +443 -216
- package/src/sap/ui/model/odata/ODataPropertyBinding.js +8 -6
- package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +28 -18
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +441 -261
- package/src/sap/ui/model/odata/ODataUtils.js +25 -10
- package/src/sap/ui/model/odata/OperationMode.js +1 -1
- package/src/sap/ui/model/odata/UpdateMethod.js +1 -1
- package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +4 -3
- package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +12 -10
- package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +8 -6
- package/src/sap/ui/model/odata/type/Boolean.js +2 -2
- package/src/sap/ui/model/odata/type/Byte.js +2 -2
- package/src/sap/ui/model/odata/type/Currency.js +2 -2
- package/src/sap/ui/model/odata/type/Date.js +2 -2
- package/src/sap/ui/model/odata/type/DateTime.js +2 -2
- package/src/sap/ui/model/odata/type/DateTimeBase.js +2 -2
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +2 -2
- package/src/sap/ui/model/odata/type/Decimal.js +6 -2
- package/src/sap/ui/model/odata/type/Double.js +2 -2
- package/src/sap/ui/model/odata/type/Guid.js +2 -2
- package/src/sap/ui/model/odata/type/Int.js +2 -2
- package/src/sap/ui/model/odata/type/Int16.js +2 -2
- package/src/sap/ui/model/odata/type/Int32.js +2 -2
- package/src/sap/ui/model/odata/type/Int64.js +2 -2
- package/src/sap/ui/model/odata/type/ODataType.js +2 -2
- package/src/sap/ui/model/odata/type/Raw.js +2 -2
- package/src/sap/ui/model/odata/type/SByte.js +2 -2
- package/src/sap/ui/model/odata/type/Single.js +2 -2
- package/src/sap/ui/model/odata/type/Stream.js +2 -2
- package/src/sap/ui/model/odata/type/String.js +2 -2
- package/src/sap/ui/model/odata/type/Time.js +2 -2
- package/src/sap/ui/model/odata/type/TimeOfDay.js +2 -2
- package/src/sap/ui/model/odata/type/Unit.js +2 -2
- package/src/sap/ui/model/odata/type/UnitMixin.js +2 -3
- package/src/sap/ui/model/odata/v2/BatchMode.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +99 -15
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +389 -149
- package/src/sap/ui/model/odata/v2/ODataModel.js +233 -134
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +163 -90
- package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +118 -8
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +6 -6
- package/src/sap/ui/model/odata/v4/Context.js +164 -36
- package/src/sap/ui/model/odata/v4/ODataBinding.js +91 -41
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +184 -61
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +398 -129
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +44 -41
- package/src/sap/ui/model/odata/v4/ODataModel.js +28 -12
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +70 -80
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +26 -23
- package/src/sap/ui/model/odata/v4/ODataUtils.js +6 -6
- package/src/sap/ui/model/odata/v4/SubmitMode.js +1 -2
- package/src/sap/ui/model/odata/v4/ValueListType.js +1 -2
- package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +19 -20
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +4 -6
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +6 -5
- package/src/sap/ui/model/odata/v4/lib/_Batch.js +22 -21
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +247 -103
- package/src/sap/ui/model/odata/v4/lib/_ConcatHelper.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +2 -2
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +50 -20
- package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +61 -60
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +2 -2
- package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Parser.js +53 -44
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +42 -24
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +148 -148
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +14 -13
- package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +67 -68
- package/src/sap/ui/model/resource/ResourceModel.js +2 -2
- package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +2 -2
- package/src/sap/ui/model/type/Currency.js +2 -2
- package/src/sap/ui/model/type/Date.js +2 -2
- package/src/sap/ui/model/type/DateInterval.js +2 -2
- package/src/sap/ui/model/type/DateTime.js +2 -2
- package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
- package/src/sap/ui/model/type/FileSize.js +2 -2
- package/src/sap/ui/model/type/Float.js +2 -2
- package/src/sap/ui/model/type/Integer.js +2 -2
- package/src/sap/ui/model/type/String.js +2 -2
- package/src/sap/ui/model/type/Time.js +2 -2
- package/src/sap/ui/model/type/TimeInterval.js +2 -2
- package/src/sap/ui/model/type/Unit.js +2 -2
- package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +6 -6
- package/src/sap/ui/model/xml/XMLPropertyBinding.js +2 -2
- package/src/sap/ui/model/xml/XMLTreeBinding.js +1 -1
- package/src/sap/ui/performance/BeaconRequest.js +1 -1
- package/src/sap/ui/performance/Measurement.js +1 -1
- package/src/sap/ui/performance/XHRInterceptor.js +1 -1
- package/src/sap/ui/performance/trace/FESR.js +1 -1
- package/src/sap/ui/performance/trace/Interaction.js +1 -1
- package/src/sap/ui/performance/trace/Passport.js +1 -1
- package/src/sap/ui/performance/trace/initTraces.js +1 -1
- package/src/sap/ui/qunit/QUnitUtils.js +1 -1
- package/src/sap/ui/qunit/qunit-2-css.js +1 -1
- package/src/sap/ui/qunit/qunit-coverage.js +1 -1
- package/src/sap/ui/qunit/qunit-css.js +1 -1
- package/src/sap/ui/qunit/qunit-junit.js +1 -1
- package/src/sap/ui/qunit/qunit-redirect.js +1 -1
- package/src/sap/ui/qunit/sinon-qunit-bridge.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +2 -2
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +2 -2
- package/src/sap/ui/qunit/utils/createAndAppendDiv.js +1 -1
- package/src/sap/ui/qunit/utils/waitForThemeApplied.js +1 -1
- package/src/sap/ui/security/FrameOptions.js +1 -1
- package/src/sap/ui/test/BlanketReporter.js +2 -2
- package/src/sap/ui/test/BranchTracking.js +1 -1
- package/src/sap/ui/test/Opa.js +1 -1
- package/src/sap/ui/test/Opa5.js +1 -1
- package/src/sap/ui/test/OpaBuilder.js +1 -1
- package/src/sap/ui/test/OpaExtension.js +1 -1
- package/src/sap/ui/test/OpaPlugin.js +1 -1
- package/src/sap/ui/test/PageObjectFactory.js +1 -1
- package/src/sap/ui/test/RecordReplay.js +1 -1
- package/src/sap/ui/test/RecorderHotkeyListener.js +1 -1
- package/src/sap/ui/test/TestUtils.js +3 -3
- package/src/sap/ui/test/_BrowserLogCollector.js +1 -1
- package/src/sap/ui/test/_ControlFinder.js +1 -1
- package/src/sap/ui/test/_LogCollector.js +2 -2
- package/src/sap/ui/test/_OpaLogger.js +1 -1
- package/src/sap/ui/test/_OpaUriParameterParser.js +1 -1
- package/src/sap/ui/test/_ParameterValidator.js +1 -1
- package/src/sap/ui/test/_UsageReport.js +1 -1
- package/src/sap/ui/test/_ValidationParameters.js +1 -1
- package/src/sap/ui/test/actions/Action.js +12 -3
- package/src/sap/ui/test/actions/Drag.js +1 -1
- package/src/sap/ui/test/actions/Drop.js +1 -1
- package/src/sap/ui/test/actions/EnterText.js +1 -1
- package/src/sap/ui/test/actions/Press.js +80 -4
- package/src/sap/ui/test/actions/Scroll.js +1 -1
- package/src/sap/ui/test/autowaiter/WaiterBase.js +1 -1
- package/src/sap/ui/test/autowaiter/_UIUpdatesWaiter.js +1 -1
- package/src/sap/ui/test/autowaiter/_XHRWaiter.js +2 -2
- package/src/sap/ui/test/autowaiter/_autoWaiter.js +1 -1
- package/src/sap/ui/test/autowaiter/_autoWaiterAsync.js +1 -1
- package/src/sap/ui/test/autowaiter/_moduleWaiter.js +1 -1
- package/src/sap/ui/test/autowaiter/_navigationContainerWaiter.js +1 -1
- package/src/sap/ui/test/autowaiter/_promiseWaiter.js +1 -1
- package/src/sap/ui/test/autowaiter/_resourceWaiter.js +1 -1
- package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +1 -1
- package/src/sap/ui/test/autowaiter/_utils.js +1 -1
- package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +111 -0
- package/src/sap/ui/test/gherkin/GherkinTestGenerator.js +1 -1
- package/src/sap/ui/test/gherkin/StepDefinitions.js +1 -1
- package/src/sap/ui/test/gherkin/dataTableUtils.js +1 -1
- package/src/sap/ui/test/gherkin/opa5TestHarness.js +1 -1
- package/src/sap/ui/test/gherkin/qUnitTestHarness.js +1 -1
- package/src/sap/ui/test/gherkin/simpleGherkinParser.js +1 -1
- package/src/sap/ui/test/launchers/componentLauncher.js +1 -1
- package/src/sap/ui/test/launchers/iFrameLauncher.js +1 -1
- package/src/sap/ui/test/matchers/AggregationContainsPropertyEqual.js +1 -1
- package/src/sap/ui/test/matchers/AggregationEmpty.js +1 -1
- package/src/sap/ui/test/matchers/AggregationFilled.js +1 -1
- package/src/sap/ui/test/matchers/AggregationLengthEquals.js +1 -1
- package/src/sap/ui/test/matchers/Ancestor.js +1 -1
- package/src/sap/ui/test/matchers/BindingPath.js +1 -1
- package/src/sap/ui/test/matchers/Descendant.js +1 -1
- package/src/sap/ui/test/matchers/I18NText.js +1 -1
- package/src/sap/ui/test/matchers/Interactable.js +1 -1
- package/src/sap/ui/test/matchers/LabelFor.js +1 -1
- package/src/sap/ui/test/matchers/Matcher.js +1 -1
- package/src/sap/ui/test/matchers/MatcherFactory.js +1 -1
- package/src/sap/ui/test/matchers/Properties.js +1 -1
- package/src/sap/ui/test/matchers/PropertyStrictEquals.js +1 -1
- package/src/sap/ui/test/matchers/Sibling.js +1 -1
- package/src/sap/ui/test/matchers/Visible.js +1 -1
- package/src/sap/ui/test/matchers/_Busy.js +1 -1
- package/src/sap/ui/test/matchers/_Editable.js +1 -1
- package/src/sap/ui/test/matchers/_Enabled.js +1 -1
- package/src/sap/ui/test/matchers/_Visitor.js +1 -1
- package/src/sap/ui/test/matchers/matchers.js +1 -1
- package/src/sap/ui/test/opaQunit.js +1 -1
- package/src/sap/ui/test/pipelines/ActionPipeline.js +1 -1
- package/src/sap/ui/test/pipelines/MatcherPipeline.js +1 -1
- package/src/sap/ui/test/pipelines/PipelineFactory.js +1 -1
- package/src/sap/ui/test/qunitPause.js +1 -1
- package/src/sap/ui/test/selectors/_BindingPath.js +1 -1
- package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +1 -1
- package/src/sap/ui/test/selectors/_ControlSelectorValidator.js +1 -1
- package/src/sap/ui/test/selectors/_ControlType.js +1 -1
- package/src/sap/ui/test/selectors/_DropdownItem.js +1 -1
- package/src/sap/ui/test/selectors/_GlobalID.js +1 -1
- package/src/sap/ui/test/selectors/_LabelFor.js +1 -1
- package/src/sap/ui/test/selectors/_Properties.js +1 -1
- package/src/sap/ui/test/selectors/_Selector.js +1 -1
- package/src/sap/ui/test/selectors/_TableRowItem.js +1 -1
- package/src/sap/ui/test/selectors/_ViewID.js +1 -1
- package/src/sap/ui/test/selectors/_selectors.js +1 -1
- package/src/sap/ui/test/starter/_configureLoader.js +1 -1
- package/src/sap/ui/test/starter/_setupAndStart.js +1 -1
- package/src/sap/ui/test/starter/_utils.js +1 -1
- package/src/sap/ui/test/starter/createSuite.js +4 -4
- package/src/sap/ui/test/starter/runTest.js +1 -1
- package/src/sap/ui/thirdparty/RequestRecorder.js +1 -1
- package/src/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
- package/src/sap/ui/thirdparty/jquery-mobile-custom.js +3 -6
- package/src/sap/ui/util/ActivityDetection.js +1 -1
- package/src/sap/ui/util/Mobile.js +29 -40
- package/src/sap/ui/util/Storage.js +2 -2
- package/src/sap/ui/util/XMLHelper.js +54 -31
- package/src/sap/ui/util/_FeatureDetection.js +1 -1
- package/src/sap/ui/util/defaultLinkTypes.js +1 -1
- package/src/sap/ui/util/isCrossOriginURL.js +1 -1
- package/src/sap/ui/util/openWindow.js +1 -1
- package/src/sap-ui-boot.js +1 -1
- package/src/sap-ui-core-nojQuery.js +1 -1
- package/src/sap-ui-core.js +1 -1
- package/src/sap-ui-debug.js +1 -1
- package/src/ui5loader-autoconfig.js +1 -1
- package/src/ui5loader.js +10 -10
- package/ui5.yaml +244 -1
- package/src/sap/ui/core/CustomizingConfiguration.js +0 -47
- package/src/sap/ui/thirdparty/baseuri.js +0 -1
- package/src/sap/ui/thirdparty/es6-object-assign.js +0 -1
- package/src/sap/ui/thirdparty/es6-promise.js +0 -1
- package/src/sap/ui/thirdparty/es6-shim-nopromise.js +0 -1
- package/src/sap/ui/thirdparty/es6-string-methods.js +0 -1
- package/src/sap/ui/thirdparty/flexie.js +0 -1
- package/src/sap/ui/thirdparty/unorm.js +0 -1
- package/src/sap/ui/thirdparty/unormdata.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright 2009-
|
|
3
|
+
* (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -21,6 +21,7 @@ sap.ui.define([
|
|
|
21
21
|
// EMPLOYEE($uid=id-1550828854217-16) -> aMatches[0] === "($uid=id-1550828854217-16)"
|
|
22
22
|
// @see sap.base.util.uid
|
|
23
23
|
rEndsWithTransientPredicate = /\(\$uid=[-\w]+\)$/,
|
|
24
|
+
rInactive = /^\$inactive\./,
|
|
24
25
|
sMessagesAnnotation = "@com.sap.vocabularies.Common.v1.Messages",
|
|
25
26
|
rNumber = /^-?\d+$/,
|
|
26
27
|
// Matches two cases: segment with predicate or simply predicate:
|
|
@@ -130,27 +131,35 @@ sap.ui.define([
|
|
|
130
131
|
/**
|
|
131
132
|
* Deletes an entity on the server and in the cached data.
|
|
132
133
|
*
|
|
133
|
-
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
134
|
-
* A lock for the group ID
|
|
134
|
+
* @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
|
|
135
|
+
* A lock for the group ID to be used for the DELETE request; w/o a lock, no DELETE is sent.
|
|
136
|
+
* For a transient entity, the lock is ignored (use NULL)!
|
|
135
137
|
* @param {string} sEditUrl
|
|
136
|
-
* The entity's edit URL
|
|
138
|
+
* The entity's edit URL to be used for the DELETE request; w/o a lock, this is mostly
|
|
139
|
+
* ignored.
|
|
137
140
|
* @param {string} sPath
|
|
138
141
|
* The entity's path within the cache (as used by change listeners)
|
|
139
142
|
* @param {object} [oETagEntity]
|
|
140
143
|
* An entity with the ETag of the binding for which the deletion was requested. This is
|
|
141
144
|
* provided if the deletion is delegated from a context binding with empty path to a list
|
|
142
|
-
* binding.
|
|
145
|
+
* binding. W/o a lock, this is ignored.
|
|
146
|
+
* @param {boolean} [bDoNotRequestCount]
|
|
147
|
+
* Whether not to request the new count from the server; useful in case of
|
|
148
|
+
* {@link sap.ui.model.odata.v4.Context#replaceWith} where it is known that the count remains
|
|
149
|
+
* unchanged; w/o a lock this should be true
|
|
143
150
|
* @param {function} fnCallback
|
|
144
151
|
* A function which is called after a transient entity has been deleted from the cache or
|
|
145
152
|
* after the entity has been deleted from the server and from the cache; the index of the
|
|
146
|
-
* entity and the entity list are passed as parameter
|
|
153
|
+
* entity and the entity list are both passed as parameter, or none of them
|
|
147
154
|
* @returns {sap.ui.base.SyncPromise}
|
|
148
|
-
* A promise
|
|
155
|
+
* A promise which is resolved without a result in case of success, or rejected with an
|
|
156
|
+
* instance of <code>Error</code> in case of failure
|
|
149
157
|
* @throws {Error} If the cache is shared
|
|
150
158
|
*
|
|
151
159
|
* @public
|
|
152
160
|
*/
|
|
153
|
-
_Cache.prototype._delete = function (oGroupLock, sEditUrl, sPath, oETagEntity,
|
|
161
|
+
_Cache.prototype._delete = function (oGroupLock, sEditUrl, sPath, oETagEntity,
|
|
162
|
+
bDoNotRequestCount, fnCallback) {
|
|
154
163
|
var aSegments = sPath.split("/"),
|
|
155
164
|
vDeleteProperty = aSegments.pop(),
|
|
156
165
|
iIndex = rNumber.test(vDeleteProperty) ? Number(vDeleteProperty) : undefined,
|
|
@@ -175,7 +184,6 @@ sap.ui.define([
|
|
|
175
184
|
throw new Error("No 'delete' allowed while waiting for server response");
|
|
176
185
|
}
|
|
177
186
|
if (sTransientGroup) {
|
|
178
|
-
oGroupLock.unlock();
|
|
179
187
|
that.oRequestor.removePost(sTransientGroup, oEntity);
|
|
180
188
|
return undefined;
|
|
181
189
|
}
|
|
@@ -186,37 +194,38 @@ sap.ui.define([
|
|
|
186
194
|
mHeaders = {"If-Match" : oETagEntity || oEntity};
|
|
187
195
|
sEditUrl += that.oRequestor.buildQueryString(that.sMetaPath, that.mQueryOptions, true);
|
|
188
196
|
return SyncPromise.all([
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
if (Array.isArray(vCacheData)) {
|
|
200
|
-
fnCallback(
|
|
201
|
-
that.removeElement(vCacheData, iIndex, sKeyPredicate, sParentPath),
|
|
202
|
-
vCacheData);
|
|
203
|
-
} else {
|
|
204
|
-
if (vDeleteProperty) {
|
|
205
|
-
// set to null and notify listeners
|
|
206
|
-
_Helper.updateExisting(that.mChangeListeners, sParentPath,
|
|
207
|
-
vCacheData, _Cache.makeUpdateData([vDeleteProperty], null));
|
|
208
|
-
} else { // deleting at root level
|
|
209
|
-
oEntity["$ui5.deleted"] = true;
|
|
210
|
-
}
|
|
211
|
-
fnCallback();
|
|
212
|
-
}
|
|
213
|
-
that.oRequestor.getModelInterface().reportStateMessages(that.sResourcePath,
|
|
214
|
-
[], [sEntityPath]);
|
|
215
|
-
}),
|
|
197
|
+
oGroupLock
|
|
198
|
+
&& that.oRequestor.request("DELETE", sEditUrl, oGroupLock.getUnlockedCopy(),
|
|
199
|
+
mHeaders, undefined, undefined, undefined, undefined,
|
|
200
|
+
_Helper.buildPath(that.getOriginalResourcePath(oEntity), sEntityPath))
|
|
201
|
+
.catch(function (oError) {
|
|
202
|
+
if (oError.status !== 404) {
|
|
203
|
+
delete oEntity["$ui5.deleting"];
|
|
204
|
+
throw oError;
|
|
205
|
+
} // else: map 404 to 200
|
|
206
|
+
}),
|
|
216
207
|
iIndex === undefined // single element or kept-alive not in list
|
|
208
|
+
&& !bDoNotRequestCount
|
|
217
209
|
&& that.requestCount(oGroupLock),
|
|
218
|
-
oGroupLock.unlock() // unlock when all requests have been queued
|
|
219
|
-
])
|
|
210
|
+
oGroupLock && oGroupLock.unlock() // unlock when all requests have been queued
|
|
211
|
+
]).then(function () {
|
|
212
|
+
if (Array.isArray(vCacheData)) {
|
|
213
|
+
fnCallback(
|
|
214
|
+
that.removeElement(vCacheData, iIndex, sKeyPredicate, sParentPath),
|
|
215
|
+
vCacheData);
|
|
216
|
+
} else {
|
|
217
|
+
if (vDeleteProperty) {
|
|
218
|
+
// set to null and notify listeners
|
|
219
|
+
_Helper.updateExisting(that.mChangeListeners, sParentPath,
|
|
220
|
+
vCacheData, _Cache.makeUpdateData([vDeleteProperty], null));
|
|
221
|
+
} else { // deleting at root level
|
|
222
|
+
oEntity["$ui5.deleted"] = true;
|
|
223
|
+
}
|
|
224
|
+
fnCallback();
|
|
225
|
+
}
|
|
226
|
+
that.oRequestor.getModelInterface().reportStateMessages(that.sResourcePath,
|
|
227
|
+
{}, [sEntityPath]);
|
|
228
|
+
});
|
|
220
229
|
}).finally(function () {
|
|
221
230
|
that.removePendingRequest();
|
|
222
231
|
});
|
|
@@ -251,7 +260,7 @@ sap.ui.define([
|
|
|
251
260
|
* A map from meta path to the entity type (as delivered by {@link #fetchTypes})
|
|
252
261
|
* @param {string} sMetaPath
|
|
253
262
|
* The meta path for the entity
|
|
254
|
-
* @returns {string}
|
|
263
|
+
* @returns {string|undefined}
|
|
255
264
|
* The key predicate or <code>undefined</code>, if key predicate cannot be determined
|
|
256
265
|
* @private
|
|
257
266
|
*/
|
|
@@ -313,7 +322,8 @@ sap.ui.define([
|
|
|
313
322
|
*/
|
|
314
323
|
_Cache.prototype.create = function (oGroupLock, oPostPathPromise, sPath, sTransientPredicate,
|
|
315
324
|
oEntityData, fnErrorCallback, fnSubmitCallback) {
|
|
316
|
-
var aCollection,
|
|
325
|
+
var aCollection = this.getValue(sPath),
|
|
326
|
+
sGroupId = oGroupLock.getGroupId(),
|
|
317
327
|
bKeepTransientPath = oEntityData && oEntityData["@$ui5.keepTransientPath"],
|
|
318
328
|
oPostBody,
|
|
319
329
|
that = this;
|
|
@@ -323,7 +333,10 @@ sap.ui.define([
|
|
|
323
333
|
_Helper.removeByPath(that.mPostRequests, sPath, oEntityData);
|
|
324
334
|
aCollection.splice(aCollection.indexOf(oEntityData), 1);
|
|
325
335
|
aCollection.$created -= 1;
|
|
326
|
-
|
|
336
|
+
if (!oEntityData["@$ui5.context.isInactive"]) {
|
|
337
|
+
that.iActiveElements -= 1;
|
|
338
|
+
addToCount(that.mChangeListeners, sPath, aCollection, -1);
|
|
339
|
+
}
|
|
327
340
|
delete aCollection.$byPredicate[sTransientPredicate];
|
|
328
341
|
if (!sPath) {
|
|
329
342
|
// Note: sPath is empty only in a CollectionCache, so we may call adjustReadRequests
|
|
@@ -340,10 +353,8 @@ sap.ui.define([
|
|
|
340
353
|
}
|
|
341
354
|
|
|
342
355
|
function request(sPostPath, oPostGroupLock) {
|
|
343
|
-
var sPostGroupId = oPostGroupLock.getGroupId();
|
|
344
|
-
|
|
345
356
|
// mark as transient (again)
|
|
346
|
-
_Helper.setPrivateAnnotation(oEntityData, "transient",
|
|
357
|
+
_Helper.setPrivateAnnotation(oEntityData, "transient", sGroupId);
|
|
347
358
|
_Helper.addByPath(that.mPostRequests, sPath, oEntityData);
|
|
348
359
|
return SyncPromise.all([
|
|
349
360
|
that.oRequestor.request("POST", sPostPath, oPostGroupLock, null, oPostBody,
|
|
@@ -395,13 +406,22 @@ sap.ui.define([
|
|
|
395
406
|
if (that.fetchTypes().isRejected()) {
|
|
396
407
|
throw oError;
|
|
397
408
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
409
|
+
sGroupId = sGroupId.replace(rInactive, "");
|
|
410
|
+
sGroupId = that.oRequestor.getGroupSubmitMode(sGroupId) === "API"
|
|
411
|
+
? sGroupId
|
|
412
|
+
: "$parked." + sGroupId;
|
|
413
|
+
|
|
414
|
+
return request(sPostPath,
|
|
415
|
+
that.oRequestor.lockGroup(sGroupId, that, true, true));
|
|
401
416
|
});
|
|
402
417
|
}
|
|
403
418
|
|
|
404
419
|
this.checkSharedRequest();
|
|
420
|
+
if (!Array.isArray(aCollection)) {
|
|
421
|
+
throw new Error("Create is only supported for collections; '" + sPath
|
|
422
|
+
+ "' does not reference a collection");
|
|
423
|
+
}
|
|
424
|
+
|
|
405
425
|
// clone data to avoid modifications outside the cache
|
|
406
426
|
// remove any property starting with "@$ui5."
|
|
407
427
|
oEntityData = _Helper.publicClone(oEntityData, true) || {};
|
|
@@ -410,15 +430,15 @@ sap.ui.define([
|
|
|
410
430
|
_Helper.setPrivateAnnotation(oEntityData, "postBody", oPostBody);
|
|
411
431
|
_Helper.setPrivateAnnotation(oEntityData, "transientPredicate", sTransientPredicate);
|
|
412
432
|
oEntityData["@$ui5.context.isTransient"] = true;
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
433
|
+
if (sGroupId.startsWith("$inactive.")) {
|
|
434
|
+
oEntityData["@$ui5.context.isInactive"] = true;
|
|
435
|
+
} else {
|
|
436
|
+
this.iActiveElements += 1;
|
|
437
|
+
addToCount(this.mChangeListeners, sPath, aCollection, 1);
|
|
418
438
|
}
|
|
439
|
+
|
|
419
440
|
aCollection.unshift(oEntityData);
|
|
420
441
|
aCollection.$created += 1;
|
|
421
|
-
addToCount(this.mChangeListeners, sPath, aCollection, 1);
|
|
422
442
|
// if the nested collection is empty $byPredicate is not available, create it on demand
|
|
423
443
|
aCollection.$byPredicate = aCollection.$byPredicate || {};
|
|
424
444
|
aCollection.$byPredicate[sTransientPredicate] = oEntityData;
|
|
@@ -626,7 +646,7 @@ sap.ui.define([
|
|
|
626
646
|
* @param {string} sMissingPropertyPath
|
|
627
647
|
* The path of the missing property relative to oResource; this property is returned so that
|
|
628
648
|
* drillDown can proceed
|
|
629
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
649
|
+
* @returns {sap.ui.base.SyncPromise|undefined}
|
|
630
650
|
* A promise resolving with the missing property value or <code>undefined</code> if the
|
|
631
651
|
* requested property is not an expected late property; it rejects with an error if the GET
|
|
632
652
|
* request failed, or if the key predicate or the ETag has changed
|
|
@@ -803,7 +823,8 @@ sap.ui.define([
|
|
|
803
823
|
* @private
|
|
804
824
|
*/
|
|
805
825
|
_Cache.prototype.fetchTypes = function () {
|
|
806
|
-
var aPromises, mTypeForMetaPath,
|
|
826
|
+
var aPromises, mTypeForMetaPath,
|
|
827
|
+
that = this;
|
|
807
828
|
|
|
808
829
|
/*
|
|
809
830
|
* Recursively calls fetchType for all (sub)paths in $expand.
|
|
@@ -939,6 +960,7 @@ sap.ui.define([
|
|
|
939
960
|
*
|
|
940
961
|
* @public
|
|
941
962
|
*/
|
|
963
|
+
// eslint-disable-next-line valid-jsdoc -- in the subclasses the function does return a value
|
|
942
964
|
_Cache.prototype.getValue = function (_sPath) {
|
|
943
965
|
throw new Error("Unsupported operation");
|
|
944
966
|
};
|
|
@@ -989,16 +1011,31 @@ sap.ui.define([
|
|
|
989
1011
|
*
|
|
990
1012
|
* @param {string} sPath
|
|
991
1013
|
* The relative path of a binding; must not end with '/'
|
|
1014
|
+
* @param {boolean} [bIgnoreKeptAlive]
|
|
1015
|
+
* Whether to ignore changes which will not be lost by APIs like sort or filter because they
|
|
1016
|
+
* relate to a context which is kept alive
|
|
1017
|
+
* @param {boolean} [bIgnoreTransient]
|
|
1018
|
+
* Whether to ignore transient elements which will not be lost by APIs like sort or filter
|
|
992
1019
|
* @returns {boolean}
|
|
993
1020
|
* <code>true</code> if there are pending changes
|
|
994
1021
|
*
|
|
995
1022
|
* @public
|
|
996
1023
|
*/
|
|
997
|
-
_Cache.prototype.hasPendingChangesForPath = function (sPath
|
|
1024
|
+
_Cache.prototype.hasPendingChangesForPath = function (sPath, bIgnoreKeptAlive,
|
|
1025
|
+
bIgnoreTransient) {
|
|
1026
|
+
var that = this;
|
|
1027
|
+
|
|
998
1028
|
return Object.keys(this.mPatchRequests).some(function (sRequestPath) {
|
|
999
|
-
return isSubPath(sRequestPath, sPath)
|
|
1000
|
-
|
|
1001
|
-
|
|
1029
|
+
return isSubPath(sRequestPath, sPath)
|
|
1030
|
+
&& !(bIgnoreKeptAlive
|
|
1031
|
+
&& that.mPatchRequests[sRequestPath].every(function (oPatchPromise) {
|
|
1032
|
+
return oPatchPromise.$isKeepAlive();
|
|
1033
|
+
}));
|
|
1034
|
+
}) || !bIgnoreTransient && Object.keys(this.mPostRequests).some(function (sRequestPath) {
|
|
1035
|
+
return isSubPath(sRequestPath, sPath)
|
|
1036
|
+
&& that.mPostRequests[sRequestPath].some(function (oEntityData) {
|
|
1037
|
+
return !oEntityData["@$ui5.context.isInactive"];
|
|
1038
|
+
});
|
|
1002
1039
|
});
|
|
1003
1040
|
};
|
|
1004
1041
|
|
|
@@ -1161,9 +1198,9 @@ sap.ui.define([
|
|
|
1161
1198
|
oEntity = aElements.$byPredicate[sPredicate];
|
|
1162
1199
|
}
|
|
1163
1200
|
sKeyFilter = _Helper.getKeyFilter(oEntity, that.sMetaPath, mTypeForMetaPath);
|
|
1164
|
-
sInCollectionFilter
|
|
1165
|
-
(mQueryOptions.$filter ? "(" + mQueryOptions.$filter + ") and " : "")
|
|
1166
|
-
|
|
1201
|
+
sInCollectionFilter
|
|
1202
|
+
= (mQueryOptions.$filter ? "(" + mQueryOptions.$filter + ") and " : "")
|
|
1203
|
+
+ sKeyFilter;
|
|
1167
1204
|
delete mQueryOptions.$count;
|
|
1168
1205
|
delete mQueryOptions.$orderby;
|
|
1169
1206
|
|
|
@@ -1220,7 +1257,7 @@ sap.ui.define([
|
|
|
1220
1257
|
} else if (aReadResult.length === 0) {
|
|
1221
1258
|
that.removeElement(aElements, iIndex, sPredicate, sPath);
|
|
1222
1259
|
that.oRequestor.getModelInterface()
|
|
1223
|
-
.reportStateMessages(that.sResourcePath,
|
|
1260
|
+
.reportStateMessages(that.sResourcePath, {}, [sPath + sPredicate]);
|
|
1224
1261
|
fnOnRemove(false);
|
|
1225
1262
|
} else if (bRemoveFromCollection) {
|
|
1226
1263
|
that.removeElement(aElements, iIndex, sPredicate, sPath);
|
|
@@ -1286,6 +1323,9 @@ sap.ui.define([
|
|
|
1286
1323
|
sTransientPredicate = _Helper.getPrivateAnnotation(oElement, "transientPredicate");
|
|
1287
1324
|
if (sTransientPredicate) {
|
|
1288
1325
|
aElements.$created -= 1;
|
|
1326
|
+
if (!sPath) {
|
|
1327
|
+
this.iActiveElements -= 1;
|
|
1328
|
+
}
|
|
1289
1329
|
delete aElements.$byPredicate[sTransientPredicate];
|
|
1290
1330
|
} else if (!sPath) {
|
|
1291
1331
|
// Note: sPath is empty only in a CollectionCache, so we may use iLmit and
|
|
@@ -1352,7 +1392,7 @@ sap.ui.define([
|
|
|
1352
1392
|
mTypeForMetaPath, sPath) {
|
|
1353
1393
|
var oOldElement, sTransientPredicate;
|
|
1354
1394
|
|
|
1355
|
-
if (iIndex === undefined) {// kept-alive element not in the list
|
|
1395
|
+
if (iIndex === undefined) { // kept-alive element not in the list
|
|
1356
1396
|
aElements.$byPredicate[sPredicate] = oElement;
|
|
1357
1397
|
} else {
|
|
1358
1398
|
// the element might have moved due to parallel insert/delete
|
|
@@ -1377,13 +1417,15 @@ sap.ui.define([
|
|
|
1377
1417
|
*
|
|
1378
1418
|
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
1379
1419
|
* A lock for the group ID
|
|
1380
|
-
* @returns {Promise}
|
|
1381
|
-
* A promise that resolves if the count has been determined or undefined if no
|
|
1420
|
+
* @returns {Promise|undefined}
|
|
1421
|
+
* A promise that resolves if the count has been determined or <code>undefined</code> if no
|
|
1422
|
+
* request needed
|
|
1382
1423
|
*
|
|
1383
1424
|
* @private
|
|
1384
1425
|
*/
|
|
1385
1426
|
_Cache.prototype.requestCount = function (oGroupLock) {
|
|
1386
|
-
var sExclusiveFilter, mQueryOptions, sReadUrl,
|
|
1427
|
+
var sExclusiveFilter, mQueryOptions, sReadUrl,
|
|
1428
|
+
that = this;
|
|
1387
1429
|
|
|
1388
1430
|
if (this.mQueryOptions && this.mQueryOptions.$count) {
|
|
1389
1431
|
// now we are definitely in a CollectionCache
|
|
@@ -1410,7 +1452,7 @@ sap.ui.define([
|
|
|
1410
1452
|
}
|
|
1411
1453
|
throw oError;
|
|
1412
1454
|
}).then(function (oResult) {
|
|
1413
|
-
var iCount = parseInt(oResult["@odata.count"]) + that.
|
|
1455
|
+
var iCount = parseInt(oResult["@odata.count"]) + that.iActiveElements;
|
|
1414
1456
|
|
|
1415
1457
|
setCount(that.mChangeListeners, "", that.aElements, iCount);
|
|
1416
1458
|
that.iLimit = iCount;
|
|
@@ -1451,9 +1493,11 @@ sap.ui.define([
|
|
|
1451
1493
|
aEntities = that.mPostRequests[sRequestPath];
|
|
1452
1494
|
for (i = aEntities.length - 1; i >= 0; i -= 1) {
|
|
1453
1495
|
sTransientGroup = _Helper.getPrivateAnnotation(aEntities[i], "transient");
|
|
1454
|
-
|
|
1496
|
+
if (!sTransientGroup.startsWith("$inactive.")) {
|
|
1497
|
+
// this also cleans up that.mPostRequests
|
|
1498
|
+
that.oRequestor.removePost(sTransientGroup, aEntities[i]);
|
|
1499
|
+
}
|
|
1455
1500
|
}
|
|
1456
|
-
delete that.mPostRequests[sRequestPath];
|
|
1457
1501
|
}
|
|
1458
1502
|
});
|
|
1459
1503
|
};
|
|
@@ -1620,6 +1664,8 @@ sap.ui.define([
|
|
|
1620
1664
|
* @param {function} fnPatchSent
|
|
1621
1665
|
* The function is called just before a back-end request is sent for the first time.
|
|
1622
1666
|
* If no back-end request is needed, the function is not called.
|
|
1667
|
+
* @param {function} fnIsKeepAlive
|
|
1668
|
+
* A function to tell whether the entity is kept-alive
|
|
1623
1669
|
* @returns {Promise}
|
|
1624
1670
|
* A promise for the PATCH request (resolves with <code>undefined</code>); rejected in case of
|
|
1625
1671
|
* cancellation or if no <code>fnErrorCallback</code> is given
|
|
@@ -1628,7 +1674,8 @@ sap.ui.define([
|
|
|
1628
1674
|
* @public
|
|
1629
1675
|
*/
|
|
1630
1676
|
_Cache.prototype.update = function (oGroupLock, sPropertyPath, vValue, fnErrorCallback,
|
|
1631
|
-
sEditUrl, sEntityPath, sUnitOrCurrencyPath, bPatchWithoutSideEffects, fnPatchSent
|
|
1677
|
+
sEditUrl, sEntityPath, sUnitOrCurrencyPath, bPatchWithoutSideEffects, fnPatchSent,
|
|
1678
|
+
fnIsKeepAlive) {
|
|
1632
1679
|
var oPromise,
|
|
1633
1680
|
aPropertyPath = sPropertyPath.split("/"),
|
|
1634
1681
|
aUnitOrCurrencyPath,
|
|
@@ -1691,6 +1738,7 @@ sap.ui.define([
|
|
|
1691
1738
|
mHeaders, oUpdateData, onSubmit, onCancel, /*sMetaPath*/undefined,
|
|
1692
1739
|
_Helper.buildPath(that.getOriginalResourcePath(oEntity), sEntityPath),
|
|
1693
1740
|
bAtFront);
|
|
1741
|
+
oPatchPromise.$isKeepAlive = fnIsKeepAlive;
|
|
1694
1742
|
_Helper.addByPath(that.mPatchRequests, sFullPath, oPatchPromise);
|
|
1695
1743
|
return SyncPromise.all([
|
|
1696
1744
|
oPatchPromise,
|
|
@@ -1761,9 +1809,10 @@ sap.ui.define([
|
|
|
1761
1809
|
if (sTransientGroup === true) {
|
|
1762
1810
|
throw new Error("No 'update' allowed while waiting for server response");
|
|
1763
1811
|
}
|
|
1764
|
-
if (sTransientGroup.startsWith("$parked.")
|
|
1812
|
+
if (sTransientGroup.startsWith("$parked.")
|
|
1813
|
+
|| sTransientGroup.startsWith("$inactive.")) {
|
|
1765
1814
|
sParkedGroup = sTransientGroup;
|
|
1766
|
-
sTransientGroup = sTransientGroup.slice(
|
|
1815
|
+
sTransientGroup = sTransientGroup.slice(sTransientGroup.indexOf(".") + 1);
|
|
1767
1816
|
}
|
|
1768
1817
|
if (sTransientGroup !== sGroupId) {
|
|
1769
1818
|
throw new Error("The entity will be created via group '" + sTransientGroup
|
|
@@ -1772,13 +1821,18 @@ sap.ui.define([
|
|
|
1772
1821
|
}
|
|
1773
1822
|
// remember the old value
|
|
1774
1823
|
vOldValue = _Helper.drillDown(oEntity, aPropertyPath);
|
|
1775
|
-
// write the changed value into the cache
|
|
1776
|
-
_Helper.updateAll(that.mChangeListeners, sEntityPath, oEntity, oUpdateData);
|
|
1777
1824
|
oPostBody = _Helper.getPrivateAnnotation(oEntity, "postBody");
|
|
1778
1825
|
if (oPostBody) {
|
|
1779
|
-
// change listeners are
|
|
1826
|
+
// change listeners are informed later
|
|
1780
1827
|
_Helper.updateAll({}, sEntityPath, oPostBody, oUpdateData);
|
|
1828
|
+
if (oEntity["@$ui5.context.isInactive"]) {
|
|
1829
|
+
oUpdateData["@$ui5.context.isInactive"] = false;
|
|
1830
|
+
that.iActiveElements += 1;
|
|
1831
|
+
addToCount(that.mChangeListeners, "", that.aElements, 1);
|
|
1832
|
+
}
|
|
1781
1833
|
}
|
|
1834
|
+
// write the changed value into the cache
|
|
1835
|
+
_Helper.updateAll(that.mChangeListeners, sEntityPath, oEntity, oUpdateData);
|
|
1782
1836
|
if (sUnitOrCurrencyPath) {
|
|
1783
1837
|
aUnitOrCurrencyPath = sUnitOrCurrencyPath.split("/");
|
|
1784
1838
|
sUnitOrCurrencyPath = _Helper.buildPath(sEntityPath, sUnitOrCurrencyPath);
|
|
@@ -1816,7 +1870,7 @@ sap.ui.define([
|
|
|
1816
1870
|
* predicates for all entities in the result. Collects and reports OData messages via
|
|
1817
1871
|
* {@link sap.ui.model.odata.v4.lib._Requestor#reportStateMessages}.
|
|
1818
1872
|
*
|
|
1819
|
-
* @param {
|
|
1873
|
+
* @param {any} oRoot An OData response, arrays or simple values are wrapped into an object as
|
|
1820
1874
|
* property "value"
|
|
1821
1875
|
* @param {object} mTypeForMetaPath A map from absolute meta path to entity type (as delivered
|
|
1822
1876
|
* by {@link #fetchTypes})
|
|
@@ -1874,7 +1928,7 @@ sap.ui.define([
|
|
|
1874
1928
|
* Calls visitInstance for all object entries of the given collection and creates the map
|
|
1875
1929
|
* $byPredicate from predicate to entity.
|
|
1876
1930
|
*
|
|
1877
|
-
* @param {
|
|
1931
|
+
* @param {any[]} aInstances The collection
|
|
1878
1932
|
* @param {string} sMetaPath The meta path of the collection in mTypeForMetaPath
|
|
1879
1933
|
* @param {string} sCollectionPath The path of the collection
|
|
1880
1934
|
* @param {string} sContextUrl The context URL for message longtexts
|
|
@@ -2024,11 +2078,13 @@ sap.ui.define([
|
|
|
2024
2078
|
return sDeepResourcePath;
|
|
2025
2079
|
}, bSharedRequest);
|
|
2026
2080
|
|
|
2081
|
+
this.iActiveElements = 0; // number of active (client-side) created elements
|
|
2027
2082
|
this.sContext = undefined; // the "@odata.context" from the responses
|
|
2028
2083
|
this.aElements = []; // the available elements
|
|
2029
2084
|
this.aElements.$byPredicate = {};
|
|
2030
2085
|
this.aElements.$count = undefined; // see setCount
|
|
2031
|
-
|
|
2086
|
+
// number of all (client-side) created elements (active or inactive)
|
|
2087
|
+
this.aElements.$created = 0;
|
|
2032
2088
|
this.aElements.$tail = undefined; // promise for a read w/o $top
|
|
2033
2089
|
// upper limit for @odata.count, maybe sharp; assumes #getQueryString can $filter out all
|
|
2034
2090
|
// created elements
|
|
@@ -2073,6 +2129,19 @@ sap.ui.define([
|
|
|
2073
2129
|
});
|
|
2074
2130
|
};
|
|
2075
2131
|
|
|
2132
|
+
/**
|
|
2133
|
+
* Replaces the old element at the given index with the given new element.
|
|
2134
|
+
*
|
|
2135
|
+
* @param {number} iIndex - The index
|
|
2136
|
+
* @param {object} oElement - The new element
|
|
2137
|
+
*
|
|
2138
|
+
* @public
|
|
2139
|
+
*/
|
|
2140
|
+
_CollectionCache.prototype.doReplaceWith = function (iIndex, oElement) {
|
|
2141
|
+
this.aElements[iIndex] = oElement;
|
|
2142
|
+
this.addKeptElement(oElement); // maintain $byPredicate
|
|
2143
|
+
};
|
|
2144
|
+
|
|
2076
2145
|
/**
|
|
2077
2146
|
* Returns a promise to be resolved (synchronously if possible) with an OData object for the
|
|
2078
2147
|
* requested data.
|
|
@@ -2162,13 +2231,13 @@ sap.ui.define([
|
|
|
2162
2231
|
for (i = iStart; i < iEnd; i += 1) {
|
|
2163
2232
|
this.aElements[i] = oPromise;
|
|
2164
2233
|
}
|
|
2165
|
-
this.oSyncPromiseAll = undefined;
|
|
2234
|
+
this.oSyncPromiseAll = undefined; // from now on, fetchValue has to wait again
|
|
2166
2235
|
};
|
|
2167
2236
|
|
|
2168
2237
|
/**
|
|
2169
2238
|
* Returns a filter that excludes all created entities in this cache's collection.
|
|
2170
2239
|
*
|
|
2171
|
-
* @returns {string}
|
|
2240
|
+
* @returns {string|undefined}
|
|
2172
2241
|
* The filter or <code>undefined</code> if there is no created entity.
|
|
2173
2242
|
*
|
|
2174
2243
|
* @private
|
|
@@ -2231,7 +2300,8 @@ sap.ui.define([
|
|
|
2231
2300
|
* The start index of the range
|
|
2232
2301
|
* @param {number} iEnd
|
|
2233
2302
|
* The index after the last element
|
|
2234
|
-
* @returns {string}
|
|
2303
|
+
* @returns {string}
|
|
2304
|
+
* The resource path including the query string
|
|
2235
2305
|
* @throws {Error}
|
|
2236
2306
|
* If there are created elements inside the given range
|
|
2237
2307
|
*
|
|
@@ -2284,11 +2354,11 @@ sap.ui.define([
|
|
|
2284
2354
|
* @private
|
|
2285
2355
|
*/
|
|
2286
2356
|
_CollectionCache.prototype.handleResponse = function (iStart, iEnd, oResult, mTypeForMetaPath) {
|
|
2287
|
-
var
|
|
2288
|
-
sCount,
|
|
2357
|
+
var sCount,
|
|
2289
2358
|
iCreated = this.aElements.$created,
|
|
2290
2359
|
oElement,
|
|
2291
2360
|
oKeptElement,
|
|
2361
|
+
iLimit = -1,
|
|
2292
2362
|
iOld$count = this.aElements.$count,
|
|
2293
2363
|
sPredicate,
|
|
2294
2364
|
iResultLength = oResult.value.length,
|
|
@@ -2303,7 +2373,8 @@ sap.ui.define([
|
|
|
2303
2373
|
oKeptElement = this.aElements.$byPredicate[sPredicate];
|
|
2304
2374
|
if (oKeptElement) {
|
|
2305
2375
|
if (oElement["@odata.etag"] === oKeptElement["@odata.etag"]) {
|
|
2306
|
-
_Helper.
|
|
2376
|
+
_Helper.updateNonExisting(oKeptElement, oElement);
|
|
2377
|
+
oElement = oKeptElement;
|
|
2307
2378
|
} else if (this.hasPendingChangesForPath(sPredicate)) {
|
|
2308
2379
|
throw new Error("Modified on client and on server: "
|
|
2309
2380
|
+ this.sResourcePath + sPredicate);
|
|
@@ -2315,7 +2386,7 @@ sap.ui.define([
|
|
|
2315
2386
|
}
|
|
2316
2387
|
sCount = oResult["@odata.count"];
|
|
2317
2388
|
if (sCount) {
|
|
2318
|
-
this.iLimit =
|
|
2389
|
+
this.iLimit = iLimit = parseInt(sCount);
|
|
2319
2390
|
}
|
|
2320
2391
|
if (oResult["@odata.nextLink"]) { // server-driven paging
|
|
2321
2392
|
this.bServerDrivenPaging = true;
|
|
@@ -2327,25 +2398,26 @@ sap.ui.define([
|
|
|
2327
2398
|
this.aElements.length = iStart + iResultLength;
|
|
2328
2399
|
}
|
|
2329
2400
|
} else if (iResultLength < iEnd - iStart) { // short read
|
|
2330
|
-
if (
|
|
2401
|
+
if (iLimit === -1) {
|
|
2331
2402
|
// use formerly computed $count
|
|
2332
|
-
|
|
2403
|
+
iLimit = iOld$count && iOld$count - this.iActiveElements;
|
|
2333
2404
|
}
|
|
2334
|
-
|
|
2335
|
-
|
|
2405
|
+
iLimit = Math.min(
|
|
2406
|
+
iLimit !== undefined ? iLimit : Infinity,
|
|
2407
|
+
// length determined from the short read
|
|
2336
2408
|
iStart - iCreated + iResultLength);
|
|
2337
|
-
this.aElements.length = iCreated +
|
|
2338
|
-
this.iLimit =
|
|
2409
|
+
this.aElements.length = iCreated + iLimit;
|
|
2410
|
+
this.iLimit = iLimit;
|
|
2339
2411
|
// If the server did not send a count, the calculated count is greater than 0
|
|
2340
2412
|
// and the element before has not been read yet, we do not know the count:
|
|
2341
2413
|
// The element might or might not exist.
|
|
2342
|
-
if (!sCount &&
|
|
2343
|
-
|
|
2414
|
+
if (!sCount && iLimit > 0 && !this.aElements[iLimit - 1]) {
|
|
2415
|
+
iLimit = undefined;
|
|
2344
2416
|
}
|
|
2345
2417
|
}
|
|
2346
|
-
if (
|
|
2418
|
+
if (iLimit !== -1) {
|
|
2347
2419
|
setCount(this.mChangeListeners, "", this.aElements,
|
|
2348
|
-
|
|
2420
|
+
iLimit !== undefined ? iLimit + this.iActiveElements : undefined);
|
|
2349
2421
|
}
|
|
2350
2422
|
};
|
|
2351
2423
|
|
|
@@ -2435,7 +2507,7 @@ sap.ui.define([
|
|
|
2435
2507
|
* A lock for the group ID
|
|
2436
2508
|
* @param {function} fnOnRemove
|
|
2437
2509
|
* A function which is called if a kept-alive element does no longer exist
|
|
2438
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
2510
|
+
* @returns {sap.ui.base.SyncPromise|undefined}
|
|
2439
2511
|
* A promise resolving without a defined result, or rejecting with an error if the refresh
|
|
2440
2512
|
* fails, or <code>undefined</code> if there are no kept-alive elements.
|
|
2441
2513
|
*
|
|
@@ -2456,7 +2528,9 @@ sap.ui.define([
|
|
|
2456
2528
|
var aKeyFilters,
|
|
2457
2529
|
mQueryOptions = _Helper.merge({}, that.mQueryOptions);
|
|
2458
2530
|
|
|
2459
|
-
|
|
2531
|
+
if (that.mLateQueryOptions) {
|
|
2532
|
+
_Helper.aggregateExpandSelect(mQueryOptions, that.mLateQueryOptions);
|
|
2533
|
+
}
|
|
2460
2534
|
delete mQueryOptions.$count;
|
|
2461
2535
|
delete mQueryOptions.$orderby;
|
|
2462
2536
|
delete mQueryOptions.$search;
|
|
@@ -2588,6 +2662,7 @@ sap.ui.define([
|
|
|
2588
2662
|
mQueryOptions,
|
|
2589
2663
|
mPredicates = {}, // a set of the predicates (as map to true) to speed up the search
|
|
2590
2664
|
sResourcePath,
|
|
2665
|
+
bSkip,
|
|
2591
2666
|
mTypeForMetaPath = this.fetchTypes().getResult(),
|
|
2592
2667
|
that = this;
|
|
2593
2668
|
|
|
@@ -2662,8 +2737,15 @@ sap.ui.define([
|
|
|
2662
2737
|
+ this.oRequestor.buildQueryString(this.sMetaPath, mQueryOptions, false, true);
|
|
2663
2738
|
|
|
2664
2739
|
return this.oRequestor.request("GET", sResourcePath, oGroupLock, undefined, undefined,
|
|
2665
|
-
undefined, undefined, this.sMetaPath, undefined, false, mMergeableQueryOptions
|
|
2666
|
-
|
|
2740
|
+
undefined, undefined, this.sMetaPath, undefined, false, mMergeableQueryOptions,
|
|
2741
|
+
this, function (aOtherPaths) {
|
|
2742
|
+
if (arguments.length) {
|
|
2743
|
+
aPaths = aPaths.concat(aOtherPaths);
|
|
2744
|
+
} else {
|
|
2745
|
+
bSkip = true; // my GET was merged
|
|
2746
|
+
return aPaths;
|
|
2747
|
+
}
|
|
2748
|
+
}).then(function (oResult) {
|
|
2667
2749
|
var oElement, sPredicate, i, n;
|
|
2668
2750
|
|
|
2669
2751
|
function preventKeyPredicateChange(sPath) {
|
|
@@ -2674,6 +2756,10 @@ sap.ui.define([
|
|
|
2674
2756
|
});
|
|
2675
2757
|
}
|
|
2676
2758
|
|
|
2759
|
+
if (bSkip) {
|
|
2760
|
+
return;
|
|
2761
|
+
}
|
|
2762
|
+
|
|
2677
2763
|
if (oResult.value.length !== aElements.length) {
|
|
2678
2764
|
throw new Error("Expected " + aElements.length + " row(s), but instead saw "
|
|
2679
2765
|
+ oResult.value.length);
|
|
@@ -2691,6 +2777,51 @@ sap.ui.define([
|
|
|
2691
2777
|
});
|
|
2692
2778
|
};
|
|
2693
2779
|
|
|
2780
|
+
/**
|
|
2781
|
+
* Resets this cache to its initial state, but keeps certain elements and their change listeners
|
|
2782
|
+
* alive.
|
|
2783
|
+
*
|
|
2784
|
+
* @param {string[]} aKeptElementPredicates
|
|
2785
|
+
* The key predicates for all kept-alive elements
|
|
2786
|
+
*
|
|
2787
|
+
* @public
|
|
2788
|
+
*/
|
|
2789
|
+
_CollectionCache.prototype.reset = function (aKeptElementPredicates) {
|
|
2790
|
+
var mByPredicate = this.aElements.$byPredicate,
|
|
2791
|
+
mChangeListeners = this.mChangeListeners,
|
|
2792
|
+
oElement,
|
|
2793
|
+
iTransient = 0,
|
|
2794
|
+
i,
|
|
2795
|
+
that = this;
|
|
2796
|
+
|
|
2797
|
+
for (i = 0; i < this.aElements.$created; i += 1) {
|
|
2798
|
+
oElement = this.aElements[i];
|
|
2799
|
+
if (_Helper.getPrivateAnnotation(oElement, "transient")) {
|
|
2800
|
+
aKeptElementPredicates.push(
|
|
2801
|
+
_Helper.getPrivateAnnotation(oElement, "transientPredicate"));
|
|
2802
|
+
this.aElements[iTransient] = oElement;
|
|
2803
|
+
iTransient += 1;
|
|
2804
|
+
} else { // Note: "created persisted" elements must be active
|
|
2805
|
+
this.iActiveElements -= 1;
|
|
2806
|
+
}
|
|
2807
|
+
}
|
|
2808
|
+
this.mChangeListeners = {};
|
|
2809
|
+
this.sContext = undefined;
|
|
2810
|
+
this.aElements.length = this.aElements.$created = iTransient;
|
|
2811
|
+
this.aElements.$byPredicate = {};
|
|
2812
|
+
this.aElements.$count = undefined; // needed for setCount()
|
|
2813
|
+
this.iLimit = Infinity;
|
|
2814
|
+
|
|
2815
|
+
Object.keys(mChangeListeners).forEach(function (sPath) {
|
|
2816
|
+
if (aKeptElementPredicates.includes(sPath.split("/")[0])) {
|
|
2817
|
+
that.mChangeListeners[sPath] = mChangeListeners[sPath];
|
|
2818
|
+
}
|
|
2819
|
+
});
|
|
2820
|
+
aKeptElementPredicates.forEach(function (sPredicate) {
|
|
2821
|
+
that.aElements.$byPredicate[sPredicate] = mByPredicate[sPredicate];
|
|
2822
|
+
});
|
|
2823
|
+
};
|
|
2824
|
+
|
|
2694
2825
|
//*********************************************************************************************
|
|
2695
2826
|
// PropertyCache
|
|
2696
2827
|
//*********************************************************************************************
|
|
@@ -3052,14 +3183,14 @@ sap.ui.define([
|
|
|
3052
3183
|
_SingleCache.prototype.requestSideEffects = function (oGroupLock, aPaths,
|
|
3053
3184
|
mNavigationPropertyPaths, sResourcePath) {
|
|
3054
3185
|
var mMergeableQueryOptions,
|
|
3055
|
-
oOldValuePromise = this.oPromise,
|
|
3056
3186
|
mQueryOptions,
|
|
3057
3187
|
oResult,
|
|
3188
|
+
bSkip,
|
|
3058
3189
|
that = this;
|
|
3059
3190
|
|
|
3060
3191
|
this.checkSharedRequest();
|
|
3061
3192
|
|
|
3062
|
-
mQueryOptions =
|
|
3193
|
+
mQueryOptions = this.oPromise && _Helper.intersectQueryOptions(
|
|
3063
3194
|
Object.assign({}, this.mQueryOptions, this.mLateQueryOptions), aPaths,
|
|
3064
3195
|
this.oRequestor.getModelInterface().fetchMetadata,
|
|
3065
3196
|
this.sMetaPath, mNavigationPropertyPaths);
|
|
@@ -3072,7 +3203,15 @@ sap.ui.define([
|
|
|
3072
3203
|
+ this.oRequestor.buildQueryString(this.sMetaPath, mQueryOptions, false, true);
|
|
3073
3204
|
oResult = SyncPromise.all([
|
|
3074
3205
|
this.oRequestor.request("GET", sResourcePath, oGroupLock, undefined, undefined,
|
|
3075
|
-
undefined, undefined, this.sMetaPath, undefined, false, mMergeableQueryOptions
|
|
3206
|
+
undefined, undefined, this.sMetaPath, undefined, false, mMergeableQueryOptions,
|
|
3207
|
+
this, function (aOtherPaths) {
|
|
3208
|
+
if (arguments.length) {
|
|
3209
|
+
aPaths = aPaths.concat(aOtherPaths);
|
|
3210
|
+
} else {
|
|
3211
|
+
bSkip = true; // my GET was merged
|
|
3212
|
+
return aPaths;
|
|
3213
|
+
}
|
|
3214
|
+
}),
|
|
3076
3215
|
this.fetchTypes(),
|
|
3077
3216
|
this.fetchValue(_GroupLock.$cached, "") // Note: includes some additional checks
|
|
3078
3217
|
]).then(function (aResult) {
|
|
@@ -3083,6 +3222,10 @@ sap.ui.define([
|
|
|
3083
3222
|
var oNewValue = aResult[0],
|
|
3084
3223
|
oOldValue = aResult[2];
|
|
3085
3224
|
|
|
3225
|
+
if (bSkip) {
|
|
3226
|
+
return;
|
|
3227
|
+
}
|
|
3228
|
+
|
|
3086
3229
|
// ensure that the new value has a predicate although key properties were not requested
|
|
3087
3230
|
_Helper.setPrivateAnnotation(oNewValue, "predicate",
|
|
3088
3231
|
_Helper.getPrivateAnnotation(oOldValue, "predicate"));
|
|
@@ -3300,6 +3443,7 @@ sap.ui.define([
|
|
|
3300
3443
|
_Cache.makeUpdateData = function (aPropertyPath, vValue) {
|
|
3301
3444
|
return aPropertyPath.reduceRight(function (vValue0, sSegment) {
|
|
3302
3445
|
var oResult = {};
|
|
3446
|
+
|
|
3303
3447
|
oResult[sSegment] = vValue0;
|
|
3304
3448
|
return oResult;
|
|
3305
3449
|
}, vValue);
|