openproject-primer_view_components 0.71.0 → 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 (120) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/app/assets/javascripts/components/primer/open_project/filterable_tree_view.d.ts +2 -2
  4. data/app/assets/javascripts/components/primer/primer.d.ts +4 -4
  5. data/app/assets/javascripts/primer_view_components.js +1 -1
  6. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  7. data/app/assets/styles/primer_view_components.css +1 -1
  8. data/app/assets/styles/primer_view_components.css.map +1 -1
  9. data/app/components/primer/{open_project → alpha}/file_tree_view/directory_node.rb +1 -1
  10. data/app/components/primer/{open_project → alpha}/file_tree_view/file_node.rb +1 -1
  11. data/app/components/primer/{open_project → alpha}/file_tree_view.rb +1 -1
  12. data/app/components/primer/{open_project → alpha}/skeleton_box.css.json +1 -1
  13. data/app/components/primer/{open_project → alpha}/skeleton_box.css.map +1 -1
  14. data/app/components/primer/{open_project → alpha}/skeleton_box.pcss +1 -1
  15. data/app/components/primer/{open_project → alpha}/skeleton_box.rb +3 -1
  16. data/app/components/primer/{open_project → alpha}/tree_view/icon.rb +2 -2
  17. data/app/components/primer/{open_project → alpha}/tree_view/icon_pair.rb +4 -4
  18. data/app/components/primer/{open_project → alpha}/tree_view/leading_action.rb +2 -2
  19. data/app/components/primer/{open_project → alpha}/tree_view/leaf_node.rb +6 -6
  20. data/app/components/primer/{open_project → alpha}/tree_view/loading_failure_message.rb +2 -2
  21. data/app/components/primer/{open_project → alpha}/tree_view/node.rb +17 -17
  22. data/app/components/primer/{open_project → alpha}/tree_view/skeleton_loader.html.erb +3 -3
  23. data/app/components/primer/{open_project → alpha}/tree_view/skeleton_loader.rb +4 -4
  24. data/app/components/primer/{open_project → alpha}/tree_view/spinner_loader.html.erb +2 -2
  25. data/app/components/primer/{open_project → alpha}/tree_view/spinner_loader.rb +4 -4
  26. data/app/components/primer/{open_project → alpha}/tree_view/sub_tree.html.erb +1 -1
  27. data/app/components/primer/{open_project → alpha}/tree_view/sub_tree.rb +10 -10
  28. data/app/components/primer/{open_project → alpha}/tree_view/sub_tree_container.rb +2 -2
  29. data/app/components/primer/{open_project → alpha}/tree_view/sub_tree_node.rb +15 -15
  30. data/app/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.js +0 -1
  31. data/app/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.ts +0 -1
  32. data/app/components/primer/{open_project → alpha}/tree_view/visual.rb +2 -2
  33. data/app/components/primer/{open_project → alpha}/tree_view.css +1 -1
  34. data/app/components/primer/{open_project → alpha}/tree_view.css.json +1 -3
  35. data/app/components/primer/alpha/tree_view.css.map +1 -0
  36. data/app/components/primer/{open_project → alpha}/tree_view.html.erb +1 -0
  37. data/app/components/primer/{open_project → alpha}/tree_view.pcss +6 -15
  38. data/app/components/primer/{open_project → alpha}/tree_view.rb +14 -11
  39. data/app/components/primer/beta/breadcrumbs.css +1 -1
  40. data/app/components/primer/beta/breadcrumbs.css.json +0 -1
  41. data/app/components/primer/beta/breadcrumbs.css.map +1 -1
  42. data/app/components/primer/beta/breadcrumbs.pcss +2 -8
  43. data/app/components/primer/beta/progress_bar.css +1 -1
  44. data/app/components/primer/beta/progress_bar.css.map +1 -1
  45. data/app/components/primer/beta/progress_bar.pcss +3 -2
  46. data/app/components/primer/beta/relative_time.rb +3 -0
  47. data/app/components/primer/open_project/filterable_tree_view/sub_tree.rb +1 -1
  48. data/app/components/primer/open_project/filterable_tree_view.d.ts +2 -2
  49. data/app/components/primer/open_project/filterable_tree_view.html.erb +1 -1
  50. data/app/components/primer/open_project/filterable_tree_view.js +2 -2
  51. data/app/components/primer/open_project/filterable_tree_view.rb +4 -4
  52. data/app/components/primer/open_project/filterable_tree_view.ts +2 -2
  53. data/app/components/primer/primer.d.ts +4 -4
  54. data/app/components/primer/primer.js +4 -4
  55. data/app/components/primer/primer.pcss +2 -2
  56. data/app/components/primer/primer.ts +4 -4
  57. data/app/controllers/primer/view_components/tree_view_items_controller.rb +1 -1
  58. data/app/forms/check_box_with_nested_form.rb +10 -10
  59. data/app/forms/radio_button_with_nested_form.rb +16 -16
  60. data/app/lib/primer/experimental_slot_helpers.rb +2 -2
  61. data/app/views/primer/view_components/tree_view_items/async_alpha.html_fragment.erb +1 -1
  62. data/app/views/primer/view_components/tree_view_items/index.html_fragment.erb +1 -1
  63. data/lib/primer/view_components/version.rb +1 -1
  64. data/previews/primer/{open_project → alpha}/file_tree_view_preview/default.html.erb +1 -1
  65. data/previews/primer/{open_project → alpha}/file_tree_view_preview/playground.html.erb +1 -1
  66. data/previews/primer/{open_project → alpha}/file_tree_view_preview.rb +1 -1
  67. data/previews/primer/{open_project → alpha}/skeleton_box_preview.rb +3 -3
  68. data/previews/primer/{open_project → alpha}/tree_view_preview/async_alpha.html.erb +1 -1
  69. data/previews/primer/{open_project → alpha}/tree_view_preview/buttons.html.erb +1 -1
  70. data/previews/primer/{open_project → alpha}/tree_view_preview/default.html.erb +2 -2
  71. data/previews/primer/{open_project → alpha}/tree_view_preview/empty.html.erb +1 -1
  72. data/previews/primer/alpha/tree_view_preview/form_input.html.erb +14 -0
  73. data/previews/primer/{open_project → alpha}/tree_view_preview/leaf_node_playground.html.erb +1 -1
  74. data/previews/primer/{open_project → alpha}/tree_view_preview/links.html.erb +1 -1
  75. data/previews/primer/{open_project → alpha}/tree_view_preview/loading_failure.html.erb +1 -1
  76. data/previews/primer/{open_project → alpha}/tree_view_preview/loading_skeleton.html.erb +1 -1
  77. data/previews/primer/{open_project → alpha}/tree_view_preview/loading_spinner.html.erb +1 -1
  78. data/previews/primer/{open_project → alpha}/tree_view_preview/playground.html.erb +1 -1
  79. data/previews/primer/{open_project → alpha}/tree_view_preview.rb +17 -8
  80. data/previews/primer/open_project/filterable_tree_view_preview/stress_test.html.erb +28 -0
  81. data/static/arguments.json +1560 -1542
  82. data/static/audited_at.json +17 -17
  83. data/static/classes.json +5 -5
  84. data/static/constants.json +101 -101
  85. data/static/info_arch.json +6203 -6170
  86. data/static/previews.json +34 -21
  87. data/static/statuses.json +17 -17
  88. metadata +86 -84
  89. data/app/components/primer/open_project/tree_view.css.map +0 -1
  90. /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view.d.ts +0 -0
  91. /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_icon_pair_element.d.ts +0 -0
  92. /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.d.ts +0 -0
  93. /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_roving_tab_index.d.ts +0 -0
  94. /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.d.ts +0 -0
  95. /data/app/components/primer/{open_project → alpha}/file_tree_view/directory_node.html.erb +0 -0
  96. /data/app/components/primer/{open_project → alpha}/file_tree_view/file_node.html.erb +0 -0
  97. /data/app/components/primer/{open_project → alpha}/skeleton_box.css +0 -0
  98. /data/app/components/primer/{open_project → alpha}/skeleton_box.html.erb +0 -0
  99. /data/app/components/primer/{open_project → alpha}/tree_view/icon.html.erb +0 -0
  100. /data/app/components/primer/{open_project → alpha}/tree_view/icon_pair.html.erb +0 -0
  101. /data/app/components/primer/{open_project → alpha}/tree_view/leading_action.html.erb +0 -0
  102. /data/app/components/primer/{open_project → alpha}/tree_view/leaf_node.html.erb +0 -0
  103. /data/app/components/primer/{open_project → alpha}/tree_view/loading_failure_message.html.erb +0 -0
  104. /data/app/components/primer/{open_project → alpha}/tree_view/node.html.erb +0 -0
  105. /data/app/components/primer/{open_project → alpha}/tree_view/sub_tree_container.html.erb +0 -0
  106. /data/app/components/primer/{open_project → alpha}/tree_view/sub_tree_node.html.erb +0 -0
  107. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view.d.ts +0 -0
  108. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view.js +0 -0
  109. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view.ts +0 -0
  110. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_icon_pair_element.d.ts +0 -0
  111. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_icon_pair_element.js +0 -0
  112. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_icon_pair_element.ts +0 -0
  113. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.d.ts +0 -0
  114. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_roving_tab_index.d.ts +0 -0
  115. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_roving_tab_index.js +0 -0
  116. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_roving_tab_index.ts +0 -0
  117. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.d.ts +0 -0
  118. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.js +0 -0
  119. /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.ts +0 -0
  120. /data/app/components/primer/{open_project → alpha}/tree_view/visual.html.erb +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["tree_view.pcss"],"names":[],"mappings":"AAEA,sBAGE,eAAgB,CADhB,QAAS,CADT,SAsUF,CArTE,oCACE,YAeF,CAbE,2DACE,uDAOF,CALE,8BAHF,2DAII,+BAAgC,CAEhC,iBAEJ,CADE,CAGF,kEACE,sBACF,CAGF,6CACE,SAAU,CACV,mBAAoB,CACpB,sBAAuB,CAOvB,wCAAyC,CADzC,4BAA6B,CAH7B,YAAa,CAEb,sCAAuC,CAIvC,yDAA0D,CAD1D,6FAA8F,CAN9F,iBAAkB,CAElB,UAAW,CAOX,gEAAmE,CACnE,+DA4BF,CA1BE,wDACE,yDAMF,CAJE,8BAHF,wDAII,uBAA8B,CAC9B,mBAEJ,CADE,CAGF,wBA1BF,6CA2BI,qBAAsB,CACtB,yBAeJ,CAdE,CAEA,qFAEE,wBAA6B,CAD7B,cAMF,CAHE,8BAJF,qFAKI,YAEJ,CADE,CAGF,qFACE,uDACF,CAGF,4EACE,+BACF,CAGA,wGACE,4DAwBF,CApBE,mHAaE,sCAAuC,CACvC,wCAAyC,CARzC,UAAW,CADX,aAAc,CAFd,gCAAmC,CAFnC,iBAAkB,CAClB,mCAAoC,CAEpC,YAeF,CAHE,8BAhBF,mHAiBI,8BAEJ,CADE,CAIJ,0CAWE,sBAAuB,CAHvB,0BAA2B,CAI3B,cAAe,CAXf,YAAa,CAQb,gBAAiB,CAPjB,WAAY,CAQZ,sBAAuB,CAHvB,kEAMF,CAEA,qDACE,yDACF,CAEA,6CAEE,oDAAqD,CADrD,iDAEF,CAGA,yGACE,iCAA0B,CAA1B,yBAA0B,CAC1B,iDACF,CAEA,qEACE,kBACF,CAEA,2CAWE,cAAe,CAVf,YAAa,CAmBb,8BAA+B,CAD/B,iBAAkB,CAjBlB,WAAY,CAgBZ,+EAAkF,CAdlF,YAAa,CADb,4BAA6B,CAc7B,mFAAsF,CAFtF,gFAqFF,CA9EE,iHAfA,wBAA6B,CAC7B,WAAY,CAHZ,eAAgB,CAIhB,yBAA0B,CAH1B,wBAAiB,CAAjB,gBAAiB,CAIjB,uCAuBA,CAXA,sEAOE,wCAAyC,CALzC,iCAAkC,CADlC,iBAAkB,CAOlB,qCAGF,CAGE,yFACE,8CAA+C,CAC/C,oDAAqD,CACrD,0EAQF,CALE,qGAGE,kEAAwE,CADxE,kCAAmC,CADnC,kBAGF,CAKF,0FACE,8CAA+C,CAC/C,oDAAqD,CACrD,0EASF,CANE,sGAGE,kEAAwE,CACxE,cAAe,CAFf,wUAAia,CADja,kBAIF,CAIJ,oEACE,mBAgCF,CA9BE,6FACE,qCACF,CAME,yLACE,oCACF,CAKA,qBAEE,qGACE,kBACF,CAMF,0EAEE,wBAA6B,CAD7B,kBAEF,CARA,CAaN,+CACE,iCAAkC,CAClC,aAAc,CACd,OACF,CAEA,gFACE,eAAgB,CAChB,sBAAuB,CACvB,kBACF,CAEA,iFAEE,qBACF,CAEA,0CAOE,kBAAmB,CADnB,0BAA2B,CAL3B,YAAa,CAIb,uCAGF,CAEA,iDAEE,0BAA2B,CAD3B,YAAa,CAEb,uBAKF,CAHE,6DACE,aACF,CAGF,6CAQE,qCAAsC,CACtC,0CAA2C,CAP3C,WAAY,CADZ,UASF,CAQA,qBACE,6CACE,kBACF,CAEA,6GAEE,qCACF,CACF,CAEA,8CAGE,UAAW,CAGX,WAAY,CACZ,eAAgB,CAHhB,SAAU,CAHV,iBAAkB,CAClB,SAAU,CAMV,kBAAsB,CAEtB,cAAe,CADf,kBAEF,CAGF,oCAEE,kBAAmB,CACnB,gBAAkB,CAFlB,YAAa,CAGb,WAyBF,CAvBE,wBANF,oCAOI,cAsBJ,CArBE,CAEA,sDACE,6BACF,CAEA,sDACE,6BACF,CAEA,sDACE,6BACF,CAEA,sDACE,6BACF,CAEA,sDACE,6BACF,CAGF,4BACE,wCACF,CAEA,wBAKE,kBAAmB,CAJnB,YAAa,CAEb,SAAW,CADX,8BAA+B,CAE/B,UAEF","file":"tree_view.css","sourcesContent":["/* stylelint-disable selector-max-type -- Copied from primer/react */\n\n.TreeViewRootUlStyles {\n padding: 0;\n margin: 0;\n list-style: none;\n\n /*\n * WARNING: This is a performance optimization.\n *\n * We define styles for the tree items at the root level of the tree\n * to avoid recomputing the styles for each item when the tree updates.\n * We're sacrificing maintainability for performance because TreeView\n * needs to be performant enough to handle large trees (thousands of items).\n *\n * This is intended to be a temporary solution until we can improve the\n * performance of our styling patterns.\n *\n * Do NOT copy this pattern without understanding the tradeoffs.\n */\n & .TreeViewItem {\n outline: none;\n\n &:focus-visible > div {\n box-shadow: var(--boxShadow-thick) var(--fgColor-accent);\n\n @media (forced-colors: active) {\n outline: 2px solid HighlightText;\n /* stylelint-disable-next-line declaration-property-value-no-unknown -- Copied from primer/react */\n outline-offset: -2;\n }\n }\n\n &[data-has-leading-action] {\n --has-leading-action: 1;\n }\n }\n\n & .TreeViewItemContainer {\n --level: 1;\n --toggle-width: 1rem;\n --min-item-height: 2rem;\n\n position: relative;\n display: grid;\n width: 100%;\n font-size: var(--text-body-size-medium);\n color: var(--fgColor-default);\n border-radius: var(--borderRadius-medium);\n grid-template-columns: var(--spacer-width) var(--leading-action-width) var(--toggle-width) 1fr;\n grid-template-areas: 'spacer leadingAction toggle content';\n\n --leading-action-width: calc(var(--has-leading-action, 0) * 1.5rem);\n --spacer-width: calc(calc(var(--level) - 1) * (var(--toggle-width) / 2));\n\n &:hover {\n background-color: var(--control-transparent-bgColor-hover);\n\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: -2px;\n }\n }\n\n @media (pointer: coarse) {\n --toggle-width: 1.5rem;\n --min-item-height: 2.75rem;\n }\n\n &:has(.TreeViewFailureMessage):hover {\n cursor: default;\n background-color: transparent;\n\n @media (forced-colors: active) {\n outline: none;\n }\n }\n\n &:has([role='treeitem']:focus-visible) {\n box-shadow: var(--boxShadow-thick) var(--fgColor-accent);\n }\n }\n\n &:where([data-omit-spacer='true']) .TreeViewItemContainer {\n grid-template-columns: 0 0 0 1fr;\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n & .TreeViewItem > .TreeViewItemContainer:has(.TreeViewItemContent[aria-current='true']) {\n background-color: var(--control-transparent-bgColor-selected);\n\n /* Current item indicator */\n /* stylelint-disable-next-line selector-max-specificity -- Copied from primer/react */\n &::after {\n position: absolute;\n top: calc(50% - var(--base-size-12));\n left: calc(-1 * var(--base-size-8));\n width: 0.25rem;\n height: 1.5rem;\n content: '';\n\n /*\n * Use fgColor accent for consistency across all themes. Using the \"correct\" variable,\n * --bgColor-accent-emphasis, causes vrt failures for dark high contrast mode\n */\n /* stylelint-disable-next-line primer/colors */\n background-color: var(--fgColor-accent);\n border-radius: var(--borderRadius-medium);\n\n @media (forced-colors: active) {\n background-color: HighlightText;\n }\n }\n }\n\n & .TreeViewItemToggle {\n display: flex;\n height: 100%;\n\n /* The toggle should appear vertically centered for single-line items, but remain at the top for items that wrap\n across more lines. */\n /* stylelint-disable-next-line primer/spacing */\n padding-top: calc(var(--min-item-height) / 2 - var(--base-size-12) / 2);\n color: var(--fgColor-muted);\n grid-area: toggle;\n justify-content: center;\n align-items: flex-start;\n cursor: pointer;\n }\n\n & .TreeViewItemToggleHover:hover {\n background-color: var(--control-transparent-bgColor-hover);\n }\n\n & .TreeViewItemToggleEnd {\n border-top-left-radius: var(--borderRadius-medium);\n border-bottom-left-radius: var(--borderRadius-medium);\n }\n\n /* stylelint-disable-next-line selector-no-qualifying-type */\n & a.TreeViewItemContent:hover, button.TreeViewItemContent:hover {\n text-decoration: underline;\n text-decoration-color: var(--control-fgColor-rest);\n }\n\n & :has(.TreeViewItemContent[aria-disabled=\"true\"]) {\n cursor: not-allowed;\n }\n\n & .TreeViewItemContent {\n display: flex;\n height: 100%;\n padding: 0 var(--base-size-8);\n outline: none;\n text-align: left;\n user-select: none;\n background-color: transparent;\n border: none;\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n cursor: pointer;\n\n /* The dynamic top and bottom padding to maintain the minimum item height for single line items */\n /* stylelint-disable-next-line primer/spacing */\n padding-top: calc((var(--min-item-height) - var(--custom-line-height, 1.3rem)) / 2);\n /* stylelint-disable-next-line primer/spacing */\n padding-bottom: calc((var(--min-item-height) - var(--custom-line-height, 1.3rem)) / 2);\n line-height: var(--custom-line-height, var(--text-body-lineHeight-medium, 1.4285));\n grid-area: content;\n gap: var(--stack-gap-condensed);\n\n & .TreeViewItemCheckbox {\n position: relative;\n color: var(--control-fgColor-rest);\n text-align: left;\n user-select: none;\n background-color: transparent;\n border: none;\n border-radius: var(--borderRadius-medium);\n transition: background 33.333ms linear;\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n }\n\n &[aria-checked='true'] {\n & .FormControl-checkbox {\n background: var(--control-checked-bgColor-rest);\n border-color: var(--control-checked-borderColor-rest);\n transition: background-color, border-color 80ms cubic-bezier(0.32, 0, 0.67, 0) 0ms; /* unchecked -> checked */\n\n /* stylelint-disable-next-line max-nesting-depth, selector-max-specificity -- Copied from primer/react */\n &::before {\n visibility: visible;\n transition: visibility 0s linear 0s;\n animation: checkmarkIn 80ms cubic-bezier(0.65, 0, 0.35, 1) forwards 80ms;\n }\n }\n }\n\n &[aria-checked='mixed'] {\n & .FormControl-checkbox {\n background: var(--control-checked-bgColor-rest);\n border-color: var(--control-checked-borderColor-rest);\n transition: background-color, border-color 80ms cubic-bezier(0.32, 0, 0.67, 0) 0ms; /* unchecked -> checked */\n\n /* stylelint-disable-next-line max-nesting-depth, selector-max-specificity -- Copied from primer/react */\n &::before {\n visibility: visible;\n mask-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMiIgdmlld0JveD0iMCAwIDEwIDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMCAxQzAgMC40NDc3MTUgMC40NDc3MTUgMCAxIDBIOUM5LjU1MjI5IDAgMTAgMC40NDc3MTUgMTAgMUMxMCAxLjU1MjI4IDkuNTUyMjkgMiA5IDJIMUMwLjQ0NzcxNSAyIDAgMS41NTIyOCAwIDFaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K');\n animation: checkmarkIn 80ms cubic-bezier(0.65, 0, 0.35, 1) forwards 80ms;\n clip-path: none;\n }\n }\n }\n\n &[aria-disabled='true'] {\n pointer-events: none;\n\n & .TreeViewItemContentText {\n color: var(--control-fgColor-disabled);\n }\n\n & .TreeViewItemVisual {\n fill: var(--control-fgColor-disabled);\n\n /* stylelint-disable-next-line max-nesting-depth, selector-max-compound-selectors, selector-max-specificity */\n & svg {\n fill: var(--control-fgColor-disabled);\n }\n }\n\n & .FormControl-checkbox {\n /* stylelint-disable-next-line max-nesting-depth */\n @media (hover: hover) {\n /* stylelint-disable-next-line max-nesting-depth, selector-max-specificity */\n &:hover {\n cursor: not-allowed;\n }\n }\n }\n\n @media (hover: hover) {\n /* stylelint-disable-next-line max-nesting-depth */\n &:hover {\n cursor: not-allowed;\n background-color: transparent;\n }\n }\n }\n }\n\n & .TreeViewItemContentText {\n color: var(--control-fgColor-rest);\n flex: 1 1 auto;\n width: 0;\n }\n\n &:where([data-truncate-text='true']) .TreeViewItemContentText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &:where([data-truncate-text='false']) .TreeViewItemContentText {\n /* stylelint-disable-next-line declaration-property-value-keyword-no-deprecated -- Copied from primer/react */\n word-break: break-word;\n }\n\n & .TreeViewItemVisual {\n display: flex;\n\n /* The visual icons should appear vertically centered for single-line items, but remain at the top for items that wrap\n across more lines. */\n height: var(--custom-line-height, 1.3rem);\n color: var(--fgColor-muted);\n align-items: center;\n }\n\n & .TreeViewItemLeadingAction {\n display: flex;\n color: var(--fgColor-muted);\n grid-area: leadingAction;\n\n & > button {\n flex-shrink: 1;\n }\n }\n\n & .TreeViewItemLevelLine {\n width: 100%;\n height: 100%;\n\n /*\n * On devices without hover, the nesting indicator lines\n * appear at all times.\n */\n border-color: var(--borderColor-muted);\n border-right: var(--borderWidth-thin) solid;\n }\n\n /*\n * On devices with :hover support, the nesting indicator lines\n * fade in when the user mouses over the entire component,\n * or when there's focus inside the component. This makes\n * sure the component remains simple when not in use.\n */\n @media (hover: hover) {\n .TreeViewItemLevelLine {\n border-color: transparent;\n }\n\n &:hover .TreeViewItemLevelLine,\n &:focus-within .TreeViewItemLevelLine {\n border-color: var(--borderColor-muted);\n }\n }\n\n & .TreeViewVisuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n /* stylelint-disable-next-line primer/spacing */\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n}\n\n.TreeViewSkeletonItemContainerStyle {\n display: flex;\n align-items: center;\n column-gap: 0.5rem;\n height: 2rem;\n\n @media (pointer: coarse) {\n height: 2.75rem;\n }\n\n &:nth-of-type(5n + 1) {\n --tree-item-loading-width: 67%;\n }\n\n &:nth-of-type(5n + 2) {\n --tree-item-loading-width: 47%;\n }\n\n &:nth-of-type(5n + 3) {\n --tree-item-loading-width: 73%;\n }\n\n &:nth-of-type(5n + 4) {\n --tree-item-loading-width: 64%;\n }\n\n &:nth-of-type(5n + 5) {\n --tree-item-loading-width: 50%;\n }\n}\n\n.TreeItemSkeletonTextStyles {\n width: var(--tree-item-loading-width, 67%);\n}\n\n.TreeViewFailureMessage {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 0.5rem;\n width: 100%;\n align-items: center;\n}\n"]}
