@openui5/sap.ui.documentation 1.100.0 → 1.102.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.eslintrc.json +17 -0
  2. package/THIRDPARTY.txt +5 -5
  3. package/package.json +6 -6
  4. package/src/sap/ui/documentation/.library +1 -1
  5. package/src/sap/ui/documentation/library.js +12 -15
  6. package/src/sap/ui/documentation/messagebundle.properties +4 -2
  7. package/src/sap/ui/documentation/messagebundle_ar.properties +3 -1
  8. package/src/sap/ui/documentation/messagebundle_bg.properties +3 -1
  9. package/src/sap/ui/documentation/messagebundle_ca.properties +3 -1
  10. package/src/sap/ui/documentation/messagebundle_cs.properties +3 -1
  11. package/src/sap/ui/documentation/messagebundle_cy.properties +3 -1
  12. package/src/sap/ui/documentation/messagebundle_da.properties +3 -1
  13. package/src/sap/ui/documentation/messagebundle_de.properties +3 -1
  14. package/src/sap/ui/documentation/messagebundle_el.properties +3 -1
  15. package/src/sap/ui/documentation/messagebundle_en.properties +3 -1
  16. package/src/sap/ui/documentation/messagebundle_en_GB.properties +3 -1
  17. package/src/sap/ui/documentation/messagebundle_en_US_sappsd.properties +2 -1
  18. package/src/sap/ui/documentation/messagebundle_en_US_saprigi.properties +43 -10
  19. package/src/sap/ui/documentation/messagebundle_en_US_saptrc.properties +3 -1
  20. package/src/sap/ui/documentation/messagebundle_es.properties +3 -1
  21. package/src/sap/ui/documentation/messagebundle_es_MX.properties +3 -1
  22. package/src/sap/ui/documentation/messagebundle_et.properties +3 -1
  23. package/src/sap/ui/documentation/messagebundle_fi.properties +3 -1
  24. package/src/sap/ui/documentation/messagebundle_fr.properties +3 -1
  25. package/src/sap/ui/documentation/messagebundle_fr_CA.properties +3 -1
  26. package/src/sap/ui/documentation/messagebundle_hi.properties +3 -1
  27. package/src/sap/ui/documentation/messagebundle_hr.properties +3 -1
  28. package/src/sap/ui/documentation/messagebundle_hu.properties +3 -1
  29. package/src/sap/ui/documentation/messagebundle_id.properties +3 -1
  30. package/src/sap/ui/documentation/messagebundle_it.properties +3 -1
  31. package/src/sap/ui/documentation/messagebundle_iw.properties +3 -1
  32. package/src/sap/ui/documentation/messagebundle_ja.properties +3 -1
  33. package/src/sap/ui/documentation/messagebundle_kk.properties +3 -1
  34. package/src/sap/ui/documentation/messagebundle_ko.properties +4 -2
  35. package/src/sap/ui/documentation/messagebundle_lt.properties +3 -1
  36. package/src/sap/ui/documentation/messagebundle_lv.properties +3 -1
  37. package/src/sap/ui/documentation/messagebundle_ms.properties +3 -1
  38. package/src/sap/ui/documentation/messagebundle_nl.properties +3 -1
  39. package/src/sap/ui/documentation/messagebundle_no.properties +3 -1
  40. package/src/sap/ui/documentation/messagebundle_pl.properties +3 -1
  41. package/src/sap/ui/documentation/messagebundle_pt.properties +3 -1
  42. package/src/sap/ui/documentation/messagebundle_pt_PT.properties +3 -1
  43. package/src/sap/ui/documentation/messagebundle_ro.properties +3 -1
  44. package/src/sap/ui/documentation/messagebundle_ru.properties +3 -1
  45. package/src/sap/ui/documentation/messagebundle_sh.properties +3 -1
  46. package/src/sap/ui/documentation/messagebundle_sk.properties +3 -1
  47. package/src/sap/ui/documentation/messagebundle_sl.properties +3 -1
  48. package/src/sap/ui/documentation/messagebundle_sv.properties +3 -1
  49. package/src/sap/ui/documentation/messagebundle_th.properties +3 -1
  50. package/src/sap/ui/documentation/messagebundle_tr.properties +3 -1
  51. package/src/sap/ui/documentation/messagebundle_uk.properties +3 -1
  52. package/src/sap/ui/documentation/messagebundle_vi.properties +3 -1
  53. package/src/sap/ui/documentation/messagebundle_zh_CN.properties +3 -1
  54. package/src/sap/ui/documentation/messagebundle_zh_TW.properties +16 -14
  55. package/src/sap/ui/documentation/sdk/controller/BaseController.js +1 -1
  56. package/src/sap/ui/documentation/sdk/controller/Code.controller.js +10 -4
  57. package/src/sap/ui/documentation/sdk/controller/Sample.controller.js +76 -63
  58. package/src/sap/ui/documentation/sdk/controller/SampleBaseController.js +1 -1
  59. package/src/sap/ui/documentation/sdk/controller/util/ResourceDownloadUtil.js +1 -1
  60. package/src/sap/ui/documentation/sdk/controller/util/ToolsInfo.js +5 -0
  61. package/src/sap/ui/documentation/sdk/images/tools/AccessibilityGuide.png +0 -0
  62. package/src/sap/ui/documentation/sdk/index.html +96 -19
  63. package/src/sap/ui/documentation/sdk/model/libraryData.js +9 -0
  64. package/src/sap/ui/documentation/sdk/view/Tools.view.xml +19 -0
@@ -67,7 +67,7 @@ WELCOME_CHOOSE_SCENARIO=\u9078\u64C7\u60A8\u7684\u65B9\u6848
67
67
  WELCOME_JOIN_COMMUNITY=\u52A0\u5165\u793E\u7FA4
68
68
  WELCOME_BLOCK_2_TITLE=\u4F7F\u7528\u700F\u89BD\u5668\u548C\u88DD\u7F6E\u7D66\u4E88\u56DE\u61C9
69
69
  WELCOME_BLOCK_2_TEXT=\u7121\u9808\u64D4\u6182\u88DD\u7F6E\u5167\u5BB9\uFF01UI5 \u61C9\u7528\u7A0B\u5F0F\u53EF\u5728\u667A\u6167\u578B\u624B\u6A5F\u3001\u5E73\u677F\u96FB\u8166\u548C\u684C\u4E0A\u578B\u96FB\u8166\u57F7\u884C\u3002UI \u63A7\u5236\u9805\u6703\u81EA\u52D5\u8ABF\u6574\u4EE5\u9069\u7528\u6BCF\u500B\u88DD\u7F6E\u7684\u529F\u80FD\uFF0C\u4E26\u63D0\u4F9B\u591A\u6578\u53EF\u7528\u4E0D\u52D5\u7522\u3002
