@openui5/sap.ui.core 1.71.52 → 1.71.54

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.
Files changed (633) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.act.js +1 -1
  3. package/src/jquery.sap.dom.js +1 -1
  4. package/src/jquery.sap.encoder.js +1 -1
  5. package/src/jquery.sap.events.js +1 -1
  6. package/src/jquery.sap.global.js +2 -2
  7. package/src/jquery.sap.history.js +1 -1
  8. package/src/jquery.sap.keycodes.js +1 -1
  9. package/src/jquery.sap.mobile.js +1 -1
  10. package/src/jquery.sap.promise.js +1 -1
  11. package/src/jquery.sap.properties.js +2 -2
  12. package/src/jquery.sap.resources.js +2 -2
  13. package/src/jquery.sap.script.js +2 -2
  14. package/src/jquery.sap.sjax.js +1 -1
  15. package/src/jquery.sap.storage.js +4 -4
  16. package/src/jquery.sap.strings.js +1 -1
  17. package/src/jquery.sap.stubs.js +1 -1
  18. package/src/jquery.sap.trace.js +1 -1
  19. package/src/jquery.sap.ui.js +1 -1
  20. package/src/jquery.sap.unicode.js +1 -1
  21. package/src/jquery.sap.xml.js +1 -1
  22. package/src/sap/base/Log.js +1 -1
  23. package/src/sap/base/assert.js +1 -1
  24. package/src/sap/base/i18n/ResourceBundle.js +1 -1
  25. package/src/sap/base/security/URLWhitelist.js +1 -1
  26. package/src/sap/base/security/encodeCSS.js +1 -1
  27. package/src/sap/base/security/encodeJS.js +1 -1
  28. package/src/sap/base/security/encodeURL.js +1 -1
  29. package/src/sap/base/security/encodeURLParameters.js +1 -1
  30. package/src/sap/base/security/encodeXML.js +1 -1
  31. package/src/sap/base/security/sanitizeHTML.js +1 -1
  32. package/src/sap/base/strings/NormalizePolyfill.js +1 -1
  33. package/src/sap/base/strings/camelize.js +1 -1
  34. package/src/sap/base/strings/capitalize.js +1 -1
  35. package/src/sap/base/strings/escapeRegExp.js +1 -1
  36. package/src/sap/base/strings/formatMessage.js +1 -1
  37. package/src/sap/base/strings/hash.js +1 -1
  38. package/src/sap/base/strings/hyphenate.js +1 -1
  39. package/src/sap/base/strings/toHex.js +1 -1
  40. package/src/sap/base/util/JSTokenizer.js +1 -1
  41. package/src/sap/base/util/LoaderExtensions.js +1 -1
  42. package/src/sap/base/util/ObjectPath.js +1 -1
  43. package/src/sap/base/util/Properties.js +1 -1
  44. package/src/sap/base/util/UriParameters.js +1 -1
  45. package/src/sap/base/util/Version.js +1 -1
  46. package/src/sap/base/util/_merge.js +1 -1
  47. package/src/sap/base/util/array/diff.js +1 -1
  48. package/src/sap/base/util/array/uniqueSort.js +1 -1
  49. package/src/sap/base/util/deepClone.js +1 -1
  50. package/src/sap/base/util/deepEqual.js +1 -1
  51. package/src/sap/base/util/deepExtend.js +1 -1
  52. package/src/sap/base/util/defineCoupledProperty.js +1 -1
  53. package/src/sap/base/util/defineLazyProperty.js +1 -1
  54. package/src/sap/base/util/each.js +1 -1
  55. package/src/sap/base/util/extend.js +1 -1
  56. package/src/sap/base/util/includes.js +1 -1
  57. package/src/sap/base/util/isEmptyObject.js +1 -1
  58. package/src/sap/base/util/isPlainObject.js +1 -1
  59. package/src/sap/base/util/merge.js +1 -1
  60. package/src/sap/base/util/now.js +1 -1
  61. package/src/sap/base/util/resolveReference.js +1 -1
  62. package/src/sap/base/util/restricted/_castArray.js +2 -2
  63. package/src/sap/base/util/restricted/_curry.js +2 -2
  64. package/src/sap/base/util/restricted/_debounce.js +2 -2
  65. package/src/sap/base/util/restricted/_intersection.js +2 -2
  66. package/src/sap/base/util/restricted/_intersectionBy.js +2 -2
  67. package/src/sap/base/util/restricted/_intersectionWith.js +2 -2
  68. package/src/sap/base/util/restricted/_max.js +2 -2
  69. package/src/sap/base/util/restricted/_merge.js +2 -2
  70. package/src/sap/base/util/restricted/_mergeWith.js +2 -2
  71. package/src/sap/base/util/restricted/_min.js +2 -2
  72. package/src/sap/base/util/restricted/_omit.js +2 -2
  73. package/src/sap/base/util/restricted/_pick.js +2 -2
  74. package/src/sap/base/util/restricted/_pickBy.js +2 -2
  75. package/src/sap/base/util/restricted/_throttle.js +2 -2
  76. package/src/sap/base/util/restricted/_uniq.js +2 -2
  77. package/src/sap/base/util/restricted/_uniqBy.js +2 -2
  78. package/src/sap/base/util/restricted/_uniqWith.js +2 -2
  79. package/src/sap/base/util/uid.js +1 -1
  80. package/src/sap/base/util/values.js +1 -1
  81. package/src/sap/ui/Device.js +4 -4
  82. package/src/sap/ui/Global.js +5 -5
  83. package/src/sap/ui/VersionInfo.js +1 -1
  84. package/src/sap/ui/base/BindingParser.js +1 -1
  85. package/src/sap/ui/base/DataType.js +1 -1
  86. package/src/sap/ui/base/Event.js +2 -2
  87. package/src/sap/ui/base/EventProvider.js +2 -2
  88. package/src/sap/ui/base/Exception.js +1 -1
  89. package/src/sap/ui/base/ExpressionParser.js +1 -1
  90. package/src/sap/ui/base/Interface.js +2 -2
  91. package/src/sap/ui/base/ManagedObject.js +2 -2
  92. package/src/sap/ui/base/ManagedObjectMetadata.js +2 -2
  93. package/src/sap/ui/base/ManagedObjectObserver.js +1 -1
  94. package/src/sap/ui/base/ManagedObjectRegistry.js +1 -1
  95. package/src/sap/ui/base/Metadata.js +2 -2
  96. package/src/sap/ui/base/Object.js +2 -2
  97. package/src/sap/ui/base/ObjectPool.js +2 -2
  98. package/src/sap/ui/base/SyncPromise.js +1 -1
  99. package/src/sap/ui/base/syncXHRFix.js +1 -1
  100. package/src/sap/ui/core/.library +2 -2
  101. package/src/sap/ui/core/AppCacheBuster.js +1 -1
  102. package/src/sap/ui/core/BlockLayerUtils.js +1 -1
  103. package/src/sap/ui/core/BusyIndicator.js +2 -2
  104. package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
  105. package/src/sap/ui/core/CalendarType.js +1 -1
  106. package/src/sap/ui/core/CommandExecution.js +1 -1
  107. package/src/sap/ui/core/Component.js +2 -2
  108. package/src/sap/ui/core/ComponentContainer.js +2 -2
  109. package/src/sap/ui/core/ComponentContainerRenderer.js +1 -1
  110. package/src/sap/ui/core/ComponentMetadata.js +2 -2
  111. package/src/sap/ui/core/ComponentSupport.js +2 -2
  112. package/src/sap/ui/core/CompositeSupport.js +1 -1
  113. package/src/sap/ui/core/Configuration.js +1 -1
  114. package/src/sap/ui/core/ContextMenuSupport.js +1 -1
  115. package/src/sap/ui/core/Control.js +2 -2
  116. package/src/sap/ui/core/Core.js +2 -2
  117. package/src/sap/ui/core/CustomData.js +2 -2
  118. package/src/sap/ui/core/CustomStyleClassSupport.js +1 -1
  119. package/src/sap/ui/core/CustomizingConfiguration.js +2 -2
  120. package/src/sap/ui/core/DeclarativeSupport.js +2 -2
  121. package/src/sap/ui/core/Element.js +2 -2
  122. package/src/sap/ui/core/ElementMetadata.js +2 -2
  123. package/src/sap/ui/core/EnabledPropagator.js +2 -2
  124. package/src/sap/ui/core/EventBus.js +2 -2
  125. package/src/sap/ui/core/ExtensionPoint.js +1 -1
  126. package/src/sap/ui/core/FocusHandler.js +1 -1
  127. package/src/sap/ui/core/Fragment.js +2 -2
  128. package/src/sap/ui/core/HTML.js +2 -2
  129. package/src/sap/ui/core/HTMLRenderer.js +1 -1
  130. package/src/sap/ui/core/History.js +2 -2
  131. package/src/sap/ui/core/Icon.js +2 -2
  132. package/src/sap/ui/core/IconPool.js +1 -1
  133. package/src/sap/ui/core/IconRenderer.js +1 -1
  134. package/src/sap/ui/core/IndicationColorSupport.js +2 -2
  135. package/src/sap/ui/core/IntervalTrigger.js +2 -2
  136. package/src/sap/ui/core/InvisibleRenderer.js +2 -2
  137. package/src/sap/ui/core/InvisibleText.js +2 -2
  138. package/src/sap/ui/core/Item.js +2 -2
  139. package/src/sap/ui/core/LabelEnablement.js +2 -2
  140. package/src/sap/ui/core/LayoutData.js +2 -2
  141. package/src/sap/ui/core/ListItem.js +2 -2
  142. package/src/sap/ui/core/LocalBusyIndicator.js +2 -2
  143. package/src/sap/ui/core/LocalBusyIndicatorRenderer.js +1 -1
  144. package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
  145. package/src/sap/ui/core/Locale.js +2 -2
  146. package/src/sap/ui/core/LocaleData.js +2 -2
  147. package/src/sap/ui/core/Manifest.js +2 -2
  148. package/src/sap/ui/core/Message.js +2 -2
  149. package/src/sap/ui/core/Patcher.js +1 -1
  150. package/src/sap/ui/core/Popup.js +1 -1
  151. package/src/sap/ui/core/RenderManager.js +2 -2
  152. package/src/sap/ui/core/Renderer.js +2 -2
  153. package/src/sap/ui/core/ResizeHandler.js +2 -2
  154. package/src/sap/ui/core/ScrollBar.js +2 -2
  155. package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
  156. package/src/sap/ui/core/SeparatorItem.js +2 -2
  157. package/src/sap/ui/core/Shortcut.js +1 -1
  158. package/src/sap/ui/core/StashedControlSupport.js +1 -1
  159. package/src/sap/ui/core/ThemeCheck.js +1 -1
  160. package/src/sap/ui/core/Title.js +2 -2
  161. package/src/sap/ui/core/TooltipBase.js +2 -2
  162. package/src/sap/ui/core/UIArea.js +2 -2
  163. package/src/sap/ui/core/UIComponent.js +2 -2
  164. package/src/sap/ui/core/UIComponentMetadata.js +2 -2
  165. package/src/sap/ui/core/ValueStateSupport.js +2 -2
  166. package/src/sap/ui/core/VariantLayoutData.js +2 -2
  167. package/src/sap/ui/core/XMLComposite.js +2 -2
  168. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  169. package/src/sap/ui/core/XMLTemplateProcessor.js +1 -1
  170. package/src/sap/ui/core/cache/CacheManager.js +1 -1
  171. package/src/sap/ui/core/cache/CacheManagerNOP.js +1 -1
  172. package/src/sap/ui/core/cache/LRUPersistentCache.js +1 -1
  173. package/src/sap/ui/core/date/Buddhist.js +1 -1
  174. package/src/sap/ui/core/date/CalendarUtils.js +1 -1
  175. package/src/sap/ui/core/date/CalendarWeekNumbering.js +1 -1
  176. package/src/sap/ui/core/date/Gregorian.js +1 -1
  177. package/src/sap/ui/core/date/Islamic.js +1 -1
  178. package/src/sap/ui/core/date/Japanese.js +1 -1
  179. package/src/sap/ui/core/date/Persian.js +1 -1
  180. package/src/sap/ui/core/date/UniversalDate.js +1 -1
  181. package/src/sap/ui/core/delegate/ItemNavigation.js +2 -2
  182. package/src/sap/ui/core/delegate/ScrollEnablement.js +2 -2
  183. package/src/sap/ui/core/designtime/ComponentContainer.designtime.js +1 -1
  184. package/src/sap/ui/core/designtime/CustomData.designtime.js +1 -1
  185. package/src/sap/ui/core/designtime/Icon.designtime.js +1 -1
  186. package/src/sap/ui/core/designtime/UIComponent.designtime.js +1 -1
  187. package/src/sap/ui/core/designtime/library.designtime.js +1 -1
  188. package/src/sap/ui/core/designtime/mvc/ControllerExtensionTemplate.js +1 -1
  189. package/src/sap/ui/core/designtime/mvc/View.designtime.js +1 -1
  190. package/src/sap/ui/core/designtime/mvc/XMLView.designtime.js +1 -1
  191. package/src/sap/ui/core/dnd/DragAndDrop.js +1 -1
  192. package/src/sap/ui/core/dnd/DragDropBase.js +2 -2
  193. package/src/sap/ui/core/dnd/DragDropInfo.js +2 -2
  194. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  195. package/src/sap/ui/core/dnd/DropInfo.js +2 -2
  196. package/src/sap/ui/core/format/DateFormat.js +307 -175
  197. package/src/sap/ui/core/format/FileSizeFormat.js +1 -1
  198. package/src/sap/ui/core/format/ListFormat.js +1 -1
  199. package/src/sap/ui/core/format/NumberFormat.js +1 -1
  200. package/src/sap/ui/core/hyphenation/Hyphenation.js +2 -2
  201. package/src/sap/ui/core/library.js +4 -4
  202. package/src/sap/ui/core/library.support.js +1 -1
  203. package/src/sap/ui/core/message/ControlMessageProcessor.js +2 -2
  204. package/src/sap/ui/core/message/Message.js +2 -2
  205. package/src/sap/ui/core/message/MessageManager.js +2 -2
  206. package/src/sap/ui/core/message/MessageMixin.js +1 -1
  207. package/src/sap/ui/core/message/MessageParser.js +2 -2
  208. package/src/sap/ui/core/message/MessageProcessor.js +2 -2
  209. package/src/sap/ui/core/messagebundle_bg.properties +51 -51
  210. package/src/sap/ui/core/mvc/Controller.js +1 -1
  211. package/src/sap/ui/core/mvc/ControllerExtension.js +1 -1
  212. package/src/sap/ui/core/mvc/ControllerMetadata.js +1 -1
  213. package/src/sap/ui/core/mvc/EventHandlerResolver.js +1 -1
  214. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  215. package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
  216. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  217. package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
  218. package/src/sap/ui/core/mvc/JSView.js +2 -2
  219. package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
  220. package/src/sap/ui/core/mvc/OverrideExecution.js +1 -1
  221. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  222. package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
  223. package/src/sap/ui/core/mvc/View.js +2 -2
  224. package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
  225. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  226. package/src/sap/ui/core/mvc/XMLViewRenderer.js +1 -1
  227. package/src/sap/ui/core/plugin/DeclarativeSupport.js +2 -2
  228. package/src/sap/ui/core/plugin/LessSupport.js +2 -2
  229. package/src/sap/ui/core/plugin/TemplatingSupport.js +2 -2
  230. package/src/sap/ui/core/postmessage/Bus.js +2 -2
  231. package/src/sap/ui/core/postmessage/confirmationDialog.js +2 -2
  232. package/src/sap/ui/core/routing/HashChanger.js +1 -1
  233. package/src/sap/ui/core/routing/HashChangerBase.js +1 -1
  234. package/src/sap/ui/core/routing/History.js +1 -1
  235. package/src/sap/ui/core/routing/Route.js +1 -1
  236. package/src/sap/ui/core/routing/Router.js +1 -1
  237. package/src/sap/ui/core/routing/RouterHashChanger.js +1 -1
  238. package/src/sap/ui/core/routing/Target.js +1 -1
  239. package/src/sap/ui/core/routing/TargetCache.js +1 -1
  240. package/src/sap/ui/core/routing/Targets.js +1 -1
  241. package/src/sap/ui/core/routing/Views.js +1 -1
  242. package/src/sap/ui/core/routing/async/Route.js +1 -1
  243. package/src/sap/ui/core/routing/async/Target.js +1 -1
  244. package/src/sap/ui/core/routing/async/TargetCache.js +1 -1
  245. package/src/sap/ui/core/routing/async/Targets.js +1 -1
  246. package/src/sap/ui/core/routing/sync/Route.js +1 -1
  247. package/src/sap/ui/core/routing/sync/Target.js +1 -1
  248. package/src/sap/ui/core/routing/sync/TargetCache.js +1 -1
  249. package/src/sap/ui/core/routing/sync/Targets.js +1 -1
  250. package/src/sap/ui/core/rules/App.support.js +1 -1
  251. package/src/sap/ui/core/rules/Config.support.js +1 -1
  252. package/src/sap/ui/core/rules/CoreHelper.support.js +1 -1
  253. package/src/sap/ui/core/rules/Misc.support.js +1 -1
  254. package/src/sap/ui/core/rules/Model.support.js +1 -1
  255. package/src/sap/ui/core/rules/View.support.js +1 -1
  256. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -2
  257. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  258. package/src/sap/ui/core/service/Service.js +2 -2
  259. package/src/sap/ui/core/service/ServiceFactory.js +2 -2
  260. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +2 -2
  261. package/src/sap/ui/core/support/Hotkeys.js +1 -1
  262. package/src/sap/ui/core/support/Plugin.js +2 -2
  263. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +1 -1
  264. package/src/sap/ui/core/support/Support.js +2 -2
  265. package/src/sap/ui/core/support/ToolsAPI.js +1 -1
  266. package/src/sap/ui/core/support/bootstrapFallback.js +1 -1
  267. package/src/sap/ui/core/support/controls/InteractionSlider.js +1 -1
  268. package/src/sap/ui/core/support/controls/InteractionTree.js +1 -1
  269. package/src/sap/ui/core/support/controls/ObjectViewer.js +1 -1
  270. package/src/sap/ui/core/support/controls/TimelineOverview.js +1 -1
  271. package/src/sap/ui/core/support/controls/TreeViewer.js +1 -1
  272. package/src/sap/ui/core/support/debugReboot.js +1 -1
  273. package/src/sap/ui/core/support/plugins/Breakpoint.js +1 -1
  274. package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
  275. package/src/sap/ui/core/support/plugins/Debugging.js +1 -1
  276. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  277. package/src/sap/ui/core/support/plugins/LocalStorage.js +2 -2
  278. package/src/sap/ui/core/support/plugins/MessageTest.js +2 -2
  279. package/src/sap/ui/core/support/plugins/Performance.js +2 -2
  280. package/src/sap/ui/core/support/plugins/Selector.js +2 -2
  281. package/src/sap/ui/core/support/plugins/TechInfo.js +2 -2
  282. package/src/sap/ui/core/support/plugins/Trace.js +2 -2
  283. package/src/sap/ui/core/support/plugins/ViewInfo.js +2 -2
  284. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -1
  285. package/src/sap/ui/core/support/techinfo/moduleTreeHelper.js +1 -1
  286. package/src/sap/ui/core/support/trace/E2eTraceLib.js +1 -1
  287. package/src/sap/ui/core/support/trace/EppLib.js +1 -1
  288. package/src/sap/ui/core/support/usage/EventBroadcaster.js +1 -1
  289. package/src/sap/ui/core/syncStyleClass.js +1 -1
  290. package/src/sap/ui/core/themes/base/library.source.less +1 -1
  291. package/src/sap/ui/core/themes/sap_hcb/library.source.less +1 -1
  292. package/src/sap/ui/core/theming/Parameters.js +1 -1
  293. package/src/sap/ui/core/tmpl/DOMAttribute.js +2 -2
  294. package/src/sap/ui/core/tmpl/DOMElement.js +2 -2
  295. package/src/sap/ui/core/tmpl/DOMElementRenderer.js +1 -1
  296. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +2 -2
  297. package/src/sap/ui/core/tmpl/Template.js +2 -2
  298. package/src/sap/ui/core/tmpl/TemplateControl.js +2 -2
  299. package/src/sap/ui/core/tmpl/TemplateControlRenderer.js +1 -1
  300. package/src/sap/ui/core/util/AsyncHintsHelper.js +2 -2
  301. package/src/sap/ui/core/util/DraftEnabledMockServer.js +1 -1
  302. package/src/sap/ui/core/util/Export.js +2 -2
  303. package/src/sap/ui/core/util/ExportCell.js +2 -2
  304. package/src/sap/ui/core/util/ExportColumn.js +2 -2
  305. package/src/sap/ui/core/util/ExportRow.js +2 -2
  306. package/src/sap/ui/core/util/ExportType.js +2 -2
  307. package/src/sap/ui/core/util/ExportTypeCSV.js +2 -2
  308. package/src/sap/ui/core/util/File.js +2 -2
  309. package/src/sap/ui/core/util/LibraryInfo.js +2 -2
  310. package/src/sap/ui/core/util/MockServer.js +2 -2
  311. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +1 -1
  312. package/src/sap/ui/core/util/PasteHelper.js +2 -2
  313. package/src/sap/ui/core/util/ShortcutHelper.js +1 -1
  314. package/src/sap/ui/core/util/XMLPreprocessor.js +1 -1
  315. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +1 -1
  316. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +1 -1
  317. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -1
  318. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +2 -2
  319. package/src/sap/ui/core/util/serializer/Serializer.js +2 -2
  320. package/src/sap/ui/core/util/serializer/ViewSerializer.js +2 -2
  321. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +2 -2
  322. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +2 -2
  323. package/src/sap/ui/core/util/serializer/delegate/HTML.js +2 -2
  324. package/src/sap/ui/core/util/serializer/delegate/XML.js +2 -2
  325. package/src/sap/ui/core/ws/ReadyState.js +2 -2
  326. package/src/sap/ui/core/ws/SapPcpWebSocket.js +2 -2
  327. package/src/sap/ui/core/ws/WebSocket.js +2 -2
  328. package/src/sap/ui/debug/ControlTree.js +2 -2
  329. package/src/sap/ui/debug/DebugEnv.js +2 -2
  330. package/src/sap/ui/debug/Highlighter.js +1 -1
  331. package/src/sap/ui/debug/LogViewer.js +1 -1
  332. package/src/sap/ui/debug/PropertyList.js +2 -2
  333. package/src/sap/ui/dom/activeElementFix.js +1 -1
  334. package/src/sap/ui/dom/containsOrEquals.js +1 -1
  335. package/src/sap/ui/dom/denormalizeScrollBeginRTL.js +1 -1
  336. package/src/sap/ui/dom/denormalizeScrollLeftRTL.js +1 -1
  337. package/src/sap/ui/dom/getComputedStyleFix.js +1 -1
  338. package/src/sap/ui/dom/getOwnerWindow.js +1 -1
  339. package/src/sap/ui/dom/getScrollbarSize.js +1 -1
  340. package/src/sap/ui/dom/includeScript.js +1 -1
  341. package/src/sap/ui/dom/includeStylesheet.js +1 -1
  342. package/src/sap/ui/dom/jquery/Aria.js +1 -1
  343. package/src/sap/ui/dom/jquery/Focusable.js +1 -1
  344. package/src/sap/ui/dom/jquery/Selection.js +1 -1
  345. package/src/sap/ui/dom/jquery/Selectors.js +1 -1
  346. package/src/sap/ui/dom/jquery/control.js +1 -1
  347. package/src/sap/ui/dom/jquery/cursorPos.js +1 -1
  348. package/src/sap/ui/dom/jquery/getSelectedText.js +1 -1
  349. package/src/sap/ui/dom/jquery/hasTabIndex.js +1 -1
  350. package/src/sap/ui/dom/jquery/parentByAttribute.js +1 -1
  351. package/src/sap/ui/dom/jquery/rect.js +1 -1
  352. package/src/sap/ui/dom/jquery/rectContains.js +1 -1
  353. package/src/sap/ui/dom/jquery/scrollLeftRTL.js +1 -1
  354. package/src/sap/ui/dom/jquery/scrollRightRTL.js +1 -1
  355. package/src/sap/ui/dom/jquery/selectText.js +1 -1
  356. package/src/sap/ui/dom/jquery/zIndex.js +1 -1
  357. package/src/sap/ui/dom/units/Rem.js +1 -1
  358. package/src/sap/ui/events/ControlEvents.js +1 -1
  359. package/src/sap/ui/events/F6Navigation.js +1 -1
  360. package/src/sap/ui/events/KeyCodes.js +1 -1
  361. package/src/sap/ui/events/PasteEventFix.js +1 -1
  362. package/src/sap/ui/events/PseudoEvents.js +1 -1
  363. package/src/sap/ui/events/TouchToMouseMapping.js +1 -1
  364. package/src/sap/ui/events/checkMouseEnterOrLeave.js +1 -1
  365. package/src/sap/ui/events/isMouseEventDelayed.js +1 -1
  366. package/src/sap/ui/events/isSpecialKey.js +1 -1
  367. package/src/sap/ui/events/jquery/EventExtension.js +1 -1
  368. package/src/sap/ui/events/jquery/EventSimulation.js +1 -1
  369. package/src/sap/ui/events/jquery/EventTriggerHook.js +1 -1
  370. package/src/sap/ui/model/Binding.js +1 -1
  371. package/src/sap/ui/model/BindingMode.js +1 -1
  372. package/src/sap/ui/model/ChangeReason.js +1 -1
  373. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  374. package/src/sap/ui/model/ClientListBinding.js +1 -1
  375. package/src/sap/ui/model/ClientModel.js +2 -2
  376. package/src/sap/ui/model/ClientPropertyBinding.js +1 -1
  377. package/src/sap/ui/model/ClientTreeBinding.js +1 -1
  378. package/src/sap/ui/model/ClientTreeBindingAdapter.js +1 -1
  379. package/src/sap/ui/model/CompositeBinding.js +1 -1
  380. package/src/sap/ui/model/CompositeDataState.js +2 -2
  381. package/src/sap/ui/model/CompositeType.js +2 -2
  382. package/src/sap/ui/model/Context.js +1 -1
  383. package/src/sap/ui/model/ContextBinding.js +1 -1
  384. package/src/sap/ui/model/DataState.js +2 -2
  385. package/src/sap/ui/model/Filter.js +1 -1
  386. package/src/sap/ui/model/FilterOperator.js +1 -1
  387. package/src/sap/ui/model/FilterProcessor.js +1 -1
  388. package/src/sap/ui/model/FilterType.js +1 -1
  389. package/src/sap/ui/model/FormatException.js +1 -1
  390. package/src/sap/ui/model/ListBinding.js +1 -1
  391. package/src/sap/ui/model/MetaModel.js +2 -2
  392. package/src/sap/ui/model/Model.js +2 -2
  393. package/src/sap/ui/model/ParseException.js +1 -1
  394. package/src/sap/ui/model/PropertyBinding.js +1 -1
  395. package/src/sap/ui/model/SelectionModel.js +2 -2
  396. package/src/sap/ui/model/SimpleType.js +2 -2
  397. package/src/sap/ui/model/Sorter.js +1 -1
  398. package/src/sap/ui/model/SorterProcessor.js +1 -1
  399. package/src/sap/ui/model/StaticBinding.js +1 -1
  400. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  401. package/src/sap/ui/model/TreeBinding.js +1 -1
  402. package/src/sap/ui/model/TreeBindingAdapter.js +1 -1
  403. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +1 -1
  404. package/src/sap/ui/model/TreeBindingUtils.js +1 -1
  405. package/src/sap/ui/model/Type.js +2 -2
  406. package/src/sap/ui/model/ValidateException.js +1 -1
  407. package/src/sap/ui/model/analytics/AnalyticalBinding.js +1 -1
  408. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  409. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  410. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  411. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  412. package/src/sap/ui/model/analytics/odata4analytics.js +1 -1
  413. package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
  414. package/src/sap/ui/model/base/XMLNodeAttributesModel.js +1 -1
  415. package/src/sap/ui/model/base/XMLNodeUtils.js +1 -1
  416. package/src/sap/ui/model/control/ControlModel.js +2 -2
  417. package/src/sap/ui/model/control/ControlPropertyBinding.js +1 -1
  418. package/src/sap/ui/model/json/JSONListBinding.js +1 -1
  419. package/src/sap/ui/model/json/JSONModel.js +2 -2
  420. package/src/sap/ui/model/json/JSONPropertyBinding.js +1 -1
  421. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  422. package/src/sap/ui/model/message/MessageListBinding.js +1 -1
  423. package/src/sap/ui/model/message/MessageModel.js +2 -2
  424. package/src/sap/ui/model/message/MessagePropertyBinding.js +1 -1
  425. package/src/sap/ui/model/meta/AdapterConstants.js +1 -1
  426. package/src/sap/ui/model/meta/AdapterFactory.js +1 -1
  427. package/src/sap/ui/model/meta/BaseAdapter.js +1 -1
  428. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  429. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  430. package/src/sap/ui/model/odata/CountMode.js +1 -1
  431. package/src/sap/ui/model/odata/Filter.js +1 -1
  432. package/src/sap/ui/model/odata/MessageScope.js +1 -1
  433. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  434. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  435. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  436. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  437. package/src/sap/ui/model/odata/ODataMetaModel.js +2 -2
  438. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  439. package/src/sap/ui/model/odata/ODataModel.js +2 -2
  440. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  441. package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
  442. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  443. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +1 -1
  444. package/src/sap/ui/model/odata/ODataUtils.js +1 -1
  445. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  446. package/src/sap/ui/model/odata/UpdateMethod.js +1 -1
  447. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
  448. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  449. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
  450. package/src/sap/ui/model/odata/type/Boolean.js +2 -2
  451. package/src/sap/ui/model/odata/type/Byte.js +2 -2
  452. package/src/sap/ui/model/odata/type/Currency.js +2 -2
  453. package/src/sap/ui/model/odata/type/Date.js +2 -2
  454. package/src/sap/ui/model/odata/type/DateTime.js +2 -2
  455. package/src/sap/ui/model/odata/type/DateTimeBase.js +2 -2
  456. package/src/sap/ui/model/odata/type/DateTimeOffset.js +2 -2
  457. package/src/sap/ui/model/odata/type/Decimal.js +2 -2
  458. package/src/sap/ui/model/odata/type/Double.js +2 -2
  459. package/src/sap/ui/model/odata/type/Guid.js +2 -2
  460. package/src/sap/ui/model/odata/type/Int.js +2 -2
  461. package/src/sap/ui/model/odata/type/Int16.js +2 -2
  462. package/src/sap/ui/model/odata/type/Int32.js +2 -2
  463. package/src/sap/ui/model/odata/type/Int64.js +2 -2
  464. package/src/sap/ui/model/odata/type/ODataType.js +2 -2
  465. package/src/sap/ui/model/odata/type/Raw.js +2 -2
  466. package/src/sap/ui/model/odata/type/SByte.js +2 -2
  467. package/src/sap/ui/model/odata/type/Single.js +2 -2
  468. package/src/sap/ui/model/odata/type/Stream.js +2 -2
  469. package/src/sap/ui/model/odata/type/String.js +2 -2
  470. package/src/sap/ui/model/odata/type/Time.js +2 -2
  471. package/src/sap/ui/model/odata/type/TimeOfDay.js +2 -2
  472. package/src/sap/ui/model/odata/type/Unit.js +2 -2
  473. package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
  474. package/src/sap/ui/model/odata/v2/BatchMode.js +1 -1
  475. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
  476. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +1 -1
  477. package/src/sap/ui/model/odata/v2/ODataListBinding.js +1 -1
  478. package/src/sap/ui/model/odata/v2/ODataModel.js +2 -2
  479. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  480. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +1 -1
  481. package/src/sap/ui/model/odata/v4/Context.js +2 -2
  482. package/src/sap/ui/model/odata/v4/ODataBinding.js +1 -1
  483. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +2 -2
  484. package/src/sap/ui/model/odata/v4/ODataListBinding.js +2 -2
  485. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +2 -2
  486. package/src/sap/ui/model/odata/v4/ODataModel.js +2 -2
  487. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +1 -1
  488. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -2
  489. package/src/sap/ui/model/odata/v4/ODataUtils.js +1 -1
  490. package/src/sap/ui/model/odata/v4/SubmitMode.js +1 -1
  491. package/src/sap/ui/model/odata/v4/ValueListType.js +1 -1
  492. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +1 -1
  493. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +1 -1
  494. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +1 -1
  495. package/src/sap/ui/model/odata/v4/lib/_Batch.js +1 -1
  496. package/src/sap/ui/model/odata/v4/lib/_Cache.js +1 -1
  497. package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
  498. package/src/sap/ui/model/odata/v4/lib/_Helper.js +1 -1
  499. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +1 -1
  500. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
  501. package/src/sap/ui/model/odata/v4/lib/_Parser.js +1 -1
  502. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +1 -1
  503. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +1 -1
  504. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
  505. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +1 -1
  506. package/src/sap/ui/model/resource/ResourceModel.js +2 -2
  507. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  508. package/src/sap/ui/model/type/Boolean.js +2 -2
  509. package/src/sap/ui/model/type/Currency.js +2 -2
  510. package/src/sap/ui/model/type/Date.js +2 -2
  511. package/src/sap/ui/model/type/DateInterval.js +2 -2
  512. package/src/sap/ui/model/type/DateTime.js +2 -2
  513. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  514. package/src/sap/ui/model/type/FileSize.js +2 -2
  515. package/src/sap/ui/model/type/Float.js +2 -2
  516. package/src/sap/ui/model/type/Integer.js +2 -2
  517. package/src/sap/ui/model/type/String.js +2 -2
  518. package/src/sap/ui/model/type/Time.js +2 -2
  519. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  520. package/src/sap/ui/model/type/Unit.js +2 -2
  521. package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
  522. package/src/sap/ui/model/xml/XMLModel.js +2 -2
  523. package/src/sap/ui/model/xml/XMLPropertyBinding.js +1 -1
  524. package/src/sap/ui/model/xml/XMLTreeBinding.js +1 -1
  525. package/src/sap/ui/performance/BeaconRequest.js +1 -1
  526. package/src/sap/ui/performance/Measurement.js +1 -1
  527. package/src/sap/ui/performance/XHRInterceptor.js +1 -1
  528. package/src/sap/ui/performance/trace/FESR.js +1 -1
  529. package/src/sap/ui/performance/trace/Interaction.js +1 -1
  530. package/src/sap/ui/performance/trace/Passport.js +1 -1
  531. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  532. package/src/sap/ui/qunit/QUnitUtils.js +1 -1
  533. package/src/sap/ui/qunit/qunit-2-css.js +1 -1
  534. package/src/sap/ui/qunit/qunit-coverage.js +1 -1
  535. package/src/sap/ui/qunit/qunit-css.js +1 -1
  536. package/src/sap/ui/qunit/qunit-junit.js +1 -1
  537. package/src/sap/ui/qunit/qunit-redirect.js +1 -1
  538. package/src/sap/ui/qunit/sinon-qunit-bridge.js +1 -1
  539. package/src/sap/ui/qunit/utils/ControlIterator.js +2 -2
  540. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +2 -2
  541. package/src/sap/ui/qunit/utils/createAndAppendDiv.js +1 -1
  542. package/src/sap/ui/qunit/utils/waitForThemeApplied.js +1 -1
  543. package/src/sap/ui/security/FrameOptions.js +1 -1
  544. package/src/sap/ui/test/BlanketReporter.js +1 -1
  545. package/src/sap/ui/test/BranchTracking.js +1 -1
  546. package/src/sap/ui/test/Opa.js +1 -1
  547. package/src/sap/ui/test/Opa5.js +1 -1
  548. package/src/sap/ui/test/OpaExtension.js +1 -1
  549. package/src/sap/ui/test/OpaPlugin.js +1 -1
  550. package/src/sap/ui/test/PageObjectFactory.js +1 -1
  551. package/src/sap/ui/test/RecordReplay.js +1 -1
  552. package/src/sap/ui/test/TestUtils.js +1 -1
  553. package/src/sap/ui/test/_BrowserLogCollector.js +1 -1
  554. package/src/sap/ui/test/_ControlFinder.js +1 -1
  555. package/src/sap/ui/test/_LogCollector.js +1 -1
  556. package/src/sap/ui/test/_OpaLogger.js +1 -1
  557. package/src/sap/ui/test/_OpaUriParameterParser.js +1 -1
  558. package/src/sap/ui/test/_ParameterValidator.js +1 -1
  559. package/src/sap/ui/test/_UsageReport.js +1 -1
  560. package/src/sap/ui/test/actions/Action.js +1 -1
  561. package/src/sap/ui/test/actions/EnterText.js +1 -1
  562. package/src/sap/ui/test/actions/Press.js +1 -1
  563. package/src/sap/ui/test/autowaiter/_UIUpdatesWaiter.js +1 -1
  564. package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
  565. package/src/sap/ui/test/autowaiter/_autoWaiter.js +1 -1
  566. package/src/sap/ui/test/autowaiter/_autoWaiterAsync.js +1 -1
  567. package/src/sap/ui/test/autowaiter/_navigationContainerWaiter.js +1 -1
  568. package/src/sap/ui/test/autowaiter/_promiseWaiter.js +1 -1
  569. package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +1 -1
  570. package/src/sap/ui/test/autowaiter/_utils.js +1 -1
  571. package/src/sap/ui/test/gherkin/GherkinTestGenerator.js +1 -1
  572. package/src/sap/ui/test/gherkin/StepDefinitions.js +1 -1
  573. package/src/sap/ui/test/gherkin/dataTableUtils.js +1 -1
  574. package/src/sap/ui/test/gherkin/opa5TestHarness.js +1 -1
  575. package/src/sap/ui/test/gherkin/qUnitTestHarness.js +1 -1
  576. package/src/sap/ui/test/gherkin/simpleGherkinParser.js +1 -1
  577. package/src/sap/ui/test/launchers/componentLauncher.js +1 -1
  578. package/src/sap/ui/test/launchers/iFrameLauncher.js +1 -1
  579. package/src/sap/ui/test/matchers/AggregationContainsPropertyEqual.js +1 -1
  580. package/src/sap/ui/test/matchers/AggregationEmpty.js +1 -1
  581. package/src/sap/ui/test/matchers/AggregationFilled.js +1 -1
  582. package/src/sap/ui/test/matchers/AggregationLengthEquals.js +1 -1
  583. package/src/sap/ui/test/matchers/Ancestor.js +1 -1
  584. package/src/sap/ui/test/matchers/BindingPath.js +1 -1
  585. package/src/sap/ui/test/matchers/Descendant.js +1 -1
  586. package/src/sap/ui/test/matchers/I18NText.js +1 -1
  587. package/src/sap/ui/test/matchers/Interactable.js +1 -1
  588. package/src/sap/ui/test/matchers/LabelFor.js +1 -1
  589. package/src/sap/ui/test/matchers/Matcher.js +1 -1
  590. package/src/sap/ui/test/matchers/MatcherFactory.js +1 -1
  591. package/src/sap/ui/test/matchers/Properties.js +1 -1
  592. package/src/sap/ui/test/matchers/PropertyStrictEquals.js +1 -1
  593. package/src/sap/ui/test/matchers/Visible.js +1 -1
  594. package/src/sap/ui/test/matchers/_Busy.js +1 -1
  595. package/src/sap/ui/test/matchers/_Enabled.js +1 -1
  596. package/src/sap/ui/test/matchers/_Visitor.js +1 -1
  597. package/src/sap/ui/test/matchers/matchers.js +1 -1
  598. package/src/sap/ui/test/opaQunit.js +1 -1
  599. package/src/sap/ui/test/pipelines/ActionPipeline.js +1 -1
  600. package/src/sap/ui/test/pipelines/MatcherPipeline.js +1 -1
  601. package/src/sap/ui/test/pipelines/PipelineFactory.js +1 -1
  602. package/src/sap/ui/test/qunitPause.js +1 -1
  603. package/src/sap/ui/test/selectors/_BindingPath.js +1 -1
  604. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +1 -1
  605. package/src/sap/ui/test/selectors/_ControlSelectorValidator.js +1 -1
  606. package/src/sap/ui/test/selectors/_DropdownItem.js +1 -1
  607. package/src/sap/ui/test/selectors/_GlobalID.js +1 -1
  608. package/src/sap/ui/test/selectors/_LabelFor.js +1 -1
  609. package/src/sap/ui/test/selectors/_Properties.js +1 -1
  610. package/src/sap/ui/test/selectors/_Selector.js +1 -1
  611. package/src/sap/ui/test/selectors/_TableRowItem.js +1 -1
  612. package/src/sap/ui/test/selectors/_ViewID.js +1 -1
  613. package/src/sap/ui/test/selectors/_selectors.js +1 -1
  614. package/src/sap/ui/test/starter/_utils.js +1 -1
  615. package/src/sap/ui/test/starter/createSuite.js +1 -1
  616. package/src/sap/ui/test/starter/runTest.js +1 -1
  617. package/src/sap/ui/thirdparty/RequestRecorder.js +1 -1
  618. package/src/sap/ui/thirdparty/baseuri.js +1 -1
  619. package/src/sap/ui/thirdparty/caja-html-sanitizer.js +1 -1
  620. package/src/sap/ui/util/ActivityDetection.js +1 -1
  621. package/src/sap/ui/util/Mobile.js +1 -1
  622. package/src/sap/ui/util/Storage.js +2 -2
  623. package/src/sap/ui/util/XMLHelper.js +1 -1
  624. package/src/sap/ui/util/_FeatureDetection.js +1 -1
  625. package/src/sap/ui/util/defaultLinkTypes.js +1 -1
  626. package/src/sap/ui/util/isCrossOriginURL.js +1 -1
  627. package/src/sap/ui/util/openWindow.js +1 -1
  628. package/src/sap-ui-boot.js +1 -1
  629. package/src/sap-ui-core-nojQuery.js +1 -1
  630. package/src/sap-ui-core.js +1 -1
  631. package/src/sap-ui-debug.js +1 -1
  632. package/src/ui5loader-autoconfig.js +1 -1
  633. package/src/ui5loader.js +1 -1
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -538,10 +538,105 @@ sap.ui.define([
538
538
  };
539
539
 
540
540
  /**
541
- * Pattern elements
541
+ * Creates a pattern symbol object containing all needed functions to be used for formatting and parsing.
542
+ * Functions which are not given in <code>mParameters</code> are provided with a default implementation.
543
+ *
544
+ * @param {Object<string,any>} mParameters
545
+ * A parameters map for creating a pattern symbol
546
+ * @param {string} mParameters.name
547
+ * An internal unique name describing this symbol
548
+ * @param {function(Object<string, any>, sap.ui.core.date.UniversalDate, boolean, sap.ui.core.format.DateFormat,
549
+ * string): string} [mParameters.format]
550
+ * A function to format the symbol part based on a given date object
551
+ * @param {function(string, Object<string, any>, sap.ui.core.format.DateFormat, object, string): object}
552
+ * [mParameters.parse]
553
+ * A function to parse the symbol part based on a given date string
554
+ * @param {boolean|function(int): boolean} [mParameters.isNumeric]
555
+ * A boolean to describe, or a function to evaluate, whether the pattern symbol expects a
556
+ * numeric representation. For example pattern "MM" results in "02" and is therefore numeric,
557
+ * but "MMM" results in "Feb" which is not numeric.
558
+ * @returns {{name: string, format: function, parse: function, isNumeric: function}}
559
+ * A pattern symbol object
560
+ *
561
+ * @private
562
+ */
563
+ DateFormat._createPatternSymbol = function (mParameters) {
564
+ var fnIsNumeric = typeof mParameters.isNumeric === "function" && mParameters.isNumeric
565
+ // Default: false
566
+ || function () { return mParameters.isNumeric || false; };
567
+
568
+ return {
569
+ name: mParameters.name,
570
+
571
+ /**
572
+ * Formatter for a pattern symbol.
573
+ *
574
+ * @param {Object<string, any>} oField
575
+ * The date pattern field as parsed by {@link DateFormat#parseCldrDatePattern}
576
+ * @param {sap.ui.core.date.UniversalDate} oDate
577
+ * The date object to format
578
+ * @param {boolean} bUTC
579
+ * Whether the UTC option is set
580
+ * @param {sap.ui.core.format.DateFormat} oFormat
581
+ * The <code>DateFormat</code> instance
582
+ * @returns {string}
583
+ * The formatted date information for this date pattern part
584
+ */
585
+ format: mParameters.format
586
+ // not supported, but reserved
587
+ || function () { return ""; },
588
+
589
+ /**
590
+ * Parser for a pattern symbol.
591
+ *
592
+ * @param {string} sValue
593
+ * The given input
594
+ * @param {Object<string, any>} oPart
595
+ * The date pattern field as parsed by {@link DateFormat#parseCldrDatePattern}
596
+ * @param {sap.ui.core.format.DateFormat} oFormat
597
+ * The <code>DateFormat</code> instance
598
+ * @param {object} oConfig
599
+ * The configuration object for parsing the value
600
+ * @param {object} oConfig.dateValue
601
+ * The already parsed date fields
602
+ * @param {boolean} oConfig.exactLength
603
+ * Whether parsing with the exact length specified by {@link DateFormat#parseCldrDatePattern} is needed
604
+ * @param {object[]} oConfig.formatArray
605
+ * The complete format array as parsed by {@link DateFormat#parseCldrDatePattern}
606
+ * @param {int} oConfig.index
607
+ * The current index in the format array
608
+ * @param {boolean} oConfig.strict
609
+ * Whether to disallow overflows for component values of a date (see
610
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date).
611
+ * Note that the corresponding checks are just for number ranges which are possible <em>at max</em>
612
+ * without overflow; the check for day does not consider the month and year to compute the maximum
613
+ * number of days allowed.
614
+ * @param {string} sTimezone
615
+ * The IANA timezone ID
616
+ * @returns {object}
617
+ * The parsed date information for this date pattern part; could contain the property <code>valid</code>
618
+ * set to <code>false</code> if parsing was not successful
619
+ */
620
+ parse: mParameters.parse
621
+ // not supported, but reserved
622
+ || function () { return {}; },
623
+
624
+ /**
625
+ * Evaluates whether this symbol has a numeric representation.
626
+ *
627
+ * @param {int} [iDigits] The number of repetitions of the pattern symbol, e.g. <code>3</code> for "aaa"
628
+ * @returns {boolean} Whether this symbol has a numeric representation
629
+ */
630
+ isNumeric: fnIsNumeric
631
+ };
632
+ };
633
+
634
+ /**
635
+ * Provides functionality to format and parse a given pattern symbol.
636
+ * @see https://unicode.org/reports/tr35/tr35-dates.html#table-date-field-symbol-table
542
637
  */
543
638
  DateFormat.prototype.oSymbols = {
544
- "": {
639
+ "": DateFormat._createPatternSymbol({
545
640
  name: "text",
546
641
  format: function(oField, oDate, bUTC, oFormat) {
547
642
  return oField.value;
@@ -600,8 +695,8 @@ sap.ui.define([
600
695
  };
601
696
  }
602
697
  }
603
- },
604
- "G": {
698
+ }),
699
+ "G": DateFormat._createPatternSymbol({
605
700
  name: "era",
606
701
  format: function(oField, oDate, bUTC, oFormat) {
607
702
  var iEra = bUTC ? oDate.getUTCEra() : oDate.getEra();
@@ -631,8 +726,8 @@ sap.ui.define([
631
726
  valid: oParseHelper.checkValid(oPart.type, true, oFormat)
632
727
  };
633
728
  }
634
- },
635
- "y": {
729
+ }),
730
+ "y": DateFormat._createPatternSymbol({
636
731
  name: "year",
637
732
  format: function(oField, oDate, bUTC, oFormat) {
638
733
  var iYear = bUTC ? oDate.getUTCFullYear() : oDate.getFullYear();
@@ -650,15 +745,19 @@ sap.ui.define([
650
745
  return sYear.padStart(oField.digits, "0");
651
746
  },
652
747
  parse: function(sValue, oPart, oFormat, oConfig) {
653
- var sCalendarType = oFormat.oFormatOptions.calendarType;
654
- var sPart;
748
+ var iExpectedDigits, sPart, bPartInvalid,
749
+ sCalendarType = oFormat.oFormatOptions.calendarType;
750
+
655
751
  if (oPart.digits == 1) {
656
- sPart = oParseHelper.findNumbers(sValue, 4);
752
+ iExpectedDigits = 4;
657
753
  } else if (oPart.digits == 2) {
658
- sPart = oParseHelper.findNumbers(sValue, 2);
754
+ iExpectedDigits = 2;
659
755
  } else {
660
- sPart = oParseHelper.findNumbers(sValue, oPart.digits);
756
+ iExpectedDigits = oPart.digits;
661
757
  }
758
+ sPart = oParseHelper.findNumbers(sValue, iExpectedDigits);
759
+ bPartInvalid = sPart === ""
760
+ || oConfig.exactLength && sPart.length !== iExpectedDigits;
662
761
 
663
762
  var iYear = parseInt(sPart);
664
763
  // Find the right century for two-digit years
@@ -677,12 +776,13 @@ sap.ui.define([
677
776
  }
678
777
  return {
679
778
  length: sPart.length,
680
- valid: oParseHelper.checkValid(oPart.type, sPart === "", oFormat),
779
+ valid: oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat),
681
780
  year: iYear
682
781
  };
683
- }
684
- },
685
- "Y": {
782
+ },
783
+ isNumeric: true
784
+ }),
785
+ "Y": DateFormat._createPatternSymbol({
686
786
  name: "weekYear",
687
787
  format: function(oField, oDate, bUTC, oFormat) {
688
788
  var oWeek = bUTC ? oDate.getUTCWeek(oFormat.oLocale, oFormat.oFormatOptions.calendarWeekNumbering) : oDate.getWeek(oFormat.oLocale, oFormat.oFormatOptions.calendarWeekNumbering);
@@ -701,15 +801,20 @@ sap.ui.define([
701
801
  return sWeekYear.padStart(oField.digits, "0");
702
802
  },
703
803
  parse: function(sValue, oPart, oFormat, oConfig) {
704
- var sCalendarType = oFormat.oFormatOptions.calendarType;
705
- var sPart;
804
+ var iExpectedDigits, sPart, bPartInvalid,
805
+ sCalendarType = oFormat.oFormatOptions.calendarType;
806
+
706
807
  if (oPart.digits == 1) {
707
- sPart = oParseHelper.findNumbers(sValue, 4);
808
+ iExpectedDigits = 4;
708
809
  } else if (oPart.digits == 2) {
709
- sPart = oParseHelper.findNumbers(sValue, 2);
810
+ iExpectedDigits = 2;
710
811
  } else {
711
- sPart = oParseHelper.findNumbers(sValue, oPart.digits);
812
+ iExpectedDigits = oPart.digits;
712
813
  }
814
+ sPart = oParseHelper.findNumbers(sValue, iExpectedDigits);
815
+ bPartInvalid = sPart === ""
816
+ || oConfig.exactLength && sPart.length !== iExpectedDigits;
817
+
713
818
  var iYear = parseInt(sPart);
714
819
  var iWeekYear;
715
820
  // Find the right century for two-digit years
@@ -728,13 +833,14 @@ sap.ui.define([
728
833
  }
729
834
  return {
730
835
  length: sPart.length,
731
- valid: oParseHelper.checkValid(oPart.type, sPart === "", oFormat),
836
+ valid: oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat),
732
837
  year: iYear,
733
838
  weekYear: iWeekYear
734
839
  };
735
- }
736
- },
737
- "M": {
840
+ },
841
+ isNumeric: true
842
+ }),
843
+ "M": DateFormat._createPatternSymbol({
738
844
  name: "month",
739
845
  format: function(oField, oDate, bUTC, oFormat) {
740
846
  var iMonth = bUTC ? oDate.getUTCMonth() : oDate.getMonth();
@@ -749,14 +855,18 @@ sap.ui.define([
749
855
  }
750
856
  },
751
857
  parse: function(sValue, oPart, oFormat, oConfig) {
752
- var aMonthsVariants = [oFormat.aMonthsWide, oFormat.aMonthsWideSt, oFormat.aMonthsAbbrev, oFormat.aMonthsAbbrevSt, oFormat.aMonthsNarrow, oFormat.aMonthsNarrowSt];
753
- var bValid;
754
- var iMonth;
755
- var sPart;
858
+ var iMonth, sPart, bPartInvalid, bValid,
859
+ aMonthsVariants = [
860
+ oFormat.aMonthsWide, oFormat.aMonthsWideSt,
861
+ oFormat.aMonthsAbbrev, oFormat.aMonthsAbbrevSt,
862
+ oFormat.aMonthsNarrow, oFormat.aMonthsNarrowSt
863
+ ];
756
864
 
757
865
  if (oPart.digits < 3) {
758
866
  sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
759
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
867
+ bPartInvalid = sPart === ""
868
+ || oConfig.exactLength && sPart.length < 2;
869
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
760
870
  iMonth = parseInt(sPart) - 1;
761
871
  if (oConfig.strict && (iMonth > 11 || iMonth < 0)) {
762
872
  bValid = false;
@@ -779,9 +889,12 @@ sap.ui.define([
779
889
  length: sPart ? sPart.length : 0,
780
890
  valid: bValid
781
891
  };
892
+ },
893
+ isNumeric: function (iDigits) {
894
+ return iDigits < 3;
782
895
  }
783
- },
784
- "L": {
896
+ }),
897
+ "L": DateFormat._createPatternSymbol({
785
898
  name: "monthStandalone",
786
899
  format: function(oField, oDate, bUTC, oFormat) {
787
900
  var iMonth = bUTC ? oDate.getUTCMonth() : oDate.getMonth();
@@ -796,14 +909,18 @@ sap.ui.define([
796
909
  }
797
910
  },
798
911
  parse: function(sValue, oPart, oFormat, oConfig) {
799
- var aMonthsVariants = [oFormat.aMonthsWide, oFormat.aMonthsWideSt, oFormat.aMonthsAbbrev, oFormat.aMonthsAbbrevSt, oFormat.aMonthsNarrow, oFormat.aMonthsNarrowSt];
800
- var bValid;
801
- var iMonth;
802
- var sPart;
912
+ var iMonth, sPart, bPartInvalid, bValid,
913
+ aMonthsVariants = [
914
+ oFormat.aMonthsWide, oFormat.aMonthsWideSt,
915
+ oFormat.aMonthsAbbrev, oFormat.aMonthsAbbrevSt,
916
+ oFormat.aMonthsNarrow, oFormat.aMonthsNarrowSt
917
+ ];
803
918
 
804
919
  if (oPart.digits < 3) {
805
920
  sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
806
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
921
+ bPartInvalid = sPart === ""
922
+ || oConfig.exactLength && sPart.length < 2;
923
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
807
924
  iMonth = parseInt(sPart) - 1;
808
925
  if (oConfig.strict && (iMonth > 11 || iMonth < 0)) {
809
926
  bValid = false;
@@ -826,9 +943,12 @@ sap.ui.define([
826
943
  length: sPart ? sPart.length : 0,
827
944
  valid: bValid
828
945
  };
946
+ },
947
+ isNumeric: function (iDigits) {
948
+ return iDigits < 3;
829
949
  }
830
- },
831
- "w": {
950
+ }),
951
+ "w": DateFormat._createPatternSymbol({
832
952
  name: "weekInYear",
833
953
  format: function(oField, oDate, bUTC, oFormat) {
834
954
  var oWeek = bUTC ? oDate.getUTCWeek(oFormat.oLocale, oFormat.oFormatOptions.calendarWeekNumbering) : oDate.getWeek(oFormat.oLocale, oFormat.oFormatOptions.calendarWeekNumbering);
@@ -842,16 +962,16 @@ sap.ui.define([
842
962
  return sWeek;
843
963
  },
844
964
  parse: function(sValue, oPart, oFormat, oConfig) {
845
- var bValid;
846
- var sPart;
847
- var iWeek;
848
- var iLength = 0;
965
+ var sPart, bPartInvalid, bValid, iWeek,
966
+ iLength = 0;
849
967
 
850
968
  if (oPart.digits < 3) {
851
969
  sPart = oParseHelper.findNumbers(sValue, 2);
852
970
  iLength = sPart.length;
853
971
  iWeek = parseInt(sPart) - 1;
854
- bValid = oParseHelper.checkValid(oPart.type, !sPart, oFormat);
972
+ bPartInvalid = !sPart
973
+ || oConfig.exactLength && iLength < 2;
974
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
855
975
  } else {
856
976
  sPart = oFormat.oLocaleData.getCalendarWeek(oPart.digits === 3 ? "narrow" : "wide");
857
977
  sPart = sPart.replace("{0}", "[0-9]+");
@@ -870,37 +990,30 @@ sap.ui.define([
870
990
  valid: bValid,
871
991
  week: iWeek
872
992
  };
873
- }
874
- },
875
- "W": {
876
- name: "weekInMonth",
877
- format: function(oField, oDate, bUTC, oFormat) {
878
- // not supported
879
- return "";
880
993
  },
881
- parse: function() {
882
- return {};
883
- }
884
- },
885
- "D": {
886
- name: "dayInYear",
887
- format: function(oField, oDate, bUTC, oFormat) {
888
-
889
- },
890
- parse: function() {
891
- return {};
892
- }
893
- },
894
- "d": {
994
+ isNumeric: function (iDigits) {
995
+ return iDigits < 3;
996
+ }
997
+ }),
998
+ "W": DateFormat._createPatternSymbol({
999
+ name: "weekInMonth"
1000
+ }),
1001
+ "D": DateFormat._createPatternSymbol({
1002
+ name: "dayInYear"
1003
+ }),
1004
+ "d": DateFormat._createPatternSymbol({
895
1005
  name: "day",
896
1006
  format: function(oField, oDate, bUTC, oFormat) {
897
1007
  var iDate = bUTC ? oDate.getUTCDate() : oDate.getDate();
898
1008
  return String(iDate).padStart(oField.digits, "0");
899
1009
  },
900
1010
  parse: function(sValue, oPart, oFormat, oConfig) {
901
- var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
902
- var bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
903
- var iDay = parseInt(sPart);
1011
+ var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2)),
1012
+ bPartInvalid = sPart === ""
1013
+ || oConfig.exactLength && sPart.length < 2,
1014
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat),
1015
+ iDay = parseInt(sPart);
1016
+
904
1017
  if (oConfig.strict && (iDay > 31 || iDay < 1)) {
905
1018
  bValid = false;
906
1019
  }
@@ -909,9 +1022,10 @@ sap.ui.define([
909
1022
  length: sPart.length,
910
1023
  valid: bValid
911
1024
  };
912
- }
913
- },
914
- "Q": {
1025
+ },
1026
+ isNumeric: true
1027
+ }),
1028
+ "Q": DateFormat._createPatternSymbol({
915
1029
  name: "quarter",
916
1030
  format: function(oField, oDate, bUTC, oFormat) {
917
1031
  var iQuarter = bUTC ? oDate.getUTCQuarter() : oDate.getQuarter();
@@ -926,14 +1040,14 @@ sap.ui.define([
926
1040
  }
927
1041
  },
928
1042
  parse: function(sValue, oPart, oFormat, oConfig) {
929
- var bValid;
930
- var iQuarter;
931
- var sPart;
1043
+ var sPart, bPartInvalid, iQuarter, bValid;
932
1044
  var aQuartersVariants = [oFormat.aQuartersWide, oFormat.aQuartersWideSt, oFormat.aQuartersAbbrev, oFormat.aQuartersAbbrevSt, oFormat.aQuartersNarrow, oFormat.aQuartersNarrowSt];
933
1045
 
934
1046
  if (oPart.digits < 3) {
935
1047
  sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
936
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
1048
+ bPartInvalid = sPart === ""
1049
+ || oConfig.exactLength && sPart.length < 2;
1050
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
937
1051
  iQuarter = parseInt(sPart) - 1;
938
1052
  if (oConfig.strict && iQuarter > 3) {
939
1053
  bValid = false;
@@ -957,9 +1071,12 @@ sap.ui.define([
957
1071
  quarter: iQuarter,
958
1072
  valid: bValid
959
1073
  };
1074
+ },
1075
+ isNumeric: function (iDigits) {
1076
+ return iDigits < 3;
960
1077
  }
961
- },
962
- "q": {
1078
+ }),
1079
+ "q": DateFormat._createPatternSymbol({
963
1080
  name: "quarterStandalone",
964
1081
  format: function(oField, oDate, bUTC, oFormat) {
965
1082
  var iQuarter = bUTC ? oDate.getUTCQuarter() : oDate.getQuarter();
@@ -974,14 +1091,14 @@ sap.ui.define([
974
1091
  }
975
1092
  },
976
1093
  parse: function(sValue, oPart, oFormat, oConfig) {
977
- var bValid;
978
- var iQuarter;
979
- var sPart;
1094
+ var sPart, bPartInvalid, iQuarter, bValid;
980
1095
  var aQuartersVariants = [oFormat.aQuartersWide, oFormat.aQuartersWideSt, oFormat.aQuartersAbbrev, oFormat.aQuartersAbbrevSt, oFormat.aQuartersNarrow, oFormat.aQuartersNarrowSt];
981
1096
 
982
1097
  if (oPart.digits < 3) {
983
1098
  sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
984
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
1099
+ bPartInvalid = sPart === ""
1100
+ || oConfig.exactLength && sPart.length < 2;
1101
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
985
1102
  iQuarter = parseInt(sPart) - 1;
986
1103
  if (oConfig.strict && iQuarter > 3) {
987
1104
  bValid = false;
@@ -1005,19 +1122,15 @@ sap.ui.define([
1005
1122
  quarter: iQuarter,
1006
1123
  valid: bValid
1007
1124
  };
1008
- }
1009
- },
1010
- "F": {
1011
- name: "dayOfWeekInMonth",
1012
- format: function(oField, oDate, bUTC, oFormat) {
1013
- // not supported
1014
- return "";
1015
1125
  },
1016
- parse: function() {
1017
- return {};
1018
- }
1019
- },
1020
- "E": {
1126
+ isNumeric: function (iDigits) {
1127
+ return iDigits < 3;
1128
+ }
1129
+ }),
1130
+ "F": DateFormat._createPatternSymbol({
1131
+ name: "dayOfWeekInMonth"
1132
+ }),
1133
+ "E": DateFormat._createPatternSymbol({
1021
1134
  name: "dayNameInWeek", //Day of week name, format style.
1022
1135
  format: function(oField, oDate, bUTC, oFormat) {
1023
1136
  var iDay = bUTC ? oDate.getUTCDay() : oDate.getDay();
@@ -1046,8 +1159,8 @@ sap.ui.define([
1046
1159
  }
1047
1160
  }
1048
1161
  }
1049
- },
1050
- "c": {
1162
+ }),
1163
+ "c": DateFormat._createPatternSymbol({
1051
1164
  name: "dayNameInWeekStandalone",
1052
1165
  format: function(oField, oDate, bUTC, oFormat) {
1053
1166
  var iDay = bUTC ? oDate.getUTCDay() : oDate.getDay();
@@ -1075,23 +1188,26 @@ sap.ui.define([
1075
1188
  }
1076
1189
  }
1077
1190
  }
1078
- },
1079
- "u": {
1191
+ }),
1192
+ "u": DateFormat._createPatternSymbol({
1080
1193
  name: "dayNumberOfWeek",
1081
1194
  format: function(oField, oDate, bUTC, oFormat) {
1082
1195
  var iDay = bUTC ? oDate.getUTCDay() : oDate.getDay();
1083
1196
  return oFormat._adaptDayOfWeek(iDay);
1084
1197
  },
1085
1198
  parse: function(sValue, oPart, oFormat, oConfig) {
1086
- var sPart = oParseHelper.findNumbers(sValue, oPart.digits);
1199
+ var sPart = oParseHelper.findNumbers(sValue, oPart.digits),
1200
+ bPartInvalid = oConfig.exactLength && sPart.length !== oPart.digits;
1087
1201
 
1088
1202
  return {
1089
1203
  dayNumberOfWeek: parseInt(sPart),
1090
- length: sPart.length
1204
+ length: sPart.length,
1205
+ valid: oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat)
1091
1206
  };
1092
- }
1093
- },
1094
- "a": {
1207
+ },
1208
+ isNumeric: true
1209
+ }),
1210
+ "a": DateFormat._createPatternSymbol({
1095
1211
  name: "amPmMarker",
1096
1212
  format: function(oField, oDate, bUTC, oFormat) {
1097
1213
  var iDayPeriod = bUTC ? oDate.getUTCDayPeriod() : oDate.getDayPeriod();
@@ -1129,19 +1245,19 @@ sap.ui.define([
1129
1245
  length: iLength
1130
1246
  };
1131
1247
  }
1132
- },
1133
- "H": {
1248
+ }),
1249
+ "H": DateFormat._createPatternSymbol({
1134
1250
  name: "hour0_23",
1135
1251
  format: function(oField, oDate, bUTC, oFormat) {
1136
1252
  var iHours = bUTC ? oDate.getUTCHours() : oDate.getHours();
1137
1253
  return String(iHours).padStart(oField.digits, "0");
1138
1254
  },
1139
1255
  parse: function(sValue, oPart, oFormat, oConfig) {
1140
- var bValid;
1141
- var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
1142
- var iHours = parseInt(sPart);
1143
-
1144
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
1256
+ var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2)),
1257
+ iHours = parseInt(sPart),
1258
+ bPartInvalid = sPart === ""
1259
+ || oConfig.exactLength && sPart.length < 2,
1260
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
1145
1261
 
1146
1262
  if (oConfig.strict && iHours > 23) {
1147
1263
  bValid = false;
@@ -1152,9 +1268,10 @@ sap.ui.define([
1152
1268
  length: sPart.length,
1153
1269
  valid: bValid
1154
1270
  };
1155
- }
1156
- },
1157
- "k": {
1271
+ },
1272
+ isNumeric: true
1273
+ }),
1274
+ "k": DateFormat._createPatternSymbol({
1158
1275
  name: "hour1_24",
1159
1276
  format: function(oField, oDate, bUTC, oFormat) {
1160
1277
  var iHours = bUTC ? oDate.getUTCHours() : oDate.getHours();
@@ -1163,11 +1280,11 @@ sap.ui.define([
1163
1280
  return sHours.padStart(oField.digits, "0");
1164
1281
  },
1165
1282
  parse: function(sValue, oPart, oFormat, oConfig) {
1166
- var bValid;
1167
- var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
1168
- var iHours = parseInt(sPart);
1169
-
1170
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
1283
+ var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2)),
1284
+ iHours = parseInt(sPart),
1285
+ bPartInvalid = sPart === ""
1286
+ || oConfig.exactLength && sPart.length < 2,
1287
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
1171
1288
 
1172
1289
  if (iHours == 24) {
1173
1290
  iHours = 0;
@@ -1181,9 +1298,10 @@ sap.ui.define([
1181
1298
  length: sPart.length,
1182
1299
  valid: bValid
1183
1300
  };
1184
- }
1185
- },
1186
- "K": {
1301
+ },
1302
+ isNumeric: true
1303
+ }),
1304
+ "K": DateFormat._createPatternSymbol({
1187
1305
  name: "hour0_11",
1188
1306
  format: function(oField, oDate, bUTC, oFormat) {
1189
1307
  var iHours = bUTC ? oDate.getUTCHours() : oDate.getHours();
@@ -1192,11 +1310,11 @@ sap.ui.define([
1192
1310
  return sHours.padStart(oField.digits, "0");
1193
1311
  },
1194
1312
  parse: function(sValue, oPart, oFormat, oConfig) {
1195
- var bValid;
1196
- var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
1197
- var iHours = parseInt(sPart);
1198
-
1199
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
1313
+ var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2)),
1314
+ iHours = parseInt(sPart),
1315
+ bPartInvalid = sPart === ""
1316
+ || oConfig.exactLength && sPart.length < 2,
1317
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
1200
1318
 
1201
1319
  if (oConfig.strict && iHours > 11) {
1202
1320
  bValid = false;
@@ -1207,9 +1325,10 @@ sap.ui.define([
1207
1325
  length: sPart.length,
1208
1326
  valid: bValid
1209
1327
  };
1210
- }
1211
- },
1212
- "h": {
1328
+ },
1329
+ isNumeric: true
1330
+ }),
1331
+ "h": DateFormat._createPatternSymbol({
1213
1332
  name: "hour1_12",
1214
1333
  format: function(oField, oDate, bUTC, oFormat) {
1215
1334
  var iHours = bUTC ? oDate.getUTCHours() : oDate.getHours();
@@ -1225,11 +1344,13 @@ sap.ui.define([
1225
1344
  return sHours.padStart(oField.digits, "0");
1226
1345
  },
1227
1346
  parse: function(sValue, oPart, oFormat, oConfig) {
1228
- var bPM = oConfig.dateValue.pm;
1229
- var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
1230
- var iHours = parseInt(sPart);
1347
+ var bPM = oConfig.dateValue.pm,
1348
+ sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2)),
1349
+ iHours = parseInt(sPart),
1350
+ bPartInvalid = sPart === ""
1351
+ || oConfig.exactLength && sPart.length < 2,
1352
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
1231
1353
 
1232
- var bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
1233
1354
 
1234
1355
  if (iHours == 12) {
1235
1356
  iHours = 0;
@@ -1248,20 +1369,21 @@ sap.ui.define([
1248
1369
  pm: bPM,
1249
1370
  valid: bValid
1250
1371
  };
1251
- }
1252
- },
1253
- "m": {
1372
+ },
1373
+ isNumeric: true
1374
+ }),
1375
+ "m": DateFormat._createPatternSymbol({
1254
1376
  name: "minute",
1255
1377
  format: function(oField, oDate, bUTC, oFormat) {
1256
1378
  var iMinutes = bUTC ? oDate.getUTCMinutes() : oDate.getMinutes();
1257
1379
  return String(iMinutes).padStart(oField.digits, "0");
1258
1380
  },
1259
1381
  parse: function(sValue, oPart, oFormat, oConfig) {
1260
- var bValid;
1261
- var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
1262
- var iMinutes = parseInt(sPart);
1263
-
1264
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
1382
+ var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2)),
1383
+ iMinutes = parseInt(sPart),
1384
+ bPartInvalid = sPart === ""
1385
+ || oConfig.exactLength && sPart.length < 2,
1386
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
1265
1387
 
1266
1388
  if (oConfig.strict && iMinutes > 59) {
1267
1389
  bValid = false;
@@ -1272,20 +1394,22 @@ sap.ui.define([
1272
1394
  minute: iMinutes,
1273
1395
  valid: bValid
1274
1396
  };
1275
- }
1276
- },
1277
- "s": {
1397
+ },
1398
+ isNumeric: true
1399
+ }),
1400
+ "s": DateFormat._createPatternSymbol({
1278
1401
  name: "second",
1279
1402
  format: function(oField, oDate, bUTC, oFormat) {
1280
1403
  var iSeconds = bUTC ? oDate.getUTCSeconds() : oDate.getSeconds();
1281
1404
  return String(iSeconds).padStart(oField.digits, "0");
1282
1405
  },
1283
1406
  parse: function(sValue, oPart, oFormat, oConfig) {
1284
- var bValid;
1285
- var sPart = oParseHelper.findNumbers(sValue, Math.max(oPart.digits, 2));
1286
- var iSeconds = parseInt(sPart);
1287
-
1288
- bValid = oParseHelper.checkValid(oPart.type, sPart === "", oFormat);
1407
+ var iExpectedDigits = Math.max(oPart.digits, 2),
1408
+ sPart = oParseHelper.findNumbers(sValue, iExpectedDigits),
1409
+ bPartInvalid = sPart === ""
1410
+ || oConfig.exactLength && sPart.length < iExpectedDigits,
1411
+ iSeconds = parseInt(sPart),
1412
+ bValid = oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat);
1289
1413
 
1290
1414
  if (oConfig.strict && iSeconds > 59) {
1291
1415
  bValid = false;
@@ -1296,9 +1420,10 @@ sap.ui.define([
1296
1420
  second: iSeconds,
1297
1421
  valid: bValid
1298
1422
  };
1299
- }
1300
- },
1301
- "S": {
1423
+ },
1424
+ isNumeric: true
1425
+ }),
1426
+ "S": DateFormat._createPatternSymbol({
1302
1427
  name: "fractionalsecond",
1303
1428
  format: function(oField, oDate, bUTC, oFormat) {
1304
1429
  var iMilliseconds = bUTC ? oDate.getUTCMilliseconds() : oDate.getMilliseconds();
@@ -1309,8 +1434,9 @@ sap.ui.define([
1309
1434
  return sFractionalseconds;
1310
1435
  },
1311
1436
  parse: function(sValue, oPart, oFormat, oConfig) {
1312
- var sPart = oParseHelper.findNumbers(sValue, oPart.digits);
1313
- var iLength = sPart.length;
1437
+ var sPart = oParseHelper.findNumbers(sValue, oPart.digits),
1438
+ iLength = sPart.length,
1439
+ bPartInvalid = oConfig.exactLength && iLength < oPart.digits;
1314
1440
 
1315
1441
  sPart = sPart.substr(0, 3);
1316
1442
  sPart = sPart.padEnd(3, "0");
@@ -1319,11 +1445,13 @@ sap.ui.define([
1319
1445
 
1320
1446
  return {
1321
1447
  length: iLength,
1322
- millisecond: iMilliseconds
1448
+ millisecond: iMilliseconds,
1449
+ valid: oParseHelper.checkValid(oPart.type, bPartInvalid, oFormat)
1323
1450
  };
1324
- }
1325
- },
1326
- "z": {
1451
+ },
1452
+ isNumeric: true
1453
+ }),
1454
+ "z": DateFormat._createPatternSymbol({
1327
1455
  name: "timezoneGeneral",
1328
1456
  format: function(oField, oDate, bUTC, oFormat) {
1329
1457
  //TODO getTimezoneLong and getTimezoneShort does not exist on Date object
@@ -1381,8 +1509,8 @@ sap.ui.define([
1381
1509
  tzDiff: iTZDiff
1382
1510
  };
1383
1511
  }
1384
- },
1385
- "Z": {
1512
+ }),
1513
+ "Z": DateFormat._createPatternSymbol({
1386
1514
  name: "timezoneRFC822",
1387
1515
  format: function(oField, oDate, bUTC, oFormat) {
1388
1516
  var iTZOffset = Math.abs(oDate.getTimezoneOffset());
@@ -1402,8 +1530,8 @@ sap.ui.define([
1402
1530
  parse: function(sValue, oPart, oFormat, oConfig) {
1403
1531
  return oParseHelper.parseTZ(sValue, false);
1404
1532
  }
1405
- },
1406
- "X": {
1533
+ }),
1534
+ "X": DateFormat._createPatternSymbol({
1407
1535
  name: "timezoneISO8601",
1408
1536
  format: function(oField, oDate, bUTC, oFormat) {
1409
1537
  var iTZOffset = Math.abs(oDate.getTimezoneOffset());
@@ -1433,7 +1561,7 @@ sap.ui.define([
1433
1561
  return oParseHelper.parseTZ(sValue, true);
1434
1562
  }
1435
1563
  }
1436
- }
1564
+ })
1437
1565
  };
1438
1566
 
1439
1567
  DateFormat.prototype._format = function(oJSDate, bUTC) {
@@ -1623,26 +1751,30 @@ sap.ui.define([
1623
1751
  };
1624
1752
 
1625
1753
  DateFormat.prototype._parse = function(sValue, aFormatArray, bUTC, bStrict) {
1626
- var iIndex = 0,
1627
- oPart, sSubValue, oResult;
1628
-
1629
- var oDateValue = {
1630
- valid: true
1631
- };
1754
+ var oNextPart, oPart, oPrevPart, oResult, sSubValue,
1755
+ oDateValue = {
1756
+ valid: true
1757
+ },
1758
+ iIndex = 0,
1759
+ oParseConf = {
1760
+ formatArray: aFormatArray,
1761
+ dateValue: oDateValue,
1762
+ strict: bStrict
1763
+ },
1764
+ that = this;
1632
1765
 
1633
- var oParseConf = {
1634
- formatArray: aFormatArray,
1635
- dateValue: oDateValue,
1636
- strict: bStrict
1637
- };
1766
+ function getSymbol(oPart0) { return that.oSymbols[oPart0.symbol || ""]; }
1767
+ function isNumeric(oPart0) { return !!oPart0 && getSymbol(oPart0).isNumeric(oPart0.digits); }
1638
1768
 
1639
1769
  for (var i = 0; i < aFormatArray.length; i++) {
1640
1770
  sSubValue = sValue.substr(iIndex);
1641
1771
  oPart = aFormatArray[i];
1642
-
1772
+ oPrevPart = aFormatArray[i - 1];
1773
+ oNextPart = aFormatArray[i + 1];
1643
1774
  oParseConf.index = i;
1775
+ oParseConf.exactLength = isNumeric(oPart) && (isNumeric(oPrevPart) || isNumeric(oNextPart));
1644
1776
 
1645
- oResult = this.oSymbols[oPart.symbol || ""].parse(sSubValue, oPart, this, oParseConf) || {} ;
1777
+ oResult = getSymbol(oPart).parse(sSubValue, oPart, this, oParseConf) || {};
1646
1778
 
1647
1779
  oDateValue = jQuery.extend(oDateValue, oResult);
1648
1780