@openui5/sap.ui.core 1.133.1 → 1.135.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/.dtsgenrc +32 -0
- package/.reuse/dep5 +0 -7
- package/THIRDPARTY.txt +2 -23
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/Event.js +1 -1
- package/src/sap/base/Eventing.js +1 -1
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/LanguageFallback.js +344 -0
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/Localization.js +9 -4
- package/src/sap/base/i18n/ResourceBundle.js +40 -313
- package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
- package/src/sap/base/util/LoaderExtensions.js +2 -8
- package/src/sap/base/util/mixedFetch.js +0 -1
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/base/util/syncFetch.js +0 -1
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +3 -3
- package/src/sap/ui/VersionInfo.js +24 -9
- package/src/sap/ui/base/Event.js +1 -1
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +121 -101
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/base/SyncPromise.js +17 -1
- package/src/sap/ui/core/.library +1 -6
- package/src/sap/ui/core/AppCacheBuster.js +4 -9
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +52 -6
- package/src/sap/ui/core/ComponentContainer.js +4 -2
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +1 -1
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +11 -3
- package/src/sap/ui/core/CustomData.js +2 -2
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +14 -35
- package/src/sap/ui/core/ElementHooks.js +35 -0
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/Fragment.js +34 -11
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -1
- package/src/sap/ui/core/IconPool.js +20 -4
- package/src/sap/ui/core/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -1
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +1 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/Lib.js +12 -32
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +67 -93
- package/src/sap/ui/core/Manifest.js +5 -3
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/RenderManager.js +1 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/ShortcutHintsMixin.js +9 -0
- package/src/sap/ui/core/Theming.js +98 -1
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +1 -1
- package/src/sap/ui/core/UIComponent.js +6 -3
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +5 -1
- package/src/sap/ui/core/_CommandPool.js +80 -0
- package/src/sap/ui/core/boot/KeyboardInteractionEndpoint.js +124 -0
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragAndDrop.js +14 -7
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/fieldhelp/FieldHelp.js +260 -116
- package/src/sap/ui/core/fieldhelp/FieldHelpCustomData.js +0 -4
- package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +2 -0
- package/src/sap/ui/core/format/FormatUtils.js +1 -1
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/i18n/interaction.xml +31 -0
- package/src/sap/ui/core/interaction/KeyboardInteractionDisplay.js +332 -0
- package/src/sap/ui/core/library.js +35 -3
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/messagebundle.properties +14 -0
- package/src/sap/ui/core/messagebundle_ko.properties +1 -1
- package/src/sap/ui/core/messagebundle_ro.properties +2 -2
- package/src/sap/ui/core/messagebundle_th.properties +1 -1
- package/src/sap/ui/core/messagebundle_vi.properties +2 -2
- package/src/sap/ui/core/mvc/Controller.js +25 -11
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +43 -18
- package/src/sap/ui/core/mvc/XMLView.js +20 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +1 -1
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/support/techinfo/moduleTreeHelper.js +12 -0
- package/src/sap/ui/core/support/usage/EventBroadcaster.js +5 -5
- package/src/sap/ui/core/themes/base/base.less +398 -23
- package/src/sap/ui/core/themes/base/global.less +7 -0
- package/src/sap/ui/core/themes/base/icons/favicon.ico +0 -0
- package/src/sap/ui/core/themes/base/skeleton.less +11 -4
- package/src/sap/ui/core/themes/sap_hcb/.theming +2 -1
- package/src/sap/ui/core/theming/Parameters.js +1 -6
- package/src/sap/ui/core/theming/ThemeHelper.js +13 -0
- package/src/sap/ui/core/theming/ThemeManager.js +1 -1
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/webc/WebComponent.js +1 -1
- package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +5 -1
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +1 -1
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +1 -1
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +51 -13
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +46 -14
- package/src/sap/ui/model/odata/ODataMetadata.js +6 -3
- package/src/sap/ui/model/odata/ODataModel.js +2 -2
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +4 -3
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +2 -2
- package/src/sap/ui/model/odata/v2/ODataModel.js +59 -36
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +92 -40
- package/src/sap/ui/model/odata/v4/ODataBinding.js +22 -15
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -7
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +197 -58
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +65 -6
- package/src/sap/ui/model/odata/v4/ODataModel.js +65 -32
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +9 -5
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +5 -5
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +49 -7
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +9 -9
- package/src/sap/ui/model/odata/v4/lib/_Batch.js +5 -1
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +107 -15
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +33 -17
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +18 -1
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/BranchTracking.js +1 -1
- package/src/sap/ui/test/TestUtils.js +82 -14
- package/src/sap/ui/test/actions/EnterText.js +2 -20
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/starter/_setupAndStart.js +11 -2
- package/src/sap/ui/test/starter/_utils.js +0 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader.js +22 -3
- package/test/sap/ui/qunit/TestRunner.js +4 -1
- package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +0 -5
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<interaction-documentation
|
|
2
|
+
xmlns="http://schemas.sap.com/sapui5/extension/sap.ui.core.InteractionDocumentation/1"
|
|
3
|
+
library="sap.ui.core">
|
|
4
|
+
<control-interactions>
|
|
5
|
+
<control name="sap.ui.core.Control"></control>
|
|
6
|
+
<interaction>
|
|
7
|
+
<kbd>Tab</kbd>
|
|
8
|
+
<description>
|
|
9
|
+
<p>Moves focus to the next element in the tab chain.</p>
|
|
10
|
+
</description>
|
|
11
|
+
</interaction>
|
|
12
|
+
<interaction>
|
|
13
|
+
<kbd>Shift + Tab</kbd>
|
|
14
|
+
<description>
|
|
15
|
+
<p>Moves focus to the previous element in the tab chain.</p>
|
|
16
|
+
</description>
|
|
17
|
+
</interaction>
|
|
18
|
+
<interaction>
|
|
19
|
+
<kbd>F6</kbd>
|
|
20
|
+
<description>
|
|
21
|
+
<p>Moves focus to first element of the next UI group (F6 group) in the tab chain.</p>
|
|
22
|
+
</description>
|
|
23
|
+
</interaction>
|
|
24
|
+
<interaction>
|
|
25
|
+
<kbd>Shift + F6</kbd>
|
|
26
|
+
<description>
|
|
27
|
+
<p>Moves focus to first element of the previous UI group (F6 group) in the tab chain.</p>
|
|
28
|
+
</description>
|
|
29
|
+
</interaction>
|
|
30
|
+
</control-interactions>
|
|
31
|
+
</interaction-documentation>
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* OpenUI5
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
|
+
*/
|
|
6
|
+
sap.ui.define([
|
|
7
|
+
"sap/base/Log",
|
|
8
|
+
"sap/base/i18n/LanguageFallback",
|
|
9
|
+
"sap/base/i18n/Localization",
|
|
10
|
+
"sap/ui/Device",
|
|
11
|
+
"sap/ui/core/Element",
|
|
12
|
+
"sap/ui/core/LabelEnablement",
|
|
13
|
+
"sap/ui/core/Lib",
|
|
14
|
+
"sap/ui/util/XMLHelper"
|
|
15
|
+
], function(Log, LanguageFallback, Localization, Device, Element, LabelEnablement, Library, XMLHelper) {
|
|
16
|
+
"use strict";
|
|
17
|
+
|
|
18
|
+
// Endpoints for sending messages
|
|
19
|
+
const POST_MESSAGE_ENDPOINT_UPDATE = "sap.ui.interaction.UpdateDisplay";
|
|
20
|
+
|
|
21
|
+
// Version number for the protocol
|
|
22
|
+
const VERSION_NUMBER = "1.0.0";
|
|
23
|
+
|
|
24
|
+
const oProtocol = {
|
|
25
|
+
_version: VERSION_NUMBER,
|
|
26
|
+
elements: [],
|
|
27
|
+
docs: {}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Cache to store loaded XML documents
|
|
31
|
+
const oInteractionXMLCache = new Map();
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Retrieves the command information for a given control.
|
|
35
|
+
* @param {sap.ui.core.Control} oControl The control to analyze.
|
|
36
|
+
* @return {Array} List of command information objects.
|
|
37
|
+
*/
|
|
38
|
+
const getCommandInfosFor = (oControl) => {
|
|
39
|
+
const aCommandInfos = [];
|
|
40
|
+
const aDependents = oControl.getDependents?.() || [];
|
|
41
|
+
|
|
42
|
+
for (const oDependent of aDependents) {
|
|
43
|
+
if (oDependent.isA("sap.ui.core.CommandExecution") && oDependent.getVisible()) {
|
|
44
|
+
const oCommandInfo = oDependent._getCommandInfo();
|
|
45
|
+
|
|
46
|
+
aCommandInfos.push({
|
|
47
|
+
name: oDependent.getCommand(),
|
|
48
|
+
kbd: Device.os.macintosh ? [oCommandInfo.shortcut.replace("Ctrl", "Cmd")] : [oCommandInfo.shortcut],
|
|
49
|
+
description: oCommandInfo.description
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return aCommandInfos;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Retrieves the label text for a given control.
|
|
58
|
+
* @param {sap.ui.core.Control} oControl The control to analayze.
|
|
59
|
+
* @return {string} The label associated with the control.
|
|
60
|
+
*/
|
|
61
|
+
const getLabelFor = (oControl) => {
|
|
62
|
+
const sDisplayControlId = oControl.getFieldHelpDisplay();
|
|
63
|
+
const oLabelControl = sDisplayControlId
|
|
64
|
+
? Element.getElementById(sDisplayControlId)
|
|
65
|
+
: oControl;
|
|
66
|
+
|
|
67
|
+
let sAccessibilityInfoLabel = null;
|
|
68
|
+
|
|
69
|
+
const oAccessibilityInfo = oControl.getAccessibilityInfo?.();
|
|
70
|
+
if (oAccessibilityInfo) {
|
|
71
|
+
sAccessibilityInfoLabel = oAccessibilityInfo.description || oAccessibilityInfo.children?.[0]?.getAccessibilityInfo?.()?.description || null;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (!sAccessibilityInfoLabel) {
|
|
75
|
+
const ARIA_LABELLED_BY_SELECTOR = "[aria-labelledby]";
|
|
76
|
+
const ARIA_LABELLED_BY_ATTR = "aria-labelledby";
|
|
77
|
+
|
|
78
|
+
const oDomRef = oControl.getDomRef();
|
|
79
|
+
|
|
80
|
+
let sAriaLabelledById = oDomRef.getAttribute(ARIA_LABELLED_BY_ATTR);
|
|
81
|
+
if (!sAriaLabelledById) {
|
|
82
|
+
const oFirstAriaLabelledBy = oDomRef.querySelector(ARIA_LABELLED_BY_SELECTOR);
|
|
83
|
+
const activeElement = document.activeElement;
|
|
84
|
+
|
|
85
|
+
if (oFirstAriaLabelledBy?.contains(activeElement)) {
|
|
86
|
+
sAriaLabelledById = oFirstAriaLabelledBy.getAttribute(ARIA_LABELLED_BY_ATTR);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
sAccessibilityInfoLabel = sAriaLabelledById
|
|
91
|
+
? document.getElementById(sAriaLabelledById)?.textContent
|
|
92
|
+
: null;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return LabelEnablement._getLabelTexts(oLabelControl)[0] || sAccessibilityInfoLabel || oControl.getMetadata().getName();
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Load and access interaction-documentation for library
|
|
100
|
+
* @param {string} sLibrary The library to load the interaction document
|
|
101
|
+
* @return {null|XMLDocument} The library's interaction document or 'null'.
|
|
102
|
+
*/
|
|
103
|
+
const loadInteractionXMLFor = async (sLibrary) => {
|
|
104
|
+
if (oInteractionXMLCache.has(sLibrary)) {
|
|
105
|
+
return oInteractionXMLCache.get(sLibrary);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const sLanguage = Localization.getLanguage();
|
|
109
|
+
const aFallbackChain = LanguageFallback.getFallbackLocales(sLanguage);
|
|
110
|
+
let oInteractionXML = null;
|
|
111
|
+
|
|
112
|
+
while (aFallbackChain.length) {
|
|
113
|
+
const sLocale = aFallbackChain.shift();
|
|
114
|
+
const sFileName = sLocale ? `interaction_${sLocale}.xml` : `interaction.xml`;
|
|
115
|
+
const sResource = sap.ui.require.toUrl(`${sLibrary.replace(/\./g, "/")}/i18n/${sFileName}`);
|
|
116
|
+
|
|
117
|
+
try {
|
|
118
|
+
const oResponse = await fetch(sResource);
|
|
119
|
+
if (!oResponse.ok) {
|
|
120
|
+
const statusMessage = oResponse.statusText || `HTTP status ${oResponse.status}`;
|
|
121
|
+
throw new Error(`Failed to load resource: ${sResource} - ${statusMessage}`);
|
|
122
|
+
}
|
|
123
|
+
const text = await oResponse.text();
|
|
124
|
+
oInteractionXML = XMLHelper.parse(text);
|
|
125
|
+
|
|
126
|
+
if (oInteractionXML) {
|
|
127
|
+
// cache the loaded interaction document
|
|
128
|
+
oInteractionXMLCache.set(sLibrary, oInteractionXML);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
} catch (error) {
|
|
132
|
+
Log.error(`Error loading interaction XML for library ${sLibrary}:`, error);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return oInteractionXML;
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Extracts interaction nodes from the given interaction document and retrieves "kbd" and "description" tags.
|
|
141
|
+
*
|
|
142
|
+
* @param {string} sControlName The control name.
|
|
143
|
+
* @param {XMLDocument} oInteractionXML The interaction document containing the interaction details.
|
|
144
|
+
* @return {Array} An array containing the control's interaction details, including "kbd" and "description".
|
|
145
|
+
*/
|
|
146
|
+
const getInteractions = (sControlName, oInteractionXML) => {
|
|
147
|
+
const oInteractionDoc = oInteractionXML.documentElement;
|
|
148
|
+
if (!oInteractionDoc) {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const oControlNode = Array.from(oInteractionDoc.querySelectorAll(`control[name]`)).find((oNode) => {
|
|
153
|
+
return oNode.getAttribute("name") === sControlName;
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
if (!oControlNode) {
|
|
157
|
+
return [];
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return Array.from(oInteractionDoc.querySelectorAll("interaction")).map((oInteractionNode) => ({
|
|
161
|
+
kbd: Array.from(oInteractionNode.children).filter((child) => child.tagName === "kbd").map((kbd) => kbd.textContent.trim()),
|
|
162
|
+
description: oInteractionNode.querySelector("description")?.innerHTML || ""
|
|
163
|
+
}));
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Retrieves the interaction documentation for the given control.
|
|
168
|
+
* @param {sap.ui.core.Control} oControl The control to analyze.
|
|
169
|
+
* @return {Array} List of interaction documentation.
|
|
170
|
+
*/
|
|
171
|
+
const getInteractionDocFor = async (oControl) => {
|
|
172
|
+
let sLibrary = null;
|
|
173
|
+
let oCurrent = oControl;
|
|
174
|
+
|
|
175
|
+
// Traverse up the control hierarchy to find the library name
|
|
176
|
+
while (oCurrent && !sLibrary) {
|
|
177
|
+
sLibrary = oCurrent.getMetadata().getLibraryName();
|
|
178
|
+
oCurrent = oCurrent.getParent();
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (!sLibrary) {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const oLibrary = Library._get(sLibrary);
|
|
186
|
+
if (!oLibrary?.interactionDocumentation) {
|
|
187
|
+
return [];
|
|
188
|
+
}
|
|
189
|
+
const oInteractionXML = await loadInteractionXMLFor(sLibrary);
|
|
190
|
+
|
|
191
|
+
if (!oInteractionXML) {
|
|
192
|
+
return [];
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const sControlName = oControl.getMetadata().getName();
|
|
196
|
+
return getInteractions(sControlName, oInteractionXML);
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
let oCurrentPort;
|
|
200
|
+
let bThrottled = false;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Initializes the keyboard interaction information gathering.
|
|
204
|
+
* @param {Event} event The 'focusin' event triggering the initialization.
|
|
205
|
+
*/
|
|
206
|
+
const init = async (event) => {
|
|
207
|
+
if (bThrottled) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
bThrottled = true;
|
|
211
|
+
|
|
212
|
+
setTimeout(() => {
|
|
213
|
+
bThrottled = false;
|
|
214
|
+
}, 300);
|
|
215
|
+
|
|
216
|
+
const aControlTree = [];
|
|
217
|
+
const elements = [];
|
|
218
|
+
const docs = {};
|
|
219
|
+
const oTargetControl = Element.closestTo(event?.target || document.activeElement);
|
|
220
|
+
|
|
221
|
+
if (!oTargetControl) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// get generic key interactions from sap.ui.core
|
|
226
|
+
const oCoreXML = await loadInteractionXMLFor("sap.ui.core");
|
|
227
|
+
if (oCoreXML) {
|
|
228
|
+
const oResourceBundle = Library.getResourceBundleFor("sap.ui.core");
|
|
229
|
+
docs["sap.ui.core.Control"] = {
|
|
230
|
+
"interactions": getInteractions("sap.ui.core.Control", oCoreXML)
|
|
231
|
+
};
|
|
232
|
+
elements.push({
|
|
233
|
+
"class": "sap.ui.core.Control",
|
|
234
|
+
"label": oResourceBundle.getText("Generic.Keyboard.Interaction.Text"),
|
|
235
|
+
"interactions": [{
|
|
236
|
+
"$ref": `docs/sap.ui.core.Control/interactions`
|
|
237
|
+
}]
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
let oCurrent = oTargetControl;
|
|
242
|
+
while (oCurrent) {
|
|
243
|
+
aControlTree.push(oCurrent);
|
|
244
|
+
oCurrent = oCurrent.getParent();
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
for (let i = 0; i < aControlTree.length; i++) {
|
|
248
|
+
const oControl = aControlTree[i];
|
|
249
|
+
const aInteractions = getCommandInfosFor(oControl);
|
|
250
|
+
const aDocs = await getInteractionDocFor(oControl);
|
|
251
|
+
|
|
252
|
+
if (!aInteractions.length && !aDocs.length) {
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
const sClassName = oControl.getMetadata().getName();
|
|
257
|
+
|
|
258
|
+
if (aDocs.length > 0) {
|
|
259
|
+
docs[sClassName] = {
|
|
260
|
+
"interactions": aDocs
|
|
261
|
+
};
|
|
262
|
+
aInteractions.push({
|
|
263
|
+
"$ref": `docs/${sClassName}/interactions`
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
elements.push({
|
|
268
|
+
"id": oControl.getId(),
|
|
269
|
+
"class": sClassName,
|
|
270
|
+
"label": getLabelFor(oControl),
|
|
271
|
+
"interactions": aInteractions
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Update protocol with gathered elements and documentation
|
|
276
|
+
oProtocol.elements = elements;
|
|
277
|
+
oProtocol.docs = docs;
|
|
278
|
+
|
|
279
|
+
// Send protocol
|
|
280
|
+
oCurrentPort?.postMessage(JSON.parse(JSON.stringify({
|
|
281
|
+
service: POST_MESSAGE_ENDPOINT_UPDATE,
|
|
282
|
+
type: "request",
|
|
283
|
+
payload: { ...oProtocol }
|
|
284
|
+
})));
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Module that handles the gathering and sending of keyboard interaction information.
|
|
289
|
+
* When active, it starts listening for pointer and focus events to collect the keyboard interaction data.
|
|
290
|
+
* The gathered data is then sent via a MessagePort to a connected entity.
|
|
291
|
+
*
|
|
292
|
+
* @private
|
|
293
|
+
*/
|
|
294
|
+
return {
|
|
295
|
+
// Indicator if the interaction information gathering is active
|
|
296
|
+
_isActive: false,
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Activates the keyboard interaction information gathering.
|
|
300
|
+
* This methods starts listening for pointer and focus events to gather the keyboard interaction information.
|
|
301
|
+
*
|
|
302
|
+
* @param {MessagePort} oPort The MessagePort used to send the keyboard interaction information.
|
|
303
|
+
* @private
|
|
304
|
+
*/
|
|
305
|
+
async activate(oPort) {
|
|
306
|
+
oCurrentPort = oPort;
|
|
307
|
+
|
|
308
|
+
if (this._isActive) { return; }
|
|
309
|
+
|
|
310
|
+
this._isActive = true;
|
|
311
|
+
await init();
|
|
312
|
+
document.addEventListener("pointerdown", init);
|
|
313
|
+
document.addEventListener("focusin", init);
|
|
314
|
+
},
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Deactivates the keyboard interaction information gathering
|
|
318
|
+
* This methods stops listening for pointer and focus events, effectively stopping the collection
|
|
319
|
+
* of the keyboard interaction information.
|
|
320
|
+
*
|
|
321
|
+
* @private
|
|
322
|
+
*/
|
|
323
|
+
deactivate() {
|
|
324
|
+
if (!this._isActive) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
this._isActive = false;
|
|
328
|
+
document.removeEventListener("pointerdown", init);
|
|
329
|
+
document.removeEventListener("focusin", init);
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
});
|
|
@@ -27,15 +27,18 @@ sap.ui.define([
|
|
|
27
27
|
* @namespace
|
|
28
28
|
* @alias sap.ui.core
|
|
29
29
|
* @author SAP SE
|
|
30
|
-
* @version 1.
|
|
30
|
+
* @version 1.135.0
|
|
31
31
|
* @since 0.8
|
|
32
32
|
* @public
|
|
33
33
|
*/
|
|
34
34
|
var thisLib = Library.init({
|
|
35
35
|
name: "sap.ui.core",
|
|
36
|
-
version: "1.
|
|
36
|
+
version: "1.135.0",
|
|
37
37
|
designtime: "sap/ui/core/designtime/library.designtime",
|
|
38
38
|
apiVersion: 2,
|
|
39
|
+
...{
|
|
40
|
+
interactionDocumentation: true
|
|
41
|
+
},
|
|
39
42
|
types: [
|
|
40
43
|
|
|
41
44
|
// builtin types
|
|
@@ -56,6 +59,7 @@ sap.ui.define([
|
|
|
56
59
|
"sap.ui.core.BusyIndicatorSize",
|
|
57
60
|
"sap.ui.core.CalendarType",
|
|
58
61
|
"sap.ui.core.CSSColor",
|
|
62
|
+
"sap.ui.core.CSSGapShortHand",
|
|
59
63
|
"sap.ui.core.CSSSize",
|
|
60
64
|
"sap.ui.core.CSSSizeShortHand",
|
|
61
65
|
"sap.ui.core.Collision",
|
|
@@ -921,6 +925,34 @@ sap.ui.define([
|
|
|
921
925
|
DataType.getType('string')
|
|
922
926
|
);
|
|
923
927
|
|
|
928
|
+
/**
|
|
929
|
+
* @classdesc A string type that represents a short hand CSS gap.
|
|
930
|
+
*
|
|
931
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/gap}
|
|
932
|
+
* @since 1.134
|
|
933
|
+
* @public
|
|
934
|
+
* @namespace
|
|
935
|
+
*/
|
|
936
|
+
thisLib.CSSGapShortHand = DataType.createType("sap.ui.core.CSSGapShortHand", {
|
|
937
|
+
isValid: function (vValue) {
|
|
938
|
+
var bResult = true,
|
|
939
|
+
aValues = vValue.split(/\s+/);
|
|
940
|
+
|
|
941
|
+
aValues.forEach(function (sValue) {
|
|
942
|
+
if (!thisLib.CSSSize.isValid(sValue)) {
|
|
943
|
+
bResult = false;
|
|
944
|
+
}
|
|
945
|
+
});
|
|
946
|
+
|
|
947
|
+
return bResult;
|
|
948
|
+
},
|
|
949
|
+
parseValue: function (sValue) {
|
|
950
|
+
return sValue.trim().split(/\s+/).join(" ");
|
|
951
|
+
}
|
|
952
|
+
},
|
|
953
|
+
DataType.getType("string")
|
|
954
|
+
);
|
|
955
|
+
|
|
924
956
|
|
|
925
957
|
/**
|
|
926
958
|
* @classdesc A string type that represents CSS size values.
|
|
@@ -1611,7 +1643,7 @@ sap.ui.define([
|
|
|
1611
1643
|
/**
|
|
1612
1644
|
* Sort order of a column.
|
|
1613
1645
|
*
|
|
1614
|
-
* @version 1.
|
|
1646
|
+
* @version 1.135.0
|
|
1615
1647
|
* @enum {string}
|
|
1616
1648
|
* @public
|
|
1617
1649
|
* @since 1.61.0
|
|
@@ -29,7 +29,7 @@ sap.ui.define(['sap/ui/core/Element', 'sap/ui/core/message/MessageProcessor'],
|
|
|
29
29
|
* @extends sap.ui.core.message.MessageProcessor
|
|
30
30
|
*
|
|
31
31
|
* @author SAP SE
|
|
32
|
-
* @version 1.
|
|
32
|
+
* @version 1.135.0
|
|
33
33
|
*
|
|
34
34
|
* @public
|
|
35
35
|
* @alias sap.ui.core.message.ControlMessageProcessor
|
|
@@ -35,7 +35,7 @@ sap.ui.define([
|
|
|
35
35
|
* @extends sap.ui.base.Object
|
|
36
36
|
*
|
|
37
37
|
* @author SAP SE
|
|
38
|
-
* @version 1.
|
|
38
|
+
* @version 1.135.0
|
|
39
39
|
*
|
|
40
40
|
* @param {object} [mParameters] a map which contains the following parameter properties:
|
|
41
41
|
* @param {string} [mParameters.id] The message id: will be generated if no id is set
|
|
@@ -645,3 +645,17 @@ TestRecorder.SettingsDialog.IDCheckBox.Text=Prefer view ID over global ID
|
|
|
645
645
|
TestRecorder.SettingsDialog.POMethodCheckBox.Text=Show snippets in page object methods
|
|
646
646
|
#XTIT: Text for the close button
|
|
647
647
|
TestRecorder.SettingsDialog.CloseButton.Text=Close
|
|
648
|
+
|
|
649
|
+
#XTIT: Title for the generic keyboard interactions that can be initiated
|
|
650
|
+
Generic.Keyboard.Interaction.Text=Generic Keyboard Interactions
|
|
651
|
+
|
|
652
|
+
#XCAP: A description of the keyboard interaction "sap:create" that can be initiated by pressing the "CTRL+ENTER" key combination.
|
|
653
|
+
SAP_CREATE=create
|
|
654
|
+
#XCAP: A description of the keyboard interaction "sap:delete" that can be initiated by pressing the "CTRL+D" key combination.
|
|
655
|
+
SAP_DELETE=delete
|
|
656
|
+
#XCAP: A description of the keyboard interaction "sap:edit" that can be initiated by pressing the "CTRL+E" key combination.
|
|
657
|
+
SAP_EDIT=edit
|
|
658
|
+
#XCAP: A description of the keyboard interaction "sap:save" that can be initiated by pressing the "CTRL+S" key combination.
|
|
659
|
+
SAP_SAVE=save
|
|
660
|
+
#XCAP: A description of the keyboard interaction "sap:share" that can be initiated by pressing the "CTRL+SHIFT+S" key combination.
|
|
661
|
+
SAP_SHARE=share
|
|
@@ -164,13 +164,13 @@ Icon.download=Desc\u0103rcare
|
|
|
164
164
|
Icon.drill-down=Defalcare
|
|
165
165
|
Icon.drill-up=Comprimare
|
|
166
166
|
Icon.error=Eroare
|
|
167
|
-
Icon.exit-full-screen=
|
|
167
|
+
Icon.exit-full-screen=Ie\u0219ire din ecran \u00EEntreg
|
|
168
168
|
Icon.expand=Expandare
|
|
169
169
|
Icon.expand-group=Expandare grup
|
|
170
170
|
Icon.filter=Filtrare
|
|
171
171
|
Icon.flag=Marcator
|
|
172
172
|
Icon.forward=Redirec\u0163ionare
|
|
173
|
-
Icon.full-screen=
|
|
173
|
+
Icon.full-screen=Intrare \u00EEn ecran \u00EEntreg
|
|
174
174
|
Icon.generate-shortcut=Creare shortcut
|
|
175
175
|
Icon.group-2=Grupare
|
|
176
176
|
Icon.hide=Mascare
|
|
@@ -172,7 +172,7 @@ Icon.flag=\u0E41\u0E1F\u0E25\u0E01
|
|
|
172
172
|
Icon.forward=\u0E2A\u0E48\u0E07\u0E15\u0E48\u0E2D
|
|
173
173
|
Icon.full-screen=\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E42\u0E2B\u0E21\u0E14\u0E40\u0E15\u0E47\u0E21\u0E08\u0E2D\u0E20\u0E32\u0E1E
|
|
174
174
|
Icon.generate-shortcut=\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E17\u0E32\u0E07\u0E25\u0E31\u0E14
|
|
175
|
-
Icon.group-2=\u0E01\u0E25\u0E38\u0E48\u0E21
|
|
175
|
+
Icon.group-2=\u0E08\u0E31\u0E14\u0E01\u0E25\u0E38\u0E48\u0E21
|
|
176
176
|
Icon.hide=\u0E0B\u0E48\u0E2D\u0E19
|
|
177
177
|
Icon.ipad=\u0E41\u0E17\u0E47\u0E1A\u0E40\u0E25\u0E47\u0E15
|
|
178
178
|
Icon.ipad-2=\u0E41\u0E17\u0E47\u0E1A\u0E40\u0E25\u0E47\u0E15
|
|
@@ -4,7 +4,7 @@ SAPUI5_GM_ZSTEP=Zoom step {0}
|
|
|
4
4
|
|
|
5
5
|
VALUE_STATE_ERROR=Mu\u0323c nh\u00E2\u0323p kh\u00F4ng h\u01A1\u0323p l\u00EA\u0323
|
|
6
6
|
VALUE_STATE_WARNING=Ca\u0309nh ba\u0301o \u0111\u01B0\u01A1\u0323c pha\u0301t ha\u0300nh
|
|
7
|
-
VALUE_STATE_SUCCESS=Mu\u0323c nh\u00E2\u0323p \u0111\u01B0\u01A1\u0323c
|
|
7
|
+
VALUE_STATE_SUCCESS=Mu\u0323c nh\u00E2\u0323p \u0111\u01B0\u01A1\u0323c xa\u0301c th\u01B0\u0323c tha\u0300nh c\u00F4ng
|
|
8
8
|
VALUE_STATE_INFORMATION=Mu\u0323c nh\u00E2\u0323p th\u00F4ng tin
|
|
9
9
|
|
|
10
10
|
INDICATION_STATE_INDICATION01=Ma\u0300u chi\u0309 ba\u0301o 1
|
|
@@ -159,7 +159,7 @@ Icon.crop=Xe\u0301n
|
|
|
159
159
|
Icon.decline=T\u1EEB ch\u1ED1i
|
|
160
160
|
Icon.delete=Xo\u0301a
|
|
161
161
|
Icon.display=Hi\u1EC3n th\u1ECB
|
|
162
|
-
Icon.down=
|
|
162
|
+
Icon.down=Xu\u1ED1ng
|
|
163
163
|
Icon.download=Ta\u0309i xu\u00F4\u0301ng
|
|
164
164
|
Icon.drill-down=Chi ti\u00EA\u0301t ho\u0301a
|
|
165
165
|
Icon.drill-up=T\u00F4\u0309ng quan hoa\u0301
|
|
@@ -278,8 +278,8 @@ sap.ui.define([
|
|
|
278
278
|
* @ui5-transform-hint replace-param bAsync true
|
|
279
279
|
*/
|
|
280
280
|
function loadControllerClass(sName, sViewId, bAsync) {
|
|
281
|
-
if (
|
|
282
|
-
throw new Error("Controller name ('sName' parameter) is required");
|
|
281
|
+
if (typeof sName !== "string") {
|
|
282
|
+
throw new Error("Controller name ('sName' parameter) is required and must be typeof 'string'");
|
|
283
283
|
}
|
|
284
284
|
|
|
285
285
|
/**
|
|
@@ -296,7 +296,14 @@ sap.ui.define([
|
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
|
|
299
|
-
|
|
299
|
+
let sControllerName;
|
|
300
|
+
|
|
301
|
+
if (sName.startsWith("module:")) {
|
|
302
|
+
sControllerName = sName.substring(7);
|
|
303
|
+
} else {
|
|
304
|
+
sControllerName = sName.replace(/\./g, "/") + ".controller";
|
|
305
|
+
}
|
|
306
|
+
|
|
300
307
|
let ControllerClass = sap.ui.require(sControllerName);
|
|
301
308
|
/** @deprecated */
|
|
302
309
|
ControllerClass ??= resolveClass(ControllerClass);
|
|
@@ -481,7 +488,7 @@ sap.ui.define([
|
|
|
481
488
|
return oController;
|
|
482
489
|
});
|
|
483
490
|
}, function(err){
|
|
484
|
-
future.errorThrows("Controller Extension Provider: Error '" + err + "' thrown in " +
|
|
491
|
+
future.errorThrows("Controller Extension Provider: Error '" + err + "' thrown in " + sRegisteredExtensionProvider + ".", { suffix: "Extension provider is ignored." });
|
|
485
492
|
return oController;
|
|
486
493
|
});
|
|
487
494
|
} else {
|
|
@@ -505,7 +512,8 @@ sap.ui.define([
|
|
|
505
512
|
*
|
|
506
513
|
* @param {object} mOptions A map containing the controller configuration options.
|
|
507
514
|
* @param {string} mOptions.name The controller name that corresponds to a JS module that can be loaded
|
|
508
|
-
* via the module system (mOptions.name + suffix ".controller.js")
|
|
515
|
+
* via the module system (mOptions.name + suffix ".controller.js"). It can be specified either in dot notation (<code>my.sample.Controller</code>) or
|
|
516
|
+
* in module name syntax (<code>module:my/sample/Controller</code>).
|
|
509
517
|
* @return {Promise<sap.ui.core.mvc.Controller>} the Promise resolves with a new instance of the controller
|
|
510
518
|
* @public
|
|
511
519
|
* @static
|
|
@@ -553,6 +561,10 @@ sap.ui.define([
|
|
|
553
561
|
};
|
|
554
562
|
});
|
|
555
563
|
}
|
|
564
|
+
if (sName.startsWith("module:")) {
|
|
565
|
+
throw new Error(`sap.ui.controller(): module name syntax '${sName}' is not supported.`);
|
|
566
|
+
}
|
|
567
|
+
|
|
556
568
|
return controllerFactory(sName, oControllerImpl, sViewId, bAsync);
|
|
557
569
|
};
|
|
558
570
|
|
|
@@ -830,12 +842,13 @@ sap.ui.define([
|
|
|
830
842
|
* }.bind(this));
|
|
831
843
|
*
|
|
832
844
|
* @param {object} mOptions Options regarding fragment loading
|
|
833
|
-
* @param {string} mOptions.name The
|
|
834
|
-
*
|
|
845
|
+
* @param {string} mOptions.name The fragment name, which must correspond to a fragment which can be loaded via the module system (mOptions.name + suffix ".fragment.[typeextension]") and must contain the fragment definition.
|
|
846
|
+
* It can be specified either in dot notation (<code>my.sample.myFragment</code>) or, for JS fragments, in module name syntax (<code>module:my/sample/myFragment</code>).
|
|
835
847
|
* @param {boolean} [mOptions.addToDependents=true] Whether the fragment content should be added to the <code>dependents</code> aggregation of the view
|
|
836
848
|
* @param {boolean} [mOptions.autoPrefixId=true] Whether the IDs of the fragment content will be prefixed by the view ID
|
|
837
|
-
* @param {string} [mOptions.id] the ID of the
|
|
838
|
-
* @param {string} [mOptions.type=XML] the
|
|
849
|
+
* @param {string} [mOptions.id] the ID of the fragment
|
|
850
|
+
* @param {string} [mOptions.type=XML] the fragment type, e.g. "XML", "JS", or "HTML" (see above). Default is "XML".
|
|
851
|
+
* If the fragment name is given in module name syntax (e.g., <code>module:my/sample/myFragment</code>) the type must be omitted.
|
|
839
852
|
* @returns {Promise<sap.ui.core.Control|sap.ui.core.Control[]>} A Promise that resolves with the fragment content
|
|
840
853
|
*
|
|
841
854
|
* @since 1.93
|
|
@@ -897,7 +910,7 @@ sap.ui.define([
|
|
|
897
910
|
*
|
|
898
911
|
* @private
|
|
899
912
|
*/
|
|
900
|
-
|
|
913
|
+
let sRegisteredExtensionProvider = null;
|
|
901
914
|
|
|
902
915
|
|
|
903
916
|
/**
|
|
@@ -984,7 +997,8 @@ sap.ui.define([
|
|
|
984
997
|
* @public
|
|
985
998
|
*/
|
|
986
999
|
Controller.registerExtensionProvider = function(sExtensionProvider) {
|
|
987
|
-
|
|
1000
|
+
// remember the provider name for future error messages
|
|
1001
|
+
sRegisteredExtensionProvider = sExtensionProvider;
|
|
988
1002
|
ControllerExtensionProvider.registerExtensionProvider(sExtensionProvider);
|
|
989
1003
|
};
|
|
990
1004
|
|
|
@@ -27,7 +27,7 @@ sap.ui.define([
|
|
|
27
27
|
* @param {object} [mSettings] initial settings for the new control
|
|
28
28
|
*
|
|
29
29
|
* @extends sap.ui.core.mvc.View
|
|
30
|
-
* @version 1.
|
|
30
|
+
* @version 1.135.0
|
|
31
31
|
* @deprecated Since 1.90. Instead use {@link topic:e6bb33d076dc4f23be50c082c271b9f0 Typed Views}
|
|
32
32
|
* by defining the view class with {@link sap.ui.core.mvc.View.extend View.extend} and
|
|
33
33
|
* creating the view instances with {@link sap.ui.core.mvc.View.create View.create}.
|