primer_view_components 0.43.5 → 0.44.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.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/app/assets/javascripts/components/primer/alpha/tree_view/tree_view.d.ts +39 -0
  4. data/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_icon_pair_element.d.ts +15 -0
  5. data/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_include_fragment_element.d.ts +9 -0
  6. data/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_roving_tab_index.d.ts +3 -0
  7. data/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.d.ts +42 -0
  8. data/app/assets/javascripts/components/primer/primer.d.ts +4 -0
  9. data/app/assets/javascripts/components/primer/shared_events.d.ts +15 -0
  10. data/app/assets/javascripts/primer_view_components.js +1 -1
  11. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  12. data/app/assets/styles/primer_view_components.css +1 -1
  13. data/app/assets/styles/primer_view_components.css.map +1 -1
  14. data/app/components/primer/alpha/file_tree_view/directory_node.html.erb +5 -0
  15. data/app/components/primer/alpha/file_tree_view/directory_node.rb +24 -0
  16. data/app/components/primer/alpha/file_tree_view/file_node.html.erb +2 -0
  17. data/app/components/primer/alpha/file_tree_view/file_node.rb +14 -0
  18. data/app/components/primer/alpha/file_tree_view.rb +15 -0
  19. data/app/components/primer/alpha/skeleton_box.css +1 -0
  20. data/app/components/primer/alpha/skeleton_box.css.json +6 -0
  21. data/app/components/primer/alpha/skeleton_box.css.map +1 -0
  22. data/app/components/primer/alpha/skeleton_box.html.erb +1 -0
  23. data/app/components/primer/alpha/skeleton_box.pcss +30 -0
  24. data/app/components/primer/alpha/skeleton_box.rb +29 -0
  25. data/app/components/primer/alpha/tree_view/icon.html.erb +1 -0
  26. data/app/components/primer/alpha/tree_view/icon.rb +22 -0
  27. data/app/components/primer/alpha/tree_view/icon_pair.html.erb +13 -0
  28. data/app/components/primer/alpha/tree_view/icon_pair.rb +42 -0
  29. data/app/components/primer/alpha/tree_view/leading_action.html.erb +3 -0
  30. data/app/components/primer/alpha/tree_view/leading_action.rb +18 -0
  31. data/app/components/primer/alpha/tree_view/leaf_node.html.erb +18 -0
  32. data/app/components/primer/alpha/tree_view/leaf_node.rb +96 -0
  33. data/app/components/primer/alpha/tree_view/loading_failure_message.html.erb +13 -0
  34. data/app/components/primer/alpha/tree_view/loading_failure_message.rb +31 -0
  35. data/app/components/primer/alpha/tree_view/node.html.erb +32 -0
  36. data/app/components/primer/alpha/tree_view/node.rb +194 -0
  37. data/app/components/primer/alpha/tree_view/skeleton_loader.html.erb +23 -0
  38. data/app/components/primer/alpha/tree_view/skeleton_loader.rb +36 -0
  39. data/app/components/primer/alpha/tree_view/spinner_loader.html.erb +20 -0
  40. data/app/components/primer/alpha/tree_view/spinner_loader.rb +33 -0
  41. data/app/components/primer/alpha/tree_view/sub_tree.html.erb +21 -0
  42. data/app/components/primer/alpha/tree_view/sub_tree.rb +113 -0
  43. data/app/components/primer/alpha/tree_view/sub_tree_container.html.erb +3 -0
  44. data/app/components/primer/alpha/tree_view/sub_tree_container.rb +39 -0
  45. data/app/components/primer/alpha/tree_view/sub_tree_node.html.erb +49 -0
  46. data/app/components/primer/alpha/tree_view/sub_tree_node.rb +188 -0
  47. data/app/components/primer/alpha/tree_view/tree_view.d.ts +39 -0
  48. data/app/components/primer/alpha/tree_view/tree_view.js +363 -0
  49. data/app/components/primer/alpha/tree_view/tree_view.ts +396 -0
  50. data/app/components/primer/alpha/tree_view/tree_view_icon_pair_element.d.ts +15 -0
  51. data/app/components/primer/alpha/tree_view/tree_view_icon_pair_element.js +62 -0
  52. data/app/components/primer/alpha/tree_view/tree_view_icon_pair_element.ts +56 -0
  53. data/app/components/primer/alpha/tree_view/tree_view_include_fragment_element.d.ts +9 -0
  54. data/app/components/primer/alpha/tree_view/tree_view_include_fragment_element.js +28 -0
  55. data/app/components/primer/alpha/tree_view/tree_view_include_fragment_element.ts +28 -0
  56. data/app/components/primer/alpha/tree_view/tree_view_roving_tab_index.d.ts +3 -0
  57. data/app/components/primer/alpha/tree_view/tree_view_roving_tab_index.js +130 -0
  58. data/app/components/primer/alpha/tree_view/tree_view_roving_tab_index.ts +161 -0
  59. data/app/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.d.ts +42 -0
  60. data/app/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.js +418 -0
  61. data/app/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.ts +470 -0
  62. data/app/components/primer/alpha/tree_view/visual.html.erb +14 -0
  63. data/app/components/primer/alpha/tree_view/visual.rb +27 -0
  64. data/app/components/primer/alpha/tree_view.css +1 -0
  65. data/app/components/primer/alpha/tree_view.css.json +52 -0
  66. data/app/components/primer/alpha/tree_view.css.map +1 -0
  67. data/app/components/primer/alpha/tree_view.html.erb +12 -0
  68. data/app/components/primer/alpha/tree_view.pcss +373 -0
  69. data/app/components/primer/alpha/tree_view.rb +439 -0
  70. data/app/components/primer/beta/breadcrumbs.css +1 -1
  71. data/app/components/primer/beta/breadcrumbs.css.json +0 -1
  72. data/app/components/primer/beta/breadcrumbs.css.map +1 -1
  73. data/app/components/primer/beta/breadcrumbs.pcss +2 -8
  74. data/app/components/primer/beta/progress_bar.css +1 -1
  75. data/app/components/primer/beta/progress_bar.css.map +1 -1
  76. data/app/components/primer/beta/progress_bar.pcss +3 -2
  77. data/app/components/primer/beta/relative_time.rb +3 -0
  78. data/app/components/primer/beta/spinner.html.erb +1 -1
  79. data/app/components/primer/beta/spinner.rb +2 -0
  80. data/app/components/primer/primer.d.ts +4 -0
  81. data/app/components/primer/primer.js +4 -0
  82. data/app/components/primer/primer.pcss +2 -0
  83. data/app/components/primer/primer.ts +4 -0
  84. data/app/components/primer/shared_events.d.ts +15 -0
  85. data/app/components/primer/shared_events.ts +19 -0
  86. data/app/controllers/primer/view_components/tree_view_items.json +293 -0
  87. data/app/controllers/primer/view_components/tree_view_items_controller.rb +55 -0
  88. data/app/forms/check_box_with_nested_form.rb +10 -10
  89. data/app/forms/radio_button_with_nested_form.rb +16 -16
  90. data/app/views/primer/view_components/tree_view_items/async_alpha.html_fragment.erb +23 -0
  91. data/app/views/primer/view_components/tree_view_items/index.html_fragment.erb +24 -0
  92. data/config/routes.rb +2 -0
  93. data/lib/primer/view_components/version.rb +2 -2
  94. data/previews/primer/alpha/file_tree_view_preview/default.html.erb +16 -0
  95. data/previews/primer/alpha/file_tree_view_preview/playground.html.erb +4 -0
  96. data/previews/primer/alpha/file_tree_view_preview.rb +69 -0
  97. data/previews/primer/alpha/skeleton_box_preview.rb +20 -0
  98. data/previews/primer/alpha/tree_view_preview/async_alpha.html.erb +12 -0
  99. data/previews/primer/alpha/tree_view_preview/buttons.html.erb +10 -0
  100. data/previews/primer/alpha/tree_view_preview/default.html.erb +24 -0
  101. data/previews/primer/alpha/tree_view_preview/empty.html.erb +10 -0
  102. data/previews/primer/alpha/tree_view_preview/form_input.html.erb +14 -0
  103. data/previews/primer/alpha/tree_view_preview/leaf_node_playground.html.erb +15 -0
  104. data/previews/primer/alpha/tree_view_preview/links.html.erb +17 -0
  105. data/previews/primer/alpha/tree_view_preview/loading_failure.html.erb +36 -0
  106. data/previews/primer/alpha/tree_view_preview/loading_skeleton.html.erb +12 -0
  107. data/previews/primer/alpha/tree_view_preview/loading_spinner.html.erb +12 -0
  108. data/previews/primer/alpha/tree_view_preview/playground.html.erb +4 -0
  109. data/previews/primer/alpha/tree_view_preview.rb +208 -0
  110. data/static/arguments.json +456 -0
  111. data/static/audited_at.json +17 -0
  112. data/static/classes.json +15 -0
  113. data/static/constants.json +101 -0
  114. data/static/info_arch.json +1410 -56
  115. data/static/previews.json +232 -0
  116. data/static/statuses.json +17 -0
  117. metadata +89 -8
