@openui5/sap.tnt 1.132.1 → 1.133.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.reuse/dep5 CHANGED
@@ -235,8 +235,8 @@ License: Apache-2.0
235
235
  Comment: these files belong to: Google-Caja JS HTML Sanitizer
236
236
 
237
237
  Files: src/sap.ui.core/src/sap/ui/core/cldr/*
238
- Copyright: 1991-2023 Unicode, Inc.
239
- License: Unicode-DFS-2015
238
+ Copyright: 1991-2024 Unicode, Inc.
239
+ License: LicenseRef-Unicode-3.0
240
240
  Comment: these files belong to: Unicode Common Locale Data Repository
241
241
 
242
242
  Files: src/sap.ui.core/src/sap/ui/thirdparty/mobiscroll/*
@@ -0,0 +1,39 @@
1
+ UNICODE LICENSE V3
2
+
3
+ COPYRIGHT AND PERMISSION NOTICE
4
+
5
+ Copyright © 1991-2024 Unicode, Inc.
6
+
7
+ NOTICE TO USER: Carefully read the following legal agreement. BY
8
+ DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
9
+ SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
10
+ TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
11
+ DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
12
+
13
+ Permission is hereby granted, free of charge, to any person obtaining a
14
+ copy of data files and any associated documentation (the "Data Files") or
15
+ software and any associated documentation (the "Software") to deal in the
16
+ Data Files or Software without restriction, including without limitation
17
+ the rights to use, copy, modify, merge, publish, distribute, and/or sell
18
+ copies of the Data Files or Software, and to permit persons to whom the
19
+ Data Files or Software are furnished to do so, provided that either (a)
20
+ this copyright and permission notice appear with all copies of the Data
21
+ Files or Software, or (b) this copyright and permission notice appear in
22
+ associated Documentation.
23
+
24
+ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
25
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
27
+ THIRD PARTY RIGHTS.
28
+
29
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
30
+ BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
31
+ OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
32
+ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
33
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
34
+ FILES OR SOFTWARE.
35
+
36
+ Except as contained in this notice, the name of a copyright holder shall
37
+ not be used in advertising or otherwise to promote the sale, use or other
38
+ dealings in these Data Files or Software without prior written
39
+ authorization of the copyright holder.
package/THIRDPARTY.txt CHANGED
@@ -187,10 +187,10 @@ License: Apache-2.0
187
187
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
188
188
  Contained in: src/sap.ui.core/src/sap/ui/thirdparty/caja-html-sanitizer.js
189
189
 
190
- Component: Unicode Common Locale Data Repository, version: 44
191
- Copyright: 1991-2023 Unicode, Inc.
192
- License: Unicode-DFS-2015
193
- License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Unicode-DFS-2015.txt
190
+ Component: Unicode Common Locale Data Repository, version: 46.1.0
191
+ Copyright: 1991-2024 Unicode, Inc.
192
+ License: LicenseRef-Unicode-3.0
193
+ License Text: https://github.com/SAP/openui5/blob/master/LICENSES/LicenseRef-Unicode-3.0.txt
194
194
  Contained in: src/sap.ui.core/src/sap/ui/core/cldr/*
195
195
 
196
196
  Component: MobiScroll, version: 2.9.0
@@ -342,7 +342,7 @@ License: ISC
342
342
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/ISC.txt
343
343
  Contained in: src/sap.ui.core/src/sap/ui/core/cache/LRUPersistentCache.js
344
344
 
345
- Component: Time Zone Database, version: 2023d
345
+ Component: Time Zone Database, version: 2024b
346
346
  Copyright: Arthur David Olson, Paul Eggert and other contributors
347
347
  License: LicenseRef-tzdata-PublicDomain
348
348
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/LicenseRef-tzdata-PublicDomain.txt
@@ -966,6 +966,55 @@ END of license: LicenseRef-JSONinJSPublicDomain
966
966
  =================================
967
967
 
968
968
 
969
+ =================================
970
+ BEGIN of license: LicenseRef-Unicode-3.0
971
+ =================================
972
+
973
+ UNICODE LICENSE V3
974
+
975
+ COPYRIGHT AND PERMISSION NOTICE
976
+
977
+ Copyright © 1991-2024 Unicode, Inc.
978
+
979
+ NOTICE TO USER: Carefully read the following legal agreement. BY
980
+ DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
981
+ SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
982
+ TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
983
+ DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
984
+
985
+ Permission is hereby granted, free of charge, to any person obtaining a
986
+ copy of data files and any associated documentation (the "Data Files") or
987
+ software and any associated documentation (the "Software") to deal in the
988
+ Data Files or Software without restriction, including without limitation
989
+ the rights to use, copy, modify, merge, publish, distribute, and/or sell
990
+ copies of the Data Files or Software, and to permit persons to whom the
991
+ Data Files or Software are furnished to do so, provided that either (a)
992
+ this copyright and permission notice appear with all copies of the Data
993
+ Files or Software, or (b) this copyright and permission notice appear in
994
+ associated Documentation.
995
+
996
+ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
997
+ KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
998
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
999
+ THIRD PARTY RIGHTS.
1000
+
1001
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
1002
+ BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
1003
+ OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
1004
+ WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
1005
+ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
1006
+ FILES OR SOFTWARE.
1007
+
1008
+ Except as contained in this notice, the name of a copyright holder shall
1009
+ not be used in advertising or otherwise to promote the sale, use or other
1010
+ dealings in these Data Files or Software without prior written
1011
+ authorization of the copyright holder.
1012
+
1013
+ =================================
1014
+ END of license: LicenseRef-Unicode-3.0
1015
+ =================================
1016
+
1017
+
969
1018
  =================================
970
1019
  BEGIN of license: LicenseRef-tzdata-PublicDomain
971
1020
  =================================
@@ -1009,64 +1058,3 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1009
1058
  END of license: MIT
1010
1059
  =================================
1011
1060
 
1012
-
1013
- =================================
1014
- BEGIN of license: Unicode-DFS-2015
1015
- =================================
1016
-
1017
- UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
1018
-
1019
- Unicode Data Files include all data files under the directories http://www.unicode.org/Public/,
1020
- http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. Unicode
1021
- Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/.
1022
- Software includes any source code published in the Unicode Standard or under
1023
- the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/,
1024
- and http://www.unicode.org/cldr/data/.
1025
-
1026
- NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING,
1027
- INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"),
1028
- AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND
1029
- BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE,
1030
- DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
1031
-
1032
- COPYRIGHT AND PERMISSION NOTICE
1033
-
1034
- Copyright © 1991-2015 Unicode, Inc. All rights reserved. Distributed under
1035
- the Terms of Use in http://www.unicode.org/copyright.html.
1036
-
1037
- Permission is hereby granted, free of charge, to any person obtaining a copy
1038
- of the Unicode data files and any associated documentation (the "Data Files")
1039
- or Unicode software and any associated documentation (the "Software") to deal
1040
- in the Data Files or Software without restriction, including without limitation
1041
- the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
1042
- of the Data Files or Software, and to permit persons to whom the Data Files
1043
- or Software are furnished to do so, provided that
1044
-
1045
- (a) this copyright and permission notice appear with all copies of the Data
1046
- Files or Software,
1047
-
1048
- (b) this copyright and permission notice appear in associated documentation,
1049
- and
1050
-
1051
- (c) there is clear notice in each modified Data File or in the Software as
1052
- well as in the documentation associated with the Data File(s) or Software
1053
- that the data or software has been modified.
1054
-
1055
- THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
1056
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1057
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
1058
- IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
1059
- BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
1060
- OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
1061
- IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
1062
- OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
1063
-
1064
- Except as contained in this notice, the name of a copyright holder shall not
1065
- be used in advertising or otherwise to promote the sale, use or other dealings
1066
- in these Data Files or Software without prior written authorization of the
1067
- copyright holder.
1068
-
1069
- =================================
1070
- END of license: Unicode-DFS-2015
1071
- =================================
1072
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.tnt",
3
- "version": "1.132.1",
3
+ "version": "1.133.0",
4
4
  "description": "OpenUI5 UI Library sap.tnt",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,7 +14,7 @@
14
14
  "url": "https://github.com/SAP/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.m": "1.132.1",
18
- "@openui5/sap.ui.core": "1.132.1"
17
+ "@openui5/sap.m": "1.133.0",
18
+ "@openui5/sap.ui.core": "1.133.0"
19
19
  }
20
20
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2025 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.132.1</version>
9
+ <version>1.133.0</version>
10
10
 
11
11
  <documentation>SAPUI5 library with responsive controls.</documentation>
12
12
 
@@ -48,7 +48,7 @@ sap.ui.define([
48
48
  * @extends sap.ui.core.Control
49
49
  *
50
50
  * @author SAP SE
51
- * @version 1.132.1
51
+ * @version 1.133.0
52
52
  *
53
53
  * @constructor
54
54
  * @public
@@ -54,7 +54,7 @@ sap.ui.define([
54
54
  * @extends sap.ui.core.Control
55
55
  *
56
56
  * @author SAP SE
57
- * @version 1.132.1
57
+ * @version 1.133.0
58
58
  *
59
59
  * @constructor
60
60
  * @public
@@ -296,12 +296,18 @@ sap.ui.define([
296
296
  items: this._createNavigationMenuItems(),
297
297
  itemSelected: (oEvent) => {
298
298
  const oMenuItem = oEvent.getParameter("item");
299
- this._selectItem({
300
- item: oMenuItem._navItem
301
- });
302
-
303
- const oSelectedItemDomRef = this.getDomRef().querySelector(".sapTntNLISelected [tabindex]");
304
- oSelectedItemDomRef?.focus();
299
+ const oNavigationItem = oMenuItem._navItem;
300
+
301
+ if (oNavigationItem.getSelectable()) {
302
+ this._selectItem({
303
+ item: oNavigationItem
304
+ });
305
+ oNavigationItem._firePress({
306
+ item: oNavigationItem
307
+ });
308
+ const oSelectedItemDomRef = this.getDomRef().querySelector(".sapTntNLISelected [tabindex]");
309
+ oSelectedItemDomRef?.focus();
310
+ }
305
311
 
306
312
  oMenu.close();
307
313
  oMenu.destroy();
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @extends sap.tnt.NavigationListItemBase
22
22
  *
23
23
  * @author SAP SE
24
- * @version 1.132.1
24
+ * @version 1.133.0
25
25
  *
26
26
  * @constructor
27
27
  * @public
@@ -36,9 +36,14 @@ sap.ui.define([
36
36
  // shortcut for sap.ui.core.TextDirection
37
37
  var TextDirection = coreLibrary.TextDirection;
38
38
 
39
+ // shortcut for sap.tnt.NavigationListItemDesign
40
+ var NavigationListItemDesign = library.NavigationListItemDesign;
41
+
42
+ // shortcut for sap.ui.core.aria.HasPopup
43
+ var AriaHasPopup = coreLibrary.aria.HasPopup;
44
+
39
45
  const EXPAND_ICON_SRC = "sap-icon://navigation-right-arrow";
40
46
  const COLLAPSE_ICON_SRC = "sap-icon://navigation-down-arrow";
41
- const SELECTION_INDICATOR_ICON_SRC = "sap-icon://circle-task-2";
42
47
 
43
48
  /**
44
49
  * Constructor for a new NavigationListItem.
@@ -52,7 +57,7 @@ sap.ui.define([
52
57
  * @extends sap.tnt.NavigationListItemBase
53
58
  *
54
59
  * @author SAP SE
55
- * @version 1.132.1
60
+ * @version 1.133.0
56
61
  *
57
62
  * @constructor
58
63
  * @public
@@ -98,7 +103,21 @@ sap.ui.define([
98
103
  * <code>_self</code>, <code>_top</code>, <code>_blank</code>, <code>_parent</code>, <code>_search</code>.
99
104
  * Alternatively, a frame name can be entered. This property is only used when the <code>href</code> property is set.
100
105
  */
