@ui5/webcomponents 1.9.0 → 1.9.2

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 (163) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/List.js +9 -5
  3. package/dist/ListItemBase.js +2 -2
  4. package/dist/TabContainer.js +28 -1
  5. package/dist/Table.js +3 -1
  6. package/dist/TextArea.js +15 -22
  7. package/dist/Tree.js +61 -45
  8. package/dist/TreeItem.js +34 -131
  9. package/dist/{TreeListItem.js → TreeItemBase.js} +143 -70
  10. package/dist/TreeItemCustom.js +102 -0
  11. package/dist/TreeList.js +43 -0
  12. package/dist/api.json +1 -1
  13. package/dist/assets/parameters-bundle.css.06e5f6af.js +1 -0
  14. package/dist/assets/parameters-bundle.css.1024d408.js +1 -0
  15. package/dist/assets/parameters-bundle.css.12ef5553.js +1 -0
  16. package/dist/assets/parameters-bundle.css.1f15a001.js +1 -0
  17. package/dist/assets/parameters-bundle.css.2c92b83f.js +1 -0
  18. package/dist/assets/parameters-bundle.css.2ff57cb9.js +1 -0
  19. package/dist/assets/parameters-bundle.css.37d45e6a.js +1 -0
  20. package/dist/assets/parameters-bundle.css.43cfec9f.js +1 -0
  21. package/dist/assets/parameters-bundle.css.50f83b44.js +1 -0
  22. package/dist/assets/parameters-bundle.css.6ac2a3ec.js +1 -0
  23. package/dist/assets/parameters-bundle.css.76ee50df.js +1 -0
  24. package/dist/assets/parameters-bundle.css.8156fdfe.js +1 -0
  25. package/dist/assets/parameters-bundle.css.828caf0e.js +1 -0
  26. package/dist/assets/parameters-bundle.css.89d7ea85.js +1 -0
  27. package/dist/assets/parameters-bundle.css.9ff9d4cd.js +1 -0
  28. package/dist/assets/parameters-bundle.css.a1f2b381.js +1 -0
  29. package/dist/assets/parameters-bundle.css.a9042929.js +1 -0
  30. package/dist/assets/parameters-bundle.css.abcd1057.js +1 -0
  31. package/dist/assets/parameters-bundle.css.b58e1801.js +1 -0
  32. package/dist/assets/parameters-bundle.css.c3acfe91.js +1 -0
  33. package/dist/assets/parameters-bundle.css.d4817fb4.js +1 -0
  34. package/dist/assets/parameters-bundle.css.dd8f8072.js +1 -0
  35. package/dist/assets/parameters-bundle.css.fe4c8069.js +1 -0
  36. package/dist/assets/parameters-bundle.css.feee54fa.js +1 -0
  37. package/dist/css/themes/TabContainer.css +1 -1
  38. package/dist/css/themes/TextArea.css +1 -1
  39. package/dist/css/themes/TreeItem.css +1 -0
  40. package/dist/css/themes/ValueStateMessage.css +1 -1
  41. package/dist/css/themes/sap_belize/parameters-bundle.css +1 -1
  42. package/dist/css/themes/sap_belize_hcb/parameters-bundle.css +1 -1
  43. package/dist/css/themes/sap_belize_hcw/parameters-bundle.css +1 -1
  44. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  45. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  46. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  47. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  48. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  49. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  50. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  51. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  52. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  53. package/dist/generated/assets/themes/sap_belize/parameters-bundle.css.json +1 -1
  54. package/dist/generated/assets/themes/sap_belize_hcb/parameters-bundle.css.json +1 -1
  55. package/dist/generated/assets/themes/sap_belize_hcw/parameters-bundle.css.json +1 -1
  56. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  57. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  58. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  59. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  60. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  61. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  62. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  63. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  64. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  65. package/dist/generated/templates/CustomListItemTemplate.lit.js +1 -1
  66. package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
  67. package/dist/generated/templates/StandardListItemTemplate.lit.js +1 -1
  68. package/dist/generated/templates/SuggestionListItemTemplate.lit.js +1 -1
  69. package/dist/generated/templates/TableRowTemplate.lit.js +2 -2
  70. package/dist/generated/templates/TableTemplate.lit.js +1 -1
  71. package/dist/generated/templates/TextAreaTemplate.lit.js +2 -2
  72. package/dist/generated/templates/TreeItemBaseTemplate.lit.js +24 -0
  73. package/dist/generated/templates/TreeItemCustomTemplate.lit.js +24 -0
  74. package/dist/generated/templates/{TreeListItemTemplate.lit.js → TreeItemTemplate.lit.js} +3 -2
  75. package/dist/generated/templates/TreeTemplate.lit.js +1 -2
  76. package/dist/generated/themes/TabContainer.css.js +1 -1
  77. package/dist/generated/themes/TextArea.css.js +1 -1
  78. package/dist/generated/themes/TreeItem.css.js +8 -0
  79. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  80. package/dist/generated/themes/sap_belize/parameters-bundle.css.js +1 -1
  81. package/dist/generated/themes/sap_belize_hcb/parameters-bundle.css.js +1 -1
  82. package/dist/generated/themes/sap_belize_hcw/parameters-bundle.css.js +1 -1
  83. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  84. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  85. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  86. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  87. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  88. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  89. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  90. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  91. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  92. package/dist/types/TabContainerBackgroundDesign.js +48 -0
  93. package/package.json +6 -6
  94. package/src/List.js +9 -5
  95. package/src/ListItem.hbs +5 -0
  96. package/src/ListItemBase.js +2 -2
  97. package/src/TabContainer.js +28 -1
  98. package/src/Table.hbs +1 -1
  99. package/src/Table.js +3 -1
  100. package/src/TableRow.hbs +2 -2
  101. package/src/TextArea.hbs +29 -28
  102. package/src/TextArea.js +15 -22
  103. package/src/Tree.hbs +8 -33
  104. package/src/Tree.js +61 -45
  105. package/src/TreeItem.hbs +13 -0
  106. package/src/TreeItem.js +34 -131
  107. package/src/{TreeListItem.hbs → TreeItemBase.hbs} +17 -10
  108. package/src/{TreeListItem.js → TreeItemBase.js} +143 -70
  109. package/src/TreeItemCustom.hbs +7 -0
  110. package/src/TreeItemCustom.js +102 -0
  111. package/src/TreeList.js +43 -0
  112. package/src/themes/TabContainer.css +19 -3
  113. package/src/themes/TextArea.css +236 -140
  114. package/src/themes/{TreeListItem.css → TreeItem.css} +49 -2
  115. package/src/themes/ValueStateMessage.css +1 -0
  116. package/src/themes/base/TabContainer-parameters.css +4 -0
  117. package/src/themes/base/TextArea-parameters.css +35 -17
  118. package/src/themes/base/ValueStateMessage-parameters.css +2 -1
  119. package/src/themes/base/sizes-parameters.css +8 -2
  120. package/src/themes/sap_belize/TabContainer-parameters.css +4 -0
  121. package/src/themes/sap_belize/TextArea-parameters.css +15 -0
  122. package/src/themes/sap_belize/parameters-bundle.css +2 -2
  123. package/src/themes/sap_belize/sizes-parameters.css +2 -0
  124. package/src/themes/sap_belize_hcb/TextArea-parameters.css +22 -4
  125. package/src/themes/sap_belize_hcw/TextArea-parameters.css +22 -4
  126. package/src/themes/sap_fiori_3_hcb/TextArea-parameters.css +18 -8
  127. package/src/themes/sap_fiori_3_hcw/TextArea-parameters.css +18 -8
  128. package/src/themes/sap_horizon/TextArea-parameters.css +31 -12
  129. package/src/themes/sap_horizon/ValueStateMessage-parameters.css +1 -0
  130. package/src/themes/sap_horizon/sizes-parameters.css +4 -0
  131. package/src/themes/sap_horizon_dark/TextArea-parameters.css +31 -12
  132. package/src/themes/sap_horizon_dark/ValueStateMessage-parameters.css +1 -0
  133. package/src/themes/sap_horizon_dark/sizes-parameters.css +6 -0
  134. package/src/themes/sap_horizon_hcb/TextArea-parameters.css +24 -10
  135. package/src/themes/sap_horizon_hcw/TextArea-parameters.css +25 -11
  136. package/src/types/TabContainerBackgroundDesign.js +48 -0
  137. package/dist/assets/parameters-bundle.css.04aa71c9.js +0 -1
  138. package/dist/assets/parameters-bundle.css.0e0c347c.js +0 -1
  139. package/dist/assets/parameters-bundle.css.13aed676.js +0 -1
  140. package/dist/assets/parameters-bundle.css.157592af.js +0 -1
  141. package/dist/assets/parameters-bundle.css.19703c05.js +0 -1
  142. package/dist/assets/parameters-bundle.css.25017933.js +0 -1
  143. package/dist/assets/parameters-bundle.css.39c4c6e3.js +0 -1
  144. package/dist/assets/parameters-bundle.css.5550ceb2.js +0 -1
  145. package/dist/assets/parameters-bundle.css.5abf669c.js +0 -1
  146. package/dist/assets/parameters-bundle.css.60956972.js +0 -1
  147. package/dist/assets/parameters-bundle.css.61a5fde8.js +0 -1
  148. package/dist/assets/parameters-bundle.css.a0a54b12.js +0 -1
  149. package/dist/assets/parameters-bundle.css.a9e84ff6.js +0 -1
  150. package/dist/assets/parameters-bundle.css.adc7c452.js +0 -1
  151. package/dist/assets/parameters-bundle.css.b0b8ad26.js +0 -1
  152. package/dist/assets/parameters-bundle.css.b6916ba6.js +0 -1
  153. package/dist/assets/parameters-bundle.css.b9f623cd.js +0 -1
  154. package/dist/assets/parameters-bundle.css.ba38c500.js +0 -1
  155. package/dist/assets/parameters-bundle.css.c64ba63b.js +0 -1
  156. package/dist/assets/parameters-bundle.css.cac9f3de.js +0 -1
  157. package/dist/assets/parameters-bundle.css.d5d27adb.js +0 -1
  158. package/dist/assets/parameters-bundle.css.ec7f0d6e.js +0 -1
  159. package/dist/assets/parameters-bundle.css.f280686f.js +0 -1
  160. package/dist/assets/parameters-bundle.css.fbd8d2ab.js +0 -1
  161. package/dist/css/themes/TreeListItem.css +0 -1
  162. package/dist/generated/js-imports/Illustrations.js +0 -103
  163. package/dist/generated/themes/TreeListItem.css.js +0 -8
