@mixtint/primer-view-components 0.72.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 (234) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +30 -0
  3. package/app/assets/images/loading_indicator.svg +1 -0
  4. package/app/assets/javascripts/components/primer/alpha/action_bar_element.d.ts +17 -0
  5. package/app/assets/javascripts/components/primer/alpha/action_list.d.ts +16 -0
  6. package/app/assets/javascripts/components/primer/alpha/action_menu/action_menu_element.d.ts +49 -0
  7. package/app/assets/javascripts/components/primer/alpha/action_menu/action_menu_focus_zone_stack.d.ts +17 -0
  8. package/app/assets/javascripts/components/primer/alpha/dropdown/menu.d.ts +1 -0
  9. package/app/assets/javascripts/components/primer/alpha/dropdown.d.ts +1 -0
  10. package/app/assets/javascripts/components/primer/alpha/modal_dialog.d.ts +18 -0
  11. package/app/assets/javascripts/components/primer/alpha/segmented_control.d.ts +12 -0
  12. package/app/assets/javascripts/components/primer/alpha/select_panel_element.d.ts +65 -0
  13. package/app/assets/javascripts/components/primer/alpha/tab_container.d.ts +1 -0
  14. package/app/assets/javascripts/components/primer/alpha/toggle_switch.d.ts +34 -0
  15. package/app/assets/javascripts/components/primer/alpha/tool_tip.d.ts +27 -0
  16. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view.d.ts +42 -0
  17. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_icon_pair_element.d.ts +15 -0
  18. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_include_fragment_element.d.ts +9 -0
  19. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_roving_tab_index.d.ts +3 -0
  20. package/app/assets/javascripts/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.d.ts +45 -0
  21. package/app/assets/javascripts/components/primer/alpha/x_banner.d.ts +18 -0
  22. package/app/assets/javascripts/components/primer/anchored_position.d.ts +27 -0
  23. package/app/assets/javascripts/components/primer/beta/auto_complete/auto_complete.d.ts +1 -0
  24. package/app/assets/javascripts/components/primer/beta/clipboard_copy.d.ts +1 -0
  25. package/app/assets/javascripts/components/primer/beta/details_toggle_element.d.ts +40 -0
  26. package/app/assets/javascripts/components/primer/beta/nav_list.d.ts +20 -0
  27. package/app/assets/javascripts/components/primer/beta/nav_list_group_element.d.ts +19 -0
  28. package/app/assets/javascripts/components/primer/beta/relative_time.d.ts +1 -0
  29. package/app/assets/javascripts/components/primer/dialog_helper.d.ts +15 -0
  30. package/app/assets/javascripts/components/primer/focus_group.d.ts +19 -0
  31. package/app/assets/javascripts/components/primer/open_project/border_box/collapsible_header.d.ts +11 -0
  32. package/app/assets/javascripts/components/primer/open_project/collapsible.d.ts +13 -0
  33. package/app/assets/javascripts/components/primer/open_project/collapsible_section.d.ts +10 -0
  34. package/app/assets/javascripts/components/primer/open_project/danger_dialog_form_helper.d.ts +14 -0
  35. package/app/assets/javascripts/components/primer/open_project/filterable_tree_view.d.ts +29 -0
  36. package/app/assets/javascripts/components/primer/open_project/page_header_element.d.ts +9 -0
  37. package/app/assets/javascripts/components/primer/open_project/sub_header_element.d.ts +17 -0
  38. package/app/assets/javascripts/components/primer/open_project/zen_mode_button.d.ts +18 -0
  39. package/app/assets/javascripts/components/primer/primer.d.ts +40 -0
  40. package/app/assets/javascripts/components/primer/scrollable_region.d.ts +13 -0
  41. package/app/assets/javascripts/components/primer/shared_events.d.ts +26 -0
  42. package/app/assets/javascripts/components/primer/utils.d.ts +1 -0
  43. package/app/assets/javascripts/lib/primer/forms/primer_multi_input.d.ts +10 -0
  44. package/app/assets/javascripts/lib/primer/forms/primer_text_field.d.ts +28 -0
  45. package/app/assets/javascripts/lib/primer/forms/toggle_switch_input.d.ts +5 -0
  46. package/app/assets/javascripts/primer_view_components.js +2 -0
  47. package/app/assets/javascripts/primer_view_components.js.map +1 -0
  48. package/app/assets/styles/primer_view_components.css +7336 -0
  49. package/app/assets/styles/primer_view_components.css.map +1 -0
  50. package/app/components/primer/alpha/action_bar.css +49 -0
  51. package/app/components/primer/alpha/action_bar.css.json +14 -0
  52. package/app/components/primer/alpha/action_bar_element.d.ts +17 -0
  53. package/app/components/primer/alpha/action_bar_element.js +170 -0
  54. package/app/components/primer/alpha/action_list.css +526 -0
  55. package/app/components/primer/alpha/action_list.css.json +117 -0
  56. package/app/components/primer/alpha/action_list.d.ts +16 -0
  57. package/app/components/primer/alpha/action_list.js +70 -0
  58. package/app/components/primer/alpha/action_menu/action_menu_element.d.ts +49 -0
  59. package/app/components/primer/alpha/action_menu/action_menu_element.js +591 -0
  60. package/app/components/primer/alpha/action_menu/action_menu_focus_zone_stack.d.ts +17 -0
  61. package/app/components/primer/alpha/action_menu/action_menu_focus_zone_stack.js +62 -0
  62. package/app/components/primer/alpha/auto_complete.css +131 -0
  63. package/app/components/primer/alpha/auto_complete.css.json +21 -0
  64. package/app/components/primer/alpha/banner.css +146 -0
  65. package/app/components/primer/alpha/banner.css.json +26 -0
  66. package/app/components/primer/alpha/button_marketing.css +183 -0
  67. package/app/components/primer/alpha/button_marketing.css.json +30 -0
  68. package/app/components/primer/alpha/dialog.css +377 -0
  69. package/app/components/primer/alpha/dialog.css.json +66 -0
  70. package/app/components/primer/alpha/dropdown/menu.d.ts +1 -0
  71. package/app/components/primer/alpha/dropdown/menu.js +1 -0
  72. package/app/components/primer/alpha/dropdown.css +296 -0
  73. package/app/components/primer/alpha/dropdown.css.json +40 -0
  74. package/app/components/primer/alpha/dropdown.d.ts +1 -0
  75. package/app/components/primer/alpha/dropdown.js +1 -0
  76. package/app/components/primer/alpha/layout.css +374 -0
  77. package/app/components/primer/alpha/layout.css.json +74 -0
  78. package/app/components/primer/alpha/menu.css +124 -0
  79. package/app/components/primer/alpha/menu.css.json +26 -0
  80. package/app/components/primer/alpha/modal_dialog.d.ts +18 -0
  81. package/app/components/primer/alpha/modal_dialog.js +187 -0
  82. package/app/components/primer/alpha/overlay.css +25 -0
  83. package/app/components/primer/alpha/overlay.css.json +12 -0
  84. package/app/components/primer/alpha/segmented_control.css +161 -0
  85. package/app/components/primer/alpha/segmented_control.css.json +31 -0
  86. package/app/components/primer/alpha/segmented_control.d.ts +12 -0
  87. package/app/components/primer/alpha/segmented_control.js +59 -0
  88. package/app/components/primer/alpha/select_panel.css +10 -0
  89. package/app/components/primer/alpha/select_panel.css.json +7 -0
  90. package/app/components/primer/alpha/select_panel_element.d.ts +65 -0
  91. package/app/components/primer/alpha/select_panel_element.js +988 -0
  92. package/app/components/primer/alpha/skeleton_box.css +36 -0
  93. package/app/components/primer/alpha/skeleton_box.css.json +6 -0
  94. package/app/components/primer/alpha/stack.css +266 -0
  95. package/app/components/primer/alpha/stack.css.json +94 -0
  96. package/app/components/primer/alpha/stack_item.css +27 -0
  97. package/app/components/primer/alpha/stack_item.css.json +12 -0
  98. package/app/components/primer/alpha/tab_container.d.ts +1 -0
  99. package/app/components/primer/alpha/tab_container.js +1 -0
  100. package/app/components/primer/alpha/tab_nav.css +112 -0
  101. package/app/components/primer/alpha/tab_nav.css.json +22 -0
  102. package/app/components/primer/alpha/text_field.css +838 -0
  103. package/app/components/primer/alpha/text_field.css.json +134 -0
  104. package/app/components/primer/alpha/toggle_switch.css +230 -0
  105. package/app/components/primer/alpha/toggle_switch.css.json +40 -0
  106. package/app/components/primer/alpha/toggle_switch.d.ts +34 -0
  107. package/app/components/primer/alpha/toggle_switch.js +179 -0
  108. package/app/components/primer/alpha/tool_tip.d.ts +27 -0
  109. package/app/components/primer/alpha/tool_tip.js +443 -0
  110. package/app/components/primer/alpha/tree_view/tree_view.d.ts +42 -0
  111. package/app/components/primer/alpha/tree_view/tree_view.js +391 -0
  112. package/app/components/primer/alpha/tree_view/tree_view_icon_pair_element.d.ts +15 -0
  113. package/app/components/primer/alpha/tree_view/tree_view_icon_pair_element.js +62 -0
  114. package/app/components/primer/alpha/tree_view/tree_view_include_fragment_element.d.ts +9 -0
  115. package/app/components/primer/alpha/tree_view/tree_view_include_fragment_element.js +28 -0
  116. package/app/components/primer/alpha/tree_view/tree_view_roving_tab_index.d.ts +3 -0
  117. package/app/components/primer/alpha/tree_view/tree_view_roving_tab_index.js +130 -0
  118. package/app/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.d.ts +45 -0
  119. package/app/components/primer/alpha/tree_view/tree_view_sub_tree_node_element.js +429 -0
  120. package/app/components/primer/alpha/tree_view.css +396 -0
  121. package/app/components/primer/alpha/tree_view.css.json +52 -0
  122. package/app/components/primer/alpha/underline_nav.css +150 -0
  123. package/app/components/primer/alpha/underline_nav.css.json +26 -0
  124. package/app/components/primer/alpha/x_banner.d.ts +18 -0
  125. package/app/components/primer/alpha/x_banner.js +51 -0
  126. package/app/components/primer/anchored_position.d.ts +27 -0
  127. package/app/components/primer/anchored_position.js +159 -0
  128. package/app/components/primer/beta/auto_complete/auto_complete.d.ts +1 -0
  129. package/app/components/primer/beta/auto_complete/auto_complete.js +1 -0
  130. package/app/components/primer/beta/avatar.css +77 -0
  131. package/app/components/primer/beta/avatar.css.json +17 -0
  132. package/app/components/primer/beta/avatar_stack.css +145 -0
  133. package/app/components/primer/beta/avatar_stack.css.json +28 -0
  134. package/app/components/primer/beta/blankslate.css +168 -0
  135. package/app/components/primer/beta/blankslate.css.json +23 -0
  136. package/app/components/primer/beta/border_box.css +218 -0
  137. package/app/components/primer/beta/border_box.css.json +54 -0
  138. package/app/components/primer/beta/breadcrumbs.css +29 -0
  139. package/app/components/primer/beta/breadcrumbs.css.json +9 -0
  140. package/app/components/primer/beta/button.css +359 -0
  141. package/app/components/primer/beta/button.css.json +86 -0
  142. package/app/components/primer/beta/button_group.css +20 -0
  143. package/app/components/primer/beta/button_group.css.json +12 -0
  144. package/app/components/primer/beta/clipboard_copy.d.ts +1 -0
  145. package/app/components/primer/beta/clipboard_copy.js +58 -0
  146. package/app/components/primer/beta/counter.css +38 -0
  147. package/app/components/primer/beta/counter.css.json +10 -0
  148. package/app/components/primer/beta/details_toggle_element.d.ts +40 -0
  149. package/app/components/primer/beta/details_toggle_element.js +65 -0
  150. package/app/components/primer/beta/flash.css +152 -0
  151. package/app/components/primer/beta/flash.css.json +27 -0
  152. package/app/components/primer/beta/label.css +109 -0
  153. package/app/components/primer/beta/label.css.json +24 -0
  154. package/app/components/primer/beta/link.css +79 -0
  155. package/app/components/primer/beta/link.css.json +19 -0
  156. package/app/components/primer/beta/nav_list.d.ts +20 -0
  157. package/app/components/primer/beta/nav_list.js +192 -0
  158. package/app/components/primer/beta/nav_list_group_element.d.ts +19 -0
  159. package/app/components/primer/beta/nav_list_group_element.js +111 -0
  160. package/app/components/primer/beta/popover.css +215 -0
  161. package/app/components/primer/beta/popover.css.json +33 -0
  162. package/app/components/primer/beta/progress_bar.css +27 -0
  163. package/app/components/primer/beta/progress_bar.css.json +10 -0
  164. package/app/components/primer/beta/relative_time.d.ts +1 -0
  165. package/app/components/primer/beta/relative_time.js +1 -0
  166. package/app/components/primer/beta/state.css +59 -0
  167. package/app/components/primer/beta/state.css.json +13 -0
  168. package/app/components/primer/beta/subhead.css +64 -0
  169. package/app/components/primer/beta/subhead.css.json +14 -0
  170. package/app/components/primer/beta/timeline_item.css +106 -0
  171. package/app/components/primer/beta/timeline_item.css.json +16 -0
  172. package/app/components/primer/beta/truncate.css +30 -0
  173. package/app/components/primer/beta/truncate.css.json +12 -0
  174. package/app/components/primer/dialog_helper.d.ts +15 -0
  175. package/app/components/primer/dialog_helper.js +132 -0
  176. package/app/components/primer/focus_group.d.ts +19 -0
  177. package/app/components/primer/focus_group.js +163 -0
  178. package/app/components/primer/open_project/border_box/collapsible_header.css +21 -0
  179. package/app/components/primer/open_project/border_box/collapsible_header.css.json +11 -0
  180. package/app/components/primer/open_project/border_box/collapsible_header.d.ts +11 -0
  181. package/app/components/primer/open_project/border_box/collapsible_header.js +21 -0
  182. package/app/components/primer/open_project/border_grid.css +35 -0
  183. package/app/components/primer/open_project/border_grid.css.json +11 -0
  184. package/app/components/primer/open_project/collapsible.d.ts +13 -0
  185. package/app/components/primer/open_project/collapsible.js +67 -0
  186. package/app/components/primer/open_project/collapsible_section.css +5 -0
  187. package/app/components/primer/open_project/collapsible_section.css.json +6 -0
  188. package/app/components/primer/open_project/collapsible_section.d.ts +10 -0
  189. package/app/components/primer/open_project/collapsible_section.js +16 -0
  190. package/app/components/primer/open_project/danger_dialog_form_helper.d.ts +14 -0
  191. package/app/components/primer/open_project/danger_dialog_form_helper.js +54 -0
  192. package/app/components/primer/open_project/drag_handle.css +6 -0
  193. package/app/components/primer/open_project/drag_handle.css.json +6 -0
  194. package/app/components/primer/open_project/filterable_tree_view.d.ts +29 -0
  195. package/app/components/primer/open_project/filterable_tree_view.js +409 -0
  196. package/app/components/primer/open_project/input_group.css +22 -0
  197. package/app/components/primer/open_project/input_group.css.json +12 -0
  198. package/app/components/primer/open_project/page_header.css +87 -0
  199. package/app/components/primer/open_project/page_header.css.json +20 -0
  200. package/app/components/primer/open_project/page_header_element.d.ts +9 -0
  201. package/app/components/primer/open_project/page_header_element.js +23 -0
  202. package/app/components/primer/open_project/side_panel/section.css +27 -0
  203. package/app/components/primer/open_project/side_panel/section.css.json +11 -0
  204. package/app/components/primer/open_project/sub_header.css +80 -0
  205. package/app/components/primer/open_project/sub_header.css.json +17 -0
  206. package/app/components/primer/open_project/sub_header_element.d.ts +17 -0
  207. package/app/components/primer/open_project/sub_header_element.js +76 -0
  208. package/app/components/primer/open_project/zen_mode_button.d.ts +18 -0
  209. package/app/components/primer/open_project/zen_mode_button.js +64 -0
  210. package/app/components/primer/primer.d.ts +40 -0
  211. package/app/components/primer/primer.js +40 -0
  212. package/app/components/primer/scrollable_region.d.ts +13 -0
  213. package/app/components/primer/scrollable_region.js +52 -0
  214. package/app/components/primer/shared_events.d.ts +26 -0
  215. package/app/components/primer/shared_events.js +1 -0
  216. package/app/components/primer/truncate.css +23 -0
  217. package/app/components/primer/truncate.css.json +13 -0
  218. package/app/components/primer/utils.d.ts +1 -0
  219. package/app/components/primer/utils.js +16 -0
  220. package/app/lib/primer/forms/primer_multi_input.d.ts +10 -0
  221. package/app/lib/primer/forms/primer_multi_input.js +44 -0
  222. package/app/lib/primer/forms/primer_text_field.d.ts +28 -0
  223. package/app/lib/primer/forms/primer_text_field.js +119 -0
  224. package/app/lib/primer/forms/toggle_switch_input.d.ts +5 -0
  225. package/app/lib/primer/forms/toggle_switch_input.js +34 -0
  226. package/package.json +103 -0
  227. package/static/arguments.json +6472 -0
  228. package/static/audited_at.json +173 -0
  229. package/static/classes.json +781 -0
  230. package/static/constants.json +1972 -0
  231. package/static/form_previews.json +118 -0
  232. package/static/info_arch.json +21331 -0
  233. package/static/previews.json +9436 -0
  234. package/static/statuses.json +173 -0