@@ -0,0 +1,418 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
13
+ if (kind === "m") throw new TypeError("Private method is not writable");
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
15
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
16
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
+ };
18
+ var _TreeViewSubTreeNodeElement_instances, _TreeViewSubTreeNodeElement_expanded, _TreeViewSubTreeNodeElement_loadingState, _TreeViewSubTreeNodeElement_abortController, _TreeViewSubTreeNodeElement_activeElementIsLoader, _TreeViewSubTreeNodeElement_handleToggleEvent, _TreeViewSubTreeNodeElement_handleIncludeFragmentEvent, _TreeViewSubTreeNodeElement_handleRetryButtonEvent, _TreeViewSubTreeNodeElement_handleKeyboardEvent, _TreeViewSubTreeNodeElement_handleCheckboxEvent, _TreeViewSubTreeNodeElement_update, _TreeViewSubTreeNodeElement_checkboxElement_get;
19
+ import { controller, target } from '@github/catalyst';
20
+ import { observeMutationsUntilConditionMet } from '../../utils';
21
+ let TreeViewSubTreeNodeElement = class TreeViewSubTreeNodeElement extends HTMLElement {
22
+ constructor() {
23
+ super(...arguments);
24
+ _TreeViewSubTreeNodeElement_instances.add(this);
25
+ _TreeViewSubTreeNodeElement_expanded.set(this, null);
26
+ _TreeViewSubTreeNodeElement_loadingState.set(this, 'success');
27
+ _TreeViewSubTreeNodeElement_abortController.set(this, void 0);
28
+ _TreeViewSubTreeNodeElement_activeElementIsLoader.set(this, false);
29
+ }
30
+ connectedCallback() {
31
+ observeMutationsUntilConditionMet(this, () => Boolean(this.node) && Boolean(this.subTree), () => {
32
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_update).call(this);
33
+ });
34
+ const { signal } = (__classPrivateFieldSet(this, _TreeViewSubTreeNodeElement_abortController, new AbortController(), "f"));
35
+ this.addEventListener('click', this, { signal });
36
+ this.addEventListener('keydown', this, { signal });
37
+ observeMutationsUntilConditionMet(this, () => Boolean(this.includeFragment), () => {
38
+ this.includeFragment.addEventListener('loadstart', this, { signal });
39
+ this.includeFragment.addEventListener('error', this, { signal });
40
+ this.includeFragment.addEventListener('include-fragment-replace', this, { signal });
41
+ this.includeFragment.addEventListener('include-fragment-replaced', (e) => {
42
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleIncludeFragmentEvent).call(this, e);
43
+ }, { signal });
44
+ });
45
+ observeMutationsUntilConditionMet(this, () => Boolean(this.retryButton), () => {
46
+ this.retryButton.addEventListener('click', event => {
47
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleRetryButtonEvent).call(this, event);
48
+ }, { signal });
49
+ });
50
+ const checkedMutationObserver = new MutationObserver(() => {
51
+ if (this.selectStrategy !== 'mixed_descendants')
52
+ return;
53
+ let checkType = 'unknown';
54
+ for (const node of this.eachDirectDescendantNode()) {
55
+ switch (`${checkType} ${node.getAttribute('aria-checked') || 'false'}`) {
56
+ case 'unknown mixed':
57
+ case 'false mixed':
58
+ case 'true mixed':
59
+ case 'false true':
60
+ case 'true false':
61
+ checkType = 'mixed';
62
+ break;
63
+ case 'unknown false':
64
+ checkType = 'false';
65
+ break;
66
+ case 'unknown true':
67
+ checkType = 'true';
68
+ }
69
+ }
70
+ if (checkType !== 'unknown' && this.node?.getAttribute('aria-checked') !== checkType) {
71
+ this.node?.setAttribute('aria-checked', checkType);
72
+ }
73
+ });
74
+ checkedMutationObserver.observe(this, {
75
+ childList: true,
76
+ subtree: true,
77
+ attributeFilter: ['aria-checked'],
78
+ });
79
+ }
80
+ get expanded() {
81
+ if (__classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_expanded, "f") === null) {
82
+ __classPrivateFieldSet(this, _TreeViewSubTreeNodeElement_expanded, this.node.getAttribute('aria-expanded') === 'true', "f");
83
+ }
84
+ return __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_expanded, "f");
85
+ }
86
+ set expanded(newValue) {
87
+ __classPrivateFieldSet(this, _TreeViewSubTreeNodeElement_expanded, newValue, "f");
88
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_update).call(this);
89
+ }
90
+ get loadingState() {
91
+ return __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_loadingState, "f");
92
+ }
93
+ set loadingState(newState) {
94
+ __classPrivateFieldSet(this, _TreeViewSubTreeNodeElement_loadingState, newState, "f");
95
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_update).call(this);
96
+ }
97
+ get selectStrategy() {
98
+ return (this.node.getAttribute('data-select-strategy') || 'descendants');
99
+ }
100
+ disconnectedCallback() {
101
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_abortController, "f").abort();
102
+ }
103
+ handleEvent(event) {
104
+ if (event.target === this.toggleButton) {
105
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleToggleEvent).call(this, event);
106
+ }
107
+ else if (event.target === this.includeFragment) {
108
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleIncludeFragmentEvent).call(this, event);
109
+ }
110
+ else if (event instanceof KeyboardEvent) {
111
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleKeyboardEvent).call(this, event);
112
+ }
113
+ else if (event.target.closest('[role=treeitem]') === this.node &&
114
+ event.type === 'click' &&
115
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "a", _TreeViewSubTreeNodeElement_checkboxElement_get)) {
116
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleCheckboxEvent).call(this, event);
117
+ }
118
+ }
119
+ expand() {
120
+ const alreadyExpanded = this.expanded;
121
+ this.expanded = true;
122
+ if (!alreadyExpanded && this.treeView) {
123
+ this.treeView.dispatchEvent(new CustomEvent('treeViewNodeExpanded', {
124
+ bubbles: true,
125
+ detail: this.treeView?.infoFromNode(this.node),
126
+ }));
127
+ }
128
+ }
129
+ collapse() {
130
+ const alreadyCollapsed = !this.expanded;
131
+ this.expanded = false;
132
+ if (!alreadyCollapsed && this.treeView) {
133
+ // Prevent issue where currently focusable node is stuck inside a collapsed
134
+ // sub-tree and no node in the entire tree can be focused
135
+ const previousNode = this.subTree.querySelector("[tabindex='0']");
136
+ previousNode?.setAttribute('tabindex', '-1');
137
+ this.node.setAttribute('tabindex', '0');
138
+ this.treeView.dispatchEvent(new CustomEvent('treeViewNodeCollapsed', {
139
+ bubbles: true,
140
+ detail: this.treeView?.infoFromNode(this.node),
141
+ }));
142
+ }
143
+ }
144
+ toggle() {
145
+ if (this.expanded) {
146
+ this.collapse();
147
+ }
148
+ else {
149
+ this.expand();
150
+ }
151
+ }
152
+ get nodes() {
153
+ return this.querySelectorAll(':scope > [role=treeitem]');
154
+ }
155
+ *eachDirectDescendantNode() {
156
+ for (const leaf of this.subTree.querySelectorAll(':scope > li > .TreeViewItemContainer > [role=treeitem]')) {
157
+ yield leaf;
158
+ }
159
+ for (const subTree of this.subTree.querySelectorAll(':scope > tree-view-sub-tree-node > li > .TreeViewItemContainer > [role=treeitem]')) {
160
+ yield subTree;
161
+ }
162
+ }
163
+ *eachDescendantNode() {
164
+ for (const node of this.subTree.querySelectorAll('[role=treeitem]')) {
165
+ yield node;
166
+ }
167
+ }
168
+ *eachAncestorSubTreeNode() {
169
+ if (!this.treeView)
170
+ return;
171
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
172
+ let current = this;
173
+ while (current && this.treeView.contains(current)) {
174
+ yield current;
175
+ current = current.parentElement?.closest('tree-view-sub-tree-node');
176
+ }
177
+ }
178
+ get isEmpty() {
179
+ return this.nodes.length === 0;
180
+ }
181
+ get treeView() {
182
+ return this.closest('tree-view');
183
+ }
184
+ toggleChecked() {
185
+ const checkValue = this.treeView?.getNodeCheckedValue(this.node) || 'false';
186
+ const newCheckValue = checkValue === 'false' ? 'true' : 'false';
187
+ const nodeInfos = [];
188
+ const rootInfo = this.treeView?.infoFromNode(this.node, newCheckValue);
189
+ if (rootInfo)
190
+ nodeInfos.push(rootInfo);
191
+ if (this.selectStrategy === 'descendants' || this.selectStrategy === 'mixed_descendants') {
192
+ for (const node of this.eachDescendantNode()) {
193
+ const info = this.treeView?.infoFromNode(node, newCheckValue);
194
+ if (info)
195
+ nodeInfos.push(info);
196
+ }
197
+ }
198
+ const checkSuccess = this.dispatchEvent(new CustomEvent('treeViewBeforeNodeChecked', {
199
+ bubbles: true,
200
+ cancelable: true,
201
+ detail: nodeInfos,
202
+ }));
203
+ if (!checkSuccess)
204
+ return;
205
+ for (const nodeInfo of nodeInfos) {
206
+ nodeInfo.node.setAttribute('aria-checked', newCheckValue);
207
+ }
208
+ this.dispatchEvent(new CustomEvent('treeViewNodeChecked', {
209
+ bubbles: true,
210
+ cancelable: true,
211
+ detail: nodeInfos,
212
+ }));
213
+ }
214
+ };
215
+ _TreeViewSubTreeNodeElement_expanded = new WeakMap();
216
+ _TreeViewSubTreeNodeElement_loadingState = new WeakMap();
217
+ _TreeViewSubTreeNodeElement_abortController = new WeakMap();
218
+ _TreeViewSubTreeNodeElement_activeElementIsLoader = new WeakMap();
219
+ _TreeViewSubTreeNodeElement_instances = new WeakSet();
220
+ _TreeViewSubTreeNodeElement_handleToggleEvent = function _TreeViewSubTreeNodeElement_handleToggleEvent(event) {
221
+ if (event.type === 'click') {
222
+ this.toggle();
223
+ // eslint-disable-next-line no-restricted-syntax
224
+ event.stopPropagation();
225
+ }
226
+ };
227
+ _TreeViewSubTreeNodeElement_handleIncludeFragmentEvent = function _TreeViewSubTreeNodeElement_handleIncludeFragmentEvent(event) {
228
+ switch (event.type) {
229
+ // the request has started
230
+ case 'loadstart':
231
+ this.loadingState = 'loading';
232
+ break;
233
+ // the request failed
234
+ case 'error':
235
+ this.loadingState = 'error';
236
+ break;
237
+ // request succeeded but element has not yet been replaced
238
+ case 'include-fragment-replace':
239
+ __classPrivateFieldSet(this, _TreeViewSubTreeNodeElement_activeElementIsLoader, document.activeElement === this.loadingIndicator.closest('[role=treeitem]'), "f");
240
+ this.loadingState = 'success';
241
+ break;
242
+ case 'include-fragment-replaced':
243
+ // Make sure to expand the new sub-tree, otherwise it looks like nothing happened. This prevents
244
+ // having to remember to pass `SubTree.new(expanded: true)` in the controller.
245
+ this.expanded = true;
246
+ if (__classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_activeElementIsLoader, "f")) {
247
+ const firstItem = this.querySelector('[role=group] > :first-child');
248
+ if (!firstItem)
249
+ return;
250
+ const content = firstItem.querySelector('[role=treeitem]');
251
+ if (!content)
252
+ return;
253
+ content.focus();
254
+ }
255
+ __classPrivateFieldSet(this, _TreeViewSubTreeNodeElement_activeElementIsLoader, false, "f");
256
+ break;
257
+ }
258
+ };
259
+ _TreeViewSubTreeNodeElement_handleRetryButtonEvent = function _TreeViewSubTreeNodeElement_handleRetryButtonEvent(event) {
260
+ if (event.type === 'click') {
261
+ this.loadingState = 'loading';
262
+ this.includeFragment.refetch();
263
+ }
264
+ };
265
+ _TreeViewSubTreeNodeElement_handleKeyboardEvent = function _TreeViewSubTreeNodeElement_handleKeyboardEvent(event) {
266
+ const node = event.target.closest('[role=treeitem]');
267
+ if (!node || this.treeView?.getNodeType(node) !== 'sub-tree') {
268
+ return;
269
+ }
270
+ switch (event.key) {
271
+ case 'Enter':
272
+ if (this.treeView?.getNodeDisabledValue(node)) {
273
+ event.preventDefault();
274
+ break;
275
+ }
276
+ // eslint-disable-next-line no-restricted-syntax
277
+ event.stopPropagation();
278
+ if (__classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "a", _TreeViewSubTreeNodeElement_checkboxElement_get)) {
279
+ this.toggleChecked();
280
+ }
281
+ else if (!this.treeView?.nodeHasNativeAction(node)) {
282
+ // toggle only if this node isn't eg. an anchor or button
283
+ this.toggle();
284
+ }
285
+ break;
286
+ case 'ArrowRight':
287
+ // eslint-disable-next-line no-restricted-syntax
288
+ event.stopPropagation();
289
+ this.expand();
290
+ break;
291
+ case 'ArrowLeft':
292
+ // eslint-disable-next-line no-restricted-syntax
293
+ event.stopPropagation();
294
+ this.collapse();
295
+ break;
296
+ case ' ':
297
+ if (this.treeView?.getNodeDisabledValue(node)) {
298
+ event.preventDefault();
299
+ break;
300
+ }
301
+ if (__classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "a", _TreeViewSubTreeNodeElement_checkboxElement_get)) {
302
+ // eslint-disable-next-line no-restricted-syntax
303
+ event.stopPropagation();
304
+ event.preventDefault();
305
+ this.toggleChecked();
306
+ }
307
+ else {
308
+ if (node instanceof HTMLAnchorElement) {
309
+ // simulate click on space for anchors (buttons already handle this natively)
310
+ node.click();
311
+ }
312
+ else if (!this.treeView?.nodeHasNativeAction(node)) {
313
+ this.toggle();
314
+ }
315
+ }
316
+ break;
317
+ }
318
+ };
319
+ _TreeViewSubTreeNodeElement_handleCheckboxEvent = function _TreeViewSubTreeNodeElement_handleCheckboxEvent(event) {
320
+ if (this.treeView?.getNodeDisabledValue(this.node)) {
321
+ event.preventDefault();
322
+ return;
323
+ }
324
+ if (event.type !== 'click')
325
+ return;
326
+ this.toggleChecked();
327
+ // prevent receiving this event twice
328
+ // eslint-disable-next-line no-restricted-syntax
329
+ event.stopPropagation();
330
+ };
331
+ _TreeViewSubTreeNodeElement_update = function _TreeViewSubTreeNodeElement_update() {
332
+ if (this.expanded) {
333
+ if (this.subTree)
334
+ this.subTree.hidden = false;
335
+ this.node.setAttribute('aria-expanded', 'true');
336
+ this.treeView?.expandAncestorsForNode(this);
337
+ if (this.iconPair) {
338
+ this.iconPair.showExpanded();
339
+ }
340
+ if (this.expandedToggleIcon && this.collapsedToggleIcon) {
341
+ this.expandedToggleIcon.removeAttribute('hidden');
342
+ this.collapsedToggleIcon.setAttribute('hidden', 'hidden');
343
+ }
344
+ }
345
+ else {
346
+ if (this.subTree)
347
+ this.subTree.hidden = true;
348
+ this.node.setAttribute('aria-expanded', 'false');
349
+ if (this.iconPair) {
350
+ this.iconPair.showCollapsed();
351
+ }
352
+ if (this.expandedToggleIcon && this.collapsedToggleIcon) {
353
+ this.expandedToggleIcon.setAttribute('hidden', 'hidden');
354
+ this.collapsedToggleIcon.removeAttribute('hidden');
355
+ }
356
+ }
357
+ switch (this.loadingState) {
358
+ case 'loading':
359
+ if (this.loadingFailureMessage)
360
+ this.loadingFailureMessage.hidden = true;
361
+ if (this.loadingIndicator)
362
+ this.loadingIndicator.hidden = false;
363
+ break;
364
+ case 'error':
365
+ if (this.loadingIndicator)
366
+ this.loadingIndicator.hidden = true;
367
+ if (this.loadingFailureMessage)
368
+ this.loadingFailureMessage.hidden = false;
369
+ break;
370
+ // success/init case
371
+ default:
372
+ if (this.loadingIndicator)
373
+ this.loadingIndicator.hidden = true;
374
+ if (this.loadingFailureMessage)
375
+ this.loadingFailureMessage.hidden = true;
376
+ }
377
+ };
378
+ _TreeViewSubTreeNodeElement_checkboxElement_get = function _TreeViewSubTreeNodeElement_checkboxElement_get() {
379
+ return this.querySelector('.TreeViewItemCheckbox');
380
+ };
381
+ __decorate([
382
+ target
383
+ ], TreeViewSubTreeNodeElement.prototype, "node", void 0);
384
+ __decorate([
385
+ target
386
+ ], TreeViewSubTreeNodeElement.prototype, "subTree", void 0);
387
+ __decorate([
388
+ target
389
+ ], TreeViewSubTreeNodeElement.prototype, "iconPair", void 0);
390
+ __decorate([
391
+ target
392
+ ], TreeViewSubTreeNodeElement.prototype, "toggleButton", void 0);
393
+ __decorate([
394
+ target
395
+ ], TreeViewSubTreeNodeElement.prototype, "expandedToggleIcon", void 0);
396
+ __decorate([
397
+ target
398
+ ], TreeViewSubTreeNodeElement.prototype, "collapsedToggleIcon", void 0);
399
+ __decorate([
400
+ target
401
+ ], TreeViewSubTreeNodeElement.prototype, "includeFragment", void 0);
402
+ __decorate([
403
+ target
404
+ ], TreeViewSubTreeNodeElement.prototype, "loadingIndicator", void 0);
405
+ __decorate([
406
+ target
407
+ ], TreeViewSubTreeNodeElement.prototype, "loadingFailureMessage", void 0);
408
+ __decorate([
409
+ target
410
+ ], TreeViewSubTreeNodeElement.prototype, "retryButton", void 0);
411
+ TreeViewSubTreeNodeElement = __decorate([
412
+ controller
413
+ ], TreeViewSubTreeNodeElement);
414
+ export { TreeViewSubTreeNodeElement };
415
+ if (!window.customElements.get('tree-view-sub-tree-node')) {
416
+ window.TreeViewSubTreeNodeElement = TreeViewSubTreeNodeElement;
417
+ window.customElements.define('tree-view-sub-tree-node', TreeViewSubTreeNodeElement);
418
+ }