70
- WELCOME_BLOCK_2_IMG_ALT=\u986F\u793A\u624B\u6A5F\u3001\u684C\u4E0A\u578B\u96FB\u8166\u756B\u9762\u548C\u5E73\u677F\u96FB\u8166\u7684\u5716\u7247
70
+ WELCOME_BLOCK_2_IMG_ALT=\u7528\u65BC\u986F\u793A\u624B\u6A5F\u3001\u684C\u4E0A\u578B\u96FB\u8166\u756B\u9762\u548C\u5E73\u677F\u96FB\u8166\u7684\u5716\u7247
71
71
  WELCOME_BLOCK_3_TITLE=\u529F\u80FD\u5F37\u5927\u7684\u958B\u767C\u6982\u5FF5
72
72
  WELCOME_BLOCK_3_TEXT_1=UI5 \u662F\u7531\u5C08\u696D\u4EBA\u54E1\u6240\u5EFA\u7ACB\uFF0C\u7528\u4EE5\u5354\u52A9\u73FE\u4EE3\u958B\u767C\u4EBA\u54E1\u5EFA\u7ACB\u5148\u9032\u7684\u7DB2\u9801\u61C9\u7528\u7A0B\u5F0F\uFF0C\u4E26\u6DB5\u84CB\u6700\u65B0\u61C9\u7528\u7A0B\u5F0F\u6240\u9700\u7684\u6240\u6709\u529F\u80FD\u3002UI5 \u7684\u6838\u5FC3\u529F\u80FD\u53EF\u63D0\u4F9B\u7A69\u56FA\u7684\u57FA\u790E\uFF0C\u5728\u5E55\u5F8C\u7BA1\u7406\u6700\u65B0\u958B\u767C\u7684\u591A\u500B\u9762\u5411\u4F86\u7C21\u5316\u5DE5\u4F5C\uFF1A
73
73
  WELCOME_BLOCK_3_TEXT_2=\u5305\u542B\u6A19\u6E96\u670D\u52D9\uFF0C\u4F8B\u5982 MVC \u548C\u5404\u7A2E\u8CC7\u6599\u9023\u7D50\u985E\u578B
@@ -87,7 +87,7 @@ WELCOME_BLOCK_4_TEXT_7=\u5145\u5206\u904B\u7528\u5275\u65B0\u4E26\u4FDD\u6301\u5
87
87
  WELCOME_BLOCK_4_TEXT_8=\u7121\u9650\u4F7F\u7528 SAP \u548C\u975E SAP \u6280\u8853\u5806\u758A
88
88
  WELCOME_BLOCK_5_TITLE=\u5C62\u7372\u6B8A\u69AE\u7684 SAP Fiori Design
89
89
  WELCOME_BLOCK_5_TEXT=\u900F\u904E\u6240\u6709\u524D\u7AEF\u529F\u80FD\u7684\u4E00\u81F4\u8A2D\u8A08\u8A9E\u8A00\u548C\u9810\u5148\u5B9A\u7FA9\u7684 UX \u6A21\u5F0F\u53EF\u5145\u5206\u904B\u7528 UI5 \u61C9\u7528\u7A0B\u5F0F\u3002\u4F7F\u7528\u9810\u5148\u5B9A\u7FA9\u7684\u4E3B\u984C\uFF0C\u6216\u662F\u5617\u8A66\u6211\u5011\u7DDA\u4E0A\u4E3B\u984C\u8A2D\u5B9A\u5DE5\u5177\u4F86\u5EFA\u7ACB\u81EA\u8A02\u4E3B\u984C\u3002
90
- WELCOME_BLOCK_5_IMG_ALT=\u986F\u793A SAP Fiori \u8A2D\u8A08\u5143\u7D20\u7684\u5716\u7247
90
+ WELCOME_BLOCK_5_IMG_ALT=\u7528\u65BC\u986F\u793A SAP Fiori \u8A2D\u8A08\u5143\u7D20\u7684\u5716\u7247
91
91
  WELCOME_BLOCK_6_TITLE=\u6E96\u5099\u958B\u59CB
92
92
  WELCOME_BLOCK_6_TEXT_1=\u60A8\u9700\u8981\u4F7F\u7528 UI5 \u958B\u767C\u7684\u6240\u6709 Web \u61C9\u7528\u7A0B\u5F0F\u5373\u70BA\u958B\u767C\u74B0\u5883\u548C\u700F\u89BD\u5668\u3002\u60A8\u53EF\u57FA\u65BC\u4FBF\u5229\u6027\u8003\u91CF\u800C\u5728\u96F2\u7AEF\u4E2D\u4F7F\u7528 SAP Business Application Studio\uFF0C\u6216\u662F\u57FA\u65BC\u5F48\u6027\u8003\u91CF\u800C\u900F\u904E\u66FF\u4EE3\u9078\u64C7\u4F86\u8A2D\u5B9A\u672C\u7AEF\u958B\u767C\u74B0\u5883\u3002
93
93
  WELCOME_BLOCK_6_TEXT_2=\u5728\u6B64\u5617\u8A66\u7B2C\u4E00\u500B\u7BC4\u4F8B\uFF1A
@@ -112,6 +112,7 @@ WELCOME_BLOCK_11_TEXT_1=\u904B\u7528\u7A69\u56FA\u7684 CDN \u5F48\u6027\u4F86\u9
112
112
  WELCOME_BLOCK_11_TEXT_2=\u4F7F\u7528\u591A\u91CD\u7248\u672C\u7684 CDN \u4EE5\u7DAD\u8B77\u81EA\u8A02\u7684\u751F\u547D\u9031\u671F
113
113
  WELCOME_BLOCK_11_TEXT_3=\u5167\u90E8\u90E8\u7F72\u548C\u96F2\u7AEF\u958B\u767C\u65B9\u6848
114
114
  WELCOME_BLOCK_12_TITLE=SAP Community
115
+ WELCOME_BLOCK_13_TITLE=Newsletter
115
116
  WELCOME_VIDEO_BLOCK_TITLE=SAPUI5 \u662F\u4EC0\u9EBC\uFF1F