@@ -3,6 +3,7 @@
3
3
  <%= @form_arguments[:builder].hidden_field(@form_arguments[:name], multiple: true, skip_default_ids: true, form: "", data: { target: "tree-view.formInputPrototype" }) %>
4
4
  <div data-target="tree-view.formInputContainer"></div>
5
5
  <% end %>
6
+
6
7
  <%= render(Primer::BaseComponent.new(**@system_arguments)) do %>
7
8
  <% nodes.each do |node| %>
8
9
  <%= node %>
@@ -143,7 +143,7 @@
143
143
  text-decoration-color: var(--control-fgColor-rest);
144
144
  }
145
145
 
146
- & :has(.TreeViewItemContent[aria-disabled=true]) {
146
+ & :has(.TreeViewItemContent[aria-disabled="true"]) {
147
147
  cursor: not-allowed;
148
148
  }
149
149
 
@@ -213,7 +213,7 @@
213
213
  }
214
214
  }
215
215
 
216
- &[aria-disabled="true"] {
216
+ &[aria-disabled='true'] {
217
217
  pointer-events: none;
218
218
 
219
219
  & .TreeViewItemContentText {
@@ -223,13 +223,16 @@
223
223
  & .TreeViewItemVisual {
224
224
  fill: var(--control-fgColor-disabled);
225
225
 
226
+ /* stylelint-disable-next-line max-nesting-depth, selector-max-compound-selectors, selector-max-specificity */
226
227
  & svg {
227
228
  fill: var(--control-fgColor-disabled);
228
229
  }
229
230
  }
230
231
 
231
232
  & .FormControl-checkbox {
233
+ /* stylelint-disable-next-line max-nesting-depth */
232
234
  @media (hover: hover) {
235
+ /* stylelint-disable-next-line max-nesting-depth, selector-max-specificity */
233
236
  &:hover {
234
237
  cursor: not-allowed;
235
238
  }
@@ -237,31 +240,19 @@
237
240
  }
238
241
 
239
242
  @media (hover: hover) {
243
+ /* stylelint-disable-next-line max-nesting-depth */
240
244
  &:hover {
241
245
  cursor: not-allowed;
242
246
  background-color: transparent;
243
247
  }
244
248
  }
245
249
  }
246
-
247
- & ::highlight(primer-filterable-tree-view-search-results) {
248
- background-color: var(--label-yellow-bgColor-active);
249
- color: var(--fgColor-default);
250
- }
251
-
252
- & mark {
253
- background-color: var(--label-yellow-bgColor-active);
254
- color: var(--fgColor-default);
255
- }
256
250
  }
257
251
 
258
252
  & .TreeViewItemContentText {
259
253
  color: var(--control-fgColor-rest);
260
254
  flex: 1 1 auto;
261
255
  width: 0;
262
- /* Do not remove, as otherwise the filter result of the filterableTreeView will not be shown in Safari
263
- see: https://bugs.webkit.org/show_bug.cgi?id=278455 */
264
- -webkit-user-select: auto;
265
256
  }
266
257
 
267
258
  &:where([data-truncate-text='true']) .TreeViewItemContentText {
@@ -6,7 +6,7 @@
6
6
  # following describes how the components fit together at a high level, using React-like syntax. Each element
7
7
  # in the diagram corresponds to one of three types of object:
8
8
  #
9
- # 1. Elements with TitleCase tags represent components in the Primer::OpenProject::TreeView namespace, eg. <LeafNode>.
9
+ # 1. Elements with TitleCase tags represent components in the Primer::Alpha::TreeView namespace, eg. <LeafNode>.
10
10
  # 2. Elements with dasherized-tags are web components/custom elements, eg. <tree-view>.
11
11
  # 3. Elements with lowercase tags are regular 'ol HTML elements, eg. <ul>.
12
12
  #
@@ -143,7 +143,7 @@
143
143
  # </SubTree>
144
144
 
145
145
  module Primer
146
- module OpenProject
146
+ module Alpha
147
147
  # TreeView is a hierarchical list of items that may have a parent-child relationship where children
148
148
  # can be toggled into view by expanding or collapsing their parent item.
149
149
  #
@@ -169,7 +169,7 @@ module Primer
169
169
  # Providing items statically is done using the `leaf` and `sub_tree` slots:
170
170
  #
171
171
  # ```erb
172
- # <%= render(Primer::OpenProject::TreeView.new) do |tree| %>
172
+ # <%= render(Primer::Alpha::TreeView.new) do |tree| %>
173
173
  # <% tree.with_sub_tree(label: "Directory") do |sub_tree| %>
174
174
  # <% sub_tree.with_leaf(label: "File 1")
175
175
  # <% end %>
@@ -186,7 +186,7 @@ module Primer
186
186
  # the URL to fetch nodes from:
187
187
  #
188
188
  # ```erb
189
- # <%= render(Primer::OpenProject::TreeView.new) do |tree| %>
189
+ # <%= render(Primer::Alpha::TreeView.new) do |tree| %>
190
190
  # <% tree.with_sub_tree(label: "Directory") do |sub_tree| %>
191
191
  # <% sub_tree.with_loading_spinner(src: primer_view_components.tree_view_items_path) %>
192
192
  # <% end %>
@@ -212,10 +212,10 @@ module Primer
212
212
  # Mime::Type.register("text/fragment+html", :html_fragment)
213
213
  # ```
214
214
  #
215
- # Render a `Primer::OpenProject::TreeView::SubTree` in the action's template, tree_view_items/show.html_fragment.erb:
215
+ # Render a `Primer::Alpha::TreeView::SubTree` in the action's template, tree_view_items/show.html_fragment.erb:
216
216
  #
217
217
  # ```erb
218
- # <%= render(Primer::OpenProject::TreeView::SubTree.new(path: @path, node_variant: :div)) do |tree| %>
218
+ # <%= render(Primer::Alpha::TreeView::SubTree.new(path: @path, node_variant: :div)) do |tree| %>
219
219
  # <% tree.with_leaf(...) %>
220
220
  # <% tree.with_sub_tree(...) do |sub_tree| %>
221
221
  # ...
@@ -355,22 +355,24 @@ module Primer
355
355
  # both the `treeViewNodeChecked` and `treeViewBeforeNodeChecked` events provide an array of `TreeViewNodeInfo`
356
356
  # objects, which contain entries for every modified node in the tree.
357
357
  class TreeView < Primer::Component
358
+ status :alpha
359
+
358
360
  DEFAULT_NODE_VARIANT = :div
359
361
  NODE_VARIANT_OPTIONS = [DEFAULT_NODE_VARIANT, :anchor, :button].freeze
360
362
 
361
363
  # @!parse
362
364
  # # Adds an leaf node to the tree. Leaf nodes are nodes that do not have children.
363
365
  # #
364
- # # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::OpenProject::TreeView::LeafNode) %>
365
- # # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::OpenProject::TreeView::LeafNode) %>, or whatever class is passed as the `component_klass` argument.
366
+ # # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::Alpha::TreeView::LeafNode) %>
367
+ # # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::Alpha::TreeView::LeafNode) %>, or whatever class is passed as the `component_klass` argument.
366
368
  # def with_leaf(**system_arguments, &block)
367
369
  # end
368
370
 
369
371
  # @!parse
370
372
  # # Adds a sub-tree node to the tree. Sub-trees are nodes that have children, which can be both leaf nodes and other sub-trees.
371
373
  # #
372
- # # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::OpenProject::TreeView::SubTreeNode) %>
373
- # # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::OpenProject::TreeView::SubTreeNode) %>, or whatever class is passed as the `component_klass` argument.
374
+ # # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::Alpha::TreeView::SubTreeNode) %>
375
+ # # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::Alpha::TreeView::SubTreeNode) %>, or whatever class is passed as the `component_klass` argument.
374
376
  # def with_sub_tree(**system_arguments, &block)
375
377
  # end
376
378
 
@@ -404,7 +406,8 @@ module Primer
404
406
 
405
407
  attr_reader :node_variant
406
408
 
407
- # @param node_variant [Symbol] The variant to use for this node. <%= one_of(Primer::OpenProject::TreeView::NODE_VARIANT_OPTIONS) %>
409
+ # @param node_variant [Symbol] The variant to use for this node. <%= one_of(Primer::Alpha::TreeView::NODE_VARIANT_OPTIONS) %>
410
+ # @param form_arguments [Hash] These arguments allow the selections made within a `TreeView` to be submitted to the server as part of a Rails form. Pass the `builder:` and `name:` options to this hash. `builder:` should be an instance of `ActionView::Helpers::FormBuilder`, which are created by the standard Rails `#form_with` and `#form_for` helpers. The `name:` option is the desired name of the field that will be included in the params sent to the server on form submission.
408
411
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>.
409
412
  def initialize(node_variant: DEFAULT_NODE_VARIANT, form_arguments: {}, **system_arguments)
410
413
  @system_arguments = deny_tag_argument(**system_arguments)
@@ -1 +1 @@
1
- .breadcrumb-item{display:inline-block;list-style:none;margin-left:-.35em;max-width:100%}.breadcrumb-item:after{border-right:.1em solid var(--borderColor-neutral-emphasis);content:"";display:inline-block;height:.8em;margin:0 .5em;transform:rotate(15deg) translateY(.0625em)}.breadcrumb-item:first-child{margin-left:0}:is(.breadcrumb-item-selected,.breadcrumb-item[aria-current]:not([aria-current=false])):after{content:none}.breadcrumb-item-selected a{color:var(--fgColor-default);cursor:default!important;-webkit-text-decoration:none!important;text-decoration:none!important}
1
+ .breadcrumb-item{display:inline-block;list-style:none;max-width:100%}.breadcrumb-item:after{border-right:.1em solid var(--borderColor-neutral-emphasis);content:"";display:inline-block;height:.8em;margin:0 .15em 0 .5em;transform:rotate(15deg) translateY(.0625em)}:is(.breadcrumb-item-selected,.breadcrumb-item[aria-current]:not([aria-current=false])):after{content:none}.breadcrumb-item-selected a{color:var(--fgColor-default);cursor:default!important;-webkit-text-decoration:none!important;text-decoration:none!important}
@@ -3,7 +3,6 @@
3
3
  "selectors": [
4
4
  ".breadcrumb-item",
5
5
  ".breadcrumb-item:after",
6
- ".breadcrumb-item:first-child",
7
6
  ":is(.breadcrumb-item-selected,.breadcrumb-item[aria-current]:not([aria-current=false])):after",
8
7
  ".breadcrumb-item-selected a"
9
8
  ]
@@ -1 +1 @@
1
- {"version":3,"sources":["breadcrumbs.pcss"],"names":[],"mappings":"AAAA,iBACE,oBAAqB,CAGrB,eAAgB,CADhB,kBAAoB,CAEpB,cAgBF,CAdE,uBAOE,2DAA6D,CAF7D,UAAW,CAJX,oBAAqB,CACrB,WAAa,CAEb,aAAe,CAIf,2CACF,CAEA,6BACE,aACF,CAKA,8FACE,YACF,CAIF,4BACE,4BAA6B,CAE7B,wBAA0B,CAD1B,sCAAgC,CAAhC,8BAEF","file":"breadcrumbs.css","sourcesContent":[".breadcrumb-item {\n display: inline-block;\n /* stylelint-disable-next-line primer/spacing */\n margin-left: -0.35em;\n list-style: none;\n max-width: 100%;\n\n &::after {\n display: inline-block;\n height: 0.8em;\n /* stylelint-disable-next-line primer/spacing */\n margin: 0 0.5em;\n content: '';\n /* stylelint-disable-next-line primer/borders */\n border-right: 0.1em solid var(--borderColor-neutral-emphasis);\n transform: rotate(15deg) translateY(0.0625em);\n }\n\n &:first-child {\n margin-left: 0;\n }\n}\n\n.breadcrumb-item-selected,\n.breadcrumb-item[aria-current]:not([aria-current='false']) {\n &::after {\n content: none;\n }\n}\n\n/* stylelint-disable-next-line selector-max-type */\n.breadcrumb-item-selected a {\n color: var(--fgColor-default);\n text-decoration: none !important;\n cursor: default !important;\n}\n"]}
1
+ {"version":3,"sources":["breadcrumbs.pcss"],"names":[],"mappings":"AAAA,iBACE,oBAAqB,CACrB,eAAgB,CAChB,cAYF,CAVE,uBAOE,2DAA6D,CAF7D,UAAW,CAJX,oBAAqB,CACrB,WAAa,CAEb,qBAAwB,CAIxB,2CACF,CAKA,8FACE,YACF,CAIF,4BACE,4BAA6B,CAE7B,wBAA0B,CAD1B,sCAAgC,CAAhC,8BAEF","file":"breadcrumbs.css","sourcesContent":[".breadcrumb-item {\n display: inline-block;\n list-style: none;\n max-width: 100%;\n\n &::after {\n display: inline-block;\n height: 0.8em;\n /* stylelint-disable-next-line primer/spacing */\n margin: 0 0.15em 0 0.5em;\n content: '';\n /* stylelint-disable-next-line primer/borders */\n border-right: 0.1em solid var(--borderColor-neutral-emphasis);\n transform: rotate(15deg) translateY(0.0625em);\n }\n}\n\n.breadcrumb-item-selected,\n.breadcrumb-item[aria-current]:not([aria-current='false']) {\n &::after {\n content: none;\n }\n}\n\n/* stylelint-disable-next-line selector-max-type */\n.breadcrumb-item-selected a {\n color: var(--fgColor-default);\n text-decoration: none !important;\n cursor: default !important;\n}"]}
@@ -1,7 +1,5 @@
1
1
  .breadcrumb-item {
2
2
  display: inline-block;
3
- /* stylelint-disable-next-line primer/spacing */
4
- margin-left: -0.35em;
5
3
  list-style: none;
6
4
  max-width: 100%;
7
5
 
@@ -9,16 +7,12 @@
9
7
  display: inline-block;
10
8
  height: 0.8em;
11
9
  /* stylelint-disable-next-line primer/spacing */
12
- margin: 0 0.5em;
10
+ margin: 0 0.15em 0 0.5em;
13
11
  content: '';
14
12
  /* stylelint-disable-next-line primer/borders */
15
13
  border-right: 0.1em solid var(--borderColor-neutral-emphasis);
16
14
  transform: rotate(15deg) translateY(0.0625em);
17
15
  }
18
-
19
- &:first-child {
20
- margin-left: 0;
21
- }
22
16
  }
23
17
 
24
18
  .breadcrumb-item-selected,
@@ -33,4 +27,4 @@
33
27
  color: var(--fgColor-default);
34
28
  text-decoration: none !important;
35
29
  cursor: default !important;
36
- }
30
+ }
@@ -1 +1 @@
1
- .Progress{background-color:var(--bgColor-neutral-muted);border-radius:var(--borderRadius-medium);display:flex;height:8px;outline:1px solid #0000;overflow:hidden}.Progress--large{height:10px}.Progress--small{height:5px}.Progress-item{outline:2px solid #0000}.Progress-item+.Progress-item{margin-left:var(--base-size-2)}
1
+ .Progress{background-color:var(--progressBar-track-bgColor);border-radius:var(--borderRadius-medium);display:flex;height:8px;outline:solid 1px var(--progressBar-track-borderColor);outline-offset:-1px;overflow:hidden}.Progress--large{height:10px}.Progress--small{height:5px}.Progress-item{outline:2px solid #0000}.Progress-item+.Progress-item{margin-left:var(--base-size-2)}
@@ -1 +1 @@
1
- {"version":3,"sources":["progress_bar.pcss"],"names":[],"mappings":"AAEA,UAIE,6CAA8C,CAC9C,wCAAyC,CAJzC,YAAa,CACb,UAAW,CAIX,uBAA8B,CAH9B,eAIF,CAEA,iBACE,WACF,CAEA,iBACE,UACF,CAEA,eACE,uBACF,CAEA,8BACE,8BACF","file":"progress_bar.css","sourcesContent":["/* Progress */\n\n.Progress {\n display: flex;\n height: 8px;\n overflow: hidden;\n background-color: var(--bgColor-neutral-muted);\n border-radius: var(--borderRadius-medium);\n outline: 1px solid transparent; /* Support Firefox custom colors */\n}\n\n.Progress--large {\n height: 10px;\n}\n\n.Progress--small {\n height: 5px;\n}\n\n.Progress-item {\n outline: 2px solid transparent; /* Support Firefox custom colors */\n}\n\n.Progress-item + .Progress-item {\n margin-left: var(--base-size-2);\n}\n"]}
1
+ {"version":3,"sources":["progress_bar.pcss"],"names":[],"mappings":"AAEA,UAIE,iDAAkD,CAClD,wCAAyC,CAJzC,YAAa,CACb,UAAW,CAIX,sDAAuD,CACvD,mBAAoB,CAJpB,eAKF,CAEA,iBACE,WACF,CAEA,iBACE,UACF,CAEA,eACE,uBACF,CAEA,8BACE,8BACF","file":"progress_bar.css","sourcesContent":["/* Progress */\n\n.Progress {\n display: flex;\n height: 8px;\n overflow: hidden;\n background-color: var(--progressBar-track-bgColor);\n border-radius: var(--borderRadius-medium);\n outline: solid 1px var(--progressBar-track-borderColor);\n outline-offset: -1px;\n}\n\n.Progress--large {\n height: 10px;\n}\n\n.Progress--small {\n height: 5px;\n}\n\n.Progress-item {\n outline: 2px solid transparent; /* Support Firefox custom colors */\n}\n\n.Progress-item + .Progress-item {\n margin-left: var(--base-size-2);\n}\n"]}
@@ -4,9 +4,10 @@
4
4
  display: flex;
5
5
  height: 8px;
6
6
  overflow: hidden;
7
- background-color: var(--bgColor-neutral-muted);
7
+ background-color: var(--progressBar-track-bgColor);
8
8
  border-radius: var(--borderRadius-medium);
9
- outline: 1px solid transparent; /* Support Firefox custom colors */
9
+ outline: solid 1px var(--progressBar-track-borderColor);
10
+ outline-offset: -1px;
10
11
  }
11
12
 
12
13
  .Progress--large {
@@ -102,6 +102,7 @@ module Primer
102
102
  # @param lang [String] The language to use.
103
103
  # @param title [String] Provide a custom title to the element.
104
104
  # @param no_title [Boolean] Removes the `title` attribute provided on the element by default.
105
+ # @param aria_hidden [Boolean] Set if the element is hidden or not.
105
106
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
106
107
  def initialize(
107
108
  datetime:,
@@ -122,6 +123,7 @@ module Primer
122
123
  lang: nil,
123
124
  title: nil,
124
125
  no_title: false,
126
+ aria_hidden: nil,
125
127
  **system_arguments
126
128
  )
127
129
  @system_arguments = deny_tag_argument(**system_arguments)
@@ -143,6 +145,7 @@ module Primer
143
145
  @system_arguments[:lang] = lang if lang.present?
144
146
  @system_arguments[:format] = fetch_or_fallback(FORMAT_OPTIONS, format, FORMAT_DEFAULT) if format.present?
145
147
  @system_arguments[:"format-style"] = format_style if format_style.present?
148
+ @system_arguments[:"aria-hidden"] = aria_hidden if aria_hidden.present?
146
149
  if datetime.present? && datetime.respond_to?(:iso8601)
147
150
  @datetime = datetime
148
151
  @system_arguments[:datetime] = datetime.iso8601
@@ -7,7 +7,7 @@ module Primer
7
7
  #
8
8
  # This component is part of the <%= link_to_component(Primer::OpenProject::FilterableTreeView) %> component and
9
9
  # should not be used directly.
10
- class SubTree < Primer::OpenProject::TreeView::SubTree
10
+ class SubTree < Primer::Alpha::TreeView::SubTree
11
11
  def with_sub_tree(**system_arguments, &block)
12
12
  super(
13
13
  sub_tree_component_klass: self.class,
@@ -1,6 +1,6 @@
1
1
  import { SegmentedControlElement } from '../alpha/segmented_control';
2
- import { TreeViewElement } from './tree_view/tree_view';
3
- import { TreeViewSubTreeNodeElement } from './tree_view/tree_view_sub_tree_node_element';
2
+ import { TreeViewElement } from '../alpha/tree_view/tree_view';
3
+ import { TreeViewSubTreeNodeElement } from '../alpha/tree_view/tree_view_sub_tree_node_element';
4
4
  export type FilterFn = (node: HTMLElement, query: string, filterMode?: string) => Range[] | null;
5
5
  export declare class FilterableTreeViewElement extends HTMLElement {
6
6
  #private;
@@ -19,7 +19,7 @@
19
19
  <% end %>
20
20
  <% end %>
21
21
  <%= render(Primer::BaseComponent.new(tag: :div, hidden: true, data: { target: "filterable-tree-view.noResultsMessage" })) do %>
22
- <%= render(Primer::OpenProject::TreeView.new) do |tree| %>
22
+ <%= render(Primer::Alpha::TreeView.new) do |tree| %>
23
23
  <% tree.with_leaf(**@no_results_node_arguments) %>
24
24
  <% end %>
25
25
  <% end %>
@@ -17,8 +17,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
17
17
  };
18
18
  var _FilterableTreeViewElement_instances, _FilterableTreeViewElement_filterFn, _FilterableTreeViewElement_abortController, _FilterableTreeViewElement_stateMap, _FilterableTreeViewElement_handleTreeViewEvent, _FilterableTreeViewElement_handleTreeViewNodeChecked, _FilterableTreeViewElement_restoreNodeState, _FilterableTreeViewElement_handleFilterModeEvent, _FilterableTreeViewElement_handleFilterInputEvent, _FilterableTreeViewElement_handleIncludeSubItemsCheckBoxEvent, _FilterableTreeViewElement_includeSubItems, _FilterableTreeViewElement_includeSubItemsUnder, _FilterableTreeViewElement_restoreAllNodeStates, _FilterableTreeViewElement_applyFilterOptions, _FilterableTreeViewElement_applyHighlights, _FilterableTreeViewElement_applyManualHighlights, _FilterableTreeViewElement_removeHighlights;
19
19
  import { controller, target } from '@github/catalyst';
20
- import { TreeViewElement } from './tree_view/tree_view';
21
- import { TreeViewSubTreeNodeElement } from './tree_view/tree_view_sub_tree_node_element';
20
+ import { TreeViewElement } from '../alpha/tree_view/tree_view';
21
+ import { TreeViewSubTreeNodeElement } from '../alpha/tree_view/tree_view_sub_tree_node_element';
22
22
  let FilterableTreeViewElement = class FilterableTreeViewElement extends HTMLElement {
23
23
  constructor() {
24
24
  super(...arguments);
@@ -150,12 +150,12 @@ module Primer
150
150
 
151
151
  DEFAULT_NO_RESULTS_NODE_ARGUMENTS.freeze
152
152
 
153
- # @param tree_view_arguments [Hash] Arguments that will be passed to the underlying <%= link_to_component(Primer::OpenProject::TreeView) %> component.
154
- # @param form_arguments [Hash] Form arguments that will be passed to the underlying <%= link_to_component(Primer::OpenProject::TreeView) %> component. These arguments allow the selections made within a `FilterableTreeView` to be submitted to the server as part of a Rails form. Pass the `builder:` and `name:` options to this hash. `builder:` should be an instance of `ActionView::Helpers::FormBuilder`, which are created by the standard Rails `#form_with` and `#form_for` helpers. The `name:` option is the desired name of the field that will be included in the params sent to the server on form submission.
153
+ # @param tree_view_arguments [Hash] Arguments that will be passed to the underlying <%= link_to_component(Primer::Alpha::TreeView) %> component.
154
+ # @param form_arguments [Hash] Form arguments that will be passed to the underlying <%= link_to_component(Primer::Alpha::TreeView) %> component. These arguments allow the selections made within a `FilterableTreeView` to be submitted to the server as part of a Rails form. Pass the `builder:` and `name:` options to this hash. `builder:` should be an instance of `ActionView::Helpers::FormBuilder`, which are created by the standard Rails `#form_with` and `#form_for` helpers. The `name:` option is the desired name of the field that will be included in the params sent to the server on form submission.
155
155
  # @param filter_input_arguments [Hash] Arguments that will be passed to the <%= link_to_component(Primer::Alpha::TextField) %> component.
156
156
  # @param filter_mode_control_arguments [Hash] Arguments that will be passed to the <%= link_to_component(Primer::Alpha::SegmentedControl) %> component.
157
157
  # @param include_sub_items_check_box_arguments [Hash] Arguments that will be passed to the <%= link_to_component(Primer::Alpha::CheckBox) %> component.
158
- # @param no_results_node_arguments [Hash] Arguments that will be passed to a <%= link_to_component(Primer::OpenProject::TreeView::LeafNode) %> component that appears when no items match the filter criteria.
158
+ # @param no_results_node_arguments [Hash] Arguments that will be passed to a <%= link_to_component(Primer::Alpha::TreeView::LeafNode) %> component that appears when no items match the filter criteria.
159
159
  def initialize(
160
160
  tree_view_arguments: {},
161
161
  form_arguments: {},
@@ -171,7 +171,7 @@ module Primer
171
171
  }
172
172
  )
173
173
 
174
- @tree_view = Primer::OpenProject::TreeView.new(
174
+ @tree_view = Primer::Alpha::TreeView.new(
175
175
  form_arguments: form_arguments,
176
176
  **tree_view_arguments
177
177
  )
@@ -1,7 +1,7 @@
1
1
  import {controller, target} from '@github/catalyst'
2
2
  import {SegmentedControlElement} from '../alpha/segmented_control'
3
- import {TreeViewElement} from './tree_view/tree_view'
4
- import {TreeViewSubTreeNodeElement} from './tree_view/tree_view_sub_tree_node_element'
3
+ import {TreeViewElement} from '../alpha/tree_view/tree_view'
4
+ import {TreeViewSubTreeNodeElement} from '../alpha/tree_view/tree_view_sub_tree_node_element'
5
5
  import {TreeViewNodeInfo} from '../shared_events'
6
6
 
7
7
  // This function is expected to return the following values:
@@ -26,6 +26,10 @@ import '../../lib/primer/forms/toggle_switch_input';
26
26
  import './alpha/action_menu/action_menu_element';
27
27
  import './alpha/select_panel_element';
28
28
  import './beta/details_toggle_element';
29
+ import './alpha/tree_view/tree_view';
30
+ import './alpha/tree_view/tree_view_icon_pair_element';
31
+ import './alpha/tree_view/tree_view_sub_tree_node_element';
32
+ import './alpha/tree_view/tree_view_include_fragment_element';
29
33
  import './open_project/page_header_element';
30
34
  import './open_project/zen_mode_button';
31
35
  import './open_project/sub_header_element';
@@ -33,8 +37,4 @@ import './open_project/danger_dialog_form_helper';
33
37
  import './open_project/collapsible';
34
38
  import './open_project/border_box/collapsible_header';
35
39
  import './open_project/collapsible_section';
36
- import './open_project/tree_view/tree_view';
37
- import './open_project/tree_view/tree_view_icon_pair_element';
38
- import './open_project/tree_view/tree_view_sub_tree_node_element';
39
- import './open_project/tree_view/tree_view_include_fragment_element';
40
40
  import './open_project/filterable_tree_view';
@@ -26,6 +26,10 @@ import '../../lib/primer/forms/toggle_switch_input';
26
26
  import './alpha/action_menu/action_menu_element';
27
27
  import './alpha/select_panel_element';
28
28
  import './beta/details_toggle_element';
29
+ import './alpha/tree_view/tree_view';
30
+ import './alpha/tree_view/tree_view_icon_pair_element';
31
+ import './alpha/tree_view/tree_view_sub_tree_node_element';
32
+ import './alpha/tree_view/tree_view_include_fragment_element';
29
33
  import './open_project/page_header_element';
30
34
  import './open_project/zen_mode_button';
31
35
  import './open_project/sub_header_element';
@@ -33,8 +37,4 @@ import './open_project/danger_dialog_form_helper';
33
37
  import './open_project/collapsible';
34
38
  import './open_project/border_box/collapsible_header';
35
39
  import './open_project/collapsible_section';
36
- import './open_project/tree_view/tree_view';
37
- import './open_project/tree_view/tree_view_icon_pair_element';
38
- import './open_project/tree_view/tree_view_sub_tree_node_element';
39
- import './open_project/tree_view/tree_view_include_fragment_element';
40
40
  import './open_project/filterable_tree_view';
@@ -17,6 +17,8 @@
17
17
  @import "./alpha/text_field.pcss";
18
18
  @import "./alpha/toggle_switch.pcss";
19
19
  @import "./alpha/underline_nav.pcss";
20
+ @import "./alpha/skeleton_box.pcss";
21
+ @import "./alpha/tree_view.pcss";
20
22
 
21
23
  /* beta */
22
24
  @import "./beta/avatar.pcss";
@@ -51,5 +53,3 @@
51
53
  @import "./open_project/side_panel/section.pcss";
52
54
  @import "./open_project/border_box/collapsible_header.pcss";
53
55
  @import "./open_project/collapsible_section.pcss";
54
- @import "./open_project/skeleton_box.pcss";
55
- @import "./open_project/tree_view.pcss";
@@ -26,6 +26,10 @@ import '../../lib/primer/forms/toggle_switch_input'
26
26
  import './alpha/action_menu/action_menu_element'
27
27
  import './alpha/select_panel_element'
28
28
  import './beta/details_toggle_element'
29
+ import './alpha/tree_view/tree_view'
30
+ import './alpha/tree_view/tree_view_icon_pair_element'
31
+ import './alpha/tree_view/tree_view_sub_tree_node_element'
32
+ import './alpha/tree_view/tree_view_include_fragment_element'
29
33
  import './open_project/page_header_element'
30
34
  import './open_project/zen_mode_button'
31
35
  import './open_project/sub_header_element'
@@ -33,8 +37,4 @@ import './open_project/danger_dialog_form_helper'
33
37
  import './open_project/collapsible'
34
38
  import './open_project/border_box/collapsible_header'
35
39
  import './open_project/collapsible_section'
36
- import './open_project/tree_view/tree_view'
37
- import './open_project/tree_view/tree_view_icon_pair_element'
38
- import './open_project/tree_view/tree_view_sub_tree_node_element'
39
- import './open_project/tree_view/tree_view_include_fragment_element'
40
40
  import './open_project/filterable_tree_view'
@@ -18,7 +18,7 @@ module Primer
18
18
  head :internal_server_error and return
19
19
  end
20
20
 
21
- path = JSON.parse(params[:path])
21
+ path = JSON.parse(params[:path])
22
22
  node = path.inject(TREE) do |current, segment|
23
23
  current["children"][segment]
24
24
  end
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # :nodoc:
4
- class CustomCitiesForm < ApplicationForm
5
- form do |custom_cities_form|
6
- custom_cities_form.text_field(
7
- name: :custom_cities,
8
- label: "Custom cities",
9
- description: "A space-separated list of cities"
10
- )
4
+ class CheckBoxWithNestedForm < ApplicationForm
5
+ # :nodoc:
6
+ class CustomCitiesForm < ApplicationForm
7
+ form do |custom_cities_form|
8
+ custom_cities_form.text_field(
9
+ name: :custom_cities,
10
+ label: "Custom cities",
11
+ description: "A space-separated list of cities"
12
+ )
13
+ end
11
14
  end
12
- end
13
15
 
14
- # :nodoc:
15
- class CheckBoxWithNestedForm < ApplicationForm
16
16
  form do |check_form|
17
17
  check_form.check_box_group(name: :city_categories) do |check_group|
18
18
  check_group.check_box(
@@ -1,27 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # :nodoc:
4
- class FriendForm < ApplicationForm
5
- form do |friend_form|
6
- friend_form.group(layout: :horizontal) do |name_group|
7
- name_group.text_field(name: "first_name", label: "First Name")
8
- name_group.text_field(name: "last_name", label: "Last Name")
4
+ class RadioButtonWithNestedForm < ApplicationForm
5
+ # :nodoc:
6
+ class FriendForm < ApplicationForm
7
+ form do |friend_form|
8
+ friend_form.group(layout: :horizontal) do |name_group|
9
+ name_group.text_field(name: "first_name", label: "First Name")
10
+ name_group.text_field(name: "last_name", label: "Last Name")
11
+ end
9
12
  end
10
13
  end
11
- end
12
14
 
13
- # :nodoc:
14
- class FriendTextAreaForm < ApplicationForm
15
- form do |friend_text_area_form|
16
- friend_text_area_form.text_area(
17
- name: "description",
18
- label: "Describe this wonderful person in loving detail"
19
- )
15
+ # :nodoc:
16
+ class FriendTextAreaForm < ApplicationForm
17
+ form do |friend_text_area_form|
18
+ friend_text_area_form.text_area(
19
+ name: "description",
20
+ label: "Describe this wonderful person in loving detail"
21
+ )
22
+ end
20
23
  end
21
- end
22
24
 
23
- # :nodoc:
24
- class RadioButtonWithNestedForm < ApplicationForm
25
25
  form do |radio_form|
26
26
  radio_form.radio_button_group(name: "channel") do |radio_group|
27
27
  radio_group.radio_button(value: "online", label: "Online advertisement", caption: "Facebook maybe?")
@@ -13,7 +13,7 @@ module Primer
13
13
  slot_def = registered_slots[slot_name]
14
14
  raise "Unknown slot '#{slot_name}'" unless slot_def
15
15
 
16
- poly_def = define_slot(
16
+ poly_def = __vc_define_slot(
17
17
  type,
18
18
  collection: slot_def[:collection],
19
19
  callable: callable
@@ -22,7 +22,7 @@ module Primer
22
22
  registered_slots[slot_name][:renderable_hash][type] = poly_def
23
23
 
24
24
  define_method(:"with_#{type}") do |**system_arguments, &block|
25
- set_slot(slot_name, poly_def, **system_arguments, &block)
25
+ __vc_set_slot(slot_name, poly_def, **system_arguments, &block)
26
26
  end
27
27
  end
28
28
  end
@@ -1,4 +1,4 @@
1
- <%= render(Primer::OpenProject::TreeView::SubTree.new(path: ["primer"], node_variant: :div)) do |tree| %>
1
+ <%= render(Primer::Alpha::TreeView::SubTree.new(path: ["primer"], node_variant: :div)) do |tree| %>
2
2
  <% tree.with_sub_tree(label: "alpha") do |sub_tree| %>
3
3
  <% sub_tree.with_leading_visual_icons do |icons| %>
4
4
  <% icons.with_expanded_icon(icon: :"file-directory-open-fill", color: :accent) %>
@@ -1,4 +1,4 @@
1
- <%= render(Primer::OpenProject::TreeView::SubTree.new(path: path, select_variant: select_variant, node_variant: :div)) do |tree| %>
1
+ <%= render(Primer::Alpha::TreeView::SubTree.new(path: path, select_variant: select_variant, node_variant: :div)) do |tree| %>
2
2
  <% next if params[:empty] == "true" %>
3
3
  <% entries.each do |label, type| %>
4
4
  <% case type %>
@@ -5,7 +5,7 @@ module Primer
5
5
  module ViewComponents
6
6
  module VERSION
7
7
  MAJOR = 0
8
- MINOR = 71
8
+ MINOR = 72
9
9
  PATCH = 0
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH].join(".")
@@ -1,5 +1,5 @@
1
1
  <div style="max-width: 400px">
2
- <%= render(Primer::OpenProject::FileTreeView.new) do |tree_view| %>
2
+ <%= render(Primer::Alpha::FileTreeView.new) do |tree_view| %>
3
3
  <% tree_view.with_directory(label: "src", expanded: expanded, select_variant: select_variant) do |dir| %>
4
4
  <% dir.with_trailing_visual_icon(icon: :"diff-modified") %>
5
5
 
@@ -1,4 +1,4 @@
1
1
  <% data = Primer::ViewComponents::TreeViewItemsController::TREE %>
2
- <%= render(Primer::OpenProject::FileTreeView.new) do |tree| %>
2
+ <%= render(Primer::Alpha::FileTreeView.new) do |tree| %>
3
3
  <% populate.call(tree, data, { select_variant: select_variant, expanded: expanded }) %>
4
4
  <% end %>
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Primer
4
- module OpenProject
4
+ module Alpha
5
5
  # @label FileTreeView
6
6
  class FileTreeViewPreview < ViewComponent::Preview
7
7
  # @label Default