@fluentui/web-components 3.0.0-beta.84 → 3.0.0-beta.85

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 (59) hide show
  1. package/CHANGELOG.md +11 -2
  2. package/dist/dts/anchor-button/index.d.ts +1 -0
  3. package/dist/dts/index-rollup.d.ts +2 -0
  4. package/dist/dts/index.d.ts +7 -8
  5. package/dist/dts/tree/define.d.ts +1 -0
  6. package/dist/dts/tree/index.d.ts +4 -0
  7. package/dist/dts/tree/tree.bench.d.ts +3 -0
  8. package/dist/dts/tree/tree.d.ts +88 -0
  9. package/dist/dts/tree/tree.definition.d.ts +8 -0
  10. package/dist/dts/tree/tree.styles.d.ts +1 -0
  11. package/dist/dts/tree/tree.template.d.ts +2 -0
  12. package/dist/dts/tree-item/define.d.ts +1 -0
  13. package/dist/dts/tree-item/index.d.ts +5 -0
  14. package/dist/dts/tree-item/tree-item.bench.d.ts +3 -0
  15. package/dist/dts/tree-item/tree-item.d.ts +121 -0
  16. package/dist/dts/tree-item/tree-item.definition.d.ts +8 -0
  17. package/dist/dts/tree-item/tree-item.options.d.ts +22 -0
  18. package/dist/dts/tree-item/tree-item.styles.d.ts +1 -0
  19. package/dist/dts/tree-item/tree-item.template.d.ts +2 -0
  20. package/dist/esm/anchor-button/index.js +1 -0
  21. package/dist/esm/anchor-button/index.js.map +1 -1
  22. package/dist/esm/index-rollup.js +2 -0
  23. package/dist/esm/index-rollup.js.map +1 -1
  24. package/dist/esm/index.js +6 -5
  25. package/dist/esm/index.js.map +1 -1
  26. package/dist/esm/tree/define.js +4 -0
  27. package/dist/esm/tree/define.js.map +1 -0
  28. package/dist/esm/tree/index.js +5 -0
  29. package/dist/esm/tree/index.js.map +1 -0
  30. package/dist/esm/tree/tree.bench.js +10 -0
  31. package/dist/esm/tree/tree.bench.js.map +1 -0
  32. package/dist/esm/tree/tree.definition.js +16 -0
  33. package/dist/esm/tree/tree.definition.js.map +1 -0
  34. package/dist/esm/tree/tree.js +274 -0
  35. package/dist/esm/tree/tree.js.map +1 -0
  36. package/dist/esm/tree/tree.styles.js +9 -0
  37. package/dist/esm/tree/tree.styles.js.map +1 -0
  38. package/dist/esm/tree/tree.template.js +18 -0
  39. package/dist/esm/tree/tree.template.js.map +1 -0
  40. package/dist/esm/tree-item/define.js +4 -0
  41. package/dist/esm/tree-item/define.js.map +1 -0
  42. package/dist/esm/tree-item/index.js +5 -0
  43. package/dist/esm/tree-item/index.js.map +1 -0
  44. package/dist/esm/tree-item/tree-item.bench.js +10 -0
  45. package/dist/esm/tree-item/tree-item.bench.js.map +1 -0
  46. package/dist/esm/tree-item/tree-item.definition.js +16 -0
  47. package/dist/esm/tree-item/tree-item.definition.js.map +1 -0
  48. package/dist/esm/tree-item/tree-item.js +201 -0
  49. package/dist/esm/tree-item/tree-item.js.map +1 -0
  50. package/dist/esm/tree-item/tree-item.options.js +24 -0
  51. package/dist/esm/tree-item/tree-item.options.js.map +1 -0
  52. package/dist/esm/tree-item/tree-item.styles.js +170 -0
  53. package/dist/esm/tree-item/tree-item.styles.js.map +1 -0
  54. package/dist/esm/tree-item/tree-item.template.js +41 -0
  55. package/dist/esm/tree-item/tree-item.template.js.map +1 -0
  56. package/dist/web-components.d.ts +157 -0
  57. package/dist/web-components.js +1278 -802
  58. package/dist/web-components.min.js +298 -291
  59. package/package.json +1 -1