116
117
 
117
118
  WELCOME_VIDEO_BLOCK_TEXT_1=SAPUI5 \u5C6C\u65BC HTML5 \u67B6\u69CB\uFF0C\u9019\u662F\u904B\u7528\u6709\u6548\u7387\u7684\u65B9\u5F0F\u4F86\u5EFA\u7ACB\u8DE8\u5E73\u53F0\u3001\u4F01\u696D\u7D1A\u7DB2\u8DEF\u61C9\u7528\u7A0B\u5F0F\u3002\u6B64\u6700\u521D\u53EA\u662F\u4E00\u500B\u5C0F\u578B\u5C08\u6848\uFF0C\u800C\u73FE\u5728\u5DF2\u6210\u70BA SAP \u6240\u767C\u660E\u7684\u6700\u6210\u529F\u6280\u8853\u4E4B\u4E00\u3002
@@ -237,7 +238,6 @@ DEMO_APPS_DOWNLOAD_DIALOG_TITLE=\u4E0B\u8F09\u5C55\u793A\u61C9\u7528\u7A0B\u5F0F
237
238
  DEMO_APPS_DOWNLOAD_DIALOG_CANCEL_BTN=\u53D6\u6D88
238
239
  DEMO_APPS_CATEGORY_TUTORIAL=\u5305\u542B\u6559\u5B78\u8AB2\u7A0B\u7684\u5C55\u793A\u61C9\u7528\u7A0B\u5F0F
239
240
  DEMO_APPS_CATEGORY_SHOWCASE=\u73FE\u5BE6\u751F\u6D3B\u60C5\u5883\u4E2D\u7684 UI5 \u6982\u5FF5
240
- DEMO_APPS_CATEGORY_TEMPLATE=\u7BC4\u672C\u61C9\u7528\u7A0B\u5F0F
241
241
  DEMO_APPS_CATEGORY_MISC=\u96DC\u9805\u5C55\u793A\u61C9\u7528\u7A0B\u5F0F
242
242
  DEMO_APPS_CATEGORY_RTA=SAPUI5 \u5F48\u6027\u5C55\u793A\u61C9\u7528\u7A0B\u5F0F
243
243
  DEMO_APPS_LIBRARY=\u63A7\u5236\u9805\u7A0B\u5F0F\u5EAB\uFF1A
@@ -338,41 +338,43 @@ LIVE_EDITOR_PREVIEW_BTN=\u9810\u89BD
338
338
  LIVE_EDITOR_LIVE_PREVIEW_TEXT=\u81EA\u52D5\u9810\u89BD
339
339
 
340
340
  TOOLS_VIEW_DOC=\u6AA2\u8996\u7D00\u9304\u6587\u4EF6
341
- TOOLS_CARD_1_IMG_ALT=\u986F\u793A SAP Business Application Studio \u7684\u5716\u7247
341
+ TOOLS_CARD_1_IMG_ALT=\u7528\u65BC\u986F\u793A SAP Business Application Studio \u7684\u5716\u7247
342
342
  TOOLS_CARD_1_TEXT=SAP BTP \u4E0A\u7684 SAP Business Application Studio (SAP \u7684\u516C\u958B\u96F2\u7AEF) \u662F\u7528\u4F86\u91DD\u5C0D\u684C\u4E0A\u578B\u96FB\u8166\u8207\u884C\u52D5\u88DD\u7F6E\uFF0C\u5176\u4F7F\u7528\u6700\u65B0 SAPUI5 \u8207 SAP Fiori \u6280\u8853\u4F86\u5EFA\u7F6E\u73FE\u4EE3\u4F7F\u7528\u8005\u4ECB\u9762\u61C9\u7528\u7A0B\u5F0F\u3002
343
343
  TOOLS_CARD_1_LINK_1=SAP Business Application Studio SDK
344
- TOOLS_CARD_2_IMG_ALT=\u986F\u793A SAP UI Theme Designer \u7684\u5716\u7247
344
+ TOOLS_CARD_2_IMG_ALT=\u7528\u65BC\u986F\u793A SAP \u4F7F\u7528\u8005\u4ECB\u9762\u4E3B\u984C\u8A2D\u8A08\u5DE5\u5177\u7684\u5716\u7247
345
345
  TOOLS_CARD_2_TEXT=\u904B\u7528\u4F7F\u7528\u8005\u4ECB\u9762\u4E3B\u984C\u8A2D\u8A08\u5DE5\u5177\u4F86\u8F15\u9B06\u5EFA\u7F6E\u4F01\u696D\u8B58\u5225\u4E3B\u984C\uFF0C\u65B9\u5F0F\u70BA\u7DE8\u8F2F SAP \u63D0\u4F9B\u7684\u5176\u4E2D\u4E00\u500B\u4E3B\u984C\u7BC4\u672C\u3002
346
- TOOLS_CARD_3_IMG_ALT=\u986F\u793A SAP UI5 \u5DE5\u5177\u7DB2\u9801\u7684\u5716\u7247
346
+ TOOLS_CARD_3_IMG_ALT=\u7528\u65BC\u986F\u793A SAP UI5 \u5DE5\u5177\u7DB2\u9801\u7684\u5716\u7247
347
347
  TOOLS_CARD_3_TEXT=\u958B\u653E\u5F0F\u548C\u6A21\u7D44\u5316\u5DE5\u5177\u93C8\u6703\u6839\u64DA UI5 \u67B6\u69CB (\u904B\u7528 node.js \u548C npm) \u958B\u767C\u6700\u5148\u9032\u7684\u61C9\u7528\u7A0B\u5F0F\u3002
348
348
  TOOLS_CARD_3_LINK_1=\u6982\u89C0
349
349
  TOOLS_CARD_3_LINK_2=CLI \u7D00\u9304\u6587\u4EF6
350
- TOOLS_CARD_4_IMG_ALT=\u986F\u793A SAP UI5 Inspector \u7684\u5716\u7247
350
+ TOOLS_CARD_4_IMG_ALT=\u7528\u65BC\u986F\u793A SAP UI5 Inspector \u7684\u5716\u7247
351
351
  TOOLS_CARD_4_TEXT=\u904B\u7528 UI5 Inspector\uFF0C\u60A8\u53EF\u8F15\u9B06\u9664\u932F\u4E26\u652F\u63F4\u4EE5 OpenUI5 \u6216 SAPUI5 \u70BA\u57FA\u790E\u7684\u61C9\u7528\u7A0B\u5F0F\u3002