101
- target: { type: "string", group: "Behavior", defaultValue: null }
106
+ target: { type: "string", group: "Behavior", defaultValue: null },
107
+
108
+ /**
109
+ * Specifies if the item has a special design.
110
+ * NOTE: If <code>design</code> is not <code>NavigationListItemDesign.Default</code> sub-items can't be added.
111
+ * @since 1.133.0
112
+ * @experimental Behavior might change.
113
+ */
114
+ design: { type: "sap.tnt.NavigationListItemDesign", group: "Behavior", defaultValue: NavigationListItemDesign.Default },
115
+
116
+ /**
117
+ * Specifies the value of the <code>aria-haspopup</code> attribute
118
+ * @since 1.133.0
119
+ */
120
+ ariaHasPopup: { type: "sap.ui.core.aria.HasPopup", group: "Accessibility", defaultValue: AriaHasPopup.None }
102
121
  },
103
122
  defaultAggregation: "items",
104
123
  aggregations: {
@@ -297,10 +316,15 @@ sap.ui.define([
297
316
  this.getDomRef().classList.add("sapTntNLIActive");
298
317
  }
299
318
 
319
+ //onkeyup is not called when new page is opened
320
+ if (this.getHref() && this.getTarget() === "_blank") {
321
+ this.getDomRef().classList.remove("sapTntNLIActive");
322
+ }
323
+
300
324
  NavigationListItemBase.prototype.onkeydown.apply(this, arguments);
301
325
  };
302
326
 
303
- NavigationListItemBase.prototype.onkeyup = function (oEvent) {
327
+ NavigationListItem.prototype.onkeyup = function (oEvent) {
304
328
  if (oEvent.isMarked("subItem")) {
305
329
  return;
306
330
  }
@@ -421,6 +445,7 @@ sap.ui.define([
421
445
  bDisabled = !this.getEnabled() || !this.getAllParentsEnabled(),
422
446
  bExpanded = this.getExpanded(),
423
447
  bSelectable = this.getSelectable(),
448
+ sDesign = this.getDesign(),
424
449
  bExpanderVisible = !!aItems.length && this.getHasExpander();
425
450
 
426
451
  oRM.openStart("div")
@@ -447,6 +472,15 @@ sap.ui.define([
447
472
  }
448
473
 
449
474
  const oLinkAriaProps = {};
475
+
476
+ if (this.getAriaHasPopup() !== AriaHasPopup.None) {
477
+ oLinkAriaProps.haspopup = this.getAriaHasPopup();
478
+ }
479
+
480
+ if (sDesign === NavigationListItemDesign.Action) {
481
+ oRM.class("sapTntNLIAction");
482
+ }
483
+
450
484
  if (!bListExpanded) {
451
485
  oLinkAriaProps.role = bSelectable ? "menuitemradio" : "menuitem";
452
486
 
@@ -460,12 +494,21 @@ sap.ui.define([
460
494
 
461
495
  if (bSelectable) {
462
496
  oLinkAriaProps.checked = oNavigationList._selectedItem === this;
497
+ oLinkAriaProps.selected = bSelected;
498
+ } else {
499
+ oLinkAriaProps.selected = false;
463
500
  }
464
501
 
465
502
  oLinkAriaProps.roledescription = this._resourceBundleTnt.getText("NAVIGATION_LIST_ITEM_ROLE_DESCRIPTION_MENUITEM");
466
503
  } else {
467
504
  oLinkAriaProps.role = "treeitem";
468
505
 
506
+ if (bSelectable) {
507
+ oLinkAriaProps.selected = bSelected;
508
+ } else {
509
+ oLinkAriaProps.selected = false;
510
+ }
511
+
469
512
  if (bSelected) {
470
513
  oLinkAriaProps.current = "page";
471
514
  }
@@ -487,8 +530,6 @@ sap.ui.define([
487
530
  this._renderExternalLinkIcon(oRM);
488
531
 
489
532
  if (bListExpanded) {
490
- oRM.icon(SELECTION_INDICATOR_ICON_SRC, ["sapTntNLISelectionIndicator"]);
491
-
492
533
  const oIcon = this._getExpandIconControl();
493
534
  oIcon.setVisible(bExpanderVisible)
494
535
  .setSrc(bExpanded ? COLLAPSE_ICON_SRC : EXPAND_ICON_SRC)
@@ -536,7 +577,8 @@ sap.ui.define([
536
577
 
537
578
  const oLinkAriaProps = {
538
579
  role: "treeitem",
539
- current: this._isListExpanded() && bSelected ? "page" : undefined
580
+ current: this._isListExpanded() && bSelected ? "page" : undefined,
581
+ selected: bSelected
540
582
  };
541
583
  this._renderStartLink(oRM, oLinkAriaProps, bDisabled);
542
584
 
@@ -544,8 +586,6 @@ sap.ui.define([
544
586
 
545
587
  this._renderText(oRM);
546
588
 
547
- oRM.icon(SELECTION_INDICATOR_ICON_SRC, ["sapTntNLISelectionIndicator"]);
548
-
549
589
  this._renderExternalLinkIcon(oRM);
550
590
 
551
591
  this._renderCloseLink(oRM);
@@ -707,8 +747,10 @@ sap.ui.define([
707
747
  if (bListExpanded) {
708
748
  if (bSelected) {
709
749
  oFocusRef.setAttribute("aria-current", "page");
750
+ oFocusRef.setAttribute("aria-selected", "true");
710
751
  } else {
711
752
  oFocusRef.removeAttribute("aria-current");
753
+ oFocusRef.setAttribute("aria-selected", "false");
712
754
  }
713
755
  } else {
714
756
  oFocusRef.setAttribute("aria-checked", bSelected ? "true" : "false");
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @extends sap.ui.core.Item
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.132.1
32
+ * @version 1.133.0
33
33
  *
34
34
  * @constructor
35
35
  * @public
@@ -72,6 +72,20 @@ sap.ui.define([
72
72
  * @since 1.121
73
73
  */
74
74
  _externalLinkIconControl: { type: "sap.ui.core.Icon", multiple: false, visibility: "hidden" }
75
+ },
76
+ events: {
77
+ /**
78
+ * Fired when an item is pressed.
79
+ * @since 1.133
80
+ */
81
+ press: {
82
+ parameters: {
83
+ /**
84
+ * The pressed item.
85
+ */
86
+ item: { type: "sap.ui.core.Item" }
87
+ }
88
+ }
75
89
  }
76
90
  }
77
91
  });
@@ -318,6 +332,14 @@ sap.ui.define([
318
332
  * @returns {boolean} whether the event was handled
319
333
  */
320
334
  NavigationListItemBase.prototype.ontap = function (oEvent) {
335
+ const oParams = {
336
+ item: this
337
+ };
338
+
339
+ if (this.getEnabled() && !(oEvent.srcControl.isA("sap.ui.core.Icon")) && !this._isOverflow && !(!this.getNavigationList().getExpanded() && this.getItems().length)) {
340
+ this._firePress(oParams);
341
+ }
342
+
321
343
  if (oEvent.isMarked("subItem")) {
322
344
  return true;
323
345
  }
@@ -335,6 +357,15 @@ sap.ui.define([
335
357
  return false;
336
358
  };
337
359
 
360
+ /**
361
+ * Fires a press event on an item.
362
+ * @param {object} oParams The event parameters
363
+ * @private
364
+ */
365
+ NavigationListItemBase.prototype._firePress = function(oParams) {
366
+ this.firePress(oParams);
367
+ };
368
+
338
369
  /**
339
370
  * Handles the logic for expanding/collapsing the child items.
340
371
  *
@@ -365,6 +396,9 @@ sap.ui.define([
365
396
  * @returns {string} CSS selector of the target
366
397
  */
367
398
  NavigationListItemBase.prototype._getExpanderActivationTarget = function () {
399
+ if (!this.getSelectable() && !(this.getHref() && this.getTarget() === "_blank")) {
400
+ return ".sapTntNLIFirstLevel";
401
+ }
368
402
  return ".sapTntNLIExpandIcon";
369
403
  };
370
404
 
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @extends sap.ui.unified.MenuItem
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.132.1
41
+ * @version 1.133.0
42
42
  *
43
43
  * @constructor
44
44
  * @private
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * @extends sap.ui.core.Control
34
34
  *
35
35
  * @author SAP SE
36
- * @version 1.132.1
36
+ * @version 1.133.0
37
37
  *
38
38
  * @constructor
39
39
  * @public
@@ -123,7 +123,7 @@ sap.ui.define([
123
123
  * @implements sap.tnt.IToolHeader
124
124
  *
125
125
  * @author SAP SE
126
- * @version 1.132.1
126
+ * @version 1.133.0
127
127
  *
128
128
  * @constructor
129
129
  * @public
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.core.Control
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.132.1
27
+ * @version 1.133.0
28
28
  *
29
29
  * @constructor
30
30
  * @public
@@ -41,7 +41,7 @@ sap.ui.define([
41
41
  * @extends sap.ui.core.Control
42
42
  *
43
43
  * @author SAP SE
44
- * @version 1.132.1
44
+ * @version 1.133.0
45
45
  *
46
46
  * @constructor
47
47
  * @public
@@ -22,19 +22,20 @@ sap.ui.define([
22
22
  * @namespace
23
23
  * @alias sap.tnt
24
24
  * @author SAP SE
25
- * @version 1.132.1
25
+ * @version 1.133.0
26
26
  * @since 1.36
27
27
  * @public
28
28
  */
29
29
  var thisLib = Library.init({
30
30
  apiVersion: 2,
31
31
  name : "sap.tnt",
32
- version: "1.132.1",
32
+ version: "1.133.0",
33
33
  dependencies : ["sap.ui.core", "sap.m"],
34
34
  designtime: "sap/tnt/designtime/library.designtime",
35
35
  types: [
36
36
  "sap.tnt.IllustratedMessageType",
37
- "sap.tnt.RenderMode"
37
+ "sap.tnt.RenderMode",
38
+ "sap.tnt.NavigationListItemDesign"
38
39
  ],
39
40
  interfaces: [
40
41
  "sap.tnt.IToolHeader"
@@ -82,8 +83,32 @@ sap.ui.define([
82
83
  Loose: "Loose"
83
84
  };
84
85
 
86
+ /**
87
+ * Available types for navigation list item.
88
+ * @public
89
+ * @enum {string}
90
+ * @since 1.133.0
91
+ * @experimental Behavior might change.
92
+ */
93
+ thisLib.NavigationListItemDesign = {
94
+
95
+ /**
96
+ * Navigation list item type which enables navigation or contains navigation child items, or both.
97
+ * @public
98
+ */
99
+ Default: "Default",
100
+
101
+ /**
102
+ * Navigation list item type which provides access to frequent functionality.
103
+ * @public
104
+ */
105
+ Action: "Action"
106
+ };
107
+
85
108
  // Register all above defined enums.
86
109
  DataType.registerEnum("sap.tnt.RenderMode", thisLib.RenderMode);
110
+ DataType.registerEnum("sap.tnt.NavigationListItemDesign", thisLib.NavigationListItemDesign);
111
+
87
112
 
88
113
  /**
89
114
  * Interface for controls suitable for the <code>header</code> aggregation of {@link sap.tnt.ToolPage}.
@@ -5,7 +5,6 @@
5
5
 
6
6
  @_sap_tnt_NavigationList_CollapsedWidth: 3rem;
7
7
  @_sap_tnt_NavigationList_IconColor: @sapUiContentIconColor;
8
- @_sap_tnt_NavigationList_IconFontSize: 1rem;
9
8
  @_sap_tnt_NavigationList_ExpandIconColor: @sapUiContentIconColor;
10
9
  @_sap_tnt_NavigationList_HoverBorderStyleColor: none;
11
10
  @_sap_tnt_NavigationList_HoverBorderWidth: 0;
@@ -25,6 +24,7 @@
25
24
  @_sap_tnt_NavigationList_ItemFocusBorderOffset: 1px;
26
25
  @_sap_tnt_NavigationList_ItemFocusBorderRadius: @_sap_tnt_NavigationList_ItemBorderRadius;
27
26
  @_sap_tnt_NavigationList_Collapsed_SelectedItemBackground: ~"0 100% / 100% 0.125rem" no-repeat linear-gradient(0deg, @sapUiListSelectionBorderColor, @sapUiListSelectionBorderColor), @sapUiListSelectionBackgroundColor;
27
+ @_sap_tnt_NavigationList_Collapsed_SelectedItemBackgroundRTL: @_sap_tnt_NavigationList_Collapsed_SelectedItemBackground;
28
28
  @_sap_tnt_NavigationList_SelectedItemBorderColor: @sapUiListSelectionBorderColor;
29
29
  @_sap_tnt_NavigationList_SelectedBorderStyleColor: solid @_sap_tnt_NavigationList_SelectedItemBorderColor;
30
30
  @_sap_tnt_NavigationList_SelectedBorderWidth: 0 0 0.0625rem 0;
@@ -34,10 +34,13 @@
34
34
  @_sap_tnt_NavigationList_Collapsed_GroupBorderWidth: 0;
35
35
  @_sap_tnt_NavigationList_GroupExpandedBorderWidth: @_sap_tnt_NavigationList_GroupBorderWidth;
36
36
  @_sap_tnt_NavigationList_GroupIconWidth: @_sap_tnt_NavigationList_CollapsedWidth;
37
+ @_sap_tnt_NavigationList_GroupIconWidthExpanded: @_sap_tnt_NavigationList_CollapsedWidth;
38
+ @_sap_tnt_NavigationList_GroupIconMarginLeft: 0;
39
+ @_sap_tnt_NavigationList_GroupIconMarginRight: 0;
37
40
  @_sap_tnt_NavigationList_GroupTextWeight: unset;
38
41
  @_sap_tnt_NavigationList_GroupBottomMarginInPopup: 0;
39
42
  @_sap_tnt_NavigationList_Padding: 0;
40
- @_sap_tnt_NavigationList_PaddingCompact: 0;
43
+ @_sap_tnt_NavigationList_PaddingFixed: 0;
41
44
  @_sap_tnt_NavigationList_ParentPopupPadding: 0;
42
45
  @_sap_tnt_NavigationList_ParentPopupBorderRadius: @sapUiPopoverBorderCornerRadius;
43
46
  @_sap_tnt_NavigationList_PopupItemPadding: 0 1rem;
@@ -46,13 +49,18 @@
46
49
  @_sap_tnt_NavigationList_PopupArrowBoxShadow: @sapUiContentShadow2;
47
50
  @_sap_tnt_NavigationList_PopupTitleTextSize: @sapMFontMediumSize;
48
51
  @_sap_tnt_NavigationList_PopupTitleLineHeight: normal;
49
- @_sap_tnt_NavigationList_SelectionIndicatorDisplay: none;
50
52
  @_sap_tnt_NavigationList_Collapsed_HoverOrFocusItemPadding: 0;
51
53
  @_sap_tnt_NavigationList_Collapsed_HoverOrFocusItemPaddingCompact: 0;
52
54
  @_sap_tnt_NavigationList_Collapsed_HoverOrFocusTextDisplay: none;
53
55
  @_sap_tnt_NavigationList_Collapsed_HoverOrFocusItemZIndex: 0;
54
56
  @_sap_tnt_NavigationList_Collapsed_HoverOrFocusItemPosition: relative;
55
57
  @_sap_tnt_NavigationList_Collapsed_ItemHoverBoxShadow: @_sap_tnt_SideNavigation_BoxShadow;
58
+ @_sap_tnt_NavigationList_CollapsedIconPaddingLeft: 0;
59
+ @_sap_tnt_NavigationList_NavigationIndicator: "";
60
+ @_sap_tnt_NavigationList_ExpandIconWidth: 2rem;
61
+ @_sap_tnt_NavigationList_ExpandIconMarginRight: 0;
62
+ @_sap_tnt_NavigationList_ExpandIconMarginLeft: 0;
63
+ @_sap_tnt_NavigationList_ExpandIconFontSize: 0.875rem;
56
64
 
57
65
  .sapTntNL {
58
66
  margin: 0;
@@ -62,6 +70,15 @@
62
70
  overflow: hidden auto;
63
71
  }
64
72
 
73
+ .sapTntSideNavigationFixed .sapTntNL {
74
+ padding: @_sap_tnt_NavigationList_PaddingFixed;
75
+ }
76
+
77
+ .sapTntSideNavigation:not(.sapTntSideNavigationNotExpanded) .sapTntSideNavigationFixed .sapTntNLI.sapTntNLIFirstLevel:first-of-type {
78
+ // add 2px margin to make focus border visible
79
+ margin-top: 0.125rem;
80
+ }
81
+
65
82
  .sapTntNL.sapTntNLCollapsed {
66
83
  overflow: visible;
67
84
  display: flex;
@@ -121,7 +138,7 @@
121
138
 
122
139
  .sapTntNLIIcon {
123
140
  color: @_sap_tnt_NavigationList_IconColor;
124
- font-size: @_sap_tnt_NavigationList_IconFontSize;
141
+ font-size: 1rem;
125
142
  }
126
143
 
127
144
  .sapTntNLIExpandIcon,
@@ -263,8 +280,10 @@
263
280
 
264
281
  .sapTntNL .sapTntNLIExpandIcon,
265
282
  .sapTntNLIExternalLinkIcon {
266
- min-width: 2rem;
267
- font-size: 0.875rem;
283
+ min-width: @_sap_tnt_NavigationList_ExpandIconWidth;
284
+ margin-right: @_sap_tnt_NavigationList_ExpandIconMarginRight;
285
+ margin-left: @_sap_tnt_NavigationList_ExpandIconMarginLeft;
286
+ font-size: @_sap_tnt_NavigationList_ExpandIconFontSize;
268
287
 
269
288
  pointer-events: all;
270
289
 
@@ -312,10 +331,19 @@
312
331
  .sapTntNLIText {
313
332
  display: @_sap_tnt_NavigationList_Collapsed_HoverOrFocusTextDisplay;
314
333
  }
334
+
315
335
  .sapTntNLIExternalLinkIcon,
316
336
  .sapTntNLIExpandIcon {
317
337
  display: @_sap_tnt_NavigationList_Collapsed_HoverOrFocusTextDisplay;
318
338
  }
339
+
340
+ .sapUiIcon:first-of-type::after {
341
+ display: none;
342
+ }
343
+
344
+ .sapUiIcon:first-of-type {
345
+ padding-left: 0;
346
+ }
319
347
  }
320
348
  }
321
349
 
@@ -352,27 +380,28 @@
352
380
  }
353
381
  }
354
382
 
355
- .sapTntNLISelectionIndicator {
356
- display: none;
357
- font-size: 0.5rem;
358
- color: @sapUiListSelectionBorderColor;
359
- }
360
-
361
383
  .sapTntNLISelected.sapTntNLI,
362
384
  .sapTntNLISelected .sapTntNLIFirstLevel,
363
385
  .sapTntNLISelected.sapTntNLISecondLevel,
364
386
  .sapTntNLISelected.sapTntNLISecondLevel.sapTntNLI {
365
387
  background-color: @sapUiListSelectionBackgroundColor;
388
+ }
366
389
 
367
- .sapTntNLISelectionIndicator {
368
- display: @_sap_tnt_NavigationList_SelectionIndicatorDisplay;
369
- }
390
+ .sapTntSideNavigationNotExpanded .sapTntNLIFirstLevel.sapTntNLIWithExpander .sapUiIcon {
391
+ padding-left: @_sap_tnt_NavigationList_CollapsedIconPaddingLeft; // to center the icon. Value is the width of the expander.
370
392
  }
371
393
 
372
- .sapTntNLIFirstLevel.sapTntNLIWithExpander {
373
- .sapTntNLISelectionIndicator {
374
- margin: 0 0 0 0.5rem;
375
- }
394
+
395
+ .sapTntSideNavigationNotExpanded .sapTntNLIFirstLevel.sapTntNLIWithExpander .sapUiIcon:first-of-type::after {
396
+ content: @_sap_tnt_NavigationList_NavigationIndicator;
397
+ font-size: 0.75rem;
398
+ position: relative;
399
+ bottom: 0.125rem;
400
+ left: 0.25rem;;
401
+ }
402
+ .sapTntNLIAction .sapMText,
403
+ .sapTntNLIAction .sapUiIcon {
404
+ color: @sapButton_Lite_TextColor;
376
405
  }
377
406
 
378
407
  .sapTntNLIFirstLevel:not(.sapTntNLIWithExpander) {
@@ -391,19 +420,19 @@
391
420
  background-color: @sapUiListSelectionHoverBackground;
392
421
  }
393
422
 
394
- .sapTntNL:not(.sapTntNLPopup) {
395
- .sapTntNLI,
396
- .sapTntNLSeparator {
397
- margin-bottom: @_sap_tnt_NavigationList_ItemBottomMargin;
398
- }
423
+ .sapTntNL:not(.sapTntNLPopup) .sapTntNLI {
424
+ margin-bottom: @_sap_tnt_NavigationList_ItemBottomMargin;
399
425
  }
400
426
 
401
- .sapTntNLCollapsed .sapTntNLISelected:not(.sapTntNLIDisabled):not(.sapTntNLIActive):not(:hover):not(:focus-within) {
427
+ .sapTntNLISelected:not(.sapTntNLIDisabled) {
402
428
  background: @_sap_tnt_NavigationList_Collapsed_SelectedItemBackground;
403
429
  }
404
430
 
431
+ html[dir=rtl] .sapTntNLISelected:not(.sapTntNLIDisabled) {
432
+ background: @_sap_tnt_NavigationList_Collapsed_SelectedItemBackgroundRTL;
433
+ }
434
+
405
435
  .sapTntNLGroup {
406
- height: 2rem;
407
436
  padding-inline-start: 0.5rem;
408
437
  padding-inline-end: 0.5rem;
409
438
  border-radius: @_sap_tnt_NavigationList_ItemBorderRadius;
@@ -422,37 +451,24 @@
422
451
 
423
452
  .sapTntNLGroupText {
424
453
  flex: 1 1 auto;
425
- font-size: @sapMFontSmallSize;
426
- font-family: @sapUiFontSemiboldFamily;
454
+ font-size: @sapFontSize;
455
+ font-family: @sapFontFamily;
427
456
  overflow: hidden;
428
457
  text-overflow: ellipsis;
429
458
  white-space: nowrap;
430
459
  }
431
460
 
432
461
  .sapTntNLGroupIcon {
433
- display: none;
434
462
  flex: 0 0 0%;
435
463
  }
436
464
 
437
465
  &:focus {
438
466
  outline: none;
439
467
  }
440
-
441
- &:not(.sapTntNLIDisabled) {
442
- &:focus,
443
- &:hover,
444
- &:active {
445
- padding-inline-end: 0rem;
446
-
447
- .sapTntNLGroupIcon {
448
- display: block;
449
- }
450
- }
451
- }
452
468
  }
453
469
 
454
470
  .sapTntNLSeparator {
455
- min-height: 0.75rem;
471
+ min-height: 0.5rem;
456
472
  }
457
473
 
458
474
  .sapTntNL > .sapTntNLSeparator:last-child {
@@ -476,6 +492,14 @@
476
492
  }
477
493
  }
478
494
 
495
+ .sapTntNL:not(.sapTntNLNoIcons):not(.sapTntNLCollapsed) {
496
+ span.sapTntNLIIcon {
497
+ min-width: @_sap_tnt_NavigationList_GroupIconWidthExpanded;
498
+ margin-left: @_sap_tnt_NavigationList_GroupIconMarginLeft;
499
+ margin-right: @_sap_tnt_NavigationList_GroupIconMarginRight
500
+ }
501
+ }
502
+
479
503
  // NavigationList without icons
480
504
  .sapTntNL.sapTntNLNoIcons:not(.sapTntNLPopup) {
481
505
 
@@ -619,7 +643,6 @@
619
643
  max-width: 1rem;
620
644
  padding-inline-end: 0.5rem;
621
645
  }
622
-
623
646
  }
624
647
 
625
648
  .sapTntNLMenu.sapUiMnu.sapUiSubmenu {
@@ -671,10 +694,6 @@
671
694
  /* Compact size */
672
695
  .sapUiSizeCompact {
673
696
 
674
- .sapTntNL {
675
- padding: @_sap_tnt_NavigationList_PaddingCompact;
676
- }
677
-
678
697
  .sapTntNL.sapTntNLCollapsed li:not(.sapTntNLSeparator) {
679
698
  min-height: @_sap_tnt_NavigationList_ItemHeightCompact + @_sap_tnt_NavigationList_ItemBottomMarginCompact;
680
699
  }
@@ -709,19 +728,8 @@
709
728
  padding-left: 0;
710
729
  }
711
730
 
712
- // NavigationList with icons
713
- .sapTntNL:not(.sapTntNLNoIcons) {
714
-
715
- span.sapTntNLIIcon {
716
- width: @_sap_tnt_NavigationList_GroupIconWidth;
717
- }
718
- }
719
-
720
- .sapTntNL:not(.sapTntNLPopup) {
721
- .sapTntNLI,
722
- .sapTntNLSeparator {
723
- margin-bottom: @_sap_tnt_NavigationList_ItemBottomMarginCompact;
724
- }
731
+ .sapTntNL:not(.sapTntNLPopup) .sapTntNLI {
732
+ margin-bottom: @_sap_tnt_NavigationList_ItemBottomMarginCompact;
725
733
  }
726
734
 
727
735
  .sapTntNLCollapsed {
@@ -101,6 +101,10 @@ html.sap-phone {
101
101
  position: relative;
102
102
  }
103
103
 
104
+ html.sap-desktop:not(.sapUiNativeScrollbars) .sapTntSideNavigation {
105
+ scrollbar-color: auto;
106
+ }
107
+
104
108
  /* Compact size
105
109
  ========================================================================== */
106
110
 
@@ -46,7 +46,6 @@
46
46
  @_sap_tnt_NavigationList_PopupArrowBoxShadow: @sapUiContentShadow2;
47
47
  @_sap_tnt_NavigationList_PopupTitleTextSize: @sapMFontMediumSize;
48
48
  @_sap_tnt_NavigationList_PopupTitleLineHeight: normal;
49
- @_sap_tnt_NavigationList_SelectionIndicatorDisplay: none;
50
49
  @_sap_tnt_NavigationList_Collapsed_HoverOrFocusItemPadding: 0;
51
50
  @_sap_tnt_NavigationList_Collapsed_HoverOrFocusItemPaddingCompact: 0;
52
51
  @_sap_tnt_NavigationList_Collapsed_HoverOrFocusTextDisplay: none;
@@ -349,37 +348,11 @@
349
348
  }
350
349
  }
351
350
 
352
- .sapTntNLISelectionIndicator {
353
- display: none;
354
- font-size: 0.5rem;
355
- color: @sapUiListSelectionBorderColor;
356
- }
357
-
358
351
  .sapTntNLISelected.sapTntNLI,
359
352
  .sapTntNLISelected .sapTntNLIFirstLevel,
360
353
  .sapTntNLISelected.sapTntNLISecondLevel,
361
354
  .sapTntNLISelected.sapTntNLISecondLevel.sapTntNLI {
362
355
  background-color: @sapUiListSelectionBackgroundColor;
363
-
364
- .sapTntNLISelectionIndicator {
365
- display: @_sap_tnt_NavigationList_SelectionIndicatorDisplay;
366
- }
367
- }
368
-
369
- .sapTntNLIFirstLevel.sapTntNLIWithExpander {
370
- .sapTntNLISelectionIndicator {
371
- margin: 0 0 0 0.5rem;
372
- }
373
- }
374
-
375
- .sapTntNLIFirstLevel:not(.sapTntNLIWithExpander) {
376
- .sapTntNLISelectionIndicator {
377
- margin: 0 0.5rem;
378
- }
379
- }
380
-
381
- .sapTntNLISecondLevel .sapTntNLISelectionIndicator {
382
- margin: 0 0.5rem;
383
356
  }
384
357
 
385
358
  .sapTntNLISelected .sapTntNLI:hover,
@@ -1,51 +0,0 @@
1
- UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
2
-
3
- Unicode Data Files include all data files under the directories http://www.unicode.org/Public/,
4
- http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. Unicode
5
- Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/.
6
- Software includes any source code published in the Unicode Standard or under
7
- the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/,
8
- and http://www.unicode.org/cldr/data/.
9
-
10
- NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING,
11
- INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"),
12
- AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND
13
- BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE,
14
- DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
15
-
16
- COPYRIGHT AND PERMISSION NOTICE
17
-
18
- Copyright © 1991-2015 Unicode, Inc. All rights reserved. Distributed under
19
- the Terms of Use in http://www.unicode.org/copyright.html.
20
-
21
- Permission is hereby granted, free of charge, to any person obtaining a copy
22
- of the Unicode data files and any associated documentation (the "Data Files")
23
- or Unicode software and any associated documentation (the "Software") to deal
24
- in the Data Files or Software without restriction, including without limitation
25
- the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
26
- of the Data Files or Software, and to permit persons to whom the Data Files
27
- or Software are furnished to do so, provided that
28
-
29
- (a) this copyright and permission notice appear with all copies of the Data
30
- Files or Software,
31
-
32
- (b) this copyright and permission notice appear in associated documentation,
33
- and
34
-
35
- (c) there is clear notice in each modified Data File or in the Software as
36
- well as in the documentation associated with the Data File(s) or Software
37
- that the data or software has been modified.
38
-
39
- THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
40
- KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
41
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
42
- IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
43
- BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
44
- OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
45
- IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
46
- OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
47
-
48
- Except as contained in this notice, the name of a copyright holder shall not
49
- be used in advertising or otherwise to promote the sale, use or other dealings
50
- in these Data Files or Software without prior written authorization of the
51
- copyright holder.