@@ -0,0 +1,274 @@
1
+ import { __decorate } from "tslib";
2
+ import { attr, FASTElement, observable } from '@microsoft/fast-element';
3
+ import { isHTMLElement, keyArrowDown, keyArrowLeft, keyArrowRight, keyArrowUp, keyEnd, keyEnter, keyHome, keySpace, } from '@microsoft/fast-web-utilities';
4
+ import { TreeItem } from '../tree-item/index.js';
5
+ import { isTreeItem, TreeItemAppearance, TreeItemSize } from '../tree-item/tree-item.options';
6
+ export class Tree extends FASTElement {
7
+ constructor() {
8
+ super();
9
+ /**
10
+ * The currently selected tree item
11
+ * @public
12
+ */
13
+ this.currentSelected = null;
14
+ /**
15
+ * The tree item that is designated to be in the tab queue.
16
+ *
17
+ * @internal
18
+ */
19
+ this.currentFocused = null;
20
+ /**
21
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
22
+ *
23
+ * @internal
24
+ */
25
+ this.elementInternals = this.attachInternals();
26
+ /**
27
+ * The size of the tree item element
28
+ * @public
29
+ * HTML Attribute: size
30
+ */
31
+ this.size = TreeItemSize.small;
32
+ /**
33
+ * The appearance variants of the tree item element
34
+ * @public
35
+ * HTML Attribute: appearance
36
+ */
37
+ this.appearance = TreeItemAppearance.subtle;
38
+ this.childTreeItems = [];
39
+ this.elementInternals.role = 'tree';
40
+ }
41
+ sizeChanged() {
42
+ this.updateSizeAndAppearance();
43
+ }
44
+ appearanceChanged() {
45
+ this.updateSizeAndAppearance();
46
+ }
47
+ childTreeItemsChanged() {
48
+ this.updateSizeAndAppearance();
49
+ this.updateCurrentSelected();
50
+ }
51
+ /**
52
+ * 1. Update the child items' size based on the tree's size
53
+ * 2. Update the child items' appearance based on the tree's appearance
54
+ */
55
+ updateSizeAndAppearance() {
56
+ if (!this.childTreeItems?.length) {
57
+ return;
58
+ }
59
+ this.childTreeItems.forEach(item => {
60
+ if (!isTreeItem(item)) {
61
+ return;
62
+ }
63
+ item.size = this.size;
64
+ item.appearance = this.appearance;
65
+ });
66
+ }
67
+ /**
68
+ * Updates current selected when slottedTreeItems changes
69
+ */
70
+ updateCurrentSelected() {
71
+ // force single selection
72
+ // defaults to first one found
73
+ const selectedItem = this.querySelector(`[aria-selected='true']`);
74
+ this.currentSelected = selectedItem;
75
+ // invalidate the current focused item if it is no longer valid
76
+ if (this.currentFocused === null || !this.contains(this.currentFocused)) {
77
+ this.currentFocused = this.getValidFocusableItem();
78
+ }
79
+ }
80
+ /**
81
+ * KeyDown handler
82
+ *
83
+ * @internal
84
+ */
85
+ keydownHandler(e) {
86
+ if (e.defaultPrevented) {
87
+ return;
88
+ }
89
+ const item = e.target;
90
+ if (!isTreeItem(item) || this.childTreeItems.length < 1) {
91
+ return true;
92
+ }
93
+ const elements = this.getVisibleNodes();
94
+ switch (e.key) {
95
+ case keyHome: {
96
+ if (elements.length) {
97
+ elements[0].focus();
98
+ }
99
+ return;
100
+ }
101
+ case keyEnd: {
102
+ if (elements.length) {
103
+ elements[elements.length - 1].focus();
104
+ }
105
+ return;
106
+ }
107
+ case keyArrowLeft: {
108
+ if (item?.childTreeItems?.length && item.expanded) {
109
+ item.expanded = false;
110
+ }
111
+ else if (isTreeItem(item.parentElement)) {
112
+ item.parentElement.focus();
113
+ }
114
+ return;
115
+ }
116
+ case keyArrowRight: {
117
+ if (item?.childTreeItems?.length) {
118
+ if (!item.expanded) {
119
+ item.expanded = true;
120
+ }
121
+ else {
122
+ this.focusNextNode(1, item);
123
+ }
124
+ }
125
+ return;
126
+ }
127
+ case keyArrowDown: {
128
+ this.focusNextNode(1, item);
129
+ return;
130
+ }
131
+ case keyArrowUp: {
132
+ this.focusNextNode(-1, item);
133
+ return;
134
+ }
135
+ case keyEnter: {
136
+ // In single-select trees where selection does not follow focus (see note below),
137
+ // the default action is typically to select the focused node.
138
+ this.clickHandler(e);
139
+ return;
140
+ }
141
+ case keySpace: {
142
+ item.toggleSelection();
143
+ return;
144
+ }
145
+ }
146
+ // don't prevent default if we took no action
147
+ return true;
148
+ }
149
+ /**
150
+ * Handle focus events
151
+ *
152
+ * @internal
153
+ */
154
+ focusHandler(e) {
155
+ if (this.childTreeItems.length < 1) {
156
+ // no child items, nothing to do
157
+ return;
158
+ }
159
+ if (e.target === this) {
160
+ if (this.currentFocused === null) {
161
+ this.currentFocused = this.getValidFocusableItem();
162
+ }
163
+ if (this.currentFocused !== null) {
164
+ this.currentFocused.focus();
165
+ }
166
+ return;
167
+ }
168
+ if (this.contains(e.target)) {
169
+ this.setAttribute('tabindex', '-1');
170
+ this.currentFocused = e.target;
171
+ }
172
+ }
173
+ /**
174
+ * Handle blur events
175
+ *
176
+ * @internal
177
+ */
178
+ blurHandler(e) {
179
+ if (e.target instanceof HTMLElement && (e.relatedTarget === null || !this.contains(e.relatedTarget))) {
180
+ this.setAttribute('tabindex', '0');
181
+ }
182
+ }
183
+ /**
184
+ * Handles click events bubbling up
185
+ *
186
+ * @internal
187
+ */
188
+ clickHandler(e) {
189
+ if (e.defaultPrevented) {
190
+ // handled, do nothing
191
+ return;
192
+ }
193
+ if (!isTreeItem(e.target)) {
194
+ // not a tree item, ignore
195
+ // return true, do not prevent default
196
+ return true;
197
+ }
198
+ const item = e.target;
199
+ item.toggleExpansion();
200
+ item.toggleSelection();
201
+ }
202
+ /**
203
+ * Handles the selected-changed events bubbling up
204
+ * from child tree items
205
+ *
206
+ * @internal
207
+ */
208
+ changeHandler(e) {
209
+ if (e.defaultPrevented) {
210
+ return;
211
+ }
212
+ if (!isTreeItem(e.target)) {
213
+ return true;
214
+ }
215
+ const item = e.target;
216
+ if (item.selected) {
217
+ // Deselect the prevously selected item
218
+ if (this.currentSelected && this.currentSelected !== item && this.currentSelected instanceof TreeItem) {
219
+ this.currentSelected.selected = false;
220
+ }
221
+ // New selected item
222
+ this.currentSelected = item;
223
+ }
224
+ else if (!item.selected && this.currentSelected === item) {
225
+ // Selected item deselected
226
+ this.currentSelected = null;
227
+ }
228
+ }
229
+ /**
230
+ * checks if there are any nested tree items
231
+ */
232
+ getValidFocusableItem() {
233
+ const elements = this.getVisibleNodes();
234
+ // default to selected element if there is one
235
+ let focusIndex = elements.findIndex(el => el.selected);
236
+ if (focusIndex === -1) {
237
+ // otherwise first focusable tree item
238
+ focusIndex = elements.findIndex(el => el instanceof TreeItem);
239
+ }
240
+ if (focusIndex !== -1) {
241
+ return elements[focusIndex];
242
+ }
243
+ return null;
244
+ }
245
+ getVisibleNodes() {
246
+ return Array.from(this.querySelectorAll('*')).filter(node => isTreeItem(node) && node.offsetParent !== null);
247
+ }
248
+ /**
249
+ * Move focus to a tree item based on its offset from the provided item
250
+ */
251
+ focusNextNode(delta, item) {
252
+ const visibleNodes = this.getVisibleNodes();
253
+ if (!visibleNodes.length) {
254
+ return;
255
+ }
256
+ const focusItem = visibleNodes[visibleNodes.indexOf(item) + delta];
257
+ if (isHTMLElement(focusItem)) {
258
+ focusItem.focus();
259
+ }
260
+ }
261
+ }
262
+ __decorate([
263
+ observable
264
+ ], Tree.prototype, "currentSelected", void 0);
265
+ __decorate([
266
+ attr
267
+ ], Tree.prototype, "size", void 0);
268
+ __decorate([
269
+ attr
270
+ ], Tree.prototype, "appearance", void 0);
271
+ __decorate([
272
+ observable
273
+ ], Tree.prototype, "childTreeItems", void 0);
274
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/tree/tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ import { display } from '../utils/display';
3
+ export const styles = css `
4
+ ${display('block')}
5
+ :host {
6
+ outline: none;
7
+ }
8
+ `;
9
+ //# sourceMappingURL=tree.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.styles.js","sourceRoot":"","sources":["../../../src/tree/tree.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,OAAO,CAAC;;;;CAInB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { children, elements, html } from '@microsoft/fast-element';
2
+ export const template = html `
3
+ <template
4
+ tabindex="0"
5
+ @click="${(x, c) => x.clickHandler(c.event)}"
6
+ @focusin="${(x, c) => x.focusHandler(c.event)}"
7
+ @focusout="${(x, c) => x.blurHandler(c.event)}"
8
+ @keydown="${(x, c) => x.keydownHandler(c.event)}"
9
+ @change="${(x, c) => x.changeHandler(c.event)}"
10
+ ${children({
11
+ property: 'childTreeItems',
12
+ filter: elements(),
13
+ })}
14
+ >
15
+ <slot></slot>
16
+ </template>
17
+ `;
18
+ //# sourceMappingURL=tree.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.template.js","sourceRoot":"","sources":["../../../src/tree/tree.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGnE,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAM;;;cAGpB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAmB,CAAC;iBAC9C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAmB,CAAC;gBAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAsB,CAAC;eACrD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;MAC3C,QAAQ,CAAC;IACT,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,QAAQ,EAAE;CACnB,CAAC;;;;CAIL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FluentDesignSystem } from '../fluent-design-system.js';
2
+ import { definition } from './tree-item.definition.js';
3
+ definition.define(FluentDesignSystem.registry);
4
+ //# sourceMappingURL=define.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../../../src/tree-item/define.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { TreeItem } from './tree-item.js';
2
+ export { template as TreeItemTemplate } from './tree-item.template.js';
3
+ export { styles as TreeItemStyles } from './tree-item.styles.js';
4
+ export { definition as TreeItemDefinition } from './tree-item.definition.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tree-item/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { FluentDesignSystem } from '../fluent-design-system.js';
2
+ import { definition } from './tree-item.definition.js';
3
+ definition.define(FluentDesignSystem.registry);
4
+ const itemRenderer = () => {
5
+ const treeItem = document.createElement('fluent-tree-item');
6
+ return treeItem;
7
+ };
8
+ export default itemRenderer;
9
+ export { tests } from '../utils/benchmark-wrapper.js';
10
+ //# sourceMappingURL=tree-item.bench.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-item.bench.js","sourceRoot":"","sources":["../../../src/tree-item/tree-item.bench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAE/C,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { FluentDesignSystem } from '../fluent-design-system.js';
2
+ import { TreeItem } from './tree-item.js';
3
+ import { styles as treeItemStyle } from './tree-item.styles.js';
4
+ import { template as treeItemTemplate } from './tree-item.template.js';
5
+ /**
6
+ *
7
+ * @public
8
+ * @remarks
9
+ * HTML Element: \<fluent-tree-item\>
10
+ */
11
+ export const definition = TreeItem.compose({
12
+ name: `${FluentDesignSystem.prefix}-tree-item`,
13
+ template: treeItemTemplate,
14
+ styles: treeItemStyle,
15
+ });
16
+ //# sourceMappingURL=tree-item.definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-item.definition.js","sourceRoot":"","sources":["../../../src/tree-item/tree-item.definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;IACzC,IAAI,EAAE,GAAG,kBAAkB,CAAC,MAAM,YAAY;IAC9C,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,aAAa;CACtB,CAAC,CAAC"}
@@ -0,0 +1,201 @@
1
+ import { __decorate } from "tslib";
2
+ import { attr, css, FASTElement, observable } from '@microsoft/fast-element';
3
+ import { toggleState } from '../utils/element-internals.js';
4
+ import { isTreeItem, TreeItemAppearance, TreeItemSize } from './tree-item.options.js';
5
+ export class TreeItem extends FASTElement {
6
+ constructor() {
7
+ super();
8
+ /**
9
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
10
+ *
11
+ * @internal
12
+ */
13
+ this.elementInternals = this.attachInternals();
14
+ /**
15
+ * When true, the control will be appear expanded by user interaction.
16
+ * @public
17
+ * HTML Attribute: `expanded`
18
+ */
19
+ this.expanded = false;
20
+ /**
21
+ * When true, the control will appear selected by user interaction.
22
+ * @public
23
+ * @remarks
24
+ * HTML Attribute: selected
25
+ */
26
+ this.selected = false;
27
+ /**
28
+ * When true, the control has no child tree items
29
+ * @public
30
+ * HTML Attribute: empty
31
+ */
32
+ this.empty = false;
33
+ /**
34
+ * The size of the tree item element
35
+ * @public
36
+ */
37
+ this.size = TreeItemSize.small;
38
+ /**
39
+ * The size of the tree item element
40
+ * @public
41
+ */
42
+ this.appearance = TreeItemAppearance.subtle;
43
+ this.childTreeItems = [];
44
+ this.elementInternals.role = 'treeitem';
45
+ }
46
+ /**
47
+ * Handles changes to the expanded attribute
48
+ * @param prev - the previous state
49
+ * @param next - the next state
50
+ *
51
+ * @public
52
+ */
53
+ expandedChanged(prev, next) {
54
+ toggleState(this.elementInternals, 'expanded', next);
55
+ if (this.childTreeItems && this.childTreeItems.length > 0) {
56
+ this.elementInternals.ariaExpanded = next ? 'true' : 'false';
57
+ }
58
+ }
59
+ /**
60
+ * Handles changes to the selected attribute
61
+ * @param prev - the previous state
62
+ * @param next - the next state
63
+ *
64
+ * @internal
65
+ */
66
+ selectedChanged(prev, next) {
67
+ this.$emit('change');
68
+ toggleState(this.elementInternals, 'selected', next);
69
+ this.elementInternals.ariaSelected = next ? 'true' : 'false';
70
+ }
71
+ /**
72
+ * Handles changes to the size attribute
73
+ * we update the child tree items' size based on the size
74
+ * @internal
75
+ */
76
+ sizeChanged() {
77
+ this.updateChildTreeItems();
78
+ }
79
+ /**
80
+ * Handles changes to the appearance attribute
81
+ *
82
+ * @internal
83
+ */
84
+ appearanceChanged() {
85
+ this.updateChildTreeItems();
86
+ }
87
+ dataIndentChanged(prev, next) {
88
+ if (this.styles !== undefined) {
89
+ this.$fastController.removeStyles(this.styles);
90
+ }
91
+ this.styles = css `
92
+ :host {
93
+ --indent: ${next};
94
+ }
95
+ `;
96
+ this.$fastController.addStyles(this.styles);
97
+ }
98
+ /**
99
+ * Handles changes to the child tree items
100
+ *
101
+ * @internal
102
+ */
103
+ childTreeItemsChanged() {
104
+ this.empty = this.childTreeItems?.length === 0;
105
+ this.updateChildTreeItems();
106
+ }
107
+ /**
108
+ * 1. Update the child items' size based on the tree's size
109
+ * 2. Update the child items' appearance based on the tree's appearance
110
+ */
111
+ updateChildTreeItems() {
112
+ if (!this.childTreeItems?.length) {
113
+ return;
114
+ }
115
+ this.childTreeItems.forEach(item => {
116
+ if (!isTreeItem(item)) {
117
+ return;
118
+ }
119
+ this.setIndent(item);
120
+ item.size = this.size;
121
+ item.appearance = this.appearance;
122
+ });
123
+ }
124
+ /**
125
+ * Sets the indent for each item
126
+ */
127
+ setIndent(item) {
128
+ const indent = this.dataIndent ?? 0;
129
+ item.dataIndent = indent + 1;
130
+ }
131
+ /**
132
+ * Handle focus events
133
+ *
134
+ * @public
135
+ */
136
+ focusHandler(e) {
137
+ if (e.target === this ||
138
+ // In case where the tree-item contains a focusable element, we should not set the tabindex to 0 when the focus is on its child focusable element,
139
+ // so users can shift+tab to navigate to the tree-item from its child focusable element.
140
+ this.contains(e.target)) {
141
+ this.setAttribute('tabindex', '0');
142
+ }
143
+ }
144
+ /**
145
+ * Handle blur events
146
+ *
147
+ * @public
148
+ */
149
+ blurHandler(e) {
150
+ if (e.target === this) {
151
+ this.setAttribute('tabindex', '-1');
152
+ }
153
+ }
154
+ /**
155
+ * Toggle the expansion state of the tree item
156
+ *
157
+ * @public
158
+ */
159
+ toggleExpansion() {
160
+ if (this.childTreeItems?.length) {
161
+ this.expanded = !this.expanded;
162
+ }
163
+ }
164
+ /**
165
+ * Toggle the single selection state of the tree item
166
+ *
167
+ * @public
168
+ */
169
+ toggleSelection() {
170
+ this.selected = !this.selected;
171
+ }
172
+ /**
173
+ * Whether the tree is nested
174
+ * @internal
175
+ */
176
+ get isNestedItem() {
177
+ return isTreeItem(this.parentElement);
178
+ }
179
+ }
180
+ __decorate([
181
+ attr({ mode: 'boolean' })
182
+ ], TreeItem.prototype, "expanded", void 0);
183
+ __decorate([
184
+ attr({ mode: 'boolean' })
185
+ ], TreeItem.prototype, "selected", void 0);
186
+ __decorate([
187
+ attr({ mode: 'boolean' })
188
+ ], TreeItem.prototype, "empty", void 0);
189
+ __decorate([
190
+ attr
191
+ ], TreeItem.prototype, "size", void 0);
192
+ __decorate([
193
+ attr
194
+ ], TreeItem.prototype, "appearance", void 0);
195
+ __decorate([
196
+ attr({ attribute: 'data-indent' })
197
+ ], TreeItem.prototype, "dataIndent", void 0);
198
+ __decorate([
199
+ observable
200
+ ], TreeItem.prototype, "childTreeItems", void 0);
201
+ //# sourceMappingURL=tree-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-item.js","sourceRoot":"","sources":["../../../src/tree-item/tree-item.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export const TreeItemAppearance = {
2
+ subtle: 'subtle',
3
+ subtleAlpha: 'subtle-alpha',
4
+ transparent: 'transparent',
5
+ };
6
+ export const TreeItemSize = {
7
+ small: 'small',
8
+ medium: 'medium',
9
+ };
10
+ /**
11
+ * Predicate function that determines if the element should be considered an tree-item.
12
+ *
13
+ * @param element - The element to check.
14
+ * @param tagName - The tag name to check.
15
+ * @returns true if the element is a dropdown.
16
+ * @public
17
+ */
18
+ export function isTreeItem(element, tagName = '-tree-item') {
19
+ if (element?.nodeType !== Node.ELEMENT_NODE) {
20
+ return false;
21
+ }
22
+ return element.tagName.toLowerCase().endsWith(tagName);
23
+ }
24
+ //# sourceMappingURL=tree-item.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-item.options.js","sourceRoot":"","sources":["../../../src/tree-item/tree-item.options.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,aAAa;CAClB,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAIX;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,OAAqB,EAAE,UAAkB,YAAY;IAC9E,IAAI,OAAO,EAAE,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAQ,OAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACtE,CAAC"}