352
352
  TOOLS_CARD_4_LINK_1=\u6AA2\u8996\u539F\u59CB\u7A0B\u5F0F\u78BC
353
353
  TOOLS_CARD_5_TEXT=\u6574\u5408\u5361\u7247\u662F\u4E00\u500B\u65B0\u65B9\u5F0F\u4EE5\u63D0\u4F9B\u548C\u53D6\u7528\u9996\u9801\u6216\u5100\u8868\u677F\u7684 (\u985E\u4F3C) \u5C0F\u5DE5\u5177\u5361\u7247\u3002
354
354
  TOOLS_CARD_5_LINK_1=\u63A2\u7D22\u7BC4\u4F8B
355
- TOOLS_CARD_6_IMG_ALT=\u986F\u793A\u652F\u63F4\u52A9\u7406\u64CD\u4F5C\u60C5\u6CC1\u7684\u5716\u7247
355
+ TOOLS_CARD_6_IMG_ALT=\u7528\u65BC\u986F\u793A\u652F\u63F4\u52A9\u7406\u64CD\u4F5C\u60C5\u6CC1\u7684\u5716\u7247
356
356
  TOOLS_CARD_6_TEXT=\u652F\u63F4\u52A9\u7406\u53EF\u8B93\u958B\u767C\u4EBA\u54E1\u6AA2\u67E5\u662F\u5426\u6839\u64DA SAPUI5 \u6700\u4F73\u5BE6\u52D9\u8207\u6307\u5C0E\u539F\u5247\u4F86\u5EFA\u7F6E\u61C9\u7528\u7A0B\u5F0F\u3002
357
- TOOLS_CARD_7_IMG_ALT=\u986F\u793A SAP Icon Explorer \u7684\u5716\u7247
357
+ TOOLS_CARD_7_IMG_ALT=\u7528\u65BC\u986F\u793A SAP Icon Explorer \u7684\u5716\u7247
358
358
  TOOLS_CARD_7_TEXT=\u5728\u6211\u5011\u7684\u5716\u793A\u5B57\u578B\u4E2D\u700F\u89BD\u4E26\u4F7F\u7528\u5927\u578B\u5716\u793A\u96C6\u5408\u3002
359
359
  TOOLS_CARD_7_LINK_1=\u57F7\u884C\u6574\u5408\u6E2C\u8A66
360
360
  TOOLS_CARD_7_LINK_2=\u57F7\u884C\u55AE\u4F4D\u6E2C\u8A66
361
- TOOLS_CARD_8_IMG_ALT=\u986F\u793A\u4E3B\u984C\u53C3\u6578\u5DE5\u5177\u7BB1\u7684\u5716\u7247
361
+ TOOLS_CARD_8_IMG_ALT=\u7528\u65BC\u986F\u793A\u4E3B\u984C\u53C3\u6578\u5DE5\u5177\u7BB1\u7684\u5716\u7247
362
362
  TOOLS_CARD_8_TEXT=\u641C\u5C0B\u3001\u7BE9\u9078\u548C\u9810\u89BD\u8A9E\u610F\u4E3B\u984C\u53C3\u6578\u3002
363
- TOOLS_CARD_9_IMG_ALT=\u986F\u793A Business Application Studio \u7684\u5716\u7247
363
+ TOOLS_CARD_9_IMG_ALT=\u7528\u65BC\u986F\u793A Business Application Studio \u7684\u5716\u7247
364
364
  TOOLS_CARD_9_TEXT=SAP Business Application Studio (\u4E0B\u4E00\u4EE3\u7684 SAP Web IDE) \u662F\u6700\u65B0\u958B\u767C\u74B0\u5883\uFF0C\u5176\u91DD\u5C0D\u6709\u6548\u958B\u767C\u667A\u6167\u4F01\u696D\u7684\u4F01\u696D\u61C9\u7528\u7A0B\u5F0F\u800C\u91CF\u8EAB\u81EA\u8A02\u3002
365
- TOOLS_CARD_10_IMG_ALT=\u986F\u793A UI5 Web \u5143\u4EF6\u7684\u5716\u7247
365
+ TOOLS_CARD_10_IMG_ALT=\u7528\u65BC\u986F\u793A UI5 Web \u5143\u4EF6\u7684\u5716\u7247
366
366
  TOOLS_CARD_10_TEXT=UI5 Web \u5143\u4EF6\u662F\u65B0\u7684 UI5 \u670D\u52D9\uFF0C\u5176\u63D0\u4F9B\u4E00\u7D44\u53EF\u91CD\u8907\u4F7F\u7528\u7684\u4F7F\u7528\u8005\u4ECB\u9762\u5143\u7D20\uFF0C\u5305\u542B\u6839\u64DA Web \u67B6\u69CB\u7684\u975C\u614B\u7DB2\u7AD9\u6216 Web \u61C9\u7528\u7A0B\u5F0F\u7684\u6700\u4F4E\u4F7F\u7528\u91CF\u3002
367
367
  TOOLS_CARD_10_LINK_1=\u958B\u59CB\u4F7F\u7528
368
368
  TOOLS_CARD_10_LINK_2=\u958B\u555F GitHub \u5C08\u6848
369
369
  TOOLS_CARD_11_TEXT=\u7372\u53D6\u60A8\u6240\u9700\u7684\u53EF\u5B58\u53D6\u6027\u76F8\u95DC\u77E5\u8B58
370
- TOOLS_CARD_12_IMG_ALT=\u5716\u7247\u986F\u793A SAP Fiori \u5DE5\u5177
370
+ TOOLS_CARD_12_IMG_ALT=\u7528\u65BC\u986F\u793A SAP Fiori \u5DE5\u5177\u7684\u5716\u7247
371
371
  TOOLS_CARD_12_TEXT=SAP Fiori \u5DE5\u5177\u900F\u904E\u63D0\u4F9B SAP Business Application Studio \u548C Visual Studio Code \u958B\u767C\u74B0\u5883\u7684\u64F4\u5145\u529F\u80FD\uFF0C\u4EE5\u7C21\u5316 SAP Fiori \u5143\u7D20\u61C9\u7528\u7A0B\u5F0F\u7684\u5EFA\u7ACB\u4F5C\u696D\u3002
372
372
  TOOLS_CARD_13_TEXT=\u4F7F\u7528\u5373\u6642\u7DE8\u8F2F\u5668\u6642\uFF0C\u60A8\u53EF\u76F4\u63A5\u5728\u700F\u89BD\u5668\u4E2D\u5617\u8A66 API\u3002
