@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,163 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ 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");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
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 _FocusGroupElement_instances, _FocusGroupElement_retainSignal, _FocusGroupElement_abortController, _FocusGroupElement_items_get;
13
+ import '@oddbird/popover-polyfill';
14
+ const validSelectors = ['[role="menuitem"]', '[role="menuitemcheckbox"]', '[role="menuitemradio"]', '[role="option"]'];
15
+ const menuItemSelector = validSelectors.map(selector => `:not([hidden]) > ${selector}`).join(', ');
16
+ const getMnemonicFor = (item) => item.textContent?.trim()[0].toLowerCase();
17
+ const printable = /^\S$/;
18
+ class FocusGroupElement extends HTMLElement {
19
+ constructor() {
20
+ super(...arguments);
21
+ _FocusGroupElement_instances.add(this);
22
+ _FocusGroupElement_retainSignal.set(this, null);
23
+ _FocusGroupElement_abortController.set(this, null);
24
+ }
25
+ get nowrap() {
26
+ return this.hasAttribute('nowrap');
27
+ }
28
+ set nowrap(value) {
29
+ this.toggleAttribute('nowrap', value);
30
+ }
31
+ get direction() {
32
+ if (this.getAttribute('direction') === 'horizontal')
33
+ return 'horizontal';
34
+ return 'vertical';
35
+ }
36
+ set direction(value) {
37
+ this.setAttribute('direction', `${value}`);
38
+ }
39
+ get retain() {
40
+ return this.hasAttribute('retain');
41
+ }
42
+ set retain(value) {
43
+ this.toggleAttribute('retain', value);
44
+ }
45
+ get mnemonics() {
46
+ return this.hasAttribute('mnemonics');
47
+ }
48
+ connectedCallback() {
49
+ __classPrivateFieldSet(this, _FocusGroupElement_abortController, new AbortController(), "f");
50
+ const { signal } = __classPrivateFieldGet(this, _FocusGroupElement_abortController, "f");
51
+ this.addEventListener('keydown', this, { signal });
52
+ this.addEventListener('click', this, { signal });
53
+ this.addEventListener('mouseover', this, { signal });
54
+ this.addEventListener('focusin', this, { signal });
55
+ }
56
+ disconnectedCallback() {
57
+ __classPrivateFieldGet(this, _FocusGroupElement_abortController, "f")?.abort();
58
+ }
59
+ handleEvent(event) {
60
+ const { direction, nowrap } = this;
61
+ if (event.type === 'focusin') {
62
+ if (this.retain && event.target instanceof Element && event.target.matches(menuItemSelector)) {
63
+ __classPrivateFieldGet(this, _FocusGroupElement_retainSignal, "f")?.abort();
64
+ const { signal } = (__classPrivateFieldSet(this, _FocusGroupElement_retainSignal, new AbortController(), "f"));
65
+ for (const item of __classPrivateFieldGet(this, _FocusGroupElement_instances, "a", _FocusGroupElement_items_get)) {
66
+ item.setAttribute('tabindex', item === event.target ? '0' : '-1');
67
+ const popover = event.target.closest('[popover]');
68
+ if (item === event.target && popover?.popover === 'auto' && popover.closest('focus-group') === this) {
69
+ popover.addEventListener('toggle', (toggleEvent) => {
70
+ if (!(toggleEvent.target instanceof Element))
71
+ return;
72
+ if (toggleEvent.newState === 'closed') {
73
+ __classPrivateFieldGet(this, _FocusGroupElement_retainSignal, "f")?.abort();
74
+ item.setAttribute('tabindex', '-1');
75
+ if (popover.id) {
76
+ const invoker = this.querySelector(`[popovertarget="${popover.id}"]`);
77
+ if (invoker) {
78
+ invoker.setAttribute('tabindex', '0');
79
+ }
80
+ else {
81
+ __classPrivateFieldGet(this, _FocusGroupElement_instances, "a", _FocusGroupElement_items_get)[0]?.setAttribute('tabindex', '0');
82
+ }
83
+ }
84
+ }
85
+ }, { signal });
86
+ }
87
+ }
88
+ }
89
+ }
90
+ else if (event instanceof KeyboardEvent) {
91
+ const items = Array.from(__classPrivateFieldGet(this, _FocusGroupElement_instances, "a", _FocusGroupElement_items_get));
92
+ let index = items.indexOf(event.target);
93
+ const key = event.key;
94
+ if (key === 'Up' || key === 'ArrowUp') {
95
+ if (direction === 'vertical' || direction === 'both') {
96
+ index -= index < 0 ? 0 : 1;
97
+ event.preventDefault();
98
+ }
99
+ }
100
+ else if (key === 'Down' || key === 'ArrowDown') {
101
+ if (direction === 'vertical' || direction === 'both') {
102
+ index += 1;
103
+ event.preventDefault();
104
+ }
105
+ }
106
+ else if (event.key === 'Left' || event.key === 'ArrowLeft') {
107
+ if (direction === 'horizontal' || direction === 'both') {
108
+ index -= 1;
109
+ event.preventDefault();
110
+ }
111
+ }
112
+ else if (event.key === 'Right' || event.key === 'ArrowRight') {
113
+ if (direction === 'horizontal' || direction === 'both') {
114
+ index += 1;
115
+ event.preventDefault();
116
+ }
117
+ }
118
+ else if (event.key === 'Home' || event.key === 'PageUp') {
119
+ index = 0;
120
+ event.preventDefault();
121
+ }
122
+ else if (event.key === 'End' || event.key === 'PageDown') {
123
+ index = items.length - 1;
124
+ event.preventDefault();
125
+ }
126
+ else if (this.mnemonics && printable.test(key)) {
127
+ const mnemonic = key.toLowerCase();
128
+ const offset = index > 0 && getMnemonicFor(event.target) === mnemonic ? index : 0;
129
+ index = items.findIndex((item, i) => i > offset && getMnemonicFor(item) === mnemonic);
130
+ if (index < 0 && !nowrap) {
131
+ index = items.findIndex(item => getMnemonicFor(item) === mnemonic);
132
+ }
133
+ }
134
+ else {
135
+ return;
136
+ }
137
+ if (nowrap && index < 0)
138
+ index = 0;
139
+ if (!nowrap && index >= items.length)
140
+ index = 0;
141
+ const focusEl = items.at(Math.min(index, items.length - 1));
142
+ {
143
+ let el = focusEl;
144
+ do {
145
+ el = el.closest(`[popover]:not(:popover-open)`);
146
+ if (el?.popover === 'auto' && !['ArrowRight', 'ArrowLeft'].includes(event.key)) {
147
+ el.showPopover();
148
+ }
149
+ el = el?.parentElement || null;
150
+ } while (el);
151
+ }
152
+ focusEl?.focus();
153
+ }
154
+ }
155
+ }
156
+ _FocusGroupElement_retainSignal = new WeakMap(), _FocusGroupElement_abortController = new WeakMap(), _FocusGroupElement_instances = new WeakSet(), _FocusGroupElement_items_get = function _FocusGroupElement_items_get() {
157
+ return this.querySelectorAll(menuItemSelector);
158
+ };
159
+ export default FocusGroupElement;
160
+ if (!customElements.get('focus-group')) {
161
+ window.FocusGroupElement = FocusGroupElement;
162
+ customElements.define('focus-group', FocusGroupElement);
163
+ }
@@ -0,0 +1,21 @@
1
+ /* CSS for BorderBox::CollapsibleHeader */
2
+
3
+ .CollapsibleHeader {
4
+ cursor: pointer;
5
+ display: flex;
6
+ align-items: center;
7
+ }
8
+
9
+ .Box:has(.CollapsibleHeader--collapsed) {
10
+ border-bottom-left-radius: 0;
11
+ border-bottom-right-radius: 0;
12
+ border-bottom-width: var(--borderWidth-thicker);
13
+ }
14
+
15
+ .Box:has(.CollapsibleHeader--collapsed) .Box-row,.Box:has(.CollapsibleHeader--collapsed) .Box-body,.Box:has(.CollapsibleHeader--collapsed) .Box-footer {
16
+ display: none;
17
+ }
18
+
19
+ .CollapsibleHeader--triggerArea {
20
+ width: 100%;
21
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "open_project/border_box/collapsible_header",
3
+ "selectors": [
4
+ ".CollapsibleHeader",
5
+ ".Box:has(.CollapsibleHeader--collapsed)",
6
+ ".Box:has(.CollapsibleHeader--collapsed) .Box-row",
7
+ ".Box:has(.CollapsibleHeader--collapsed) .Box-body",
8
+ ".Box:has(.CollapsibleHeader--collapsed) .Box-footer",
9
+ ".CollapsibleHeader--triggerArea"
10
+ ]
11
+ }
@@ -0,0 +1,11 @@
1
+ import { CollapsibleElement } from '../collapsible';
2
+ declare class CollapsibleHeaderElement extends CollapsibleElement {
3
+ connectedCallback(): void;
4
+ get baseClass(): string;
5
+ }
6
+ declare global {
7
+ interface Window {
8
+ CollapsibleHeaderElement: typeof CollapsibleHeaderElement;
9
+ }
10
+ }
11
+ export {};
@@ -0,0 +1,21 @@
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
+ import { controller } from '@github/catalyst';
8
+ import { CollapsibleElement } from '../collapsible';
9
+ let CollapsibleHeaderElement = class CollapsibleHeaderElement extends CollapsibleElement {
10
+ connectedCallback() {
11
+ if (!this.closest('.Box')) {
12
+ throw new Error('No surrounding BorderBox found');
13
+ }
14
+ }
15
+ get baseClass() {
16
+ return 'CollapsibleHeader';
17
+ }
18
+ };
19
+ CollapsibleHeaderElement = __decorate([
20
+ controller
21
+ ], CollapsibleHeaderElement);
@@ -0,0 +1,35 @@
1
+ /* CSS for BorderGrid */
2
+
3
+ .BorderGrid {
4
+ display: table;
5
+ width: 100%;
6
+ margin-top: -16px;
7
+ margin-bottom: -16px;
8
+ table-layout: fixed;
9
+ border-collapse: collapse;
10
+ border-style: hidden
11
+ }
12
+
13
+ .BorderGrid .BorderGrid-cell {
14
+ padding-top: 16px;
15
+ padding-bottom: 16px
16
+ }
17
+
18
+ .BorderGrid--spacious {
19
+ margin-top: -24px;
20
+ margin-bottom: -24px
21
+ }
22
+
23
+ .BorderGrid--spacious .BorderGrid-cell {
24
+ padding-top: 24px;
25
+ padding-bottom: 24px
26
+ }
27
+
28
+ .BorderGrid-row {
29
+ display: table-row
30
+ }
31
+
32
+ .BorderGrid-cell {
33
+ display: table-cell;
34
+ border: 1px solid var(--borderColor-muted)
35
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "open_project/border_grid",
3
+ "selectors": [
4
+ ".BorderGrid",
5
+ ".BorderGrid .BorderGrid-cell",
6
+ ".BorderGrid--spacious",
7
+ ".BorderGrid--spacious .BorderGrid-cell",
8
+ ".BorderGrid-row",
9
+ ".BorderGrid-cell"
10
+ ]
11
+ }
@@ -0,0 +1,13 @@
1
+ export declare abstract class CollapsibleElement extends HTMLElement {
2
+ arrowDown: Element;
3
+ arrowUp: Element;
4
+ triggerElement: HTMLElement;
5
+ collapsibleElements: HTMLElement[];
6
+ collapsed: boolean;
7
+ toggleViaKeyboard(event: KeyboardEvent): void;
8
+ toggle(): void;
9
+ attributeChangedCallback(name: string): void;
10
+ hideAll(): void;
11
+ expandAll(): void;
12
+ abstract get baseClass(): string;
13
+ }
@@ -0,0 +1,67 @@
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
+ import { attr, target, targets } from '@github/catalyst';
8
+ // eslint-disable-next-line custom-elements/expose-class-on-global
9
+ export class CollapsibleElement extends HTMLElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.collapsed = false;
13
+ }
14
+ toggleViaKeyboard(event) {
15
+ if (event.code === 'Enter' || event.code === 'Space') {
16
+ event.preventDefault();
17
+ this.toggle();
18
+ }
19
+ }
20
+ toggle() {
21
+ this.collapsed = !this.collapsed;
22
+ }
23
+ attributeChangedCallback(name) {
24
+ if (name === 'data-collapsed') {
25
+ if (this.collapsed) {
26
+ this.hideAll();
27
+ }
28
+ else {
29
+ this.expandAll();
30
+ }
31
+ }
32
+ }
33
+ hideAll() {
34
+ // For whatever reason, setting `hidden` directly does not work on the SVGs
35
+ this.arrowDown?.removeAttribute('hidden');
36
+ this.arrowUp?.setAttribute('hidden', '');
37
+ this.triggerElement.setAttribute('aria-expanded', 'false');
38
+ for (const el of this.collapsibleElements) {
39
+ el.hidden = true;
40
+ }
41
+ this.classList.add(`${this.baseClass}--collapsed`);
42
+ }
43
+ expandAll() {
44
+ this.arrowUp?.removeAttribute('hidden');
45
+ this.arrowDown?.setAttribute('hidden', '');
46
+ this.triggerElement.setAttribute('aria-expanded', 'true');
47
+ for (const el of this.collapsibleElements) {
48
+ el.hidden = false;
49
+ }
50
+ this.classList.remove(`${this.baseClass}--collapsed`);
51
+ }
52
+ }
53
+ __decorate([
54
+ target
55
+ ], CollapsibleElement.prototype, "arrowDown", void 0);
56
+ __decorate([
57
+ target
58
+ ], CollapsibleElement.prototype, "arrowUp", void 0);
59
+ __decorate([
60
+ target
61
+ ], CollapsibleElement.prototype, "triggerElement", void 0);
62
+ __decorate([
63
+ targets
64
+ ], CollapsibleElement.prototype, "collapsibleElements", void 0);
65
+ __decorate([
66
+ attr
67
+ ], CollapsibleElement.prototype, "collapsed", void 0);
@@ -0,0 +1,5 @@
1
+ /* CSS for CollapsibleSection */
2
+
3
+ .CollapsibleSection--triggerArea {
4
+ cursor: pointer;
5
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "open_project/collapsible_section",
3
+ "selectors": [
4
+ ".CollapsibleSection--triggerArea"
5
+ ]
6
+ }
@@ -0,0 +1,10 @@
1
+ import { CollapsibleElement } from './collapsible';
2
+ declare class CollapsibleSectionElement extends CollapsibleElement {
3
+ get baseClass(): string;
4
+ }
5
+ declare global {
6
+ interface Window {
7
+ CollapsibleSectionElement: typeof CollapsibleSectionElement;
8
+ }
9
+ }
10
+ export {};
@@ -0,0 +1,16 @@
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
+ import { controller } from '@github/catalyst';
8
+ import { CollapsibleElement } from './collapsible';
9
+ let CollapsibleSectionElement = class CollapsibleSectionElement extends CollapsibleElement {
10
+ get baseClass() {
11
+ return 'CollapsibleSection';
12
+ }
13
+ };
14
+ CollapsibleSectionElement = __decorate([
15
+ controller
16
+ ], CollapsibleSectionElement);
@@ -0,0 +1,14 @@
1
+ declare class DangerDialogFormHelperElement extends HTMLElement {
2
+ #private;
3
+ checkbox: HTMLInputElement | undefined;
4
+ get form(): HTMLFormElement | null;
5
+ get submitButton(): HTMLInputElement | HTMLButtonElement;
6
+ connectedCallback(): void;
7
+ toggle(): void;
8
+ }
9
+ declare global {
10
+ interface Window {
11
+ DangerDialogFormHelperElement: typeof DangerDialogFormHelperElement;
12
+ }
13
+ }
14
+ export {};
@@ -0,0 +1,54 @@
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 _DangerDialogFormHelperElement_instances, _DangerDialogFormHelperElement_reset;
13
+ import { controller, target } from '@github/catalyst';
14
+ const SUBMIT_BUTTON_SELECTOR = 'input[type=submit],button[type=submit],button[data-submit-dialog-id]';
15
+ let DangerDialogFormHelperElement = class DangerDialogFormHelperElement extends HTMLElement {
16
+ constructor() {
17
+ super(...arguments);
18
+ _DangerDialogFormHelperElement_instances.add(this);
19
+ }
20
+ get form() {
21
+ return this.querySelector('form');
22
+ }
23
+ get submitButton() {
24
+ return this.querySelector(SUBMIT_BUTTON_SELECTOR);
25
+ }
26
+ connectedCallback() {
27
+ // makes the custom element behave as if it doesn't exist in the DOM structure, passing all
28
+ // styles directly to its children.
29
+ this.style.display = 'contents';
30
+ if (this.form) {
31
+ this.form.style.display = 'contents';
32
+ }
33
+ __classPrivateFieldGet(this, _DangerDialogFormHelperElement_instances, "m", _DangerDialogFormHelperElement_reset).call(this);
34
+ }
35
+ toggle() {
36
+ if (this.checkbox) {
37
+ this.submitButton.disabled = !this.checkbox.checked;
38
+ }
39
+ }
40
+ };
41
+ _DangerDialogFormHelperElement_instances = new WeakSet();
42
+ _DangerDialogFormHelperElement_reset = function _DangerDialogFormHelperElement_reset() {
43
+ this.toggle();
44
+ };
45
+ __decorate([
46
+ target
47
+ ], DangerDialogFormHelperElement.prototype, "checkbox", void 0);
48
+ DangerDialogFormHelperElement = __decorate([
49
+ controller
50
+ ], DangerDialogFormHelperElement);
51
+ if (!window.customElements.get('danger-dialog-form-helper')) {
52
+ window.DangerDialogFormHelperElement = DangerDialogFormHelperElement;
53
+ window.customElements.define('danger-dialog-form-helper', DangerDialogFormHelperElement);
54
+ }
@@ -0,0 +1,6 @@
1
+ /* CSS for DragHandle */
2
+
3
+ .DragHandle {
4
+ cursor: move;
5
+ color: var(--fgColor-muted);
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "open_project/drag_handle",
3
+ "selectors": [
4
+ ".DragHandle"
5
+ ]
6
+ }
@@ -0,0 +1,29 @@
1
+ import { SegmentedControlElement } from '../alpha/segmented_control';
2
+ import { TreeViewElement } from '../alpha/tree_view/tree_view';
3
+ import { TreeViewSubTreeNodeElement } from '../alpha/tree_view/tree_view_sub_tree_node_element';
4
+ export type FilterFn = (node: HTMLElement, query: string, filterMode?: string) => Range[] | null;
5
+ export declare class FilterableTreeViewElement extends HTMLElement {
6
+ #private;
7
+ filterInput: HTMLInputElement;
8
+ filterModeControlList: HTMLElement;
9
+ treeViewList: HTMLElement;
10
+ noResultsMessage: HTMLElement;
11
+ includeSubItemsCheckBox: HTMLInputElement;
12
+ connectedCallback(): void;
13
+ disconnectedCallback(): void;
14
+ handleEvent(event: Event): void;
15
+ get filterModeControl(): SegmentedControlElement | null;
16
+ get treeView(): TreeViewElement | null;
17
+ set filterFn(newFn: FilterFn);
18
+ get filterFn(): FilterFn;
19
+ defaultFilterFn(node: HTMLElement, query: string, filterMode?: string): Range[] | null;
20
+ get filterMode(): string | null;
21
+ get queryString(): string;
22
+ eachDescendantDepthFirst(node: HTMLElement, level: number, ancestry: TreeViewSubTreeNodeElement[]): Generator<[NodeListOf<HTMLElement>, TreeViewSubTreeNodeElement[]]>;
23
+ eachShallowestCheckedSubTree(root: TreeViewSubTreeNodeElement): Generator<TreeViewSubTreeNodeElement>;
24
+ }
25
+ declare global {
26
+ interface Window {
27
+ FilterableTreeViewElement: typeof FilterableTreeViewElement;
28
+ }
29
+ }