@@ -0,0 +1,45 @@
1
+ import { TreeViewIconPairElement } from './tree_view_icon_pair_element';
2
+ import { TreeViewIncludeFragmentElement } from './tree_view_include_fragment_element';
3
+ import { TreeViewElement } from './tree_view';
4
+ type LoadingState = 'loading' | 'error' | 'success';
5
+ export type SelectStrategy = 'self' | 'descendants' | 'mixed_descendants';
6
+ export declare class TreeViewSubTreeNodeElement extends HTMLElement {
7
+ #private;
8
+ node: HTMLElement;
9
+ subTree: HTMLElement;
10
+ iconPair: TreeViewIconPairElement;
11
+ toggleButton: HTMLElement;
12
+ expandedToggleIcon: HTMLElement;
13
+ collapsedToggleIcon: HTMLElement;
14
+ includeFragment: TreeViewIncludeFragmentElement;
15
+ loadingIndicator: HTMLElement;
16
+ loadingFailureMessage: HTMLElement;
17
+ retryButton: HTMLButtonElement;
18
+ connectedCallback(): void;
19
+ get expanded(): boolean;
20
+ set expanded(newValue: boolean);
21
+ get loadingState(): LoadingState;
22
+ set loadingState(newState: LoadingState);
23
+ get selectStrategy(): SelectStrategy;
24
+ get level(): number;
25
+ disconnectedCallback(): void;
26
+ handleEvent(event: Event): void;
27
+ expand(): void;
28
+ collapse(): void;
29
+ toggle(): void;
30
+ get nodes(): NodeListOf<Element>;
31
+ eachDirectDescendantNode(): Generator<Element>;
32
+ eachDirectDescendantSubTreeNode(): Generator<TreeViewSubTreeNodeElement>;
33
+ eachDescendantNode(): Generator<Element>;
34
+ eachAncestorSubTreeNode(): Generator<TreeViewSubTreeNodeElement>;
35
+ get isEmpty(): boolean;
36
+ get treeView(): TreeViewElement | null;
37
+ toggleChecked(): void;
38
+ changeSelectStrategy(newStrategy: SelectStrategy): void;
39
+ }
40
+ declare global {
41
+ interface Window {
42
+ TreeViewSubTreeNodeElement: typeof TreeViewSubTreeNodeElement;
43
+ }
44
+ }
45
+ export {};
@@ -0,0 +1,429 @@
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
+ get level() {
101
+ return parseInt(this.node.getAttribute('aria-level') || '0');
102
+ }
103
+ disconnectedCallback() {
104
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_abortController, "f").abort();
105
+ }
106
+ handleEvent(event) {
107
+ if (event.target === this.toggleButton) {
108
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleToggleEvent).call(this, event);
109
+ }
110
+ else if (event.target === this.includeFragment) {
111
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleIncludeFragmentEvent).call(this, event);
112
+ }
113
+ else if (event instanceof KeyboardEvent) {
114
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleKeyboardEvent).call(this, event);
115
+ }
116
+ else if (event.target.closest('[role=treeitem]') === this.node &&
117
+ event.type === 'click' &&
118
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "a", _TreeViewSubTreeNodeElement_checkboxElement_get)) {
119
+ __classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "m", _TreeViewSubTreeNodeElement_handleCheckboxEvent).call(this, event);
120
+ }
121
+ }
122
+ expand() {
123
+ const alreadyExpanded = this.expanded;
124
+ this.expanded = true;
125
+ if (!alreadyExpanded && this.treeView) {
126
+ this.treeView.dispatchEvent(new CustomEvent('treeViewNodeExpanded', {
127
+ bubbles: true,
128
+ detail: this.treeView?.infoFromNode(this.node),
129
+ }));
130
+ }
131
+ }
132
+ collapse() {
133
+ const alreadyCollapsed = !this.expanded;
134
+ this.expanded = false;
135
+ if (!alreadyCollapsed && this.treeView) {
136
+ // Prevent issue where currently focusable node is stuck inside a collapsed
137
+ // sub-tree and no node in the entire tree can be focused
138
+ const previousNode = this.subTree.querySelector("[tabindex='0']");
139
+ previousNode?.setAttribute('tabindex', '-1');
140
+ this.node.setAttribute('tabindex', '0');
141
+ this.treeView.dispatchEvent(new CustomEvent('treeViewNodeCollapsed', {
142
+ bubbles: true,
143
+ detail: this.treeView?.infoFromNode(this.node),
144
+ }));
145
+ }
146
+ }
147
+ toggle() {
148
+ if (this.expanded) {
149
+ this.collapse();
150
+ }
151
+ else {
152
+ this.expand();
153
+ }
154
+ }
155
+ get nodes() {
156
+ return this.querySelectorAll(':scope > [role=treeitem]');
157
+ }
158
+ *eachDirectDescendantNode() {
159
+ for (const leaf of this.subTree.querySelectorAll(':scope > li > .TreeViewItemContainer > [role=treeitem]')) {
160
+ yield leaf;
161
+ }
162
+ for (const subTree of this.subTree.querySelectorAll(':scope > tree-view-sub-tree-node > li > .TreeViewItemContainer > [role=treeitem]')) {
163
+ yield subTree;
164
+ }
165
+ }
166
+ *eachDirectDescendantSubTreeNode() {
167
+ for (const subTree of this.subTree.querySelectorAll(':scope > tree-view-sub-tree-node')) {
168
+ yield subTree;
169
+ }
170
+ }
171
+ *eachDescendantNode() {
172
+ for (const node of this.subTree.querySelectorAll('[role=treeitem]')) {
173
+ yield node;
174
+ }
175
+ }
176
+ *eachAncestorSubTreeNode() {
177
+ if (!this.treeView)
178
+ return;
179
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
180
+ let current = this;
181
+ while (current && this.treeView.contains(current)) {
182
+ yield current;
183
+ current = current.parentElement?.closest('tree-view-sub-tree-node');
184
+ }
185
+ }
186
+ get isEmpty() {
187
+ return this.nodes.length === 0;
188
+ }
189
+ get treeView() {
190
+ return this.closest('tree-view');
191
+ }
192
+ toggleChecked() {
193
+ const checkValue = this.treeView?.getNodeCheckedValue(this.node) || 'false';
194
+ const newCheckValue = checkValue === 'false' ? 'true' : 'false';
195
+ const nodeInfos = [];
196
+ const rootInfo = this.treeView?.infoFromNode(this.node, newCheckValue);
197
+ if (rootInfo)
198
+ nodeInfos.push(rootInfo);
199
+ if (this.selectStrategy === 'descendants' || this.selectStrategy === 'mixed_descendants') {
200
+ for (const node of this.eachDescendantNode()) {
201
+ const info = this.treeView?.infoFromNode(node, newCheckValue);
202
+ if (info)
203
+ nodeInfos.push(info);
204
+ }
205
+ }
206
+ const checkSuccess = this.dispatchEvent(new CustomEvent('treeViewBeforeNodeChecked', {
207
+ bubbles: true,
208
+ cancelable: true,
209
+ detail: nodeInfos,
210
+ }));
211
+ if (!checkSuccess)
212
+ return;
213
+ for (const nodeInfo of nodeInfos) {
214
+ nodeInfo.node.setAttribute('aria-checked', newCheckValue);
215
+ }
216
+ this.dispatchEvent(new CustomEvent('treeViewNodeChecked', {
217
+ bubbles: true,
218
+ cancelable: true,
219
+ detail: nodeInfos,
220
+ }));
221
+ }
222
+ changeSelectStrategy(newStrategy) {
223
+ this.node.setAttribute('data-select-strategy', newStrategy);
224
+ }
225
+ };
226
+ _TreeViewSubTreeNodeElement_expanded = new WeakMap();
227
+ _TreeViewSubTreeNodeElement_loadingState = new WeakMap();
228
+ _TreeViewSubTreeNodeElement_abortController = new WeakMap();
229
+ _TreeViewSubTreeNodeElement_activeElementIsLoader = new WeakMap();
230
+ _TreeViewSubTreeNodeElement_instances = new WeakSet();
231
+ _TreeViewSubTreeNodeElement_handleToggleEvent = function _TreeViewSubTreeNodeElement_handleToggleEvent(event) {
232
+ if (event.type === 'click') {
233
+ this.toggle();
234
+ // eslint-disable-next-line no-restricted-syntax
235
+ event.stopPropagation();
236
+ }
237
+ };
238
+ _TreeViewSubTreeNodeElement_handleIncludeFragmentEvent = function _TreeViewSubTreeNodeElement_handleIncludeFragmentEvent(event) {
239
+ switch (event.type) {
240
+ // the request has started
241
+ case 'loadstart':
242
+ this.loadingState = 'loading';
243
+ break;
244
+ // the request failed
245
+ case 'error':
246
+ this.loadingState = 'error';
247
+ break;
248
+ // request succeeded but element has not yet been replaced
249
+ case 'include-fragment-replace':
250
+ __classPrivateFieldSet(this, _TreeViewSubTreeNodeElement_activeElementIsLoader, document.activeElement === this.loadingIndicator.closest('[role=treeitem]'), "f");
251
+ this.loadingState = 'success';
252
+ break;
253
+ case 'include-fragment-replaced':
254
+ // Make sure to expand the new sub-tree, otherwise it looks like nothing happened. This prevents
255
+ // having to remember to pass `SubTree.new(expanded: true)` in the controller.
256
+ this.expanded = true;
257
+ if (__classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_activeElementIsLoader, "f")) {
258
+ const firstItem = this.querySelector('[role=group] > :first-child');
259
+ if (!firstItem)
260
+ return;
261
+ const content = firstItem.querySelector('[role=treeitem]');
262
+ if (!content)
263
+ return;
264
+ content.focus();
265
+ }
266
+ __classPrivateFieldSet(this, _TreeViewSubTreeNodeElement_activeElementIsLoader, false, "f");
267
+ break;
268
+ }
269
+ };
270
+ _TreeViewSubTreeNodeElement_handleRetryButtonEvent = function _TreeViewSubTreeNodeElement_handleRetryButtonEvent(event) {
271
+ if (event.type === 'click') {
272
+ this.loadingState = 'loading';
273
+ this.includeFragment.refetch();
274
+ }
275
+ };
276
+ _TreeViewSubTreeNodeElement_handleKeyboardEvent = function _TreeViewSubTreeNodeElement_handleKeyboardEvent(event) {
277
+ const node = event.target.closest('[role=treeitem]');
278
+ if (!node || this.treeView?.getNodeType(node) !== 'sub-tree') {
279
+ return;
280
+ }
281
+ switch (event.key) {
282
+ case 'Enter':
283
+ if (this.treeView?.getNodeDisabledValue(node)) {
284
+ event.preventDefault();
285
+ break;
286
+ }
287
+ // eslint-disable-next-line no-restricted-syntax
288
+ event.stopPropagation();
289
+ if (__classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "a", _TreeViewSubTreeNodeElement_checkboxElement_get)) {
290
+ this.toggleChecked();
291
+ }
292
+ else if (!this.treeView?.nodeHasNativeAction(node)) {
293
+ // toggle only if this node isn't eg. an anchor or button
294
+ this.toggle();
295
+ }
296
+ break;
297
+ case 'ArrowRight':
298
+ // eslint-disable-next-line no-restricted-syntax
299
+ event.stopPropagation();
300
+ this.expand();
301
+ break;
302
+ case 'ArrowLeft':
303
+ // eslint-disable-next-line no-restricted-syntax
304
+ event.stopPropagation();
305
+ this.collapse();
306
+ break;
307
+ case ' ':
308
+ if (this.treeView?.getNodeDisabledValue(node)) {
309
+ event.preventDefault();
310
+ break;
311
+ }
312
+ if (__classPrivateFieldGet(this, _TreeViewSubTreeNodeElement_instances, "a", _TreeViewSubTreeNodeElement_checkboxElement_get)) {
313
+ // eslint-disable-next-line no-restricted-syntax
314
+ event.stopPropagation();
315
+ event.preventDefault();
316
+ this.toggleChecked();
317
+ }
318
+ else {
319
+ if (node instanceof HTMLAnchorElement) {
320
+ // simulate click on space for anchors (buttons already handle this natively)
321
+ node.click();
322
+ }
323
+ else if (!this.treeView?.nodeHasNativeAction(node)) {
324
+ this.toggle();
325
+ }
326
+ }
327
+ break;
328
+ }
329
+ };
330
+ _TreeViewSubTreeNodeElement_handleCheckboxEvent = function _TreeViewSubTreeNodeElement_handleCheckboxEvent(event) {
331
+ if (this.treeView?.getNodeDisabledValue(this.node)) {
332
+ event.preventDefault();
333
+ return;
334
+ }
335
+ if (event.type !== 'click')
336
+ return;
337
+ this.toggleChecked();
338
+ // prevent receiving this event twice
339
+ // eslint-disable-next-line no-restricted-syntax
340
+ event.stopPropagation();
341
+ };
342
+ _TreeViewSubTreeNodeElement_update = function _TreeViewSubTreeNodeElement_update() {
343
+ if (this.expanded) {
344
+ if (this.subTree)
345
+ this.subTree.hidden = false;
346
+ this.node.setAttribute('aria-expanded', 'true');
347
+ this.treeView?.expandAncestorsForNode(this);
348
+ if (this.iconPair) {
349
+ this.iconPair.showExpanded();
350
+ }
351
+ if (this.expandedToggleIcon && this.collapsedToggleIcon) {
352
+ this.expandedToggleIcon.removeAttribute('hidden');
353
+ this.collapsedToggleIcon.setAttribute('hidden', 'hidden');
354
+ }
355
+ }
356
+ else {
357
+ if (this.subTree)
358
+ this.subTree.hidden = true;
359
+ this.node.setAttribute('aria-expanded', 'false');
360
+ if (this.iconPair) {
361
+ this.iconPair.showCollapsed();
362
+ }
363
+ if (this.expandedToggleIcon && this.collapsedToggleIcon) {
364
+ this.expandedToggleIcon.setAttribute('hidden', 'hidden');
365
+ this.collapsedToggleIcon.removeAttribute('hidden');
366
+ }
367
+ }
368
+ switch (this.loadingState) {
369
+ case 'loading':
370
+ if (this.loadingFailureMessage)
371
+ this.loadingFailureMessage.hidden = true;
372
+ if (this.loadingIndicator)
373
+ this.loadingIndicator.hidden = false;
374
+ break;
375
+ case 'error':
376
+ if (this.loadingIndicator)
377
+ this.loadingIndicator.hidden = true;
378
+ if (this.loadingFailureMessage)
379
+ this.loadingFailureMessage.hidden = false;
380
+ break;
381
+ // success/init case
382
+ default:
383
+ if (this.loadingIndicator)
384
+ this.loadingIndicator.hidden = true;
385
+ if (this.loadingFailureMessage)
386
+ this.loadingFailureMessage.hidden = true;
387
+ }
388
+ };
389
+ _TreeViewSubTreeNodeElement_checkboxElement_get = function _TreeViewSubTreeNodeElement_checkboxElement_get() {
390
+ return this.querySelector('.TreeViewItemCheckbox');
391
+ };
392
+ __decorate([
393
+ target
394
+ ], TreeViewSubTreeNodeElement.prototype, "node", void 0);
395
+ __decorate([
396
+ target
397
+ ], TreeViewSubTreeNodeElement.prototype, "subTree", void 0);
398
+ __decorate([
399
+ target
400
+ ], TreeViewSubTreeNodeElement.prototype, "iconPair", void 0);
401
+ __decorate([
402
+ target
403
+ ], TreeViewSubTreeNodeElement.prototype, "toggleButton", void 0);
404
+ __decorate([
405
+ target
406
+ ], TreeViewSubTreeNodeElement.prototype, "expandedToggleIcon", void 0);
407
+ __decorate([
408
+ target
409
+ ], TreeViewSubTreeNodeElement.prototype, "collapsedToggleIcon", void 0);
410
+ __decorate([
411
+ target
412
+ ], TreeViewSubTreeNodeElement.prototype, "includeFragment", void 0);
413
+ __decorate([
414
+ target
415
+ ], TreeViewSubTreeNodeElement.prototype, "loadingIndicator", void 0);
416
+ __decorate([
417
+ target
418
+ ], TreeViewSubTreeNodeElement.prototype, "loadingFailureMessage", void 0);
419
+ __decorate([
420
+ target
421
+ ], TreeViewSubTreeNodeElement.prototype, "retryButton", void 0);
422
+ TreeViewSubTreeNodeElement = __decorate([
423
+ controller
424
+ ], TreeViewSubTreeNodeElement);
425
+ export { TreeViewSubTreeNodeElement };
426
+ if (!window.customElements.get('tree-view-sub-tree-node')) {
427
+ window.TreeViewSubTreeNodeElement = TreeViewSubTreeNodeElement;
428
+ window.customElements.define('tree-view-sub-tree-node', TreeViewSubTreeNodeElement);
429
+ }