373
373
  TOOLS_CARD_13_IMG_ALT=\u7528\u65BC\u986F\u793A\u5373\u6642\u7DE8\u8F2F\u5668\u7684\u5716\u7247
374
374
  TOOLS_CARD_14_TEXT=\u4F7F\u7528 SAP Fiori \u5143\u7D20 (\u9069\u7528\u65BC OData V4) \u6642\uFF0C\u60A8\u53EF\u4F7F\u7528\u5F48\u6027\u7A0B\u5F0F\u8A2D\u8A08\u6A21\u578B\u4F86\u8F15\u9B06\u91DD\u5C0D\u672C\u8EAB\u7684\u7279\u6B8A\u9700\u6C42\u800C\u91CF\u8EAB\u81EA\u8A02\u61C9\u7528\u7A0B\u5F0F\u3002
375
- TOOLS_CARD_14_IMG_ALT=\u5F48\u6027\u7A0B\u5F0F\u8A2D\u8A08\u6A21\u578B\u700F\u89BD\u5668\u7684\u986F\u793A\u5716\u7247
375
+ TOOLS_CARD_14_IMG_ALT=\u7528\u65BC\u986F\u793A\u5F48\u6027\u7A0B\u5F0F\u8A2D\u8A08\u6A21\u578B\u700F\u89BD\u5668\u7684\u5716\u7247
376
+ TOOLS_CARD_15_TEXT=\u7121\u8AD6\u60A8\u662F\u63A7\u5236\u4EBA\u54E1\u3001\u61C9\u7528\u7A0B\u5F0F\u958B\u767C\u4EBA\u54E1\uFF0C\u6216\u662F\u5728 SAPUI5 \u5340\u57DF\u4E2D\u641C\u5C0B\u4EE5\u77AD\u89E3\u7DB2\u8DEF\u53EF\u5B58\u53D6\u6027\u76F8\u95DC\u8CC7\u8A0A\u7684\u4F01\u696D\u4F7F\u7528\u8005\uFF0C\u6B64\u300C\u53EF\u5B58\u53D6\u6027\u6307\u5357\u300D\u6703\u63D0\u4F9B\u6709\u95DC\u7DB2\u8DEF\u53EF\u5B58\u53D6\u6027\u7BC4\u4F8B\u7684\u6DF1\u5165\u8CC7\u8A0A\u3002
377
+ TOOLS_CARD_15_IMG_ALT=\u7528\u65BC\u986F\u793A\u53EF\u5B58\u53D6\u6027\u6307\u5357\u7684\u5716\u7247
376
378
  API_MASTER_PLACEHOLDER=\u7BE9\u9078
377
379
  API_MASTER_EXPAND_BTN_TOOLTIP=\u5168\u90E8\u5C55\u958B
378
380
  API_MASTER_COLLAPSE_BTN_TOOLTIP=\u5168\u90E8\u6536\u7E2E