package/src/TreeItem.js CHANGED
@@ -1,12 +1,17 @@
1
- import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
1
  import ValueState from "@ui5/webcomponents-base/dist/types/ValueState.js";
2
+ import TreeItemBase from "./TreeItemBase.js";
3
+ // Template
4
+ import TreeItemTemplate from "./generated/templates/TreeItemTemplate.lit.js";
5
+
6
+ // Styles
7
+ import treeItemCss from "./generated/themes/TreeItem.css.js";
3
8
 
4
9
  /**
5
10
  * @public
6
11
  */
7
12
  const metadata = {
8
13
  tag: "ui5-tree-item",
9
- properties: /** @lends sap.ui.webcomponents.main.TreeItem.prototype */ {
14
+ properties: /** @lends sap.ui.webc.main.TreeItem.prototype */ {
10
15
 
11
16
  /**
12
17
  * Defines the text of the tree item.
@@ -19,76 +24,6 @@ const metadata = {
19
24
  type: String,
20
25
  },
21
26
 
22
- /**
23
- * Defines whether the tree node is expanded or collapsed. Only has visual effect for tree nodes with children.
24
- *
25
- * @type {boolean}
26
- * @defaultvalue false
27
- * @public
28
- */
29
- expanded: {
30
- type: Boolean,
31
- },
32
- /**
33
- * Defines whether the selection of a tree node is displayed as partially selected.
34
- * <br><br>
35
- * <b>Note:</b> The indeterminate state can be set only programmatically and can’t be achieved by user
36
- * interaction, meaning that the resulting visual state depends on the values of the <code>indeterminate</code>
37
- * and <code>selected</code> properties:
38
- * <ul>
39
- * <li> If a tree node has both <code>selected</code> and <code>indeterminate</code> set to <code>true</code>, it is displayed as partially selected.
40
- * <li> If a tree node has <code>selected</code> set to <code>true</code> and <code>indeterminate</code> set to <code>false</code>, it is displayed as selected.
41
- * <li> If a tree node has <code>selected</code> set to <code>false</code>, it is displayed as not selected regardless of the value of the <code>indeterminate</code> property.
42
- * </ul>
43
- * <br>
44
- * <b>Note:</b> This property takes effect only when the <code>ui5-tree</code> is in <code>MultiSelect</code> mode.
45
- * @type {boolean}
46
- * @defaultvalue false
47
- * @public
48
- * @since 1.1.0
49
- */
50
- indeterminate: {
51
- type: Boolean,
52
- },
53
-
54
- /**
55
- * Defines whether the tree node has children, even if currently no other tree nodes are slotted inside.
56
- * <br>
57
- * <i>Note:</i> This property is useful for showing big tree structures where not all nodes are initially loaded due to performance reasons.
58
- * Set this to <code>true</code> for nodes you intend to load lazily, when the user clicks the expand button.
59
- * It is not necessary to set this property otherwise. If a tree item has children, the expand button will be displayed anyway.
60
- *
61
- * @type {boolean}
62
- * @defaultvalue false
63
- * @public
64
- */
65
- hasChildren: {
66
- type: Boolean,
67
- },
68
-
69
- /**
70
- * Defines whether the tree node is selected by the user. Only has effect if the <code>ui5-tree</code> is in one of the
71
- * following modes: in <code>SingleSelect</code>, <code>SingleSelectBegin</code>, <code>SingleSelectEnd</code> and <code>MultiSelect</code>.
72
- *
73
- * @type {boolean}
74
- * @defaultvalue false
75
- * @public
76
- */
77
- selected: {
78
- type: Boolean,
79
- },
80
-
81
- /**
82
- * If set, an icon will be displayed before the text, representing the tree item.
83
- *
84
- * @public
85
- * @type {string}
86
- * @defaultValue ""
87
- */
88
- icon: {
89
- type: String,
90
- },
91
-
92
27
  /**
93
28
  * Defines the <code>additionalText</code>, displayed in the end of the tree item.
94
29
  * @type {string}
@@ -103,7 +38,7 @@ const metadata = {
103
38
  * Defines the state of the <code>additionalText</code>.
104
39
  * <br>
105
40
  * Available options are: <code>"None"</code> (by default), <code>"Success"</code>, <code>"Warning"</code>, <code>"Information"</code> and <code>"Error"</code>.
106
- * @type {sap.ui.webcomponents.base.types.ValueState}
41
+ * @type {sap.ui.webc.base.types.ValueState}
107
42
  * @defaultvalue "None"
108
43
  * @public
109
44
  * @since 1.0.0-rc.15
@@ -112,87 +47,55 @@ const metadata = {
112
47
  type: ValueState,
113
48
  defaultValue: ValueState.None,
114
49
  },
115
-
116
- /**
117
- * Defines the accessible name of the component.
118
- *
119
- * @type {string}
120
- * @defaultvalue: ""
121
- * @public
122
- * @since 1.8.0
123
- */
124
- accessibleName: {
125
- type: String,
126
- },
127
-
128
- /**
129
- * Defines the tooltip of the component.
130
- * @type {string}
131
- * @defaultvalue ""
132
- * @private
133
- * @since 1.0.0-rc.15
134
- */
135
- title: {
136
- type: String,
137
- },
138
- },
139
- managedSlots: true,
140
- slots: /** @lends sap.ui.webcomponents.main.TreeItem.prototype */ {
141
-
142
- /**
143
- * Defines the items of this component.
144
- *
145
- * @type {sap.ui.webcomponents.main.ITreeItem[]}
146
- * @slot items
147
- * @public
148
- */
149
- "default": {
150
- propertyName: "items",
151
- type: HTMLElement,
152
- invalidateOnChildChange: true,
153
- },
154
50
  },
155
51
  };
156
52
 
157
53
  /**
158
54
  * @class
159
- *
160
55
  * <h3 class="comment-api-title">Overview</h3>
56
+ * The <code>ui5-tree-item</code> represents a node in a tree structure, shown as a <code>ui5-list</code>.
57
+ * <br>
161
58
  * This is the item to use inside a <code>ui5-tree</code>.
162
59
  * You can represent an arbitrary tree structure by recursively nesting tree items.
163
60
  *
164
- * <h3>Usage</h3>
165
- * <code>ui5-tree-item</code> is an abstract element, representing a node in a <code>ui5-tree</code>. The tree itself is rendered as a list,
166
- * and each <code>ui5-tree-item</code> is represented by a list item(<code>ui5-li-tree</code>) in that list. Therefore, you should only use
167
- * <code>ui5-tree-item</code> directly in your apps. The <code>ui5-li-tree</code> list item is internal for the list, and not intended for public use.
61
+ * <h3>CSS Shadow Parts</h3>
62
+ *
63
+ * <ui5-link target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/::part">CSS Shadow Parts</ui5-link> allow developers to style elements inside the Shadow DOM.
64
+ * <br>
65
+ * The <code>ui5-tree-item</code> exposes the following CSS Shadow Parts:
66
+ * <ul>
67
+ * <li>title - Used to style the title of the tree list item</li>
68
+ * <li>additionalText - Used to style the additionalText of the tree list item</li>
69
+ * <li>icon - Used to style the icon of the tree list item</li>
70
+ * </ul>
168
71
  *
169
72
  * <h3>ES6 Module Import</h3>
170
73
  * <code>import "@ui5/webcomponents/dist/TreeItem.js";</code>
171
74
  *
172
75
  * @constructor
173
76
  * @author SAP SE
174
- * @alias sap.ui.webcomponents.main.TreeItem
175
- * @extends sap.ui.webcomponents.base.UI5Element
77
+ * @alias sap.ui.webc.main.TreeItem
78
+ * @extends sap.ui.webc.main.TreeItemBase
176
79
  * @tagname ui5-tree-item
177
80
  * @public
178
- * @implements sap.ui.webcomponents.main.ITreeItem
81
+ * @implements sap.ui.webc.main.ITreeItem
179
82
  * @since 1.0.0-rc.8
180
83
  */
181
- class TreeItem extends UI5Element {
182
- static get metadata() {
183
- return metadata;
84
+ class TreeItem extends TreeItemBase {
85
+ static get template() {
86
+ return TreeItemTemplate;
184
87
  }
185
88
 
186
- get requiresToggleButton() {
187
- return this.hasChildren || this.items.length > 0;
89
+ static get styles() {
90
+ return [...super.styles, treeItemCss];
91
+ }
92
+
93
+ static get metadata() {
94
+ return metadata;
188
95
  }
189
96
 
190
- /**
191
- * Call this method to manually switch the <code>expanded</code> state of a tree item.
192
- * @public
193
- */
194
- toggle() {
195
- this.expanded = !this.expanded;
97
+ get _showTitle() {
98
+ return this.text.length && !this._minimal;
196
99
  }
197
100
  }
198
101
 
@@ -1,4 +1,8 @@
1
- {{>include "./ListItem.hbs"}}
1
+ <div>
2
+ {{>include "./ListItem.hbs"}}
3
+
4
+ {{> listItemPostContent}}
5
+ </div>
2
6
 
3
7
  {{#*inline "listItemPreContent"}}
4
8
  <div
@@ -19,15 +23,6 @@
19
23
  {{/inline}}
20
24
 
21
25
  {{#*inline "listItemContent"}}
22
- <div class="ui5-li-tree-text-wrapper">
23
- {{#if _showTitle}}
24
- <div part="title" class="ui5-li-title"><slot></slot></div>
25
- {{/if}}
26
-
27
- {{#if additionalText}}
28
- <span part="additional-text" class="ui5-li-additional-text">{{additionalText}}</span>
29
- {{/if}}
30
- </div>
31
26
  {{/inline}}
32
27
 
33
28
  {{#*inline "imageBegin"}}{{/inline}}
@@ -48,3 +43,15 @@
48
43
  ></ui5-icon>
49
44
  {{/if}}
50
45
  {{/inline}}
46
+
47
+ {{#*inline "listItemPostContent"}}
48
+ {{#if expanded}}
49
+ <ul
50
+ role="group"
51
+ id="{{_id}}-subtree"
52
+ class="ui5-tree-li-subtree"
53
+ >
54
+ <slot></slot>
55
+ </ul>
56
+ {{/if}}
57
+ {{/inline}}
@@ -13,24 +13,26 @@ import {
13
13
  } from "./generated/i18n/i18n-defaults.js";
14
14
 
15
15
  // Template
16
- import TreeListItemTemplate from "./generated/templates/TreeListItemTemplate.lit.js";
16
+ import TreeItemBaseTemplate from "./generated/templates/TreeItemBaseTemplate.lit.js";
17
17
 
18
18
  // Styles
19
- import treeListItemCss from "./generated/themes/TreeListItem.css.js";
19
+ import treeItemCss from "./generated/themes/TreeItem.css.js";
20
+
21
+ import HasPopup from "./types/HasPopup.js";
20
22
 
21
23
  /**
22
24
  * @public
23
25
  */
24
26
  const metadata = {
25
- tag: "ui5-li-tree",
26
27
  languageAware: true,
27
- properties: /** @lends sap.ui.webcomponents.main.TreeListItem.prototype */ {
28
+ managedSlots: true,
29
+ properties: /** @lends sap.ui.webc.main.TreeItemBase.prototype */ {
28
30
 
29
31
  /**
30
32
  * Defines the indentation of the tree list item. Use level 1 for tree list items, representing top-level tree nodes.
31
33
  *
32
- * @type {sap.ui.webcomponents.base.types.Integer}
33
- * @public
34
+ * @type {sap.ui.webc.base.types.Integer}
35
+ * @protected
34
36
  * @defaultValue 1
35
37
  */
36
38
  level: {
@@ -54,7 +56,7 @@ const metadata = {
54
56
  *
55
57
  * @type {boolean}
56
58
  * @defaultvalue false
57
- * @public
59
+ * @protected
58
60
  */
59
61
  showToggleButton: {
60
62
  type: Boolean,
@@ -72,28 +74,47 @@ const metadata = {
72
74
  },
73
75
 
74
76
  /**
75
- * @private
76
- * @since 1.1.0
77
- */
77
+ * Defines whether the selection of a tree node is displayed as partially selected.
78
+ * <br><br>
79
+ * <b>Note:</b> The indeterminate state can be set only programmatically and can’t be achieved by user
80
+ * interaction, meaning that the resulting visual state depends on the values of the <code>indeterminate</code>
81
+ * and <code>selected</code> properties:
82
+ * <ul>
83
+ * <li> If a tree node has both <code>selected</code> and <code>indeterminate</code> set to <code>true</code>, it is displayed as partially selected.
84
+ * <li> If a tree node has <code>selected</code> set to <code>true</code> and <code>indeterminate</code> set to <code>false</code>, it is displayed as selected.
85
+ * <li> If a tree node has <code>selected</code> set to <code>false</code>, it is displayed as not selected regardless of the value of the <code>indeterminate</code> property.
86
+ * </ul>
87
+ * <br>
88
+ * <b>Note:</b> This property takes effect only when the <code>ui5-tree</code> is in <code>MultiSelect</code> mode.
89
+ * @type {boolean}
90
+ * @defaultvalue false
91
+ * @public
92
+ * @since 1.1.0
93
+ */
78
94
  indeterminate: {
79
95
  type: Boolean,
80
96
  },
81
97
 
82
98
  /**
83
- * Defines the <code>additionalText</code>, displayed in the end of the tree item.
84
- * @type {string}
99
+ * Defines whether the tree node has children, even if currently no other tree nodes are slotted inside.
100
+ * <br>
101
+ * <i>Note:</i> This property is useful for showing big tree structures where not all nodes are initially loaded due to performance reasons.
102
+ * Set this to <code>true</code> for nodes you intend to load lazily, when the user clicks the expand button.
103
+ * It is not necessary to set this property otherwise. If a tree item has children, the expand button will be displayed anyway.
104
+ *
105
+ * @type {boolean}
106
+ * @defaultvalue false
85
107
  * @public
86
- * @since 1.0.0-rc.15
87
108
  */
88
- additionalText: {
89
- type: String,
109
+ hasChildren: {
110
+ type: Boolean,
90
111
  },
91
112
 
92
113
  /**
93
114
  * Defines the state of the <code>additionalText</code>.
94
115
  * <br>
95
116
  * Available options are: <code>"None"</code> (by default), <code>"Success"</code>, <code>"Warning"</code>, <code>"Information"</code> and <code>"Error"</code>.
96
- * @type {sap.ui.webcomponents.base.types.ValueState}
117
+ * @type {sap.ui.webc.base.types.ValueState}
97
118
  * @defaultvalue "None"
98
119
  * @public
99
120
  * @since 1.0.0-rc.15
@@ -111,7 +132,7 @@ const metadata = {
111
132
  * @public
112
133
  * @since 1.8.0
113
134
  */
114
- accessibleName: {
135
+ accessibleName: {
115
136
  type: String,
116
137
  },
117
138
 
@@ -155,28 +176,65 @@ const metadata = {
155
176
  noAttribute: true,
156
177
  },
157
178
 
179
+ /**
180
+ * Defines the description for the accessible role of the component.
181
+ * @protected
182
+ * @type {string}
183
+ * @defaultvalue undefined
184
+ * @since 1.10.0
185
+ */
186
+ accessibleRoleDescription: {
187
+ type: String,
188
+ defaultValue: undefined,
189
+ noAttribute: true,
190
+ },
191
+
192
+ /**
193
+ * Defines if the item should be collapsible or not.
194
+ * It is true, for example, for the items inside the Popover of the Side Navigation
195
+ * @private
196
+ * @type {boolean}
197
+ * @defaultvalue false
198
+ * @since 1.10.0
199
+ */
200
+ _fixed: {
201
+ type: Boolean,
202
+ },
203
+
204
+ /**
205
+ * Defines the availability and type of interactive popup element that can be triggered by the component on which the property is set.
206
+ * @type {sap.ui.webc.main.types.HasPopup}
207
+ * @since 1.10.0
208
+ * @private
209
+ */
210
+ ariaHaspopup: {
211
+ type: HasPopup,
212
+ noAttribute: true,
213
+ },
158
214
  },
159
- slots: /** @lends sap.ui.webcomponents.main.TreeListItem.prototype */ {
215
+ slots: /** @lends sap.ui.webc.main.TreeItemBase.prototype */ {
160
216
  /**
161
- * Defines the text of the component.
162
- * <br><br>
163
- * <b>Note:</b> Although this slot accepts HTML Elements, it is strongly recommended that you only use text in order to preserve the intended design.
217
+ * Defines the items of the component.
218
+ * <br />
219
+ * <br />
220
+ * <b>Note:</b> Use <code>ui5-tree-item</code> or <code>ui5-tree-item-custom</code>
164
221
  *
165
- * @type {Node[]}
166
- * @slot
222
+ * @type {sap.ui.webc.main.ITreeItem[]}
223
+ * @slot items
167
224
  * @public
168
225
  */
169
226
  "default": {
170
- type: Node,
227
+ type: HTMLElement,
228
+ propertyName: "items",
171
229
  },
172
230
  },
173
- events: /** @lends sap.ui.webcomponents.main.TreeListItem.prototype */ {
231
+ events: /** @lends sap.ui.webc.main.TreeItemBase.prototype */ {
174
232
 
175
233
  /**
176
234
  * Fired when the user interacts with the expand/collapse button of the tree list item.
177
235
  * @event
178
236
  * @param {HTMLElement} item the toggled item.
179
- * @public
237
+ * @protected
180
238
  */
181
239
  toggle: {
182
240
  detail: {
@@ -187,9 +245,9 @@ const metadata = {
187
245
  /**
188
246
  * Fired when the user drills down into the tree hierarchy by pressing the right arrow on the tree node.
189
247
  *
190
- * @event sap.ui.webcomponents.main.TreeListItem#step-in
248
+ * @event sap.ui.webc.main.TreeItemBase#step-in
191
249
  * @param {HTMLElement} item the item on which right arrow was pressed.
192
- * @public
250
+ * @protected
193
251
  */
194
252
  "step-in": {
195
253
  detail: {
@@ -200,9 +258,9 @@ const metadata = {
200
258
  /**
201
259
  * Fired when the user goes up the tree hierarchy by pressing the left arrow on the tree node.
202
260
  *
203
- * @event sap.ui.webcomponents.main.TreeListItem#step-out
261
+ * @event sap.ui.webc.main.TreeItemBase#step-out
204
262
  * @param {HTMLElement} item the item on which left arrow was pressed.
205
- * @public
263
+ * @protected
206
264
  */
207
265
  "step-out": {
208
266
  detail: {
@@ -213,38 +271,23 @@ const metadata = {
213
271
  };
214
272
 
215
273
  /**
216
- * @class
217
- * The <code>ui5-li-tree</code> represents a node in a tree structure, shown as a <code>ui5-list</code>.
218
- * <br>
219
- * <i>Note:</i> Do not use <code>ui5-li-tree</code> directly in your apps. Use <code>ui5-tree-item</code> instead, as it can be nested inside a <code>ui5-tree</code>.
220
- * On the other hand, <code>ui5-li-tree</code> can only be slotted inside a <code>ui5-list</code>, being a list item. It may be useful if you want to build a custom tree component, for example.
221
- *
222
- * <h3>CSS Shadow Parts</h3>
223
- *
224
- * <ui5-link target="_blank" href="https://developer.mozilla.org/en-US/docs/Web/CSS/::part">CSS Shadow Parts</ui5-link> allow developers to style elements inside the Shadow DOM.
225
- * <br>
226
- * The <code>ui5-li-tree</code> exposes the following CSS Shadow Parts:
227
- * <ul>
228
- * <li>title - Used to style the title of the tree list item</li>
229
- * <li>additionalText - Used to style the additionalText of the tree list item</li>
230
- * <li>icon - Used to style the icon of the tree list item</li>
231
- * </ul>
274
+ * A class to serve as a foundation
275
+ * for the <code>TreeItem</code> and <code>TreeItemCustom</code> classes.
232
276
  *
277
+ * @abstract
233
278
  * @constructor
234
279
  * @author SAP SE
235
- * @alias sap.ui.webcomponents.main.TreeListItem
236
- * @extends sap.ui.webcomponents.main.ListItem
237
- * @tagname ui5-li-tree
280
+ * @alias sap.ui.webc.main.TreeItemBase
281
+ * @extends sap.ui.webc.main.ListItem
238
282
  * @public
239
- * @since 1.0.0-rc.8
240
283
  */
241
- class TreeListItem extends ListItem {
284
+ class TreeItemBase extends ListItem {
242
285
  static get template() {
243
- return TreeListItemTemplate;
286
+ return TreeItemBaseTemplate;
244
287
  }
245
288
 
246
289
  static get styles() {
247
- return [ListItem.styles, treeListItemCss];
290
+ return [...super.styles, treeItemCss];
248
291
  }
249
292
 
250
293
  static get metadata() {
@@ -253,13 +296,14 @@ class TreeListItem extends ListItem {
253
296
 
254
297
  static get dependencies() {
255
298
  return [
256
- ...ListItem.dependencies,
299
+ ...super.dependencies,
257
300
  Icon,
258
301
  ];
259
302
  }
260
303
 
261
304
  onBeforeRendering() {
262
305
  this.actionable = false;
306
+ this.showToggleButton = this.requiresToggleButton;
263
307
  }
264
308
 
265
309
  get classes() {
@@ -276,6 +320,10 @@ class TreeListItem extends ListItem {
276
320
  };
277
321
  }
278
322
 
323
+ get requiresToggleButton() {
324
+ return !this._fixed ? (this.hasChildren || this.items.length > 0) : false;
325
+ }
326
+
279
327
  get effectiveLevel() {
280
328
  return this.level - 1;
281
329
  }
@@ -284,6 +332,10 @@ class TreeListItem extends ListItem {
284
332
  return this.level > 1;
285
333
  }
286
334
 
335
+ get hasContent() {
336
+ return this.content.length > 0;
337
+ }
338
+
287
339
  get _toggleIconName() {
288
340
  return this.expanded ? "navigation-down-arrow" : "navigation-right-arrow";
289
341
  }
@@ -296,24 +348,47 @@ class TreeListItem extends ListItem {
296
348
  return this.showToggleButton && !this._minimal && this._toggleButtonEnd;
297
349
  }
298
350
 
299
- get _showTitle() {
300
- return this.textContent.length && !this._minimal;
301
- }
302
-
303
351
  get _ariaLabel() {
304
- return TreeListItem.i18nBundle.getText(TREE_ITEM_ARIA_LABEL);
352
+ return this.accessibleRoleDescription ? undefined : TreeItemBase.i18nBundle.getText(TREE_ITEM_ARIA_LABEL);
305
353
  }
306
354
 
307
355
  get _accInfo() {
308
- return {
309
- role: "treeitem",
310
- ariaExpanded: this.showToggleButton ? this.expanded : undefined,
311
- ariaLevel: this.level,
356
+ const accInfoSettings = {
357
+ role: this._minimal ? "menuitemradio" : "treeitem",
358
+ ariaExpanded: this.showToggleButton && !this._minimal ? this.expanded : undefined,
359
+ ariaLevel: this._minimal ? undefined : this.level,
312
360
  posinset: this._posinset,
313
361
  setsize: this._setsize,
314
362
  ariaSelectedText: this.ariaSelectedText,
315
363
  listItemAriaLabel: !this.accessibleName ? this._ariaLabel : undefined,
364
+ ariaOwns: this.expanded ? `${this._id}-subtree` : undefined,
365
+ ariaHaspopup: this.ariaHaspopup || undefined,
316
366
  };
367
+
368
+ if (this._minimal) {
369
+ accInfoSettings.ariaChecked = this.selected;
370
+ } else {
371
+ accInfoSettings.ariaSelected = this.selected;
372
+ }
373
+
374
+ return accInfoSettings;
375
+ }
376
+
377
+ /**
378
+ * Used to duck-type TreeItem elements without using instanceof
379
+ * @returns {boolean}
380
+ * @public
381
+ */
382
+ get isTreeItem() {
383
+ return true;
384
+ }
385
+
386
+ /**
387
+ * Call this method to manually switch the <code>expanded</code> state of a tree item.
388
+ * @public
389
+ */
390
+ toggle() {
391
+ this.expanded = !this.expanded;
317
392
  }
318
393
 
319
394
  _toggleClick(event) {
@@ -324,7 +399,7 @@ class TreeListItem extends ListItem {
324
399
  _onkeydown(event) {
325
400
  super._onkeydown(event);
326
401
 
327
- if (this.showToggleButton && isRight(event)) {
402
+ if (!this._fixed && this.showToggleButton && isRight(event)) {
328
403
  if (!this.expanded) {
329
404
  this.fireEvent("toggle", { item: this });
330
405
  } else {
@@ -332,7 +407,7 @@ class TreeListItem extends ListItem {
332
407
  }
333
408
  }
334
409
 
335
- if (isLeft(event)) {
410
+ if (!this._fixed && isLeft(event)) {
336
411
  if (this.expanded) {
337
412
  this.fireEvent("toggle", { item: this });
338
413
  } else if (this.hasParent) {
@@ -342,17 +417,15 @@ class TreeListItem extends ListItem {
342
417
  }
343
418
 
344
419
  get iconAccessibleName() {
345
- return this.expanded ? TreeListItem.i18nBundle.getText(TREE_ITEM_COLLAPSE_NODE) : TreeListItem.i18nBundle.getText(TREE_ITEM_EXPAND_NODE);
420
+ return this.expanded ? TreeItemBase.i18nBundle.getText(TREE_ITEM_COLLAPSE_NODE) : TreeItemBase.i18nBundle.getText(TREE_ITEM_EXPAND_NODE);
346
421
  }
347
422
 
348
423
  static async onDefine() {
349
- [TreeListItem.i18nBundle] = await Promise.all([
424
+ [TreeItemBase.i18nBundle] = await Promise.all([
350
425
  getI18nBundle("@ui5/webcomponents"),
351
426
  super.onDefine(),
352
427
  ]);
353
428
  }
354
429
  }
355
430
 
356
- TreeListItem.define();
357
-
358
- export default TreeListItem;
431
+ export default TreeItemBase;
@@ -0,0 +1,7 @@
1
+ {{>include "./TreeItemBase.hbs"}}
2
+
3
+ {{#*inline "listItemContent"}}
4
+ <div class="ui5-li-tree-text-wrapper">
5
+ <slot name="content" slot="content"></slot>
6
+ </div>
7
+ {{/inline}}