diff --git a/docs/01_Whats-New/images/Image_Map_What_s_New_60070cb.png b/docs/01_Whats-New/images/Image_Map_What_s_New_60070cb.png index 8a9ab414..af1eb20b 100644 Binary files a/docs/01_Whats-New/images/Image_Map_What_s_New_60070cb.png and b/docs/01_Whats-New/images/Image_Map_What_s_New_60070cb.png differ diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-100-27dec1d.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-100-27dec1d.md index d8a39571..42c0624f 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-100-27dec1d.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-100-27dec1d.md @@ -553,6 +553,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-101-7733b00.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-101-7733b00.md index 5294e2f3..992cf630 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-101-7733b00.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-101-7733b00.md @@ -773,6 +773,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-102-f038c99.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-102-f038c99.md index 9313f33d..f7851c0a 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-102-f038c99.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-102-f038c99.md @@ -1001,6 +1001,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-103-0e98c76.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-103-0e98c76.md index 6442e23a..17e51d1c 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-103-0e98c76.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-103-0e98c76.md @@ -483,6 +483,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-104-69e567c.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-104-69e567c.md index 0f84fb0c..cede062a 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-104-69e567c.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-104-69e567c.md @@ -326,6 +326,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-105-4d6c00e.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-105-4d6c00e.md index eba758d5..5341c6d8 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-105-4d6c00e.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-105-4d6c00e.md @@ -691,6 +691,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-106-5b497b0.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-106-5b497b0.md index bc4d811f..7ecd8d43 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-106-5b497b0.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-106-5b497b0.md @@ -657,6 +657,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-107-d4ff916.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-107-d4ff916.md index 142f54e5..c7c8eca2 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-107-d4ff916.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-107-d4ff916.md @@ -577,6 +577,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-108-66e33f0.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-108-66e33f0.md index 4878e3ca..7b044acd 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-108-66e33f0.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-108-66e33f0.md @@ -733,6 +733,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-109-3264bd2.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-109-3264bd2.md index 310ac820..4f4714b5 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-109-3264bd2.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-109-3264bd2.md @@ -669,6 +669,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-110-71a855c.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-110-71a855c.md index 1e787ec5..70fbae3d 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-110-71a855c.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-110-71a855c.md @@ -1030,6 +1030,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-111-7a67837.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-111-7a67837.md index 35c2aa72..59f8e8af 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-111-7a67837.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-111-7a67837.md @@ -775,6 +775,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-112-34afc69.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-112-34afc69.md index f4685a83..5966eb64 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-112-34afc69.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-112-34afc69.md @@ -493,6 +493,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-113-a9553fe.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-113-a9553fe.md index b446a509..8b435f40 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-113-a9553fe.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-113-a9553fe.md @@ -1169,6 +1169,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-114-890fce1.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-114-890fce1.md index d6d213b4..6e3bd588 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-114-890fce1.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-114-890fce1.md @@ -524,6 +524,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-115-409fde8.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-115-409fde8.md index dc781203..cd7fa6d8 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-115-409fde8.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-115-409fde8.md @@ -713,6 +713,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-116-ebd6f34.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-116-ebd6f34.md index 26de89c2..b942b0d5 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-116-ebd6f34.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-116-ebd6f34.md @@ -701,6 +701,8 @@ Required **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-117-029d3b4.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-117-029d3b4.md index a2d170d9..19455df1 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-117-029d3b4.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-117-029d3b4.md @@ -1055,6 +1055,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-118-3eecbde.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-118-3eecbde.md index 89807a89..fb216c28 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-118-3eecbde.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-118-3eecbde.md @@ -821,6 +821,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-119-0b1903a.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-119-0b1903a.md index 71e84697..105792b0 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-119-0b1903a.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-119-0b1903a.md @@ -886,6 +886,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-120-2359b63.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-120-2359b63.md index bc1588bd..9b4eef47 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-120-2359b63.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-120-2359b63.md @@ -1395,6 +1395,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-121-91a4a2f.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-121-91a4a2f.md index fb89d665..4b98a5a6 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-121-91a4a2f.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-121-91a4a2f.md @@ -1937,6 +1937,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-122-5d078da.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-122-5d078da.md index 82b26f1c..8db97614 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-122-5d078da.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-122-5d078da.md @@ -824,6 +824,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-123-9d00ac7.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-123-9d00ac7.md index 74af7fb0..8fc2dc40 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-123-9d00ac7.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-123-9d00ac7.md @@ -591,6 +591,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-124-7f77c3f.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-124-7f77c3f.md index e30f78e6..cf3aedf4 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-124-7f77c3f.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-124-7f77c3f.md @@ -1027,6 +1027,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-125-9d87044.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-125-9d87044.md index 83e0f5f0..35c5e7c9 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-125-9d87044.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-125-9d87044.md @@ -684,6 +684,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.124](what-s-new-in-sapui5-1-124-7f77c3f.md "With this release SAPUI5 is upgraded from version 1.123 to 1.124.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-126-1d98116.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-126-1d98116.md index c3a2bcbc..f16e5c71 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-126-1d98116.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-126-1d98116.md @@ -711,6 +711,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") [What's New in SAPUI5 1.124](what-s-new-in-sapui5-1-124-7f77c3f.md "With this release SAPUI5 is upgraded from version 1.123 to 1.124.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-127-e5e1317.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-127-e5e1317.md index e6ec10ae..a326e155 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-127-e5e1317.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-127-e5e1317.md @@ -552,3 +552,160 @@ Info Only +**Related Information** + + +[What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") + +[What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") + +[What's New in SAPUI5 1.124](what-s-new-in-sapui5-1-124-7f77c3f.md "With this release SAPUI5 is upgraded from version 1.123 to 1.124.") + +[What's New in SAPUI5 1.123](what-s-new-in-sapui5-1-123-9d00ac7.md "With this release SAPUI5 is upgraded from version 1.122 to 1.123.") + +[What's New in SAPUI5 1.122](what-s-new-in-sapui5-1-122-5d078da.md "With this release SAPUI5 is upgraded from version 1.121 to 1.122.") + +[What's New in SAPUI5 1.121](what-s-new-in-sapui5-1-121-91a4a2f.md "With this release SAPUI5 is upgraded from version 1.120 to 1.121.") + +[What's New in SAPUI5 1.120](what-s-new-in-sapui5-1-120-2359b63.md "With this release SAPUI5 is upgraded from version 1.119 to 1.120.") + +[What's New in SAPUI5 1.119](what-s-new-in-sapui5-1-119-0b1903a.md "With this release SAPUI5 is upgraded from version 1.118 to 1.119.") + +[What's New in SAPUI5 1.118](what-s-new-in-sapui5-1-118-3eecbde.md "With this release SAPUI5 is upgraded from version 1.117 to 1.118.") + +[What's New in SAPUI5 1.117](what-s-new-in-sapui5-1-117-029d3b4.md "With this release SAPUI5 is upgraded from version 1.116 to 1.117.") + +[What's New in SAPUI5 1.116](what-s-new-in-sapui5-1-116-ebd6f34.md "With this release SAPUI5 is upgraded from version 1.115 to 1.116.") + +[What's New in SAPUI5 1.115](what-s-new-in-sapui5-1-115-409fde8.md "With this release SAPUI5 is upgraded from version 1.114 to 1.115.") + +[What's New in SAPUI5 1.114](what-s-new-in-sapui5-1-114-890fce1.md "With this release SAPUI5 is upgraded from version 1.113 to 1.114.") + +[What's New in SAPUI5 1.113](what-s-new-in-sapui5-1-113-a9553fe.md "With this release SAPUI5 is upgraded from version 1.112 to 1.113.") + +[What's New in SAPUI5 1.112](what-s-new-in-sapui5-1-112-34afc69.md "With this release SAPUI5 is upgraded from version 1.111 to 1.112.") + +[What's New in SAPUI5 1.111](what-s-new-in-sapui5-1-111-7a67837.md "With this release SAPUI5 is upgraded from version 1.110 to 1.111.") + +[What's New in SAPUI5 1.110](what-s-new-in-sapui5-1-110-71a855c.md "With this release SAPUI5 is upgraded from version 1.109 to 1.110.") + +[What's New in SAPUI5 1.109](what-s-new-in-sapui5-1-109-3264bd2.md "With this release SAPUI5 is upgraded from version 1.108 to 1.109.") + +[What's New in SAPUI5 1.108](what-s-new-in-sapui5-1-108-66e33f0.md "With this release SAPUI5 is upgraded from version 1.107 to 1.108.") + +[What's New in SAPUI5 1.107](what-s-new-in-sapui5-1-107-d4ff916.md "With this release SAPUI5 is upgraded from version 1.106 to 1.107.") + +[What's New in SAPUI5 1.106](what-s-new-in-sapui5-1-106-5b497b0.md "With this release SAPUI5 is upgraded from version 1.105 to 1.106.") + +[What's New in SAPUI5 1.105](what-s-new-in-sapui5-1-105-4d6c00e.md "With this release SAPUI5 is upgraded from version 1.104 to 1.105.") + +[What's New in SAPUI5 1.104](what-s-new-in-sapui5-1-104-69e567c.md "With this release SAPUI5 is upgraded from version 1.103 to 1.104.") + +[What's New in SAPUI5 1.103](what-s-new-in-sapui5-1-103-0e98c76.md "With this release SAPUI5 is upgraded from version 1.102 to 1.103.") + +[What's New in SAPUI5 1.102](what-s-new-in-sapui5-1-102-f038c99.md "With this release SAPUI5 is upgraded from version 1.101 to 1.102.") + +[What's New in SAPUI5 1.101](what-s-new-in-sapui5-1-101-7733b00.md "With this release SAPUI5 is upgraded from version 1.100 to 1.101.") + +[What's New in SAPUI5 1.100](what-s-new-in-sapui5-1-100-27dec1d.md "With this release SAPUI5 is upgraded from version 1.99 to 1.100.") + +[What's New in SAPUI5 1.99](what-s-new-in-sapui5-1-99-4f35848.md "With this release SAPUI5 is upgraded from version 1.98 to 1.99.") + +[What's New in SAPUI5 1.98](what-s-new-in-sapui5-1-98-d9f16f2.md "With this release SAPUI5 is upgraded from version 1.97 to 1.98.") + +[What's New in SAPUI5 1.97](what-s-new-in-sapui5-1-97-fa0e282.md "With this release SAPUI5 is upgraded from version 1.96 to 1.97.") + +[What's New in SAPUI5 1.96](what-s-new-in-sapui5-1-96-7a9269f.md "With this release SAPUI5 is upgraded from version 1.95 to 1.96.") + +[What's New in SAPUI5 1.95](what-s-new-in-sapui5-1-95-a1aea67.md "With this release SAPUI5 is upgraded from version 1.94 to 1.95.") + +[What's New in SAPUI5 1.94](what-s-new-in-sapui5-1-94-c40f1e6.md "With this release SAPUI5 is upgraded from version 1.93 to 1.94.") + +[What's New in SAPUI5 1.93](what-s-new-in-sapui5-1-93-f273340.md "With this release SAPUI5 is upgraded from version 1.92 to 1.93.") + +[What's New in SAPUI5 1.92](what-s-new-in-sapui5-1-92-1ef345d.md "With this release SAPUI5 is upgraded from version 1.91 to 1.92.") + +[What's New in SAPUI5 1.91](what-s-new-in-sapui5-1-91-0a2bd79.md "With this release SAPUI5 is upgraded from version 1.90 to 1.91.") + +[What's New in SAPUI5 1.90](what-s-new-in-sapui5-1-90-91c10c2.md "With this release SAPUI5 is upgraded from version 1.89 to 1.90.") + +[What's New in SAPUI5 1.89](what-s-new-in-sapui5-1-89-e56cddc.md "With this release SAPUI5 is upgraded from version 1.88 to 1.89.") + +[What's New in SAPUI5 1.88](what-s-new-in-sapui5-1-88-e15a206.md "With this release SAPUI5 is upgraded from version 1.87 to 1.88.") + +[What's New in SAPUI5 1.87](what-s-new-in-sapui5-1-87-b506da7.md "With this release SAPUI5 is upgraded from version 1.86 to 1.87.") + +[What's New in SAPUI5 1.86](what-s-new-in-sapui5-1-86-4c1c959.md "With this release SAPUI5 is upgraded from version 1.85 to 1.86.") + +[What's New in SAPUI5 1.85](what-s-new-in-sapui5-1-85-1d18eb5.md "With this release SAPUI5 is upgraded from version 1.84 to 1.85.") + +[What's New in SAPUI5 1.84](what-s-new-in-sapui5-1-84-dc76640.md "With this release SAPUI5 is upgraded from version 1.82 to 1.84.") + +[What's New in SAPUI5 1.82](what-s-new-in-sapui5-1-82-3a8dd13.md "With this release SAPUI5 is upgraded from version 1.81 to 1.82.") + +[What's New in SAPUI5 1.81](what-s-new-in-sapui5-1-81-f5e2a21.md "With this release SAPUI5 is upgraded from version 1.80 to 1.81.") + +[What's New in SAPUI5 1.80](what-s-new-in-sapui5-1-80-8cee506.md "With this release SAPUI5 is upgraded from version 1.79 to 1.80.") + +[What's New in SAPUI5 1.79](what-s-new-in-sapui5-1-79-99c4cdc.md "With this release SAPUI5 is upgraded from version 1.78 to 1.79.") + +[What's New in SAPUI5 1.78](what-s-new-in-sapui5-1-78-f09b63e.md "With this release SAPUI5 is upgraded from version 1.77 to 1.78.") + +[What's New in SAPUI5 1.77](what-s-new-in-sapui5-1-77-c46b439.md "With this release SAPUI5 is upgraded from version 1.76 to 1.77.") + +[What's New in SAPUI5 1.76](what-s-new-in-sapui5-1-76-aad03b5.md "With this release SAPUI5 is upgraded from version 1.75 to 1.76.") + +[What's New in SAPUI5 1.75](what-s-new-in-sapui5-1-75-5cbb62d.md "With this release SAPUI5 is upgraded from version 1.74 to 1.75.") + +[What's New in SAPUI5 1.74](what-s-new-in-sapui5-1-74-c22208a.md "With this release SAPUI5 is upgraded from version 1.73 to 1.74.") + +[What's New in SAPUI5 1.73](what-s-new-in-sapui5-1-73-231dd13.md "With this release SAPUI5 is upgraded from version 1.72 to 1.73.") + +[What's New in SAPUI5 1.72](what-s-new-in-sapui5-1-72-521cad9.md "With this release SAPUI5 is upgraded from version 1.71 to 1.72.") + +[What's New in SAPUI5 1.71](what-s-new-in-sapui5-1-71-a93a6a3.md "With this release SAPUI5 is upgraded from version 1.70 to 1.71.") + +[What's New in SAPUI5 1.70](what-s-new-in-sapui5-1-70-f073d69.md "With this release SAPUI5 is upgraded from version 1.69 to 1.70.") + +[What's New in SAPUI5 1.69](what-s-new-in-sapui5-1-69-89a18bd.md "With this release SAPUI5 is upgraded from version 1.68 to 1.69.") + +[What's New in SAPUI5 1.68](what-s-new-in-sapui5-1-68-f94bf93.md "With this release SAPUI5 is upgraded from version 1.67 to 1.68.") + +[What's New in SAPUI5 1.67](what-s-new-in-sapui5-1-67-a6b1472.md "With this release SAPUI5 is upgraded from version 1.66 to 1.67.") + +[What's New in SAPUI5 1.66](what-s-new-in-sapui5-1-66-c9896e9.md "With this release SAPUI5 is upgraded from version 1.65 to 1.66.") + +[What's New in SAPUI5 1.65](what-s-new-in-sapui5-1-65-0f5acfd.md "With this release SAPUI5 is upgraded from version 1.64 to 1.65.") + +[What's New in SAPUI5 1.64](what-s-new-in-sapui5-1-64-0e30822.md "With this release SAPUI5 is upgraded from version 1.63 to 1.64.") + +[What's New in SAPUI5 1.63](what-s-new-in-sapui5-1-63-e8d9da7.md "With this release SAPUI5 is upgraded from version 1.62 to 1.63.") + +[What's New in SAPUI5 1.62](what-s-new-in-sapui5-1-62-771f4d5.md "With this release SAPUI5 is upgraded from version 1.61 to 1.62.") + +[What's New in SAPUI5 1.61](what-s-new-in-sapui5-1-61-d991552.md "With this release SAPUI5 is upgraded from version 1.60 to 1.61.") + +[What's New in SAPUI5 1.60](what-s-new-in-sapui5-1-60-5a0e1f7.md "With this release SAPUI5 is upgraded from version 1.58 to 1.60.") + +[What's New in SAPUI5 1.58](what-s-new-in-sapui5-1-58-7c927aa.md "With this release SAPUI5 is upgraded from version 1.56 to 1.58.") + +[What's New in SAPUI5 1.56](what-s-new-in-sapui5-1-56-108b7fd.md "With this release SAPUI5 is upgraded from version 1.54 to 1.56.") + +[What's New in SAPUI5 1.54](what-s-new-in-sapui5-1-54-c838330.md "With this release SAPUI5 is upgraded from version 1.52 to 1.54.") + +[What's New in SAPUI5 1.52](what-s-new-in-sapui5-1-52-849e1b6.md "With this release SAPUI5 is upgraded from version 1.50 to 1.52.") + +[What's New in SAPUI5 1.50](what-s-new-in-sapui5-1-50-759e9f3.md "With this release SAPUI5 is upgraded from version 1.48 to 1.50.") + +[What's New in SAPUI5 1.48](what-s-new-in-sapui5-1-48-fa1efac.md "With this release SAPUI5 is upgraded from version 1.46 to 1.48.") + +[What's New in SAPUI5 1.46](what-s-new-in-sapui5-1-46-6307539.md "With this release SAPUI5 is upgraded from version 1.44 to 1.46.") + +[What's New in SAPUI5 1.44](what-s-new-in-sapui5-1-44-a0cb7a0.md "With this release SAPUI5 is upgraded from version 1.42 to 1.44.") + +[What's New in SAPUI5 1.42](what-s-new-in-sapui5-1-42-468b05d.md "With this release SAPUI5 is upgraded from version 1.40 to 1.42.") + +[What's New in SAPUI5 1.40](what-s-new-in-sapui5-1-40-fbab50e.md "With this release SAPUI5 is upgraded from version 1.38 to 1.40.") + +[What's New in SAPUI5 1.38](what-s-new-in-sapui5-1-38-f218918.md "With this release SAPUI5 is upgraded from version 1.36 to 1.38.") + diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-128-1f76220.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-128-1f76220.md index 07e3e930..f70d4ccb 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-128-1f76220.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-128-1f76220.md @@ -1,7 +1,5 @@ - - # What's New in SAPUI5 1.128 With this release SAPUI5 is upgraded from version 1.127 to 1.128. @@ -9,9 +7,6 @@ With this release SAPUI5 is upgraded from version 1.127 to 1.128. > ### Tip: > If you want to do a search across all versions of the What's New content, you can also find it in the [SAPUI5 What's New viewer](https://help.sap.com/whats-new/67f60363b57f4ac0b23efd17fa192d60). -> ### Note: -> Content marked as **[Preview](https://help.sap.com/docs/whats-new-disclaimer)** is provided as a courtesy, without a warranty, and may be subject to change. For more information, see the [preview disclaimer](https://help.sap.com/docs/whats-new-disclaimer). - **** @@ -56,75 +51,6 @@ Available as of -Upcoming - - - - -Deleted - - - - -Announcement - - - - -**End of Cloud Provisioning for SAPUI5 Versions \(Q3/2024\)** - - - - -**End of Cloud Provisioning for SAPUI5 Versions \(Q3/2024\)** - -The following SAPUI5 versions will be removed from the SAPUI5 Content Delivery Network \(CDN\) after the end of Q3/2024. - -**Minor Versions Reaching Their End of Cloud Provisioning** - -The following versions including all patches will be removed entirely: - -- 1.114 -- 1.115 -- 1.116 -- 1.117 -- 1.118 - -**Action**: Upgrade to a version that is still in maintenance. - -**Patch Versions Reaching Their End of Cloud Provisioning** - -The following patches will be removed: - -- Long-term maintenance versions: - - - 1.71.58 - - 1.84.35 to 1.84.36 - - 1.96.23 to 1.96.24 - - 1.108.19 to 1.108.22 - - **Action**: Upgrade to the latest available patch for the respective SAPUI5 version. - - -For more information, see [Version Overview](https://ui5.sap.com/versionoverview.html). - -**[Preview](https://help.sap.com/docs/whats-new-disclaimer)**•Deleted•Announcement•Info Only•Upcoming - - - - -Info Only - - - - -9999-01-01 - - - - - - 1.128 diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-129-d22b8af.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-129-d22b8af.md new file mode 100644 index 00000000..d1c9c786 --- /dev/null +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-129-d22b8af.md @@ -0,0 +1,1039 @@ + + + + +# What's New in SAPUI5 1.129 + +With this release SAPUI5 is upgraded from version 1.128 to 1.129. + +> ### Tip: +> If you want to do a search across all versions of the What's New content, you can also find it in the [SAPUI5 What's New viewer](https://help.sap.com/whats-new/67f60363b57f4ac0b23efd17fa192d60). + +> ### Note: +> Content marked as **[Preview](https://help.sap.com/docs/whats-new-disclaimer)** is provided as a courtesy, without a warranty, and may be subject to change. For more information, see the [preview disclaimer](https://help.sap.com/docs/whats-new-disclaimer). + +**** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Version + + + +Type + + + +Category + + + +Title + + + +Description + + + +Action + + + +Available as of + +
+ +Upcoming + + + +Deleted + + + +Announcement + + + +**End of Cloud Provisioning for SAPUI5 Versions \(Q3/2024\)** + + + +**End of Cloud Provisioning for SAPUI5 Versions \(Q3/2024\)** + +The following SAPUI5 versions will be removed from the SAPUI5 Content Delivery Network \(CDN\) after the end of Q3/2024. + +**Minor Versions Reaching Their End of Cloud Provisioning** + +The following versions including all patches will be removed entirely: + +- 1.114 +- 1.115 +- 1.116 +- 1.117 +- 1.118 + +**Action**: Upgrade to a version that is still in maintenance. + +**Patch Versions Reaching Their End of Cloud Provisioning** + +The following patches will be removed: + +- Long-term maintenance versions: + + - 1.71.58 + - 1.84.35 to 1.84.36 + - 1.96.23 to 1.96.24 + - 1.108.19 to 1.108.22 + + **Action**: Upgrade to the latest available patch for the respective SAPUI5 version. + + +For more information, see [Version Overview](https://ui5.sap.com/versionoverview.html). + +**[Preview](https://help.sap.com/docs/whats-new-disclaimer)**•Deleted•Announcement•Info Only•Upcoming + + + +Info Only + + + +9999-01-01 + +
+ +1.129 + + + +Changed + + + +Feature + + + +**Harmonized Context Menu in Key User Adaptation** + + + +**Harmonized Context Menu in Key User Adaptation** + +The context menu is now consistent when you select elements. It no longer depends on how you select an element, such as using the left or right mouse button. The familiar right-click context menu now also appears when you left-click an element. + +Changed•Feature•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +New + + + +Feature + + + +**What's New Dialog in Key User Adaptation** + + + +**What's New Dialog in Key User Adaptation** + +The *What's New* dialog keeps you informed about the latest updates, features, and improvements in key user adaptation. + +After an upgrade, the dialog automatically shows the new features introduced with the new version. If you're interested in features from previous versions, you can find an overview in the \(More Actions\) menu in the toolbar. + +New•Feature•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Feature + + + +**SAPUI5 OData V4 Model** + + + +**SAPUI5 OData V4 Model** + +The new version of the SAPUI5 OData V4 model introduces the following features: + +- We have added the experimental `$$separate` binding parameter to `ODataListBinding`, which allows you to load properties with a longer loading time in a separate request. At the moment, only navigation properties can be specified in `$$separate`. Note that this parameter must not be used in productive applications yet. + +- We now support filtering by aggregated properties. For more information, see [Filtering](../04_Essentials/data-aggregation-and-recursive-hierarchy-7d91431.md#loio7d914317c0b64c23824bf932cc8a4ae1__section_DAF). + + +Changed•Feature•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Feature + + + +**SAPUI5 OData V2 Model** + + + +**SAPUI5 OData V2 Model** + +We now provide the `sap.ui.model.odata.ODataMetaModel#getFunctionImportParameterContext` method, which provides the parameter context for `sap.ui.model.odata.ODataMetaModel#getODataValueLists`. This enables the lazy loading of value list metadata of function import parameters. + +For more information, see the API Reference for [`ODataMetaModel#getFunctionImportParameterContext`](https://ui5.sap.com/#/api/sap.ui.model.odata.ODataMetaModel%23methods/getFunctionImportParameterContext) and [`ODataMetaModel#getODataValueLists`](https://ui5.sap.com/#/api/sap.ui.model.odata.ODataMetaModel%23methods/getODataValueLists). + +Changed•Feature•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +sap.ui.richtexteditor.RichTextEditor + + + +**`sap.ui.richtexteditor.RichTextEditor`** + +We have updated the `TinyMCE` third-party library to the latest version 6. + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.ui.comp.smartfield.SmartField`** + + + +**`sap.ui.comp.smartfield.SmartField`** + +The `SmartField` control now reads criticality information from the `DataPoint` and `FieldGroup` annotations and renders the `ObjectStatus` control based on it. For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.ui.comp.smartfield.SmartField%23overview). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.m.SlideTile`** + + + +**`sap.m.SlideTile`** + +We've introduced the following features to the `SlideTile` control: + +- Added left and right chevrons to easily scroll the tiles in either direction. + +- Increased the slide indicator size to 24px to enable easier tapping on touchscreen devices. + +- Play and pause indicators are now displayed by default. Until now, these indicators were displayed only when a user hovered on the tile. + + +For more information, see the [Sample](https://ui5.sap.com/#/entity/sap.m.SlideTile). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.suite.ui.commons.ChartContainer`** + + + +**`sap.suite.ui.commons.ChartContainer`** + +We've introduced the `enableBrowserFullScreen` property in the `ChartContainer` control. This property enables the display of the content within the `ChartContainer` using the browser's fullscreen APIs. In fullscreen mode, `sap.m.Dialog`, `sap.m.Popover`, `sap.m.ResponsivePopover`, and `sap.m.SelectionDetails` can be displayed over the `ChartContainer` control. To enable the display, the controls are added as dependents of the `ChartContainer`. + +> ### Sample Code: +> An example of connecting a dialog to the `ChartContainer` control: +> +> ``` +> oChartContainer.addDependent(new Dialog({ +> text: "Display Dialog" +> })); +> ``` + +For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.suite.ui.commons.ChartContainer) and the [Sample](https://ui5.sap.com/#/entity/sap.suite.ui.commons.sample.ChartContainerBrowserFullscreen). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.m.upload.UploadSet`** + + + +**`sap.m.upload.UploadSet`** + +We now ensure that the `UploadSet` control handles item insertion and deletion if the `items` aggregation is not bound to a model. It allows the connected model to not only manage the insertion and deletion updates but it also helps to avoid template-related issues and ensures better data handling. For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.m.upload.UploadSet). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.m.MessageStrip`** + + + +**`sap.m.MessageStrip`** + +The control can now display multiple links within its text using the `controls` aggregation. + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.m.Select`** + + + +**`sap.m.Select`** + +We have enhanced `sap.m.Select` so that now navigating with the arrow keys in a selection in the control can be reverted using the [Esc\] key, even when the selection list is closed. + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Deprecated + + + +Feature + + + +**Deprecations** + + + +**Deprecations** + +There are currently no major deprecations. For a complete list of all deprecations, see [Deprecated APIs](https://ui5.sap.com/#/api/deprecated). + +Deprecated•Feature•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.ui.mdc.Table`** + + + +**`sap.ui.mdc.Table`** + +We have added the `scrollThreshold` property. It only affects the inner table if it is of type `TableType.Table`. For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.ui.mdc.table.GridTableType%23methods/getScrollThreshold). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.m.List`, `sap.m.Table`, `sap.m.Tree`** + + + +**`sap.m.List`, `sap.m.Table`, `sap.m.Tree`** + +Group headers for the relevant items in these controls are now sticky, so they remain in a fixed position at the top of the page during vertical scrolling. + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.ui.table.AnalyticalTable`, `sap.ui.table.Table`, `sap.ui.table.TreeTable`** + + + +**`sap.ui.table.AnalyticalTable`, `sap.ui.table.Table`, `sap.ui.table.TreeTable`** + +- We have adapted and tidied up the structure of the context menu of group headers \(for example, we have added submenus\). In addition, the mobile menu button for group headers has been removed. + +- We have tidied up the interactive row count mode and the related entities: We have aligned the visual design of the resizer with the `sap.ui.layout.Splitter` control and improved the interaction, for example, the auto-resize and some missing keyboard shortcuts. We have also added the `maxRowCount` property with a default value. To improve accessibility, we have also added ARIA roles and attributes. For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.ui.table.rowmodes.Interactive%23overview) and the [Sample](https://ui5.sap.com/#/entity/sap.ui.table.Table/sample/sap.ui.table.sample.RowModes). +- We have added the `scrollThreshold` property to the controls. It resembles the existing `threshold` property , but it is only used for scrolling. For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.ui.table.Table%23methods/setScrollThreshold). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +SAP Fiori Elements + + + +**SAP Fiori Elements for OData V2** + + + +**SAP Fiori Elements for OData V2** + +The following changes and new features are available for SAP Fiori elements for OData V2: + +- Adaptation projects now support modification of the application-level settings in the SAP delivered apps. For more information, see [Extending the Delivered Apps Manifest Using an Adaptation Project](../06_SAP_Fiori_Elements/extending-the-delivered-apps-manifest-using-an-adaptation-project-a2b24a6.md). + +- We now display the *Copy to Clipboard* button in tables, even when the selection mode is `NONE`. + +- We now ensure that the parameter input fields in the function import dialog support the `textArrangement` annotation and the formatting of numeric values. + + +Changed•SAP Fiori Elements•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +SAP Fiori Elements + + + +**SAP Fiori Elements for OData V4** + + + +**SAP Fiori Elements for OData V4** + +The following changes and new features are available for SAP Fiori elements for OData V4: + +- We now support key user adaptation for actions. For more information, see [Enabling an App for Key User Adaptation](../06_SAP_Fiori_Elements/enabling-an-app-for-key-user-adaptation-ccd45ba.md). + +- We now display an illustrated message when no data is available in a chart. For more information, see [Maintaining Standard Texts for Charts](../06_SAP_Fiori_Elements/maintaining-standard-texts-for-charts-37cd601.md). + +- We now display an illustrated message if no data is found in a table. For more information, see [Maintaining Standard Texts for Tables](../06_SAP_Fiori_Elements/maintaining-standard-texts-for-tables-aacfac5.md) and [Illustrated Message When No Data Is Found](../06_SAP_Fiori_Elements/illustrated-message-when-no-data-is-found-f9925b6.md). + +- Application developers can now override the key for the *Delete* button on an object page using the custom i18n file approach. For more information, see [Localization of UI Texts](../06_SAP_Fiori_Elements/localization-of-ui-texts-b8cb649.md). + +- We now support additional formats for date-and-time-based controls. For more information, see [Configuring Fields](../06_SAP_Fiori_Elements/configuring-fields-4b50f21.md). + +- We now support executing side effects for properties used in custom fields. For more information, see [Side Effects](../06_SAP_Fiori_Elements/side-effects-18b17bd.md). + + +Changed•SAP Fiori Elements•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.m.PlanningCalendar`** + + + +**`sap.m.PlanningCalendar`** + +A busy indicator is now shown while the rows are still loading. This prevents a misleading `noData` message from being displayed. For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.m.PlanningCalendar). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.m.ResponsivePopover`** + + + +**`sap.m.ResponsivePopover`** + +We have added a new `footer` aggregation to the control. This aggregation allows for the action buttons to be moved into an overflow menu on smaller screens when there isn't enough space. For more information, see the [Sample](https://ui5.sap.com/#/entity/sap.m.ResponsivePopover/sample/sap.m.sample.ResponsivePopover). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.ui.integration.widgets.Card`** + + + +**`sap.ui.integration.widgets.Card`** + +We have added a new `selectedIndex` property to the `ComboBox` \(experimental\) filter. The property can provide an initial selected index of the combo box. As a developer, use this property if the keys of the items are not known up front. For more information, see the [Combo Box Filter](https://ui5.sap.com/test-resources/sap/ui/integration/demokit/cardExplorer/webapp/index.html#/learn/filters/comboBox) section and [Sample](https://ui5.sap.com/test-resources/sap/ui/integration/demokit/cardExplorer/webapp/index.html#/explore/comboBoxFilter/dynamicFilterSelectedIndex) in the Card Explorer. + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ +1.129 + + + +Changed + + + +Control + + + +**`sap.ui.unified.Menu`** + + + +**`sap.ui.unified.Menu`** + +We have added a new `closed` event, which is fired when a menu is closed. For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.ui.unified.Menu). + +Changed•Control•Info Only•1.129 + + + +Info Only + + + +2024-10-03 + +
+ diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-38-f218918.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-38-f218918.md index 908cd2a6..b696d533 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-38-f218918.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-38-f218918.md @@ -2192,6 +2192,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-40-fbab50e.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-40-fbab50e.md index bd7a6c70..043fce36 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-40-fbab50e.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-40-fbab50e.md @@ -1136,6 +1136,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-42-468b05d.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-42-468b05d.md index d0f4de20..17fc5a2e 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-42-468b05d.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-42-468b05d.md @@ -1602,6 +1602,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-44-a0cb7a0.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-44-a0cb7a0.md index ce41efa2..efd48fc9 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-44-a0cb7a0.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-44-a0cb7a0.md @@ -1262,6 +1262,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-46-6307539.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-46-6307539.md index b7a264aa..bb195801 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-46-6307539.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-46-6307539.md @@ -1715,6 +1715,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-48-fa1efac.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-48-fa1efac.md index a93d56fa..2d1d9879 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-48-fa1efac.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-48-fa1efac.md @@ -1961,6 +1961,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-50-759e9f3.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-50-759e9f3.md index ff001652..9f7ca336 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-50-759e9f3.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-50-759e9f3.md @@ -1581,6 +1581,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-52-849e1b6.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-52-849e1b6.md index 707dc4d0..448756d8 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-52-849e1b6.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-52-849e1b6.md @@ -1942,6 +1942,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-54-c838330.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-54-c838330.md index f71d305b..cf5b7621 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-54-c838330.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-54-c838330.md @@ -2151,6 +2151,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-56-108b7fd.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-56-108b7fd.md index 884db782..28473b65 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-56-108b7fd.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-56-108b7fd.md @@ -1680,6 +1680,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-58-7c927aa.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-58-7c927aa.md index eb753c94..751aee44 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-58-7c927aa.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-58-7c927aa.md @@ -1762,6 +1762,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-60-5a0e1f7.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-60-5a0e1f7.md index 3fa96711..a7c0361a 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-60-5a0e1f7.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-60-5a0e1f7.md @@ -184,7 +184,7 @@ UI5 evolutionThe hyphenation feature uses third-party and browser-native represe **Modular Core** -Existing modules in the modulare core have been reworked to follow the AMD-like \(asynchronous module definition\) syntax of SAPUI5, which ensures that modules and their dependencies can be loaded and evaluated asynchronously. The Asynchronous Module Definition \(AMD\) specifies a mechanism for defining modules so that the module and its dependencies can be loaded asynchronously. It allows you to avoid accessing modules via global variables and enforces a strict dependency declaration. The documentation has been enhanced accordingly and also made more prominent.For more information, see [Modules and Dependencies](../04_Essentials/modules-and-dependencies-91f23a7.md). +Existing modules in the modular core have been reworked to follow the AMD-like \(asynchronous module definition\) syntax of SAPUI5, which ensures that modules and their dependencies can be loaded and evaluated asynchronously. The Asynchronous Module Definition \(AMD\) specifies a mechanism for defining modules so that the module and its dependencies can be loaded asynchronously. It allows you to avoid accessing modules via global variables and enforces a strict dependency declaration. The documentation has been enhanced accordingly and also made more prominent.For more information, see [Modules and Dependencies](../04_Essentials/modules-and-dependencies-91f23a7.md). The core part of the framework has improved its modular structure by leveraging SAPUI5's AMD-like features such as [sap.ui.define](https://ui5.sap.com/#/api/sap.ui/methods/sap.ui.define) and [sap.ui.require](https://ui5.sap.com/#/api/sap.ui/methods/sap.ui.require). Already starting with 1.58, the former `jQuery.sap` modules were replaced by new, more granular modules. The new modules are separated either into a regular browser-dependent "UI" layer or into a "base" layer that is independent from the browser-native API and the DOM.For more information, see [Adapting to the Modularization of the Core](../04_Essentials/adapting-to-the-modularization-of-the-core-b8fdf0c.md). @@ -280,7 +280,7 @@ Control **`sap.ui.layout.cssgrid.CSSGrid`** -`sap.m.FlexBox` which is the one-dimensional alternative for layouting.A layout control, used to create full-page layouts or user interface elements. It is a two-dimensional layout based on the browser-native CSS display grid that handles both columns and rows. The control can be used together with +`sap.m.FlexBox` which is the one-dimensional alternative for layouting. A layout control, used to create full-page layouts or user interface elements. It is a two-dimensional layout based on the browser-native CSS display grid that handles both columns and rows. The control can be used together with ![](images/sap_ui_layout_cssgrid_CSSGrid_New_Control_2bdf9f5.png) @@ -1584,6 +1584,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-61-d991552.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-61-d991552.md index 5d98bc7c..bfd47988 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-61-d991552.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-61-d991552.md @@ -938,6 +938,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-62-771f4d5.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-62-771f4d5.md index 6523d036..0af66ed4 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-62-771f4d5.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-62-771f4d5.md @@ -868,6 +868,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-63-e8d9da7.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-63-e8d9da7.md index 771e477d..b2e9ec30 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-63-e8d9da7.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-63-e8d9da7.md @@ -810,6 +810,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-64-0e30822.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-64-0e30822.md index 96588ec2..dc3cae7c 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-64-0e30822.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-64-0e30822.md @@ -865,6 +865,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-65-0f5acfd.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-65-0f5acfd.md index 4f8c543b..a415f677 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-65-0f5acfd.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-65-0f5acfd.md @@ -857,6 +857,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-66-c9896e9.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-66-c9896e9.md index 9271325d..3b63abf1 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-66-c9896e9.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-66-c9896e9.md @@ -723,6 +723,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-67-a6b1472.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-67-a6b1472.md index b8ada857..296a0ecf 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-67-a6b1472.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-67-a6b1472.md @@ -543,6 +543,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-68-f94bf93.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-68-f94bf93.md index b0ad6188..0c309dca 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-68-f94bf93.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-68-f94bf93.md @@ -630,6 +630,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-69-89a18bd.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-69-89a18bd.md index 891f9fa5..32a63457 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-69-89a18bd.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-69-89a18bd.md @@ -837,6 +837,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-70-f073d69.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-70-f073d69.md index 7a4be3b1..3db9d7e6 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-70-f073d69.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-70-f073d69.md @@ -651,6 +651,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-71-a93a6a3.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-71-a93a6a3.md index 1c4df1f8..4d2769d3 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-71-a93a6a3.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-71-a93a6a3.md @@ -1042,6 +1042,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-72-521cad9.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-72-521cad9.md index b75f54a8..bb08ccda 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-72-521cad9.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-72-521cad9.md @@ -1019,6 +1019,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-73-231dd13.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-73-231dd13.md index 545bc9ff..3929b4a8 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-73-231dd13.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-73-231dd13.md @@ -1049,6 +1049,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-74-c22208a.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-74-c22208a.md index 12e4759b..727700cc 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-74-c22208a.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-74-c22208a.md @@ -1269,6 +1269,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-75-5cbb62d.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-75-5cbb62d.md index 7c0ce5ab..f9f628b4 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-75-5cbb62d.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-75-5cbb62d.md @@ -849,6 +849,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-76-aad03b5.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-76-aad03b5.md index 6bc7c055..682412d7 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-76-aad03b5.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-76-aad03b5.md @@ -907,6 +907,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-77-c46b439.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-77-c46b439.md index 27c851e3..99ae7647 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-77-c46b439.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-77-c46b439.md @@ -893,6 +893,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-78-f09b63e.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-78-f09b63e.md index 6b4bbb2d..9a5e6128 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-78-f09b63e.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-78-f09b63e.md @@ -707,6 +707,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-79-99c4cdc.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-79-99c4cdc.md index f9b3befd..824d97a8 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-79-99c4cdc.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-79-99c4cdc.md @@ -572,6 +572,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-80-8cee506.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-80-8cee506.md index dae83d39..f74d0549 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-80-8cee506.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-80-8cee506.md @@ -504,6 +504,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-81-f5e2a21.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-81-f5e2a21.md index c69c4e34..469fedc3 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-81-f5e2a21.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-81-f5e2a21.md @@ -849,6 +849,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-82-3a8dd13.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-82-3a8dd13.md index ea7edd66..38734a34 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-82-3a8dd13.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-82-3a8dd13.md @@ -519,6 +519,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-84-dc76640.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-84-dc76640.md index 9c2d0421..c1589480 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-84-dc76640.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-84-dc76640.md @@ -1117,6 +1117,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-85-1d18eb5.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-85-1d18eb5.md index bc9a21e6..848a84aa 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-85-1d18eb5.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-85-1d18eb5.md @@ -610,6 +610,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-86-4c1c959.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-86-4c1c959.md index 13b72dcb..f3f50dd2 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-86-4c1c959.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-86-4c1c959.md @@ -924,6 +924,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-87-b506da7.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-87-b506da7.md index 8798fac3..ae59b462 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-87-b506da7.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-87-b506da7.md @@ -1056,6 +1056,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-88-e15a206.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-88-e15a206.md index 928533e2..4a15f876 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-88-e15a206.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-88-e15a206.md @@ -970,6 +970,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-89-e56cddc.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-89-e56cddc.md index ce7de908..f71fc3da 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-89-e56cddc.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-89-e56cddc.md @@ -688,6 +688,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-90-91c10c2.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-90-91c10c2.md index fd85cb70..5fafe834 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-90-91c10c2.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-90-91c10c2.md @@ -840,6 +840,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-91-0a2bd79.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-91-0a2bd79.md index 24e764c8..00d19e77 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-91-0a2bd79.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-91-0a2bd79.md @@ -493,6 +493,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-92-1ef345d.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-92-1ef345d.md index 329cc19f..8ca67ba6 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-92-1ef345d.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-92-1ef345d.md @@ -633,6 +633,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-93-f273340.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-93-f273340.md index 360a6c24..57f952aa 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-93-f273340.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-93-f273340.md @@ -766,6 +766,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-94-c40f1e6.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-94-c40f1e6.md index c04e8409..181c0677 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-94-c40f1e6.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-94-c40f1e6.md @@ -570,6 +570,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-95-a1aea67.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-95-a1aea67.md index 4c6fe426..d4cbacae 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-95-a1aea67.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-95-a1aea67.md @@ -480,6 +480,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-96-7a9269f.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-96-7a9269f.md index c2bf3bdf..4b8bb53d 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-96-7a9269f.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-96-7a9269f.md @@ -741,6 +741,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-97-fa0e282.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-97-fa0e282.md index 22170f78..fabb7182 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-97-fa0e282.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-97-fa0e282.md @@ -792,6 +792,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-98-d9f16f2.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-98-d9f16f2.md index 4c58226e..d9596e61 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-98-d9f16f2.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-98-d9f16f2.md @@ -1074,6 +1074,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/01_Whats-New/what-s-new-in-sapui5-1-99-4f35848.md b/docs/01_Whats-New/what-s-new-in-sapui5-1-99-4f35848.md index 3d807d8d..bd327db9 100644 --- a/docs/01_Whats-New/what-s-new-in-sapui5-1-99-4f35848.md +++ b/docs/01_Whats-New/what-s-new-in-sapui5-1-99-4f35848.md @@ -580,6 +580,8 @@ Info Only **Related Information** +[What's New in SAPUI5 1.127](what-s-new-in-sapui5-1-127-e5e1317.md "With this release SAPUI5 is upgraded from version 1.126 to 1.127.") + [What's New in SAPUI5 1.126](what-s-new-in-sapui5-1-126-1d98116.md "With this release SAPUI5 is upgraded from version 1.125 to 1.126.") [What's New in SAPUI5 1.125](what-s-new-in-sapui5-1-125-9d87044.md "With this release SAPUI5 is upgraded from version 1.124 to 1.125.") diff --git a/docs/03_Get-Started/best-practices-for-developers-28fcd55.md b/docs/03_Get-Started/best-practices-for-developers-28fcd55.md index e109cad5..96172434 100644 --- a/docs/03_Get-Started/best-practices-for-developers-28fcd55.md +++ b/docs/03_Get-Started/best-practices-for-developers-28fcd55.md @@ -308,7 +308,7 @@ Prevent bundling modules \(`Component-preload.js`\) into strings. ### Models -- Take care of destroying programatically created models to prevent memory leaks. +- Take care of destroying programmatically created models to prevent memory leaks. - Built-in framework models \(such as `ODataModel` or `JSONModel`\) and their related classes are considered *final*. They must not be modified or extended. For more information, see [Custom Model](../04_Essentials/custom-model-91f1c7e.md). diff --git a/docs/03_Get-Started/step-1-hello-world-typescript-c20489e.md b/docs/03_Get-Started/step-1-hello-world-typescript-c20489e.md index f8939411..67a10e5c 100644 --- a/docs/03_Get-Started/step-1-hello-world-typescript-c20489e.md +++ b/docs/03_Get-Started/step-1-hello-world-typescript-c20489e.md @@ -98,7 +98,7 @@ Hence, we create a new file named `manifest.json` in the webapp folder and defin { "_version": "1.60.0", "sap.app": { - "id": "ui5.walkthrough" + "id": "ui5.walkthrough", "type": "application", "title": "UI5 TypeScript Walkthrough", "applicationVersion": { diff --git a/docs/03_Get-Started/step-25-remote-odata-service-4406244.md b/docs/03_Get-Started/step-25-remote-odata-service-4406244.md index 99865a41..eadb2505 100644 --- a/docs/03_Get-Started/step-25-remote-odata-service-4406244.md +++ b/docs/03_Get-Started/step-25-remote-odata-service-4406244.md @@ -53,7 +53,7 @@ metadata: type: application framework: name: OpenUI5 - version: "1.128.0" + version: "1.129.0" libraries: - name: sap.m - name: sap.ui.core diff --git a/docs/03_Get-Started/step-28-integration-test-with-opa-typescript-412f0b6.md b/docs/03_Get-Started/step-28-integration-test-with-opa-typescript-412f0b6.md index c7308f5e..71096105 100644 --- a/docs/03_Get-Started/step-28-integration-test-with-opa-typescript-412f0b6.md +++ b/docs/03_Get-Started/step-28-integration-test-with-opa-typescript-412f0b6.md @@ -82,7 +82,7 @@ export default class HelloPanelPage extends Opa5 { -## webapp/test/integration/NavigationJourney.ts \(New\) +## webapp/test/integration/NavigationJourney.js \(New\) We create a new `NavigationJourney.ts` file under `webapp/test/integration/`. @@ -103,7 +103,7 @@ The function `opaTest` is the main aspect for defining integration tests with OP Contains custom assertions that check a specific constellation in the application and the teardown function that removes our component again. -In our journey, we create a very simple test that starts the `MainPage` and loads our app. Then, we carry out the the actions we defined in our `MainPage` and expect that they will be executed successfully. Finally, we shut down the page again by calling the function `iTeardownMyApp` on the `MainPage`. +In our journey, we create a very simple test that starts the `MainPage` and loads our app. Then, we carry out the actions we defined in our `MainPage` and expect that they will be executed successfully. Finally, we shut down the page again by calling the function `iTeardownMyApp` on the `MainPage`. ```js import opaTest from "sap/ui/test/opaQunit"; diff --git a/docs/03_Get-Started/step-3-using-dynamic-page-for-the-list-view-0830bce.md b/docs/03_Get-Started/step-3-using-dynamic-page-for-the-list-view-0830bce.md index 4454b8fa..df9ffdf3 100644 --- a/docs/03_Get-Started/step-3-using-dynamic-page-for-the-list-view-0830bce.md +++ b/docs/03_Get-Started/step-3-using-dynamic-page-for-the-list-view-0830bce.md @@ -64,26 +64,10 @@ You can view and download all files at [Flexible Column Layout App - Step 3](htt First, we add the `sap.m` library as a dependency in the `manifest.json`. +> ### Note: +> We also need to modify the `ui5.yaml` file located in the root folder by adding the `sap.m` and `sap.f` libraries as a dependency. For more information, see the section about UI5 tooling in [The UI5 Ecosystem](../02_Read-Me-First/the-ui5-ecosystem-b72ccb5.md#loiob72ccb50eda94ac9b9be454a03ca4213). - - -## ui5.yaml \[MODIFY\] -```yaml -specVersion: "3.0" -metadata: - name: tutorial.fiori2 -type: application -framework: - name: OpenUI5 - version: "1.125.0" - libraries: - - name: sap.ui.core - - name: sap.m - - name: sap.f - - name: themelib_sap_horizon -``` -we add the `sap.m` and `sap.f` library as a dependency in the `ui5.yaml`. diff --git a/docs/03_Get-Started/step-30-routing-and-navigation-typescript-6173e3d.md b/docs/03_Get-Started/step-30-routing-and-navigation-typescript-6173e3d.md index 6e2e24fc..0311e58f 100644 --- a/docs/03_Get-Started/step-30-routing-and-navigation-typescript-6173e3d.md +++ b/docs/03_Get-Started/step-30-routing-and-navigation-typescript-6173e3d.md @@ -50,7 +50,7 @@ detailPageTitle=UI5 TypeScript Walkthrough - Details ## webapp/view/Detail.view.xml \(New\) -Now we add the new `Detail.view.xml` file to our view folder. Besides the the root node of the XML structure and the required namespaces, it only contains a `Page` control that displays the title we just defined in our resource boundle and an `ObjectHeader` control with a static text *Invoice* assigned to the `title` attribute \(this we will change in the next step\). +Now we add the new `Detail.view.xml` file to our view folder. Besides the root node of the XML structure and the required namespaces, it only contains a `Page` control that displays the title we just defined in our resource bundle and an `ObjectHeader` control with a static text *Invoice* assigned to the `title` attribute \(this we will change in the next step\). ```xml ### Note: > The possible values for `routerClass` are `sap.ui.core.routing.Router`, `sap.m.routing.Router`, or any other subclass of `sap.ui.core.routing.Router`. Compared to `sap.ui.core.routing.Router`, the `sap.m.routing.Router` is optimized for mobile apps and adds the properties `level`, `transition` and `transitionParameters`, which can be specified for each route or target created by `sap.m.routing.Router`. diff --git a/docs/03_Get-Started/step-38-build-your-application-typescript-be33d01.md b/docs/03_Get-Started/step-38-build-your-application-typescript-be33d01.md index a189f4f8..fac6a242 100644 --- a/docs/03_Get-Started/step-38-build-your-application-typescript-be33d01.md +++ b/docs/03_Get-Started/step-38-build-your-application-typescript-be33d01.md @@ -29,7 +29,7 @@ You can view all files at [OpenUI5 TypeScript Walkthrough - Step 38: Build Your ## package.json -Now we create a production-ready version of our SAPUI5 applicaiton that can be deployed to a web server or any other platform. For this we introduce a new `build` script to the `package.json`. This script starts the `ui5 build` command, which initiates the build process using the UI5 build tool. It compiles and bundles all the necessary resources, such as JavaScript, CSS, and other assets, into a deployable format. By adding the `--all` option to the build script, we specify that all available resources should be built including framework dependencies \(e.g. `sap.ui.core`, etc.\) .It ensures that all dependencies and resources required by the application are included in the final build. The `--clean-dest` flag tells the build tool to clean the destination folder before generating a new build. It ensures that any previous build artifacts are removed before the new build is created. +Now we create a production-ready version of our SAPUI5 application that can be deployed to a web server or any other platform. For this we introduce a new `build` script to the `package.json`. This script starts the `ui5 build` command, which initiates the build process using the UI5 build tool. It compiles and bundles all the necessary resources, such as JavaScript, CSS, and other assets, into a deployable format. By adding the `--all` option to the build script, we specify that all available resources should be built including framework dependencies \(e.g. `sap.ui.core`, etc.\) .It ensures that all dependencies and resources required by the application are included in the final build. The `--clean-dest` flag tells the build tool to clean the destination folder before generating a new build. It ensures that any previous build artifacts are removed before the new build is created. ``` { diff --git a/docs/03_Get-Started/step-4-quick-filter-for-the-worklist-85ec3a9.md b/docs/03_Get-Started/step-4-quick-filter-for-the-worklist-85ec3a9.md index a4d74a02..69bc3ea4 100644 --- a/docs/03_Get-Started/step-4-quick-filter-for-the-worklist-85ec3a9.md +++ b/docs/03_Get-Started/step-4-quick-filter-for-the-worklist-85ec3a9.md @@ -26,15 +26,19 @@ You can view and download all files in the Demo Kit at [Worklist App - Step 4](h ```xml - + + + headerPinnable="false" + toggleHeaderOnTitleClick="false"> + + + + </semantic:titleHeading> + <semantic:headerContent> <IconTabBar id="iconTabBar" @@ -80,7 +84,7 @@ You can view and download all files in the Demo Kit at [Worklist App - Step 4](h id="shareEmail" press="onShareEmailPress"/> </semantic:sendEmailAction> - </semantic:FullscreenPage> + </semantic:SemanticPage> </mvc:View> ``` diff --git a/docs/03_Get-Started/step-6-a-first-opa-test-1b47457.md b/docs/03_Get-Started/step-6-a-first-opa-test-1b47457.md index 676b4620..861c41a6 100644 --- a/docs/03_Get-Started/step-6-a-first-opa-test-1b47457.md +++ b/docs/03_Get-Started/step-6-a-first-opa-test-1b47457.md @@ -80,7 +80,7 @@ sap.ui.define([ }); ``` -Let’s add our first new OPA test to the `WorklistJourney.js` file. We describe all test cases related to the worklist logic. We can see that there is already a test `Should see the table with all posts` defined that checks if the table contains the expected number of items. There is a function `opaTest` that initiates a test and receives a test description as the first argument as well as a callback function as the second argument. This format is similar to the unit test function `QUnit.test` except for the three arguments of the callback function that are specific to OPA. +Let’s add our first new OPA test to the `WorklistJourney.js` file. We describe all test cases related to the worklist logic. We can see that there is already a test `Should see the table with all posts` defined that checks if the table contains the expected number of items. There is a function `opaTest` that initiates a test description and receives a test description as the first argument as well as a callback function as the second argument. This format is similar to the unit test function `QUnit.test` except for the three arguments of the callback function that are specific to OPA. The three objects `Given`, `When`, `Then` are filled by the OPA runtime when the test is executed and contain the `arrangements`, `actions`, and `assertions` for the test. The "Given-When-Then" pattern is a common style for writing tests in a readable format. To describe a test case, you basically write a user story. Test cases in this format are easy to understand, even by non-technical people. @@ -186,14 +186,14 @@ sap.ui.define([ As you can see, the OPA page object is constructed with the call `Opa5.createPageObjects` and a `configuration` object that contains the actions and assertions properties. -For our test case we need to add an action `iPressOnMoreData` and an existing assertion `theTableShouldHaveAllEntries`. OPA tests are running asynchronously, so each action and assertion starts with a `waitFor` statement. The OPA runtime will check and wait for the condition to be fulfilled every 400 ms by polling. If the condition is met, the `success` function of the configuration is called. If the condition is still not fulfilled after a certain amount of time \(by default it is 15 seconds but this can be configured\) the test will fail. +For our test case we need to add an action `iPressOnMoreData` and an existing assertion `theTableShouldHaveAllEntries`. OPA tests are running asynchronously, so each action and assertion starts with a `waitFor` statement. The OPA run time will check and wait for the condition to be fulfilled every 400 ms by polling. If the condition is met, the `success` function of the configuration is called. If the condition is still not fulfilled after a certain amount of time \(by default it is 15 seconds but this can be configured\) the test will fail. Let’s start with the action `iPressOnMoreData`. We define a `waitFor` statement with the current view and the table. Those IDs are stored as internal variables in the `require` statement above and are available in all tests. OPA will now try to find the table based on IDs. As soon as the table is available on the screen and it can be interacted with \(it is visible, not busy,...\), the `Press` action is invoked, if not, the error message is displayed and the test fails. When executed on a table, the `Press` action will simulate that a users chooses the *More Data* button. > ### Note: > The `Press` action depends on the control that it is triggered on and has a default behavior for most UI controls. If you, for example, execute `Press` on a `sap.m.Page`, this will trigger the *Back* button's `Press` event. This behavior can be overridden by passing an ID as argument to the action. For more information, see the [API Reference: `sap.ui.test.actions.Press`](https://ui5.sap.com/#/api/sap.ui.test.actions.Press). -The assertion `theTableShouldHaveAllEntries` is structured similarly, but it does not trigger an action. Here, we use the `success` function of `waitFor` to assert if our application is in the expected state. This state is defined by the matchers \(in our case we expect that the list contains 23 items by using the `AggregationLengthEquals`. The `success` function does not execute the additional checks that are needed for triggering an action. The list does not have to be `interactable` to verify that the state of the application is correct. +The assertion `theTableShouldHaveAllEntries` is structured similarly, but it does not trigger an action. Here, we use the `success` function of `waitFor` to assert if our application is in the expected state. This state is defined by the matchers \(in our case we expect that the list contains 23 items by using the `AggregationLengthEquals`. The `success` function does not execute the additional checks that are needed for triggering an action. the liste does not have to be `interactable` to verify that the state of the application is correct.. With this helper object we can simply check the length of the table aggregation `items` to the expected number of items. We have 23 entries in our local mock data that we also use for this integration test. You can see that the number of items is actually hard-coded in the test. So only if the table has exactly 23 items, the matcher is evaluating to `true` and the assertion is passed successfully. diff --git a/docs/04_Essentials/concept-and-basic-setup-22f50c0.md b/docs/04_Essentials/concept-and-basic-setup-22f50c0.md new file mode 100644 index 00000000..a5d92d87 --- /dev/null +++ b/docs/04_Essentials/concept-and-basic-setup-22f50c0.md @@ -0,0 +1,119 @@ +<!-- loio22f50c0f0b104bf3ba84620880793d3f --> + +# Concept and Basic Setup + +To apply the test starter concept to your SAPUI5 project, you need to create a test suite and a generic test page that allows for the running of one or multiple test modules. + +> ### Note: +> For SAPUI5 applications, the test suite and the generic test page are typically placed in the `webapp/test` folder. The code samples in the next sections use `<NAMESPACE>` as a placeholder for your SAPUI5 project namespace. Please, replace this placeholder with your SAPUI5 project namespace defined in the `sap.app/id` property in the `manifest.json` file by replacing the '.' with '/', for example `my/ui5app`. + + + + + +<a name="loio22f50c0f0b104bf3ba84620880793d3f__section_v1s_4qg_vcc"/> + +## The UI5 Test Suite + +A test suite configures the environment for the tests. It consists of a `*.qunit.html` page often named `testsuite.qunit.htm`l and a corresponding `*.qunit.js` module often named `testsuite.qunit.js`. + + + +### The UI5 Test Suite Page + +The test suite page uses the `sap/ui/test/starter/createSuite.js` script to initialize the test suite in a way which is compliant to the content security policy, based on the externalized test configuration provided in the test suite module. + +``` + +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <base href="../"> + <title>QUnit test suite for NAMESPACE + + + + + + +``` + + + + + +### The UI5 Test Suite Module + +The test suite module represents the configuration file for the UI5 test suite. The module must return a configuration object in the following structure: + +``` + +sap.ui.define(function() { + "use strict"; + + return { + defaults: { + page: "test/Test.qunit.html?testsuite={suite}&test={name}", + qunit: { + version: 2 + }, + sinon: { + version: 4 + }, + ui5: { + language: "EN", + theme: "sap_horizon" + }, + coverage: { + only: "/", + never: "/test/" + }, + loader: { + paths: { + "": "./" + } + } + }, + tests: {} + }; +}); + +``` + +The `tests` object is empty for now. For more information on how to add a defined test module to an existing test suite, see [Adding a QUnit Test Module to a Test Suite](creating-a-qunit-test-7080029.md#loio708002929ea548fd9433954a9275eb5f__section_hp4_xhn_vcc). + + + + + +## The Generic Test Page + +The generic test page runs one or multiple test modules. Typically, this file is named `test.qunit.html`. The generic test page is configured in the test suite module. It will be called with the test suite and test name in order to run a test. + +``` + + + + + + + + + +
+
+ +``` + diff --git a/docs/04_Essentials/configuration-options-738ed02.md b/docs/04_Essentials/configuration-options-738ed02.md new file mode 100644 index 00000000..014be176 --- /dev/null +++ b/docs/04_Essentials/configuration-options-738ed02.md @@ -0,0 +1,177 @@ + + +# Configuration Options + +The UI5 test suite module contains the configuration for the UI5 test suite. + +The following options are available on the `defaults` and the individual test configuration objects: + +> ### Note: +> The values used in the following code are the default values and are used as a fallback for options that are not defined in the configuration file - neither in the `defaults` object, nor in an individual test configuration object. + +``` + +{ + /* + * ID(s) of the module(s) to load. + * + * Can either be a single string or an array of strings. + * Each string might start with a leading "./" + * when the test module is located in the same folder + * as the testsuite configuration. + * You can use the following placeholder: + * {name} - name of the current test module + */ + module: "./{name}.qunit", + + + /* + * URL of the test page to start for this test. + * + * By default, all tests use the generic starter page which reads the suite + * configuration, finds the tests and starts the configured test components + * before it requires and executes the configured test module(s). + * + * The URL must be relative to the application root and can use the following + * placeholders, enclosed in curly braces: + * {suite} - name of the testsuite (configuration) + * {name} - name of the current test module + */ + page: "resources/sap/ui/test/starter/Test.qunit.html?testsuite={suite}&test={name}", + + + /* + * Title of the test. + * The URL must be relative to the application root and can use the following + * placeholders, enclosed in curly braces: + * {suite} - name of the testsuite (configuration) + * {name} - name of the current test module + */ + title: "QUnit tests '{name}' of suite '{suite}'", + + + /* + * QUnit configuration. + * + * Either can be a null or false or an object with the properties documented below. + * The values null and false are equivalent to the object { version: null } + */ + qunit: { + /* + * Version of QUnit that should be loaded. + * If set to a null, QUnit won't be loaded. + * If set to "edge", the newest available version of QUnit will be used. + * If set to a number, the corresponding version of QUnit will be used if supported. + * Currently supported versions are 1 and 2, an error will be thrown for unsupported versions. + */ + version: "edge", + + /* + * Most statically configurable options from QUnit.config can be configured, + * e.g. reorder, blocking etc. + * Note that 'autostart' is an exception. To avoid timing issues with asynchronous test + * loading, 'autostart' will always be set to false. Only after all tests have been loaded, + * QUnit.start() will be called, either by the generic test starter or by the test module itself, + * see the general test option 'autostart' below. + */ + // reorder: true // only serves as an example, not part of the internal defaults of the starter + }, + + /* + * Sinon.JS configuration. + * + * Either can be a null or false or an object with the properties documented below. + * The values null and false are equivalent to the object { version: null } + */ + sinon: { + + /* + * Version of Sinon.JS that should be loaded. + * If set to null, Sinon won't be loaded. + * If set to "edge", the newest available version of Sinon will be used. + * If set to a number, the corresponding version of Sinon will be used if supported. + * Currently supported are versions 1 and 4, an error will be thrown for unsupported versions. + */ + version: "edge", + + /* + * Whether one of the sinon-qunit bridges will be loaded. + * When set to true, the sap/ui/thirdparty/sinon-qunit bridge will be loaded for Sinon 1 + * and the sap/ui/qunit/sinon-qunit-bridge will be loaded for newer versions of Sinon. + * + * The bridge will only be loaded after both, QUnit and Sinon.JS have been loaded. + * If either QUnit or Sinon.JS are not loaded, no bridge will be loaded. + * + * If Sinon.JS is not loaded, but QUnit, the bridge will not be loaded, but a shim + * with dependencies will be configured. This allows tests to load Sinon.JS/the bridge on + * their own without taking care of the bridge dependencies. + */ + qunitBridge: true, + + + /* + * Any other statically configurable Sinon option can be specified as well. + * Note that they only play a role when a sandbox is used. + */ + useFakeTimers: false, + useFakeServer: false + }, + + + /* + * Code coverage options. + * The qunit-coverage module will always be loaded after QUnit has been loaded to enable the coverage + * option. When the 'coverage' parameter is set in the URL (e.g. because the coverage checkbox has been + * clicked), then blanket will be loaded before qunit-coverage to avoid synchronous loading of it. + */ + coverage: { + only: null, + never: null, + branchTracking: false + }, + + /* + * UI5 runtime configuration options. + * + * All properties will be copied to window["sap-ui-config"]. + * If window["sap-ui-config"] doesn't support it or if the value is of a type + * not supported for window["sap-ui-config"], executing the UI5 Core might fail. + * + * Only exception for now: the libs property can be an array of library names, + * not only a comma separated string. + * + * To ease test development, the following defaults are defined by the test starter: + */ + ui5: { + noConflict: true, + libs: [], + theme: "sap_horizon" + }, + + + /* + * Whether the UI5 Core (sap/ui/core/Core.js) should be required and booted. + * + * When this option is true, the Core is not only loaded and started, but loading and execution + * of the test module(s) is also delayed until the Promise resolves which is returned from Core.ready() + * ("Core" required from module "sap/ui/core/Core"). + */ + bootCore: true, + + + /* + * Whether the test starter should call QUnit.start() after all prerequisites have been fulfilled + * (e.g. QUnit, Sinon, a bridge, have been loaded, coverage tooling has been loaded and configured, + * the Core has been booted, the test modules have been loaded and executed). + */ + autostart: true, + + + /* + * Whether the test starter should skip a test file. Such tests will remain in the overview list, + * but won't be executed in the test suite. + */ + skip: false +}; +``` + diff --git a/docs/04_Essentials/creating-a-qunit-test-page-7080029.md b/docs/04_Essentials/creating-a-qunit-test-7080029.md similarity index 70% rename from docs/04_Essentials/creating-a-qunit-test-page-7080029.md rename to docs/04_Essentials/creating-a-qunit-test-7080029.md index fd1b7062..4d5ce981 100644 --- a/docs/04_Essentials/creating-a-qunit-test-page-7080029.md +++ b/docs/04_Essentials/creating-a-qunit-test-7080029.md @@ -1,49 +1,49 @@ -# Creating a QUnit Test Page +# Creating a QUnit Test + + ## Prerequisites -As a prerequisite for creating a test, you need to have created a SAPUI5 application \(such as `myapp`\). Once you have done this, continue with the steps described below. +As a prerequisite for creating a test, you need to have created a SAPUI5 application project that contains a test suite. For more information on how to do this, see [Concept and Basic Setup](concept-and-basic-setup-22f50c0.md). After completing this, continue with the steps described in the subsequent sections. -## Creating a Test Page +## Creating a Test Module -Create a QUnit test module `myqunittest.qunit.js` in the folder `test-resources/`. +Create a file `MyTest.qunit.js` in the folder `webapp/test/unit`. > ### Note: -> The file name `XYZ.qunit.js` is a recommendation to clearly indicate that this is a QUnit test. Technically, the `.qunit` name extension is not required. +> You can use the file template shown in the following example. This code snippet shows a basic QUnit test template. -You can use the file template shown below. This code snippet shows a basic QUnit test template which is used for SAPUI5 control tests. - -Each test file represents a UI5 module. +Each test file normally represents a SAPUI5 module, which is being tested. ```js /*global QUnit */ sap.ui.define([], function() { - "use strict"; + "use strict"; - QUnit.module("Module A"); + QUnit.module("Module A"); - QUnit.test("1. a basic test example", 2, function (assert) { - assert.ok(true, "this test is fine"); - var value = "hello1"; - assert.equal(value, "hello1", "We expect value to be 'hello1'"); - }); + QUnit.test("Basic test example", function(assert) { + assert.ok(true, "this test is fine"); + var value = "hello1"; + assert.equal(value, "hello1", "We expect value to be 'hello1'"); + }); }); ``` -This QUnit test file does not include the SAPUI5 bootstrap \(`sap-ui-core.js`\). The test starter ensures that the QUnit tests are loaded within an HTML page. +QUnit test files do not include the SAPUI5 bootstrap \(`sap-ui-core.js`\). Instead, the test starter ensures that the QUnit tests are loaded within an HTML page. -## Writing Test Functions +## Writing Tests -Write your test code \(like in the following example\) into the template introduced in the previous section: +Write your test code as shown in the following example into the template introduced in the previous section: ```js /*global QUnit */ @@ -138,5 +138,41 @@ sap.ui.define(["sap/m/Button", "sap/ui/qunit/QUnitUtils", "sap/ui/qunit/utils/cr QUnitUtils.triggerKeydown("myButton", "ENTER"); assert.ok(true, "this test is not executed asynchronously"); }); +}); + ``` + + +
+ +## Adding a QUnit Test Module to a Test Suite + +In order to run a QUnit test, the corresponding module needs to be added to a test suite. + +``` + +sap.ui.define(function() { + "use strict"; + + return { + + // ... + + tests: { + "unit/MyTest": { + title: "Unit tests for " + }, + } + }; +}); +``` + + + + + +## Running a QUnit Test + +Open the test suite `html` file in your desired browser to run the newly created test module. + diff --git a/docs/04_Essentials/currency-formatting-e978728.md b/docs/04_Essentials/currency-formatting-e978728.md index 8f14c318..969f72fd 100644 --- a/docs/04_Essentials/currency-formatting-e978728.md +++ b/docs/04_Essentials/currency-formatting-e978728.md @@ -70,7 +70,9 @@ oCurrencyFormat.parse("EUR 12,345.678"); // output: [12345.678, "EUR"] ``` -For more information, see [parse](https://ui5.sap.com/#/api/sap.ui.core.format.NumberFormat/methods/parse) +For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.ui.core.format.NumberFormat/methods/parse). + +For information on the validation of parsed numerical input, see [Parsing](number-format-91f2f28.md#loio91f2f2866f4d1014b6dd926db0e91070__section_NFP). diff --git a/docs/04_Essentials/data-aggregation-and-recursive-hierarchy-7d91431.md b/docs/04_Essentials/data-aggregation-and-recursive-hierarchy-7d91431.md index ea7f8ae7..223bc655 100644 --- a/docs/04_Essentials/data-aggregation-and-recursive-hierarchy-7d91431.md +++ b/docs/04_Essentials/data-aggregation-and-recursive-hierarchy-7d91431.md @@ -132,7 +132,7 @@ Use the `grandTotalAtBottomOnly` or `subtotalsAtBottomOnly` property with values - + ## Filtering @@ -182,9 +182,9 @@ The `@$ui5.node.level` and `@$ui5.node.isExpanded` client-side instance annotati Since 1.125.0, a recursive hierarchy need not be read-only, but maintenance is supported, namely: - **Update of arbitrary properties**, including any corresponding side effects. Note that a side-effects refresh needs to be requested explicitly if the change affects the hierarchy \(node IDs, parent/child relations, or sibling order\); this is not done by the model itself. -- **Creation of new nodes**, either as new root nodes or below an existing parent node. Creation is even supported if the parent was a leaf before, however it is not supported for a collapsed parent.For more details, see [`v4.ODataListBinding#create`](https://ui5.sap.com/#api/sap.ui.model.odata.v4.ODataListBinding/methods/create) and "`@$ui5.node.parent`" therein. +- **Creation of new nodes**, either as new root nodes or below an existing parent node. Creation is even supported if the parent was a leaf before, however it is not supported for a collapsed parent.For more details, see [`v4.ODataListBinding#create`](https://ui5.sap.com/#api/sap.ui.model.odata.v4.ODataListBinding/methods/create) and "`@$ui5.node.parent`" therein. Unless the `createInPlace` parameter is used, a newly created node is displayed even if it does not match current filters, and it is always shown in the first position among its siblings, independent of the current sort order or its real back-end position; this is called "out of place". - **Deletion of existing nodes**; see [`v4.Context#delete`](https://ui5.sap.com/#api/sap.ui.model.odata.v4.Context/methods/delete). Note that the deletion is first done on the server and only later shown on the client. Thus, the group ID must not have submit mode "API". -- **Moving of nodes**. You can change the parent node, including turning a child node into a root node and vice versa, and you can also change the sibling position, including making a node the last one among its siblings or moving it just before a specified sibling. For more details, see [`v4.Context#move`](https://ui5.sap.com/#api/sap.ui.model.odata.v4.Context/methods/move). Note that `nextSibling` requires a ["com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchyActions"](https://github.com/SAP/odata-vocabularies/blob/main/vocabularies/Hierarchy.md#RecursiveHierarchyActions) annotation with at least a `ChangeNextSiblingAction`. +- **Moving of nodes**. You can change the parent node, including turning a child node into a root node and vice versa, and you can also change the sibling position, including making a node the last one among its siblings or moving it just before a specified sibling. For more details, see [`v4.Context#move`](https://ui5.sap.com/#api/sap.ui.model.odata.v4.Context/methods/move). Note that `nextSibling` requires a ["com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchyActions"](https://github.com/SAP/odata-vocabularies/blob/main/vocabularies/Hierarchy.md#RecursiveHierarchyActions) annotation with at least a `ChangeNextSiblingAction`. An out-of-place node has no preceding sibling and thus cannot be moved up. Each out-of-place node with the same parent has the same following sibling, namely that parent's first in-place \(that is, not out-of-place\) node; that following sibling is `null` if the parent has no in-place children. A similar consideration applies for out-of-place root nodes. This way, you can move out-of-place nodes down so that they become in-place nodes; thus, you actively determine their position among their siblings. A first in-place node has no preceding sibling even if out-of-place nodes are present; thus, an in-place node cannot be moved up in order to become out-of-place \(again\). Note that only one such change must be pending at any point in time. That is, you must wait for one change to be completed before starting the next change. The only exception is property updates, for which multiple properties can be combined as usual. diff --git a/docs/04_Essentials/deprecated-jquery-sap-api-replacement-a075ed8.md b/docs/04_Essentials/deprecated-jquery-sap-api-replacement-a075ed8.md index 1de56d88..7f08b256 100644 --- a/docs/04_Essentials/deprecated-jquery-sap-api-replacement-a075ed8.md +++ b/docs/04_Essentials/deprecated-jquery-sap-api-replacement-a075ed8.md @@ -2389,6 +2389,16 @@ Complex Replacement +**Apps Used Within the SAP Fiori launchpad** + +Register your local UI5 reuse components and UI5 libraries in the manifest.json under `sap.ui5/componentUsages` and `sap.ui5/dependencies/libs`, respectively. For more information, see [Descriptor for Applications, Components, and Libraries \(manifest.json\)](descriptor-for-applications-components-and-libraries-manifest-json-be0cf40.md) and [Descriptor Dependencies to Libraries and Components](descriptor-dependencies-to-libraries-and-components-8521ad1.md). + +**Standalone Apps** + +`jQuery.sap.registerModulePath` can also be replaced with `data-sap-ui-resource-roots` in the index.html. + +To load resources from a third-party server, use + ``` sap.ui.loader.config({paths:{"myPath": "some/path"}}); ``` @@ -2415,6 +2425,16 @@ Complex Replacement +**Apps Used Within the SAP Fiori launchpad** + +Register your local UI5 reuse components and UI5 libraries in the manifest.json under `sap.ui5/componentUsages` and `sap.ui5/dependencies/libs`, respectively. For more information, see [Descriptor for Applications, Components, and Libraries \(manifest.json\)](descriptor-for-applications-components-and-libraries-manifest-json-be0cf40.md) and [Descriptor Dependencies to Libraries and Components](descriptor-dependencies-to-libraries-and-components-8521ad1.md). + +**Standalone Apps** + +`jQuery.sap.registerResourcePath` can also be replaced with `data-sap-ui-resource-roots` in the index.html. + +To load resources from a third-party server, use + ``` sap.ui.loader.config({paths:{"myPath": "some/path"}}); ``` diff --git a/docs/04_Essentials/descriptor-for-applications-components-and-libraries-manifest-json-be0cf40.md b/docs/04_Essentials/descriptor-for-applications-components-and-libraries-manifest-json-be0cf40.md index f40e448b..8f942771 100644 --- a/docs/04_Essentials/descriptor-for-applications-components-and-libraries-manifest-json-be0cf40.md +++ b/docs/04_Essentials/descriptor-for-applications-components-and-libraries-manifest-json-be0cf40.md @@ -1140,6 +1140,23 @@ Version 66 1.65.0 + + + + + +Version 67 + + + + +\>=1.129 + + + + +1.66.0 + @@ -2244,7 +2261,7 @@ Specifies provided commands with a unique key/alias. Contains: - `shortcut`: String that describes a key combination. When the user presses the key combination, the command is triggered. -The name of the command that contains the `shortcut` definition acts as a prerequisite for using the `command` property of the [sap/ui/core/CommandExecution](https://ui5.sap.com/#/api/sap.ui.core.CommandExecution) module. +The name of the command that contains the `shortcut` definition acts as a prerequisite for using the `command` property of the `sap.ui.core.CommandExecution` module. For more information, see the [API Reference: `sap.ui.core.CommandExecution`](https://ui5.sap.com/#/api/sap.ui.core.CommandExecution). @@ -2523,7 +2540,7 @@ Current version of the `manifest.json` ``` { - "_version": "1.65.0", + "_version": "1.66.0", "start_url": "index.html", @@ -2775,7 +2792,7 @@ Current version of the `manifest.json` }] }, "dependencies": { - "minUI5Version": "1.126.0", + "minUI5Version": "1.129.0", "libs": { "sap.m": { "minVersion": "1.34.0" diff --git a/docs/04_Essentials/executing-a-qunit-test-a9c949c.md b/docs/04_Essentials/executing-a-qunit-test-a9c949c.md deleted file mode 100644 index 40dd6dc1..00000000 --- a/docs/04_Essentials/executing-a-qunit-test-a9c949c.md +++ /dev/null @@ -1,355 +0,0 @@ - - -# Executing a QUnit Test - - - -## Creating a QUnit TestSuite - -For running QUnit tests, you need a QUnit TestSuite which configures the environment for the test. You create the QUnit TestSuite as follows: - -1. Create a file named `testsuite.qunit.html`: - - ```html - - - - - - TestSuite myapp - - - - - - ``` - -2. Create an additional configuration file that contains references to all tests, for example, `testsuite.qunit.js`. - - -The QUnit test starter is configured with one configuration file per QUnit TestSuite. The file is a standard SAPUI5 AMD module \(using `sap.ui.define`\) which returns an object with the configuration. - -The configuration object is an object with the following top level properties: - -```js -sap.ui.define(function() { - "use strict"; - - return { - /* - * Name of the test suite. - * - * This name will be used in the title of the index page / testsuite page. - */ - name: "TestSuite for myapp", - /* - * An Object with default settings for all tests. - * - * The defaults and the test configuration will be merged recursively in a way - * that the merge contains properties from both, defaults and test config; - * if a property is defined by both config objects, the value from the test config will be used. - * There's no special handling for other types of values, e.g an array value in the defaults - * will be replaced by an array value in the test config. - */ - defaults: { - qunit: { - version: 2 - } - }, - - /* - * A map with the individual test configurations, keyed by a unique test name. - * - * There's no technical restriction for the length or the characters of the test names. - * The will be used only in the overview page showing all tests of your suite. - * - * But by default, the name is also used to derive the ID of the module that contains the test cases. - * It is therefore suggested to use module ID like names (no blanks, no special chars other than / or dot) - * If you have multiple tests that execute the same module but with different configurations - * (e.g. different QUnit versions or different URL parameters), you have to make up unique names - * and manually configure the module IDs for them. - */ - tests: { - - /* - * A test named 'myqunittest'. - * By default, it will require the module 'myqunittest.qunit' - * assuming that your testsuite configuration is stored in testsuite.qunit.js. - */ - myqunittest: { - title: "My QUnit test for myapp" - } - } - }; -}); - -``` - - - - - -## Starting the QUnit TestSuite - -After creating the QUnit TestModule, you can easily run this test without any tool in any browser by just using the URL of the QUnit TestSuite page, for example `http://localhost:8080/myapp/test-resources/testsuite.qunit.html`. This executes the test and informs you about its success or shows you any errors. - - - - - -## Migrating Existing HTML-based Testing Suites - -The migrating of existing HTML-based QUnit tests to the new QUnit test starter framework brings several benefits: - -- Code reduction by removing duplicated HTML environment code - -- Separation of concerns: test js code, html environment code, configuration code - -- CSP compliance: No inline JavaScript execution - - - - -### Extract Configuration from QUnit TestSuite and Tests - -The list of configured test pages as defined in the existing `testsuite.qunit.html` has to be transformed to the new configuration format described in the Configuration section. - -For each individual test page, the necessary configuration has to be extracted from the page itself: the QUnit version and Sinon version that is used, if a Bridge \(Sandbox\) is used and the options that are defined for the UI5 Core or for Code coverage etc.+ - -The configuration has to be stored in a new AMD module that has the same name as the QUnit TestSuite but ending with '.js' instead of '.html', for example, `testsuite.qunit.js`. - - - -### Make `testsuite.qunit.html` Use the Externalized Configuration - -The `testsuite.qunit.html` must be re-written to use the above mentioned `createSuite.js` script and to read the new configuration: - -`testsuite.qunit.html` - -```html - - - - - - - - - - - - - - - - - - -``` - -\(Semi-\)Automation - -The application `migrate.html` can automate parts of the above work. After starting it, it collects the names of existing QUnit TestSuites. This may take about 60 sec and provides a list of the existing QUnit TestSuites. Enter the name of one QUnit TestSuite. The application reads it, collect the tests, peeks into the individual test files to gather some of the configuration settings, and shows the resulting `testsuite.qunit.html` and `testsuite.qunit.js` in two code editors. You can use the shown code as a starting point for your migration. - - - -### Convert Test Pages to AMD Modules - -This step is potentially the biggest effort and it has to be done manually. In order that it can be used with the new testing / testsuite approach, note the following minimal requirements: - -- The HTML page is converted to an AMD JS module, using `sap.ui.define`. - -- The test configuration \(used testing framework components, UI5 Core setup ...\) has been added to the external configuration described above - -- The new module creates all QUnit tests on execution, not later. It does **not** call `QUnit.start()`. If, for some reason, the module cannot fulfill this task on execution, but has to wait for some asynchronous task, the test option `autostart` can be set to `false` and the test module can call `QUnit.start()` at an appropriate point in time. Note: Do not mix the test option `autostart` with the QUnit option `autostart`. - - -The following requirements that are optional: - -- The test code is fully cleaned up and no longer uses globals, only AMD references. - -- The test code no longer uses sync APIs. - - > ### Note: - > This will become a mandatory requirement for CSP level 2 policy as sync code loading always requires a kind of `eval`. - - - - - - -## Test Suite Configuration Options - -Both, the defaults and the individual test configurations have the same structure, which is documented in the following code snippet. The snippet also shows the internal defaults of the test starter. They are used as a fallback for options that are not defined in the configuration file \(neither defaults, nor individual tests\). - -```js -{ - /* - * ID(s) of the module(s) to load. - * - * Can either be a single string or an array of strings. - * Each string can use the following placeholders - * leading "./" - package name of the testsuite configuration - * {name} - name of the current test - */ - module: "./{name}.qunit", - - - /* - * URL of the test page to start for this test. - * - * By default, all tests use the generic starter page which reads the suite - * configuration, finds the tests and starts the configured test components - * before it requires and executes the configured test module(s). - * - * The URL must be relative to the application root and can use the following - * placeholders, enclosed in curly braces: - * {suite} - name of the testsuite (configuration) - * {name} - name of the current test - */ - page: "resources/sap/ui/test/starter/Test.qunit.html?testsuite={suite}&test={name}", - - - /* - * Title of the test. - * The URL must be relative to the application root and can use the following - * placeholders, enclosed in curly braces: - * {suite} - name of the testsuite (configuration) - * {name} - name of the current test - */ - title: "QUnit tests '{name}' of suite '{suite}'", - - - /* - * QUnit configuration. - * - * Either can be a null or false or an object with the properties documented below. - * The values null and false are equivalent to the object { version: null } - */ - qunit: { - /* - * Version of QUnit that should be loaded. - * If set to a null, QUnit won't be loaded. - * If set to "edge", the newest available version of QUnit will be used. - * If set to a number, the corresponding version of QUnit will be used if supported. - * Currently supported versions are 1 and 2, an error will be thrown for unsupported versions. - */ - version: "edge", - - /* - * Most statically configurable options from QUnit.config can be configured, - * e.g. reorder, blocking etc. - * Note that 'autostart' is an exception. To avoid timing issues with asynchronous test - * loading, 'autostart' will always be set to false. Only after all tests have been loaded, - * QUnit.start() will be called, either by the generic test starter or by the test module itself, - * see the general test option 'autostart' below. - */ - // reorder: true // only serves as an example, not part of the internal defaults of the starter - }, - - /* - * Sinon configuration. - * - * Either can be a null or false or an object with the properties documented below. - * The values null and false are equivalent to the object { version: null } - */ - sinon: { - - /* - * Version of Sinon that should be loaded. - * If set to null, Sinon won't be loaded. - * If set to "edge", the newest available version of Sinon will be used. - * If set to a number, the corresponding version of Sinon will be used if supported. - * Currently supported are versions 1 and 4, an error will be thrown for unsupported versions. - */ - version: "edge", - - /* - * Whether one of the sinon-qunit bridges will be loaded. - * When set to true, the sap/ui/thirdparty/sinon-qunit bridge will be loaded for Sinon 1 - * and the sap/ui/qunit/sinon-qunit-bridge will be loaded for newer versions of Sinon. - * - * The bridge will only be loaded after both, QUnit and Sinon have been loaded. - * If either QUnit or Sinon are not loaded, no bridge will be loaded. - * - * If Sinon is not loaded, but QUnit, the bridge will not be loaded, but a shim - * with dependencies will be configured. This allows tests to load Sinon / the bridge on - * their own without taking care of the bridge dependencies. - */ - qunitBridge: true, - - - /* - * Any other statically configurable Sinon option can be specified as well. - * Note that they only play a role when a sandbox is used. - */ - useFakeTimers: false, - useFakeServer: false - }, - - - /* - * Code coverage options. - * The qunit-coverage module will always be loaded after QUnit has been loaded to enable the coverage - * option. When the 'coverage' parameter is set in the URL (e.g. because the coverage checkbox has been - * clicked), then blanket will be loaded before qunit-coverage to avoid synchronous loading of it. - */ - coverage: { - only: null, - never: null, - branchTracking: false - }, - - /* - * UI5 runtime configuration options. - * - * All properties will be copied to window["sap-ui-config"]. - * If window["sap-ui-config"] doesn't support it or if the value is of a type - * not supported for window["sap-ui-config"], executing the UI5 Core might fail. - * - * Only exception for now: the libs property can be an array of library names, - * not only a comma separated string. - * - * To ease test development, the following defaults are defined by the test starter: - */ - ui5: { - noConflict: true, - libs: [], - theme: "sap_horizon" - }, - - - /* - * Whether the UI5 Core (sap/ui/core/Core.js) should be required and booted. - * - * When this option is true, the Core is not only loaded and started, but loading and execution - * of the test module(s) is also delayed until the Promise resolves which is returned from Core.ready() - * ("Core" required from module "sap/ui/core/Core"). - */ - bootCore: true, - - - /* - * Whether the test starter should call QUnit.start() after all prerequisites have been fulfilled - * (e.g. QUnit, Sinon, a bridge, have been loaded, coverage tooling has been loaded and configured, - * the Core has been booted, the test modules have been loaded and executed). - */ - autostart: true, - - - /* - * Whether the test starter should skip a test file. Such tests will remain in the overview list, - * but won't be executed in the test suite. - */ - skip: false -}; -``` - diff --git a/docs/04_Essentials/identifying-the-language-code-locale-91f21f1.md b/docs/04_Essentials/identifying-the-language-code-locale-91f21f1.md index f9c38d3e..ddd233d8 100644 --- a/docs/04_Essentials/identifying-the-language-code-locale-91f21f1.md +++ b/docs/04_Essentials/identifying-the-language-code-locale-91f21f1.md @@ -57,7 +57,7 @@ These SAPUI5 configuration options accept the following formats: - `ZH` is the SAP language code for Simplified Chinese. The most generic representation in BCP 47 is `zh-Hans`. `zh-CN` \(Chinese, China\) is another representation, but SAPUI5 decided to use `zh-Hans`. + `ZH` is the SAP language code for Simplified Chinese. The most generic representation in BCP 47 is `zh-Hans`. While `zh-CN` \(Chinese, China\) is another representation, SAPUI5 decided to use `zh-Hans`. @@ -74,7 +74,7 @@ These SAPUI5 configuration options accept the following formats: - `ZF` is the SAP language code for Traditional Chinese. The most generic representation in BCP 47 is `zh-Hant`. `zh-TW` \(Chinese, Taiwan\) is another representation, but SAPUI5`zh-Hant`. + `ZF` is the SAP language code for Traditional Chinese. The most generic representation in BCP 47 is `zh-Hant`. While `zh-TW` \(Chinese, Taiwan\) is another representation, SAPUI5 decided to use `zh-Hant`. @@ -210,7 +210,7 @@ These SAPUI5 configuration options accept the following formats: - `` is also used as a technical SAP language code in support scenarios and displays a pseudo translation \("psd" in the private extension's name\). + `2Q` is also used as a technical SAP language code in support scenarios and displays a pseudo translation \("psd" in the private extensions name\). @@ -227,16 +227,16 @@ These SAPUI5 configuration options accept the following formats: - `3Q` is also used as a technical SAP language code in support scenarios and displays a pseudo translation \("rigi" in the private extension's name\). + `3Q` is also used as a technical SAP language code in support scenarios and displays a pseudo translation \("rigi" in the private extensions name\). > ### Note: - > Only these SAP-proprietary language codes are understood by SAPUI5SAP Fiori launchpad, all other SAP-proprietary language codes are handled by the . Other SAP-proprietary language codes are not automatically transformed. If you develop your app to run in the SAP Fiori launchpad. + > Only these SAP-proprietary language codes are understood by SAPUI5. Other SAP-proprietary language codes are not automatically transformed. If you develop your app to run in the SAP Fiori launchpad, all other SAP-proprietary language codes are handled by the SAP Fiori launchpad. > - > If you don't make use of the SAP Fiori launchpad. Other, you may have to explicitly implement the language handling. You can use the `sap/base/i18n/Localization.setLanguage()` method to provide both settings, a BCP 47 language code and the corresponding SAP-proprietary language\) in one call. SAPUI5 will then use one of the two codes where appropriate \(e.g. BCP 47 for the retrieval of translated texts or in HTTP Accept Headers, but the proprietary SAP language code when propagating the `sap-language` URL parameter to an OData service\). + > If you don't make use of the SAP Fiori launchpad, you may have to explicitly implement the language handling. You can use the `sap/base/i18n/Localization.setLanguage()` method to provide both settings, a BCP 47 language code and the corresponding SAP-proprietary language, in one call. SAPUI5 will then use one of the two codes where appropriate \(e.g. BCP 47 for the retrieval of translated texts or in HTTP Accept Headers, but the proprietary SAP language code when propagating the `sap-language` URL parameter to an OData service\). diff --git a/docs/04_Essentials/number-format-91f2f28.md b/docs/04_Essentials/number-format-91f2f28.md index 1fc5008d..0371c7ea 100644 --- a/docs/04_Essentials/number-format-91f2f28.md +++ b/docs/04_Essentials/number-format-91f2f28.md @@ -474,9 +474,11 @@ To control the start the starting point of numbers which should be displyed in c -## Parsing + -A formatted number which contains a locale-dependent grouping separator, decimal point, or percentage sign can be parsed into a number object using `sap.ui.core.format.NumberFormat`. Those number string may not be correctly parsed by using `parseInt` or `parseFloat` in JavaScript. +## Parsing and Validation of User Input + +You can parse a formatted number, which can contain locale-dependent grouping separators, a locale-dependent decimal separator or a percentage sign, into a number object using `sap.ui.core.format.NumberFormat`. Such a number string may not be correctly parsed by using `parseInt` or `parseFloat` in JavaScript. ```js // "NumberFormat" required from module "sap/ui/core/format/NumberFormat" @@ -486,6 +488,122 @@ oFloatFormat.parse("1,234.567"); // returns 1234.567 oFloatFormat.parse("12.34%"); // returns 0.1234 ``` +When users switch between multiple UIs, websites or editors, they may encounter different characters being used as decimal and grouping separators. This can lead to incorrect numerical input if the user assumes a locale different from the one actually used by the UI. For example, in English locales the grouping separator is a comma \(","\) and the decimal separator is a dot \("."\), whereas in German locales it is the other way around. + +To prevent an accidental mix-up of decimal and grouping separator in the user input, we have introduced a stricter parsing logic of `sap.ui.core.format.NumberFormat` by using **decimal separator validation** with an optional **strict grouping validation**. Instead of ignoring the grouping separators when parsing user input, several checks are now carried out on the grouping to identify potential input errors. + + + +### Decimal Separator Validation + +If not otherwise mentioned, the examples below are based on the US locale standard settings \(en-US\): + +```js +// "NumberFormat" required from module "sap/ui/core/format/NumberFormat" +var oOptions = { + groupingSeparator : ",", + decimalSeparator : ".", + groupingSize : 3 +}; +var oFloatFormat = NumberFormat.getFloatInstance(oOptions); +``` + +The following user input is now considered to be potentially wrong and therefore **invalid**: + +- There is no decimal separator and only one grouping separator, which occurs at an unexpected position. + + ```js + oFloatFormat.parse("1,2"); // NaN (before: 12) + oFloatFormat.parse("1,23"); // NaN (before: 123) + oFloatFormat.parse("1,2345"); // NaN (before: 12345) + ``` + + **Assumption:** As the position of the grouping separator does not match the locale-specific convention, the user might have intended to use a decimal separator but used a separator from a different locale by mistake. + +- There is no decimal separator, only a single grouping separator is present, and at least one additional grouping separator is missing, **including the least significant \(lowest\) grouping separator**. + + ```js + oFloatFormat.parse("1234,567891"); // NaN (before: 1234567891) + ``` + + **Assumption:** Any user aware of the right grouping separator would probably have added the missing grouping separator\(s\) as well. It is therefore likely that the grouping separator was confused with the decimal separator. + + +> ### Note: +> Regarding the return value, a number with invalid grouping is treated in the same way as user input that cannot be parsed: +> +> - Unit and currency instances return `null`. +> +> - Float, percent, and integer instances return `NaN`. +> +> +> ```js +> oFloatFormat.parse("1,2"); // NaN +> +> NumberFormat +> .getCurrencyInstance(oOptions) +> .parse("1,2 EUR"); // null +> ``` + +The following user input is considered to be **valid**: + +- There is no decimal separator, **only the least significant \(lowest\) grouping separator is present**, and at least one additional grouping separator is missing. + + ```js + oFloatFormat.parse("1234,567"); // 1234567 + ``` + + > ### Note: + > While the presence of a single grouping separator in combination with the absence of additional grouping separator\(s\) hints at a potential confusion with the decimal separator, the input is nevertheless accepted in this case. The reason for this is that UI5 validation would otherwise contradict the UI behavior implemented in classic SAP GUI applications. + + For an option to bring UI5 validation even closer to the behavior of the classic SAP GUI, see *Strict Grouping Validation* below. + +- At least 2 grouping separators are present in the input. + + ```js + oFloatFormat.parse("1234,567,892"); // 1234567892 + ``` + + **Assumption:** As more than one grouping separator was used and as decimal separators must only occur once, a mix-up of the separators can be ruled out. + +- One decimal separator and at least one grouping separator are present in correct sequential order. + + ```js + oFloatFormat.parse("1234,567.89"); // 1234567.89 + ``` + + **Assumption:** As both separators are used in the expected order, a wrong usage is not likely. + +- There are no decimal or grouping separators \(trivial as no misinterpretation possible\). + + ```js + oFloatFormat.parse("1234567891"); // 1234567891 + ``` + + + + +### Strict Grouping Validation \(optional\) + +For an even stricter parsing of number strings, you have the option of additionally enforcing **strict grouping validation** by setting the `strictGroupingValidation` format option to `true`.For more information, see the [API Reference](https://ui5.sap.com/#/api/sap.ui.core.format.NumberFormat). + +While grouping separators are then still treated as optional and can be wholly or partially absent from the input, all grouping separators that are present must be at a correct position according to the user's locale. Numbers with wrongly placed grouping separators are refused in all cases. This brings UI5 validation closer to the UI behavior implemented in classic SAP GUI applications. + +**Example:** + +```js +// "NumberFormat" required from module "sap/ui/core/format/NumberFormat" +var oOptions = { + groupingSeparator : ",", + decimalSeparator : ".", + groupingSize : 3, + strictGroupingValidation: true +}; +var oFloatFormat = NumberFormat.getFloatInstance(oOptions); + +oFloatFormat.parse("1,2,3"); // NaN (before: 123) +``` + **Related Information** diff --git a/docs/04_Essentials/test-starter-032be2c.md b/docs/04_Essentials/test-starter-032be2c.md new file mode 100644 index 00000000..9c2b806c --- /dev/null +++ b/docs/04_Essentials/test-starter-032be2c.md @@ -0,0 +1,19 @@ + + +# Test Starter + +The test starter is a concept intended to simplify the test setup for SAPUI5 applications and libraries by orchestrating your QUnit and OPA5 tests. + + + + + +## Goals + +Using the test starter concept in your project: + +- reduces the boiler plate code needed to write a QUnit test; +- ensures the loading of the most commonly used testing frameworks \(for example, QUnit, Sinon.JS, qunit-reporter\); +- ensures these testing frameworks and your test modules are loaded completely asynchronously and comply with the [Content Security Policy](../05_Developing_Apps/content-security-policy-fe1a6db.md); +- allows moving the configuration of the testing frameworks out of the test code. + diff --git a/docs/04_Essentials/typed-view-e6bb33d.md b/docs/04_Essentials/typed-view-e6bb33d.md index f32ad1b5..df9c1e90 100644 --- a/docs/04_Essentials/typed-view-e6bb33d.md +++ b/docs/04_Essentials/typed-view-e6bb33d.md @@ -64,8 +64,8 @@ The preferred way of instantiating a typed view is via the factory function [`sa ```js const oView = await View.create({ viewName: "module:myapp/views/MyView" - }) - oView.placeAt("content"); +}); +oView.placeAt("content"); ``` diff --git a/docs/04_Essentials/unit-formatting-8e618a8.md b/docs/04_Essentials/unit-formatting-8e618a8.md index a9de85f8..fe2165a5 100644 --- a/docs/04_Essentials/unit-formatting-8e618a8.md +++ b/docs/04_Essentials/unit-formatting-8e618a8.md @@ -39,6 +39,8 @@ sap.ui.require(["sap/ui/core/format/NumberFormat"], function(NumberFormat) { }); ``` +For information on the validation of parsed numerical input, see [Parsing](number-format-91f2f28.md#loio91f2f2866f4d1014b6dd926db0e91070__section_NFP). + ### Complex Sample diff --git a/docs/04_Essentials/variant-for-bootstrapping-from-content-delivery-network-2d3eb2f.md b/docs/04_Essentials/variant-for-bootstrapping-from-content-delivery-network-2d3eb2f.md index 6ba9b0d2..a82c1642 100644 --- a/docs/04_Essentials/variant-for-bootstrapping-from-content-delivery-network-2d3eb2f.md +++ b/docs/04_Essentials/variant-for-bootstrapping-from-content-delivery-network-2d3eb2f.md @@ -26,7 +26,7 @@ The specific version allows you to select a particular fixed version for bootstr ```html diff --git a/docs/05_Developing_Apps/allowlist-service-d04a6d4.md b/docs/05_Developing_Apps/allowlist-service-d04a6d4.md index 97b1c156..45f57a0e 100644 --- a/docs/05_Developing_Apps/allowlist-service-d04a6d4.md +++ b/docs/05_Developing_Apps/allowlist-service-d04a6d4.md @@ -25,7 +25,7 @@ The service responds to the request with a valid JSON: **Related Information** -[Frame Options](frame-options-62d9c4d.md "frame-options is used to prevent security vulnerabilities like clickjacking. With the frame-options configuration you define whether SAPUI5 is allowed to run embedded in a frame or only from trusted origins or not at all.") +[Frame Options](frame-options-62d9c4d.md "The frame-options configuration of SAPUI5 is a client-side feature that is used to prevent security vulnerabilities like clickjacking, that is, situations where a user could be misled to use the targeted application unintentionally.") [Configuration Options and URL Parameters](../04_Essentials/configuration-options-and-url-parameters-91f2d03.md "The following tables show available configuration options.") diff --git a/docs/05_Developing_Apps/frame-options-62d9c4d.md b/docs/05_Developing_Apps/frame-options-62d9c4d.md index 0f342ebd..5b3baaf6 100644 --- a/docs/05_Developing_Apps/frame-options-62d9c4d.md +++ b/docs/05_Developing_Apps/frame-options-62d9c4d.md @@ -2,9 +2,18 @@ # Frame Options -`frame-options` is used to prevent security vulnerabilities like clickjacking. With the `frame-options` configuration you define whether SAPUI5 is allowed to run embedded in a frame or only from trusted origins or not at all. +The `frame-options` configuration of SAPUI5 is a client-side feature that is used to prevent security vulnerabilities like clickjacking, that is, situations where a user could be misled to use the targeted application unintentionally. -SAPUI5 provides the following configuration options for `frame-options`: +> ### Note: +> SAPUI5's `frame-options` configuration is **not** the same as the `X-Frame-Options` HTTP response header. +> +> **SAPUI5's `frame-options`** is a front-end JavaScript feature that supports all browsers in the UI5 compatibility list. When set to `"deny"` or `"trusted"`, it places an invisible block layer over the page, preventing user interaction by disabling event propagation, e.g. for mouse and keyboard events. However, the page content remains visible. +> +> In contrast, the **`X-Frame-Options` header** is a back-end feature sent via HTTP response headers. It prevents the page from loading at the browser level if framing is not allowed. Although it supports `DENY` and `SAMEORIGIN`, it lacks comprehensive support for `ALLOW-FROM`, which is now deprecated in most browsers. This header must be set by the back end and may not be fully supported by all browsers. +> +> Additionally, the more recent **Content-Security-Policy \(CSP\) header**, also sent by the back end, includes the `frame-ancestors` directive, which provides better control over trusted sites and should be preferred over `X-Frame-Options` for embedding restrictions. + +SAPUI5 provides the following configuration options for `frame-options` to specify whether the target application is allowed to be used if it's embedded in a separate frame: @@ -28,7 +37,7 @@ Description @@ -122,7 +131,7 @@ Description @@ -171,7 +180,7 @@ After the delay, the page remains blocked and the provided callback is invoked \ @@ -193,7 +202,7 @@ Defines whether keyboard, mouse and touch events are blocked @@ -215,7 +224,7 @@ Defines whether an invisible block layer is rendered to prevent interaction with @@ -248,20 +257,21 @@ Contains the domain allowlist, for example `[".example.com"]`, `["hana.ondemand. -## Example: `deny` +## Example: `"deny"` -If the application is not intended to run in a frame, set `frame-options` to `deny`: +If the application is not intended to run in a frame, set `frame-options` to `"deny"`: ```html - ``` -## Example: `trusted` with `callback` +## Example: `"trusted"` with `callback` To restrict the embedding to same-origin domains, set `frame-options` to `trusted`. The `callback` in the following code sample is called with a boolean as success state and can be used to implement an application-specific behavior. @@ -281,8 +291,9 @@ globalThis["sap-ui-config"] = { } }; - ``` @@ -308,8 +319,9 @@ globalThis["sap-ui-config"] = { } }; - ``` @@ -317,12 +329,13 @@ globalThis["sap-ui-config"] = { ## Example: Allowlist Service via `` Tag -Alternatively, a `` tag can be used to configure the `sap-allowlist-service` and set the `sap-ui-frame-options` to `trusted`. This only applies if the `allowlist-service` or `frame-options` configuration is not set otherwise according to the [Configuration of the SAPUI5 Runtime](../04_Essentials/configuration-of-the-sapui5-runtime-91f08de.md). +Alternatively, a `` tag can be used to configure the `sap-allowlist-service` and set the `sap-ui-frame-options` to `"trusted"`. This only applies if the `allowlist-service` or `frame-options` configuration is not set otherwise according to the [Configuration of the SAPUI5 Runtime](../04_Essentials/configuration-of-the-sapui5-runtime-91f08de.md). ```html - ``` diff --git a/docs/06_SAP_Fiori_Elements/actions-cbf16c5.md b/docs/06_SAP_Fiori_Elements/actions-cbf16c5.md index a37415ed..a4e3f26a 100644 --- a/docs/06_SAP_Fiori_Elements/actions-cbf16c5.md +++ b/docs/06_SAP_Fiori_Elements/actions-cbf16c5.md @@ -881,7 +881,7 @@ You can use annotations to control the enablement of operations \(annotation-bas > ### Sample Code: > ABAP CDS Annotation > - > No ABAP CDS annotation is required, since the setting is made according to the modeling \(create, update, delete, etc.\) in RAP BDEF \(behavior definition\). + > No ABAP CDS annotation is required, since the setting is made according to the modelling \(such as create, update, or delete\) in RAP BDEF \(behavior definition\). > ### Sample Code: > CAP CDS Annotation @@ -911,7 +911,7 @@ You can use annotations to control the enablement of operations \(annotation-bas > ### Sample Code: > ABAP CDS Annotation > - > No ABAP CDS annotation is required, since the setting is made according to the modeling \(create, update, delete, etc.\) in RAP BDEF \(behavior definition\). + > No ABAP CDS annotation is required, since the setting is made according to the modelling \(such as create, update, or delete\) in RAP BDEF \(behavior definition\). > ### Sample Code: > CAP CDS Annotation diff --git a/docs/06_SAP_Fiori_Elements/adapting-the-filter-bar-609c39a.md b/docs/06_SAP_Fiori_Elements/adapting-the-filter-bar-609c39a.md index cbd50e0a..ba6ff70f 100644 --- a/docs/06_SAP_Fiori_Elements/adapting-the-filter-bar-609c39a.md +++ b/docs/06_SAP_Fiori_Elements/adapting-the-filter-bar-609c39a.md @@ -164,9 +164,6 @@ If the field groups don't contain all properties of the entity, the remaining pr ## Additional Features in SAP Fiori Elements for OData V2 -> ### Note: -> We've removed videos showing step-by-step procedures using SAP Web IDE, which SAP no longer actively supports. You can still access the video using an older version of this document. - To set default filter value, refer [Configuring Default Filter Values](configuring-default-filter-values-f27ad7b.md). For more information about the smart filter bar, see [SmartFilterBar](https://ui5.sap.com/#/api/sap.ui.comp.smartfilterbar.SmartFilterBar). @@ -309,7 +306,7 @@ SAP Fiori elements for OData V4 checks for the existence of the `tolower` filter @@ -396,9 +393,9 @@ You can add further clearing functionality by implementing the controller extens -### Hiding Filter Fields in the *Adapt Filters* Dialog +### Moving Filter Fields to the *Adapt Filters* Dialog -You can hide an explicitly included property in the *Adapt Filters* dialog using the `manifest.json` configuration mentioned here. +You can move the explicitly included filter fields in the filter bar to the *Adapt Filters* dialog by configuring the `manifest.json` file as follows: > ### Sample Code: > ``` @@ -420,14 +417,14 @@ You can hide an explicitly included property in the *Adapt Filters* dialog using > > ``` -All properties are included in the *Adapt Filters* dialog, except the ones that have filter restrictions and those that are marked as `@UI.Hidden`. +For more information about other possible values for the `availability` property, see the V4-specific section in [Adding Custom Fields to the Filter Bar](adding-custom-fields-to-the-filter-bar-5fb9f57.md). **Related Information** [Smart Filter Bar](../10_More_About_Controls/smart-filter-bar-7bcdffc.md "The sap.ui.comp.smartfilterbar.SmartFilterBar control analyzes the $metadata document of an OData service and renders a FilterBar control that can be used to filter, for example, a table or a chart.") -[Enabling the Search Function](enabling-the-search-function-3cdebee.md "You can enable the Search function in the list report, for example.") +[Enabling the Search Function](enabling-the-search-function-3cdebee.md "You can enable the Search function in the list report.") [Enabling Semantic Operators in the Filter Bar](enabling-semantic-operators-in-the-filter-bar-fef65d0.md "You can use semantic date values, such as Today or Last Week, on the filter bar of list report and analytical list page applications.") diff --git a/docs/06_SAP_Fiori_Elements/adding-a-section-to-an-object-page-a357047.md b/docs/06_SAP_Fiori_Elements/adding-a-section-to-an-object-page-a357047.md index 95825315..97ec0797 100644 --- a/docs/06_SAP_Fiori_Elements/adding-a-section-to-an-object-page-a357047.md +++ b/docs/06_SAP_Fiori_Elements/adding-a-section-to-an-object-page-a357047.md @@ -1,11 +1,36 @@ + + # Adding a Section to an Object Page You can add custom sections to your object page, as described in this document. + + +## Adding a Custom Section to an Object Page Using SAP Fiori Tools + +Find out how to add a section to an object page using SAP Fiori tools. + +1. Launch the *Page Map*. You can launch the *Page Map* in several ways, for example by right-clicking the project folder and selecting *Show Page Map*. For more information, see [Define Application Structure](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/bae38e6216754a76896b926a3d6ac3a9.html). +2. Launch the *Page Editor* for your object page. Click the :pencil2: \(*Edit*\) icon next to *Object Page*. +3. Click the :heavy_plus_sign: \(*Add*\) icon next to *Sections*. +4. Click *Add Custom Section*. +5. Provide a unique *Title*. +6. Provide a unique *Fragment Name*. +7. Select an *Anchor Section*. +8. Click *Add*. +9. To preview your new section, see [Previewing an Application](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/b962685bdf9246f6bced1d1cc1d9ba1c.html). + + The following screen recording shows how to add a new section: + + + + + + ## Additional Features in SAP Fiori Elements for OData V2 diff --git a/docs/06_SAP_Fiori_Elements/adding-a-section-to-an-object-page-using-sap-fiori-tools-9940cf0.md b/docs/06_SAP_Fiori_Elements/adding-a-section-to-an-object-page-using-sap-fiori-tools-9940cf0.md new file mode 100644 index 00000000..394dd64e --- /dev/null +++ b/docs/06_SAP_Fiori_Elements/adding-a-section-to-an-object-page-using-sap-fiori-tools-9940cf0.md @@ -0,0 +1,54 @@ + + + + +# Adding a Section to an Object Page Using SAP Fiori Tools + +Find out how to add a section to an object page using SAP Fiori tools. + +> ### Note: +> This topic is only applicable to SAP Fiori elements for OData V4. + + + + + +## Adding a New Section + +1. Launch the *Page Map*. You can launch the *Page Map* in several ways, for example by right-clicking the project folder and selecting *Show Page Map*. For more information, see [Define Application Structure](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/bae38e6216754a76896b926a3d6ac3a9.html). +2. Launch the *Page Editor* for your object page. Click the :pencil2: \(*Edit*\) icon next to *Object Page*. +3. Click the :heavy_plus_sign: \(*Add*\) icon next to *Sections*. +4. Select the type of section you wish to add. +5. Enter a name for the section. +6. Select the *Value Source* you wish to have from the dropdown. +7. Click *Add*. + + For more information about adding sections using SAP Fiori tools, see [Sections](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/2953503145dd428194c6dff252744ac1.html). + + + + + + +## Adding a Field to a Section + +1. Expand the *Sections* node in the outline tree. Click the \(*Arrow*\) icon next to a section and continue to expand the further levels. + + The following screenshot shows the outline of the application with the *Sections* node expanded: + + ![](images/Fiori_Tools_-_Business_Application_Studio_-_Sections_Dropdown_3f19523.png) + +2. Click the :heavy_plus_sign: \(*Add*\) icon next to *Fields*. +3. Click *Add Basic Fields*. +4. Select the fields you wish to add from the dropdown. +5. Click *Add*. + + For more information about adding fields using SAP Fiori tools, see [Basic Fields](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/2953503145dd428194c6dff252744ac1.html). + +6. To preview your new section, see [Previewing an Application](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/b962685bdf9246f6bced1d1cc1d9ba1c.html). + + The following screen recording shows how to add a new section: + + + + diff --git a/docs/06_SAP_Fiori_Elements/adding-custom-fields-to-the-filter-bar-5fb9f57.md b/docs/06_SAP_Fiori_Elements/adding-custom-fields-to-the-filter-bar-5fb9f57.md index 5a93d0d4..fbda0c72 100644 --- a/docs/06_SAP_Fiori_Elements/adding-custom-fields-to-the-filter-bar-5fb9f57.md +++ b/docs/06_SAP_Fiori_Elements/adding-custom-fields-to-the-filter-bar-5fb9f57.md @@ -171,7 +171,7 @@ You can configure the `FilterBar` in the controller extension locally using the > "MyCustomRatingThing": { > "label": "{i18n>CustomRatingFilter}", > "property": "Rating", -> "availability": "Default", +> "availability": "Default", > "template": "SalesOrder.ext.CustomRatingFilter", > "required": true, > "position": { @@ -191,21 +191,20 @@ You can configure the `FilterBar` in the controller extension locally using the You can use the `filterFields` setting to add custom filters. The pattern looks like this: > ### Sample Code: -> `manifest.json` +> manifest.json > -> ```json -> "": { -> "label": , // static string or i18n binding, e.g. "MyText" or "{i18n>MyCustomLabel}" -> "property": , // the full path to the property to be filtered, e.g. "Rating" or "_Partner/Rating" -> "template": , // the path to the Xml Template containing the filter control, e.g. "SalesOrder.ext.CustomRatingFilter" -> "required": (false) | true, // filter field is (not) mandatory, i.e. it requires a value -> "availability": "Default" | "Hidden" | "Adoption", //Toggling visibility of the filter. Adoption = shown in Adapt filters dialog -> "position": { -> "placement": "Before"|"After", -> "anchor": "" // for annotation based filterfields, the property is the key, e.g. "SalesOrder", "_Patner::FullName" (slashes are replaced by ::) -> } +> ``` +> "": { +> "label": , // static string or i18n binding, e.g. "MyText" or "{i18n>MyCustomLabel}" +> "property": , // the full path to the property to be filtered, e.g. "Rating" or "_Partner/Rating" +> "template": , // the path to the Xml Template containing the filter control, e.g. "SalesOrder.ext.CustomRatingFilter" +> "required": false | true, // determines if the filter field is mandatory or not, i.e. if it requires a value for filtering to be triggered; Default value = false. +> "availability": "Default" | "Hidden" | "Adaptation", //Toggling visibility of the filter field. Default = shown in filter bar; Adaptation = shown in Adapt Filters dialog; Hidden = Neither shown in filter bar nor within Adapt Filters dialog +> "position": { +> "placement": "Before"|"After", +> "anchor": "" // for annotation based filter fields, the property is the key, e.g. "SalesOrder", "_Partner::FullName" (slashes are replaced by ::) +> } > } -> > ``` diff --git a/docs/06_SAP_Fiori_Elements/annotations-used-in-overview-pages-65731e6.md b/docs/06_SAP_Fiori_Elements/annotations-used-in-overview-pages-65731e6.md index 4fcfc239..a0ba94b2 100644 --- a/docs/06_SAP_Fiori_Elements/annotations-used-in-overview-pages-65731e6.md +++ b/docs/06_SAP_Fiori_Elements/annotations-used-in-overview-pages-65731e6.md @@ -6,24 +6,24 @@ This topic provides a list of the annotations used in overview pages. They are a -- com.sap.vocabularies.UI.v1.HeaderInfo -- com.sap.vocabularies.UI.v1.DataField -- com.sap.vocabularies.UI.v1.DataFieldForAnnotation -- com.sap.vocabularies.UI.v1.DataFieldForAction -- com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation -- com.sap.vocabularies.UI.v1.DataFieldWithUrl -- com.sap.vocabularies.UI.v1.DataPoint -- com.sap.vocabularies.UI.v1.Identification -- com.sap.vocabularies.UI.v1.LineItem -- com.sap.vocabularies.UI.v1.Facets -- com.sap.vocabularies.UI.v1.FieldGroup -- com.sap.vocabularies.UI.v1.SelectionVariant -- com.sap.vocabularies.UI.v1.PresentationVariant -- com.sap.vocabularies.UI.v1.SelectionPresentationVariant -- com.sap.vocabularies.UI.v1.Chart -- com.sap.vocabularies.UI.v1.KPI -- com.sap.vocabularies.Common.v1.Text -- com.sap.vocabularies.PersonalData.v1 +- `com.sap.vocabularies.UI.v1.HeaderInfo` +- `com.sap.vocabularies.UI.v1.DataField` +- `com.sap.vocabularies.UI.v1.DataFieldForAnnotation` +- `com.sap.vocabularies.UI.v1.DataFieldForAction` +- `com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation` +- `com.sap.vocabularies.UI.v1.DataFieldWithUrl` +- `com.sap.vocabularies.UI.v1.DataPoint` +- `com.sap.vocabularies.UI.v1.Identification` +- `com.sap.vocabularies.UI.v1.LineItem` +- `com.sap.vocabularies.UI.v1.Facets` +- `com.sap.vocabularies.UI.v1.FieldGroup` +- `com.sap.vocabularies.UI.v1.SelectionVariant` +- `com.sap.vocabularies.UI.v1.PresentationVariant` +- `com.sap.vocabularies.UI.v1.SelectionPresentationVariant` +- `com.sap.vocabularies.UI.v1.SelectionPresentationVariant` +- `com.sap.vocabularies.UI.v1.KPI` +- `com.sap.vocabularies.Common.v1.Text` +- `com.sap.vocabularies.PersonalData.v1` @@ -38,7 +38,7 @@ The following properties are supported: - `Description` > ### Note: - > The value of `dynamicSubtitleAnnotationPath` is picked from the value of the `path`, if pointed to the descriptor file \( `manifest.json` \). For more information, see [Descriptor Configuration for the Overview Page](descriptor-configuration-for-the-overview-page-f194b41.md). + > The value of `dynamicSubtitleAnnotationPath` is picked from the value of the `path`, if pointed to the descriptor file \(`manifest.json`\). For more information, see [Descriptor Configuration for the Overview Page](descriptor-configuration-for-the-overview-page-f194b41.md). > ### Sample Code: @@ -113,7 +113,7 @@ The following properties are supported: ## `com.sap.vocabularies.UI.v1.DataField` -`DataField` is used to display simple text fields. The following properties are supported: +You can use `DataField` to display simple text fields. The following properties are supported: - `Label`: the label of the field - `Value`: the value of the field, usually pointing to a path in the metadata @@ -153,7 +153,7 @@ The following properties are supported: ## `com.sap.vocabularies.UI.v1.DataFieldForAnnotation` -`DataFieldForAnnotation` can be used to reference a different annotation term, using the `Target` property. The following properties are supported: +You can use `DataFieldForAnnotation`to reference a different annotation term using the `Target` property. The following properties are supported: - `Label`: the label of the field - `Target`: reference to a different term in the annotation document @@ -197,9 +197,9 @@ The following properties are supported: ## `com.sap.vocabularies.UI.v1.DataFieldForAction` -`DataFieldForAction` is used for OData actions that can be preformed on an entity, and refer to a `FunctionImport` action definition in the OData metadata. The following properties are supported: +`DataFieldForAction` is used for OData actions that can be performed on an entity and refer to a `FunctionImport` action definition in the OData metadata. The following properties are supported: -- `Label`: the navigation label displayed in the footer of the quick view card. +- `Label`: the navigation label displayed in the footer of the quick view card - `Action`: name of the `FunctionImport` action definition to use > ### Sample Code: @@ -245,7 +245,7 @@ The following properties are supported: The `DataFieldForIntentBasedNavigation` record type supports the following properties: -- `SemanticObject`: intent semantic object +- `SemanticObject`: intent-based semantic object - `Action`: action of the intent - `Label`: the navigation label displayed in the footer of the quick view card @@ -305,16 +305,16 @@ The `DataFieldForIntentBasedNavigation` record type supports the following prope -## com.sap.vocabularies.UI.v1.DataFieldWithUrl +## `com.sap.vocabularies.UI.v1.DataFieldWithUrl` The `com.sap.vocabularies.UI.v1.DataFieldWithUrl` record type supports the following properties: - `Url`: Use this property to configure the URL details. > ### Note: - > `Url` + > `Url` can also contain an intent-based navigation with a route \(static or dynamic with arguments\). -- `Label`\>: Use this property to specify the navigation label. The label appears in the quick view card's action footer area for the stack card type. +- `Label`: Use this property to specify the navigation label. The label appears in the action footer area of the quick view card for the stack card type. > ### Sample Code: @@ -388,6 +388,18 @@ The `com.sap.vocabularies.UI.v1.DataFieldWithUrl` record type supports the follo > > ``` +- `com.sap.vocabularies.HTML5.v1.LinkTarget`: Use this property to specify in which window, tab, or frame the link target is opened. The following values are supported: + + - `com.sap.vocabularies.HTML5.v1.LinkTarget/_self`: The link is opened in the same tab or window \(default\). + + - `com.sap.vocabularies.HTML5.v1.LinkTarget/_blank`: The link is opened in a new tab or window. + + - `com.sap.vocabularies.HTML5.v1.LinkTarget/_parent`: The link is opened in the parent frame or window. + + - `com.sap.vocabularies.HTML5.v1.LinkTarget/_top`: The link is opened in the full browser window, overriding any nested frames. + + + ## `com.sap.vocabularies.UI.v1.DataPoint` @@ -412,24 +424,24 @@ The `DataPoint` term is used to display fields with special formatting. The foll - `com.sap.vocabularies.UI.v1.CriticalityCalculation`: Used to color the value dynamically according to the value in the `com.sap.vocabularies.UI.v1.CriticalityCalculationType` record type. It supports the following values: - - `ImprovementDirection`: Defines what is considered a positive value. Possible values are: - - `Minimize`: If `Minimize` is the improvement direction, the `DeviationRangeHighValue` and `ToleranceRangeHighValue` properties are required. and + - `ImprovementDirection`: Defines what is considered a positive value. The following values are supported: + - `Minimize`: If `Minimize` is the improvement direction, the `DeviationRangeHighValue` and `ToleranceRangeHighValue` properties are required. - - If the value is less than the `ToleranceRangeHighValue`, the value is considered positive and is displayed in green. + - If the value is lower than the `ToleranceRangeHighValue`, the value is considered positive and is displayed in green. - If the value is between the `ToleranceRangeHighValue` and the `DeviationRangeHighValue`, the value is considered critical and is displayed in orange. - - If the value is greater than the `ToleranceRangeHighValue` the value is considered negative and is displayed in red. + - If the value is greater than the `ToleranceRangeHighValue`, the value is considered negative and is displayed in red. - `Target`: If `Target` is the improvement direction, the `DeviationRangeLowValue`, `DeviationRangeHighValue`, `ToleranceRangeLowValue`, and `ToleranceRangeHighValue` properties are required. - - If the value is between the `ToleranceRangeHighValue` and `ToleranceRangeLowValue`, the value is considered positive and is displayed in green. - - If the value is between `DeviationRangeLowValue` and `DeviationRangeLowValue`, or between `DeviationRangeHighValue` and `ToleranceRangeHighValue`, the value is considered critical and is displayed in orange. - - If the value is lower than the `DeviationRangeLowValue` or higher than `DeviationRangeHighValue`, the value is considered negative and is displayed in red. + - If the value is between the `ToleranceRangeHighValue` and the `ToleranceRangeLowValue`, the value is considered positive and is displayed in green. + - If the value is between the `DeviationRangeLowValue` and the `DeviationRangeLowValue`, or between the `DeviationRangeHighValue` and the `ToleranceRangeHighValue`, the value is considered critical and is displayed in orange. + - If the value is lower than the `DeviationRangeLowValue` or higher than the `DeviationRangeHighValue`, the value is considered negative and is displayed in red. - `Maximize`: If `Maximize` is the improvement direction, the `DeviationRangeLowValue` and `ToleranceRangeLowValue` properties are required. - If the value is greater than the `ToleranceRangeLowValue`, the value is considered positive and is displayed in green. - - If the value is between `ToleranceRangeLowValue` and the `DeviationRangeLowValue`, the value is considered critical and is displayed in orange. - - If the value is lower than `ToleranceRangeLowValue`, the value is considered negative and is displayed in red. + - If the value is between the `ToleranceRangeLowValue` and the `DeviationRangeLowValue`, the value is considered critical and is displayed in orange. + - If the value is lower than the `ToleranceRangeLowValue`, the value is considered negative and is displayed in red. @@ -963,9 +975,9 @@ This term consists of a label and a collection of `com.sap.vocabularies.UI.v1.Da This term consists of a combination of parameters and filters that query the annotated entity set. You can use `SelectionVariant` separately, or together with the `SelectionPresentationVariant` annotation. The following properties are supported: - `ID`: Can contain an identifier to reference this instance from external context -- `Text`: Name of the selection variant -- `Parameters`: Collection of `com.sap.vocabularies.UI.v1.ParameterAbstract` terms -- `SelectOptions`: Collection of `com.sap.vocabularies.UI.v1.SelectOptionType` terms used to define filters on this entity set +- `Text`: The name of the selection variant +- `Parameters`: A collection of `com.sap.vocabularies.UI.v1.ParameterAbstract` terms +- `SelectOptions`: A collection of `com.sap.vocabularies.UI.v1.SelectOptionType` terms used to define filters on this entity set > ### Sample Code: > XML Annotation @@ -1022,15 +1034,15 @@ This term consists of a combination of parameters and filters that query the ann ## `com.sap.vocabularies.UI.v1.PresentationVariant` -Defines the way in which the result of a queried collection of entities is displayed in the KPI header. You can use `PresentationVariant` separately, or together with `SelectionPresentationVariant` annotation. The following properties are supported: +Defines the way in which the result of a queried collection of entities is displayed in the KPI header. You can use `PresentationVariant` separately or together with the `SelectionPresentationVariant` annotation. The following properties are supported: - `ID`: Can contain an identifier to reference this instance from external context -- `Text`: Name of the presentation variant -- `SortOrder`: Collection of `com.sap.vocabularies.Common.v1.SortOrderType` records -- `RequestAtLeast`: Collection of fileds that must be part of selection fields. The `requestAtLeast` lets you receive additional dimensions from backend. The additional dimensions are added to the result of a queried collection for further navigation. +- `Text`: The name of the presentation variant +- `SortOrder`: A collection of `com.sap.vocabularies.Common.v1.SortOrderType` records +- `RequestAtLeast`: A collection of fields that must be part of selection fields. The `requestAtLeast` property lets you receive additional dimensions from the back end. The additional dimensions are added to the result of a queried collection for further navigation. > ### Note: - > In an aggregated service, additional dimensions may cause issues while rendering the chart.. + > In an aggregated service, additional dimensions may cause issues while rendering the chart. - `Visualizations`: Supports the `LineItem` or `Chart` annotation path @@ -1124,8 +1136,8 @@ Defines the way in which the result of a queried collection of entities is displ Provides a combination of capabilities from `SelectionVariant` and `PresentationVariant`. The `SelectionPresentationVariant` supports the following properties: -- `SelectionVariant`: specify the `SelectionVariant` annotation path. -- `PresentationVariant`: specify the `PresentationVariant` annotation path. +- `SelectionVariant`: Specifies the `SelectionVariant` annotation path +- `PresentationVariant`: Specifies the `PresentationVariant` annotation path > ### Sample Code: > XML Annotation @@ -1318,10 +1330,10 @@ Defines the dimensions and measures used in charts. The following properties are - `Title` - `Description` - `ChartType` -- `Measures`: Collection of `PropertyPath` properties. +- `Measures`: A collection of `PropertyPath` properties - `MeasureAttributes`: A collection of `com.sap.vocabularies.UI.v1.ChartMeasureAttributeType` records describing attributes for measures. All measures used in this collection must also be part of the `Measures` property. -- `Dimensions`: Collection of `PropertyPath` properties -- `DimensionAttributes`: Collection of `com.sap.vocabularies.UI.v1.ChartDimensionAttributeType` records describing attributes for dimensions. All dimensions used in this collection must also be part of the `Dimensions` property. +- `Dimensions`: A collection of `PropertyPath` properties. +- `DimensionAttributes`: A collection of `com.sap.vocabularies.UI.v1.ChartDimensionAttributeType` records describing attributes for dimensions. All dimensions used in this collection must also be part of the `Dimensions` property. > ### Sample Code: > XML Annotation @@ -1799,7 +1811,7 @@ The text arrangement annotation lets you format text. > }; > ``` -In the preceding example, the text `Customer` is bound to the `ContactID` property and appears as shown in the table: +In the preceding example, the text `Customer` is bound to the `ContactID` property and appears as shown in the following table:
-allow +`"allow"` @@ -38,14 +47,14 @@ X -Allows to be embedded from all origins +Allows interaction with the application regardless of the origin of the parent frame.
-deny +`"deny"` @@ -55,14 +64,14 @@ deny -Denies to be embedded from all origins +Denies interaction with the application.
-trusted +`"trusted"` @@ -72,7 +81,7 @@ trusted -Allows to be embedded from trusted origins according to the same-origin policy and to be embedded to origins allowed by the allowlist service +Allows interaction only if the application is embedded from trusted origins according to the same-origin policy and from origins allowed by the allowlist service.
-Function that is called with the success state +Function that is called with the success state. > ### Note: > The function can be synchronously called from the SAPUI5 bootstrap script. The DOM \(`document.body`\) may not be accessible. @@ -149,7 +158,7 @@ Function that is called with the success state -After the delay, the page remains blocked and the provided callback is invoked \(milliseconds\) +After the delay, the page remains blocked and the provided callback is invoked \(milliseconds\).
-Defines whether keyboard, mouse and touch events are blocked +Defines whether keyboard, mouse, and touch events are blocked.
-Defines whether an invisible block layer is rendered to prevent interaction with the UI +Defines whether an invisible block layer is rendered to prevent interaction with the UI.
-Defines whether same origin domains are allowed or not +Defines whether same origin domains are allowed.
-false +false \(backend is expected to convert all values, both the backend values and the text provided in the filter fields, to lowercase before comparing for filtering\)
diff --git a/docs/06_SAP_Fiori_Elements/building-blocks-24c1304.md b/docs/06_SAP_Fiori_Elements/building-blocks-24c1304.md index 4ea946cf..7590607c 100644 --- a/docs/06_SAP_Fiori_Elements/building-blocks-24c1304.md +++ b/docs/06_SAP_Fiori_Elements/building-blocks-24c1304.md @@ -34,3 +34,11 @@ The building blocks provide a unified interface that creates an abstraction from For more information about building blocks as part of the flexible programming model, see [Flexible Programming Model](https://ui5.sap.com/test-resources/sap/fe/core/fpmExplorer/index.html#/overview/introduction). + + + + +## Related Information + +For more information about the `loadFragment` method, see [EditFlow](https://ui5.sap.com/#/api/sap.fe.core.ExtensionAPI%23overview) in the Demo Kit. + diff --git a/docs/06_SAP_Fiori_Elements/configuring-default-settings-visualizations-sort-order-filter-values-49a6ba5.md b/docs/06_SAP_Fiori_Elements/configuring-default-settings-visualizations-sort-order-filter-values-49a6ba5.md index 8b811db8..de9bc14f 100644 --- a/docs/06_SAP_Fiori_Elements/configuring-default-settings-visualizations-sort-order-filter-values-49a6ba5.md +++ b/docs/06_SAP_Fiori_Elements/configuring-default-settings-visualizations-sort-order-filter-values-49a6ba5.md @@ -893,57 +893,6 @@ Make the following settings in the `manifest.json` to specify the `SelectionPres > ### Note: > In this case, the `"defaultTemplateAnnotationPath"` must be a reference to the `SelectionPresentationVariant` and **not** to the `PresentationVariant` or `SelectionVariant`. - - -### Requesting Additional Properties in Object Pages - -You can request additional properties for object pages or subobject pages even if these properties are not displayed using the `Org.OData.Core.V1.AlternateKeys` annotation. - -> ### Sample Code: -> XML Annotation -> -> ``` -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ``` - -> ### Sample Code: -> CAP CDS Annotation -> -> ``` -> annotate c_salesordermanage_sd.SalesOrderManage with @( -> Core.AlternateKeys: [{Key: [ -> { -> Name : someProperty1 -> }, -> { -> Name : someProperty2 -> } -> ]}] -> ); -> -> ``` - **Related Information** diff --git a/docs/06_SAP_Fiori_Elements/configuring-dynamic-link-list-card-675c514.md b/docs/06_SAP_Fiori_Elements/configuring-dynamic-link-list-card-675c514.md index d8b677c7..64bef2ea 100644 --- a/docs/06_SAP_Fiori_Elements/configuring-dynamic-link-list-card-675c514.md +++ b/docs/06_SAP_Fiori_Elements/configuring-dynamic-link-list-card-675c514.md @@ -261,7 +261,7 @@ Additionally, dynamic link list card supports contact annotation as default anno
- For any of the these annotation configuration: + For any of these annotation configuration: - `UI.Identification` annotation with property `Action` @@ -282,7 +282,7 @@ Additionally, dynamic link list card supports contact annotation as default anno
- For any of the these annotation configuration + default contact annotation: + For any of these annotation configuration + default contact annotation: - `UI.Identification` annotation with property `Action` diff --git a/docs/06_SAP_Fiori_Elements/configuring-fields-4b50f21.md b/docs/06_SAP_Fiori_Elements/configuring-fields-4b50f21.md index ff58942f..2f96a24d 100644 --- a/docs/06_SAP_Fiori_Elements/configuring-fields-4b50f21.md +++ b/docs/06_SAP_Fiori_Elements/configuring-fields-4b50f21.md @@ -5,9 +5,9 @@ A field can be represented in several ways. > ### Note: -> This topic is currently only applicable to SAP Fiori elements for OData V4. +> This topic is only applicable to SAP Fiori elements for OData V4. -A field can react to many different annotations and render additional artifacts or information, such as showing a value help to allow users to choose a value, or showing semantic coloring to help indicate the criticality of the value it displays. A field can be rendered in many different forms and its rendering can be controlled via annotations. As for input fields, application developers can control the field editability, field help representations, and field validations ‒ to name only a few options. The subsequent topics provide detailed information about field configuration. +A field can react to many different annotations and render additional artifacts or information, such as showing a value help to allow users to choose a value, or showing semantic coloring to help indicate the criticality of the value it displays. A field can be rendered in many different forms, and its rendering can be controlled by using annotations. As for input fields, application developers can control the field editability, field help representations, and field validations ‒ to name only a few options. The subsequent topics provide detailed information about field configuration. @@ -15,7 +15,7 @@ A field can react to many different annotations and render additional artifacts ## Setting Placeholder Texts for Input Fields -Input fields, like `sap.m.Input` or `sap.m.ComboBox`, have a property placeholder that defines which value is shown to users in edit mode before the users actively make any entries in these fields. You can use the `UI.Placeholder` annotation to define the value that is shown as a placeholder: +Input fields, such as `sap.m.Input` or `sap.m.ComboBox`, have a property placeholder that defines which value is shown to users in edit mode before the users actively make any entries in these fields. You can use the `UI.Placeholder` annotation to define the value that is shown as a placeholder: ```xml @@ -29,9 +29,108 @@ Input fields, like `sap.m.Input` or `sap.m.ComboBox`, have a property placeholde + + +## Formatting `Date`, `Time`, and `DateTime` Fields + +You can use the `DateTimeStyle` annotation with the following values to specify how date and time is displayed in the input field and the text field in display mode: + +**Values for the DateTimeStyle Annotation** + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Value + + + +Description + + + +Example + +
+ +`short` + + + +Displays a concise date and time format. + + + +7/25/24, 1:11 PM + +
+ +`medium` + + + +Shows the date in a more readable format, including seconds. + + + +Jul 25, 2024, 1:11:51 PM + +
+ +`long` + + + +Includes time zone details for a more precise display. + + + +July 25, 2024 at 1:11:51 PM GMT+2 + +
+ +`full` + + + +Provides the most complete format, including the full day of the week and time zone name. + + + +Thursday, July 25, 2024 at 1:11:51 PM Central European Summer Time + +
+ + +
-## Validating Currency and UoM Fields +## Validating Currency and Unit-of-Measure \(UoM\) Fields To validate currency fields without a related "value" field, use the `isCurrency` annotation: @@ -65,7 +164,7 @@ To validate currency fields without a related "value" field, use the `isCurrency > > ``` -To validate unit of measurement fields without a related "value" field, use the `isUnit` annotation: +To validate unit-of-measure fields without a related "value" field, use the `isUnit` annotation: > ### Sample Code: > XML Annotation diff --git a/docs/06_SAP_Fiori_Elements/configuring-filter-bars-4bd7590.md b/docs/06_SAP_Fiori_Elements/configuring-filter-bars-4bd7590.md index 9d81e70a..902eb2df 100644 --- a/docs/06_SAP_Fiori_Elements/configuring-filter-bars-4bd7590.md +++ b/docs/06_SAP_Fiori_Elements/configuring-filter-bars-4bd7590.md @@ -1,5 +1,7 @@ + + # Configuring Filter Bars You can configure filter bars in list report applications and in the analytical list page. @@ -22,16 +24,13 @@ SAP Fiori elements for OData V4: `Capabilities.Filterable=true` > XML Annotation > > ```xml -> -> +> +> > > SalesOrder > SoldToParty > OverallSDProcessStatus > SalesOrderDate -> ShippingCondition -> LastChangedDateTime -> DistributionChannel > _Item/Material > > @@ -42,37 +41,37 @@ SAP Fiori elements for OData V4: `Capabilities.Filterable=true` > > ``` > +> > @UI.SelectionField: [{ position: 10 }] -> DELIVERYCALENDARYEAR; +> SALESORDER; > > @UI.SelectionField: [{ position: 20 }] > SOLDTOPARTY; -> +> > @UI.SelectionField: [{ position: 30 }] -> PRODUCT; -> +> OVERALLSDPROCESSSTATUS; +> > @UI.SelectionField: [{ position: 40 }] -> MAINPRODUCTCATEGORY; +> SALESORDERDATE; > -> @UI.SelectionField: [{ position: 50 }] -> DELIVERYCALENDARQUARTER; +> @UI.SelectionField: [{ position: 50, element: '_Item.Material' }] +> _Item; > ``` > ### Sample Code: > CAP CDS Annotation > > ``` -> annotate c_salesordermanage_sd.SalesOrderManage with @(UI : { -> SelectionFields : [ +> +> annotate service.SalesOrderManage with @( +> UI.SelectionFields : [ > SalesOrder, > SoldToParty, > OverallSDProcessStatus, > SalesOrderDate, -> ShippingCondition, -> LastChangedDateTime, -> DistributionChannel, -> '_Item/Material' ] -> }); +> Item.Material +> ] +> ); > ``` @@ -117,6 +116,39 @@ In this example, `P_Currency` and `P_Country` are mandatory and they must be fil +### Adding Filter Fields Using SAP Fiori Tools + +1. Launch the *Page Map*. You can launch the *Page Map* in several ways, for example by right-clicking the project folder and selecting*Show Page Map*. For more information, see [Define Application Structure](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/bae38e6216754a76896b926a3d6ac3a9.html). + +2. Launch the *Page Editor* for your list report page. Click the :pencil2: \(*Edit*\) icon next to *List Report*. +3. Expand the *Filter Fields* node in the outline tree. Click the \(*Arrow*\) icon next to *Filter Fields*. + + The following screenshot shows the outline of the application with the *Filter Fields* node expanded: + + ![](images/Fiori_Tools_-_Business_Application_Studio_-_Filter_Fields_Dropdown_5b1c16d.png) + +4. Click the :heavy_plus_sign: \(*Add*\) icon next to *Filter Fields*. +5. Click *Add Filter Fields*. +6. Select the fields you wish to add from the dropdown. +7. Click *Add*. + + For more information about configuring filter fields using SAP Fiori tools, see [Filter Fields](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/0b8428645243486680ffa22c0b541039.html). + +8. To preview your new filter field, see [Previewing an Application](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/b962685bdf9246f6bced1d1cc1d9ba1c.html). + +The following screenshot shows the filter fields in a previewed application: + +![](images/Fiori_Tools_-_Business_Application_Studio_-_Filter_Fields_Preview_01c10c9.png) + +> ### Tip: +> You can reorder your filter fields by using drag and drop in the *Page Editor*. + +The following screen recording shows how to add a new filter field: + + + + + ### Hiding the Filter Bar You can configure your app to disable the filter bar on a list report by making the corresponding settings in the `manifest.json`. @@ -128,7 +160,7 @@ You can choose to actively disable the filter bar, even if the entity set contai - The *Search* field is provided in the table toolbar. -To disable the filter bar, set `hideFilterBar` to `true` in the `manifest.json`, as shown in the following sample code: +You can disable the filter bar by setting `hideFilterBar` to `true` in the `manifest.json` file, as shown in the following sample code: > ### Sample Code: > `manifest.json` @@ -151,6 +183,9 @@ To disable the filter bar, set `hideFilterBar` to `true` in the `manifest.json`, > } > ``` +> ### Note: +> If the filter bar contains mandatory filter fields or parameter fields without a default value, then this setting is ignored and the filter bar is displayed. + ### *Go* Button Mode @@ -159,11 +194,104 @@ The *Go* button is always enabled in the filter bar and can't be switched off. +### Configuring Mandatory Filter Fields + +Applications can configure the filter fields as mandatory using the `Capabilities.RequiredProperties` annotation. Such properties need a value before the filter fields can be triggered. + +> ### Sample Code: +> XML Annotation +> +> ``` +> +> +> +> +> +> OrderType +> +> +> +> +> +> ``` + +> ### Sample Code: +> ABAP CDS Annotation +> +> ``` +> @Consumption.filter.mandatory: true +> OrderType; +> ``` + +> ### Sample Code: +> CAP CDS Annotation +> +> ``` +> annotate service.SalesOrder with @Capabilities : { +> FilterRestrictions : { +> $Type : 'Capabilities.FilterRestrictionsType', +> RequiredProperties : [ +> OrderType +> ], +> }, +> }; +> ``` + +> ### Note: +> Properties annotated with `UI.Hidden` or `UI.HiddenFilter` are not displayed in either the filter bar or the *Adapt Filters* dialog. + + + +### Configuring Fields to Remain Hidden in the Filter Bar and the *Adapt Filters* Dialog + +Applications must ensure that a field within the entity to which the filter bar is bound remains hidden in both the filter bar and the *Adapt Filters* dialog. You can use the `Capabilities.NonFilterableProperties` annotation to achieve this behavior. + +> ### Sample Code: +> XML Annotation +> +> ``` +> +> +> +> +> +> DeliveryChannel +> +> +> +> +> +> ``` + +> ### Sample Code: +> ABAP CDS Annotation +> +> ``` +> @ObjectModel.filter.enabled: false +> DeliveryChannel; +> ``` + +> ### Sample Code: +> CAP CDS Annotation +> +> ``` +> annotate service.SalesOrder with @Capabilities : { +> FilterRestrictions : { +> $Type : 'Capabilities.FilterRestrictionsType', +> NonFilterableProperties : [ +> DeliveryChannel +> ], +> }, +> }; +> ``` + + + ### Supporting Parameterized Entities To access the data of parameterized services, the parameter fields need to be supplied with parameter values when making the data call. These parameter values are then used to load the data for the view \(including the data in the object page or subobject page\). Furthermore, the invocation of any action that needs context to be passed, is also passed using these parameter values. -For example, the `"CustomerType"` in the sample code below represents the main entity set from which further data needs to be fetched. This has a `"Parameters"` navigation entity set defined as well: +For example, the `"CustomerType"` in the following sample code represents the main entity set from which further data needs to be fetched. This has a `"Parameters"` navigation entity set defined as well: > ### Sample Code: > Metadata of parameterized main entity type @@ -282,7 +410,7 @@ You can use one of the following two approaches: > $Type: 'Capabilities.FilterRestrictionsType', > FilterExpressionRestrictions: [{ > Property: 'Set/SalesOrganization', - > AllowedExpressions: 'MultiValue’ + > AllowedExpressions: 'MultiValue' > }] > } > } @@ -343,7 +471,7 @@ You can use one of the following two approaches: > $Type : 'Capabilities.FilterRestrictionsType', > FilterExpressionRestrictions : [{ > $Type : 'Capabilities.FilterExpressionRestrictionType', - > Property : Set.SalesOrganization, + > Property : 'Set.SalesOrganization', > AllowedExpressions : 'MultiValue' > }] > } @@ -352,6 +480,9 @@ You can use one of the following two approaches: > ``` +> ### Note: +> If the filter restrictions are provided using `NavigationRestriction`, then this restriction is prioritized over other restrictions applied directly to the main entity. + > ### Restriction: > - Parameter support is currently only available for read-only services. For editable services, parameter support is currently unavailable because of back-end restrictions. > @@ -363,7 +494,7 @@ You can use one of the following two approaches: > > - Sort restrictions aren't supported for first-level navigation entity sets when used within parameterized scenarios \(meaning when a root node is a parameterized entity\). > -> - SAP Fiori elements for OData V4 doesn't support filtering on properties defined as measures. +> - We don't support filtering on properties defined as measures. diff --git a/docs/06_SAP_Fiori_Elements/configuring-filter-fields-f5dcb29.md b/docs/06_SAP_Fiori_Elements/configuring-filter-fields-f5dcb29.md index c53353ac..6eef187d 100644 --- a/docs/06_SAP_Fiori_Elements/configuring-filter-fields-f5dcb29.md +++ b/docs/06_SAP_Fiori_Elements/configuring-filter-fields-f5dcb29.md @@ -2,7 +2,7 @@ # Configuring Filter Fields -Application developers can configure filter fields to ensure they only accept either a single value, multiple values, or a range of values. +You can configure filter fields to ensure they only accept either a single value, multiple values, or a range of values. You can achieve this by configuring the filter restriction annotation as described in the specific sections. @@ -10,7 +10,7 @@ Application developers can configure filter fields to ensure they only accept ei ## Copying and Pasting Multiple Values in the Filter Bar -As an end user, you can copy and paste multiple values in the filter bar in the following use cases: +End users can copy and paste multiple values in the filter bar in the following use cases: - From one filter field to another filter field that has the same data type. @@ -38,7 +38,7 @@ For example, you can copy the values from the *Sales Order No.:* field and paste ### Filter Restrictions -In SAP Fiori elements for OData V2, app developers can control the filter field configuration via the `sap:filter-restriction` annotation as shown in the following sample code: +You can control the filter field configuration using the `sap:filter-restriction` annotation as shown in the following sample code: > ### Sample Code: > `sap:filter-restriction` @@ -64,7 +64,7 @@ In SAP Fiori elements for OData V2, app developers can control the filter field ### Filter Restrictions -App developers can control the filter field configuration via `FilterRestrictions` as shown in the following sample code: +You can control the filter field configuration using the `FilterRestrictions` as shown in the following sample code: > ### Sample Code: > XML Annotation @@ -139,7 +139,7 @@ App developers can control the filter field configuration via `FilterRestriction > ### Remember: > If no filter-restriction is provided, the filter field is treated as a multi-valued field. -If app developers want to make a filter field required, proceed as shown in the following sample code: +If you want to make a filter field required, proceed as shown in the following sample code: > ### Sample Code: > CAP CDS Annotation @@ -166,7 +166,7 @@ You can annotate the `FilterRestriction` for a filter field in a navigation enti - Filter Restrictions at Association Entity - Application developers can annotate filter restrictions with the association entity as the target, as shown in the following sample code: + You can annotate filter restrictions with the association entity as the target, as shown in the following sample code: > ### Sample Code: > XML Annotation \(non-containment scenario\): /SalesOrderManage/\_Material @@ -266,7 +266,7 @@ You can annotate the `FilterRestriction` for a filter field in a navigation enti - Navigation Restrictions at Parent Entity - Application developers can annotate filter restrictions with the navigation restrictions at the parent entity, as shown in the following sample code: + You can annotate filter restrictions with the navigation restrictions at the parent entity, as shown in the following sample code: > ### Sample Code: > XML Annotation \(non-containment scenario\): /SalesOrderManage/\_Material @@ -363,7 +363,7 @@ You can annotate the `FilterRestriction` for a filter field in a navigation enti > ### Sample Code: > ABAP CDS Annotation > - > The ABAP CDS sample code is available at the end of this subsection.. + > The ABAP CDS sample code is available at the end of this subsection. > ### Sample Code: > CAP CDS Annotation \(containment scenario\) @@ -387,7 +387,7 @@ You can annotate the `FilterRestriction` for a filter field in a navigation enti - Filter Restrictions at Parent Entity with `PropertyPath` Pointing to Child Entity - Application developers can annotate filter restrictions at the parent entity, but with the `PropertyPath` pointing to the field in the child entity, as shown in the following sample code: + You can annotate filter restrictions at the parent entity, but with the `PropertyPath` pointing to the field in the child entity, as shown in the following sample code: > ### Sample Code: > XML Annotation \(non-containment scenario\): /SalesOrderManage/\_Material @@ -434,7 +434,7 @@ You can annotate the `FilterRestriction` for a filter field in a navigation enti - Filter Restrictions Directly at Child Entity - Application developers can annotate filter restrictions directly on the child entity, as shown in the following sample code: + You can annotate filter restrictions directly on the child entity, as shown in the following sample code: > ### Sample Code: > XML Annotation \(non-containment scenario\): /SalesOrderManage/\_Material diff --git a/docs/06_SAP_Fiori_Elements/configuring-tables-f4eb70f.md b/docs/06_SAP_Fiori_Elements/configuring-tables-f4eb70f.md index 67f79959..15d448fc 100644 --- a/docs/06_SAP_Fiori_Elements/configuring-tables-f4eb70f.md +++ b/docs/06_SAP_Fiori_Elements/configuring-tables-f4eb70f.md @@ -97,7 +97,7 @@ You use the `UI.LineItem` annotation to configure a table. It can also be packag **Related Information** -[Maintaining Standard Texts for Tables](maintaining-standard-texts-for-tables-aacfac5.md "In a table, if the system does not find any entries when using the filter, standard UI texts are displayed which you can adapt in the i18n file of your app.") +[Maintaining Standard Texts for Tables](maintaining-standard-texts-for-tables-aacfac5.md "You can use the i18n file of your app to adapt the standard UI texts that are displayed in a table for the use cases explained in this topic.") [Maintaining Standard Texts for Charts](maintaining-standard-texts-for-charts-37cd601.md "For charts in analytical list pages, list reports, and object pages, if the system does not find any entries when using the filters, standard UI texts are displayed, which you can adapt in the i18n file of your app.") diff --git a/docs/06_SAP_Fiori_Elements/creating-a-list-report-without-variant-management-094fe8c.md b/docs/06_SAP_Fiori_Elements/creating-a-list-report-without-variant-management-094fe8c.md index 53fa6b40..7aa26a7f 100644 --- a/docs/06_SAP_Fiori_Elements/creating-a-list-report-without-variant-management-094fe8c.md +++ b/docs/06_SAP_Fiori_Elements/creating-a-list-report-without-variant-management-094fe8c.md @@ -10,7 +10,7 @@ The applications generated using the SAP Fiori elements includes the variant man ## Context -Without variant management, and with no custom title added, your app looks as follows: +Without variant management, and with no custom title added, your app appears as follows: @@ -18,7 +18,7 @@ Without variant management, and with no custom title added, your app looks as fo ![](images/Creating_Apps_without_Variant_Management_8b85684.jpg "App without Variant Management") -Without variant management and with a custom title added, your app looks like this: +Without variant management and with a custom title added, your app appears as follows: @@ -34,7 +34,7 @@ For more information, see [Managing Variants](managing-variants-8ce658e.md). -## SAP Fiori Elements for OData V2 +## **SAP Fiori Elements for OData V2** @@ -42,10 +42,10 @@ For more information, see [Managing Variants](managing-variants-8ce658e.md). ## Procedure -1. Include the `variantManagementHidden` flag in the settings of the list report component in the `manifest.json` of your app. +1. Include the `variantManagementHidden` flag in the settings of the list report component in the `manifest.json` file of your app. - - If you set the flag to `true`, then standard variant management is not available in the app. The app name is displayed instead. - - If you set the flag to `false`, or if the flag is not in the manifest of the app, the standard variant management is available and can be enabled or disabled. + - If you set the flag to `true`, then the standard variant management isn't available in the app. The app name is displayed instead. + - If you set the flag to `false`, or if the flag is not configured in the `manifest.json` file of the app, the standard variant management is available and can be enabled or disabled. > ### Sample Code: > List Report without Variant Management @@ -70,7 +70,7 @@ For more information, see [Managing Variants](managing-variants-8ce658e.md). > > ``` -2. If you want to use an app-specific title instead of the variant, include the `subTitleIfVariantMgmtHidden` property in the i18n file and enter a text value as shown here: +2. If you want to use an app-specific title instead of the variant, include the `subTitleIfVariantMgmtHidden` property in the `i18n` file and enter a text value as shown in the following sample code: > ### Sample Code: > ```json @@ -79,52 +79,37 @@ For more information, see [Managing Variants](managing-variants-8ce658e.md). > subTitleIfVariantMgmtHidden = List Report Custom Title > ``` -3. Add a new property in the `manifest.json` of the application as shown here. - - ```json - - "sap.ui.generic.app": { - - "_version":"1.1.0", - - "pages": [ - - { - - "entitySet": "XXXXXX_Product", - - "component": { - - "name": "sap.suite.ui.generic.template.ListReport", - - "list": true, - - "settings" : { - - "gridTable" : false, - - "multiSelect": false, - - "smartVariantManagement": true, - - "variantManagementHidden": true, - - "subTitleIfVariantMgmtHidden": "{{subTitleIfVariantMgmtHidden}}" // Adding Custom Title here - - } - - }, - ``` +3. Add a new property in the `manifest.json` file of the app as shown in the following sample code: + + > ### Sample Code: + > ``` + > "sap.ui.generic.app": { + > "_version":"1.1.0", + > "pages": [ + > { + > "entitySet": "XXXXXX_Product", + > "component": { + > "name": "sap.suite.ui.generic.template.ListReport", + > "list": true, + > "settings" : { + > "gridTable" : false, + > "smartVariantManagement": true, + > "variantManagementHidden": true, + > "subTitleIfVariantMgmtHidden": "{{subTitleIfVariantMgmtHidden}}" // Adding Custom Title here + > } + > }, + > + > ``` > ### Note: - > `variantManagementHidden` must be used in combination with `smartVariantManagement = true` in order to hide both the page variant and control variant. If used alone, it only hides the filter bar variant. + > The `variantManagementHidden` property must be used in combination with `smartVariantManagement = true` to hide both the page variant and control variant. If used alone, it hides only the filter bar variant. -## SAP Fiori Elements for OData V4 +## **SAP Fiori Elements for OData V4** @@ -132,10 +117,10 @@ For more information, see [Managing Variants](managing-variants-8ce658e.md). ## Procedure -1. Include the `variantManagement` configuration in the settings of the list report target in the `manifest.json` of your app. +1. Include the `variantManagement` property in the settings of the list report target in the `manifest.json` file of your app. - - If you set the configuration to `None`, then standard variant management is not available on the list report. The app name is displayed instead. - - If you set the configuration to `Page` or `Control`, or if the configuration is not in the manifest of the app, the standard variant management is available. For more information, see [Managing Variants](managing-variants-8ce658e.md). + - If you set the configuration to `None`, then the standard variant management is not available on the list report. The app name is displayed instead. + - If you set the configuration to `Page` or `Control`, or if the configuration is not in the `manifest.json` file of the app, the standard variant management is available. For more information, see [Managing Variants](managing-variants-8ce658e.md). > ### Sample Code: > List Report without Variant Management @@ -160,7 +145,7 @@ For more information, see [Managing Variants](managing-variants-8ce658e.md). > > ``` -2. If you want to use an app-specific title instead of the variant, include the `subTitle` property in the i18n file and enter a text value as shown here: +2. If you want to use an app-specific title instead of the variant, include the `subTitle` property in the `i18n` file and enter a text value as shown in the following sample code: > ### Sample Code: > ```json @@ -169,7 +154,7 @@ For more information, see [Managing Variants](managing-variants-8ce658e.md). > appSubTitle = List Report Custom Title > ``` -3. Add a new property in the `manifest.json` of the application as shown here. +3. Add a new property in the `manifest.json` file of your app as shown in the following sample code: > ### Sample Code: > ```json diff --git a/docs/06_SAP_Fiori_Elements/defining-multiple-views-on-a-list-report-table-multiple-table-mode-37aeed7.md b/docs/06_SAP_Fiori_Elements/defining-multiple-views-on-a-list-report-table-multiple-table-mode-37aeed7.md index 18fed71c..c2ca6f39 100644 --- a/docs/06_SAP_Fiori_Elements/defining-multiple-views-on-a-list-report-table-multiple-table-mode-37aeed7.md +++ b/docs/06_SAP_Fiori_Elements/defining-multiple-views-on-a-list-report-table-multiple-table-mode-37aeed7.md @@ -382,6 +382,8 @@ To define multiple views using multiple table mode, perform the following steps: > ### Note: > Stable IDs: As there are separate table instances for each tab, table-specific IDs \(such as IDs for tables, toolbar actions, draft indicators in table columns\) get a suffix "-", where is the variant key you have specified in the manifest \(line 13\). This avoids duplicate ID errors and allows you to adapt specific tables via runtime adaptation \(for example, hiding a toolbar action for a specific table\). + > + > We recommend using keys that are a combination of alphanumeric characters, digits, and underscores \(\_\). You must ensure that they don't begin with a digit. 3. If you use charts in multiple table mode, you can implement the following features: @@ -470,12 +472,12 @@ To define multiple views using multiple table mode, perform the following steps: "quickVariantSelectionX": { "variants": { - "0": { - "key": "0", + "SalesOrderTable": { + "key": "SalesOrderTable", "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#VAR1" }, - "1": { - "key": "1", + "Amount_CustomerChart": { + "key": "Amount_CustomerChart", "annotationPath": "com.sap.vocabularies.UI.v1.SelectionPresentationVariant#VAR4", "showItemNavigationOnChart": true } @@ -540,8 +542,8 @@ To define multiple views using multiple table mode, perform the following steps: > "settings": { > "quickVariantSelectionX": { > "variants": { -> "0": { -> "key": "1", +> "ExpensiveOrdersTable": { +> "key": "ExpensiveOrdersTable", > "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant" > } > } @@ -612,12 +614,12 @@ To define multiple views using multiple table mode, perform the following steps: > ``` > "quickVariantSelectionX": { > "variants": { -> "0": { -> "key": "1", +> "ExpensiveOrdersTable": { +> "key": "ExpensiveOrdersTable", > "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant" > }, -> "1": { -> "key": "2", +> "CheapOrdersTable": { +> "key": "CheapOrdersTable", > "annotationPath": "com.sap.vocabularies.UI.v1.SelectionPresentationVariant" > } > } diff --git a/docs/06_SAP_Fiori_Elements/enabling-an-app-for-key-user-adaptation-ccd45ba.md b/docs/06_SAP_Fiori_Elements/enabling-an-app-for-key-user-adaptation-ccd45ba.md index 7d208340..e9c9d8b1 100644 --- a/docs/06_SAP_Fiori_Elements/enabling-an-app-for-key-user-adaptation-ccd45ba.md +++ b/docs/06_SAP_Fiori_Elements/enabling-an-app-for-key-user-adaptation-ccd45ba.md @@ -2,41 +2,60 @@ # Enabling an App for Key User Adaptation -Application developers can enable key users to make adaptations on the object page. +You can enable key users to make adaptations in the list report and on the object page. > ### Note: -> This topic is currently only applicable to SAP Fiori elements for OData V4. +> This topic is only applicable to SAP Fiori elements for OData V4. -To enable an app for key user adaptation, application developers must set `flexEnabled` to 'true' in the `manifest.json`. For more information, see [SAPUI5 Flexibility: Enable Your App for UI Adaptation](../05_Developing_Apps/sapui5-flexibility-enable-your-app-for-ui-adaptation-f1430c0.md). +To enable an app for key user adaptation, you must set `flexEnabled` to 'true' in the `manifest.json` file. For more information, see [SAPUI5 Flexibility: Enable Your App for UI Adaptation](../05_Developing_Apps/sapui5-flexibility-enable-your-app-for-ui-adaptation-f1430c0.md). +Key users can make the following adaptations on applications: +- Create different variants of the list report for users by adjusting filters, column sorting, and tab selection, for example - +- Move, rename, and remove buttons and add previously removed buttons to the following places: -## Working on the List Report + - A toolbar in the header and the table of the list report -Key users can create different variants of the list report for users via adjusting filters, column sorting, and tab selection, for example. + - The header, section, subsection, table, and footer of the object page + > ### Restriction: + > Some standard actions, such as edit, save, and delete, are excluded from key user adaptation. + > + > Actions with dynamic visibility cannot be added nor removed. -## Working on the Object Page +- Move, rename, remove, and reveal sections and subsections of the object page +- Edit the facets of the object page header. For more information, see the [Enabling Key User Adaptation on the Object Page Header](enabling-an-app-for-key-user-adaptation-ccd45ba.md#loioccd45ba3f0b446a0901b2c9d42b8ad53__section_rhq_1nh_tcc) section in this topic. -### Enabling the Feature *Key User Adaptation* on the Object Page Header +- Move, rename, add, and remove parts of forms. For more information, see the [Enabling Key User Adaptation in Forms](enabling-an-app-for-key-user-adaptation-ccd45ba.md#loioccd45ba3f0b446a0901b2c9d42b8ad53__section_shq_1nh_tcc) section in this topic. -Application developers can enable key users to make the following adaptations on the object page header: +- Embed, update, move and remove iFrame content \(that is, embedded content\) on object page headers and sections. For more information, see [Embedding Content](https://help.sap.com/docs/ui5-flexibility-for-key-users/ui5-flexibility-for-key-users/embedding-content). -- remove header facets + > ### Caution: + > You cannot embed another SAP Fiori elements app into an existing SAP Fiori elements app by using an iFrame. -- add predefined header facets -- change the order of header facets -- rename the titles of header facets + -Application developers can prepare annotations for header facets that can later be added by the key user to the object page header as follows: +## Enabling Key User Adaptation on the Object Page Header + +You can enable key users to make the following adaptations on the object page header: + +- Remove header facets + +- Add predefined header facets + +- Change the order of header facets + +- Rename the titles of header facets + + +You can prepare annotations for header facets. These facets can later be added by the key user to the object page header. Make the settings as shown in the following sample code: > ### Sample Code: > ```xml @@ -61,44 +80,40 @@ Application developers can prepare annotations for header facets that can later > > ``` -Application developers can remove header facets via stashing, as well as restrict the adaptability of the header facets. Both can be done in the manifest: +You can remove header facets by stashing, as well as restrict the adaptability of the header facets. Make the settings in the `manifest.json` file as shown in the following sample code: -```js -"SalesOrderManageObjectPage": { - "type": "Component", - "id": "SalesOrderManageObjectPage", - "name": "sap.fe.templates.ObjectPage", - "options": { - "settings": { - "editableHeaderContent ": false, - "controlConfiguration": { - "@com.sap.vocabularies.UI.v1.HeaderFacets": { - "facets": { - "ColumnMicroChart": { - "stashed": true - }, - "ProgressIndicator": { - "stashed": false, - "flexSettings": { - "designtime": "not-adaptable-visibility" -}}}}}}}} - -``` +> ### Sample Code: +> `manifest.json` +> +> ```json +> "SalesOrderManageObjectPage": { +> "type": "Component", +> "id": "SalesOrderManageObjectPage", +> "name": "sap.fe.templates.ObjectPage", +> "options": { +> "settings": { +> "editableHeaderContent ": false, +> "controlConfiguration": { +> "@com.sap.vocabularies.UI.v1.HeaderFacets": { +> "facets": { +> "ColumnMicroChart": { +> "stashed": true +> }, +> "ProgressIndicator": { +> "stashed": false, +> "flexSettings": { +> "designtime": "not-adaptable-visibility" +> }}}}}}}} +> ``` > ### Note: -> If you do not provide any entries for the header facet in the manifest, it will be rendered on the UI with the standard behavior \(by default, header facets are not stashed, and there are no restrictions regarding the adaptability\). - -**Stashing** - -If the application developer has defined header facets as stashed in the manifest, they are initially not visible on the UI. Such header facets are not loaded when the app is started. Key users can add these stashed header facets via key user adaptation, and make them visible for end users on the object page header. For more information, refer to [Header Facets](header-facets-17dbd5b.md). +> If you do not provide any entries for the header facet in the `manifest.json` file, it will be rendered on the UI with the standard behavior: By default, header facets are not stashed, and there are no restrictions regarding the adaptability. -**Restricting the Adaptability** -Application developers can restrict the adaptability of header facets via the manifest setting '`flexSettings'/'designtime`'. For example, the value '`not-adaptable-visibility`' means that all actions that influence visibility are disabled, that is, 'remove' and 'add' are not possible, but 'move' is enabled. For more details, refer to the [Restrict Adaptation for Certain Controls](../05_Developing_Apps/enabling-ui-adaptation-other-things-to-consider-de9fd55.md#loiode9fd55c69af4b46863f5d26b5d796c4__section_restrictadaptation) section in the topic [Enabling UI Adaptation: Other Things to Consider](../05_Developing_Apps/enabling-ui-adaptation-other-things-to-consider-de9fd55.md). -**Referencing Header Facets** +### Referencing Header Facets -To stash header facets or restrict their adaptability, you must reference header facets in the manifest using the ID defined in the annotation. If no ID is defined in the annotation, you can reference the header facet using the concatenated ID consisting of the `AnnotationPath` term part, and the qualifier. Refer to the following metadata snippet: +To stash header facets or restrict their adaptability, you must reference header facets in the `manifest.json` file using the ID defined in the annotation. If no ID is defined in the annotation, you can reference the header facet using an ID that consists of the `AnnotationPath` term part and the qualifier. The following sample code shows how the ID is defined or generated: > ### Sample Code: > ```xml @@ -114,20 +129,41 @@ To stash header facets or restrict their adaptability, you must reference header > > ``` -For the first facet, the ID would be `"ProgressIndicator"`, for the second facet, it would be generated from the annotation path, in this case `"DataPoint::Rating"`. +For the first facet, the ID is "`ProgressIndicator`", and for the second facet, it is generated from the annotation path, in this case, "`DataPoint::Rating`". + + + +### Stashing + +If you have defined header facets as stashed in the `manifest.json` file, they are initially not visible on the UI. Stashed header facets are not loaded when the app is started. Key users can add header facets that have been stashed and make them visible for end users on the object page header. For more information, see [Header Facets](header-facets-17dbd5b.md). -### Form +### Restricting the Adaptability -Application developers can also enable key users to move fields inside a `FormContainer`, or from one `FormContainer` to another within the same form, provided that the `FormContainers` are based on the same entity. Key users can rename fields by changing the label text. They can also remove and add fields, and can remove, add, and move `FormContainers` within a form. +You can restrict the adaptability of header facets by using the manifest setting '`flexSettings'/'designtime`'. For example, the value '`not-adaptable-visibility`' disables all actions that influence visibility, meaning 'remove' and 'add' are not possible but 'move' is enabled. For more information, see the [Restrict Adaptation for Certain Controls](../05_Developing_Apps/enabling-ui-adaptation-other-things-to-consider-de9fd55.md#loiode9fd55c69af4b46863f5d26b5d796c4__section_restrictadaptation) section in [Enabling UI Adaptation: Other Things to Consider](../05_Developing_Apps/enabling-ui-adaptation-other-things-to-consider-de9fd55.md). -Key users can add simple properties that are not visible on the screen, but that are defined in the model, as a new field to a `FormContainer`. If the value help for the property is available, the value help is also generated. Key users can only add fields to a form once, which means that a field must not appear in the `Add` dialog if the property is already visible on the screen within this form. -Application developers can also prepare properties with the annotation `DataFieldDefault`. This annotation acts like a wrapper for different types of `DataFieldAbstract`, and app developers should specifically use it for personalization. For example, as an app developer you can add a `DataField` or a `DataFieldWithUrl` in the `DataFieldDefault` annotation. + + + +## Enabling Key User Adaptation in Forms + +You can also enable key users to move fields inside a `FormContainer` or from one `FormContainer` to another within the same form, provided that the `FormContainers` are based on the same entity. Key users can do the following: + +- Rename fields by changing the label text + +- Remove and add fields + +- Remove, add, and move `FormContainers` within a form + +- Add simple properties that are not visible on the screen but that are defined in the model, as a new field to a `FormContainer`. If the value help for the property is available, the value help is also generated. Key users can only add fields to a form once, which means that a field must not appear in the *Add* dialog if the property is already visible on the screen within this form. + + +You can also provide properties with the annotation `DataFieldDefault`. This annotation acts like a wrapper for different types of `DataFieldAbstract`. You should specifically use `DataFieldDefault` for personalization purposes by adding a `DataField` or a `DataFieldWithUrl` in the `DataFieldDefault` annotation, for example. > ### Note: -> `DataFieldForAction`, `DataFieldForIntendBasedNavigation`, `DataFieldWithAction` and `DataFieldWithIntentBasedNavigation` annotations are not supported, as buttons should not be added to the `FormContainer`. +> `DataFieldForAction`, `DataFieldForIntendBasedNavigation`, `DataFieldWithAction`, and `DataFieldWithIntentBasedNavigation` annotations are not supported because you must not add buttons to the `FormContainer`. ```js OrganizationDivision : String(2) @( @@ -143,23 +179,8 @@ OrganizationDivision : String(2) @( ``` -Properties for which no label has been defined get a label that consists of a warning text and the technical property name, for example `[LABEL_MISSING: mediaType]`. +Properties for which no label has been defined get a label that consists of a warning text and the technical property name, such as `[LABEL_MISSING: mediaType]`. > ### Note: > Fields that are added using key user adaptation have a stable ID provided by SAPUI5 flexibility that is different from the stable ID generated by SAP Fiori elements. - - -### Section/Subsection - -Key users can move, rename, remove, and reveal sections and subsections on the object page. - - - -### Embedding Content - -Key users can embed, update, move and remove iFrame content \(that is, embed content\) on object page headers and sections. For more information, see [Embedding Content](https://help.sap.com/viewer/0f8b49c4dfc94bc0bda25a19aa93d5b2/Cloud/en-US/bfdf15154f16419fb60ce598b21fe515.html?q=embedding%20content). - -> ### Caution: -> You cannot embed another SAP Fiori elements app via an iFrame into an existing SAP Fiori elements app. - diff --git a/docs/06_SAP_Fiori_Elements/enabling-editing-using-a-dialog-mass-edit-965ef5b.md b/docs/06_SAP_Fiori_Elements/enabling-editing-using-a-dialog-mass-edit-965ef5b.md index de09e358..095276ff 100644 --- a/docs/06_SAP_Fiori_Elements/enabling-editing-using-a-dialog-mass-edit-965ef5b.md +++ b/docs/06_SAP_Fiori_Elements/enabling-editing-using-a-dialog-mass-edit-965ef5b.md @@ -22,7 +22,7 @@ The values that are changed within the mass edit dialog are applied to all selec ## Additional Features in SAP Fiori Elements for OData V2 -In SAP Fiori elements for OData V2, using the mass edit dialog is currently only available in the list report. +In SAP Fiori elements for OData V2, using the mass edit dialog is only available in the list report. For more information, see [Enabling Editing Using a Dialog \(Mass Edit\) in the List Report](enabling-editing-using-a-dialog-mass-edit-in-the-list-report-7cc4f04.md). @@ -182,19 +182,13 @@ The *Mass Edit* button isn't enabled if the update restriction points to a path > - If *Mass Edit* is enabled for an object page and the service is ETag enabled, you must ensure that the ETag implementation is in `etag master`. This means the ETag value of the child entity doesn't depend on the ETag value of the parent \(that is, the root entity\). > ### Restriction: -> - The following fields are currently not available in the *Mass Edit* dialog: +> - The following fields are not available in the *Mass Edit* dialog: > -> - date fields +> - image-based fields > -> - date-time fields +> - `DataFieldForAnnotation`-based fields such as: > -> - image based fields -> -> - progress indicator fields -> -> - `DataFieldForAnnotation` based fields such as: -> -> - micro chart based fields +> - micro-chart-based fields > > - contact fields > diff --git a/docs/06_SAP_Fiori_Elements/enabling-multiple-selection-in-tables-116b5d8.md b/docs/06_SAP_Fiori_Elements/enabling-multiple-selection-in-tables-116b5d8.md index b2b74285..2c8cca62 100644 --- a/docs/06_SAP_Fiori_Elements/enabling-multiple-selection-in-tables-116b5d8.md +++ b/docs/06_SAP_Fiori_Elements/enabling-multiple-selection-in-tables-116b5d8.md @@ -240,3 +240,39 @@ You can change the default *Select All* feature in both layouts by setting `sele > > In responsive tables, if you choose the *Select All*, checkbox, only the loaded data is selected. A message toast showing the number of selected records is displayed. + + +### Limiting the Number of Selected Rows in a Table + +You can configure the `selectionLimit` setting in the `manifest.json` file to limit the number of rows selected at once in the table. + +If `selectionLimit` isn't configured, then the default value is set as 200. + +This option is applicable only to grid tables, tree tables, and analytical tables. + +> ### Sample Code: +> manifest.json +> +> ``` +> "SalesOrderManageObjectPage":{ +> "type":"Component", +> "id":"SalesOrderManageObjectPage", +> "name":"sap.fe.templates.ObjectPage", +> "options":{ +> "settings":{ +> "contextPath":"/SalesOrderManage", +> "sectionLayout":"Tabs", +> "controlConfiguration":{ +> "_Item/@com.sap.vocabularies.UI.v1.LineItem":{ +> "tableSettings":{ +> "type":"GridTable", +> "selectionMode":"Multi", +> "selectionLimit": "50" +> } +> } +> } +> } +> } +> } +> ``` + diff --git a/docs/06_SAP_Fiori_Elements/enabling-object-creation-using-the-dialog-in-the-list-report-ceb9284.md b/docs/06_SAP_Fiori_Elements/enabling-object-creation-using-the-dialog-in-the-list-report-ceb9284.md index ced8cea3..0781f705 100644 --- a/docs/06_SAP_Fiori_Elements/enabling-object-creation-using-the-dialog-in-the-list-report-ceb9284.md +++ b/docs/06_SAP_Fiori_Elements/enabling-object-creation-using-the-dialog-in-the-list-report-ceb9284.md @@ -64,55 +64,51 @@ The option to create objects using a dialog now appears in the list report appli > ``` > ### Sample Code: -> Sample Manifest Setting for Enabling createWithParameterDialog in Multiview List Report/Worklist Page +> Manifest Setting for Enabling `createWithParameterDialog` in Multiview List Report/Worklist Page > > ``` > "sap.ui.generic.app": { -> "pages": [{ -> "entitySet": "C_STTA_SalesOrder_WD_20", -> "component": { -> "name": "sap.suite.ui.generic.template.ListReport", -> "list": true, -> "settings": { -> "quickVariantSelectionX": { -> "showCounts": true, -> "variants": { -> "0": -> -> { -> "key": "_tab1", -> "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#Expensive" +> "pages": [{ +> "entitySet": "C_STTA_SalesOrder_WD_20", +> "component": { +> "name": "sap.suite.ui.generic.template.ListReport", +> "list": true, +> "settings": { +> "quickVariantSelectionX": { +> "showCounts": true, +> "variants": { +> "0": +> { +> "key": "_tab1", +> "annotationPath": "com.sap.vocabularies.UI.v1.SelectionVariant#Expensive" > }, -> "1": { -> "key": "_tab2", -> "annotationPath": "com.sap.vocabularies.UI.v1.SelectionPresentationVariant#Cheap", -> "tableSettings": { -> "createWithParameterDialog": { -> "fields": { -> "bp_id": -> -> { -> "path": "bp_id" -> }, -> "currency_code": -> -> { -> "path": "currency_code" -> }, -> "op_id": -> -> { -> "path": "op_id" -> } -> } -> } -> } -> } -> } -> } -> } +> "1": +> { +> "key": "_tab2", +> "annotationPath": "com.sap.vocabularies.UI.v1.SelectionPresentationVariant#Cheap", +> "tableSettings": { +> "createWithParameterDialog": { +> "fields": { +> "bp_id": +> { +> "path": "bp_id" +> }, +> "currency_code": +> { +> "path": "currency_code" +> }, +> "op_id": +> { +> "path": "op_id" +> } +> } +> } +> } +> } +> } +> } +> } > }, -> > ``` If this feature is enabled, you cannot navigate to an object page in create mode. However, you can navigate to the object page in display mode to modify objects. @@ -124,7 +120,7 @@ Draft state is not maintained when an object is created using the dialog. > > - Ensure that all the mandatory fields of the entities are part of the create dialog. > -> - Object creation using the dialog is only supported in list report page with the single view or multiple views. For more information, see [Defining Multiple Views on a List Report Table - Single Table Mode](defining-multiple-views-on-a-list-report-table-single-table-mode-0d390fe.md) and [Defining Multiple Views on a List Report Table - Multiple Table Mode](defining-multiple-views-on-a-list-report-table-multiple-table-mode-37aeed7.md). +> - Only list report pages support object creation using the dialog. On list report pages, this feature is available in both single view or multiple views scenarios. For more information, see [Defining Multiple Views on a List Report Table - Single Table Mode](defining-multiple-views-on-a-list-report-table-single-table-mode-0d390fe.md) and [Defining Multiple Views on a List Report Table - Multiple Table Mode](defining-multiple-views-on-a-list-report-table-multiple-table-mode-37aeed7.md). > > - You can also create objects using a dialog by prefilling fields from the filter values that you entered. For more information, see [Prefilling Fields When Creating a New Entity Using an Extension Point](prefilling-fields-when-creating-a-new-entity-using-an-extension-point-189e2d8.md). > diff --git a/docs/06_SAP_Fiori_Elements/enabling-the-flexible-column-layout-e762257.md b/docs/06_SAP_Fiori_Elements/enabling-the-flexible-column-layout-e762257.md index 2080aff4..342280f8 100644 --- a/docs/06_SAP_Fiori_Elements/enabling-the-flexible-column-layout-e762257.md +++ b/docs/06_SAP_Fiori_Elements/enabling-the-flexible-column-layout-e762257.md @@ -4,7 +4,7 @@ The flexible column layout is a feature that can show two or three columns on a single page. -For example, a list of items is shown in the first column, and when you choose an item to see its details, the related object page is shown in the second or third column. You can expand the column you want to focus on, switch between different layouts, and view the column on the right-hand side in -screen mode. +For example, a list of items is shown in the first column, and when you choose an item to see its details, the related object page is shown in the second or third column. You can expand the column you want to focus on, switch between different layouts, and view the column on the right-hand side in full-screen mode. Use the following attributes to create the column layout you want: @@ -39,23 +39,24 @@ Users can expand and collapse the columns using the focus buttons. They can chan -## Enabling the Flexible Column Layout using SAP Fiori Tools +## Enabling the Flexible Column Layout Using SAP Fiori Tools -> ### Restriction: +> ### Remember: > The flexible column layout isn't available for the overview page floorplan. -1. Launch the *Page Map*. You can launch the *Page Map* in several ways, for example by right-clicking the project folder and selecting*Show Page Map*. For more information, see [Define Application Structure](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/bae38e6216754a76896b926a3d6ac3a9.html). +1. Launch the *Page Map*. You can launch the *Page Map* in several ways, for example by right-clicking the project folder and selecting *Show Page Map*. For more information, see [Define Application Structure](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/bae38e6216754a76896b926a3d6ac3a9.html). + +2. To select the flexible column layout configuration, go to the *Property Panel* and select *Flexible Column Layout*. + +3. Select your desired layout. You can select a layout for two or three columns. You can also customize your layout settings further in the `manifest.json` file. For more information, see [Additional Features in SAP Fiori Elements for OData V2](enabling-the-flexible-column-layout-e762257.md#loioe762257125b34513b0859faa1610b09e__section_grc_dmp_gmb). -2. To select the Flexible Column Layout configuration, go to the *Property Panel* and select *Flexible Column Layout*. -3. Select your desired layout. You can select a layout for two or three columns. You can also customize your layout settings further in the`manifest.json` file. For more information, see the following section: + The following screenshot shows the flexible column layout property in an application based on SAP Fiori elements for OData V2: - > ### Tip: - > The following screenshot shows the flexible column layout property on a V2 application: - > - > ![](images/Fiori_Tools_-_Business_Application_Studio_-_Flexible_Column_Layout_Property_1bba2f4.png) + ![](images/Fiori_Tools_-_Business_Application_Studio_-_Flexible_Column_Layout_Property_1bba2f4.png) 4. To preview your chosen flexible column layout, see [Previewing an Application](https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/b962685bdf9246f6bced1d1cc1d9ba1c.html). + The following screenshot shows the flexible column layout in a previewed application: ![](images/Fiori_Tools_-_Business_Application_Studio_-_Flexible_Column_Layout_Preview_19a666e.png) @@ -73,7 +74,7 @@ The following screen recording shows how to enable the flexible column layout an > ### Note: > - For the overview page, the flexible column layout is not relevant. > -> - The analytical list page only supports the `TwoColumnsBeginExpanded` layout. For more information, see also [2409984](https://me.sap.com/notes/2409984). +> - The analytical list page only supports the `TwoColumnsBeginExpanded` layout. For more information, see [2409984](https://me.sap.com/notes/2409984). > > - The flexible column layout can be used in draft and non-draft scenarios. > @@ -144,9 +145,9 @@ Usually, this setting is made on the main object page. After navigating from the ## Additional Features in SAP Fiori Elements for OData V4 -To enable the flexible column layout, add the `"rootView"` object to the manifest and create an entry in `manifest.json` under the routing key to specify the `"routerClass"`. It has to be set to `"sap.f.routing.Router"`. You must ensure that `"sap.f"` is added as a lib dependency under the `"sap.ui5"` key. +To enable the flexible column layout, add the `"rootView"` object and create an entry in the `manifest.json` file under the routing key to specify the `"routerClass"`. It must be set to `"sap.f.routing.Router"`. You must ensure that `"sap.f"` is added as a lib dependency under the `"sap.ui5"` key. -In `"routing.config"`, the optional `"flexibleColumnLayout"` object allows you to specify the default expansion of the columns to two columns and three columns layout. +In `"routing.config"`, the optional `"flexibleColumnLayout"` object allows you to specify either two columns or three columns as the default layout. ``` "sap.ui5":{ @@ -175,18 +176,18 @@ In `"routing.config"`, the optional `"flexibleColumnLayout"` object allows you t ### Routes Configuration -The route target leads to an array instead of a single element in the usual fullscreen application. The pattern key format describes the pattern to be matched from a navigation to identify the route, but it must end with an optional query parameter `:?query:`so as to add the pattern. +The route target leads to an array instead of a single element in the usual full-screen application. The pattern key format describes the pattern to be matched from a navigation to identify the route, but it must end with an optional query parameter `:?query:` so as to add the pattern. -The following keys should be set: +You must set the following keys: - `name`: Unique identifier of the current route -- `target`: Array listing the targets that will be displayed +- `target`: Array listing the targetsto be displayed You can enable the flexible column layout and define the number of columns in the layout by configuring the `target` key in the `manifest.json` file. -The following sample code shows a 3-column layout that starts from the list report: +The following sample code shows a 3-column layout that starts with a list report: > ### Sample Code: > ``` @@ -224,7 +225,7 @@ The following sample code shows a 3-column layout that starts from the list repo > ] > ``` -The following sample code shows a 2-column layout that starts from the object page: +The following sample code shows a 2-column layout that starts with an object page: > ### Sample Code: > ``` @@ -257,17 +258,17 @@ The following sample code shows a 2-column layout that starts from the object pa ### Target Configuration -For each target, the following keys should be set: +You must set the following keys for each target:: - `type`: Component - `id`: unique identifier for the current target -- `name`: name of the template to be use by the view +- `name`: name of the template to be used by the view - - `sap.fe.templates.ListReport` should be used for the first level \(landing view\) + - `sap.fe.templates.ListReport` must be used for the first level \(landing view\) - - `sap.fe.templates.ObjectPage` should be used for any sub-sequent level + - `sap.fe.templates.ObjectPage` must be used for any subsequent level - `controlAggregation`: specify where the view should be located @@ -281,76 +282,71 @@ For each target, the following keys should be set: - `contextPattern`: navigation path of the current target -- All other keys remain unchanged compared the fullscreen applications +- All other keys remain unchanged compared the full-screen applications > ### Sample Code: > ``` > "targets": { -> "SalesOrderManageList": { -> "type": "Component", +> "SalesOrderManageList": { +> "type": "Component", > "id": "SalesOrderManageList", > "name": "sap.fe.templates.ListReport", > "controlAggregation": "beginColumnPages", > "contextPattern": "", -> "options": { -> ... -> // Same as fullscreen // -> ... -> } -> }, -> "SalesOrderManageObjectPage": { -> "type": "Component", +> "options": { +> ... +> // Same as fullscreen // +> ... +> } +> }, +> "SalesOrderManageObjectPage": { +> "type": "Component", > "id": "SalesOrderManageObjectPage", > "name": "sap.fe.templates.ObjectPage", > "controlAggregation": "midColumnPages", > "contextPattern": "/SalesOrderManage({key})", > "options": { -> ... -> // Same as fullscreen // -> ... -> } -> }, -> "SalesOrderItemObjectPage": { -> "type": "Component", +> ... +> // Same as fullscreen // +> ... +> } +> }, +> "SalesOrderItemObjectPage": { +> "type": "Component", > "id": "SalesOrderItemObjectPage", > "name": "sap.fe.templates.ObjectPage", > "controlAggregation": "endColumnPages", > "contextPattern": "/SalesOrderManage({key})/_Item({key2})", > "options": { -> ... -> // Same as fullscreen // -> ... +> ... +> // Same as fullscreen // +> ... > } -> }, -> "MaterialDetailsObjectPage": { -> "type": "Component", +> }, +> "MaterialDetailsObjectPage": { +> "type": "Component", > "id": "MaterialDetailsObjectPage", > "name": "sap.fe.templates.ObjectPage", > "controlAggregation": "endColumnPages", > "contextPattern": "/SalesOrderManage({key})/_Item({key2})/_MaterialDetails({key3})", -> "options": { -> ... -> // Same as fullscreen // -> ... +> "options": { +> ... +> // Same as fullscreen // +> ... > } -> }, -> ... -> } +> }, +> ... +> } +> > ``` > ### Restriction: -> - In edit mode on an object page, when you add a column to a table or remove it, the subobject page closes automatically. +> - In edit mode on an object page, the subobject page closes automatically when you add or remove a column from a table. > > - If you have a list report or an object page with multiple tables that are based on the same entity, only the first table is synchronized with its associated subobject page. > > - When you update a multi-input field on an object page, you need to first refresh the parent page \(either an object page or a list report\) before the changes are visible. - - - - - -## Related Links - -For more information on the `loadFragment` method, see [EditFlow](https://ui5.sap.com/#/api/sap.fe.core.ExtensionAPI%23overview) in the Demo Kit. +> +> - In the flexible column layout, a tree table cannot be displayed on the list report with a draft-enabled service. diff --git a/docs/06_SAP_Fiori_Elements/enabling-the-search-function-3cdebee.md b/docs/06_SAP_Fiori_Elements/enabling-the-search-function-3cdebee.md index 955573f8..eaf9adf5 100644 --- a/docs/06_SAP_Fiori_Elements/enabling-the-search-function-3cdebee.md +++ b/docs/06_SAP_Fiori_Elements/enabling-the-search-function-3cdebee.md @@ -2,7 +2,7 @@ # Enabling the Search Function -You can enable the *Search* function in the list report, for example. +You can enable the *Search* function in the list report. diff --git a/docs/06_SAP_Fiori_Elements/enabling-the-upload-functionality-d59dbec.md b/docs/06_SAP_Fiori_Elements/enabling-the-upload-functionality-d59dbec.md index 3cf96f41..ca70dd5c 100644 --- a/docs/06_SAP_Fiori_Elements/enabling-the-upload-functionality-d59dbec.md +++ b/docs/06_SAP_Fiori_Elements/enabling-the-upload-functionality-d59dbec.md @@ -54,6 +54,8 @@ Here is an example of how to define the entity type with the required annotation >
> ``` +In CAP CDS annotation, you can use the `Attachments` plug-in to define the entity type. For more information about the plug-in, see [Attachments](https://cap.cloud.sap/docs/plugins/#attachments). + Check out our live example in the flexible programming model explorer at [Table - File Upload](https://sapui5untested.int.sap.eu2.hana.ondemand.com/test-resources/sap/fe/core/fpmExplorer/index.html#/buildingBlocks/table/tableUpload). diff --git a/docs/06_SAP_Fiori_Elements/extending-the-delivered-apps-manifest-using-an-adaptation-project-a2b24a6.md b/docs/06_SAP_Fiori_Elements/extending-the-delivered-apps-manifest-using-an-adaptation-project-a2b24a6.md index cc98d80b..dfc56f58 100644 --- a/docs/06_SAP_Fiori_Elements/extending-the-delivered-apps-manifest-using-an-adaptation-project-a2b24a6.md +++ b/docs/06_SAP_Fiori_Elements/extending-the-delivered-apps-manifest-using-an-adaptation-project-a2b24a6.md @@ -5,17 +5,17 @@ You can extend the SAP-delivered list report and object page apps that are developed on SAP Fiori elements. > ### Note: -> This topic is only applicapble to SAP Fiori elements for OData V2. +> This topic is applicable only to SAP Fiori elements for OData V2. To know how you can extend the delivered apps manifest for SAP Fiori elements for OData V4, see the section **Adaptation by Application Developers** in the [Adapting the UI](adapting-the-ui-59bfd31.md) topic. The delivered apps can be extended by adding a new node in the object page or by modifying the manifest configurations settings through the adaptation project. By configuring the adaptation project manifest, you can enable the following features: -- Add a new subobject page for the newly extended node +- Add a new subobject page for the newly extended node. -- Define configurations for the newly extended node or existing pages +- Define configurations for the newly extended node or existing pages. -- Perform additional configurations that can be modified for an application +- Perform additional configurations that can be modified for an application. @@ -26,7 +26,7 @@ The delivered apps can be extended by adding a new node in the object page or by ABAP platform 2021 or a higher version is installed. -In the manifest file of the app, the pages and sub pages section must be specified in the object format and not in the array format, within `sap.ui.generic.app`. +In the manifest file of the app, the pages and subpages section must be specified in the object format and not in the array format, within `sap.ui.generic.app`. @@ -34,36 +34,33 @@ In the manifest file of the app, the pages and sub pages section must be specifi ## Adding a New Subobject Page for the Newly Extended Node -As a prerequisite, the new node must be added in the back end, and the metadata properties for the new node must be available through service metadata. A detail page for the new node can be added using the following definition in the `manifest.appdescr_variant` file. +As a prerequisite, the new node must be added in the back end, and the metadata properties for the new node must be available through service metadata. A detail page for the new node can be added using the following definition in the `manifest.appdescr_variant` file: > ### Sample Code: > ``` -> > { -> "changeType": "appdescr_ui_generic_app_addNewObjectPage", -> "content": { -> "parentPage": { -> "component": "sap.suite.ui.generic.template.ObjectPage", -> "entitySet": "C_STTA_SalesOrder_WD_20" -> }, -> "childPage": { -> "id": "customer.ObjectPage|to_extendedNode", -> "definition": { -> "navigationProperty": "to_extendedNode", -> "entitySet": "C_STTA_ExtendedNode" -> } -> } -> } +> "changeType": "appdescr_ui_generic_app_addNewObjectPage", +> "content": { +> "parentPage": { +> "component": "sap.suite.ui.generic.template.ObjectPage", +> "entitySet": "C_STTA_SalesOrder_WD_20" +> }, +> "childPage": { +> "id": "customer.ObjectPage|to_extendedNode", +> "definition": { +> "navigationProperty": "to_extendedNode", +> "entitySet": "C_STTA_ExtendedNode" +> } +> } +> } > } -> -> > ``` You must add the parameters in the `changeType`, `layer`, `parentPage`, and `childPage` sections for the mergers to be executed. -- `changeType` defines the merger to be invoked +- `changeType` defines the merger to be invoked. -- `parentPage` and `entitySet` are used to identify the location in the manifest file where the child page has to be added +- `parentPage` and `entitySet` are used to identify the location in the manifest file where the child page has to be added. - `childPage` defines the extended node to be added to the manifest, where the `id` is the unique page key and the `definition` object holds the `navigationProperty` and `entitySet` of the extended node. The `childPage.id` name should have a prefix using the target layer name. If the target layer name is `customer` or `customer_base`, add the `customer.` prefix. However, if the target layer name is `vendor`, a prefix is not required. @@ -74,40 +71,38 @@ You must add the parameters in the `changeType`, `layer`, `parentPage`, and `chi ## Defining Configurations for a Node -The following is a sample definition to set the `createMode` and table type for a node in the object page. It should be added to the `manifest.appdescr_variant` file of the adaptation project. +The following sample code is a definition to set the `createMode` and table type for a node in the object page. It must be added to the `manifest.appdescr_variant` file of the adaptation project. > ### Sample Code: > ``` -> > { -> "changeType": "appdescr_ui_generic_app_changePageConfiguration", -> "content": { -> "parentPage": { -> "component": "sap.suite.ui.generic.template.ObjectPage", -> "entitySet": "C_STTA_SalesOrder_WD_20" -> }, -> "entityPropertyChange": { -> "propertyPath": "component/settings/sections/extendedFacetId", -> "operation": "UPSERT", -> "propertyValue": { -> "createMode": "inline", -> "tableSettings": { -> "tableType": "GridTable" -> } -> } -> } +> "changeType": "appdescr_ui_generic_app_changePageConfiguration", +> "content": { +> "parentPage": { +> "component": "sap.suite.ui.generic.template.ObjectPage", +> "entitySet": "C_STTA_SalesOrder_WD_20" +> }, +> "entityPropertyChange": { +> "propertyPath": "component/settings/sections/extendedFacetId", +> "operation": "UPSERT", +> "propertyValue": { +> "createMode": "inline", +> "tableSettings": { +> "tableType": "GridTable" > } +> } +> } +> } > } -> > ``` You must add the parameters in the `changeType`, `parentPage`, and `entityPropertyChange` sections for the mergers to be executed. -- `changeType` defines the merger to be invoked +- `changeType` defines the merger to be invoked. -- `layer` defines the target layer +- `layer` defines the target layer. -- `parentPage` and `entitySet` are used to identify the location in the manifest where the setting has to be changed +- `parentPage` and `entitySet` are used to identify the location in the manifest where the setting has to be changed. - `entityPropertyChange` contains the following: @@ -127,262 +122,290 @@ For detailed steps explaining how to work in an adaptation project, see the *Pro ## Additional Configurations That Can Be Modified for an Application -You can perform additional configurations that can be modified for an application using: +You can perform additional configurations that can be modified for an application using the following settings: + +- Application-level settings + + - `createMode` + + - `flexibleColumnLayout` + + - `inBoundParameters` + + - `externalNavigationSettings` + + +- List report page + + - `filterSettings` -- `editableHeaderContent` + - `dataLoadSettings` -- `showRelatedApps` + - `enableTableFilterInPageVariant` -- `filterSettings` + - `condensedTableLayout` -- `condensedTableLayout` + - `tableSettings` -- `enableTableFilterInPageVariant` -- `dataLoadSettings` +- Object page + + - `editableHeaderContent` + + - `showRelatedApps` + + - `tableSettings` -- `tableSettings` Define the following definition in the `manifest.appdescr_variant` file as part of the `content[]`: > ### Sample Code: -> Modifying `editableHeaderContent` and `ShowRelatedApps` +> Modifying `createMode` and `flexibleColumnLayout` > > ``` > { -> "changeType": "appdescr_ui_generic_app_changePageConfiguration", -> "content": { -> "parentPage" : { -> "component": "sap.suite.ui.generic.template.ObjectPage", -> "entitySet": "STTA_C_MP_Product" -> }, -> "entityPropertyChange": { -> "propertyPath": "component/settings", -> "operation": "UPSERT", -> "propertyValue": { -> "editableHeaderContent":false, -> "showRelatedApps":false -> } -> } -> -> } -> } -> +> "changeType": "appdescr_ui_generic_app_changePageConfiguration", +> "content": { +> "parentPage": { +> "component": "sap.suite.ui.generic.template" +> }, +> "entityPropertyChange": { +> "propertyPath": "settings", +> "operation": "UPSERT", +> "propertyValue": { +> "tableSettings": { +> "createMode": "creationRows" +> }, +> "flexibleColumnLayout": { +> "defaultTwoColumnLayoutType": "TwoColumnsMidExpanded", +> "defaultThreeColumnLayoutType": "ThreeColumnsEndExpanded" +> } +> } +> } +> } +> } > ``` > ### Sample Code: -> Adding `filterSettings` with `historySettings` +> Modifying `externalNavigationSettings` and `inBoundParameters` > > ``` > { -> "changeType": "appdescr_ui_generic_app_changePageConfiguration", -> "content": { -> "parentPage" : { -> "component": "sap.suite.ui.generic.template.ListReport", -> "entitySet": "STTA_C_MP_Product" -> }, -> "entityPropertyChange": { -> "propertyPath": "component/settings", -> "operation": "UPSERT", -> "propertyValue": { -> "filterSettings": { -> "historySettings": { -> "historyEnabled": "enabled" -> } -> } -> } -> } -> -> } -> } -> +> "changeType": "appdescr_ui_generic_app_changePageConfiguration", +> "content": { +> "parentPage": { +> "component": "sap.suite.ui.generic.template" +> }, +> "entityPropertyChange": { +> "propertyPath": "settings", +> "operation": "UPSERT", +> "propertyValue": { +> "externalNavigationSettings": { +> "defaultOutboundSettings": { +> "refreshStrategyOnAppRestore": { +> "entitySets": { +> "STTA_C_MP_Product": "self" +> } +> } +> } +> }, +> "inboundParameters": { +> "Supplier": { +> "useForCreate": true +> } +> } +> } +> } +> } +> } > ``` > ### Sample Code: -> Adding `filterSettings` with `dateSettings` +> Adding `filterSettings` with `historySettings` and `dateSettings` > > ``` > { -> "changeType": "appdescr_ui_generic_app_changePageConfiguration", -> "content": { -> "parentPage" : { -> "component": "sap.suite.ui.generic.template.ListReport", -> "entitySet": "C_STTA_SalesOrder_WD_20" -> }, -> "entityPropertyChange": { -> "propertyPath": "component/settings", -> "operation": "UPSERT", -> "propertyValue": { -> "filterSettings": { -> "dateSettings": { -> "useDateRange": false, -> "selectedValues":"DAYS,WEEK,MONTH,DATERANGE", -> "fields": { -> "SemanticDate1": { -> "selectedValues": "TOMORROW", -> "exclude": true -> }, -> "SemanticDate2": { -> "defaultValue": { -> "operation": "LASTYEAR" -> } -> } -> } -> } -> } -> } -> } -> -> } -> } -> +> "changeType": "appdescr_ui_generic_app_changePageConfiguration", +> "content": { +> "parentPage": { +> "component": "sap.suite.ui.generic.template.ListReport", +> "entitySet": "STTA_C_MP_Product" +> }, +> "entityPropertyChange": { +> "propertyPath": "component/settings", +> "operation": "UPSERT", +> "propertyValue": { +> "filterSettings": { +> "historySettings": { +> "historyEnabled": "enabled" +> }, +> "dateSettings": { +> "useDateRange": false, +> "selectedValues": "DAYS,WEEK,MONTH,DATERANGE", +> "fields": { +> "SemanticDate1": { +> "selectedValues": "TOMORROW", +> "exclude": true +> }, +> "SemanticDate2": { +> "defaultValue": { +> "operation": "LASTYEAR" +> } +> } +> } +> } +> } +> } +> } +> } +> } > ``` > ### Sample Code: -> Adding `condensedTableLayout` +> Adding `enableTableFilterInPageVariant`, `dataLoadSettings`, and `condensedTableLayout` > > ``` > { -> "changeType": "appdescr_ui_generic_app_changePageConfiguration", -> "content": { +> "changeType": "appdescr_ui_generic_app_changePageConfiguration", +> "content": { > "parentPage": { -> "component": "sap.suite.ui.generic.template.ListReport", -> "entitySet": "STTA_C_MP_Product" -> }, +> "component": "sap.suite.ui.generic.template.ListReport", +> "entitySet": "STTA_C_MP_Product" +> }, > "entityPropertyChange": { -> "propertyPath": "component/settings", -> "operation": "UPSERT", -> "propertyValue": { -> "condensedTableLayout":true -> -> } -> } +> "propertyPath": "component/settings", +> "operation": "UPSERT", +> "propertyValue": { +> "enableTableFilterInPageVariant":true, +> "dataLoadSettings": { +> "loadDataOnAppLaunch": "never" +> }, +> "condensedTableLayout":true > } -> } +> } +> } +> } > > ``` > ### Sample Code: -> Adding `enableTableFilterInPageVariant` and `dataLoadSettings` +> Adding or modifying `tableSettings` such as `type`, `multiselect`, `selectAll`, and `multiEdit` > > ``` > { -> "changeType": "appdescr_ui_generic_app_changePageConfiguration", -> "content": { -> "parentPage": { -> "component": "sap.suite.ui.generic.template.ListReport", -> "entitySet": "STTA_C_MP_Product" -> }, -> "entityPropertyChange": { -> "propertyPath": "component/settings", -> "operation": "UPSERT", -> "propertyValue": { -> "enableTableFilterInPageVariant":true, -> "dataLoadSettings": { -> "loadDataOnAppLaunch": "never" -> } -> } +> "changeType": "appdescr_ui_generic_app_changePageConfiguration", +> "content": { +> "parentPage": { +> "component": "sap.suite.ui.generic.template.ListReport", +> "entitySet": "STTA_C_MP_Product" +> }, +> "entityPropertyChange": { +> "propertyPath": "component/settings/tableSettings", +> "operation": "UPSERT", +> "propertyValue": { +> "type": "GridTable", +> "multiSelect": true, +> "selectAll": false, +> "multiEdit": { +> "enabled": true > } > } -> } +> } +> } +> } +> ``` + +> ### Sample Code: +> Adding fields to the `createWithDialogParameter` dialog > > ``` +> { +> "changeType": "appdescr_ui_generic_app_changePageConfiguration", +> "content": { +> "parentPage": { +> "component": "sap.suite.ui.generic.template.ListReport", +> "entitySet": "STTA_C_SO_SalesOrder_ND" +> }, +> "entityPropertyChange": { +> "propertyPath": "component/settings/tableSettings/createWithParameterDialog/fields", +> "operation": "UPSERT", +> "propertyValue": { +> "CurrencyCode":{"path":"CurrencyCode"} +> +> } +> } +> } +> } +> ``` > ### Sample Code: -> Adding/Modifying `tableSettings` such as `type`, `multiselect`, and `selectAll` +> Modifying `editableHeaderContent` and `ShowRelatedApps` > > ``` > { > "changeType": "appdescr_ui_generic_app_changePageConfiguration", > "content": { -> "parentPage": { -> "component": "sap.suite.ui.generic.template.ListReport", +> "parentPage" : { +> "component": "sap.suite.ui.generic.template.ObjectPage", > "entitySet": "STTA_C_MP_Product" > }, > "entityPropertyChange": { -> "propertyPath": "component/settings/tableSettings", +> "propertyPath": "component/settings", > "operation": "UPSERT", > "propertyValue": { -> "type":"GridTable", -> "multiSelect": true, -> "selectAll": false +> "editableHeaderContent":false, +> "showRelatedApps":false > } > } +> > } -> } -> -> ``` - -> ### Sample Code: -> Adding/Modifying the `multiEdit` dialog -> -> ``` -> { -> "changeType": "appdescr_ui_generic_app_changePageConfiguration", -> "content": { -> "parentPage": { -> "component": "sap.suite.ui.generic.template.ListReport", -> "entitySet": "STTA_C_SO_SalesOrder_ND" -> }, -> "entityPropertyChange": { -> "propertyPath": "component/settings", -> "operation": "UPSERT", -> "propertyValue": { -> "tableSettings":{ -> `"multiEdit":{ -> "enabled":true -> } -> } -> -> } -> } -> } +> } > > ``` > ### Sample Code: -> Adding fields to the `createWithDialogParameter` dialog +> Adding `createMode` for an object page > > ``` > { -> "changeType": "appdescr_ui_generic_app_changePageConfiguration", -> "content": { -> "parentPage": { -> "component": "sap.suite.ui.generic.template.ListReport", -> "entitySet": "STTA_C_SO_SalesOrder_ND" -> }, -> "entityPropertyChange": { -> "propertyPath": "component/settings/tableSettings/createWithParameterDialog/fields", -> "operation": "UPSERT", -> "propertyValue": { -> "CurrencyCode":{"path":"CurrencyCode"} -> -> } -> } -> } +> "changeType": "appdescr_ui_generic_app_changePageConfiguration", +> "content": { +> "parentPage": { +> "component": "sap.suite.ui.generic.template.ObjectPage", +> "entitySet": "STTA_C_SO_SalesOrder_ND" +> }, +> "entityPropertyChange": { +> "propertyPath": "component/settings/tableSettings", +> "operation": "UPSERT", +> "propertyValue": { +> "createMode": "creationRows", +> "multiSelect": true, +> "selectAll": false > } -> +> } +> } +> } > ``` > ### Note: -> As part of the `filterSettings`, adding or modifying `filter[]` configurations per field and `customDateRangeImplementation`, is currently not supported. +> As part of `filterSettings`, adding or modifying `filter[]` configurations per field and `customDateRangeImplementation`, is not supported. You must add the parameters in the `changeType`, `parentPage`, and `entityPropertyChange` for the mergers to be executed. -- `changeType` defines the merger to be invoked +- `changeType` defines the merger to be invoked. - `changeType`: `appdescr_sap_ui_generic_app_changePageConfiguration` + `changeType`: `appdescr_sap_ui_generic_app_changePageConfiguration.` -- `parentPage` and `entitySet` are used to identify the location in the manifest where the setting has to be changed +- `parentPage` and `entitySet` are used to identify the location in the manifest where the setting has to be changed. - `entityPropertyChange` contains the following: - - `propertyPath` the path in the manifest where the changes have to be added. For example, `component/settings/` + - `propertyPath` the path in the manifest where the changes have to be added. For example, `component/settings/`. - - `operation` should be set as `UPSERT` + - `operation` should be set as `UPSERT`. - - `propertyValue` defines the new properties to be included in the manifest + - `propertyValue` defines the new properties to be included in the manifest. @@ -393,7 +416,7 @@ You must add the parameters in the `changeType`, `parentPage`, and `entityProper Define the following definition in the `manifest.appdescr_variant` file as part of the `content[]`: > ### Sample Code: -> Adding `annotationPath` to include a Selection Presentation Variant in the list report page +> Adding `annotationPath` to include a selection presentation variant in the list report page > > ``` > { @@ -439,7 +462,12 @@ Once the annotation file is added, you can continue as follows: > ### Sample Code: > ``` -> +> <. Also, while running the app you should first use my +> workspace in the configuration. +> Uri="https://fiorielementsqh3815snapshot-xdf25c17a.dispatcher.neo.ondemand.com/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_COMMON',Version='0001',SAP__Origin='LOCAL')/$value"> +> +> edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0"> > Uri="https://fiorielementsqh3815snapshot-xdf25c17a.dispatcher.neo.ondemand.com/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_COMMON',Version='0001',SAP__Origin='LOCAL')/$value"> > @@ -458,114 +486,12 @@ Once the annotation file is added, you can continue as follows: > > > -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> @com.sap.vocabularies.UI.v1.LineItem#ManageProducts -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> Width -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> +> ``` > ### Sample Code: -> Including newly created annotation -> > ``` -> { +> Including newly createdPropertyValue Property="Label" String="New Activate Button"/> Width { > "changeType": "appdescr_app_addAnnotationsToOData", > "content": { > "dataSourceId": "mainService", @@ -588,14 +514,14 @@ Once the annotation file is added, you can continue as follows: ## Including a Reuse Component in an Adaption Project -This section describes the change mergers that are used to include a reuse component in an adaptation project. The example here shows a way to include attachment service in the object page. +This section describes the change mergers that are used to include a reuse component in an adaptation project. The following example shows an `Annotations Target="STTA_PROD_MAN.STTA_C_MP_ProductType"`. -As a prerequisite, the reuse component should be present in the target backend system. Reuse component is to be cloned to the workspace and its library reference should be added in `neo-app.json`. Also, while running the app you should first use my workspace in the configuration. +As a prerequisite, the reuse component must be present in the target backend system. Reuse component is to be cloned to the workspace and its library reference must be added in ` ### Note: -> You must follow corresponding reuse component configuration for the application to work. For example, attachment reuse component needs few parameters to be added in the neo-app.json. For more information. see [Attachments Development Guideline](https://wiki.wdf.sap.corp/wiki/display/PLMOH/Attachments+Development+Guideline) +> You must follow corresponding reuse component configuration for the application to work. For example, attachment reuse component needs few parameters to be added in the `neo-app.json`. For more information, see [Attachments Development Guideline](https://wiki.wdf.sap.corp/wiki/display/PLMOH/Attachments+Development+Guideline). -The following parameters have to be included as `headerWhiteList` in the consuming application’s `neo-app.json` file. +The following parameters must be included as `headerWhiteList` in the consuming application’s `neo-app.json` file. > ### Sample Code: > `headerWhiteList` @@ -615,7 +541,7 @@ The following parameters have to be included as `headerWhiteList` in the consumi > > ``` -These changes are to be added to `manifest.appdescr_variant` file in the adaptation project +These changes are to be added to `manifest.appdescr_variant` file in the adaptation project. > ### Sample Code: > ``` diff --git a/docs/06_SAP_Fiori_Elements/faqs-f4817b7.md b/docs/06_SAP_Fiori_Elements/faqs-f4817b7.md index 0ea324a9..6036b37e 100644 --- a/docs/06_SAP_Fiori_Elements/faqs-f4817b7.md +++ b/docs/06_SAP_Fiori_Elements/faqs-f4817b7.md @@ -2,7 +2,7 @@ # FAQs -You can get answers to the commonly asked questions, know more about SAP Fiori elements features, and troubleshoot common issues. +You can get answers to the most frequently asked questions we receive from our users, get to know more about SAP Fiori elements features, and troubleshoot common issues. @@ -30,6 +30,15 @@ You can get answers to the commonly asked questions, know more about SAP Fiori e We recommend using SAP Fiori tools, which is a set of extensions for SAP Business Application Studio and Visual Studio Code. For more information, click on the **Tools** tile in [Developing Apps with SAP Fiori Elements](developing-apps-with-sap-fiori-elements-03265b0.md). +- **What are the required libraries when developing an app using SAP Fiori elements for OData V4 or when creating a custom app using the flexible programming model?** + + - If you use a floorplan such as the list report or the object page, you can simply include `sap.fe.templates` in the `libs` section of your `manifest.json`. + + - If you're creating a custom app you need at least `sap.fe.core`, and if you're leveraging the building blocks you also need to declare `sap.fe.macros`. + + + By doing so you ensure the most efficient loading of resources for your application as well as the best performance. + - **What is draft handling and can I disable it for apps built on SAP Fiori elements for OData V4?** SAP Fiori elements for OData V4 supports an edit-based scenario \(create/edit/delete\) only for a draft-enabled service. You can use non-draft services only for pure read-only applications where the user isn’t expected to perform any create/edit/delete operations. For more information about draft handling, see [Draft Handling](draft-handling-ed9aa41.md). Additionally, if you want to know the general information about tool support and the back end, see [Prerequisites for Using SAP Fiori Elements](prerequisites-for-using-sap-fiori-elements-f2344b5.md). @@ -275,7 +284,7 @@ You can get answers to the commonly asked questions, know more about SAP Fiori e In OData V2, the UI has to pass only the required properties in the call and the back end ensures that an aggregation is performed on all the measure properties. In OData V4, the client has to explicitly pass the properties as dimensions or measures when the call is made, thus allowing greater flexibility while using the property. For more information, see the [Enabling Aggregation in the Back End](configuring-charts-653ed0f.md#loio653ed0f4f0d743dbb33ace4f68886c4e__enabling_aggregation_subsection) subsection in [Configuring Charts](configuring-charts-653ed0f.md). -- **Can I use charts in the list report, especially in a draft-based lt report and an object page, or is the use of charts limited to the ALP flavor of the list report?** +- **Can I use charts in the list report, especially in a draft-based list report and an object page, or is the use of charts limited to the ALP flavor of the list report?** You can also use charts in the list report and object page floorplans, and also in draft-based apps. In a list report without the ALP flavor, you can only use charts within a multi-view setup. diff --git a/docs/06_SAP_Fiori_Elements/further-features-of-the-field-f49a0f7.md b/docs/06_SAP_Fiori_Elements/further-features-of-the-field-f49a0f7.md index cca59418..4398147a 100644 --- a/docs/06_SAP_Fiori_Elements/further-features-of-the-field-f49a0f7.md +++ b/docs/06_SAP_Fiori_Elements/further-features-of-the-field-f49a0f7.md @@ -70,7 +70,7 @@ DEF
-In this example, `PlantID` represents the unique ID of the object "Plant". But this is not easily readable for the end user and typically, the field `PlantID` would have a reference to the corresponding text. +In this example, `PlantID` represents the unique ID of the object "Plant". But this is not easily readable for the end user, and typically, the field `PlantID` would have a reference to the corresponding text. You can define a text using the `Common.Text` annotation on a property. @@ -820,7 +820,7 @@ Mandatory -Property must have a non-null value whenever save or update is triggered. This validation must be done by the back end, since it's not done by SAP Fiori elements. +Property must have a non-null value whenever a save or an update is triggered. This validation must be done by the back end, since it's not done by SAP Fiori elements. > ### Note: > If a field has the `FieldControl` annotation set to `mandatory`, its column header will be marked as mandatory in edit mode. @@ -907,7 +907,7 @@ If a property is annotated with `Core.Computed true`, it is always displayed in > Not all field representations are editable in the object page header. Only the plain text facet and form facets are considered for editability. Semantic links are also displayed in edit mode, but only when the field is associated with a value help. > ### Example: -> 1. The property `CreatedAt` of the entity `ProductsType` is always read only +> 1. The property `CreatedAt` of the entity `ProductsType` is always read only. > > > ### Sample Code: > > XML Annotation @@ -936,7 +936,7 @@ If a property is annotated with `Core.Computed true`, it is always displayed in > > > > ``` > -> 2. The property `SupplierName` is always read only in **this** application +> 2. The property `SupplierName` is always read only in **this** application. > > > ### Sample Code: > > XML Annotation @@ -968,7 +968,7 @@ If a property is annotated with `Core.Computed true`, it is always displayed in > > ### Note: > > ABAP CDS only supports `@ObjectModel.mandatory` but **not** `@ObjectModel.readOnly`. > -> 3. The property `AvailabilityCode` is always read only if the property `_FieldControl/AvailabilityCode_FC` has the value 1 +> 3. The property `AvailabilityCode` is always read only if the property `_FieldControl/AvailabilityCode_FC` has the value 1. > > > ### Sample Code: > > XML Annotation @@ -1059,3 +1059,21 @@ The following screenshot shows the result on the UI: ![](images/Tooltip_for_Data_Point_ec5aa42.png) + + + + +## Disabling Standard Validation of Decimal Places for Units of Measure + +You can use the `com.sap.vocabularies.UI.v1.DoNotCheckScaleOfMeasuredQuantity` annotation with a Boolean value to disable the standard validation of decimal places for units of measure. + +- When you set this annotation to `false`, the validation is performed to ensure that the maximum number of decimal places for a unit of measure corresponds to what is determined in the code list customizing the currency codes and units. + +- If you set the annotation to `true`, the validation is not performed. Skipping the validation of decimals allows the user to add more fractional digits than the number of digits defined for the corresponding unit of measure. + + +> ### Note: +> The number of allowed decimals specified in the field definition itself is not affected by the `com.sap.vocabularies.UI.v1.DoNotCheckScaleOfMeasuredQuantity` annotation. The central check always takes place. For example, if a field has been defined as having no more than 3 decimal places, it will never allow the user to enter more than 3 decimal places even if you disable the validation of decimal places for units of measure in this field. + +For more information about specifying decimal places for units of measure, see [Currency and Unit Customizing in OData V4](../04_Essentials/currency-and-unit-customizing-in-odata-v4-4d1b9d4.md). + diff --git a/docs/06_SAP_Fiori_Elements/handling-semantic-key-fields-aa2793c.md b/docs/06_SAP_Fiori_Elements/handling-semantic-key-fields-aa2793c.md index 2895e8a8..f3c1f871 100644 --- a/docs/06_SAP_Fiori_Elements/handling-semantic-key-fields-aa2793c.md +++ b/docs/06_SAP_Fiori_Elements/handling-semantic-key-fields-aa2793c.md @@ -4,26 +4,69 @@ Semantic key fields in tables are displayed with a special logic. -In list reports, semantic key fields are displayed with the following logic: +You can add the semantic key in the list report tables as shown in the following sample code: + +> ### Sample Code: +> XML Annotation +> +> ```xml +> +> +> +> ProductForEdit +> +> +> +> +> ``` + +> ### Sample Code: +> ABAP CDS Annotation +> +> ``` +> +> @ObjectModel: { +> semanticKey: [ 'ProductForEdit' ] +> } +> +> define view C_MP_PRODUCT { +> +> } +> ``` + +> ### Sample Code: +> CAP CDS Annotation +> +> ``` +> +> annotate STTA_PROD_MAN.STTA_C_MP_ProductType @( +> Common.SemanticKey : [ ProductForEdit ] +> ); +> ``` -- For responsive tables, SAP Fiori elements uses `ObjectIdentifier`. The part in bold will be the text followed by the ID in the next line. If there is no text,the ID will be shown in bold in the first line. In this case, there will be no second line. The screenshot below shows the use case for both a text and an ID in a responsive table: +> ### Note: +> This setting is only available for the default `DataField`. + +In list reports, semantic key fields are displayed in tables using the following logic: + +- For responsive tables, SAP Fiori elements uses `ObjectIdentifier`. The content in bold is the text followed by the ID in the next line. If there is no text, the ID is shown in bold in the first line. In this case, there will be no second line. The following screenshot shows the use case for both a text and an ID in a responsive table: ![](images/Semantic_Key_Fields_in_a_Table_Text_and_ID_d58b9d9.png) - For other tables, SAP Fiori elements uses a label and renders the entire content in bold. SAP Fiori elements also reads the associated text and combines the information in accordance with how the `TextArrangement` is configured. The behavior is as follows: - - If no `TextArrangement` is configured, SAP Fiori elements for OData V2 shows the ID along with the text in parenthesis if text is available, and if no text is available, only the ID. + - If no `TextArrangement` is configured, SAP Fiori elements for OData V2 displays the ID along with the text in parenthesis if text is available.If no text is available, we display only the ID. - - If no `TextArrangement` is configured, SAP Fiori elements for OData V4 shows only text, and if no text is available, only the ID. + - If no `TextArrangement` is configured, SAP Fiori elements for OData V4 displays only the text. If no text is available, we display only the ID. - The screenshot below shows the use case for `TextFirst` arrangement in a grid table: + The following screenshot shows the use case for `TextFirst` arrangement in a grid table: ![](images/Semantic_Key_Fields_in_a_Table_TextFirst_40b9a46.png) > ### Note: -> In responsive tables, if a semantic object is linked to the field, the `ObjectIdentifier` will not be used. Instead, the ID is shown as a link. In other tables, the entire content \(that is, the ID and the text\) will be a link with no wrapping. +> In responsive tables, if a semantic object is linked to the field, the `ObjectIdentifier` is not used. Instead, the ID is displayed as a link. In other tables, the entire content \(that is, the ID and the text\) is displayed as a link with no wrapping. @@ -36,5 +79,5 @@ The logic for handling semantic key fields is applicable to object pages and sub **Related Information** -[Editing Status](editing-status-668ea18.md "The editing status reflects the state of the object or entry in terms of the processing cycle. For example, it can give the user information about whether the item can be accessed, or about its level of completion.") +[Settings for List Report Tables](settings-for-list-report-tables-4c2d17a.md "You can set up various aspects of the list report table through annotations and in the manifest.json file.") diff --git a/docs/06_SAP_Fiori_Elements/illustrated-message-when-no-data-is-found-f9925b6.md b/docs/06_SAP_Fiori_Elements/illustrated-message-when-no-data-is-found-f9925b6.md new file mode 100644 index 00000000..232e18c9 --- /dev/null +++ b/docs/06_SAP_Fiori_Elements/illustrated-message-when-no-data-is-found-f9925b6.md @@ -0,0 +1,154 @@ + + +# Illustrated Message When No Data Is Found + +SAP Fiori elements for OData V4 displays an illustrated message when no data is found for a table. + +> ### Note: +> This topic is only applicable to SAP Fiori elements for OData V4. + +The illustration, the title of the message and its description depend on the situation in which they are displayed: no items created within the table, applied filters, or search query. You can adapt the description to suit the use case of your application as described in [Maintaining Standard Texts for Tables](maintaining-standard-texts-for-tables-aacfac5.md). + +In the list report, the size of the illustrated message adapts to the available space for the table, as shown in the following screenshot: + +![](images/ListReport_IllustratedMessage_b67eaca.png) + +On the object page, the size of the illustrated message is reduced to keep optimal information density, as shown in the following screenshot: + +![](images/ObjectPage_IllustratedMessage_6b9d295.png) + +You can use the manifest setting `useTextForNoDataMessages` to display a text instead of an illustrated message on the object page, as shown in the following code sample: + +> ### Sample Code: +> `manifest.json` +> +> ``` +> "SalesOrderManageObjectPage": { +> "type": "Component", +> "id": "SalesOrderManageObjectPage", +> "name": "sap.fe.templates.ObjectPage", +> "options": { +> "settings": { +> "contextPath": "/SalesOrderManage", +> "enhanceI18n": "i18n/SalesOrderObjectPage.properties", +> "variantManagement": "Control", +> "showRelatedApps": true, +> "sectionLayout": "Tabs", +> "useTextForNoDataMessages": true, +> "controlConfiguration": { +> ... +> } +> } +> } +> }, +> ``` + +This option is applied to all tables within the page. + +When using this option, the default texts must be overridden by the application as described in [Maintaining Standard Texts for Tables](maintaining-standard-texts-for-tables-aacfac5.md). + + + + + +## Adding Actions to an Illustrated Message + +You can add additional actions to illustrated messages to guide the end user when no data is displayed within a table. To do so, use the `beforeRebindTable` extension point. + +> ### Sample Code: +> `manifest.json` +> +> ``` +> "targets": { +> "sample": { +> "type": "Component", +> "id": "Default", +> "name": "sap.fe.templates.ObjectPage", +> "viewLevel": 1, +> "options": { +> "settings": { +> "contextPath": "/RootEntity", +> "editableHeaderContent": false, +> "variantManagement": "Control", +> "controlConfiguration": { +> "_Child/@com.sap.vocabularies.UI.v1.LineItem": { +> "tableSettings": { +> "beforeRebindTable": ".extension.sap.fe.core.fpmExplorer.OPExtend.onTableRefresh" +> } +> } +> } +> } +> } +> } +> } +> ``` + +Within the callback function, you can define the illustrated message to include actions to be proposed to the end user. The illustrated message is applied to the table using the `setNoData` method of the table, as shown in the following sample code: + +> ### Sample Code: +> ``` +> sap.ui.define( +> [ +> "sap/ui/core/mvc/ControllerExtension", +> "sap/ui/model/Filter", +> "sap/ui/model/FilterOperator", +> "sap/m/IllustratedMessage", +> "sap/m/IllustratedMessageType", +> "sap/m/Button", +> "sap/m/MessageToast", +> "sap/m/IllustratedMessageSize" +> ], +> function ( +> ControllerExtension, +> Filter, +> FilterOperator, +> IllustratedMessage, +> IllustratedMessageType, +> Button, +> MessageToast, +> IllustratedMessageSize +> ) { +> "use strict"; +> +> return ControllerExtension.extend("sap.fe.core.fpmExplorer.OPExtend", { +> onTableRefresh: function (event) { +> var collectionBindingInfoAPI = event.getParameter("collectionBindingInfo"); +> var table = this.getView().byId("fe::table::_Child::LineItem::Table"); +> var illustratedMessage = new IllustratedMessage(); +> var showDialogNoData = function () { +> return MessageToast.show("Action when No Data in edit mode"); +> }; +> var showDialogFilterSearch = function () { +> return MessageToast.show("Action when No Data with filter or search"); +> }; +> +> //Filters or Search applied +> if ( +> (collectionBindingInfoAPI.getFilters() && collectionBindingInfoAPI.getFilters().aFilters.length > 0) || +> collectionBindingInfoAPI.collectionBindingInfo.parameters.$search +> ) { +> illustratedMessage.setTitle("No Data"); +> illustratedMessage.setDescription("Change Search or filter criteria."); +> illustratedMessage.setIllustrationType(IllustratedMessageType.NoSearchResults); +> illustratedMessage.setIllustrationSize(sap.m.IllustratedMessageSize.Dot); +> illustratedMessage.addAdditionalContent(new Button({ text: "My Action", press: showDialogFilterSearch })); +> table.setNoData(illustratedMessage); +> } else { +> //No filter or search and table in edit mode +> illustratedMessage.setTitle("No Item found"); +> illustratedMessage.setDescription("Please create some."); +> illustratedMessage.setIllustrationType(IllustratedMessageType.NoSearchResults); +> illustratedMessage.setIllustrationSize(sap.m.IllustratedMessageSize.Dot); +> illustratedMessage.addAdditionalContent( +> new Button({ text: "Create New Item", visible: "{ui>/isEditable}", press: showDialogNoData }) +> ); +> table.setNoData(illustratedMessage); +> } +> } +> }); +> } +> ); +> ``` + +Check out our live example in the flexible programming model explorer at [Building Blocks - Table - Table No Data](https://ui5.sap.com/test-resources/sap/fe/core/fpmExplorer/index.html#/buildingBlocks/table/tableNoData). + diff --git a/docs/06_SAP_Fiori_Elements/images/Dropping_a_Node_onto_the_Empty_Right-Hand_Side_of_a_Table_d74fc6f.png b/docs/06_SAP_Fiori_Elements/images/Dropping_a_Node_onto_the_Empty_Right-Hand_Side_of_a_Table_d74fc6f.png new file mode 100644 index 00000000..2351268d Binary files /dev/null and b/docs/06_SAP_Fiori_Elements/images/Dropping_a_Node_onto_the_Empty_Right-Hand_Side_of_a_Table_d74fc6f.png differ diff --git a/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Filter_Fields_Dropdown_5b1c16d.png b/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Filter_Fields_Dropdown_5b1c16d.png new file mode 100644 index 00000000..b9c88423 Binary files /dev/null and b/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Filter_Fields_Dropdown_5b1c16d.png differ diff --git a/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Filter_Fields_Preview_01c10c9.png b/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Filter_Fields_Preview_01c10c9.png new file mode 100644 index 00000000..fee8dea3 Binary files /dev/null and b/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Filter_Fields_Preview_01c10c9.png differ diff --git a/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Sections_Dropdown_3f19523.png b/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Sections_Dropdown_3f19523.png new file mode 100644 index 00000000..8eabdac5 Binary files /dev/null and b/docs/06_SAP_Fiori_Elements/images/Fiori_Tools_-_Business_Application_Studio_-_Sections_Dropdown_3f19523.png differ diff --git a/docs/06_SAP_Fiori_Elements/images/ListReport_IllustratedMessage_b67eaca.png b/docs/06_SAP_Fiori_Elements/images/ListReport_IllustratedMessage_b67eaca.png new file mode 100644 index 00000000..4cada66a Binary files /dev/null and b/docs/06_SAP_Fiori_Elements/images/ListReport_IllustratedMessage_b67eaca.png differ diff --git a/docs/06_SAP_Fiori_Elements/images/ObjectPage_IllustratedMessage_6b9d295.png b/docs/06_SAP_Fiori_Elements/images/ObjectPage_IllustratedMessage_6b9d295.png new file mode 100644 index 00000000..f56a1b35 Binary files /dev/null and b/docs/06_SAP_Fiori_Elements/images/ObjectPage_IllustratedMessage_6b9d295.png differ diff --git a/docs/06_SAP_Fiori_Elements/localization-of-ui-texts-b8cb649.md b/docs/06_SAP_Fiori_Elements/localization-of-ui-texts-b8cb649.md index 6fb8dcfc..9d8e2295 100644 --- a/docs/06_SAP_Fiori_Elements/localization-of-ui-texts-b8cb649.md +++ b/docs/06_SAP_Fiori_Elements/localization-of-ui-texts-b8cb649.md @@ -3689,12 +3689,34 @@ Example: `M_COMMON_TABLE_DELETE|_Items=MyCustomDeleteText` +`C_COMMON_DELETE` + + + + +Delete + + + + +*Delete* button text in an object page. + + + + +Applications can choose to overwrite the default text with a more specific one for an object page. + + + + + + `M_ROW_LEVEL_NAVIGATION_DISABLED_MSG_REASON_EXTERNAL_NAVIGATION_CONFIGURED` -Direct navigation to the object details isn't possible from thisIinsights card. +Direct navigation to the object details isn't possible from this insights card. diff --git a/docs/06_SAP_Fiori_Elements/maintaining-standard-texts-for-charts-37cd601.md b/docs/06_SAP_Fiori_Elements/maintaining-standard-texts-for-charts-37cd601.md index 419dcace..fb76d848 100644 --- a/docs/06_SAP_Fiori_Elements/maintaining-standard-texts-for-charts-37cd601.md +++ b/docs/06_SAP_Fiori_Elements/maintaining-standard-texts-for-charts-37cd601.md @@ -2,24 +2,22 @@ # Maintaining Standard Texts for Charts -For charts in analytical list pages, list reports, and object pages, if the system does not find any entries when using the filters, standard UI texts are displayed, which you can adapt in the i18n file of your app. +For charts in analytical list pages, list reports, and object pages, if the system does not find any entries when using the filters, standard UI texts are displayed, which you can adapt in the `i18n` file of your app. The following UI texts are displayed by default: - SAP Fiori elements for OData V2 - - When no filters are applied and no data is found, a ***No data found*** message is shown in the object page chart, and the message ***To start, set relevant filters*** is shown in the list report chart. + - When no filters are applied and no data is found, a *No data found* message is displayed in the object page chart, and the message *To start, set relevant filters* is displayed in the list report chart. - - When filters are applied and the search shows no results, the message ***No data found. Try adjusting the search or filter parameters*** is shown in the object page chart, and the message ***There is no data for the selected filter criteria and chart view*** is shown in the list report chart. + - When filters are applied and the search shows no results, the message *No data found. Try adjusting the search or filter parameters* is displayed in the object page chart, and the message *There is no data for the selected filter criteria and chart view* is displayed in the list report chart. - SAP Fiori elements for OData V4 - - When no filters are applied and no data is found, the message ***To start, set the relevant filters and choose "Go"*** is shown in the list report chart. + - When no filters are applied and no data is found, an illustrated message is displayed with *No data found* as the title and *To start, set the relevant filters and choose "Go".* as the description. - - When filters are applied and the search shows no results, the message ***No data found. Try adjusting the search or filter parameters*** is shown. + - When filters are applied and the search shows no results, an illustrated message is displayed with *No data found* as the title and *Try adjusting the search or filter criteria.* as the description. - - When no filters are applied and no data is found, the message ***No items available*** is shown in the object page chart. - - You cannot override this text. + - When no filters are applied and no data is found, the message an illustrated message is displayed with *No item available* as the title and *When there are, you'll find them here.* as the description. You cannot override these texts. @@ -35,7 +33,7 @@ The following UI texts are displayed by default: ### SAP Fiori Elements for OData V2 -You can override the standard texts using the following keys in the i18n file: +You can override the standard texts using the following keys in the `i18n` file: - `NOITEMS_SMARTCHART` @@ -48,12 +46,84 @@ You can override the standard texts using the following keys in the i18n file: ### SAP Fiori Elements for OData V4 -You can override the standard texts using the following keys in the i18n file: +You can override the standard texts using the following keys in the `i18n` file: + + + + + + + + + + + + + + + + + + + + + + + +
+ +Keys + + + +Default Text in SAP Fiori Elements + + + +Used In + +
+ +`T_TABLE_AND_CHART_NO_DATA_TEXT` + + + +To start, set the relevant filters and choose "Go". + + + +To add a text when no filters are applied and no data is found. + +This is applicable only to the list report. + +
+ +`T_TABLE_AND_CHART_NO_DATA_TEXT_WITH_FILTER` + + + +Try adjusting the search or filter criteria. + + + +To add a text when filters are applied and no data is found. + +
+ +`M_TABLE_AND_CHART_NO_DATA_TEXT_MULTI_VIEW` + + + +Try adjusting the selected filter criteria or view. + + -- `T_TABLE_AND_CHART_NO_DATA_TEXT`: Use this key to add a text when no filters are applied and no data is found. This is applicable only to the list report. +To add a text when using a list report with multiple views, filters are applied, and no data is found. -- `T_TABLE_AND_CHART_NO_DATA_TEXT_WITH_FILTER`: Use this key to add a text when filters are applied and no data is found. +
+> ### Note: +> You cannot override the title of an illustrated message. diff --git a/docs/06_SAP_Fiori_Elements/maintaining-standard-texts-for-tables-aacfac5.md b/docs/06_SAP_Fiori_Elements/maintaining-standard-texts-for-tables-aacfac5.md index c18b3ce0..262860d5 100644 --- a/docs/06_SAP_Fiori_Elements/maintaining-standard-texts-for-tables-aacfac5.md +++ b/docs/06_SAP_Fiori_Elements/maintaining-standard-texts-for-tables-aacfac5.md @@ -2,26 +2,26 @@ # Maintaining Standard Texts for Tables -In a table, if the system does not find any entries when using the filter, standard UI texts are displayed which you can adapt in the i18n file of your app. +You can use the i18n file of your app to adapt the standard UI texts that are displayed in a table for the use cases explained in this topic. The following UI texts are displayed by default: - SAP Fiori elements for OData V2 - - When no filters are applied and no data is found, a ***No items available*** message is shown in the object page table, and the message ***To start, set relevant filters*** is shown in the list report table. + - When no filters are applied and no data is found, a *No items available* message is shown in the object page table, and the message *To start, set relevant filters* is shown in the list report table. - - When filters are applied and the search shows no results, the message ***No items available. Try adjusting the search or filter parameters*** is shown in the object page table, and the message ***No data found. Try adjusting the search or filter criteria*** is shown in the list report table. + - When filters are applied and the search shows no results, the message *No items available. Try adjusting the search or filter parameters* is shown in the object page table, and the message *No data found. Try adjusting the search or filter criteria* is shown in the list report table. - - When the table is used in multi view mode and there is no data found, the message ***There are no items for the selected filter criteria and table view*** is shown in the object page table, and the message ***There is no data for the selected filter criteria and table view*** is shown in the list report table. + - When the table is used in multi-view mode and there is no data found, the message *There are no items for the selected filter criteria and table view* is shown in the object page table, and the message *There is no data for the selected filter criteria and table view* is shown in the list report table. - SAP Fiori elements for OData V4 - - When no filters are applied and no data is found, the message ***To start, set the relevant filters and choose "Go"*** is shown in the list report table. + - When no filters are applied and no data is found, an illustrated message is displayed with *No data found* as the title and *To start, set the relevant filters and choose "Go".* as the description. - - When filters are applied and the search shows no results, the message ***No data found. Try adjusting the search or filter parameters*** is shown. + - When filters are applied and the search shows no results, an illustrated message is displayed with *No data found* as the title and *Try adjusting the search or filter criteria.* as the description. - - When no filters are applied and no data is found, the message ***No items available*** is shown in the object page table. + - When the table is used in multi-view mode and no data is found, an illustrated message is displayed with *No data found* as the title and *Try adjusting the selected filter criteria or view.* as the description. - You cannot override this text. + - When no filters are applied and no data is found, an illustrated message is displayed with *No items available* as the title and *When there are, you'll find them here.* as the description. You cannot override these texts. @@ -41,7 +41,7 @@ You can override the standard texts by adding these keys in the i18n file of the - `NOITEMS_LR_SMARTTABLE_WITH_FILTER`: Use this key to add a text when filters are applied and no data is found. -- `NOITEMS_MULTIVIEW_LR_SMARTTABLE_WITH_FILTER`: Use this key to add a text for multiple view table when filter is applied but no data is found for a given view. +- `NOITEMS_MULTIVIEW_LR_SMARTTABLE_WITH_FILTER`: Use this key to add a text for a table in multi-view mode when a filter is applied and no data is found for a given view. You can override the standard texts by adding these keys in the i18n file of the object page: @@ -50,19 +50,71 @@ You can override the standard texts by adding these keys in the i18n file of the - `NOITEMS_SMARTTABLE_WITH_FILTER||`: Use this key to add a text when filters are applied and no data is found. For example,`NOITEMS_SMARTTABLE_WITH_FILTER|C_STTA_SalesOrder_WD_20|ContactsID=No contacts found. Change filters.`. -- `NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON||`: Use this key to add a text when a table with segmented button is used. For example, `NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON |C_STTA_SalesOrder_WD_20|ContactsID=No contacts found for the selection criteria`. +- `NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON||`: Use this key to add a text when a table with a segmented button is used. For example, `NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON |C_STTA_SalesOrder_WD_20|ContactsID=No contacts found for the selection criteria`. ### SAP Fiori Elements for OData V4 -You can override the standard texts by adding these keys in the i18n file: +You can override the standard texts used as the description in illustrated messages by using the following keys in the i18n file defined for the page: -- `T_TABLE_AND_CHART_NO_DATA_TEXT`: Use this key to add a text when no filters are applied and no data is found. This is applicable only to the list report. +**Description Text Keys for Illustrated Messages** -- `T_TABLE_AND_CHART_NO_DATA_TEXT_WITH_FILTER`: Use this key to add a text when filters are applied and no data is found. + + + + + + + + + + + + + + + + + +
+ +Key + + + +Standard Text + +
+ +T\_TABLE\_AND\_CHART\_NO\_DATA\_TEXT + + + +To start, set the relevant filters and choose "Go". + +
+ +T\_TABLE\_AND\_CHART\_NO\_DATA\_TEXT\_WITH\_FILTER + + + +Try adjusting the search or filter criteria. + +
+ +M\_TABLE\_AND\_CHART\_NO\_DATA\_TEXT\_MULTI\_VIEW + + + +Try adjusting the selected filter criteria or view. + +
+ +> ### Note: +> You cannot override the title of an illustrated message. diff --git a/docs/06_SAP_Fiori_Elements/navigation-from-an-app-outbound-navigation-d782acf.md b/docs/06_SAP_Fiori_Elements/navigation-from-an-app-outbound-navigation-d782acf.md index cba3749b..3974e579 100644 --- a/docs/06_SAP_Fiori_Elements/navigation-from-an-app-outbound-navigation-d782acf.md +++ b/docs/06_SAP_Fiori_Elements/navigation-from-an-app-outbound-navigation-d782acf.md @@ -342,6 +342,76 @@ You can also hide the intent-based navigation button by using `UI.Hidden` agains +### Navigation Using a Link + +If a semantic object is configured for a property, the value of this property is passed within the semantic object in the navigation context. For example, if the property is `SoldToParty` with the value `001` and the `SemanticObject` is `Customer`, then the navigation context will have `Customer` with the value `001`. + +To achieve this mapping of a property value to semantic object use the `SemanticObject` annotation. + +> ### Sample Code: +> XML Annotation +> +> ``` +> +> +> +> ``` + +> ### Sample Code: +> ABAP CDS Annotation +> +> No ABAP CDS annotation sample is available. Please use the local XML annotation. + +> ### Sample Code: +> CAP CDS Annotation +> +> ``` +> SoldToParty : String(10) @(Common : { +> SemanticObject : 'Customer' +> }); +> ``` + +To achieve a different property in the navigation context, use the `SemanticObjectMapping` annotation. + +> ### Sample Code: +> XML Annotation +> +> ``` +> +> +> +> +> +> +> +> +> +> +> +> ``` + +> ### Sample Code: +> ABAP CDS Annotation +> +> No ABAP CDS annotation sample is available. Please use the local XML annotation. + +> ### Sample Code: +> CAP CDS Annotation +> +> ``` +> SoldToParty : String(10) @(Common : { +> SemanticObject : 'Customer', +> SemanticObjectMapping : 'SoldToPartyID'[ +> { +> LocalProperty : SoldToPartyID, +> SemanticObjectProperty : 'CustomerID' +> } +> ] +> }); +> ``` + + + ## Additional Features in SAP Fiori Elements for OData V2 @@ -783,52 +853,6 @@ You can use `DataFieldWithURL` with absolute URL: -### Navigation Using a Link - -The value of the property, against which the semantic object is configured, is passed directly in the navigation context. For example, if the property is `SoldToParty` and has the value `001`, the navigation context is `SoldToParty=001`. To achieve a different property in the navigation context, use the `SemanticObjectMapping` annotation. - -> ### Sample Code: -> XML Annotation -> -> ```xml -> -> -> -> -> -> -> -> -> -> -> -> -> ``` - -> ### Sample Code: -> ABAP CDS Annotation -> -> No ABAP CDS annotation sample is available. Please use the local XML annotation. - -> ### Sample Code: -> CAP CDS Annotation -> -> ``` -> SoldToParty : String(10) @(Common : { -> SemanticObject : 'SalesOrder', -> SemanticObjectMapping : [ -> { -> LocalProperty : SoldToParty, -> SemanticObjectProperty : 'SoldToParty' -> } -> ] -> }); -> ``` - -Links are only editable if the field with the link representation has a value help associated with it. - - - ### Navigation Using a Button Applications can selectively enable `DataFieldForIntentBasedNavigation` buttons using the "`NavigationAvailable`" property of the `DataFieldForIntentBasedNavigation` annotation. This Boolean property accepts `true` / `false` / `path` and points to a property that evaluates to `true/false`. diff --git a/docs/06_SAP_Fiori_Elements/navigation-to-an-object-page-in-edit-mode-8665847.md b/docs/06_SAP_Fiori_Elements/navigation-to-an-object-page-in-edit-mode-8665847.md index 54be616e..72a4c93e 100644 --- a/docs/06_SAP_Fiori_Elements/navigation-to-an-object-page-in-edit-mode-8665847.md +++ b/docs/06_SAP_Fiori_Elements/navigation-to-an-object-page-in-edit-mode-8665847.md @@ -2,13 +2,15 @@ # Navigation to an Object Page in Edit Mode +You can configure the navigation to an object page so that it opens directly in edit mode. +
## Additional Features in SAP Fiori Elements for OData V2 -You can now configure navigation from the list report to an object page directly in edit mode. You can find the manifest settings here: +Use the `editFlow` annotation in the `manifest.json` file to configure navigation, as shown in the following sample code: > ### Sample Code: > ``` @@ -19,19 +21,19 @@ You can now configure navigation from the list report to an object page directly > "settings": { > "editFlow":"direct" > …. -> } -> } +> } +> } > } > > ``` ![](images/Image_Navigation_to_an_Object_Page_in_Edit_Mode_1_087686b.png) -When direct edit is configured, an additional button, *Save and Next*, appears in the object page footer, in addition to the *Save* and *Cancel* actions. The *Save and Next* action leads you to the next object in edit mode after the saving the current changes. The save action leads you back to the list report page. +When direct edit is configured, an additional button *Save and Next* appears in the object page footer in addition to the *Save* and *Cancel* buttons. The *Save and Next* action leads the user to the next object in edit mode after the current changes are saved. The save action leads the user back to the list report. ![](images/Image_Navigation_to_an_Object_Page_in_Edit_Mode_2_7ba89de.png) -You can prevent navigation from the object page as a result of the save action by using the following setting. In this case, the object page switches to display mode once you click *Save*. +You can prevent navigation from the object page as a result of the save action by using the `navToListOnSave` setting, as shown in the following sample code: > ### Sample Code: > ``` @@ -48,17 +50,15 @@ You can prevent navigation from the object page as a result of the save action b > }…. > ``` +In this case, the object page switches to display mode once the user chooses *Save*. + ## Additional Features in SAP Fiori Elements for OData V4 - - -### Manifest Setting for Opening an Object Page in Edit Mode - -You can directly open an object page in edit mode by setting `"openInEditMode": true` in the `manifest.json` file. +You can set `openInEditMode` to `true` in the `manifest.json` file to configure navigation, as shown in the following sample code: > ### Sample Code: > ``` diff --git a/docs/06_SAP_Fiori_Elements/overview-page-card-74332d5.md b/docs/06_SAP_Fiori_Elements/overview-page-card-74332d5.md index daa56f57..7606aa43 100644 --- a/docs/06_SAP_Fiori_Elements/overview-page-card-74332d5.md +++ b/docs/06_SAP_Fiori_Elements/overview-page-card-74332d5.md @@ -106,7 +106,7 @@ These annotation terms can be configured in the application manifest file, as sh Card actions are available as of SAPUI5 1.110. You can access and perform the card actions from the card header. The following card actions are available: -- *Refresh*: this action retrieves the the entity bound to the card and reloads the card, displaying the latest data. +- *Refresh*: this action retrieves the entity bound to the card and reloads the card, displaying the latest data. - *Add Card to Insights*: this action shows a preview of the card so that it can be added to the *Insights* section directly from the overview. Note that this action is only available if the *Insights* service is enabled. @@ -121,7 +121,7 @@ Card actions are available as of SAPUI5 1.110. You can access and perform the ca You can add and use the analytical, list and table cards within the *Insights* section of *My Home* in SAP S/4HANA Cloud. The objective of displaying cards on the entry page is to visualize charts, KPI´s and counters in the form of interest cards. -To add a card to the *Insights* section, select the *More* option from the card and choose *Add Card to Insights*. In the subsequent dialog box, you can update the card's *Title* and the *Subtitle*. Click *Add* to display the card in the *Insights* section . +To add a card to the *Insights* section, select the *More* option from the card and choose *Add Card to Insights*. In the subsequent dialog box, you can update the card's *Title* and the *Subtitle*. Click *Add* to display the card in the *Insights* section. Note that only eight cards at a time can be displayed in the *Insights* section. If the maximum number of cards is already displayed on the entry page, the selected card is added to the *Edit Insights* dialog box. You can choose to select or deselect cards by editing the *Insights* section. For more information, see [*My Home* in SAP S/4HANA Cloud](https://help.sap.com/docs/SAP_S4HANA_CLOUD/4fc8d03390c342da8a60f8ee387bca1a/8a60279e8d2041b5ad8d3455fab0f3ef.html). diff --git a/docs/06_SAP_Fiori_Elements/settings-for-list-report-tables-4c2d17a.md b/docs/06_SAP_Fiori_Elements/settings-for-list-report-tables-4c2d17a.md index fef48982..025c7408 100644 --- a/docs/06_SAP_Fiori_Elements/settings-for-list-report-tables-4c2d17a.md +++ b/docs/06_SAP_Fiori_Elements/settings-for-list-report-tables-4c2d17a.md @@ -10,50 +10,9 @@ You can set up various aspects of the list report table through annotations and ## Displaying the Editing Status -In draft-enabled applications, the **Draft**, **Unsaved Changes by Another User**, and **Locked by Another User** statuses are displayed in the list report. In the responsive table, the statuses are shown in the key column. In the grid table, the statuses are shown in a separate column next to the key column. You can add the semantic key as shown in the following sample code: - -> ### Sample Code: -> XML Annotation -> -> ```xml -> -> -> -> ProductForEdit -> -> -> -> -> ``` - -> ### Sample Code: -> ABAP CDS Annotation -> -> ``` -> -> @ObjectModel: { -> semanticKey: [ 'ProductForEdit' ] -> } -> -> define view C_MP_PRODUCT { -> -> } -> ``` - -> ### Sample Code: -> CAP CDS Annotation -> -> ``` -> -> annotate STTA_PROD_MAN.STTA_C_MP_ProductType @( -> Common.SemanticKey : [ ProductForEdit ] -> ); -> ``` - -> ### Note: -> This setting is only available for the default `DataField`. - -For more information, see [Editing Status](editing-status-668ea18.md). +In draft-enabled applications, the **Draft**, **Unsaved Changes by Another User**, and **Locked by Another User** statuses are displayed in the list report. In the responsive table, the statuses are displayed in the key column. In the grid table, the statuses are displayed in a separate column next to the key column. + +For more information, see [Editing Status](editing-status-668ea18.md) and [Handling Semantic Key Fields](handling-semantic-key-fields-aa2793c.md). @@ -68,11 +27,3 @@ If you'ven't added a semantic key to the line items, the editing status is displ - If no semantic key annotation is available, the system checks whether the `headerInfo/Title/Value/Path` is available under the `LineItem` annotation. - - - - -## More Information - -For more information, see [`SemanticKey`](https://ui5.sap.com/#/api/sap.ui.comp.smarttable.SmartTable/Annotations/SemanticKey). - diff --git a/docs/06_SAP_Fiori_Elements/side-effect-annotations-examples-61cf21d.md b/docs/06_SAP_Fiori_Elements/side-effect-annotations-examples-61cf21d.md index 5a454b59..644fdd48 100644 --- a/docs/06_SAP_Fiori_Elements/side-effect-annotations-examples-61cf21d.md +++ b/docs/06_SAP_Fiori_Elements/side-effect-annotations-examples-61cf21d.md @@ -328,7 +328,7 @@ You can define side effects either in the \*`MPC_EXT` class or in the local anno Check out our live example in the flexible programming model explorer at [Side Effects](https://ui5.sap.com/test-https://ui5.sap.com/test-resources/sap/fe/core/fpmExplorer/index.html#/advancedFeatures/guidanceSideEffects). -You can use the BO property`messages` as targets for side effects. All messages stored in `reported` are reloaded when the side effect is triggered. +You can use the BO property `messages` as targets for side effects. All messages stored in `reported` are reloaded when the side effect is triggered. > ### Sample Code: > ABAP CDS Annotation @@ -358,5 +358,3 @@ The following sample code shows you an example with actions, multiple targets, a > } > ``` -> ### Example: - diff --git a/docs/06_SAP_Fiori_Elements/side-effects-18b17bd.md b/docs/06_SAP_Fiori_Elements/side-effects-18b17bd.md index ad435bbd..6fc59a99 100644 --- a/docs/06_SAP_Fiori_Elements/side-effects-18b17bd.md +++ b/docs/06_SAP_Fiori_Elements/side-effects-18b17bd.md @@ -7,15 +7,15 @@ If a user changes the content of a field or performs another activity, this chan Side effects are performed in the back end. However, you need to annotate the side effects implemented in the back end using side effect annotations to "inform" the front end which fields on the UI are influenced by a change, so that the front end can request new data for these fields. Otherwise, the UI may still display outdated data. > ### Note: -> Default side effects are relevant for most apps. You do not need to annotate these side effects. They are available by default, and cannot be switched off. +> Default side effects are relevant for most apps. You do not need to annotate these side effects. They are available by default and cannot be switched off. + +## Default Side Effects -### Default Side Effects - -The following side effects are available in SAP Fiori elements by default. +The following side effects are available in SAP Fiori elements by default: @@ -34,7 +34,7 @@ Side Effect + + + + diff --git a/docs/css/SAP-icons-V5.woff b/docs/css/SAP-icons-V5.woff index b84e8940..b629610b 100644 Binary files a/docs/css/SAP-icons-V5.woff and b/docs/css/SAP-icons-V5.woff differ diff --git a/docs/index.md b/docs/index.md index 05584e87..4ca0074d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,9 +4,10 @@ Demo Kit Version - [SAPUI5: UI Development Toolkit for HTML5](sapui5-ui-development-toolkit-for-html5-95d113b.md) - [What's New in SAPUI5](01_Whats-New/what-s-new-in-sapui5-99ac68a.md) + - [What's New in SAPUI5 1.129](01_Whats-New/what-s-new-in-sapui5-1-129-d22b8af.md) - [What's New in SAPUI5 1.128](01_Whats-New/what-s-new-in-sapui5-1-128-1f76220.md) - - [What's New in SAPUI5 1.127](01_Whats-New/what-s-new-in-sapui5-1-127-e5e1317.md) - [Previous Versions](01_Whats-New/previous-versions-6660a59.md) + - [What's New in SAPUI5 1.127](01_Whats-New/what-s-new-in-sapui5-1-127-e5e1317.md) - [What's New in SAPUI5 1.126](01_Whats-New/what-s-new-in-sapui5-1-126-1d98116.md) - [What's New in SAPUI5 1.125](01_Whats-New/what-s-new-in-sapui5-1-125-9d87044.md) - [What's New in SAPUI5 1.124](01_Whats-New/what-s-new-in-sapui5-1-124-7f77c3f.md) @@ -598,9 +599,11 @@ Demo Kit Version - [Example: Layering of UI Changes](04_Essentials/example-layering-of-ui-changes-17d2d4e.md) - [Bootstrapping SAPUI5 Flexibility](04_Essentials/bootstrapping-sapui5-flexibility-642dab2.md) - [Testing](04_Essentials/testing-7cdee40.md) + - [Test Starter](04_Essentials/test-starter-032be2c.md) + - [Concept and Basic Setup](04_Essentials/concept-and-basic-setup-22f50c0.md) + - [Configuration Options](04_Essentials/configuration-options-738ed02.md) - [Unit Testing with QUnit](04_Essentials/unit-testing-with-qunit-09d145c.md) - - [Creating a QUnit Test Page](04_Essentials/creating-a-qunit-test-page-7080029.md) - - [Executing a QUnit Test](04_Essentials/executing-a-qunit-test-a9c949c.md) + - [Creating a QUnit Test](04_Essentials/creating-a-qunit-test-7080029.md) - [Code Coverage Measurement](04_Essentials/code-coverage-measurement-7ef3242.md) - [Sinon.JS: Spies, Stubs, Mocks, Faked Timers, and XHR](04_Essentials/sinon-js-spies-stubs-mocks-faked-timers-and-xhr-457eaad.md) - [How to Test SAPUI5 Controls with QUnit](04_Essentials/how-to-test-sapui5-controls-with-qunit-a6b0657.md) @@ -883,6 +886,7 @@ Demo Kit Version - [Influencing the Request Dynamically](06_SAP_Fiori_Elements/influencing-the-request-dynamically-2cc6c03.md) - [Tree Tables](06_SAP_Fiori_Elements/tree-tables-7cf7a31.md) - [Enabling the Upload Functionality](06_SAP_Fiori_Elements/enabling-the-upload-functionality-d59dbec.md) + - [Illustrated Message When No Data Is Found](06_SAP_Fiori_Elements/illustrated-message-when-no-data-is-found-f9925b6.md) - [Configuring Charts](06_SAP_Fiori_Elements/configuring-charts-653ed0f.md) - [Defining Actions in the Chart Toolbar](06_SAP_Fiori_Elements/defining-actions-in-the-chart-toolbar-7d1fa83.md) - [Enabling Chart Personalization](06_SAP_Fiori_Elements/enabling-chart-personalization-7d41330.md) @@ -975,6 +979,7 @@ Demo Kit Version - [Showing and Hiding Content in Object Page Facets](06_SAP_Fiori_Elements/showing-and-hiding-content-in-object-page-facets-9fcea86.md) - [Adding Action Buttons to Forms in Sections](06_SAP_Fiori_Elements/adding-action-buttons-to-forms-in-sections-e64efda.md) - [Displaying Fields in Smartforms on Small Devices](06_SAP_Fiori_Elements/displaying-fields-in-smartforms-on-small-devices-0096cd2.md) + - [Adding a Section to an Object Page Using SAP Fiori Tools](06_SAP_Fiori_Elements/adding-a-section-to-an-object-page-using-sap-fiori-tools-9940cf0.md) - [Settings for Object Page Tables](06_SAP_Fiori_Elements/settings-for-object-page-tables-47425bb.md) - [Adding Titles to Object Page Tables](06_SAP_Fiori_Elements/adding-titles-to-object-page-tables-d9a4539.md) - [Adding Segmented Buttons to a Table Toolbar](06_SAP_Fiori_Elements/adding-segmented-buttons-to-a-table-toolbar-5532c89.md) diff --git a/docs/sapui5-ui-development-toolkit-for-html5-95d113b.md b/docs/sapui5-ui-development-toolkit-for-html5-95d113b.md index 99d9dc7e..727768ed 100644 --- a/docs/sapui5-ui-development-toolkit-for-html5-95d113b.md +++ b/docs/sapui5-ui-development-toolkit-for-html5-95d113b.md @@ -2,7 +2,7 @@ # SAPUI5: UI Development Toolkit for HTML5 -Create apps with rich user interfaces for modern web business applications, responsive across browsers and devices, based on HTML5. \(Documentation patch 1.128.0\) +Create apps with rich user interfaces for modern web business applications, responsive across browsers and devices, based on HTML5. \(Documentation patch 1.129.0\)
-Creating a new entity/draft version, either in the list report or on the object page +Creating a new entity or draft version, either in the list report or on the object page @@ -103,7 +103,7 @@ After executing an action successfully, the collection for which the action is d - The action is a bound action. -- The returned instance does not correspond to the bound instance. For example, copy actions. +- The returned instance does not correspond to the bound instance. This applies to copy actions, for example. > ### Note: > You can annotate side effects on actions. @@ -116,7 +116,9 @@ After executing an action successfully, the collection for which the action is d -### Side Effect Annotation Format + + +## Side Effect Annotation Format A side effect annotation includes the following elements: @@ -128,12 +130,13 @@ A side effect annotation includes the following elements: > ### Note: > The `TriggerAction` replaces the `PreparationAction` property that is deprecated as of the SAPUI5 1.87 release. + > + > The `EffectTypes` property is deprecated as of SAPUI5 1.84 release. + -> ### Note: -> Side effects types are deprecated as of SAPUI5 1.84 release. -**Side Effect Annotation Properties** +### Side Effect Annotation Properties The following side effect annotations are supported: @@ -147,10 +150,10 @@ The following side effect annotations are supported: - When you modify the source property and move the focus away from the source, the side effect is triggered. - - When you modify the virtual field group and move the focus away from the virtual field group, the side effect is triggered immediately, if there is no `TriggerAction` configured in the side effect annotation. However, if the focus is changed to a control within the same virtual field group, then the side effect is not triggered. + - When you modify the virtual field group and move the focus away from the virtual field group, the side effect is triggered immediately if there is no `TriggerAction` configured in the side effect annotation. However, if the focus is changed to a control within the same virtual field group, then the side effect is not triggered. - > ### Note: + > ### Restriction: > You cannot use navigation properties as source properties. - **Source entities** @@ -161,8 +164,8 @@ The following side effect annotations are supported: In SAP Fiori elements for OData V4: Any kind of navigation property \(1:1 or 1:n\) can be specified as the source entity, - > ### Note: - > You cannot specify a 1:1 association or an empty target, for example, `NavigationPropertyPath` to ensure that the whole entity is considered as the source. + > ### Caution: + > You cannot specify a 1:1 association or an empty target, such as `NavigationPropertyPath`, to ensure that the whole entity is considered as the source. The side effect is triggered when structural changes are made \(adding or deleting an item\). The side effect is not triggered if a property of any entity is changed. This needs to be done in the entity type of the associated entity. @@ -179,7 +182,11 @@ The following side effect annotations are supported: If a trigger action is defined but the `TargetProperties` or `TargetEntities` are not defined, then only the trigger action is called. -**Scenarios Where Side Effects Cannot be Triggered** + + + + +## Scenarios Where Side Effects Cannot Be Triggered As a general rule, no data is sent to the back end until the UI validation errors are solved. This means that the side effect is not triggered when there are validation errors related to the source property or a set of properties. @@ -239,7 +246,7 @@ You can define side effects either in the back end or in local annotation files. - **Target Entities** - For 1:n, the request is not sent via the binding of the table. This means that no paging is considered. Therefore, 1:n should be used carefully. + For 1:n, the request is not sent by the binding of the table. This means that paging is not considered. Therefore, 1:n should be used carefully. - **Side effect without a specific source** @@ -265,7 +272,7 @@ You can define side effects either in the back end or in local annotation files. In SAP Fiori elements for OData V4, you can define side effects on unbound actions. As these actions are not bound to a context, the definition must use an absolute path. -As shown in the following code sample, this allows you to influence all the entities of a list when completing an unbound action, refreshing the entire entity list. +This allows you to influence all the entities of a list when completing an unbound action, refreshing the entire entity list, as shown in the following sample code: > ### Sample Code: > XML Annotation @@ -358,13 +365,11 @@ As shown in the following code sample, this allows you to influence all the enti The list is refreshed if a 1:n association is mentioned as a target entity. -You can also specify absolute paths, that is paths starting with the entity container. They can be defined as `TargetEntities` to refresh complete entity sets in the list report. +You can also specify absolute paths, that is, paths starting with the entity container. They can be defined as `TargetEntities` to refresh complete entity sets in the list report. > ### Example: > `/namespace.to.EntityContainer/EntityType` -For more information, see the section *Example: Side effect after executing an action* in the topic [Side Effect Annotations: Examples](side-effect-annotations-examples-61cf21d.md). - ### Value List Refresh @@ -373,7 +378,7 @@ Value lists are cached during runtime for better performance. Define an absolute - If you are using a value list referring to transactional data -- If you expect the values list to change due to actions or changes made by users +- If you expect the value list to change due to actions or changes made by users You can find an example in the following sample code: @@ -398,6 +403,49 @@ You can find an example in the following sample code: > > ``` + + +### Side Effects for Extension Fields in Forms + +SAP Fiori elements for OData V4 supports executing side effects when using custom extension fields in a form if the source properties of a side effect contain the property used in an extension field. To enable side effects for extension fields, specify the property used in the extension field in the `manifest.json` file with the `property` key. + +In the following example, the side effects with `NameProperty` as a source property are executed: + +> ### Sample Code: +> `manifest.json` +> +> ```json +> "targets": { +> "MyObjectPage": { +> "type": "Component", +> "id": "Default", +> "name": "sap.fe.templates.ObjectPage", +> "viewLevel": 1, +> "options": { +> "settings": { +> "contextPath": "/RootEntity", +> "editableHeaderContent": true, +> "controlConfiguration": { +> "@com.sap.vocabularies.UI.v1.Identification": { +> "fields": { +> "customFormElementIdentification1": { +> "template": "sap.fe.core.fpmExplorer.customFormElementContent.CustomFormElement1", +> "label": "Custom FormElement 1", +> "property": "NameProperty" +> } +> } +> } +> } +> } +> } +> } +> } +> ``` + +Side effects are executed when the focus moves away from the extension field. + +Check out our live example in the flexible programming model explorer at [Extension Points - Custom Form Element](https://latest.testapp.sapfe.c.eu-de-2.cloud.sap/test-resources/sap/fe/core/fpmExplorer/index.html#/customElements/customFormElementContent). + **Related Information** diff --git a/docs/06_SAP_Fiori_Elements/the-filterbar-building-block-7838611.md b/docs/06_SAP_Fiori_Elements/the-filterbar-building-block-7838611.md index 4e54798f..8b61e5c4 100644 --- a/docs/06_SAP_Fiori_Elements/the-filterbar-building-block-7838611.md +++ b/docs/06_SAP_Fiori_Elements/the-filterbar-building-block-7838611.md @@ -18,7 +18,7 @@ The `FilterBar` building block allows application developers to embed a filter b Default values using `UI.SelectionVariant` and `Common.FilterDefaultValue` as well as custom filters are supported. Check out our live example in the flexible programming model explorer at [Filter Bar - Overview](https://ui5.sap.com/test-resources/sap/fe/core/fpmExplorer/index.html#/buildingBlocks/filterBar/filterBarDefault). -For more information about custom filter fields, see [Adding Custom Fields to the Filter Bar](adding-custom-fields-to-the-filter-bar-5fb9f57.md). +For more information about adding custom XML fragments as filter fields to the `FilterBar` building block, see [The FilterField Building Block](the-filterfield-building-block-2df7837.md). > ### Note: > When using the `FilterBar` building block in a custom section or a custom subsection that deals with the navigation entity, make sure all the controls that need to be filtered by the filter bar are part of the same UI fragment as the `FilterBar` building block. diff --git a/docs/06_SAP_Fiori_Elements/the-filterfield-building-block-2df7837.md b/docs/06_SAP_Fiori_Elements/the-filterfield-building-block-2df7837.md index 23cca8f3..8b43435e 100644 --- a/docs/06_SAP_Fiori_Elements/the-filterfield-building-block-2df7837.md +++ b/docs/06_SAP_Fiori_Elements/the-filterfield-building-block-2df7837.md @@ -28,7 +28,7 @@ The `FilterField` building block allows you to add custom XML fragments as filte For more information about creating your own XML templates for custom filter fields \(for example `NameFilterXMLFileName.xml`\), see [Adding Custom Fields to the Filter Bar](adding-custom-fields-to-the-filter-bar-5fb9f57.md). -You can explore and work with the coding yourself. Check out our live example in the flexible programming model explorer at [Filter Bar - Custom Filters](https://ui5.sap.com/test-resources/sap/fe/core/fpmExplorer/index.html#/buildingBlocks/filterBar/filterBarCustoms). +You can explore and work with the coding yourself. Check out our live example in the flexible programming model explorer at [Filter Bar - Custom Filters](https://ui5.sap.com/#/api/sap.fe.macros.filterBar.FilterField). @@ -36,5 +36,5 @@ You can explore and work with the coding yourself. Check out our live example in ## API -For information about the `FilterField` API, see the [API Reference](https://ui5.sap.com/#/api/sap.fe.macros.FilterField). +For information about the `FilterField` API, see the [API Reference](https://ui5.sap.com/#/api/sap.fe.macros.filterBar.FilterField). diff --git a/docs/06_SAP_Fiori_Elements/tree-tables-7cf7a31.md b/docs/06_SAP_Fiori_Elements/tree-tables-7cf7a31.md index 5616e803..64b3786a 100644 --- a/docs/06_SAP_Fiori_Elements/tree-tables-7cf7a31.md +++ b/docs/06_SAP_Fiori_Elements/tree-tables-7cf7a31.md @@ -22,6 +22,12 @@ SAP Fiori elements for OData V4 supports displaying a tree table on the list rep - Extension points are the same as for the object page. +> ### Note: +> When switching between edit mode and display mode, the expansion state of a tree table in an object page is not kept. + +> ### Restriction: +> A tree table cannot be displayed on the list report with a draft-enabled service in the flexible column layout. + @@ -156,9 +162,11 @@ The following screenshot shows an example of the outcome. Under an "Intermediary -## Create at a Position Calculated by the Back End +## Create at a Position Calculated by the Back-End Server -By default, a new node is always displayed as the first child below its parent. You can use the `createInPlace` option to place the new node in its correct position calculated by the back end. If the new node cannot be visualized due to the filter criteria applied to the table, a message toast is displayed to the end user. +By default, a newly created node is always displayed as the first child below its parent even if a sort or a filter is applied to the table. + +You can use the `createInPlace` option to place the new node in its real position below its parent which depends on the sort applied to the table and the back-end server logic. If the new node cannot be visualized due to the filter criteria applied to the table, a message toast is displayed to the end user. > ### Note: > In the flexible column layout, when using both the `NewPage` and `createInPlace` options of the `createMode` property, the new entry is shown \(for example, in a subobject page\), but no message toast is displayed if it cannot be shown on the object page due to the applied filter criteria. @@ -197,6 +205,14 @@ Drag and drop actions are supported by SAP Fiori elements for OData V4 as of SAP Drag and drop between siblings is supported if the `ChangeNextSiblingAction` term is defined in the `RecursiveHierarchyActions` annotation. When using the ABAP RESTful Application Programming Model \(RAP\), this annotation is not set for root entities. Hence, drag and drop between siblings is not supported in the list report. +If a node is dropped onto the empty area on the right-hand side of a table, the node is promoted to a root node. In the following example, dropping the "Canada" node onto the highlighted area turns it into a root node, that is, a sibling to the "Europe North" and "America North" nodes. + + + +**Dropping a Node onto the Empty Right-Hand Side of a Table** + +![](images/Dropping_a_Node_onto_the_Empty_Right-Hand_Side_of_a_Table_d74fc6f.png "Dropping a Node onto the Empty Right-Hand Side of a Table") + You can use two extensions to control the behavior of drag and drop: - `isMoveToPositionAllowed`: Define if a source node can be dropped on a specific parent node. @@ -364,6 +380,49 @@ You can disable drag and drop as well as cut and paste to restrict changes in th + + +## Disabling the Reordering of Root Nodes + +You can prevent users from changing the order of root nodes by using the [`ChangeSiblingForRootsSupported`](https://github.com/SAP/odata-vocabularies/blob/main/vocabularies/Hierarchy.xml#L201) annotation. + +If `ChangeSiblingForRootsSupported` is set to `false`, users can't do the following actions: + +- move a root node up or down + +- drop a node as a root node between two other root nodes + + +If no specific restrictions have been set for an action, the following actions are supported: + +- cutting a root node + +- pasting a node as a root node + +- dragging a root node + +- dropping a node as a root node at the beginning or end of the table or onto the right-hand side of the table + + +If `ChangeSiblingForRootsSupported` is not defined, it is considered as set to `true`. + +> ### Sample Code: +> XML Annotation +> +> ```xml +> +> +> +> +> +> +> +> +> +> ``` + + + ## `TreeTable` Building Block diff --git a/docs/06_SAP_Fiori_Elements/using-global-side-effects-955ae31.md b/docs/06_SAP_Fiori_Elements/using-global-side-effects-955ae31.md index 6f6e568e..43d74049 100644 --- a/docs/06_SAP_Fiori_Elements/using-global-side-effects-955ae31.md +++ b/docs/06_SAP_Fiori_Elements/using-global-side-effects-955ae31.md @@ -86,7 +86,7 @@ The following CAP CDS sample code shows the global side effect with target field > TaxAmount, > NetAmount, > GrossAmount -> ], +> ] > TriggerAction : 'NAMESPACE.MyAction' > } > ); diff --git a/docs/07_APF/descriptor-manifest-json-74038a5.md b/docs/07_APF/descriptor-manifest-json-74038a5.md index ce2c66bf..3aac88ea 100644 --- a/docs/07_APF/descriptor-manifest-json-74038a5.md +++ b/docs/07_APF/descriptor-manifest-json-74038a5.md @@ -195,31 +195,31 @@ The `sap.app` namespace also contains the title of the application. This “titl "minUI5Version": "1.38.1", "libs": { "sap.ui.core": { - "minVersion": "1.38.1" + "minVersion": "1.38.1", "lazy" : false }, "sap.ca.ui": { - "minVersion": "1.38.1" + "minVersion": "1.38.1", "lazy" : false }, "sap.m": { - "minVersion": "1.38.1" + "minVersion": "1.38.1", "lazy" : false }, "sap.ui.layout": { - "minVersion": "1.38.1" + "minVersion": "1.38.1", "lazy" : false }, "sap.ushell": { - "minVersion": "1.38.1" + "minVersion": "1.38.1", "lazy" : false }, "sap.apf": { - "minVersion": "1.38.1" + "minVersion": "1.38.1", "lazy" : false }, "sap.viz": { - "minVersion": "1.38.1" + "minVersion": "1.38.1", "lazy" : false } } @@ -236,10 +236,10 @@ The `sap.app` namespace also contains the title of the application. This “titl "type": "sap.ui.model.resource.ResourceModel", "uri": "i18n/texts.properties" } - } + }, "config": { "sapFiori2Adaptation": true - }, + } } } ``` diff --git a/docs/08_Extending_SAPUI5_Applications/using-component-configuration-c264d66.md b/docs/08_Extending_SAPUI5_Applications/using-component-configuration-c264d66.md index 3f084b27..b13830b8 100644 --- a/docs/08_Extending_SAPUI5_Applications/using-component-configuration-c264d66.md +++ b/docs/08_Extending_SAPUI5_Applications/using-component-configuration-c264d66.md @@ -49,7 +49,7 @@ sap.ui.define([], function() { doSomeCustomAction: function() { alert("this is another customer action"); } - }; + }); }); ``` diff --git a/docs/10_More_About_Controls/enablement-of-personalization-with-variant-management-f280251.md b/docs/10_More_About_Controls/enablement-of-personalization-with-variant-management-f280251.md index 403d83b1..7096a4df 100644 --- a/docs/10_More_About_Controls/enablement-of-personalization-with-variant-management-f280251.md +++ b/docs/10_More_About_Controls/enablement-of-personalization-with-variant-management-f280251.md @@ -300,7 +300,7 @@ Engine.getInstance().attachStateChange(function(){ ## Programmatically Applying States -The personalization engine also provides capabilities to programatically apply personalization. For example, if there are other personalization functions outside the control, such as a custom button for making a sort function available. +The personalization engine also provides capabilities to programmatically apply personalization. For example, if there are other personalization functions outside the control, such as a custom button for making a sort function available. In this case, the `sap.m.p13n.Engine#retrieveState` and `sap.m.p13n.Engine#applyState` methods can be used to modify and persist personalization changes without a personalization UI. diff --git a/docs/10_More_About_Controls/sap-ui-richtexteditor-d4f3f15.md b/docs/10_More_About_Controls/sap-ui-richtexteditor-d4f3f15.md index 5ed78b12..795ff66e 100644 --- a/docs/10_More_About_Controls/sap-ui-richtexteditor-d4f3f15.md +++ b/docs/10_More_About_Controls/sap-ui-richtexteditor-d4f3f15.md @@ -84,6 +84,12 @@ Because of the use of а third-party component some additional restrictions appl Introduced with 1.71.65 + Replaced by 6.8.4 in 1.71.71 + + - 6.8.4 + + Introduced with 1.71.71 + @@ -111,6 +117,12 @@ Because of the use of а third-party component some additional restrictions appl Introduced with 1.84.45 + Replaced by 6.8.4 in 1.84.51 + + - 6.8.4 + + Introduced with 1.84.51. + @@ -173,6 +185,8 @@ Because of the use of а third-party component some additional restrictions appl Introduced with 1.108.27 + **TinyMCE v5 deprecated as of 1.108.36** + - 6.1.0 Replaced by 6.3.1 in 1.108.10 @@ -193,6 +207,12 @@ Because of the use of а third-party component some additional restrictions appl Introduced with 1.108.27 + Replaced by 6.8.4 in 1.108.36 + + - 6.8.4 + + Introduced with 1.108.36 + @@ -216,6 +236,8 @@ Because of the use of а third-party component some additional restrictions appl Introduced with 1.120.11 + **TinyMCE v5 deprecated as of 1.120.21** + - 6.5.1 Replaced by 6.8.2 in 1.120.11 @@ -224,6 +246,12 @@ Because of the use of а third-party component some additional restrictions appl Introduced with 1.120.11 + Replaced by 6.8.4 in 1.120.21 + + - 6.8.4 + + Introduced with 1.120.21 + @@ -232,14 +260,39 @@ Because of the use of а third-party component some additional restrictions appl
- 1.122 + 1.124 - 5.10.9 + + **TinyMCE v5 deprecated as of 1.124.0** + - 6.8.2 + Introduced with 1.124.0 + + Replaced by 6.8.4 in 1.124.8 + + + + +
+ + Latest + + + + - 5.10.9 + + - 6.8.4 + +