@@ -111,7 +111,7 @@ sap.ui.define([
111
111
  * @returns {object} the configuration of the component
112
112
  */
113
113
  getConfig : function () {
114
- return this.getOwnerComponent().getMetadata().getConfig();
114
+ return this.getOwnerComponent().getManifestEntry("/sap.ui5/config") || {};
115
115
  },
116
116
 
117
117
  /**
@@ -71,9 +71,8 @@ sap.ui.define([
71
71
  // get component and data when sample is changed or nothing exists so far
72
72
  this._createComponent().then(function (oComponent) {
73
73
  // create data object
74
- var oMetadata = oComponent.getMetadata();
75
74
  var aPromises = [];
76
- var oConfig = (oMetadata) ? oMetadata.getConfig() : null;
75
+ var oConfig = oComponent.getManifestEntry("/sap.ui5/config") || {};
77
76
  this._oData = {
78
77
  id: oSample.id,
79
78
  title: "Code: " + oSample.name,
@@ -87,7 +86,7 @@ sap.ui.define([
87
86
 
88
87
  // retrieve files
89
88
  // (via the 'Orcish maneuver': Use XHR to retrieve and cache code)
90
- if (oConfig && oConfig.sample && oConfig.sample.files) {
89
+ if (oConfig.sample && oConfig.sample.files) {
91
90
  var sRef = sap.ui.require.toUrl((oSample.id).replace(/\./g, "/"));
92
91
  for (var i = 0; i < oConfig.sample.files.length; i++) {
93
92
  var sFile = oConfig.sample.files[i];
@@ -242,7 +241,14 @@ sap.ui.define([
242
241
 
243
242
  _getFileType : function (sFileName) {
244
243
  var sFileExtension = sFileName.split('.').pop();
245
- return sFileExtension === "js" ? "javascript" : sFileExtension;
244
+ switch (sFileExtension) {
245
+ case "js":
246
+ return "javascript";
247
+ case "feature":
248
+ return "text";
249
+ default:
250
+ return sFileExtension;
251
+ }
246
252
  },
247
253
 
248
254
  _getInitialFileName : function() {
@@ -47,6 +47,11 @@ sap.ui.define([
47
47
  // shortcut for sap.m.URLHelper
48
48
  var URLHelper = mobileLibrary.URLHelper;
49
49
 
50
+ var ALLOWLIST_SAMPLES_SEARCH_PARAMS = [
51
+ "sap-ui-rtl",
52
+ "sap-ui-language"
53
+ ];
54
+
50
55
  return SampleBaseController.extend("sap.ui.documentation.sdk.controller.Sample", {
51
56
  /* =========================================================== */
52
57
  /* lifecycle methods */
@@ -408,70 +413,78 @@ sap.ui.define([
408
413
  this.fResolve = resolve;
409
414
  this.fReject = reject;
410
415
  var sSampleOrigin = (window['sap-ui-documentation-config'] && window['sap-ui-documentation-config'].demoKitResourceOrigin) || "",
411
- sSampleVersion = ResourcesUtil.getResourcesVersion();
412
-
413
- this.sIFrameUrl = ResourcesUtil.getResourceOrigin() +
414
- "/resources/sap/ui/documentation/sdk/index.html" +
415
- "?sap-ui-xx-sample-id=" + sSampleId
416
- + "&sap-ui-xx-sample-origin=" + sSampleOrigin + sSampleVersion
417
- + "&sap-ui-xx-dk-origin=" + window.location.origin;
418
-
419
- if (!this._oHtmlControl) {
420
-
421
- var fnMessage = function (eMessage) {
422
- if (eMessage.data.type === "INIT") {
423
- var oConfiguration = sap.ui.getCore().getConfiguration();
424
- if (eMessage.data.config && eMessage.data.config.sample && eMessage.data.config.sample.iframe) {
425
- sSampleId = this._sId;
426
- vIframe = eMessage.data.config.sample.iframe;
427
- sIframePath = this._resolveIframePath(sSampleId, vIframe);
428
-
429
- //vlaid only for samples that contains own index.html
430
- // strip the file extension to be able to use jQuery.sap.getModulePath
431
- aFileNameMatches = rExtractFilename.exec(vIframe);
432
- sFileName = (aFileNameMatches && aFileNameMatches.length > 1 ? aFileNameMatches[1] : vIframe);
433
- sFileEnding = rStripUI5Ending.exec(sFileName)[0];
434
- var sIframeWithoutUI5Ending = sFileName.replace(rStripUI5Ending, "");
435
-
436
- // combine namespace with the file name again
437
- this.sIFrameUrl = (sap.ui.require.toUrl((sIframePath + "/" + sIframeWithoutUI5Ending).replace(/\./g, "/")) + sFileEnding || ".html")
438
- + "?sap-ui-theme=" + sap.ui.getCore().getConfiguration().getTheme();
439
- this._oHtmlControl.getDomRef().src = this.sIFrameUrl;
440
- }
441
- this._oHtmlControl.getDomRef().contentWindow.postMessage({
442
- type: "SETTINGS",
443
- reason: "set",
444
- data: {
445
- "density": this.getOwnerComponent().getContentDensityClass(),
446
- "RTL": oConfiguration.getRTL(),
447
- "theme": oConfiguration.getTheme()
448
- }
449
- }, this.getOwnerComponent()._sSampleIframeOrigin);
450
- this.fResolve(eMessage.data.config.sample);
451
- } else if (eMessage.data.type === "ERR") {
452
- this.fReject(eMessage.data.data.msg);
453
- } else if (eMessage.data.type === "RTA") {
454
- this._loadRTA.call(this);
455
- }
456
- }.bind(this);
457
-
458
- this._oHtmlControl = new HTML({
459
- id : "sampleFrame",
460
- content : '<iframe src="' + this.sIFrameUrl + '" id="sampleFrame" frameBorder="0"></iframe>'
461
- }).addEventDelegate({
462
- onBeforeRendering: function () {
463
- window.removeEventListener("message", fnMessage);
464
- }
465
- })
466
- .addEventDelegate({
467
- onAfterRendering: function () {
468
- window.addEventListener("message", fnMessage);
469
- }
470
- });
471
- } else {
472
- // If we already have the control just navigate to the new URL
473
- this._oHtmlControl.getDomRef().src = this.sIFrameUrl;
416
+ sSampleVersion = ResourcesUtil.getResourcesVersion(),
417
+ sSampleSearchParams = "";
418
+
419
+ // Assigning allowed query parameters from Demo Kit URL
420
+ ALLOWLIST_SAMPLES_SEARCH_PARAMS.forEach(function(oParam, index){
421
+ if (new URL(document.location.href).searchParams.get(oParam)){
422
+ sSampleSearchParams += (sSampleSearchParams === "" ? "?" : "&") + oParam + "=" + new URL(document.location.href).searchParams.get(oParam);
423
+ }
424
+ });
425
+
426
+ sSampleSearchParams = (sSampleSearchParams === "" ? "?" : sSampleSearchParams + "&") +
427
+ "sap-ui-xx-sample-id=" + sSampleId
428
+ + "&sap-ui-xx-sample-origin=" + sSampleOrigin + sSampleVersion
429
+ + "&sap-ui-xx-dk-origin=" + window.location.origin;
430
+
431
+ this.sIFrameUrl = ResourcesUtil.getResourceOrigin() + "/resources/sap/ui/documentation/sdk/index.html" + sSampleSearchParams;
432
+
433
+ if (this._oHtmlControl) {
434
+ this._oHtmlControl.destroy();
474
435
  }
436
+
437
+ var fnMessage = function (eMessage) {
438
+ if (eMessage.data.type === "INIT") {
439
+ var oConfiguration = sap.ui.getCore().getConfiguration();
440
+ if (eMessage.data.config && eMessage.data.config.sample && eMessage.data.config.sample.iframe) {
441
+ sSampleId = this._sId;
442
+ vIframe = eMessage.data.config.sample.iframe;
443
+ sIframePath = this._resolveIframePath(sSampleId, vIframe);
444
+
445
+ //vlaid only for samples that contains own index.html
446
+ // strip the file extension to be able to use jQuery.sap.getModulePath
447
+ aFileNameMatches = rExtractFilename.exec(vIframe);
448
+ sFileName = (aFileNameMatches && aFileNameMatches.length > 1 ? aFileNameMatches[1] : vIframe);
449
+ sFileEnding = rStripUI5Ending.exec(sFileName)[0];
450
+ var sIframeWithoutUI5Ending = sFileName.replace(rStripUI5Ending, "");
451
+
452
+ // combine namespace with the file name again
453
+ this.sIFrameUrl = (sap.ui.require.toUrl((sIframePath + "/" + sIframeWithoutUI5Ending).replace(/\./g, "/")) + sFileEnding || ".html")
454
+ + "?sap-ui-theme=" + sap.ui.getCore().getConfiguration().getTheme();
455
+ this._oHtmlControl.getDomRef().src = this.sIFrameUrl;
456
+ }
457
+ this._oHtmlControl.getDomRef().contentWindow.postMessage({
458
+ type: "SETTINGS",
459
+ reason: "set",
460
+ data: {
461
+ "density": this.getOwnerComponent().getContentDensityClass(),
462
+ "RTL": oConfiguration.getRTL(),
463
+ "theme": oConfiguration.getTheme()
464
+ }
465
+ }, this.getOwnerComponent()._sSampleIframeOrigin);
466
+ this.fResolve(eMessage.data.config.sample);
467
+ } else if (eMessage.data.type === "ERR") {
468
+ this.fReject(eMessage.data.data.msg);
469
+ } else if (eMessage.data.type === "RTA") {
470
+ this._loadRTA.call(this);
471
+ }
472
+ }.bind(this);
473
+
474
+ this._oHtmlControl = new HTML({
475
+ id : "sampleFrame",
476
+ content : '<iframe src="' + this.sIFrameUrl + '" id="sampleFrame" frameBorder="0"></iframe>'
477
+ }).addEventDelegate({
478
+ onBeforeRendering: function () {
479
+ window.removeEventListener("message", fnMessage);
480
+ }
481
+ })
482
+ .addEventDelegate({
483
+ onAfterRendering: function () {
484
+ window.addEventListener("message", fnMessage);
485
+ }
486
+ });
487
+
475
488
  this.byId("page").removeAllContent();
476
489
  this.byId("page").addContent(this._oHtmlControl);
477
490
 
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
 
20
20
  var OPENUI5_LIBS = ["sap.ui.core", "sap.ui.dt", "sap.m", "sap.ui.fl", "sap.ui.layout", "sap.ui.mdc", "sap.ui.unified",
21
21
  "sap.f", "sap.ui.rta", "sap.ui.commons", "sap.ui.codeeditor", "sap.ui.table", "sap.uxap", "sap.ui.integration",
22
- "sap.tnt", "sap.ui.ux3", "sap.ui.suite"];
22
+ "sap.tnt", "sap.ui.ux3", "sap.ui.suite", "sap.ui.webc.common", "sap.ui.webc.fiori", "sap.ui.webc.main" ];
23
23
  var SAPUI5_LIBS = ["sap.ushell", "sap.fe", "sap.viz", "sap.suite.ui.microchart", "sap.chart", "sap.ui.comp", "sap.ui.generic.app",
24
24
  "sap.fe.navigation", "sap.suite.ui.generic.template", "sap.ui.richtexteditor", "sap.suite.ui.commons", "sap.ui.export",
25
25
  "sap.ndc", "sap.me", "sap.fe.core", "sap.fe.macros", "sap.collaboration", "sap.fe.templates", "sap.ui.generic.template",
@@ -57,7 +57,7 @@ sap.ui.define([], function() {
57
57
  },
58
58
 
59
59
  _getExpectedResponseType: function(sResourceUrl, bTreatAsText) {
60
- if (sResourceUrl.match(/.+(.js|.json|.less|.xml|.html|.properties|.css|.svg|.md|.txt|.yaml|.yml)$/i) || bTreatAsText) { // supported text types
60
+ if (sResourceUrl.match(/.+(.js|.json|.less|.xml|.html|.properties|.css|.svg|.md|.txt|.feature|.yaml|.yml)$/i) || bTreatAsText) { // supported text types
61
61
  return "text";
62
62
  }
63
63
 
@@ -69,6 +69,11 @@ sap.ui.define([],
69
69
  "id": "flexibleProgrammingModelExplorer",
70
70
  "text": "Flexible Programming Model Explorer",
71
71
  "href": "https://sapui5.hana.ondemand.com/test-resources/sap/fe/core/fpmExplorer/index.html#/overview/introduction"
72
+ },
73
+ {
74
+ "id": "accessibilityGuide",
75
+ "text": "Accessibility Guide",
76
+ "href": "test-resources/sap/m/demokit/accessibilityGuide/webapp/index.html"
72
77
  }
73
78
  ];
74
79
 
@@ -3,6 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval';"/>
6
7
  <title>SAPUI5 Navigation</title>
7
8
  <script>
8
9
 
@@ -10,29 +11,42 @@
10
11
  return new window.URLSearchParams(window.location.search).get(sParamName);
11
12
  };
12
13
 
13
- var encodeOrigin = function (sResourceOrigin) {
14
- return sResourceOrigin
15
- .replaceAll("&", "&amp;")
16
- .replaceAll("<", "&lt;")
17
- .replaceAll(">", "&gt;")
18
- .replaceAll("\"", "&quot;")
19
- .replaceAll("’", "&#x27;");
20
- };
21
-
22
14
  var sSampleId = getUrlParam('sap-ui-xx-sample-id'),
23
15
  sOrigin = getUrlParam('sap-ui-xx-sample-origin'),
24
- oPath = {};
16
+ sPresetTheme = getUrlParam('sap-ui-theme') || 'sap_fiori_3',
17
+ sPresetRTL = getUrlParam('sap-ui-rtl') || false,
18
+ oPath = {},
19
+ sOriginEncoded,
20
+ oBaseTag,
21
+ oScriptTag;
25
22
 
26
- if (!sOrigin || sOrigin == ".") {
27
- sOrigin = window.location.origin + (window.location.pathname.includes("testsuite") ? "/testsuite" : "");
23
+ if (sOrigin === "" || sOrigin === ".") {
24
+ var sHref = document.location.href;
25
+ sOrigin = sHref.substring(0, sHref.lastIndexOf('resources/sap/ui/documentation/sdk/') - 1);
26
+ } else {
27
+ sOrigin = new URL(sOrigin, document.baseURI).pathname;
28
28
  }
29
29
 
30
- oPath["sap/ui/demo/mock"] = sOrigin + "/test-resources/sap/ui/documentation/sdk";
30
+ sOriginEncoded = encodeURI(sOrigin);
31
+
32
+ oPath["sap/ui/demo/mock"] = sOriginEncoded + "/test-resources/sap/ui/documentation/sdk";
31
33
  oPath["test-resources/sap/ui/documentation/sdk"] = ".";
32
34
 
33
- document.write("<script src=" + encodeOrigin(sOrigin) + '/resources/sap-ui-core.js' + " id='sap-ui-bootstrap' " +
34
- "data-sap-ui-libs='sap.m' data-sap-ui-bindingSyntax='complex' data-sap-ui-theme='sap_fiori_3' data-sap-ui-compatVersion='edge' data-sap-ui-resourceroots=" + JSON.stringify(oPath) + "></scr" + "ipt>");
35
- document.write("<base href=" + encodeOrigin(sOrigin) + "/>");
35
+ oBaseTag = document.createElement("base");
36
+ oBaseTag.setAttribute("href", sOriginEncoded + "/");
37
+ document.head.appendChild(oBaseTag);
38
+
39
+ oScriptTag = document.createElement("script");
40
+ oScriptTag.setAttribute("src", sOriginEncoded + "/resources/sap-ui-core.js");
41
+ oScriptTag.setAttribute("id", "sap-ui-bootstrap");
42
+ oScriptTag.setAttribute("data-sap-ui-compatVersion", "edge");
43
+ oScriptTag.dataset.sapUiAsync = true;
44
+ oScriptTag.dataset.sapUiLibs = "sap.m";
45
+ oScriptTag.dataset.sapUiRtl = sPresetRTL;
46
+ oScriptTag.dataset.sapUiResourceroots = JSON.stringify(oPath);
47
+ oScriptTag.dataset.sapUiTheme = sPresetTheme;
48
+
49
+ document.write(oScriptTag.outerHTML);
36
50
  </script>
37
51
  </head>
38
52
  <body class="sapUiBody sapUiSizeCompact" id="content">
@@ -41,11 +55,73 @@
41
55
  sap.ui.require([
42
56
  "sap/ui/core/ComponentContainer",
43
57
  "sap/ui/core/Component",
58
+ "sap/ui/documentation/library",
44
59
  "sap/ui/documentation/sdk/controller/util/ControlsInfo",
45
60
  "sap/base/Log"
46
- ], function (ComponentContainer, Component, ControlsInfo, Log) {
61
+ ], function (ComponentContainer, Component, library, ControlsInfo, Log) {
62
+
63
+ var oLibraryInfoSingleton = library._getLibraryInfoSingleton();
64
+ oLibraryInfoSingleton.getResourceUrl = undefined;
65
+
66
+ var loadInfo = function() {
67
+ return new Promise(function (resolve) {
68
+ var fnCallback = function(oAppInfo) {
69
+ if (oAppInfo && oAppInfo.libraries) {
70
+ var aLibPromises = [];
71
+ oAppInfo.libraries.forEach(function(oLib) {
72
+ var oLibPromise = new Promise(function(innResolve) {
73
+ oLibraryInfoSingleton._getDocuIndex(oLib.name, function(oDoc) {
74
+ if (!oDoc.explored) {
75
+ innResolve();
76
+ return;
77
+ }
78
+
79
+ if (Array.isArray(oDoc.explored.samplesRef)) {
80
+ // register an array of namespaces
81
+ oDoc.explored.samplesRef.forEach(function (oItem) {
82
+ var paths = {};
83
+ paths[oItem.namespace.replace(/\./g, "/")] = "" + (oItem.ref || ".");
84
+ sap.ui.loader.config({paths: paths});
85
+ });
86
+ } else {
87
+ // register a single namespace
88
+
89
+ var paths = {};
90
+ paths[oDoc.explored.samplesRef.namespace.replace(/\./g, "/")] = "" + (oDoc.explored.samplesRef.ref || ".");
91
+ sap.ui.loader.config({paths: paths});
92
+ }
93
+ innResolve();
94
+ });
95
+ });
96
+ aLibPromises.push(oLibPromise);
97
+ });
98
+ }
99
+ Promise.all(aLibPromises).then(function(){
100
+ resolve();
101
+ })
102
+ };
103
+
104
+ jQuery.ajax({
105
+ url: sap.ui.require.toUrl("sap-ui-version.json"),
106
+ dataType: "json",
107
+ error: function(xhr, status, e) {
108
+ Log.error("failed to load library list from '" + sUrl + "': " + status + ", " + e);
109
+ resolve();
110
+ },
111
+ success : function(oAppInfo, sStatus, oXHR) {
112
+ if (!oAppInfo) {
113
+ Log.error("failed to load library list from '" + sUrl + "': " + sStatus + ", Data: " + oAppInfo);
114
+ resolve();
115
+ return;
116
+ }
117
+
118
+ fnCallback(oAppInfo);
119
+ }
120
+ });
121
+ });
122
+ }
123
+ loadInfo().then(function(){
47
124
 
48
- ControlsInfo.loadData().then(function(){
49
125
  Log.info("Samples paths added successfully");
50
126
 
51
127
  var sCompId = 'sampleComp-' + sSampleId;
@@ -155,7 +231,8 @@
155
231
  }
156
232
  }, getUrlParam('sap-ui-xx-dk-origin'));
157
233
  });
158
- })
234
+
235
+ });
159
236
  });
160
237
  });
161
238
  </script>
@@ -12,6 +12,10 @@ sap.ui.define([
12
12
  ],function(library, Log, extend, isPlainObject) {
13
13
  "use strict";
14
14
 
15
+ var IGNORED_GATEGORIES = {
16
+ Template: "Template"
17
+ };
18
+
15
19
  // function to compute the app objects for a demo object
16
20
  function createDemoAppData(oDemoAppMetadata, sLibUrl, sLibNamespace) {
17
21
  // transform simple demo app link to a configuration object
@@ -91,6 +95,11 @@ sap.ui.define([
91
95
  if (oDemo.links && oDemo.links.length > 0) {
92
96
  for (var j = 0; j < oDemo.links.length; j++) {
93
97
  var oDemoAppData = createDemoAppData(oDemo.links[j], oDocIndicies[aLibs[i]].libraryUrl, oDemo.text);
98
+
99
+ if (IGNORED_GATEGORIES[oDemoAppData.category]) {
100
+ continue;
101
+ }
102
+
94
103
  oData.demoApps.push(oDemoAppData);
95
104
 
96
105
  // push demo app into helper structure
@@ -427,6 +427,25 @@
427
427
  </VBox>
428
428
  </f:content>
429
429
  </f:Card>
430
+ <!-- Accessibility Guide -->
431
+ <f:Card class="threeColumnLayoutCard" visible="{=! (${device>/system/phone} || ${device>/browser/msie}) }">
432
+ <f:content>
433
+ <VBox justifyContent="SpaceBetween">
434
+ <VBox class="sapUiSmallMargin toolspageCardInfo">
435
+ <html:div class="sapUIDisclaimerLink sapUiSmallMarginBottom">
436
+ <custom:TitleLink
437
+ level="H1"
438
+ titleStyle="H1"
439
+ text="{/accessibilityGuide/text}"
440
+ href="{/accessibilityGuide/href}"
441
+ target="_blank"/>
442
+ </html:div>
443
+ <Text class="sapUiSmallMarginBottom" text="{i18n>TOOLS_CARD_15_TEXT}" />
444
+ </VBox>
445
+ <Image src="./resources/sap/ui/documentation/sdk/images/tools/AccessibilityGuide.png" class="toolsPageImage" alt="{i18n>TOOLS_CARD_15_IMG_ALT}"/>
446
+ </VBox>
447
+ </f:content>
448
+ </f:Card>
430
449
  </l:Grid>
431
450
  <l:BlockLayout>
432
451
  <l:BlockLayoutRow>